diff --git a/PamhagenSysCtrl/Helpers/PamhagenPlant.cs b/PamhagenSysCtrl/Helpers/PamhagenPlant.cs index 2f93968..25b5636 100644 --- a/PamhagenSysCtrl/Helpers/PamhagenPlant.cs +++ b/PamhagenSysCtrl/Helpers/PamhagenPlant.cs @@ -41,8 +41,8 @@ namespace PamhagenSysCtrl.Helpers { public double GradationOe => Sensors.GradationOe; public MotorState PresseQuerSchnecke => Sensors.PresseQuerSchnecke; - public bool WantA1Selected => Actuators.TroughSelector; - public bool WantA2Selected => !Actuators.TroughSelector; + public bool WantA1Selected => Actuators.GetV(58); + public bool WantA2Selected => !Actuators.GetV(58); public bool IsTroughAugerActive => Actuators.TroughAuger; public bool IsReblerActive => Actuators.Rebler; @@ -159,12 +159,12 @@ namespace PamhagenSysCtrl.Helpers { } public void SelectA1() { - Actuators.TroughSelector = true; + Actuators.SetV(58, true); //if (IsReblerActive) Actuators.StirrerA1 = true; } public void SelectA2() { - Actuators.TroughSelector = false; + Actuators.SetV(58, false); //if (IsReblerActive) Actuators.StirrerA2 = true; } diff --git a/PamhagenSysCtrl/Helpers/PamhagenPlc.cs b/PamhagenSysCtrl/Helpers/PamhagenPlc.cs index 76e73c0..299bed4 100644 --- a/PamhagenSysCtrl/Helpers/PamhagenPlc.cs +++ b/PamhagenSysCtrl/Helpers/PamhagenPlc.cs @@ -11,13 +11,13 @@ namespace PamhagenSysCtrl.Helpers { FillState[] FillingLevelTanks, MotorState PresseQuerSchnecke ) { - public readonly bool GetDS(int n) => (PressureSensors & (1 << (n - 1))) != 0; + public readonly bool GetDS(int n) => (PressureSensors & (1L << (n - 1))) != 0; } public record struct ActuatorStates( long Valves, MotorState MP1, MotorState MP2, MotorState P12, MotorState P3, MotorState P4, MotorState P5, MotorState P6, - bool TroughAuger, bool Rebler, bool TroughSelector, bool StirrerA1, bool StirrerA2, bool Belt, bool Auger1, bool Auger2, bool GradationPump + bool TroughAuger, bool Rebler, bool StirrerA1, bool StirrerA2, bool Belt, bool Auger1, bool Auger2, bool GradationPump ) { public readonly bool GetV(int n) => (Valves & (1L << (n - 1))) != 0; public void SetV(int n, bool val) { @@ -98,6 +98,7 @@ namespace PamhagenSysCtrl.Helpers { var (r1, r2, r3, r4, f1, v, f2) = await ReadInputRegisters(); long pressure = (long)r1 | ((long)r2 << 16) | ((long)r3 << 32) | ((long)r4 << 48); + pressure = (pressure & 0x01FFFFFFFFFFFFFF) | ((pressure & 0x0600000000000000) << 1); var a1 = Int3ToFillState((f1 ) & 0x7); // 111 011 001 000 var a2 = Int3ToFillState((f1 >> 3) & 0x7); // 111 011 001 000 @@ -164,17 +165,17 @@ namespace PamhagenSysCtrl.Helpers { var m1 = (s1 & 0x01) != 0; var m2 = (s1 & 0x02) != 0; - var m3 = (s1 & 0x04) != 0; - var m4 = (s1 & 0x08) != 0; - var m5 = (s1 & 0x10) != 0; - var m6 = (s1 & 0x20) != 0; - var m7 = (s1 & 0x40) != 0; - var m8 = (s1 & 0x80) != 0; + var m3 = (s1 & 0x08) != 0; + var m4 = (s1 & 0x10) != 0; + var m5 = (s1 & 0x20) != 0; + var m6 = (s1 & 0x40) != 0; + var m7 = (s1 & 0x80) != 0; - var m9 = (s2 & 0x4) != 0; - var state = new ActuatorStates(valves, mp1, mp2, p12, p3, p4, p5, p6, m1, m2, m3, m4, m5, m6, m7, m8, m9); - state.SetV(59, (s2 & 0x1) != 0); - state.SetV(60, (s2 & 0x2) != 0); + var m8 = (s2 & 0x04) != 0; + var state = new ActuatorStates(valves, mp1, mp2, p12, p3, p4, p5, p6, m1, m2, m3, m4, m5, m6, m7, m8); + state.SetV(58, (s1 & 0x04) != 0); + state.SetV(59, (s2 & 0x01) != 0); + state.SetV(60, (s2 & 0x02) != 0); return state; } @@ -183,7 +184,7 @@ namespace PamhagenSysCtrl.Helpers { var v1 = (ushort)((state.Valves ) & 0xFFFF); var v2 = (ushort)((state.Valves >> 16) & 0xFFFF); var v3 = (ushort)((state.Valves >> 32) & 0xFFFF); - var v4 = (ushort)((state.Valves >> 48) & 0xFFFF); + var v4 = (ushort)((state.Valves >> 48) & 0x01FF); int pumps = (state.MP1 == MotorState.Backward ? 0x001 : 0x000) | @@ -199,7 +200,7 @@ namespace PamhagenSysCtrl.Helpers { int devices = (state.TroughAuger ? 0x01 : 0x00) | (state.Rebler ? 0x02 : 0x00) | - (state.TroughSelector ? 0x04 : 0x00) | + (state.GetV(58) ? 0x04 : 0x00) | (state.StirrerA1 ? 0x08 : 0x00) | (state.StirrerA2 ? 0x10 : 0x00) | (state.Belt ? 0x20 : 0x00) | @@ -207,9 +208,9 @@ namespace PamhagenSysCtrl.Helpers { (state.Auger2 ? 0x80 : 0x00); int measuring = - (state.GetV(59) ? 0x1 : 0x0) | - (state.GetV(60) ? 0x2 : 0x0) | - (state.GradationPump ? 0x4 : 0x0); + (state.GetV(59) ? 0x01 : 0x00) | + (state.GetV(60) ? 0x02 : 0x00) | + (state.GradationPump ? 0x04 : 0x00); await WriteOutputRegisters(v1, v2, v3, v4, (ushort)pumps, (ushort)devices, (ushort)measuring); } diff --git a/PamhagenSysCtrl/Windows/MainWindow.xaml b/PamhagenSysCtrl/Windows/MainWindow.xaml index 57138c9..a6eefa7 100644 --- a/PamhagenSysCtrl/Windows/MainWindow.xaml +++ b/PamhagenSysCtrl/Windows/MainWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:PamhagenSysCtrl" mc:Ignorable="d" - Title="MainWindow" Height="450" Width="800"> + Title="MainWindow" Height="520" Width="800"> @@ -16,7 +16,7 @@ - +