ARINC 429, test case #1
In automatic test systems involving avionics equipment, it is omnipresent the verification of the correct operation of the ARINC 429, both functional and electric. I’ll explain you what is ARINC 429 in a sinthetic way (from here on I will omit the number). Here you find the Wikipedia page.
It is a standard that defines physic and electric interfaces of this bus and the data protocol that pass through it.
Electrically and physically, the bus is composed of two cables (H and L) for each channel, where only a device is able to transmit, while all the others can receive.
Fig. 1: bus ARINC 429
The transmitted data are enclosed in a longword (32 bit), where the fields are:
Label: it is a numeric label, as if it were the name of a variable;
SDI: source (or destination); it is often used to indicate left/right and primary/secondary;
Data: is the value (of the variable);
SSM: it is a sign of value;
P: parity bit.
Fig. 2: longword format
The verification of the correct use of the ARINC bus by the UUT (unit under test) is generally composed of three tests:
electrical analysis of generated signals (H and L).
In this article I will illustrate the first test case.
Using the primitive functions, available by the driver accompanying the ARINC board it, is not easy. First of all, it is necessary to know, bit by bit, the protocol and the classification used by the library itself. I assure you that it is not a trivial matter. I prefer to talk about how tests can be set up, using CBL's dreamTest and NI's TestStand (for the uninitiated, dreamTest is an instrumentation and measurement management software and TestStand is a “software ready to 'use for test management').
We will use TestStand to edit and make the test sequence and dreamTest to draw on its ARINC 429 bus management library. This library is composed by six functions; they would seem to be few but they allow to satisfy fully the most frequent needs in this kind of test. Let's face the first case: verification of the correct transmission of the labels.
I assume that I have already configured dreamTest to manage the ARINC reception channel (currently are supported AIM and AIT boards) and that I have already written the part of the automatic sequence that activates the transmission of the UUT.
First thing I have to do at the starting point of the sequence: defining the transmission speed (high or low) and clean the reception buffer (which is always good).
So, where necessary, I verify that the requested label has been received correctly. I use the following three codesteps:
Fig. 3: speed set up (high o low)
Fig. 4: clearing buffer
Fig. 5: reading label
The input and output parameters should be clear, I report their description::
nick: is the nickname we gave in the configuration of the receiving ARINC channel;
input label: I indicate the identifier and SDI of the label of my interest (in this case the value field is an "I don't care");
output label: shows, together with identification and SDI, the last value read and the reception rate.
After so much effort (13 lines), we became experts in ARINC half of dreamTest library (three out of six functions is still a half). It's time to put our knowledge to use and write the sequence in TestStand. I insert three steps:
two Action steps to set the speed and clean the buffer;
a Multiple Numeric Limit Test step, to verify the correct receipt of the label.
Fig. 6: automatic test sequence
It may be enough but there's more. The interactivity of dreamTest allows you to do the same panel operations, manually, from the dedicated window or see the labels scroll while the test is running.
Fig. 7: interactive window
That’s all, next time we will face the other two test cases: transmission and electrical test. Before taking my leave, I thank you for your time and I have a favor to ask you.
If you enjoyed this article, leave a like (they are always appreciated). If you have any interest or questions or if you think that it was not so good, do not hesitate to contact me, I will be delighted to reply to your messages.
Thanks for reading and if you want, share it.