This commit is contained in:
@@ -385,8 +385,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
CreatePipe(xp5, xp6);
|
||||
CreatePipe(xp7, xp8);
|
||||
|
||||
var zv1 = new CenterValve("ZV1", pr1cX, prY - 40, () => App.Plant?.FillLevelPress1 != FillState.Full);
|
||||
var zv2 = new CenterValve("ZV2", pr2cX, prY - 40, () => App.Plant?.FillLevelPress2 != FillState.Full);
|
||||
var zv1 = new CenterValve("ZV1", pr1cX, prY - 40, () => App.Plant?.Press1HasClerance ?? false);
|
||||
var zv2 = new CenterValve("ZV2", pr2cX, prY - 40, () => App.Plant?.Press2HasClerance ?? false);
|
||||
CreatePipe(xp6, zv1, true);
|
||||
CreatePipe(xp8, zv2, true);
|
||||
CreateInlet(zv1, press1, true);
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
|
||||
protected bool ActuatorsChanged = false;
|
||||
protected PamhagenPlc.ActuatorStates Actuators;
|
||||
protected PamhagenPlc.SensorStates Sensors = new(default, default, default, default, [
|
||||
protected PamhagenPlc.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);
|
||||
|
||||
@@ -28,10 +28,10 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
public int TroughSelector => Sensors.TroughSelector;
|
||||
public bool IsMWSelected => Sensors.TroughSelector == 1;
|
||||
public bool IsMW2Selected => Sensors.TroughSelector == 2;
|
||||
public FillState FillLevelMW1 => Sensors.FillingLevels.MW1;
|
||||
public FillState FillLevelMW2 => Sensors.FillingLevels.MW2;
|
||||
public FillState FillLevelPress1 => Sensors.FillingLevels.Press1;
|
||||
public FillState FillLevelPress2 => Sensors.FillingLevels.Press2;
|
||||
public FillState FillLevelMW1 => Sensors.FillingLevelMW1;
|
||||
public FillState FillLevelMW2 => Sensors.FillingLevelMW2;
|
||||
public bool Press1HasClerance => Sensors.ClearancePress1;
|
||||
public bool Press2HasClerance => Sensors.ClearancePress2;
|
||||
public FillState FillLevelT1 => Sensors.FillingLevelTanks[0];
|
||||
public FillState FillLevelT2 => Sensors.FillingLevelTanks[1];
|
||||
public FillState FillLevelT3 => Sensors.FillingLevelTanks[2];
|
||||
@@ -211,8 +211,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
(b && ((HasWTClearanceBA && HasT9ClearanceA) || (HasWTClearanceBB && HasT9ClearanceB)));
|
||||
|
||||
public bool MP1HasClearance => FillLevelMW1 != FillState.Empty && (
|
||||
(MP1HasClearancePress1 && FillLevelPress1 != FillState.Full) ||
|
||||
(MP1HasClearancePress2 && FillLevelPress2 != FillState.Full) ||
|
||||
(MP1HasClearancePress1 && Press1HasClerance) ||
|
||||
(MP1HasClearancePress2 && Press2HasClerance) ||
|
||||
(HasClearanceTank1(MP1HasClearanceTanksA, MP1HasClearanceTanksB) && FillLevelT1 != FillState.Full) ||
|
||||
(HasClearanceTank2(MP1HasClearanceTanksA, MP1HasClearanceTanksB) && FillLevelT2 != FillState.Full) ||
|
||||
(HasClearanceTank3(MP1HasClearanceTanksA, MP1HasClearanceTanksB) && FillLevelT3 != FillState.Full) ||
|
||||
@@ -224,11 +224,11 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
(HasClearanceTank9(MP1HasClearanceTanksA, MP1HasClearanceTanksB) && FillLevelT9 != FillState.Full) ||
|
||||
false);
|
||||
protected bool MP1HasClearancePress1 =>
|
||||
(AreValvesOpen(1, 6, 51) && AreValvesClosed(3, 4, 5, 55)) ||
|
||||
(AreValvesOpen(4, 8, 52) && AreValvesClosed(1, 2, 7, 56));
|
||||
(AreValvesOpen(1, 6, 51) && AreValvesClosed(3, 4, 5, 50, 52, 53, 55)) ||
|
||||
(AreValvesOpen(4, 8, 52) && AreValvesClosed(1, 2, 7, 50, 51, 53, 56));
|
||||
protected bool MP1HasClearancePress2 =>
|
||||
(AreValvesOpen(1, 6, 55) && AreValvesClosed(3, 4, 5, 51)) ||
|
||||
(AreValvesOpen(4, 8, 56) && AreValvesClosed(1, 2, 7, 52));
|
||||
(AreValvesOpen(1, 6, 55) && AreValvesClosed(3, 4, 5, 51, 54, 56, 57)) ||
|
||||
(AreValvesOpen(4, 8, 56) && AreValvesClosed(1, 2, 7, 52, 54, 55, 57));
|
||||
protected bool MP1HasClearanceTanksA => AreValvesOpen(1, 5) && AreValvesClosed(3, 4, 6);
|
||||
protected bool MP1HasClearanceTanksB => AreValvesOpen(4, 7, 9) && AreValvesClosed(1, 2, 8, 10);
|
||||
|
||||
@@ -238,8 +238,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
}
|
||||
|
||||
public bool MP2HasClearance => FillLevelMW2 != FillState.Empty && (
|
||||
(MP2HasClearancePress1 && FillLevelPress1 != FillState.Full) ||
|
||||
(MP2HasClearancePress2 && FillLevelPress2 != FillState.Full) ||
|
||||
(MP2HasClearancePress1 && Press1HasClerance) ||
|
||||
(MP2HasClearancePress2 && Press2HasClerance) ||
|
||||
(HasClearanceTank1(MP2HasClearanceTanksA, MP2HasClearanceTanksB) && FillLevelT1 != FillState.Full) ||
|
||||
(HasClearanceTank2(MP2HasClearanceTanksA, MP2HasClearanceTanksB) && FillLevelT2 != FillState.Full) ||
|
||||
(HasClearanceTank3(MP2HasClearanceTanksA, MP2HasClearanceTanksB) && FillLevelT3 != FillState.Full) ||
|
||||
@@ -251,11 +251,11 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
(HasClearanceTank9(MP2HasClearanceTanksA, MP2HasClearanceTanksB) && FillLevelT9 != FillState.Full) ||
|
||||
false);
|
||||
protected bool MP2HasClearancePress1 =>
|
||||
(AreValvesOpen(2, 8, 52) && AreValvesClosed(3, 4, 7, 56)) ||
|
||||
(AreValvesOpen(3, 6, 51) && AreValvesClosed(1, 2, 5, 55));
|
||||
(AreValvesOpen(2, 8, 52) && AreValvesClosed(3, 4, 7, 50, 51, 53, 56)) ||
|
||||
(AreValvesOpen(3, 6, 51) && AreValvesClosed(1, 2, 5, 50, 52, 53, 55));
|
||||
protected bool MP2HasClearancePress2 =>
|
||||
(AreValvesOpen(2, 8, 56) && AreValvesClosed(3, 4, 7, 52)) ||
|
||||
(AreValvesOpen(3, 6, 55) && AreValvesClosed(2, 1, 5, 51));
|
||||
(AreValvesOpen(2, 8, 56) && AreValvesClosed(3, 4, 7, 52, 54, 55, 57)) ||
|
||||
(AreValvesOpen(3, 6, 55) && AreValvesClosed(2, 1, 5, 51, 54, 56, 57));
|
||||
protected bool MP2HasClearanceTanksA => AreValvesOpen(3, 5) && AreValvesClosed(1, 2, 6);
|
||||
protected bool MP2HasClearanceTanksB => AreValvesOpen(2, 7, 9) && AreValvesClosed(3, 4, 8, 10);
|
||||
|
||||
@@ -265,8 +265,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
}
|
||||
|
||||
public bool P12HasClearance => (FillLevelT1 != FillState.Empty || FillLevelT2 != FillState.Empty) && (
|
||||
(P12HasClearancePress1 && FillLevelPress1 != FillState.Full) ||
|
||||
(P12HasClearancePress2 && FillLevelPress2 != FillState.Full) ||
|
||||
(P12HasClearancePress1 && Press1HasClerance) ||
|
||||
(P12HasClearancePress2 && Press2HasClerance) ||
|
||||
(HasClearanceTank1(false, P12HasClearanceTanksB) && FillLevelT1 != FillState.Full) ||
|
||||
(HasClearanceTank2(false, P12HasClearanceTanksB) && FillLevelT2 != FillState.Full) ||
|
||||
(HasClearanceTank3(false, P12HasClearanceTanksB) && FillLevelT3 != FillState.Full) ||
|
||||
@@ -277,8 +277,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
(HasClearanceTank8(false, P12HasClearanceTanksB) && FillLevelT8 != FillState.Full) ||
|
||||
(HasClearanceTank9(false, P12HasClearanceTanksB) && FillLevelT9 != FillState.Full) ||
|
||||
false);
|
||||
protected bool P12HasClearancePress1 => AreValvesOpen(44, 46, 49, 50) && AreValvesClosed(10, 45, 47, 48, 54);
|
||||
protected bool P12HasClearancePress2 => AreValvesOpen(44, 46, 49, 54) && AreValvesClosed(10, 45, 47, 48, 50);
|
||||
protected bool P12HasClearancePress1 => AreValvesOpen(44, 46, 49, 50) && AreValvesClosed(10, 45, 47, 48, 54, 51, 52, 53);
|
||||
protected bool P12HasClearancePress2 => AreValvesOpen(44, 46, 49, 54) && AreValvesClosed(10, 45, 47, 48, 50, 55, 56, 57);
|
||||
protected bool P12HasClearanceTanksB => AreValvesOpen(44, 10) && AreValvesClosed(9, 45, 46);
|
||||
|
||||
public MotorState P12 {
|
||||
@@ -287,8 +287,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
}
|
||||
|
||||
public bool P3HasClearance => FillLevelT3 != FillState.Empty && (
|
||||
(P3HasClearancePress1 && FillLevelPress1 != FillState.Full) ||
|
||||
(P3HasClearancePress2 && FillLevelPress2 != FillState.Full) ||
|
||||
(P3HasClearancePress1 && Press1HasClerance) ||
|
||||
(P3HasClearancePress2 && Press2HasClerance) ||
|
||||
(HasClearanceTank1(false, P3HasClearanceTanksB) && FillLevelT1 != FillState.Full) ||
|
||||
(HasClearanceTank2(false, P3HasClearanceTanksB) && FillLevelT2 != FillState.Full) ||
|
||||
(HasClearanceTank3(false, P3HasClearanceTanksB) && FillLevelT3 != FillState.Full) ||
|
||||
@@ -299,8 +299,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
(HasClearanceTank8(false, P3HasClearanceTanksB) && FillLevelT8 != FillState.Full) ||
|
||||
(HasClearanceTank9(false, P3HasClearanceTanksB) && FillLevelT9 != FillState.Full) ||
|
||||
false);
|
||||
protected bool P3HasClearancePress1 => AreValvesOpen(45, 46, 49, 50) && AreValvesClosed(10, 44, 47, 48, 54);
|
||||
protected bool P3HasClearancePress2 => AreValvesOpen(45, 46, 49, 54) && AreValvesClosed(10, 44, 47, 48, 50);
|
||||
protected bool P3HasClearancePress1 => AreValvesOpen(45, 46, 49, 50) && AreValvesClosed(10, 44, 47, 48, 51, 52, 53, 54);
|
||||
protected bool P3HasClearancePress2 => AreValvesOpen(45, 46, 49, 54) && AreValvesClosed(10, 44, 47, 48, 50, 55, 56, 57);
|
||||
protected bool P3HasClearanceTanksB => AreValvesOpen(45, 10) && AreValvesClosed(9, 44, 46);
|
||||
|
||||
public MotorState P3 {
|
||||
@@ -309,8 +309,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
}
|
||||
|
||||
public bool P4HasClearance => FillLevelT4 != FillState.Empty && (
|
||||
(P4HasClearancePress1 && FillLevelPress1 != FillState.Full) ||
|
||||
(P4HasClearancePress2 && FillLevelPress2 != FillState.Full) ||
|
||||
(P4HasClearancePress1 && Press1HasClerance) ||
|
||||
(P4HasClearancePress2 && Press2HasClerance) ||
|
||||
(HasClearanceTank1(false, P4HasClearanceTanksB) && FillLevelT1 != FillState.Full) ||
|
||||
(HasClearanceTank2(false, P4HasClearanceTanksB) && FillLevelT2 != FillState.Full) ||
|
||||
(HasClearanceTank3(false, P4HasClearanceTanksB) && FillLevelT3 != FillState.Full) ||
|
||||
@@ -321,8 +321,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
(HasClearanceTank8(false, P4HasClearanceTanksB) && FillLevelT8 != FillState.Full) ||
|
||||
(HasClearanceTank9(false, P4HasClearanceTanksB) && FillLevelT9 != FillState.Full) ||
|
||||
false);
|
||||
protected bool P4HasClearancePress1 => AreValvesOpen(47, 49, 50) && AreValvesClosed(46, 48, 54);
|
||||
protected bool P4HasClearancePress2 => AreValvesOpen(47, 49, 54) && AreValvesClosed(46, 48, 50);
|
||||
protected bool P4HasClearancePress1 => AreValvesOpen(47, 49, 50) && AreValvesClosed(46, 48, 51, 52, 53, 54);
|
||||
protected bool P4HasClearancePress2 => AreValvesOpen(47, 49, 54) && AreValvesClosed(46, 48, 50, 55, 56, 57);
|
||||
protected bool P4HasClearanceTanksB => AreValvesOpen(47, 46, 10) && AreValvesClosed(9, 44, 45, 48, 49);
|
||||
|
||||
public MotorState P4 {
|
||||
@@ -331,8 +331,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
}
|
||||
|
||||
public bool P5HasClearance => FillLevelT5 != FillState.Empty && (
|
||||
(P5HasClearancePress1 && FillLevelPress1 != FillState.Full) ||
|
||||
(P5HasClearancePress2 && FillLevelPress2 != FillState.Full) ||
|
||||
(P5HasClearancePress1 && Press1HasClerance) ||
|
||||
(P5HasClearancePress2 && Press2HasClerance) ||
|
||||
(HasClearanceTank1(false, P5HasClearanceTanksB) && FillLevelT1 != FillState.Full) ||
|
||||
(HasClearanceTank2(false, P5HasClearanceTanksB) && FillLevelT2 != FillState.Full) ||
|
||||
(HasClearanceTank3(false, P5HasClearanceTanksB) && FillLevelT3 != FillState.Full) ||
|
||||
@@ -343,8 +343,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
(HasClearanceTank8(false, P5HasClearanceTanksB) && FillLevelT8 != FillState.Full) ||
|
||||
(HasClearanceTank9(false, P5HasClearanceTanksB) && FillLevelT9 != FillState.Full) ||
|
||||
false);
|
||||
protected bool P5HasClearancePress1 => AreValvesOpen(48, 49, 50) && AreValvesClosed(46, 47, 54);
|
||||
protected bool P5HasClearancePress2 => AreValvesOpen(48, 49, 54) && AreValvesClosed(46, 47, 50);
|
||||
protected bool P5HasClearancePress1 => AreValvesOpen(48, 49, 50) && AreValvesClosed(46, 47, 51, 52, 53, 54);
|
||||
protected bool P5HasClearancePress2 => AreValvesOpen(48, 49, 54) && AreValvesClosed(46, 47, 50, 55, 56, 57);
|
||||
protected bool P5HasClearanceTanksB => AreValvesOpen(48, 46, 10) && AreValvesClosed(9, 44, 45, 47, 49);
|
||||
|
||||
public MotorState P5 {
|
||||
@@ -353,8 +353,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
}
|
||||
|
||||
public bool P6HasClearance =>
|
||||
(IsValveOpen(53) && IsValveClosed(57) && FillLevelPress1 != FillState.Full) ||
|
||||
(IsValveOpen(57) && IsValveClosed(53) && FillLevelPress2 != FillState.Full);
|
||||
(AreValvesOpen(53) && AreValvesClosed(50, 51, 52, 57) && Press1HasClerance) ||
|
||||
(AreValvesOpen(57) && AreValvesClosed(53, 54, 55, 56) && Press2HasClerance);
|
||||
|
||||
public MotorState P6 {
|
||||
get => Actuators.P6;
|
||||
|
||||
@@ -5,7 +5,10 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
|
||||
public record struct SensorStates(
|
||||
long PressureSensors,
|
||||
(FillState MW1, FillState MW2, FillState Press1, FillState Press2) FillingLevels,
|
||||
FillState FillingLevelMW1,
|
||||
FillState FillingLevelMW2,
|
||||
bool ClearancePress1,
|
||||
bool ClearancePress2,
|
||||
int TroughSelector,
|
||||
double GradationOe,
|
||||
FillState[] FillingLevelTanks,
|
||||
@@ -109,8 +112,8 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
|
||||
var mw1 = Int3ToFillState((f1 ) & 0x7); // 111 011 001 000
|
||||
var mw2 = Int3ToFillState((f1 >> 3) & 0x7); // 111 011 001 000
|
||||
var p1 = Int1ToFillState((f1 >> 6) & 0x1); // 1 0
|
||||
var p2 = Int1ToFillState((f1 >> 7) & 0x1); // 1 0
|
||||
var p1 = ((f1 >> 6) & 0x1) == 0; // 1 0
|
||||
var p2 = ((f1 >> 7) & 0x1) == 0; // 1 0
|
||||
var wp = ((f1 >> 8) & 0x3); // 10 01
|
||||
|
||||
// Masseligerät : 4mA => 50 Oe
|
||||
@@ -137,7 +140,7 @@ namespace PamhagenSysCtrl.Helpers {
|
||||
var t9 = Int1ToFillState((f2 >> 13) & 0x1); // 1 0
|
||||
var q1 = Int1ToPumpState((f2 >> 15) & 0x1); // 1 0
|
||||
|
||||
return new SensorStates(pressure, (mw1, mw2, p1, p2), wp == 3 ? -1 : wp == 1 ? 2 : wp == 2 ? 1 : 0, oe, [t1, t2, t3, t4, t5, t6, t7, t8, t9], q1);
|
||||
return new SensorStates(pressure, mw1, mw2, p1, p2, wp == 3 ? -1 : wp == 1 ? 2 : wp == 2 ? 1 : 0, oe, [t1, t2, t3, t4, t5, t6, t7, t8, t9], q1);
|
||||
}
|
||||
|
||||
protected async Task<(ushort RW000, ushort RW001, ushort RW002, ushort RW003, ushort RW004, ushort RW005, ushort RW006)> ReadOutputRegisters() {
|
||||
|
||||
Reference in New Issue
Block a user