Metering & Power Quality
Schneider Electric support forum about Power Meters (ION, PowerTag, PowerLogic) and Power Quality from design, implementation to troubleshooting and more.
Link copied. Please paste this link to share this article on your social media post.
Is there someone out there that can help me with this? I've searched the forums and documentation downloads for a couple of hours to no avail...
I'm trying to decide what MODBUS registers to use for a PM800 in a data acquisition system. I've done this several times for various brands of meters so I'm not new to this.
I have the MODBUS map document for a PM800. In this document there's a column in the tables with a heading of Scale. There are various values listed, such as A, B, F, etc. I need to know what this 'Scale' column is for. In the ION8600 MODBUS map document, there's a section at the back that describes each scaling type, etc. There is no such reference in the PM800 map.
Anybody?
Mitch
Link copied. Please paste this link to share this article on your social media post.
Hello @jmitchell ,
The PM800 meters have often 2 registers related to a measurement, the first register is the numeric value, the second the scaling. In the modbus guide for the PM800, scaling information is around 3200 section, 3209 for current, 3212 for voltage, 3214 for power.
Regards,
Charles
Link copied. Please paste this link to share this article on your social media post.
Hello JMitchell,
The PM8000 and similar meters support a default Modbus map utilizing the data mapping modules in the meters, and a custom Modbus map. The answer will depend on which one you're using.
I believe the data mapping modules where added around firmware 002.nnn.mmm and the firmware file will contain a spreadsheet with the mapping and format for each register. These registers are primarily 32bit and the Units column provides the units the values will be presented in.
If you're using custom Modbus maps, or Modbus on an older firmware. You can customize the arrangement and values to be added to the Modbus modules, and these modules support custom scaling and you can adjust the format from 16 bit to 32 bit as well as a few other formats. These scale here can be used to multiply or divide the source values to fit register format or improve resolution.
Below is an excerpt from the ION Reference manual for Scaling in the Modbus modules.
Four setup registers (InZero, OutZero, InFull and OutFull ) may be used to scale a
range of numeric input values to a specified output range.
The following diagram shows how the scaling operation works. For example,
suppose the Modbus Master needs 10-bit data for all inputs, and the kW reading is
required. The Modbus Slave module Format register is set to use UNSIGNED 16-BIT;
the input range is specified as 5000kW to 20000 kW, and the output range is set
from 0 to 1023 to give maximum resolution over this range.
Any values for the kW register below 5000kW will be exported to the Modbus
Master as a value of 0; any reading in excess of 20,000kW will be exported as a
reading of 1023. The Modbus Master typically can apply the appropriate scaling
and offset values necessary to interpret these values.
Note that if the Modbus Master reads data from any register that does not contain
valid data (i.e. if any of the module inputs are not available), the data will be
indicated by the hexadecimal value 0xFFFF; this should not be mistaken for a
valid reading. Ensure that the Modbus Master can recognize this invalid response.
In the case of Packed Boolean format, each unconnected or unavailable input is
represented by a “0” in the output register.
Link copied. Please paste this link to share this article on your social media post.
Guess I should clarify here, which I didn't before....
I'm using the standard MODBUS mappings as shown in the PM800 MODBUS map (which I assume - maybe incorrectly - are out-of-the-box configurations). Customization of internal modules is not an option at this time.
For example, the map shows that register 1100 is Phase A Current:
So I should interpret this as, if the meter is reading 277 (for a 3-phase, 277/480 connection), the MODBUS register will have 277 stored in it? There's no scaling required based on any CT/PT settings?
In the ION8600s, I must divide the value in the Phase A Current register by 0.1 (move the decimal point one place to the left, so if I'm getting a reading of 2772, the scaled value will be 277.2.
And again, I'm using the default MODBUS maps that are shown to be configured in the meter - out-of-the-box - I believe.
Unfortunately, I'm not at the site where this configuration is happening - helping a co-worker remotely - so bouncing the values I'm receiving against PME isn't an option for me (could be for her - but we're half a world apart right now).
Mitch
Link copied. Please paste this link to share this article on your social media post.
Hello @jmitchell ,
The PM800 meters have often 2 registers related to a measurement, the first register is the numeric value, the second the scaling. In the modbus guide for the PM800, scaling information is around 3200 section, 3209 for current, 3212 for voltage, 3214 for power.
Regards,
Charles
Link copied. Please paste this link to share this article on your social media post.
I believe this is what I'm looking for. Thanks Charles.
Mitch
Link copied. Please paste this link to share this article on your social media post.
The scale factors as Charles mentioned are programmable which are stored as a *signed* integer in registers 3209 (A), 3210 (B), 3212 (D), 3213 (E), 3214 (F).
A = 3 Phase Amps
B = Neutral Amps
D = 3 Phase Volts
E = Neutral Volts
F = Power
Each register contains a signed values which indicates the power of 10 to multiple the main numeric register.
Default is 0 (zero) for all scales except for Neutral Volts (E) which is defaulted to -1.
These scale factors can be configured using ION Setup if you wish to do so.
Link copied. Please paste this link to share this article on your social media post.
Hello, does anyone know which address on the mudbus map this data corresponds to and what format it is in, is it integer, floating, etc?
Link copied. Please paste this link to share this article on your social media post.
Most PM800 Modbus registers are returned as either UINT16B or Signed 16B as this is a very old legacy device (circa 1990s). As such values are returned as UINT16B can only range between 0 and 65535. In order to represent more digits of accuracy, (59.99Hz for example instead of just either 59 or 60), registers would contain the value of 5999 and the appropriate corresponding scaling register would have a power of 10 that any Modbus master would be able to read and do calculations to multiple the value out.
So if one wants to adjust the scale (which is default in most case to scaling of 10^0 which is just 1), then reading something like voltage L-L might just return a value of something like 120 (or 119). One could change the scale to 10^1 (where the voltage scaling register would return 1 instead of 0) at which point the voltage register would return 1200 (or 1199) at which point software would need to divide the value by 10 (thus making the voltage 120.0 or 119.9).
Link copied. Please paste this link to share this article on your social media post.
How can read this value? i need intergrated to ignition software (inductive automation), but data read this application isn't relation this value in the screen the pm800.
Does anyone know how to obtain this data?
Thanks!!!
Link copied. Please paste this link to share this article on your social media post.
Hello @aldoesser ,
Not sure if this is the same for everyone, but I am not able to see any of the images in your posts. I just see yellow triangle with black boarder. Perhaps you can add as an attachment?
regards,
Charles
Link copied. Please paste this link to share this article on your social media post.
Assuming your software can do a standard Modbus Read Holding register request (Modbus function code 0x03), the process to determine the actual value of any PM800 register would be:
1. Read the content of the desired register address (ex. Real Power, Total = address 1143) which is a 16 bit signed integer.
2. Since the register value returned can only range between -32767 and 32767 as an integer if a user wants to see more digits of precision, then they can opt to scale the value depending if the expected range can support that scaling (i.e. if they expect that real power will never be over say 500 kW, they could scale it by 10 (so the range of the register would be now between -5000 and 5000 instead of just -500 to 500).
3. Since this is a Power register, then software must perform a separate Read Holding register request to read the contents of register 3214 (Scale F - Power).
The value in said register would be the power of 10 that any power related register in the map would have to be divided (or multiplied) by in order to determine the true value of said register.
Ex. If register 3214 had the value of 1, then that indicates to divide the contents of any power register by 10 in order to determine what is the reading is (so a value of say 432 in register 1134 would indicate that real total power is 43.2 kW.
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.