This commit is contained in:
@@ -27,12 +27,16 @@ namespace PamhagenSysCtrl.Helpers.Plc {
|
||||
|
||||
internal LegacyPamhagenPlc.ActuatorStates Actuators;
|
||||
internal LegacyPamhagenPlc.ActuatorStates LastActuators;
|
||||
internal LegacyPamhagenPlc.SensorStates Sensors = new(default, default, default, default, default, default, default, [
|
||||
FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown, FillState.Unknown
|
||||
], default);
|
||||
internal LegacyPamhagenPlc.SensorStates[] LastSensors = [];
|
||||
|
||||
public PamhagenPlc(string comPort, Parity parity = Parity.Odd) {
|
||||
internal readonly int ConsiderLastSensorsOpen;
|
||||
internal readonly int ConsiderLastSensorsClose;
|
||||
|
||||
public PamhagenPlc(string comPort, int sensorDelayOpenMs, int sensorDelayCloseMs, Parity parity = Parity.Odd) {
|
||||
Plc = new(comPort, parity);
|
||||
ConsiderLastSensorsOpen = sensorDelayOpenMs / 125 + 1;
|
||||
ConsiderLastSensorsClose = sensorDelayCloseMs / 125 + 1;
|
||||
LastSensors = new LegacyPamhagenPlc.SensorStates[Math.Max(ConsiderLastSensorsOpen, ConsiderLastSensorsClose)];
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
@@ -44,8 +48,9 @@ namespace PamhagenSysCtrl.Helpers.Plc {
|
||||
await Plc.TestConnection();
|
||||
Actuators = await Plc.ReadOutputs();
|
||||
LastActuators = Actuators;
|
||||
Sensors = await Plc.ReadInputs();
|
||||
State = new(Sensors, this);
|
||||
var sensors = await Plc.ReadInputs();
|
||||
LastSensors[0] = sensors;
|
||||
State = new(LastSensors, this);
|
||||
}
|
||||
|
||||
public async Task Shutdown() {
|
||||
@@ -59,8 +64,10 @@ namespace PamhagenSysCtrl.Helpers.Plc {
|
||||
LastActuators = Actuators;
|
||||
await Plc.WriteOutputs(LastActuators);
|
||||
}
|
||||
Sensors = await Plc.ReadInputs();
|
||||
State = new(Sensors, this);
|
||||
var sensors = await Plc.ReadInputs();
|
||||
Array.Copy(LastSensors, 0, LastSensors, 1, LastSensors.Length - 1);
|
||||
LastSensors[0] = sensors;
|
||||
State = new(LastSensors, this);
|
||||
|
||||
UpdateInterlocks();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user