PM210 Modbus Reference-2.6.1e
PM210 Modbus Reference-2.6.1e
PM210 v312–11
Revision 2.6.1e
Updated 2015/1/22
Prepared By: David Ling
Firmware: v312
Table of Contents
General Information! 3
Register Tables! 4
Real Time Data (One Word Sized)! 4
Setup Data! 8
DO Control! 9
Examples! 10
Read Phase Voltage! 10
Read Power! 11
Read Frequency! 11
Read DO Status! 13
Control DO! 14
Read Phase/Wire! 15
Read PT Ratio! 19
Write PT Ratio! 19
Write CT Ratio! 20
Read Temperature! 22
CRC Computation! 23
Definition! 23
Usage! 23
Notes on Modscan! 24
Additional Resources! 25
General Information
The PM210 communicates using the Modbus/RTU protocol. The communications interface is RS485. The default baud
rate is 9600. The data format is 8 bits, no parity, 1 stop bit. The default address of the PM210 can either be zero, one or
the same as the last 2 digits of the serial number, except 00 which resolves to 100. The actual device address can be
found through the front panel by entering the settings mode.
All numerical data is in integer form and must be scaled by multiplying/dividing with its indicated unit to get the final data
value.
Reading is done through function code 3. Most writing is done using function code 16. All numerical values are in
decimal unless otherwise specified or appended with an ʻhʼ, in which case the data is in hexadecimal. Control is done
using function code 5.
The PM210 uses the address 255 instead of zero as the broadcast address.
The default address is the serial number last 2 digits or 100 when it is 00. It is possible that the defaults have been
changed from the original factory settings. To find out the address and baud rate, enter the settings mode through the
front panel controls. To find out the same information through Modbus, query using the broadcast address 255, but make
sure that only the given PM210 is connected to the host PC, no other devices must be on the same bus network.
When a command is in error, the PM210 will not respond and simply allow the host PC doing the reading to time out. The
PM210 should have a maximum latency of 300 milliseconds, this is the guaranteed time in which the PM210 should
respond, if this time is exceeded, the host PC should issue a time out.
This version of the Modbus registers apply to PM210 with versions 312 and up. Note especially the accumulated energy
registers at locations 48~51, these are writable in this version, but in older versions, it may be writable only at locations
86~87 and 94~95.
Register Tables
The data in this table is mostly the same data that can be found in the table for the Two Word Sized Real Time Data, but
is only one word in size and is thus less precise. This table remains for backwards compatibility with older models. This
table can also be used as short form table of the most relevant data and is provided for convenience when the entire
table is desired to be read as one block. For more comprehensive data, use the two word sized real time data table.
Read/
Register Modscan Parameter Range Scale Unit Applies To
Write
Certain parameters in this table are affected by the PT, CT or both depending a combination of the Use PTCT flag (see
page 7 for details) and the 5A YES/NO settings. For the dual source mode, DI Off indicates city mains power and DI On
indicates generator power.
Read/
Register Word Modscan Parameter Range Scale Unit Applies To
Write
20 low 03:0021 Phase A Voltage
21 high 03:0022 (VA)
32 low 03:0033
Phase A Current (IA)
33 high 03:0034
34 low 03:0035
Phase B Current (IB) 0~5,000,000 0.001 A R 3p3w/3p4w
35 high 03:0036
36 low 03:0037
Phase C Current (IC)
37 high 03:0038
44 low 03:0045
Frequency (F) 450~650 0.1 Hz R 3p3w/3p4w
45 high 03:0046
46 low 03:0047
Power Factor (PF) 0~1000 0.001 --- R 3p3w/3p4w
47 high 03:0048
* Note: Register 56~57 GEP is valid only for the dual source model (PM210-X)
Read/ Applies
Register Word Modscan Parameter Range Scale Unit
Write To
80 low 03:0081 Phase A Active Energy
81 high 03:0082 (EPA)
3p3w/
123 1 word 03:0124 Total Power Factor (PF)
3p4w
Read/ Applies
Register Word Modscan Parameter Range Scale Unit
Write To
144 low 03:0145 Generator Phase A Active
145 high 03:0146 Energy (GEPA)
Notes:
• BD15 = 15 minute sliding block demand, data updated every 3 seconds, this is available only in the
• BD1 = 1 minute sliding block demand, data updated every 3 seconds
• Registers 56 to 59 and 144 to 159 are the second set of energy accumulator registers that is available only for the dual
source model (PM210-X-STD). This set is used when the generator power is active. The data read from registers
56~57 are the same as 150~151, while registers 58~59 are the same as 158~159, the difference being that only the
registers 56~59 are writable.
0=3p4w, 1=3p3w-2CT,
128 03:0129 Phase/Wire: 3p3w or 3p4w 1 --- R
2=1p3w, 3=3p3w-3CT
1~254
131 03:0132 Device Address 1 --- R/W
default = 1
1~40,000
133 03:0134 PT ratio 0.01 --- R/W
default = 1.00
1~1000
134 03:0135 CT ratio 1 --- R/W
default = 1
Notes:
• The product of the PT ratio and CT ratio should not exceed 300,000. After changing either or both the PT and CT ratio,
be sure to read back the value written to make sure that it was accepted by the PM210.
• Register 142 and 143 for the DO and DI status respectively are duplicates of registers 14 and 15.
• Writing to the DO is a separate command and uses a different register address. See the DO Control section for
details.
• For the dual source model (PM210-X-STD), the DI is used to determine whether the current power source is from the
utility mains or generator. When used as such, DI Off indicates utility mains power and DI On indicates generator
power.
0=n/a,
1=PM210-P,
2=n/a,
240 03:0241 Product Code 1 --- R
3=PM210-X,
4=PM210-4
* see table table for feature matrix
The table below indicates whether the given parameter (Voltage, Current, etc) is to be pre-multiplied by the PT, CT or
both. The Use PTCT flag is the same as that which can be set from the front panel display. Both the displayed value and
value read through Modbus are affected.
DO Control
The PM210 can be optionally be equipped with a DO (dry contact digital output), available on the PM210-4 model. The
corresponding Modbus registers below are effective only when the optional DO is available. Writing to the DO requires
the use of the Modbus function code 5.
1 Control DO, remember state and restore after a power on reset 255= ON, 0= OFF
2 Control DO, DO is always off after a power on reset 255= ON, 0= OFF
Examples
Reply
PM210 Function Byte Read Data (low word) Read Data (high word) CRC
Address Code Count high (Y1) low (Y2) high (Y3) low (Y4) low high
6 3 4 153 224 0 3 227 152
Assume that the Use PTCT ratio is set to yes and the PT ratio is set to 20, then the value obtained herein is already the
voltage on the primary side of the PT and there is no need to manually multiply the PT ratio.
• Voltage (primary) = (0 * 16,777,216 + 3 * 65,536 + 153 * 256 + 224) * 0.1 V = 23600.0 V
Reply
PM210 Function Byte Read Data (low word) Read Data (high word) CRC
Address Code Count high (Y1) low (Y2) high (Y3) low (Y4) low high
37 3 4 72 217 0 2 17 171
Assume that the Use PTCT ratio is set to yes and the CT ratio is set to 40, then the value obtained herein is already the
current on the primary side of the CT and there is no need to manually multiply the CT ratio.
• Current (primary) = (0 * 16,777,216 + 2 * 65,536 + 72 * 256 + 217) * 0.001 A= 149.721 A
Reply
PM210 Function Byte Read Data (low word) Read Data (high word) CRC
Address Code Count high (Y1) low (Y2) high (Y3) low (Y4) low high
124 3 4 62 16 1 36 90 146
Assume that the Use PTCT ratio is set to yes and the PT ratio is set to 10 and the CT ratio is set to 40 , then the value
obtained herein is already the power as measured on the primary side, and there is no need to manually multiply either
the PT or CT ratio.
• Power = (1 * 16,777,216 + 36 * 65,536 + 62 * 256 + 16) * 1 W = 19,152,400 Watts
Read Frequency
Query
• Register Address = 44
• XH = 44 div 256 = 0
• XL = 44 mod 256 = 44
Reply
PM210 Function Byte Read Data (low word) Read Data (high word) CRC
Address Code Count high (Y1) low (Y2) high (Y3) low (Y4) low high
124 3 4 2 88 0 0 215 95
Reply
PM210 Function Byte Read Data (low word) Read Data (high word) CRC
Address Code Count high (Y1) low (Y2) high (Y3) low (Y4) low high
210 3 4 3 102 0 0 248 165
Reply
PM210 Function Byte Read Data (low word) Read Data (high word) CRC
Address Code Count high (Y1) low (Y2) high (Y3) low (Y4) low high
196 3 4 187 245 0 9 155 239
Assume that the Use PTCT ratio is set to yes, then the value obtained herein is already the total active energy, and
there is no need to manually multiply the PT or CT ratio.
• Frequency = (0 * 16,777,216 + 9 * 65,536 + 187 * 256 + 245) * 0.01 kWh = 6379.41 kWh
Reply
PM210 Function Register Address Number of Registers CRC
Address Code high (XH) low (XL) high low low high
79 16 0 48 0 2 78 41
Read DO Status
Note that the DO status can be read from either register 14 or 142, while the DI status can be read from either register
15 or 143.
Query
• Register Address = 142
• XH = 142 div 256 = 0
• XL = 142 mod 256 = 142
Reply
PM210 Function Byte Read Data (low word) CRC
Address Code Count high (Y1) low (Y2) low high
19 3 2 0 1 193 135
Input
• PM210 Address = 1
• DO = ON, restore after a Power on Reset
Query / Reply
PM210 Function Starting Register Force Data CRC
Address Code high low high low low high
1 5 0 1 255 0 221 250
Output
• none
Input
• PM210 Address = 1
• DO = OFF, restore after a Power on Reset
Query / Reply
PM210 Function Starting Register Force Data CRC
Address Code high low high low low high
1 5 0 1 0 0 156 10
Input
• PM210 Address = 1
• DO = ON, donʼt restore after a Power on Reset
Query / Reply
PM210 Function Starting Register Force Data CRC
Address Code high low high (Y1) low low high
1 5 0 2 255 0 45 250
Example 4 (Turn DO off but donʼt restore after a Power On Reset, DO will
always be off after a Power On Reset)
Input
• PM210 Address = 1
• DO = OFF, donʼt restore after a Power on Reset
Query / Reply
PM210 Function Starting Register Force Data CRC
Address Code high low high (Y1) low low high
1 5 0 2 0 0 108 10
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
55 3 2 0 1 177 128
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
88 3 2 48 212 176 22
This command is useful for when you donʼt already know the existing address of the PM210. In which case, you should
use the broadcast address to compel the PM210 to reply regardless of its slave address. But note that this will only work
when there is a one to one connection between the host PC and the PM210, there must not be any other device on the
bus network; otherwise the other slave devices will also respond to the broadcasted command and the replies from the
various devices will collide.
Query
• Register Address = 131
• XH = 131 div 256 = 0
• XL = 131 mod 256 = 131
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
255 3 2 0 42 16 79
Note that the slave address can also be changed through the front panel. This command can be used with the broadcast
address 255, if the original address of the PM210 is unknown. But the PM210 must be in a one to one connection with
the host PC, no other devices must be on the same bus network; otherwise the other slave devices will also be changed
and their simultaneous replies will collide.
Query
• Current PM210 adddress = 68
• Register Address = 131
• XH = 131 div 256 = 0
• XL = 131 mod 256 = 131
• New PM210 Address = 241
• Y1 = (243 / 1) div 256 = 0
• Y2 = (243 / 1) mod 256 = 243
PM210 Function Register Address Number of Registers Byte Write Data CRC
Address Code high (XH) low (XL) high low Count high (Y1) low (Y2) low high
68 16 0 131 0 1 2 0 243 247 117
Reply
PM210 Function Register Address Number of Registers CRC
Address Code high (XH) low (XL) high low low high
68 16 0 131 0 1 254 180
Query
• Register Address = 132
• XH = 132 div 256 = 0
• XL = 132 mod 256 = 132
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
78 3 2 0 2 108 75
Query
• XH = 132 div 256 = 0
• XL = 132 mod 256 = 132
• Baud Rate = 4800 bauds
• Index = {0 => 1200, 1 => 2400, 2 => 4800, 3 => 9600} .value(2400) = 1
• Y1 = Index div 256 = 1 div 256 = 0
• Y2 = Index mod 256 = 1 div 256 = 1
PM210 Function Register Address Number of Registers Byte Write Data CRC
Address Code high (XH) low (XL) high low Count high (Y1) low (Y2) low high
101 16 0 132 0 1 2 0 1 227 22
Reply
PM210 Function Register Address Number of Registers CRC
Address Code high (XH) low (XL) high low low high
101 16 0 132 0 1 73 196
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
97 3 2 7 208 59 224
• Device Address = (Y1 * 256 + Y2) * Unit = (7 * 256 + 208) * 0.01 = 20.00
Write PT Ratio
Query
• Register Address = 133
• XH = 133 div 256 = 0
• XL = 133 mod 256 = 133
• PT Ratio = 20
• Y1 = (20 / 0.01) div 256 = 7
• Y2 = (20 / 0.01) mod 256 = 208
PM210 Function Register Address Number of Registers Byte Write Data CRC
Address Code high (XH) low (XL) high low Count high (Y1) low (Y2) low high
47 16 0 133 0 1 2 7 208 111 200
Reply
PM210 Function Register Address Number of Registers CRC
Address Code high (XH) low (XL) high low low high
47 16 0 133 0 1 22 110
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
33 3 2 0 80 57 191
Write CT Ratio
Query
• Register Address = 134
• XH = 134 div 256 = 0
• XL = 134 mod 256 = 134
• CT Ratio = 60
• Y1 = (60 / 1) div 256 = 0
• Y2 = (60 / 1) mod 256 = 60
PM210 Function Register Address Number of Registers Byte Write Data CRC
Address Code high (XH) low (XL) high low Count high (Y1) low (Y2) low high
77 16 0 134 0 1 2 0 60 221 36
Reply
PM210 Function Register Address Number of Registers CRC
Address Code high (XH) low (XL) high low low high
77 16 0 134 0 1 238 44
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
216 3 2 0 1 100 87
Write Standard/Dedicated CT
Query
• Register Address = 140
• XH = 140 div 256 = 0
• XL = 140 mod 256 = 140
• Standard/Dedicated CT = Standard
• Index = {0 => Standard 5A, 1 => Dedicated CT}.value(Standard 5A) = 0
• Y1 = Index div 256 = 0 div 256 = 0
• Y2 = Index mod 256 = 0 div 256 = 0
PM210 Function Register Address Number of Registers Byte Write Data CRC
Address Code high (XH) low (XL) high low Count high (Y1) low (Y2) low high
70 16 0 140 0 1 2 0 0 174 175
Reply
PM210 Function Register Address Number of Registers CRC
Address Code high (XH) low (XL) high low low high
70 16 0 140 0 1 207 85
Query
• Register Address = 139
• XH = 139 div 256 = 0
• XL = 139 mod 256 = 139
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
11 3 2 0 45 224 88
Reply
PM210 Function Byte Read Data CRC
Address Code Count high (Y1) low (Y2) low high
99 3 2 1 56 65 206
CRC Computation
The PM210 conforms to the Modbus/RTU protocol and thus uses CRC16 for its error checking. The computed CRC is
appended to the end of the message with the LSB first and then the MSB. Below is the pseudo code for computing the
CRC as used by the standard Modbus/RTU. The pseudo code is written in the Ruby language and can be directly used
as such.
Definition
def get_crc (*byte_array)
sum = 0xFFFF
byte_array.each do |byte|
sum ^= byte
8.times do
carry = (1 == sum & 1)
sum = 0x7FFF & (sum >> 1)
sum ^= 0xA001 if carry
end
end
return [sum & 0xFF, sum >> 8]
end
Usage
Notes on Modscan
This is not a manual of Modscan, but only a short note describing its manual commands capability.
Most users are familiar with Modscanʼs ability to read and continuously poll a designated device using Modbus
commands 1 to 4. But in addition, Modscan also has the ability to issue other commands as well.
For the DEM, function code 5 and 16 needs to be issued as well. To issue them, first make sure that the connection has
already been established and running then go to the menu and run the dialog box “User Defined Command String” from
[Setup->Extended->User Msg] as shown in the screen captures below:
Additional Resources
Although every effort has been taken to ensure that this document is free from errors, some may still remain. If found
please send an email to: [email protected], in the subject line write “Errata” and please indicate the name of this
document “PM210 Modbus Reference”, revision number, page number and indicate the error with its correction. Thank
you.
We have made sure that this document is as clear and useful to you as possible, but any suggestions on improving this
document to serve you even better would be welcome. Send comments and suggestions to: [email protected], in
the subject line, write “Comments” and please indicate the name of this document “PM210 Modbus Reference”.
Questions are also welcome.
This document only covers the Modbus protocol registers as used by the PM210, for interfacing and other information
please refer to the PM210 userʼs manual.