Documentation Home Page RT-LAB Home Page
Pour la documentation en FRANÇAIS, utilisez l'outil de traduction de votre navigateur Chrome, Edge ou Safari. Voir un exemple.

Fault Insertion Unit Driver

This driver aims at using the 'OpOutput' and 'OpInput' blocks with PickeringFIU driver to control Fault Insertion Unit (FIU) cards from Pickering.

This driver takes advantage of the Dynamic Interchange Layer system. A connection file must be used to bind Simulink variables (represented as OpInput and OpOutput blocks) to driver signals. This file is described in a text file named 'connections.opal' (graphical editor will be available in a later release of RT-LAB). Another configuration file must be used to configure the driver itself. Both configuration files are described below.

Supported Features

Tested Pickering cards40-194-002, 40-195-001, 40-190B-002
  • Ability to add other Pickering cards through supported_cards.opal file
  • PropertyTree program file to discover cards existed in connected PXI chassis
  • Ability to set the initial state of switches before running the simulation

Hardware and Software Requirements

CategoryFeature
HardwareTarget running Redhat

PXI Pickering chassis

Pickering FIU cards and cables
SoftwareRT-LAB 10.7.4 or later

Pilpxi driver from Pickering (libpilpxi32.so) located in "[RT-LAB installation folder]\common\bin.

Supported Cards

Most Pickering FIU cards behave in a similar manner and therefore should be compatible with this driver without any modification and re-compilation. We must, however, maintain a list of properties of each supported card to interact correctly with them. To this end, we use a ".opal" file which describes the properties of each supported card.

Currently, the below three cards have been tested with the driver, if one intends to use another Pickering card, its specifications must be added to this file. The file is located in: [installation directory]\OPAL-RT\RT-LAB\[RT-LAB version]\common\bin\x32\Data\Drivers\Pickering\supported_cards.opal

OPAL-1.0 Object
Pickering::Configuration {
	fiuCardList {
		item {
			serialNumber=ANY
			type=fiu
			typeNumber=40-194-002
			numberOfFaultChannels=7
			numberOfFaultBus=2
			numberOfFaultMux=0
			numberOfMonitors=0
			pair=0
		}
		item {
			serialNumber=ANY
			type=fiu
			typeNumber=40-195-001
			numberOfFaultChannels=22
			numberOfFaultBus=0
			numberOfFaultMux=0
			numberOfMonitors=0
			pair=1
		}
		item {
			serialNumber=ANY
			type=fiu
			typeNumber=40-190B-001
			numberOfFaultChannels=74
			numberOfFaultBus=1
			numberOfFaultMux=4
			numberOfMonitors=1
			pair=0
		}	
		item {
			serialNumber=ANY
			type=fiu
			typeNumber=40-190B-002
			numberOfFaultChannels=74
			numberOfFaultBus=2
			numberOfFaultMux=8
			numberOfMonitors=2
			pair=0
		}	
		item {
			serialNumber=ANY
			type=fiu
			typeNumber=40-199-002
			numberOfFaultChannels=10
			numberOfFaultBus=2
			numberOfFaultMux=0
			numberOfMonitors=0
			pair=0
		}
	}
}

Configuration File

In the configuration .opal file, the channels, faults, and monitors the initial state of each card can be determined. This file is mandatory and the model must be accompanied by this file in RT-LAB when loading the model. Therefore, the correct file has to be added in the model's "File" list window in RT-LAB as shown below in order to load the model successfully:

We recommend using the configuration from the example model as a working basis.

A simple example of .opal file is given below:

OPAL-1.0 Object
Pickering::Configuration {
	useRTCoreForFIU=0
	useRTCoreForResistance=0
	fiuCardList {
		item {
			serialNumber=321293
			type=fiu
			typeNumber=40-190B-002
			minUpdateRateUs=500
			fiuItemsList {
				item {
					type=channel
					index=2
					defaultValue=4
				}	
				item {
					type=channel
					index=63
					defaultValue=2	
				}
				item {
					type=fault
					index=2
					defaultValue=1
				}									
			}
		}	
		item {
			serialNumber=340480
			type=fiu
			typeNumber=40-195-001
			minUpdateRateUs=500
			fiuItemsList {
				item {
					type=channel
					index=8
					defaultValue=1
				}
				item {
					type=channel
					index=22
					defaultValue=1
				}
			}	
		}
		item {
			serialNumber=340481
			type=fiu
			typeNumber=40-194-002
			minUpdateRateUs=500
			fiuItemsList {
				item {
					type=channel
					index=3
					defaultValue=1
				}
				item {
					type=channel
					index=6
					defaultValue=1
				}
			}	
		}		
	}	
}



Warning: Please note that the parser is currently quite sensitive and does not accept blank lines or comments.



General Parameters

The driver has the following general parameters:

useRTCoreForFIUIf the system has an unused CPU core, this parameter can be set to '1' to move the FIU threads to a reserved core for deterministic computation.
useRTCoreForResistanceIf the system has an unused CPU core, this parameter can be set to '1' to move the resistive threads to a reserved core for deterministic computation.

Identification of a Fault Insertion Unit Module

The cards are identified the following parameters:

serialNumberThis parameter is the serial number of the module. This unique number given by Pickering is used to identify the card. The user could retrieve this number on the front panel of the module.
typeThis parameter is a string that specifies the type of Pickering module. It must be 'fiu' for Fault Insertion Unit cards.
typeNumberThis parameter is a number that specifies the type of Pickering module.
minUpdateRateUsAn asynchronous thread is responsible for applying the resistance value on each card. If there is no change in the resistive values of a configured card, its associated thread has nothing to do. In this case, protection has been added to avoid the threads from taking over the core 0. This value is the minimum delay, in a microsecond, applied to the thread loop in the case there is no resistance value to update on the card in the current thread loop.

All the parameters presented are used to identify the type of Pickering module. With these parameters, it is possible to define most of Pickering cards. 

It is important to mention that if the model is also using Pickering Programmable Resistive cards, they must be defined in the same file into a 'resistiveCardList', just above the 'fiuCardList'. Please refer for the Programmable Resistor and Precision Resistor driver documentation in that case.

Channel and Fault Description

A list of items (channels and/or faults) is provided for each card.

In this list, each channel and/or fault is described with the following parameters :

typeThis parameter is the type of FIU item, it can be either a channel or a fault.
indexThis parameter is the index of the channel or the fault.
defaultValueThis parameter is a default state applied to the specific channel during the first pause and when the simulation resets. It should be in the range supported by the programmable resistive module.



Warning: depending on how channels and faults are wired, enabling two-faults that are on two separate fault buses will result in creating a short-circuit on these fault buses. This will cause a "Short Fault Bus" action on every enabled fault for each channel.


Connections File

The 'connections.opal' file is required when a driver using the Dynamic Interchange Layer is used to bind Simulink variables (represented as OpInput and OpOutput blocks) to driver signals. Therefore, we must define the connections in a text file named connections.opal and transfer this file with the model when loading (graphical editor will be available in a later release of RT-LAB). Connections can only be made on channels, faults, and monitors that have been declared in the configuration .opal file. Here is what the typical connection file taken from the example model looks like:

OPAL-1.0 Object
List {
  item {
    configFile=pickeringFIU.opal
    id {
      Pickering
    }
    outputs {
      item {
        dataInExchanger=340481_enable[0]
        dataInProcess=OpOutput:Enable_1[0]
      }
      item {
        dataInExchanger=340481_reset[0]
        dataInProcess=OpOutput:Reset_1[0]
      }
      item {
        dataInExchanger=340481_channel_3[0]
        dataInProcess=OpOutput:Channel_3_1[0]
      }	 
      item {
        dataInExchanger=340481_channel_6[0]
        dataInProcess=OpOutput:Channel_6_1[0]
      }
      item {
        dataInExchanger=340480_enable[0]
        dataInProcess=OpOutput:Enable_2[0]
      }
      item {
        dataInExchanger=340480_reset[0]
        dataInProcess=OpOutput:Reset_2[0]
      }
      item {
        dataInExchanger=340480_channel_8[0]
        dataInProcess=OpOutput:Channel_8_2[0]
      } 
      item {
        dataInExchanger=340480_channel_22[0]
        dataInProcess=OpOutput:Channel_22_2[0]
      }
      item {
        dataInExchanger=321293_enable[0]
        dataInProcess=OpOutput:Enable_3[0]
      }
      item {
        dataInExchanger=321293_reset[0]
        dataInProcess=OpOutput:Reset_3[0]
      }
      item {
        dataInExchanger=321293_channel_1[0]
        dataInProcess=OpOutput:Channel_1_3[0]
      }
      item {
        dataInExchanger=321293_channel_2[0]
        dataInProcess=OpOutput:Channel_2_3[0]
      }
      item {
        dataInExchanger=321293_channel_3[0]
        dataInProcess=OpOutput:Channel_3_3[0]
      }
      item {
        dataInExchanger=321293_channel_4[0]
        dataInProcess=OpOutput:Channel_4_3[0]
      }
      item {
        dataInExchanger=321293_channel_57[0]
        dataInProcess=OpOutput:Channel_57_3[0]
      }
      item {
        dataInExchanger=321293_channel_64[0]
        dataInProcess=OpOutput:Channel_64_3[0]
      }
      item {
        dataInExchanger=321293_channel_71[0]
        dataInProcess=OpOutput:Channel_71_3[0]
      }
      item {
        dataInExchanger=321293_fault_1[0]
        dataInProcess=OpOutput:Fault_1_3[0]
      }
      item {
        dataInExchanger=321293_fault_7[0]
        dataInProcess=OpOutput:Fault_7_3[0]
      }
      item {
        dataInExchanger=321293_monitor_1[0]
        dataInProcess=OpOutput:Monitor_1_3[0]
      }
    }
    inputs {
      item {
        dataInExchanger=340481_status[0]
        dataInProcess=OpInput:Status_1[0]
      }
      item {
        dataInExchanger=340480_status[0]
        dataInProcess=OpInput:Status_2[0]
      }
      item {
        dataInExchanger=321293_status[0]
        dataInProcess=OpInput:Status_3[0]
      }
    }
  }
}

It is important that the field of the 'id' item contains the name of the driver configuration file described above. The above-mentioned .opal file is a corresponding connections.opal file of previously shown pickerigFIU.opal. It is used to list all the possible connection points of PickeringFIU driver. All connections in "dataInExchanger" side must have a card number followed by a “/” to represent connection’s corresponding card ID. The description of each connection is as follows:

ConnectionDescription
serialNumber_channel_nIt must be followed by a “_” and then a number that denotes the Channel number. It contains an action code to control the switches on “Measurement and UUT connection” side.
serialNumber_fault_nIt must be followed by a “_” and then a number that denotes the Fault Mux number. It contains a Boolean to control the fault switches on “Fault connection” side.
serialNumber_monitor_nIt must be followed by a “_” and then a number that denotes the Monitor switch number. It contains a Boolean to control the monitor switches on “Fault connection” side.
serialNumber_enableIt is a parameter that toggles the actions list in Fault and Channel connection on/off.
serialNumber_resetIt is a Boolean that if set and Enable=1, it will set all switches to their default state.
serialNumber_statusIt displays an error regarding the card status.



Warning: Please note that the parser is currently sensitive and does not accept blank lines or comments.



For the above example of pickeringFIU_driver.config and connections.opal, the Simulink model master subsystem would look like the following:

In the above file, the number of channels (channel_count), faults buses (channel_count), fault switches (faultMux_count), monitor switches (monitor_count) as well as an indication of the pair channel system (pair) are described.

OPAL-RT TECHNOLOGIES, Inc. | 1751, rue Richardson, bureau 1060 | Montréal, Québec Canada H3K 1G6 | opal-rt.com | +1 514-935-2323
Follow OPAL-RT: LinkedIn | Facebook | YouTube | X/Twitter