I have seen in a PM8000 a Modbus read irregularity. If a single register read in the address range of 3000 - 3015 (appx.) is made it will return with exception 03, illegal data. If the same registers are read for a length > 1, then the reads are successful.
I believe this has the latest firmware but cannot confirm.
The PM8000 follows the =S= invariant which does not permit users to read partial Modbus values (i.e. values stored in multiple adjacent register locations using formats greater than 16 bit such as FLOAT32, UINT32, etc.).
The register range you are requesting with the PDM enabled consists entirely of FLOAT32 values and are on even register boundaries (ex. Current Ph A is located starting at 3000 and is stored in 3000 and 3001). Requesting only a single register or even requesting 2 registers but starting at 3001 would return an illegal data Modbus exception.
Thx for the info Robert. I am surprised to hear that - 16 bits is 16 bits. I would think one could read it at will. It should be up to the user to parse the info returned.
Are you aware of any other meters that exhibit this behavior?
Almost all new power meters (PM5xxx, PM2xxxx, PM3xxxx, etc) follow this new invariant. It would make zero sense to read a portion of a FLOAT32 as there is no easy means to decode those 16 bits into anything meaningful. 32 or 64 bit UINT values *could* yield some information (specifically if you read the lower portion of the value) but you would still be unable to use that information with confidence (ex. a lower order of zero could mean 0 or 65536).
It is specifically up to the Modbus Master to correctly read the correct # of registers such that the device's register content could not be improperly interpreted.
Discuss challenges in energy and automation with 30,000+ experts and peers.
Find answers in 10,000+ support articles to help solve your product and business challenges.
Find peer based solutions to your questions. Provide answers for fellow community members!