rossmann-engineering/EasyModbusTCP.NET

Type of EasyModbus.ModbusServer.HoldingRegisters.localArray is not suitable

aigefjk opened this issue · 3 comments

public short[] localArray defined in EasyModbus.ModbusServer.HoldingRegisters, which is not suitable defined as
a short[] type because sometimes we need to write a value bigger than 32767 (UInt16) to a single register. I suggest we could change short[] to int[] to solve this issue.

BTW, type of EasyModbus.ModbusServer.InputRegisters.localArray has the same issue!
issue

You shall use ushort, not int.
Int is signed 32bit, while ushort is unsigned 16bit

You shall use ushort, not int.
Int is signed 32bit, while ushort is unsigned 16bit


Maybe you don't get what problem I met.
I mean if Modbus server itself wants to update the holding registers by set its localArray, localArray whose type is short[] can not receive value greater than 32767 , value of ushort type also has the same problem.

CJure commented

Each register is 1 word = 16 bits = 2 bytes and also has data address between 0000 and 270E. (https://www.simplymodbus.ca/FAQ.htm)