The ARINC 429 VIs allows programming of MAX Technologies' devices supporting the ARINC 429 databus.
ARINC 429 Terminology
|ARINC 429||Point to point communication protocol allowing 1 transmitter to transfer data to up to 20 receivers.|
|Word||32-bit word composed of label, SDI, data, SSM and parity bit.|
|Label||the label identifies a word. Labels are 8-bit long and are usually displayed in octal.|
|SDI||Source Destination Identifier, 2-bit long.|
|Data||Actual data to be transmitted (payload), up to 19-bit long.|
|SSM||Signed Status Matrix, 2-bit long.|
|Parity||Parity bit for integrity check.|
LabVIEW ARINC 429 based applications must include Session VIs to create and terminate a Multibus session. A Multibus session is created by connecting to a MAX Technologies supported device like the FlexMobile 429+ or a FlexMulti 429 device. Refer to the Welcome section for all the currently supported devices.
Depending on the device capabilities, create a session using either Ethernet, USB or PCI/PXI Express link.
In the LabVIEW ARINC 429 application, the appropriate Connect VI (mbus Ethernet Connect.vi for an Ethernet connection) is placed in the app initialization.To end a session, mbus Terminate.vi must be placed to clean up tasks and terminate the session properly.
A session is created with the Connect VI and is maintained up to mbus Terminate.vi. A sessionHandle identifies the created session. The next step is to configure the ARINC 429 port.
The mbus A429 Port Config.vi configures the ARINC 429 port. The VI must be placed at the appropriate location, and in any case, after the Connect VI. The sessionHandle returned by the Connect VI must be wired to mbus A429 Port Config.vi. The mbus A429 Port Config.vi returns a portHandle that uniquely identifies this ARINC 429 port.
The mbus A429 Port Close.vi should be placed at the appropriate location to finish using the ARINC 429 port. It must be wired to the portHandle.
If multiple ARINC 429 ports are available on the hardware, the port number must be used to select desired port. Default port number is 0. The ARINC 429 port is configured with a bus speed (default is 12,500 bps) and a loopback (default is false).
Once the ARINC 429 port is configured, the port is activated and will buffer any received data from the physical bus if the loopback is set to false. If the loopback parameter is set to true, the port is configured to buffer received data from the port transmitter internally. In the context of a self test, the loopback parameter must be set to true. No hardware interface is needed.
Those four VIs form the basic ARINC 429 LabVIEW app data flow. The next step is to add the ARINC VIs to send or receive ARINC 429 messages.
Sending and Receiving can be accomplish using either Queuing or Sampling functions. The following table show the appropriate VIs using for each method.
|Queuing||mbus A429 Send||mbus A429 Receive|
|mbus A429 Send Advanced||mbus A429 Receive Advanced|
|mbus A429 Error Compose||mbus A429 Error Decompose|
|mbus A429 Error Inject|
|Sampling||mbus A429 Send Labels at Rates||mbus A429 Receive Labels|
|mbus A429 Discriminate SDI For All Labels|
|mbus A429 Discriminate SDI For Label|
|mbus A429 Update Label|
|mbus A429 Update Labels|
|mbus A429 Suspend All Labels|
|mbus A429 Resume All Labels|
Using queuing functions, when a ARINC 429 word is received, it is placed sequentially in a receive queue with a time tag regardless of the word label. Queuing receive functions allow reading the receive queue.
To sequentially read incoming ARINC 429 databus messages, Multibus VI offers two Receive VIs: mbus A429 Receive.vi and mbus A429 Receive Advanced.vi. They both read received ARINC 429 message words. Advanced receiving comes with more parameters to read time tags and errors. They must be wired to the A429 Config Port VI already placed.
To send ARINC 429 databus words sequentially, Multibus VI offers two Send VIs: mbus A429 Send.vi and mbus A429 Send Advanced.vi. They both send an ARINC 429 words buffer. Advanced sending comes with more parameters allowing errors injection. They must be wired to the A429 Config Port VI already placed.
The above figure shows basic wiring for a single read of received ARINC 429 messages. For continuous reading, mbus A429 Receive.vi or mbus A429 Receive Advanced.vi must be included into a loop. The messages are populated in the a429Words buffer. The a429Words buffer is an array of ARINC 429 32-bit words.
The mbus A429 Receive.vi always returns only correctly received ARINC 429 words to the user. By default, mbus A429 Receive Advanced.vi returns all received ARINC 429 words to the user. By setting skipBadWord to true, any ARINC 429 word with at least one error is discarded. With SkipBadWord at true, the user is sure to see valid messages only. Each receive VI displays the number of erroneous messages by reading the errorCount output parameter.
The wordCount output parameter indicates the number of ARINC 429 messages contained in the a429Words array. The wordCount output parameter indicates the number of 32-bit words contained in the a429Words array.
Using sampling functions, when a label is received repetitively on the bus, for each label occurence the receiver engine overwrites the last 32-bit ARINC word by the new one and computes the word period (rate). Label sampling functions allow reading the last word value and its received rate.
To read last occurence of one or many ARINC 429 labels, Multibus VI offers a Receive VI: mbus A429 Receive Labels.vi. This VI reads received ARINC 429 words and rate. It must be wired to the A429 Config Port VI already placed.
To send ARINC 429 databus one or many words repetitively at a given period, Multibus VI offers a Send VI: mbus A429 Send Labels At Rates.vi. This VI sends one or many ARINC 429 words repetitively at the specified rate. It must be wired to the A429 Config Port VI already placed.
The above figure shows basic wiring for a single snapshot read of all received ARINC 429 labels. For continuous reading, mbus A429 Receive Labels.vi must be included into a loop. The ARINC 429 label, data and rate each received label are populated in the labels, "data" and "rates" arrays.