Endress+Hauser Proline Promag 400 Modbus RS485 Modbus register map
Electromagnetic flowmeter transmitter from the Proline Promag 400 family with a Modbus RS485 interface. Registers cover volume and mass flow, conductivity, three totalizers, unit selections, diagnostics, device information and the Modbus communication settings.
- Protocol
- Modbus RS485 (RTU or ASCII)
- Defaults
- Bus address range 1 to 247. Baud rate options run from 1200 to 115200. Data transfer mode can be RTU or ASCII, with even, odd or no parity. The byte order parameter ships set to 1-0-3-2.
- Addresses in the manual
- 0-based protocol addresses, as sent on the wire
- 32 and 64-bit values
- Low word first (CD AB)
- Registers listed
- 72
- Checked against
- GP01045D/06/EN/02.21, 71538157, dated 2022-02-01, valid for device firmware 02.01.zz
Address base. Section 6.1.2 (p. 174) says the register addresses follow the Modbus Application Protocol Specification, listed as plain numbers (example: mass flow = 2007, reset totalizer = 6401). For systems using the Modicon convention a leading 3 (read) or 4 (write) is added in front of the number (32007, 46401), which is a prefix and not an offset. This file records the plain numbers. The manual gives no example telegram, so treat the zero-based reading as the manual's own statement and confirm against a live device. Registers shown as a range, for example 3874 to 3875, are listed here by the first address. Address 4918 in the manual is address 4918 on the wire.
Word order. Float values use two registers. The Byte order parameter (register 4915) selects 0-1-2-3, 3-2-1-0, 2-3-0-1 or 1-0-3-2; the factory setting 1-0-3-2 sends the low-order word first with bytes in normal order (CD AB). The setting can be changed to match the host.
Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.
Downloads
The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.
Registers
| Manual | Wire | Register | Type | Regs | Unit | Scale | Access | Area |
|---|---|---|---|---|---|---|---|---|
| 4918 | 4918 | Locking statusLockingStatus · Bit-style codes: 256 hardware locked, 512 temporarily locked, 2048 custody transfer active (defined parameters), 32768 custody transfer active (all parameters). |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 3878 | 3878 | Direct access codeDirectAccess · Range 0 to 65535. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 6817 | 6817 | Device resetDeviceReset · 0 cancel, 1 restart device, 2 reset to delivery settings, 25 restore S-DAT backup (option dependent). |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2902 | 2902 | Software option overviewSoftwareOptionOverview · Coded list of enabled software options, for example 1 extended HistoROM, 128 custody transfer. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 3874 | 3874 | Volume flowVolumeFlow · Unit taken from the volume flow unit register (2103). |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3876 | 3876 | Mass flowMassFlow · Unit taken from the mass flow unit register (2101). |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2013 | 2013 | ConductivityConductivity · Unit taken from the conductivity unit register (2121). |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2103 | 2103 | Volume flow unit codeVolumeFlowUnit · 0 cm3/s, 1 cm3/min, 2 cm3/h and so on; the full list is in the manual. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2104 | 2104 | Volume unit codeVolumeUnit · 0 cm3, 4 l and others; see the manual. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2121 | 2121 | Conductivity unit codeConductivityUnit · 1 MS/m and others; see the manual. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2109 | 2109 | Temperature unit codeTemperatureUnit · 0 degC, 1 K and others. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2101 | 2101 | Mass flow unit codeMassFlowUnit · 0 g/s and others; see the manual. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2102 | 2102 | Mass unit codeMassUnit · 50 g and others; see the manual. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2107 | 2107 | Density unit codeDensityUnit · 0 g/cm3 and others; see the manual. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2273 | 2273 | Filter optionFilterOptions |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2274 | 2274 | Flow dampingFlowDamping · Range 0 to 15. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 5503 | 5503 | Flow overrideFlowOverride · 0 off. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 5508 | 5508 | Conductivity dampingConductivityDamping · Range 0 to 999.9 s. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 5101 | 5101 | Low flow cut off, assigned process variableLowFlowCutoffAssign · 0 off. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 5138 | 5138 | Low flow cut off on valueLowFlowCutoffOn |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 5104 | 5104 | Low flow cut off off valueLowFlowCutoffOff · Range 0 to 100 %. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 5106 | 5106 | Empty pipe detectionEmptyPipeDetection · 0 off. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2890 | 2890 | Empty pipe detection switch pointEmptyPipeSwitchPoint · Range 0 to 100 %. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 2298 | 2298 | Empty pipe detection measured valueEmptyPipeMeasuredValue |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2280 | 2280 | Electrode cleaning circuitElectrodeCleaning · 0 off. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2497 | 2497 | Density sourceDensitySource · 0 fixed density. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2117 | 2117 | External densityExternalDensity |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2830 | 2830 | Fixed densityFixedDensity |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 5501 | 5501 | Installation directionInstallationDirection · 0 forward flow. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 5521 | 5521 | Volume flow offsetVolumeFlowOffset |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 5519 | 5519 | Volume flow factorVolumeFlowFactor |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 5525 | 5525 | Mass flow offsetMassFlowOffset |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 5523 | 5523 | Mass flow factorMassFlowFactor |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 2048 | 2048 | Nominal diameterNominalDiameter · Text such as DNxx. |
string | 10 | 1 | R | Holding (FC03) | |
| 2313 | 2313 | Calibration factorCalibrationFactor |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2870 | 2870 | Zero pointZeroPoint |
float32 | 2 | 1 | R | Holding (FC03) | |
| 4910 | 4910 | Modbus bus addressBusAddress · Range 1 to 247. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 4912 | 4912 | Baud rate codeBaudrate · 0 1200, 1 2400, 2 4800, 3 9600, 4 19200, 5 38400, 6 57600, 7 115200. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 4913 | 4913 | Data transfer modeDataTransferMode · 0 RTU, 1 ASCII. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 4914 | 4914 | Parity and stop bitsParity · 0 even, 1 odd, 2 none with 2 stop bits, 3 none with 1 stop bit, as listed in the register table (p. 191). The parameter description (p. 114) lists the RTU picklist the other way round (2 none with 1 stop bit, 3 none with 2 stop bits), so confirm values 2 and 3 on the device. ASCII mode offers only 0 and 1. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 4915 | 4915 | Byte orderByteOrder · 0 is 0-1-2-3, 1 is 3-2-1-0, 2 is 2-3-0-1, 3 is 1-0-3-2. Factory setting is 1-0-3-2 per the parameter description. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 4916 | 4916 | Telegram delayTelegramDelay · Range 0 to 100 ms. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 4920 | 4920 | Failure modeFailureMode · 1 last valid value, 255 NaN value. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2547 | 2547 | Device IDDeviceId · 4-digit hexadecimal number. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 4481 | 4481 | Device revisionDeviceRevision · 4-digit hexadecimal number. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 5001 | 5001 | Modbus data map scan list entry 0ScanListRegister0 · Scan list entries 0 to 15 sit at 5001 to 5016. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2609 | 2609 | Reset all totalizersResetAllTotalizers · 0 cancel. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2601 | 2601 | Totalizer 1 assigned process variableTotalizer1Assign · 0 off, 1 volume flow, 2 mass flow, 3 corrected volume flow. Totalizers 2 and 3 use 2801 and 3001. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 4604 | 4604 | Totalizer 1 unit codeTotalizer1Unit · Totalizers 2 and 3 use 4605 and 4606. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2605 | 2605 | Totalizer 1 operation modeTotalizer1Mode · 0 net flow total, 1 forward flow total, 2 reverse flow total. Totalizers 2 and 3 use 2805 and 3005. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2608 | 2608 | Totalizer 1 controlTotalizer1Control · 0 totalize, 1 reset and totalize, 2 preset and hold, 3 reset and hold, 4 preset and totalize, 5 hold. Totalizers 2 and 3 use 2808 and 3008. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2590 | 2590 | Totalizer 1 preset valueTotalizer1Preset · Totalizers 2 and 3 use 2592 and 2594. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 2606 | 2606 | Totalizer 1 failure modeTotalizer1FailureMode · 0 stop, 1 actual value, 2 last valid value. Totalizers 2 and 3 use 2806 and 3006. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 2732 | 2732 | Actual diagnosticsActualDiagnostics |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 2734 | 2734 | Previous diagnosticsPreviousDiagnostics |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 2026 | 2026 | Device tagDeviceTag |
string | 16 | 1 | R | Holding (FC03) | |
| 7003 | 7003 | Serial numberSerialNumber |
string | 6 | 1 | R | Holding (FC03) | |
| 7277 | 7277 | Firmware versionFirmwareVersion · Text in the format xx.yy.zz. |
string | 4 | 1 | R | Holding (FC03) | |
| 7263 | 7263 | Device nameDeviceName |
string | 8 | 1 | R | Holding (FC03) | |
| 2058 | 2058 | Order codeOrderCode |
string | 10 | 1 | R | Holding (FC03) | |
| 4818 | 4818 | Configuration counterConfigurationCounter · Range 0 to 65535. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 2292 | 2292 | Main electronics temperature, minimumElectronicsTempMin |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2294 | 2294 | Main electronics temperature, maximumElectronicsTempMax |
float32 | 2 | 1 | R | Holding (FC03) | |
| 6812 | 6812 | Device alarm simulationDeviceAlarmSimulation · 0 off. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 6813 | 6813 | Simulation process variableSimulationAssign · 0 off, 1 volume flow, others in manual. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 6814 | 6814 | Simulation process variable valueSimulationValue |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 2610 | 2610 | Totalizer 1 valueTotalizer1Value · Unit follows the totalizer unit code. |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2612 | 2612 | Totalizer 1 overflowTotalizer1Overflow · Listed as a float register holding an integer with sign. |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2810 | 2810 | Totalizer 2 valueTotalizer2Value · Unit follows the totalizer unit code. |
float32 | 2 | 1 | R | Holding (FC03) | |
| 2812 | 2812 | Totalizer 2 overflowTotalizer2Overflow · Listed as a float register holding an integer with sign. |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3010 | 3010 | Totalizer 3 valueTotalizer3Value · Unit follows the totalizer unit code. |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3012 | 3012 | Totalizer 3 overflowTotalizer3Overflow · Listed as a float register holding an integer with sign. |
float32 | 2 | 1 | R | Holding (FC03) |
Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.
Open in Modbus Poll
- Download the Modbus Poll blocks file.
- Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to CD AB.
- In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
- The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.
Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.
Source and accuracy
Manufacturer document: Description of Device Parameters, Proline Promag 400 Modbus RS485 (bdih-download.endress.com)
GP01045D/06/EN/02.21, 71538157, dated 2022-02-01, valid for device firmware 02.01.zz, p. 174-203. Read on 2026-10-24.
Also used: Proline Promag 400 Modbus RS485 special documentation (register information, custody transfer) (bdih-download.endress.com)
Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.
Found a mistake? Report it by email with the register address and the manual page.
More from Endress+Hauser
All Endress+Hauser register maps