MAG-AS-01087-EN_M2000 Modbus Memory Map
MAG-AS-01087-EN_M2000 Modbus Memory Map
CONTENTS
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Write Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
Register Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
Register Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
Register Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
Read/Write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
FNC Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
OVERVIEW
The M2000 flow meter supports Modbus RTU communications. Port A (pins 5,6,7) support Modbus RTU using RS232. The
RS485 is supported as an accessory daughterboard. This daughterboard is supplied under badger meter p/n 67079-003.
The tables to follow identify the Modbus registers and attributes that exist in the M2000 flow meter. Each register has
attributes that are also specified in the tables.
Write Security
Write Security identifies the required security level of the register in order to be successfully written. This attribute does not
apply to the readability of the register and registers listed with ADMIN, SERVICE or USER are unprotected if the meter is not
secured (that is, Admin pin is not programmed.)
• FIRMWARE – Typically, read-only registers. This means only the flow meter firmware has the privilege to update the register.
• FACTORY – Includes registers that can only be written by the factory
• ADMIN – Registers that require admin level access
• SERVICE – Registers that require service level access
• USER – Registers that require user level access
• NONE – Register is always unprotected
All registers can be protected by enabling security on the flow meter. Once the flow meter is secured, all registers are write-
protected unless remote privilege is granted. All read accesses to registers are still accepted when the flow meter is secured.
Obtaining remote privilege for write operations requires a sequence of Modbus actions to take place. Remote login process is
encrypted to ensure protection of the login pins.
1. Read the random value register (Address 0x012B).
2. Perform necessary calculations (contact Badger Meter for details).
3. Write the remote login register (Address 0x012F).
It is advised that a support application is written to perform this process and embedded within the main application software
used to access the flow meter.
Register Name
When applicable, describes the parameter so it can be associated within the display menu items. Please note, not all registers
are directly modifiable via the menu manager. Also, some registers are not accessible via the menu manager.
Register Address
Register Address defines the physical address that is required to be transmitted over the Modbus RTU serial link. Some third-
party applications require the use of logical addressing when communicating over Modbus. The logical address determines
the Modbus function code that is transmitted over the serial link.
Two logical address ranges are supported, 3xxxx and 4xxxx. Logical address range 3xxxx issues the Read Input Register
function code 0x04. Logical address range 4xxxx issues the Read Holding Register function code 0x03. All logical addresses
start at index 1 (example, 30001 and 40001).
For example, suppose the application requires logical addressing and is targeting to access the “Flow Rate [User Units]”
register. The physical address for this register is 0xF1 or 241d. This register can be read from two different logical addresses
(30242 or 40242). The logical address is calculated by adding the physical address to the logical start address (30001 or
40001).
• 30001 + 241 = 30242 (Issues function code 0x04 – Read Input Register)
• 40001 + 241 = 40242 (Issues function code 0x03 – Read Holding Register)
Register Type
Register Type identifies the number of registers the parameter requires. Each register is 16 bits. Supported Register
Types include:
Number of
Register Type Description Modbus Registers
UCHAR16 Unsigned Character (16 bits) 1
UCHAR16[x] Unsigned Character Array x
UINT16 Unsigned Integer (16 bits) 1
SINT16 Signed Integer (16 bits) 1
UINT32 Unsigned Integer (32 bits) 2
FLOAT32 Floating Point (32 bits) 2
For FLOAT32 register types, these registers make use of IEEE-754 floating point standard. For example, 1.0 is transmitted as
0x3F800000. Modbus serial link will transmit the most significant byte first, 0x3F, followed by 0x80, 0x00, 0x00.
Read/Write
The Read/Write attribute identifies if the parameter is read-only or writeable. Parameters that are read-only are specified as
such, otherwise, the parameter can be considered accessible with write commands.
FNC Support
FNC Support identifies the Modbus function codes (commands) available to access the register. Supported Modbus function
codes include:
Modbus Function Code Description
0x03 Read Holding Register
0x04 Read Input Register
0x06 Preset Single Register (Write)
0x10 Preset Multiple Registers (Write Multiple)
IMPORTANT
Write function codes are not accepted while menu navigation is in process.
Write function codes update only the working register located in volatile memory. Any sequence of writes must be
followed by a write of value 0x01 to the “Command Action Request Register”, address 0x0125. Otherwise changes will be
lost if the flow meter is power cycled or reset.
For efficiency, it is possible with read function codes, 0x03 and 0x04, to read blocks of registers. This allows for the ability
to read multiple registers in one transmission.
Meter Calibration
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
20 ADMIN Detector Diameter 0x006F UINT16 — 0x03, 0x04, 0x06, 0x10
21 ADMIN Detector Diameter Other [mm] 0x0070 UINT16 — 0x03, 0x04, 0x06, 0x10
22 ADMIN Detector Factor 0x0071 FLOAT32 — 0x03, 0x04, 0x10
23 FIRMWARE [FACTORY] Detector Factor 0x0073 FLOAT32 Read-Only 0x03, 0x04
24 ADMIN Detector Offset [m/s] 0x0075 FLOAT32 — 0x03, 0x04, 0x10
25 FIRMWARE [FACTORY] Detector Offset 0x0077 FLOAT32 Read-Only 0x03, 0x04
26 ADMIN Amplifier Factor 0x0079 FLOAT32 — 0x03, 0x04, 0x10
27 FIRMWARE [FACTORY] Amplifier Factor 0x007B FLOAT32 Read-Only 0x03, 0x04
28 ADMIN Detector Current [mA] 0x007D FLOAT32 — 0x03, 0x04, 0x10
29 FIRMWARE [FACTORY] Detector Current [mA] 0x007F FLOAT32 Read-Only 0x03, 0x04
30 SERVICE Power Line Frequency [Hz] 0x0081 UINT16 — 0x03, 0x04, 0x06, 0x10
31 ADMIN Excitation Frequency [Hz] 0x0082 UINT16 — 0x03, 0x04, 0x06, 0x10
32 SERVICE Scale Factor [%] 0x010B FLOAT32 — 0x03, 0x04, 0x10
Output #1
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
58 SERVICE Output #1: Pulses Per Unit [m3] 0x0098 FLOAT32 — 0x03, 0x04, 0x10
59 SERVICE Output #1: Pulses Per Unit [user units] 0x009C FLOAT32 — 0x03, 0x04, 0x10
60 SERVICE Output #1: Pulse Width [ms] 0x00A0 UINT16 — 0x03, 0x04, 0x06, 0x10
61 SERVICE Output #1: Full Scale Frequency [Hz] 0x0174 UINT16 — 0x03, 0x04, 0x06, 0x10
62 SERVICE Output #1: Flow Alarm Minimum [%] 0x00A1 UINT16 — 0x03, 0x04, 0x06, 0x10
63 SERVICE Output #1: Flow Alarm Maximum [%] 0x00A2 UINT16 — 0x03, 0x04, 0x06, 0x10
64 SERVICE Output #1: Output Mode 0x00A3 UINT16 — 0x03, 0x04, 0x06, 0x10
65 SERVICE Output #1: Output Operation 0x00A4 UINT16 — 0x03, 0x04, 0x06, 0x10
Output #2
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
66 SERVICE Output #2: Pulses Per Unit [m3] 0x00A5 FLOAT32 — 0x03, 0x04, 0x10
67 SERVICE Output #2: Pulses Per Unit [user units] 0x00A9 FLOAT32 — 0x03, 0x04, 0x10
68 SERVICE Output #2: Pulse Width [ms] 0x00AD UINT16 — 0x03, 0x04, 0x06, 0x10
69 SERVICE Output #2: Full Scale Frequency [Hz] 0x0175 UINT16 — 0x03, 0x04, 0x06, 0x10
70 SERVICE Output #2: Flow Alarm Minimum [%] 0x00AE UINT16 — 0x03, 0x04, 0x06, 0x10
71 SERVICE Output #2: Flow Alarm Maximum [%] 0x00AF UINT16 — 0x03, 0x04, 0x06, 0x10
72 SERVICE Output #2: Output Mode 0x00B0 UINT16 — 0x03, 0x04, 0x06, 0x10
73 SERVICE Output #2: Output Operation 0x00B1 UINT16 — 0x03, 0x04, 0x06, 0x10
Output #3
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
74 SERVICE Output #3: Full Scale Frequency [Hz] 0x00B2 UINT16 — 0x03, 0x04, 0x06, 0x10
75 SERVICE Output #3: Flow Alarm Minimum [%] 0x00B3 UINT16 — 0x03, 0x04, 0x06, 0x10
76 SERVICE Output #3: Flow Alarm Maximum [%] 0x00B4 UINT16 — 0x03, 0x04, 0x06, 0x10
77 SERVICE Output #3: Output Mode 0x00B5 UINT16 — 0x03, 0x04, 0x06, 0x10
78 SERVICE Output #3: Hardware Select 0x00B6 UINT16 — 0x03, 0x04, 0x06, 0x10
79 SERVICE Output #3: Output Operation 0x00B7 UINT16 — 0x03, 0x04, 0x06, 0x10
Output #4
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
80 SERVICE Output #4: Flow Alarm Minimum [%] 0x00B8 UINT16 — 0x03, 0x04, 0x06, 0x10
81 SERVICE Output #4: Flow Alarm Maximum [%] 0x00B9 UINT16 — 0x03, 0x04, 0x06, 0x10
82 SERVICE Output #4: Output Mode 0x00BA UINT16 — 0x03, 0x04, 0x06, 0x10
83 SERVICE Output #4: Hardware Select 0x00BB UINT16 — 0x03, 0x04, 0x06, 0x10
84 SERVICE Output #4: Output Operation 0x00BC UINT16 — 0x03, 0x04, 0x06, 0x10
Empty Pipe
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
151 ADMIN Empty Pipe Calibration [Volts] 0x011E FLOAT32 — 0x03, 0x04, 0x10
152 FIRMWARE Empty Pipe Measure Value [Volts] 0x0120 FLOAT32 Read-Only 0x03, 0x04
153 ADMIN Full Pipe Calibration [Volts] 0x0122 FLOAT32 — 0x03, 0x04, 0x10
154 SERVICE Empty Pipe Mode 0x0124 UINT16 — 0x03, 0x04, 0x06, 0x10
Control Commands
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
155 NONE Command Action Request 0x0125 UINT16 Write-Only 0x03, 0x04, 0x06, 0x10
156 SERVICE Flow Simulation 0x012A SINT16 — 0x03, 0x04, 0x06, 0x10
Security
Write Register Read /
No. Register Name Register Type FNC Support
Security Address Write
157 FIRMWARE Security Status 0x011C UINT16 Read-Only 0x03, 0x04
158 FIRMWARE Random Value 0x012B UINT32 Read-Only 0x03, 0x04
159 NONE Remote Login 0x012F UINT32 Write-Only 0x10
** Power
Register Min.
No.: Register Name Max. Value Value Definition Cycle
Address Value
Req’d.
0 = DHCP Disabled
169 DHCP Used 0x0180 0 1 1 = DHCP Enabled YES
(Default)
Integer representation of
170 IP Address 0x0181 0 4294967295 the IP address YES
XXX.XXX.XXX.XXX
Integer representation of
171 Subnet Mask 0x0183 0 4294967295 the subnet mask YES
XXX.XXX.XXX.XXX
Integer representation of
172 Gateway IP Address 0x0185 0 4294967295 the Gateway address YES
XXX.XXX.XXX.XXX
173 TCP Timeout 0x0187 0 3600 — YES
174 Modbus TCP Port 0x0188 0 65535 — YES
0 = Webserver Disabled
185 Webserver Access 0x0196 0 1 1 = Webserver Enabled YES
(default)
** Power cycle to the M2000 is required when modifying these daughterboard communication parameters, in order
for the device to retain the new value(s) **
TROUBLESHOOTING
Modbus transmissions can be rejected for various reasons:
• Write request received while menu navigation is in process.
• Write request received with an invalid value (out-of range value).
• Write request received to a secured meter.
• Invalid register address supplied in Modbus serial request.
• Invalid number of registers supplied in Modbus serial request (too many or too few).
• Invalid function code supplied in Modbus serial request.
• The following error response codes are returned.