diff --git a/PamhagenSysCtrl/Helpers/PamhagenPlant.cs b/PamhagenSysCtrl/Helpers/PamhagenPlant.cs
index c843434..f1bd8cd 100644
--- a/PamhagenSysCtrl/Helpers/PamhagenPlant.cs
+++ b/PamhagenSysCtrl/Helpers/PamhagenPlant.cs
@@ -30,7 +30,7 @@ namespace PamhagenSysCtrl.Helpers {
public bool AreValvesClosed(params int[] ns) => ns.All(IsValveClosed) && ns.All(WantValveClosed);
public int TroughSelector => Sensors.TroughSelector;
- public bool IsMWSelected => Sensors.TroughSelector == 1;
+ public bool IsMW1Selected => Sensors.TroughSelector == 1;
public bool IsMW2Selected => Sensors.TroughSelector == 2;
public FillState FillLevelMW1 => Sensors.FillingLevelMW1;
public FillState FillLevelMW2 => Sensors.FillingLevelMW2;
@@ -54,6 +54,7 @@ namespace PamhagenSysCtrl.Helpers {
public bool WantMW2Selected => !Actuators.GetV(58);
public bool IsTroughAugerActive => Actuators.TroughAuger;
+ public bool TroughAugerHasClearance => IsReblerActive && !(IsMW1Selected && FillLevelMW1 == FillState.Full) && !(IsMW2Selected && FillLevelMW2 == FillState.Full);
public bool IsReblerActive => Actuators.Rebler;
public bool IsStirrerMW1Active => Actuators.StirrerMW1;
public bool IsStirrerMW2Active => Actuators.StirrerMW2;
@@ -88,7 +89,7 @@ namespace PamhagenSysCtrl.Helpers {
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)))
+ if (p.IsTroughAugerActive && !p.TroughAugerHasClearance)
p.StopTroughAuger();
}
@@ -410,7 +411,7 @@ namespace PamhagenSysCtrl.Helpers {
}
public void StartTroughAuger() {
- if (!ManualControlMode && (!IsReblerActive || (IsMWSelected && FillLevelMW1 == FillState.Full) || (IsMW2Selected && FillLevelMW2 == FillState.Full)))
+ if (!ManualControlMode && !TroughAugerHasClearance)
throw new NoClearanceException("Schnecke Auffangwanne hat keine Freigabe");
Actuators.TroughAuger = true;
ActuatorsChanged = true;
diff --git a/PamhagenSysCtrl/Windows/ManualControlWindow.xaml.cs b/PamhagenSysCtrl/Windows/ManualControlWindow.xaml.cs
index 0c98965..a000cc1 100644
--- a/PamhagenSysCtrl/Windows/ManualControlWindow.xaml.cs
+++ b/PamhagenSysCtrl/Windows/ManualControlWindow.xaml.cs
@@ -141,7 +141,7 @@ namespace PamhagenSysCtrl {
Gradation °Oe: {plant.GradationOe:N2}
Presse Querschnecke: {plant.PresseQuerSchnecke}
Füllstände:
- Maischewanne 1: {plant.FillLevelMW1} (ausgewählt: {plant.WantMW1Selected}, Status: {plant.IsMWSelected})
+ Maischewanne 1: {plant.FillLevelMW1} (ausgewählt: {plant.WantMW1Selected}, Status: {plant.IsMW1Selected})
Maischewanne 2: {plant.FillLevelMW2} (ausgewählt: {plant.WantMW2Selected}, Status: {plant.IsMW2Selected})
Presse 1: {plant.Press1HasClearance}
Presse 2: {plant.Press2HasClearance}
diff --git a/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml b/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml
index ef4c2c8..5016e44 100644
--- a/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml
+++ b/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml
@@ -58,91 +58,165 @@
MouseMove="SchemeCanvas_MouseMove" MouseLeftButtonDown="SchemeCanvas_MouseLeftButtonDown" MouseLeftButtonUp="SchemeCanvas_MouseLeftButtonUp" Grid.ColumnSpan="2" Margin="25,0,0,0">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml.cs b/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml.cs
index 250018c..e46076c 100644
--- a/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml.cs
+++ b/PamhagenSysCtrl/Windows/PlantSchemeWindow.xaml.cs
@@ -18,7 +18,7 @@ namespace PamhagenSysCtrl.Windows {
public Path? HoveringPath {
get {
- foreach (var b in FastSelectButtons.Where(b => b.Key.IsMouseOver)) {
+ foreach (var b in FastSelectPaths.Where(b => b.Key.IsMouseOver)) {
if (Graph.SelectedPaths.Any(p => p.Start == b.Value.Source && p.Hops.Last().Node == b.Value.Sink))
continue;
return Graph.GetFreePath([b.Value.Source, b.Value.Sink], true);
@@ -38,13 +38,13 @@ namespace PamhagenSysCtrl.Windows {
}
}
- protected Dictionary