Alicat M/MC/P/PC mass flow & pressure instruments
Register map(s) for this device, each at the trust rung it earned. Addresses are 0-based
as on the wire. Word order and scaling are confirmed at the hardware-verified rung and at no rung below it.
interop-verified
Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
| 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.
- interop-verified — Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
- simulator-verified — Decoded correctly against a protocol emulator seeded with known-true values — catches word-order/scaling errors vs the emulator, not the physical device.
- hardware-verified x1 — Matched a real device with operator-attested readings as ground truth — the only rung that confirms word order + scaling on the wire.