Implemented the Serial Server

This commit is contained in:
2024-04-02 22:52:56 +02:00
parent a458e76aea
commit 380493c7ec
5 changed files with 1186 additions and 6 deletions

View File

@@ -14,7 +14,7 @@ If you want to speak a custom type of protocol with the clients, you can impleme
**ModbusBaseClient**
This abstract base client contains all the basic methods and handlings required to communicate via Modbus Protocol.
The packages `AMWD.Protocols.Modbus.Serial` _(in progress)_ and `AMWD.Protocols.Modbus.Tcp` have specific derived implementations to match the communication types.
The packages `AMWD.Protocols.Modbus.Serial` and `AMWD.Protocols.Modbus.Tcp` have specific derived implementations to match the communication types.
### Enums
@@ -63,8 +63,8 @@ Here you have the specific default implementations for the Modbus Protocol.
- TCP
**NOTE:**
The implementations over serial line (RTU and ASCII) have a minimum unit ID of one (1) referring to the specification.
This validation is _not_ implemented here due to real world experience, that some manufactures do not care about it.
The implementations over serial line (RTU and ASCII) have a minimum unit ID of one (1) and maximum unit ID of 247 referring to the specification.
This validation is _not_ implemented here due to real world experience, that some manufactures don't care about it.
---

View File

@@ -90,7 +90,13 @@ namespace AMWD.Protocols.Modbus.Serial
/// <summary>
/// Gets or sets a wait-time between requests.
/// </summary>
public virtual TimeSpan InterRequestDelay { get; set; } = TimeSpan.Zero;
/// <remarks>
/// The specification says:
/// <br/>
/// For baud rates greater than 19.2k Bps, fixed values for the two timers should be used:
/// [...] a value of 1.750ms for inter-frame delay (t_3.5).
/// </remarks>
public virtual TimeSpan InterRequestDelay { get; set; } = TimeSpan.FromMilliseconds(1.75);
#region SerialPort Properties

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,7 @@ ushort count = 2;
var registers = await client.ReadHoldingRegistersAsync(unitId, startAddress, count);
float voltage = registers.GetSingle();
Console.WriteLine($"The voltage between L1 and N is: {voltage:N2}V");
Console.WriteLine($"The voltage of device #{unitId} between L1 and N is: {voltage:N2}V");
```

View File

@@ -20,7 +20,7 @@ ushort count = 2;
var registers = await client.ReadHoldingRegistersAsync(unitId, startAddress, count);
float voltage = registers.GetSingle();
Console.WriteLine($"The voltage between L1 and N is: {voltage:N2}V");
Console.WriteLine($"The voltage of device #{unitId} between L1 and N is: {voltage:N2}V");
```