Skip to content
This repository was archived by the owner on Jul 24, 2022. It is now read-only.

Releases: NModbus4/NModbus4

Initial support of .NET Core

01 Feb 22:26

Choose a tag to compare

Pre-release
Merge pull request #86 from Maxwe11/net-core

Initial support of .NET Core

2.1.0

09 Aug 14:24

Choose a tag to compare

API addition and performance improvements

  • retry receiving response if response is behind request (#41)
  • performance improvements (#39, #44)

Acknowledgements

@richardlawley

2.0.5548.32383

04 Jun 12:50

Choose a tag to compare

Changes

  • public exception follows .NET guidelines (#11)
  • added ability for auto closing connection with master when it isn't active with specified timeout (#12)

Acknowledgements

@breyed
@bilalovim

2.0.5516.31020

26 Feb 06:14

Choose a tag to compare

Breaking changes

Version 2.0 of NModbus4 introduces some breaking changes.
In case of slave receives request with invalid function exception response would be returned to master instead of throwing ArgumentException (issue #2).

Also introduced new exception type InvalidModbusRequestException. You can subscribe on slave's event ModbusSlaveRequestReceived and throw this exception. Thus you can filter incoming requests (#6).

Another breaking change related with ReadWriteMultiple function (0x17). Now it works in accordance with the Modbus spec -- performs write operation before read(fixes #6).

API addition

  1. IModbusMaster and its implementations now have Async versions of its methods which return Task:

    Task<bool[]> ReadCoilsAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
    Task<bool[]> ReadInputsAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
    Task<ushort[]> ReadHoldingRegistersAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
    Task<ushort[]> ReadInputRegistersAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
    Task WriteSingleCoilAsync(byte slaveAddress, ushort coilAddress, bool value);
    Task WriteSingleRegisterAsync(byte slaveAddress, ushort registerAddress, ushort value);
    Task WriteMultipleRegistersAsync(byte slaveAddress, ushort startAddress, ushort[] data);
    Task WriteMultipleCoilsAsync(byte slaveAddress, ushort startAddress, bool[] data);
    Task<ushort[]> ReadWriteMultipleRegistersAsync(byte slaveAddress, ushort startReadAddress, ushort numberOfPointsToRead, ushort startWriteAddress, ushort[] writeData);
    
  2. Opposite to event ModbusSlaveRequestReceived added event WriteComplete which fired by slave after write operation completed.

Acknowledgements

@breyed

1.12.0

28 Jun 18:14

Choose a tag to compare

  • issue #1 fixed;
  • Modbus ASCII Read() issue fixed;
  • utility to convert an ushort array into a double;
  • changed SLAVE_DEVICE_BUSY to use retry count instead of retrying indefinitely