Alicat M/MC/P/PC mass flow & pressure instruments
Register map(s) for this device, with a note of how far each has been checked. Addresses are
0-based, as on the wire. Scale and byte order are confirmed only at the hardware-verified rung.
coherence-checked
Round-trips through a real Modbus stack with no overlapping addresses and a word-order-sensitive codec — the map is internally coherent and wire-decodable. Does NOT prove byte-order or scaling match a real device: the emulator is seeded from the map's own types, so a uniformly wrong byte-order still round-trips. Only hardware-verified confirms byte-order/scale on the wire.
| point | address (0-based) | type | scale | unit |
| alarm_status | 1295 | U16 | 1 | |
| gas_number | 1296 | U16 | 1 | |
| device_status | 1297 | U32BE | 1 | |
| setpoint_integer | 1299 | U32BE | 1 | |
| valve_drive_integer | 1301 | U32BE | 1 | |
| pressure_integer | 1303 | U32BE | 1 | |
| secondary_pressure_integer | 1305 | U32BE | 1 | |
| barometric_pressure_integer | 1307 | U32BE | 1 | |
| temperature_integer | 1309 | U32BE | 1 | |
| volumetric_flow_integer | 1311 | U32BE | 1 | |
| mass_flow_integer | 1313 | U32BE | 1 | |
| totalizer_1_integer | 1315 | U32BE | 1 | |
| totalizer_2_integer | 1317 | U32BE | 1 | |
| humidity_integer | 1319 | U32BE | 1 | |
| alarm_status_float_mode | 1345 | U16 | 1 | |
| gas_number_float_mode | 1346 | U16 | 1 | |
| device_status_float_mode | 1347 | U32BE | 1 | |
| setpoint | 1349 | F32BE | 1 | |
| valve_drive | 1351 | F32BE | 1 | |
| pressure | 1353 | F32BE | 1 | |
| secondary_pressure | 1355 | F32BE | 1 | |
| barometric_pressure | 1357 | F32BE | 1 | |
| temperature | 1359 | F32BE | 1 | |
| volumetric_flow | 1361 | F32BE | 1 | |
| mass_flow | 1363 | F32BE | 1 | |
| totalizer_1 | 1365 | F32BE | 1 | |
| totalizer_2 | 1367 | F32BE | 1 | |
| humidity | 1369 | F32BE | 1 | |
link settings as documented (unverified): RTU/TCP; default 19200 8N1; unit ID 1; FC 03,04,16; Alicat instruments require special firmware to support even parity. Default is no parity.
bench facts as documented (unverified)
| terminals | 8-Pin Mini-DIN, 6-pin Industrial Connectors, DB9, DB15, RJ45 Ethernet, M12 Ethernet |
| connector | 8-Pin Mini-DIN, 6-pin Industrial Connectors, DB9, DB15, RJ45, M12 |
| protocol notes | Reading undefined registers may return 65535 or ILLEGAL DATA ADDRESS exception. |
| serial register | 1093 |
| firmware register | 1089 |
| identification notes | Registers 1087-1088 (0-based) hold a fixed value 1067320907 to verify byte order. |
| doc revision | Rev 7, November 2024 |
field reports — community-sourced, unverified (checked 2026-06-11)
- Users of RedLion Crimson software experience communication failures ('---' values) when using the 5-digit register numbers from older Alicat documentation (e.g., 42042 for Temperature) because Crimson prepends a '4' and expects a 6-digit address (e.g., 402042). The solution is to use the 0-based Modbus address directly (e.g., 41) or input the correct offset. [source]
- When setting up an Alicat Mass Flow Controller with a Siemens Modbus TCP client, users may encounter Error 818D. This is resolved by deselecting 'optimized block access' in Siemens TIA Portal, setting the data length to 2 registers per scan (since the data length is 32 bits), and ensuring the MB_Unit_ID matches the device (e.g., setting it to 1 instead of the default 255). [source]
- The standard Python driver for Alicat devices (numat/alicat) artificially limits setpoint precision to two decimal places (e.g., rounding 0.376 SLPM to 0.38 SLPM) due to the standard serial command forcing decimal truncation. This degrades the precision of the device compared to its actual nominal capability of 1 part in 64,000. [source]
- confirmed: Baud rates: 19200 (default), default unit ID: 1, stop bits: 1, parity: N — confirmed by Alicat Modbus Manual Rev 7, which states default baud rate is 19200, default parity is none, and default stop bits is 1 [4.2.6].
- confirmed: Alicat instruments require special firmware to support even parity. Default is no parity. — confirmed by Alicat Modbus Manual Rev 7, which explicitly notes that special firmware is required for even parity.
- confirmed: Registers 1087-1088 (0-based) hold a fixed value 1067320907 to verify byte order. — confirmed by Alicat Modbus Manual Rev 7, which states registers 1087-1088 (0-based) read as 1067320907 for a four-byte integer.
- confirmed: Reading undefined registers may return 65535 or ILLEGAL DATA ADDRESS exception. — confirmed by Alicat Modbus Manual Rev 7, which states 'Reading undefined registers may return 65535 as the value, or may return a Modbus exception response with the ILLEGAL DATA ADDRESS exception code.'
- confirmed: Physical connectors include 8-Pin Mini-DIN, 6-pin Industrial Connectors, DB9, DB15, RJ45, M12. — confirmed by Alicat Modbus Manual Rev 7 and product specifications.
- confirmed: Register map addresses (e.g., alarm_status @ 1295, gas_number @ 1296, device_status @ 1297, setpoint_integer @ 1299, etc.) — confirmed by Alicat Modbus Manual Rev 7.
The trust ladder
Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.
- generated — A prompt produced it. Unproven — anyone can regenerate this.
- structure-verified — Decode path is structurally sound (addresses, widths, finite values). Does NOT prove word order or scaling.
- coherence-checked — Round-trips through a real Modbus stack with no overlapping addresses and a word-order-sensitive codec — the map is internally coherent and wire-decodable. Does NOT prove byte-order or scaling match a real device: the emulator is seeded from the map's own types, so a uniformly wrong byte-order still round-trips. Only hardware-verified confirms byte-order/scale on the wire.
- hardware-verified (software-key) x1 — Matched a real device with operator-attested readings as ground truth — the only rung that confirms word order + scaling on the wire.