Add ReconnectThread to reconnect to PLC and Keyboard on the fly
Test / Run tests (push) Successful in 26s
Test / Run tests (push) Successful in 26s
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user