From 28aaa6b1f3be90bbc7606fced679eb608c65c643 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Fri, 7 Aug 2026 16:03:56 +0200 Subject: [PATCH] Use ManualControlMode to disable automatic behaviour --- PamhagenSysCtrl/Helpers/PamhagenPlant.cs | 59 ++++++++++++------------ 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/PamhagenSysCtrl/Helpers/PamhagenPlant.cs b/PamhagenSysCtrl/Helpers/PamhagenPlant.cs index d270f04..c843434 100644 --- a/PamhagenSysCtrl/Helpers/PamhagenPlant.cs +++ b/PamhagenSysCtrl/Helpers/PamhagenPlant.cs @@ -83,26 +83,29 @@ namespace PamhagenSysCtrl.Helpers { protected static void OnUpdate(object? sender, PlantEventArgs evt) { if (sender is not PamhagenPlant p) return; - if (p.IsPresseQuerSchneckeActive && !p.IsAuger2Active) p.StartAuger2(); - if (p.IsReblerActive && !p.IsAuger1Active) p.StartAuger1(); - if (p.IsAuger1Active && !p.IsAuger2Active) p.StartAuger2(); - if (p.IsAuger2Active && !p.IsAuger3Active) p.StartAuger3(); - - if (p.IsTroughAugerActive && (!p.IsReblerActive || (p.IsMWSelected && p.FillLevelMW1 == FillState.Full) || (p.IsMW2Selected && p.FillLevelMW2 == FillState.Full))) - p.StopTroughAuger(); + if (!p.ManualControlMode) { + if (p.IsPresseQuerSchneckeActive && !p.IsAuger2Active) p.StartAuger2(); + if (p.IsReblerActive && !p.IsAuger1Active) p.StartAuger1(); + if (p.IsAuger1Active && !p.IsAuger2Active) p.StartAuger2(); + if (p.IsAuger2Active && !p.IsAuger3Active) p.StartAuger3(); + if (p.IsTroughAugerActive && (!p.IsReblerActive || (p.IsMWSelected && p.FillLevelMW1 == FillState.Full) || (p.IsMW2Selected && p.FillLevelMW2 == FillState.Full))) + p.StopTroughAuger(); + } if (p.IsMP1Active && !p.MP1HasClearance) p.StopMP1(); if (p.IsMP2Active && !p.MP2HasClearance) p.StopMP2(); - if (p.MP1 == MotorState.Forward && p.FillLevelMW1 >= FillState.Half && !p.IsStirrerMW1Active) { - p.StartStirrerMW1(); - } else if (p.IsStirrerMW1Active && (!p.IsMP1Active || p.FillLevelMW1 < FillState.Half)) { - p.StopStirrerMW1(); - } - if (p.MP2 == MotorState.Forward && p.FillLevelMW2 >= FillState.Half && !p.IsStirrerMW2Active) { - p.StartStirrerMW2(); - } else if (p.IsStirrerMW2Active && (!p.IsMP2Active || p.FillLevelMW2 < FillState.Half)) { - p.StopStirrerMW2(); + if (!p.ManualControlMode) { + if (p.MP1 == MotorState.Forward && p.FillLevelMW1 >= FillState.Half && !p.IsStirrerMW1Active) { + p.StartStirrerMW1(); + } else if (p.IsStirrerMW1Active && (!p.IsMP1Active || p.FillLevelMW1 < FillState.Half)) { + p.StopStirrerMW1(); + } + if (p.MP2 == MotorState.Forward && p.FillLevelMW2 >= FillState.Half && !p.IsStirrerMW2Active) { + p.StartStirrerMW2(); + } else if (p.IsStirrerMW2Active && (!p.IsMP2Active || p.FillLevelMW2 < FillState.Half)) { + p.StopStirrerMW2(); + } } if (p.IsP12Active && !p.P12HasClearance) p.StopP12(); @@ -398,18 +401,16 @@ namespace PamhagenSysCtrl.Helpers { public void SelectMW1() { Actuators.SetV(58, true); - //if (IsReblerActive) Actuators.StirrerMW1 = true; ActuatorsChanged = true; } public void SelectMW2() { Actuators.SetV(58, false); - //if (IsReblerActive) Actuators.StirrerMW2 = true; ActuatorsChanged = true; } public void StartTroughAuger() { - if (!IsReblerActive || (IsMWSelected && FillLevelMW1 == FillState.Full) || (IsMW2Selected && FillLevelMW2 == FillState.Full)) + if (!ManualControlMode && (!IsReblerActive || (IsMWSelected && FillLevelMW1 == FillState.Full) || (IsMW2Selected && FillLevelMW2 == FillState.Full))) throw new NoClearanceException("Schnecke Auffangwanne hat keine Freigabe"); Actuators.TroughAuger = true; ActuatorsChanged = true; @@ -422,12 +423,12 @@ namespace PamhagenSysCtrl.Helpers { public void StartRebler() { Actuators.Rebler = true; - StartAuger1(); + if (!ManualControlMode) StartAuger1(); ActuatorsChanged = true; } public void StopRebler() { - StopTroughAuger(); + if (!ManualControlMode) StopTroughAuger(); Actuators.Rebler = false; ActuatorsChanged = true; } @@ -454,25 +455,25 @@ namespace PamhagenSysCtrl.Helpers { public void StartAuger1() { Actuators.Auger1 = true; - StartAuger2(); + if (!ManualControlMode) StartAuger2(); ActuatorsChanged = true; } public void StopAuger1() { - if (IsReblerActive) throw new NoClearanceException("Rebler aktiv"); + if (!ManualControlMode && IsReblerActive) throw new NoClearanceException("Rebler aktiv"); Actuators.Auger1 = false; ActuatorsChanged = true; } public void StartAuger2() { Actuators.Auger2 = true; - StartAuger3(); + if (!ManualControlMode) StartAuger3(); ActuatorsChanged = true; } public void StopAuger2() { - if (IsPresseQuerSchneckeActive) throw new NoClearanceException("Presse-Querschnecke aktiv"); - if (IsAuger1Active) throw new NoClearanceException("Förderschnecke 1 aktiv"); + if (!ManualControlMode && IsPresseQuerSchneckeActive) throw new NoClearanceException("Presse-Querschnecke aktiv"); + if (!ManualControlMode && IsAuger1Active) throw new NoClearanceException("Förderschnecke 1 aktiv"); Actuators.Auger2 = false; ActuatorsChanged = true; } @@ -483,7 +484,7 @@ namespace PamhagenSysCtrl.Helpers { } public void StopAuger3() { - if (IsAuger2Active) throw new NoClearanceException("Förderschnecke 2 aktiv"); + if (!ManualControlMode && IsAuger2Active) throw new NoClearanceException("Förderschnecke 2 aktiv"); Actuators.Auger3 = false; ActuatorsChanged = true; } @@ -515,7 +516,7 @@ namespace PamhagenSysCtrl.Helpers { public void StopMP1() { Actuators.MP1 = MotorState.Halt; - StopStirrerMW1(); + if (!ManualControlMode) StopStirrerMW1(); ActuatorsChanged = true; } @@ -536,7 +537,7 @@ namespace PamhagenSysCtrl.Helpers { public void StopMP2() { Actuators.MP2 = MotorState.Halt; - StopStirrerMW1(); + if (!ManualControlMode) StopStirrerMW1(); ActuatorsChanged = true; }