The AIR XD contains the following three MODBUS registers:
Input Registers - FC04
This is a read-only register containing factory programmed instrument parameters, including serial numbers, firmware versions and live data sets.
Register | Description | Data Type | Units |
0 | Product TX number | Uint16_t | |
1 | Firmware Version (major) | Uint16_t | |
2 | Firmware Version (minor) | Uint16_t | |
3 | Firmware Version (patch) | Uint16_t | |
4 | Serial number (characters 1 & 2) | Char | Ascii format |
5 | Serial number (characters 3 & 4) | Char | Ascii format |
6 | Serial number (characters 5 & 6) | Char | Ascii format |
7 | Serial number (characters 7 & 8) | Char | Ascii format |
8 | Serial number (characters 9 & 10) | Char | Ascii format |
9 | Bin 0 to 0.46 μm | Uint16_t | Counts |
10 | Bin 1 to 0.66 μm | Uint16_t | Counts |
11 | Bin 2 to 0.89 μm | Uint16_t | Counts |
12 | Bin 3 to 1.17 μm | Uint16_t | Counts |
13 | Bin 4 to 1.47 μm | Uint16_t | Counts |
14 | Bin 5 to 1.80 μm | Uint16_t | Counts |
15 | Bin 6 to 2.5 μm | Uint16_t | Counts |
16 | Bin 7 to 3.5 μm | Uint16_t | Counts |
17 | Bin 8 to 4.51 μm | Uint16_t | Counts |
18 | Bin 9 to 5.76 μm | Uint16_t | Counts |
19 | Bin 10 to 7.25 μm | Uint16_t | Counts |
20 | Bin 11 to 9 μm | Uint16_t | Counts |
21 | Bin 12 to 11 μm | Uint16_t | Counts |
22 | Bin 13 to 13 μm | Uint16_t | Counts |
23 | Bin 14 to 15.01 μm | Uint16_t | Counts |
24 | Bin 15 to 17.01 μm | Uint16_t | Counts |
25 | Bin 16 to 19.02 μm | Uint16_t | Counts |
26 | Bin 17 to 21.02 μm | Uint16_t | Counts |
27 | Bin 18 to 25.76 μm | Uint16_t | Counts |
28 | Bin 19 to 26.51 μm | Uint16_t | Counts |
29 | Bin 20 to 29.51 μm | Uint16_t | Counts |
30 | Bin 21 to 32.51 μm | Uint16_t | Counts |
31 | Bin 22 to 35.51 μm | Uint16_t | Counts |
32 | Bin 23 to 38.51 μm (140μg/m extended) | Uint16_t | Counts |
33 | Sampling period | Uint16_t | Counts |
34 | Sample flow rate | Uint16_t | 0.01 ml/s/bit |
35 | Sensor temperature | Uint16_t | 0.01°C/bit |
36 | Sensor humidity | Uint16_t | 0.01%/bit |
37 | PM A size (lower 16 bits) | Float32_t | μg/m^3 |
38 | PM A size (upper 16 bits) | Float32_t | μg/m^3 |
39 | PM B size (lower 16 bits) | Float32_t | μg/m^3 |
40 | PM B size (upper 16 bits) | Float32_t | μg/m^3 |
41 | PM C size (lower 16 bits) | Float32_t | μg/m^3 |
42 | PM C size (upper 16 bits) | Float32_t | μg/m^3 |
43 | PM D size (lower 16 bits) | Float32_t | μg/m^3 |
44 | PM D size (upper 16 bits) | Float32_t | μg/m^3 |
45 | TSP (lower 16 bits) | Float32_t | μg/m^3 |
46 | TSP (upper 16 bits) | Float32_t | μg/m^3 |
47 | PM A "Average 1" (lower 16 bits) | Float32_t | μg/m^3 |
48 | PM A "Average 1" (upper 16 bits) | Float32_t | μg/m^3 |
49 | PM B "Average 1" (lower 16 bits) | Float32_t | μg/m^3 |
50 | PM B "Average 1" (upper 16 bits) | Float32_t | μg/m^3 |
51 | PM C "Average 1" (lower 16 bits) | Float32_t | μg/m^3 |
52 | PM C "Average 1" (upper 16 bits) | Float32_t | μg/m^3 |
53 | PM D "Average 1" (lower 16 bits) | Float32_t | μg/m^3 |
54 | PM D "Average 1" (upper 16 bits) | Float32_t | μg/m^3 |
55 | TSP "Average 1" (lower 16 bits) | Float32_t | μg/m^3 |
56 | TSP "Average 1" (upper 16 bits) | Float32_t | μg/m^3 |
57 | PM A "Average 2" (lower 16 bits) | Float32_t | μg/m^3 |
58 | PM A "Average 2" (upper 16 bits) | Float32_t | μg/m^3 |
59 | PM B "Average 2" (lower 16 bits) | Float32_t | μg/m^3 |
60 | PM B "Average 2" (upper 16 bits) | Float32_t | μg/m^3 |
61 | PM C "Average 2" (lower 16 bits) | Float32_t | μg/m^3 |
62 | PM C "Average 2" (upper 16 bits) | Float32_t | μg/m^3 |
63 | PM D "Average 2" (lower 16 bits) | Float32_t | μg/m^3 |
64 | PM D "Average 2" (upper 16 bits) | Float32_t | μg/m^3 |
65 | TSP "Average 2" (lower 16 bits) | Float32_t | μg/m^3 |
66 | TSP "Average 2" (upper 16 bits) | Float32_t | μg/m^3 |
67 | Air XD supply voltage | Uint16_t | mv/bit |
68 | Laser current / mA | Uint16_t | mv/bit |
69 | Fan current / mA | Uint16_t | mv/bit |
70 | Status register | Uint16_t |
Coil Registers - FC1, FC5
This is a read/write register containing the instrument binary settings, including alarm status,
PM units and 4 - 20 mA output “Enable”/“Disable” status.
Writing to this register will result in the setting being changed permanently. However, if an alarm is activated, writing to the alarm status coil will dismiss the active alarm until the alarm threshold parameters have been re-exceeded.
Register | Description | Data Type | Units |
0 | "Channel 1" alarm status | Bool | |
1 | "Channel 2" alarm status | Bool | |
2 | "Channel 1" alarm latch | Bool | 0: Auto-reset 1: Latch |
3 | "Channel 2" alarm latch | Bool | 0: Auto-reset 1: Latch |
4 | "Channel 1" alarm mute | Bool | |
5 | "Channel 2" alarm mute | Bool | |
6 | PM units | Bool | 0: μg/m^3 1: mg/m^3 |
7 | Reserved for future use | Bool | |
8 | Memory module fitted | Bool | 0: Not fitted 1: Fitted |
9 | 4-20 mA "Channel 1" Enable/Disable | Bool | 0: Disabled 1: Enabled |
10 | 4-20 mA "Channel 2" Enable/Disable | Bool | 0: Disabled 1: Enabled |
11 | Top cap status (read only) | Bool | 0: Disabled 1: Enabled |
12 | Alarm "Channel 1" Enable/Disable | Bool | 0: Disabled 1: Enabled |
13 | Alarm "Channel 2" Enable/Disable | Bool | 0: Disabled 1: Enabled |
14 | Relay 1 override | Bool | 0: Relay under alarm control 1: Relay override active |
15 | Relay 2 override | Bool | 0: Relay under alarm control 1: Relay override active |
16 | Floating point data endianness | Bool | 0: Big Endian 1: Little Endian |
17 | Floating point data byte swap | Bool | 0: No byte swap 1: Byte swap enabled |
Holding Registers - FC3, FC6
This is a read/write register containing the instrument settings and parameters, including instrument date, time, PM assignment and MODBUS settings. Writing to this register will result in the setting being changed permanently.
Note: Writing to the MODBUS settings will result in communication errors until the user has changed their local instrument MODBUS parameters to match the new setting selected on the AIR XD.
Register | Description | Data Type | Units |
0 | Time (seconds) | Uint16_t | |
1 | Time (minutes) | Uint16_t | |
2 | Time (hours) | Uint16_t | |
3 | Date (day) | Uint16_t | |
4 | Date (month) | Uint16_t | |
5 | Date (year) | Uint16_t | |
6 | UTC offset (minutes) | Uint16_t | |
7 | UTC offset (hours) | Uint16_t | |
8 | PM A assignment | Uint16_t | x100 |
9 | PM B assignment | Uint16_t | x100 |
10 | PM C assignment | Uint16_t | x100 |
11 | PM D assignment | Uint16_t | x100 |
12 | Alarm 1 assignment | Uint16_t | 0: PM A live 1: PM B live 2: PM C live 3: PM D live 4: TSP live 5: PM A Avg 1 6: PM B Avg 1 7: PM C Avg 1 8: PM D Avg 1 9: TSP Avg 1 10: PM A Avg 2 11: PM B Avg 2 12: PM C Avg 2 13: PM D Avg 2 14: TSP Avg 2 |
13 | Alarm 2 assignment | Uint16_t | 0: PM A live 1: PM B live 2: PM C live 3: PM D live 4: TSP live 5: PM A Avg 1 6: PM B Avg 1 7: PM C Avg 1 8: PM D Avg 1 9: TSP Avg 1 10: PM A Avg 2 11: PM B Avg 2 12: PM C Avg 2 13: PM D Avg 2 14: TSP Avg 2 |
14 | Alarm 1 threshold | Uint16_t | As μg/m^3 |
15 | Alarm 2 threshold | Uint16_t | As μg/m^3 |
16 | 4-20mA "Channel 1" assignment | Uint16_t | 0: PM A 1: PM B 2: PM C 3: PM D |
17 | 4-20mA "Channel 2" assignment | Uint16_t | 0: PM A 1: PM B 2: PM C 3: PM D |
18 | 4-20mA "Channel 1" scaling | Uint16_t | |
19 | 4-20mA "Channel 2" scaling | Uint16_t | |
20 | Average "Channel 1" time | Uint16_t | As minutes |
21 | Average "Channel 2" time | Uint16_t | As minutes |
22 | Baud rate | Uint16_t | 0: 4800 1: 9600 2: 14400 3: 19200 4: 38400 5: 57600 6: 115200 |
23 | Modbus Address | Uint8_t |
Reading floating point registers
MODBUS itself does not define a floating point data type but it is industry standard to use the IEEE-754 standard for defining floating point numbers. There is, however, there is no clear-cut definition of the byte order of the data payload.
By default, the Trolex AIR XD uses a little-endian format for the floating point numbers split across two 16-bit MODBUS registers. If this is not compatible with your system and a big endian format or byte swapping is required, the byte ordering can be switched using the on-device menus.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article