Schneider Electric EasyLogic PM1200 Modbus register map
Three-phase digital power meter, the Modbus RTU model of the EasyLogic PM1000 series (the PM1000 has no communications). It reports current, voltage, power, power factor, frequency, THD, demand, energy integrators, run and on hours and power interruption counts, and its setup values can be read and written over RS-485.
- Protocol
- Modbus RTU
- Defaults
- Table 6-5 lists Modbus RTU, 8 data bits, even parity, 1 stop bit and device address 1 (valid 1 to 247), with a baud rate of 9600 (user range 4800 to 19200). The setup block (Table 6-22) lists a default baud code of 5.0, which is 19200, so confirm the baud rate on the meter.
- Addresses in the manual
- 1-based register numbers (wire address is the number minus 1)
- 32 and 64-bit values
- Not stated in the manual
- Registers listed
- 88
- Checked against
- NHA1696401-02, 07/2015 (Schneider Electric document page: version 02, released 1 Jul 2015), vendor hosted
Address base. The manual prints decimal addresses such as 3901 for apparent power total (VA) and says some SCADA software uses a Modbus register address instead: add 40000, giving 43901. Its master software table (Table 6-7, p. 50) then lists 43901 for most PLC and SCADA packages and 3900 for the Siemens PLC and ABB Microscada entries, so wire address = printed number minus 1. Function code 03 is used for reads and 10 (hex) for writes. Values in the 'block only' rows must be read or written as the whole block stated in the note. The manual lists the OLD integrated blocks (Tables 6-18 to 6-20) one address above the forward, reverse and total blocks (for example 3122 against 3121), which overlaps the two register floats, so those rows are not included here. For example 85 in the manual (Model, options and version number) is address 84 on the wire.
Word order. All readings are 32-bit values over two registers. The manual describes the float byte order only through the setup parameter F.SEQ (register 141): 4321 for big-endian and 2143 for swapped big-endian, with a default of 2143, and through the test value 4030201.0 at register 320 that a master writes and reads back to check the byte order. Table 6-7 also tells some masters (ION Enterprise) to use a swapped float and Modscan to use unswapped floating point mode for the same register. The manual does not say which register carries the high word, so check against the meter before relying on it.
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 |
|---|---|---|---|---|---|---|---|---|
| 85 | 84 | Model, options and version numberModel_Version · Listed as type Long; read as the model info block (14 registers from 81). Bits 30 to 24 model number (PM1200 is 22, 0x16, PM1000 is 24, 0x18), bits 23 to 16 options, bits 15 to 0 firmware version (see the manual's interpretation steps). |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 101 | 100 | Current primary (A.Pri)Setup_Current_Primary · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 1.0 to 99 k, default 100.0. |
float32 | 2 | A | 1 | RW | Holding (FC03) |
| 103 | 102 | Current secondary (A.Sec)Setup_Current_Secondary · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 1.0 to 6.5, default 5.000. |
float32 | 2 | A | 1 | RW | Holding (FC03) |
| 105 | 104 | Voltage primary (V.Pri)Setup_Voltage_Primary · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 100.0 to 999 k, default 415.0. |
float32 | 2 | V | 1 | RW | Holding (FC03) |
| 107 | 106 | Voltage secondary (V.Sec)Setup_Voltage_Secondary · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 50.00 to 601.0, default 415.0. |
float32 | 2 | V | 1 | RW | Holding (FC03) |
| 109 | 108 | System configuration (SYS)Setup_System_Config · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 2.0 to 6.0, default 3.000. 2.0 = Delta, 3.0 = Star, 4.0 = Wye, 5.0 = 2 Ph, 6.0 = 1 Ph. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 111 | 110 | Phase labeling (LABL)Setup_Phase_Labeling · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 0.0 to 4.0, default 0.000. 0.0 = 123, 1.0 = ABC, 2.0 = RST, 3.0 = PQR, 4.0 = RYB. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 113 | 112 | VA function selection (VA Fn)Setup_VA_Function · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 0.0 to 1.0, default 0.000. 0.0 = 3D, 1.0 = Arth. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 115 | 114 | Demand selection (D sel)Setup_Demand_Selection · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 0.0 to 1.0, default 0.000. 0.0 = Auto, 1.0 = User. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 117 | 116 | Demand parameter (D Par)Setup_Demand_Parameter · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 0.0 to 2.0, default 0.000. 0.0 = VA, 1.0 = W, 2.0 = A. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 119 | 118 | Demand period (D Prd)Setup_Demand_Period · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 1.0 to 6.0, default 3.000. 1.0 = 5 min, 2.0 = 10 min, 3.0 = 15 min, 4.0 = 20 min, 5.0 = 25 min, 6.0 = 30 min. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 121 | 120 | Baud rate code (BAUD)Setup_Baud_Rate · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 3.0 to 5.0, default 5.000. 3.0 = 4800, 4.0 = 9600, 5.0 = 19200. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 123 | 122 | Parity and stop bit code (PRTY)Setup_Parity_Stop · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 0.0 to 5.0, default 0.000. 0.0 = Even 1, 1.0 = Even 2, 2.0 = Odd 1, 3.0 = Odd 2, 4.0 = No 1, 5.0 = No 2. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 125 | 124 | Unit ID (ID)Setup_Unit_ID · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 1.0 to 247.0, default 1.000. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 127 | 126 | Percent full scale (F.S%)Setup_Full_Scale_Percent · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 1 to 100, default 100.0. |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 129 | 128 | Overflow parameter selection (OFLO)Setup_Overflow_Parameter · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 0.0 to 3.0, default 2.000. 0.0 = Wh, 1.0 = VAh, 2.0 = Wh E, 3.0 = VAh E. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 131 | 130 | Number of poles for RPM (POLE)Setup_Poles · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 1.0 to 8.0, default 2.000. 1.0 = 2, 2.0 = 4, 3.0 = 6, 4.0 = 8, 5.0 = 10, 6.0 = 12, 7.0 = 14, 8.0 = 16 poles. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 141 | 140 | Float byte sequence (F.SEQ)Setup_Float_Byte_Sequence · Setup block: read with function 03 and write with function 10 as a whole block of 40 or 42 registers starting at 101. Range 1.0 to 2.0, default 2.0. 1.0 = 4321 (big-endian), 2.0 = 2143 (swapped big-endian). |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 304 | 303 | Health check registerHealth_Check · Used to identify that the meter is present on the network. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 306 | 305 | Float byte order detection registerFloat_Byte_Order_Detection · Used to identify the float byte order in the meter. The manual does not list the values. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 311 | 310 | Clear integrators, demand or setup defaultClear_Command · Listed as type Long; function 10 write as a block of 2 registers. 1 = clear INTG and maximum demand, 2 = clear maximum demand, 256 = restore setup defaults. The meter sends an exception for other values when restoring setup defaults. |
uint32 | 2 | 1 | W | Holding (FC03) | |
| 320 | 319 | Float byte test sequence registerFloat_Byte_Test · Block access. The manual says to write 4030201.0 before starting communication and read it back; if they match, the float byte sequence is in sync with the master. Other written values give a data exception. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 3701 | 3700 | Neutral voltageNeutral_Voltage · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. Available only through communication, not on the display. |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3703 | 3702 | Neutral currentCurrent_Neutral · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 3705 | 3704 | Voltage phase angle, phase 1Phase_Angle_Voltage_L1 · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. The manual says the voltage angles are fixed at 0, 120 and 240 (not measured) and are available only through communication; the unit is taken from those values. |
float32 | 2 | deg | 1 | R | Holding (FC03) |
| 3707 | 3706 | Voltage phase angle, phase 2Phase_Angle_Voltage_L2 · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. The manual says the voltage angles are fixed at 0, 120 and 240 (not measured) and are available only through communication; the unit is taken from those values. |
float32 | 2 | deg | 1 | R | Holding (FC03) |
| 3709 | 3708 | Voltage phase angle, phase 3Phase_Angle_Voltage_L3 · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. The manual says the voltage angles are fixed at 0, 120 and 240 (not measured) and are available only through communication; the unit is taken from those values. |
float32 | 2 | deg | 1 | R | Holding (FC03) |
| 3711 | 3710 | Current phase angle, phase 1Phase_Angle_Current_L1 · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. The unit is assumed to be degrees from the voltage angle note. |
float32 | 2 | deg | 1 | R | Holding (FC03) |
| 3713 | 3712 | Current phase angle, phase 2Phase_Angle_Current_L2 · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. The unit is assumed to be degrees from the voltage angle note. |
float32 | 2 | deg | 1 | R | Holding (FC03) |
| 3715 | 3714 | Current phase angle, phase 3Phase_Angle_Current_L3 · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. The unit is assumed to be degrees from the voltage angle note. |
float32 | 2 | deg | 1 | R | Holding (FC03) |
| 3717 | 3716 | Rotations per minuteRPM · Block access only: the manual says this block must be read as a whole, starting at 3701 with 18 registers. |
float32 | 2 | rpm | 1 | R | Holding (FC03) |
| 3739 | 3738 | Demand time remainingDemand_Time_Remaining · Listed as type Long. Block access only: the demand block is read as a whole, starting at 3721 with 22 registers. The manual gives no unit. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 3861 | 3860 | Voltage THD, phase 1THD_Voltage_L1 · The meter returns -999 when current through the internal CT is 0.5 A or below or 6 A or above, when the voltage at the measurement terminals is 50 V or below or 600 V or above, or when frequency is above 65 Hz. |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3863 | 3862 | Voltage THD, phase 2THD_Voltage_L2 · The meter returns -999 when current through the internal CT is 0.5 A or below or 6 A or above, when the voltage at the measurement terminals is 50 V or below or 600 V or above, or when frequency is above 65 Hz. |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3865 | 3864 | Voltage THD, phase 3THD_Voltage_L3 · The meter returns -999 when current through the internal CT is 0.5 A or below or 6 A or above, when the voltage at the measurement terminals is 50 V or below or 600 V or above, or when frequency is above 65 Hz. |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3867 | 3866 | Current THD, phase 1THD_Current_L1 · The meter returns -999 when current through the internal CT is 0.5 A or below or 6 A or above, when the voltage at the measurement terminals is 50 V or below or 600 V or above, or when frequency is above 65 Hz. |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3869 | 3868 | Current THD, phase 2THD_Current_L2 · The meter returns -999 when current through the internal CT is 0.5 A or below or 6 A or above, when the voltage at the measurement terminals is 50 V or below or 600 V or above, or when frequency is above 65 Hz. |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3871 | 3870 | Current THD, phase 3THD_Current_L3 · The meter returns -999 when current through the internal CT is 0.5 A or below or 6 A or above, when the voltage at the measurement terminals is 50 V or below or 600 V or above, or when frequency is above 65 Hz. |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3881 | 3880 | Average load percentageLoad_Avg_Percent |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3883 | 3882 | Percentage of phase 1 loadLoad_L1_Percent |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3885 | 3884 | Percentage of phase 2 loadLoad_L2_Percent |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3887 | 3886 | Percentage of phase 3 loadLoad_L3_Percent |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3889 | 3888 | Unbalanced percentage loadLoad_Unbalance_Percent |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3891 | 3890 | Unbalanced percentage voltageVoltage_Unbalance_Percent |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 3901 | 3900 | Apparent power, totalApparent_Power_Total |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 3903 | 3902 | Active power, totalActive_Power_Total |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 3905 | 3904 | Reactive power, totalReactive_Power_Total |
float32 | 2 | VAR | 1 | R | Holding (FC03) |
| 3907 | 3906 | Power factor, average of 3 phasesPower_Factor_Avg |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3909 | 3908 | Line to line voltage, averageVoltage_LL_Avg |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3911 | 3910 | Line to neutral voltage, averageVoltage_LN_Avg |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3913 | 3912 | Current, average of 3 phasesCurrent_Avg |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 3915 | 3914 | FrequencyFrequency |
float32 | 2 | Hz | 1 | R | Holding (FC03) |
| 3917 | 3916 | Apparent power, phase 1Apparent_Power_L1 |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 3919 | 3918 | Active power, phase 1Active_Power_L1 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 3921 | 3920 | Reactive power, phase 1Reactive_Power_L1 |
float32 | 2 | VAR | 1 | R | Holding (FC03) |
| 3923 | 3922 | Power factor, phase 1Power_Factor_L1 |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3925 | 3924 | Voltage, phase 1 to phase 2Voltage_L1_L2 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3927 | 3926 | Voltage, phase 1 to neutralVoltage_L1_N |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3929 | 3928 | Current, phase 1Current_L1 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 3931 | 3930 | Apparent power, phase 2Apparent_Power_L2 |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 3933 | 3932 | Active power, phase 2Active_Power_L2 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 3935 | 3934 | Reactive power, phase 2Reactive_Power_L2 |
float32 | 2 | VAR | 1 | R | Holding (FC03) |
| 3937 | 3936 | Power factor, phase 2Power_Factor_L2 |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3939 | 3938 | Voltage, phase 2 to phase 3Voltage_L2_L3 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3941 | 3940 | Voltage, phase 2 to neutralVoltage_L2_N |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3943 | 3942 | Current, phase 2Current_L2 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 3945 | 3944 | Apparent power, phase 3Apparent_Power_L3 |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 3947 | 3946 | Active power, phase 3Active_Power_L3 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 3949 | 3948 | Reactive power, phase 3Reactive_Power_L3 |
float32 | 2 | VAR | 1 | R | Holding (FC03) |
| 3951 | 3950 | Power factor, phase 3Power_Factor_L3 |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3953 | 3952 | Voltage, phase 3 to phase 1Voltage_L3_L1 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3955 | 3954 | Voltage, phase 3 to neutralVoltage_L3_N |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 3957 | 3956 | Current, phase 3Current_L3 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 3959 | 3958 | Forward apparent energyEnergy_Forward_Apparent |
float32 | 2 | VAh | 1 | R | Holding (FC03) |
| 3961 | 3960 | Forward active energyEnergy_Forward_Active |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 3963 | 3962 | Forward reactive inductive energyEnergy_Forward_Reactive_Inductive |
float32 | 2 | VARh | 1 | R | Holding (FC03) |
| 3965 | 3964 | Forward reactive capacitive energyEnergy_Forward_Reactive_Capacitive |
float32 | 2 | VARh | 1 | R | Holding (FC03) |
| 3967 | 3966 | Reverse apparent energyEnergy_Reverse_Apparent |
float32 | 2 | VAh | 1 | R | Holding (FC03) |
| 3969 | 3968 | Reverse active energyEnergy_Reverse_Active |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 3971 | 3970 | Reverse reactive inductive energyEnergy_Reverse_Reactive_Inductive |
float32 | 2 | VARh | 1 | R | Holding (FC03) |
| 3973 | 3972 | Reverse reactive capacitive energyEnergy_Reverse_Reactive_Capacitive |
float32 | 2 | VARh | 1 | R | Holding (FC03) |
| 3975 | 3974 | Present demandDemand_Present · The manual gives no unit. The demand parameter is chosen in setup (D Par: VA, W or A). |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3977 | 3976 | Rising demandDemand_Rising · The manual gives no unit. The demand parameter is chosen in setup (D Par: VA, W or A). |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3979 | 3978 | Maximum demandDemand_Max · The manual gives no unit. The demand parameter is chosen in setup (D Par: VA, W or A). |
float32 | 2 | 1 | R | Holding (FC03) | |
| 3981 | 3980 | Maximum demand occurrence timeDemand_Max_Time · Listed as type Long; the manual does not give the time encoding. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 3993 | 3992 | On hoursOn_Hours · Listed as type Long. The manual gives no unit beyond the name. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 3995 | 3994 | Forward run secondsForward_Run_Seconds · Listed as type Long. |
uint32 | 2 | s | 1 | R | Holding (FC03) |
| 3999 | 3998 | Number of power interruptionsPower_Interruptions · Listed as type Long; the Data Formats table calls INTR a 32-bit unsigned integer. |
uint32 | 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. The manual does not state the word order for 32-bit values. Check one known value (a voltage or a counter) and switch the setting if it reads wrong.
- 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: EasyLogic PM1000 Series Power Meter User Guide (PM1200 data communication chapter) (download.se.com)
NHA1696401-02, 07/2015 (Schneider Electric document page: version 02, released 1 Jul 2015), vendor hosted, Chapter 6, pp. 46 to 62 (Tables 6-1 to 6-3, 6-5, 6-8, 6-16, 6-21 to 6-24). Read on 2026-10-24.
Also used: Schneider Electric document page for NHA1696401 EasyLogic PM1000 Series Power Meters User Manual (www.se.com)
Also used: PowerLogic PM1000 Series Power Meters User Manual PLSED309039EN 08/2010 (earlier edition, third party copy used only to locate the register chapter) (www.netelectric.ir)
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 Schneider Electric
All Schneider Electric register maps