Novus NP785 Modbus register map
Also covers NP785-50, NP785-100, NP785-05, NP785-20, NP785-68, NP785-400, NP785-1000
Ultra-low differential pressure transmitter (±50 Pa to ±1000 mbar) with 4-20 mA / 0-10 V output, one alarm output and Modbus RTU over RS485: pressure, min/max, unit, filter, offset and autozero, output, alarm, forcing and diagnostics
- Official
- 57 registers
- Modbus RTU
- Revision 1 · 2026-10-31
- Identity: model
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus RTU
- Unit ID
- 1
- Serial
- 19200 8N1 · 19200 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 57 holding registers
- Groups
- 9
- Translation tables
- 5
- Revision
- 1 · 2026-10-31
- Firmware
- from 2.1 V2.1x or later
- Added
- ()
- File
- maps/novus/np785.mbmap.json · 14 KB · history
- SHA-256
- 8b79768db59749fc853db0618141a87fd70267e66469f2026b2ec227c0c9dc3c
- Manufacturer
- novus.com.br
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Model | Sensor type | holding 100 | uint16 | 0 = NP785-05, 1 = NP785-20, 3 = NP785-68, +5 more |
Sources and notes
- Transmissor de Pressão Diferencial Ultra Baixa NP785 - Manual de Instruções · version V2.1x linked in issue #91; tables 1 and 5-14
Source: Novus NP785 instruction manual V2.1x (Portuguese), chapter 7
- Functions 03, 05, 06 and 16; writes with address 0 are broadcast.
- Serial defaults: address 1, 19200 bit/s, no parity (registers 137-139). The manual does not give the stop bits; 1 is assumed.
- 32-bit values take two registers, low word first (HR_PRESS at 0, HR_PRESS_H at 1). The manual says the floats are 'little-endian with byte inversion'; this map reads them with the low word first and big-endian bytes in each word. Both registers of a 32-bit value must be read or written together.
- The integer pressure registers carry the decimal places of the selected unit (mbar 3, mpsi 2, inH2O 3, mmH2O 2, Pa 1), so they have no fixed scale; the float registers 6-11 give the value directly.
- Settings that take a pressure are written to an input register pair (103-106, 157-158, 179-185, 142-143); when the value is in range the device copies it to the working pair (108-111, 159-160, 186-194, 144-145). Out-of-range inputs are flagged in register 343.
- Sensor type 9 (5 mbar) needs firmware V2.1x or later.
- Written from the manufacturer's manual; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 6 | float32 CDAB | R | In the selected unit (register 115) | |||
| HR | 8 | float32 CDAB | R | ||||
| HR | 10 | float32 CDAB | R | ||||
| HR | 0 | int32 CDAB | R | Integer with the decimal places of the selected unit: mbar 3, mpsi 2, inH2O 3, mmH2O 2, Pa 1 | |||
| HR | 2 | int32 CDAB | R | Integer with the decimal places of the selected unit: mbar 3, mpsi 2, inH2O 3, mmH2O 2, Pa 1 | |||
| HR | 4 | int32 CDAB | R | Integer with the decimal places of the selected unit: mbar 3, mpsi 2, inH2O 3, mmH2O 2, Pa 1 | |||
| HR | 161 | uint16 | RW | Write 1 to reset every minimum and maximum | |||
| HR | 100 | uint16 | R | ||||
| HR | 115 | uint16 | RW | Changing it resets the retransmission limits to the operating limits | |||
| HR | 113 | uint16 | RW | s | Time constant of the first-order filter | ||
| HR | 359 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 361 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 142 | float32 CDAB | RW | Within ±20 % of the range; the device copies it to register 144 when valid | |||
| HR | 144 | float32 CDAB | R | ||||
| HR | 147 | uint16 | RW | ||||
| HR | 148 | uint16 | RW | Write 1 to zero the reading | |||
| HR | 149 | float32 CDAB | R | ||||
| HR | 101 | uint16 | RW | ||||
| HR | 103 | int32 CDAB | RW | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0; the device copies it to register 108 when valid | |||
| HR | 105 | int32 CDAB | RW | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0; the device copies it to register 110 when valid | |||
| HR | 107 | uint16 | RW | ||||
| HR | 108 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 110 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 178 | uint16 | RW | ||||
| HR | 179 | int32 CDAB | RW | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0; the device copies it to register 191 when valid | |||
| HR | 181 | int32 CDAB | RW | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0; the device copies it to register 193 when valid | |||
| HR | 183 | uint16 | RW | ||||
| HR | 184 | int32 CDAB | RW | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0; up to 20 % of the range | |||
| HR | 186 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 188 | uint16 | RW | s | |||
| HR | 189 | uint16 | RW | s | |||
| HR | 190 | uint16 | RW | ||||
| HR | 191 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 193 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 152 | uint16 | RW | ||||
| HR | 153 | uint16 | RW | 0.00-10.00 V or 3.60-21.00 mA; the manual does not give the encoding | |||
| HR | 154 | uint16 | RW | ||||
| HR | 155 | uint16 | RW | ||||
| HR | 156 | uint16 | RW | ||||
| HR | 157 | int32 CDAB | RW | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0; the device copies it to register 159 when valid | |||
| HR | 159 | int32 CDAB | R | The manual does not give the data type of this pair; read here as a 32-bit integer like the pressure in register 0 | |||
| HR | 341 | bool bit 0 | R | ||||
| HR | 341 | bool bit 1 | R | ||||
| HR | 341 | bool bit 3 | R | ||||
| HR | 341 | bool bit 5 | R | ||||
| HR | 341 | bool bit 10 | R | ||||
| HR | 341 | bool bit 12 | R | ||||
| HR | 342 | bool bit 0 | R | ||||
| HR | 343 | bool bit 1 | R | ||||
| HR | 343 | bool bit 3 | R | ||||
| HR | 343 | bool bit 6 | R | ||||
| HR | 344 | bool bit 1 | R | ||||
| HR | 344 | bool bit 2 | R | ||||
| HR | 137 | uint16 | RW | ||||
| HR | 138 | uint16 | RW | ||||
| HR | 139 | uint16 | RW | ||||
| HR | 166 | string[10] | RW | Up to 20 characters, first character in the low byte |
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).