Add ReconnectThread to reconnect to PLC and Keyboard on the fly
Test / Run tests (push) Successful in 26s

This commit is contained in:
2026-10-13 17:26:35 +02:00
parent c3f4acaf07
commit 4b9bcc6ad3
7 changed files with 158 additions and 129 deletions
+6 -5
View File
@@ -13,7 +13,7 @@ namespace PamhagenSysCtrl.Helpers.Plc {
protected LegacyPamhagenPlc Plc;
public PamhagenState State { get; private set; }
public string? PortName => Plc?.PortName;
public string? ComPort => Plc?.ComPort;
public T1.Status? LastStatus => Plc?.LastStatus;
public T1Error? LastError => Plc?.LastError;
@@ -23,8 +23,8 @@ namespace PamhagenSysCtrl.Helpers.Plc {
FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown
], default);
public PamhagenPlc(string portName, Parity parity = Parity.Odd) {
Plc = new(portName, parity);
public PamhagenPlc(string comPort, Parity parity = Parity.Odd) {
Plc = new(comPort, parity);
}
public void Dispose() {
@@ -36,6 +36,8 @@ namespace PamhagenSysCtrl.Helpers.Plc {
await Plc.TestConnection();
Actuators = await Plc.ReadOutputs();
LastActuators = Actuators;
Sensors = await Plc.ReadInputs();
State = new(Sensors, () => Actuators, OverridePathClearances, OverrideDryRunClearances);
}
public async Task Shutdown() {
@@ -46,9 +48,8 @@ namespace PamhagenSysCtrl.Helpers.Plc {
UpdateInterlocks();
if (Actuators != LastActuators) {
// FIXME race condition!
await Plc.WriteOutputs(Actuators);
LastActuators = Actuators;
await Plc.WriteOutputs(LastActuators);
}
Sensors = await Plc.ReadInputs();
State = new(Sensors, () => Actuators, OverridePathClearances, OverrideDryRunClearances);