rossmann-engineering / EasyModbusTCP.NET

Modbus TCP, Modbus UDP and Modbus RTU client/server library for .NET implementations
922 stars 396 forks source link

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

Open aigefjk opened 2 years ago

aigefjk commented 2 years ago

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

Padanian commented 2 years ago

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

aigefjk commented 2 years ago

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 2 years ago

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