Note: I'll try to keep the changelog up-to-date, but please be patient, I might forget it.
- New property to disable the transaction id check (not recommended but requested)
- Optimized an issue with non-responding Modbus TCP servers.
- Extensions to convert from/to naive data types have a parameter to
inverseRegisters
order. (by @Luke092) (Closing Issue #15 more precisely)
- Better async behaviour for serial client.
- Updated to C# 9.0
- Updated packages
- Extension to convert from/to string enhanced by switch to flip bytes (endianness). (Closing Issue #15)
- Resolved null reference errors while reconnecting (TCP and Serial). (Closing Issue #14)
- Extensions to convert values back to
ModbusObject
s are now available.
- Removed a potential dead-lock scenario when disconnecting while on reconnect.
- Modbus clients have a optional
CancellationToken
onConnect()
andDisconnect()
.
- The Modbus TCP client on unix systems creates an
IOException
on connection loss - catch that exception instead of theEndOfStreamException
.
- The Modbus TCP client will now recognize (again) a connection close from the remote and start the reconnect cycle
- The Modbus TCP server recognizes the connection close from the client as well and terminate the running tasks.
- The Modbus TCP server catches the rising
NotImplementedException
s and will not crash anymore on invalid requests.
- Added this changelog.
- Added a
ModbusObject
as base class forCoil
s,DiscreteInput
s andRegister
s. The propertyType
ofModbusObjectType
will tell you the actual meaning.
For naming reasons the old classes are still present and used. *.snupkg
(Debug Symbols) for the NuGet packages are available on my Gitlab.- New package
AMWD.Modbus.Proxy
- TCP to TCP can be used when a remote device only accepts one connection but multiple clients want to request the information (or as Gateway [on a NAT device]).
- TCP to Serial can be used to bring a Modbus RTU (RS485) device into your local network.
- Added a custom console logger to the console demo application.
- The
Value
property of all structure classes is replaced byRegisterValue
for 16-bit values ([Holding | Input]Register
) andBoolValue
for 1-bit values (Coil
,DiscreteInput
). - All servers and clients can use an
ILogger
implementation for detailed logging in the instances. - Using more
TimeSpan
for timeouts instead of integer values with different meanings (seconds, milliseconds?!?). - Updated Gitlab CI procedure for automatic deployment to NuGet.org.
- Code cleanup and C# 8.0
- git attributes not needed and therefore deleted.
FakeSynchronizationContext
was never used.
- Changed handling with a broken serial port for a clean shutdown.
- Fixed an issue where the serial client crashed during a request.
- SemVer tagging only allowes 3 sections (major, minor, patch).
- More specific evaluation of property ranges for the serial client.
- Added license information to the nuget packages.
- Fixed an issue with an incompatible buffer size on the serial client.
- Requests from clients can be cancelled with a
CancelleationToken
. - Read/Write async on serial connections is now available.
(The .NET implementation ignores cancellation tokens)
- New package to create Modbus request proxies.
Needed to translate requests from TCP to Serial and vice versa or to make a device with only one (1) connection at a time available to multiple clients.
Note: Not deployed on NuGet.org. - Enhanced the console demo application to provide a server.
- Modbus servers have custom request handlers.
- The clients have a new parameter to provide a
CancellationToken
. - The
ModbusDevice
uses a more flexibleReaderWriterLockSlim
.
- Reverted changes from a merge request to keep .NET Standard 2.0 as target framework.
- Merging requests #10 and #11 into the
master
.
- Less garbage collecting needed while reading a network stream (from mishun).
- Additional constructor parameter to change the max. connect timeout (from madfisht3).
- Serial client did not filter an error response function code.
- Reverted some incompatible package versions.
.editorconfig
added for a unified look and feel.CodMaid.config
added for a unified code cleanup and structure.
- Null reference error on disconnect fixed.
ReceiveLoop
not accessing a disposed stream.
- Logging available for the Modbus TCP server.
- Some internal extensions.
- Version tag on compiletime changed (NetRevisionTask).
Task.Forget()
only internal available to prevent conflicts with other implementations.
- Catch some exceptions to keep the client more quiet.
- Fixed an issue during diconnect when the client was reconnecting.
- Custom console logger for UnitTests.
- More UnitTests.
- Modbus TCP client uses
TaskCompletionSource
. - Modbus Serial cient enhanced to be more async.
- Updating to C# 7.1 and more up-to-date packages.
- Modbus TCP server was not able to write multiple registers (from hmarius).
- Change dual driver (RS232/RS485) to RS485 state (tested with sysWORXX CTR 700).
- First working Modbus serial implementation.
- Implementation of function 43 (0x2B read device information).
- UnitTests.
- Gitlab CI builds.
- NuGet information of projects updated.
- Modbus TCP Client implementation with all common functions available.
- Modbus TCP Server implementation (not well tested).
- Basic Modbus Serial implementation (not tested!).