Modbus Data Formats
Power Monitoring Expert supports the following data formats:
Format Type | Description |
---|---|
SINT16 | A 16-bit signed value in 2-1 (or big ENDIAN) format. The high order byte is first, the low-order byte second. |
UINT16 | A 16-bit unsigned value in 2-1 (or big ENDIAN) format. The high order byte is first, the low-order byte second. |
SINT32 or S32-4321 | A 32-bit signed value returned in two consecutive 16-bit registers. The high-order word is returned in the first register, the low order word in the second. In effect, the 4 bytes are returned in 4-3-2-1 (or big ENDIAN) format. |
UINT32 or U32-4321 | A 32-bit unsigned value returned in two consecutive 16-bit registers. The high-order word is returned in the first register, the low-order word in the second. In effect, the 4 bytes are returned in 4-3-2-1 (or big ENDIAN) format. |
S32-2143 | A 32-bit signed value returned in two consecutive 16-bit registers. Contrary to S32_4321, the high-order word is returned in the second register, the high-order word in the first. In effect, the 4 bytes are returned in 2-1-4-3 format. |
U32-2143 | A 32-bit unsigned value returned in two consecutive 16-bit registers. Contrary to U32_4321, the high-order word is returned in the second register, the low-order word in the first. In effect, the 4 bytes are returned in 2-1-4-3 format. |
S32-MFP or S32-M10k-4321 |
A 32-bit signed value returned in two consecutive 16-bit registers. The word stored in the first 16-bit register is multiplied by 10000 and added to the word stored in the second 16-bit register. Also known as ‘signed Modulo 10000’. |
U32-MFP or U32-M10k-4321 |
A 32-bit unsigned value returned in two consecutive 16-bit registers. The word stored in the first 16-bit register is multiplied by 10000 and added to the word stored in the second 16-bit register. Also known as ‘unsigned Modulo 10000’ or mod-10K. |
S32-M10k-2143 |
A 32-bit signed value returned in two consecutive 16-bit registers. Contrary to S32_M10k_4321, the word stored in the second 16-bit register is multiplied by 10000 and added to the word stored in the first 16-bit register. |
U32-M10k-2143 |
A 32-bit unsigned value returned in two consecutive 16-bit registers. Contrary to U32_M10k_4321, the word stored in the second 16-bit register is multiplied by 10000 and added to the word stored in the first 16-bit register. |
S48-M10k-21-65 |
A 48-bit signed value returned in three consecutive 16-bit registers. R3*10,000^2 + R2*10,000 + R1, where R3 is the last register and R1 is the first register. Each registers range is -9,999 to +9,999 |
U48-M10k-21-65 |
A 48-bit unsigned value returned in three consecutive 16-bit registers. R3*10,000^2 + R2*10,000 + R1, where R3 is the last register and R1 is the first register. Each registers range is 0 to +9,999 |
S64-M10k-21-87 |
A 64-bit signed value returned in four consecutive 16-bit registers. R4*10,000^3 + R3*10,000^2 + R2*10,000 + R1, where R4 is the last register and R1 is the first register. Each registers range is -9,999 to +9,999 |
U64-M10k-21-87 |
A 64-bit unsigned value returned in four consecutive 16-bit registers. R4*10,000^3 + R3*10,000^2 + R2*10,000 + R1, where R4 is the last register and R1 is the first register. Each registers range is 0 to +9,999 |
S64-87-21 |
A 64-bit signed value returned in four consecutive 16-bit registers. The highest order word is returned in the first register, the lowest order word in the fourth. In effect, the 8 bytes are returned in 8-7-6-5-4-3-2-1 (or big ENDIAN) format. |
U64-87-21 |
A 64-bit unsigned value returned in four consecutive 16-bit registers. The highest order word is returned in the first register, the lowest order word in the fourth. In effect, the 8 bytes are returned in 8-7-6-5-4-3-2-1 (or big ENDIAN) format. |
S64-21-87 |
A 64-bit signed value returned in four consecutive 16-bit registers. The highest order word is returned in the fourth register, the lowest order word in the first. In effect, the 8 bytes are returned in 2-1-4-3-6-5-8-7 (or little ENDIAN) format. |
U64-21-87 | A 64-bit unsigned value returned in four consecutive 16-bit registers. The highest order word is returned in the fourth register, the lowest order word in the first. In effect, the 8 bytes are returned in 2-1-4-3-6-5-8-7 (or little ENDIAN) format. |
S16-1-15 |
A 16-bit signed value. Bits 1 to 15 bits are unsigned data. If bit 16 is 0, the value is positive, if bit 16 is 1, the value is negative. |
IEEEFloat or F32-4321 |
A 32-bit IEEE floating point value returned in two consecutive 16-bit registers. The high-order word is returned in the first register and the low order word in the second. In effect, the 4 bytes are returned in 4-3-2-1 format. |
SwappedFloat or |
A 32-bit IEEE floating point value returned in two consecutive 16-bit registers. Contrary to F32_4321, the high-order word is returned in the second register and the low order word in the first. In effect, the 4 bytes are returned in 2-1-4-3 format. |
MaskedBool or |
A 16-bit value that is interpreted according to the bit pattern described by the Mask attribute. Bits exposed by the mask can be read or written without affecting the value of other bits. Unmasked bits are interpreted as 0 on a read and are unaffected on a write. Undeclared bits of a mask are interpreted as unmasked (i.e., mask="0x7F" is interpreted as 0x007F). The value that is read or written is determined by using enumeration ordinals, described below. If used for read-only Boolean data, enumerations are not required. If no mask is specified, all bits are relevant. |
PF-Nexus |
A 16-bit unsigned value, range 0 to 3999, representing 3 decimal places of accuracy. |
BCD (Binary Coded Decimal) |
A number is expressed as a sequence of decimal digits and then each decimal digit is encoded as an 8-bit binary number. For example, decimal 92 is encoded as 00001001 00000010. |
The following data types can have their length specified by the “Number of Registers to Request” setting. | |
Packed BCD |
A number is expressed as a sequence of decimal digits and then each decimal digit is encoded as a 4-bit binary number (nibble) For example, decimal 92 is encoded as 1001 0010. |
ASCII |
A sequence of bytes representing the ASCII character set. Each word stores two ASCII characters. Trailing spaces are removed. |
ASCII-Reverse |
Same as ASCII except every second character is in the reverse order. |
Additional supported formats: U16-21, S16-21, U16-12, S16-12, U64-M10k-87-21, S64-M10k-87-21, U48-M10k-65-21, S48-M10k-65-21, U48-65-21, S48-65-21, U48-21-65, S48-21-65, InvertedMaskedBool, F64-87-21, F64-12-78, PF32, PF_ALT, U16-21-ARRAY, U16-12-ARRAY, DateTime4_UTC, DateTime4_LOCAL, DateTime4, DateTime3_UTC, DateTime3_LOCAL, DateTime3, DateTime_YMDhms_UTC, DateTime_YMDhms_LOCAL, DateTime_YMDhms, DateTime_IEC870_UTC, DateTime_IEC870_LOCAL, DateTime_IEC870, DateTime3_IEC870_UTC, DateTime3_IEC870_LOCAL, DateTime3_IEC870, DateTime3_MDYhms_UTC, DateTime3_MDYhms_LOCAL, DateTime3_MDYhms, DateTime4_MDYhms_UTC, DateTime4_MDYhms_LOCAL, DateTime4_MDYhms, DateTime2_s2000, DateTime3_s2000, DateTime4_shmMDY, DateTime6_smhDMY, DateTime7_YMDhms, DateTime8_MDYdowhmsc, DateTime6_MDYhmms, DateTime_NSX2_UTC, DateTime_NSX2_LOCAL, DateTime_NSX3_UTC, DateTime_NSX3_LOCAL, S64-M1K-87-21, U64-M1K-87-21.