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
@@ -34,12 +34,12 @@ namespace PamhagenSysCtrl.Helpers.Plc {
protected readonly T1 Plc;
public string PortName => Plc.PortName;
public string ComPort => Plc.PortName;
public T1.Status LastStatus => Plc.LastStatus;
public T1Error LastError => Plc.LastError;
public LegacyPamhagenPlc(string portName, Parity parity = Parity.Odd) {
Plc = new T1(portName, parity);
public LegacyPamhagenPlc(string comPort, Parity parity = Parity.Odd) {
Plc = new T1(comPort, parity);
}
public void Dispose() {
+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);
+1 -1
View File
@@ -15,7 +15,7 @@ namespace PamhagenSysCtrl.Helpers.Plc {
public FillState MW1_FillLevel => Sensors.FillLevelMW1;
public FillState MW2_FillLevel => Sensors.FillLevelMW2;
public FillState[] Tanks_FillLevel => Sensors.FillLevelTanks;
public FillState[] Tanks_FillLevel => Sensors.FillLevelTanks ?? [FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown];
public FillState T1_FillLevel => Sensors.FillLevelTanks[0];
public FillState T2_FillLevel => Sensors.FillLevelTanks[1];
public FillState T3_FillLevel => Sensors.FillLevelTanks[2];