IEC61850 drivers - client and server - are encoding unsigned integer values >7Fh to MMS using too short size.

IEC61850 drivers - client and server - are encoding unsigned integer values >7Fh to MMS using too short size.

Summary

According 61850-8-1 and 9506-1, the INT8U when highest bit is set shall be encoded with length 2 (now is 1) - like INT8, where the highest bit is sign. So, mapped on MMS e.g. value 255 (FFh) shall be 86 02 00 FF but is now 86 01 FF. Issue affects all unsigned integer types (INT16U, INT32U etc).

Description

According 61850-8-1 and 9506-1, the INT8U when highest bit is set shall be encoded with length 2 (now is 1) - like INT8, where the highest bit is sign. So, mapped on MMS e.g. value 255 (FFh) shall be 86 02 00 FF but is now 86 01 FF. Issue affects all unsigned integer types (INT16U, INT32U etc).

Solution

Issue was addressed in encoding of UNSIGNED integers. Now, both drivers are using the same encoding size in mms for signed and unsigned values,

e.g.: when INT8U variable has value:

  • 0..7Fh --> in mms 3 bytes: 86 01 vv (hex)
  • 80..FFh --> in mms 4 bytes: 86 02 00 vv (hex)

where vv = variable value

Information

issue typically does not cause communication problems as almost all clients and servers on market are correctly handling also values encoded to shorter notation (supported in all popular MMS stacks).



Issue Number: 33346
Fixed on Date: 10.12.2014
Versions: 7.20 0 BUILD 18778