# What is the Scaling Factor in ARINC 429?

I'm a newly appointed engineer in an avionics company and have been tasked with preparing a report on ARINC429. I understand most of it, and I certainly find it simpler that 664, but I still can't manage to wrap my head around what "Scaling Factor" is. No resource on ARINC429 I have found goes into detail about this, and the best I could find is image below.

This is a screenshot from a link discussing the standard.

Could anyone please explain what this is trying to convey?

• Thank you guys!! The three answers took three different approaches to answer my question, and in the end I got a three dimensional understanding of the answer!! Cheers! Apr 28, 2017 at 5:36

In the example you pasted, the value $1.5_{10}$ is being sent, which has binary representation $1.1_{2}$. The data is sent as an unsigned integer so some kind of multiplier needs to be applied. The value occupies 19 bits, at offset 11 within the packet itself being bit 0 of the data. The default multiplier is such that the "units" bit (ie the one representing $1_{10}$) is in bit 26 in the packet, that is the bit 16 of the value. You can see that in the first example, the lefthand $1_{2}$ is in bit position 16 (counting from 0 from right).

This allows only values up to slightly short of 8. Various scalings are applied to values, depending on the label, as this may not be a convenient range for the data conveyed. If a label conveys data in the range 0-6, then it is fine as is. If 0-65 must be conveyed by a label, then the value is shifted right four places (to give more space for the larger numbers, but with less precision). Which scaling is applied is determined by the label. If a negative number is possible in a type, two's complement is applied. The label definition determines the range of its various words.

You can see this example effectively repeated immediately with value $1.25_{10}$, which is $1.01_{2}$.

• Great answer! I have one last doubt, the ranges mentioned are the scaling factor themselves or are they simply the data being scaled/encoded? Apr 28, 2017 at 5:37

The example given is a bit strange in that it explains how to code a specific value as the scaling factor changes. In using A429, we don't often think in terms of how the scaling factor modifies the coding of a specific value as the range (scale) is fixed for any specific A429 label. To code a value, we look at the what the data type is and the range/resolution of the associated A429 label.

A429 binary number (BNR) labels are coded using two's-complement. With that, each bit starting at the MSB represents half the value of the previous bit. The scaling of a specific label is defined in Attachment 2B of ARINC 429 Part 1.

The 'Scaling Factor' you question is determined by the desired range of values with the resolution driven by the range and the number of significant bits. To scale the data in two's complement binary, the MSB is set to represent half of the +/- range value. Each successive less significant bit represents half the value of the previous bit. The resolution is the value represented by the LSB.

So, for example, Label 162 from an ARINC 712 ADF receiver (Equipment ID 012 hex) contains ADF Bearing data. There are 12 significant bits and the range is defined as +/- 180 degrees. Bit 29 is the sign bit. Bit 28 (MSB) is 90, bit 27 is 45, bit 26 is 22.5, etc. down to bit 17 which represents 0.044 (sometimes rounded to 0.05 - I don't know why). So all 0 is 0 degrees (North). All 1 except for sign bit would be 179.95 degrees. A sign bit of 1 and all 0 (-0) equates to -180 in two's complement.

For other parameters you need to evaluate the data within Attachment 2B to determine the proper coding based on the range, number of significant bits, etc.

• @mins See edited text. Apr 27, 2017 at 18:59
• Yeah, I've found the "Resolution" field to be a little confusing because some are exact and some are approximations. The table in Attachment 9A (GA Labels and Data Standards) has the column listed as "Approx. Resolution". The exact resolution should go in that field just fine. Apr 27, 2017 at 19:05
• Another useful answer I can only upvote. This was significantly more than just "useful". Thanks mate!!! Apr 28, 2017 at 5:48

The mistake I think the link is making is that number of significant bits determines the position of the LSB. The scale factor can influence the necessary number of sig bits, but the desired resolution does as well.

The easiest way I've found to calculate the value that actually gets inserted into the label is as follows: The scale factor (which I'll call $Range$) is usually the value given, unless a $\pm$ is used, i.e. $\pm180$ for labels like heading, in which case you would use the highest value (180). The label you are sending should provide you with the correct number of significant bits. ($SigBits$)

The exact resolution can be found by $$\frac{Range}{2^{SigBits}}$$

and the normalized value is $$Normal = Value *\frac{Range}{2^{SigBits}}$$

Now you can take that value in binary, place the LSB so that there are the correct number of significant digits by padding 0's on the left. Anything right of the LSB is padded with 0's, to a total of 18 bits (19 for a signed value) - the width of the data field.

• I just realised that I can only select one answer. I just wanted to thank you for answering the question Apr 28, 2017 at 5:45
• @selectstriker2 You make good point. The logic behind defining A429 labels can vary substantially between solid design and somewhat arbitrary. In my example of ADF bearing there's 12 bits out of 19 available. But with the accuracy of the ADF and the display resolution of 1 degree, 9 or 10 bits would likely more than adequate. OTOH, LAT/LON labels presented a challenge to meet the needs of RNP. The MSB is fixed by the range. To get the needed resolution, we need more bits than available in one label, so we have two labels where the data bits are concatenated. Apr 28, 2017 at 12:20