371 lines
18 KiB
C#
371 lines
18 KiB
C#
using PamhagenSysCtrl.Helpers;
|
|
using PamhagenSysCtrl.Windows;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Media;
|
|
|
|
namespace PamhagenSysCtrl {
|
|
public partial class ManualControlWindow : Window {
|
|
|
|
public ManualControlWindow() {
|
|
InitializeComponent();
|
|
|
|
for (int i = 1; i <= 58; i++) {
|
|
var b = new Button() {
|
|
Content = $"V{i}",
|
|
Margin = new(10 + ((i - 1) / 10) * 50, 10 + ((i - 1) % 10) * 40, 10, 10),
|
|
BorderThickness = new(2),
|
|
FontWeight = FontWeights.Bold,
|
|
VerticalAlignment = VerticalAlignment.Top,
|
|
HorizontalAlignment = HorizontalAlignment.Left,
|
|
Height = 30,
|
|
Width = 40,
|
|
FontSize = 14,
|
|
};
|
|
var borderStyle = new Style(typeof(Border));
|
|
borderStyle.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(5)));
|
|
b.Resources.Add(typeof(Border), borderStyle);
|
|
b.Click += (sender, evt) => {
|
|
if (App.Plant == null || sender is not Button b) return;
|
|
var i = int.Parse($"{b.Content}"[1..]);
|
|
if (i == 58) {
|
|
if (App.Plant.State.MW1_WantSelected) {
|
|
App.Plant.SelectMW2();
|
|
} else {
|
|
App.Plant.SelectMW1();
|
|
}
|
|
} else if (i > 57) {
|
|
return;
|
|
} else if (App.Plant.State.Valve_WantOpen(i)) {
|
|
App.Plant.CloseV(i);
|
|
} else {
|
|
App.Plant.OpenV(i);
|
|
}
|
|
};
|
|
ValvePanel.Children.Add(b);
|
|
}
|
|
|
|
App.Plant?.Update += OnUpdate;
|
|
}
|
|
|
|
private void OnClosed(object sender, EventArgs evt) {
|
|
foreach (var win in Application.Current.Windows) {
|
|
if (win is PlantSchemeWindow w) {
|
|
w.Menu_Settings_ManualControl.IsChecked = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void OnUpdate(object? sender, PlantEventArgs evt) {
|
|
if (sender is not PamhagenPlant plant) return;
|
|
|
|
for (int i = 1; i <= 58; i++) {
|
|
var target = plant.State.Valve_WantClosed(i);
|
|
var actual = plant.State.Valve_IsClosed(i);
|
|
if (ValvePanel.Children[i - 1] is not Button b)
|
|
continue;
|
|
b.BorderBrush = target ? Brushes.DarkRed : Brushes.DarkGreen;
|
|
b.Foreground = target ? Brushes.DarkRed : Brushes.DarkGreen;
|
|
b.Background = actual ? Brushes.MistyRose : Brushes.MintCream;
|
|
}
|
|
|
|
ReblerButton.BorderBrush = plant.State.Rebler_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
ReblerButton.Foreground = plant.State.Rebler_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
ReblerButton.Background = plant.State.Rebler_IsActive ? Brushes.MintCream: Brushes.MistyRose;
|
|
|
|
TroughAugerButton.BorderBrush = plant.State.TroughAuger_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
TroughAugerButton.Foreground = plant.State.TroughAuger_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
TroughAugerButton.Background = plant.State.TroughAuger_IsActive ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
StirrerMW1Button.BorderBrush = plant.State.MW1_Stirrer_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
StirrerMW1Button.Foreground = plant.State.MW1_Stirrer_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
StirrerMW1Button.Background = plant.State.MW1_Stirrer_IsActive ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
StirrerMW2Button.BorderBrush = plant.State.MW2_Stirrer_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
StirrerMW2Button.Foreground = plant.State.MW2_Stirrer_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
StirrerMW2Button.Background = plant.State.MW2_Stirrer_IsActive ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
Auger1Button.BorderBrush = plant.State.Auger1_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
Auger1Button.Foreground = plant.State.Auger1_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
Auger1Button.Background = plant.State.Auger1_IsActive ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
Auger2Button.BorderBrush = plant.State.Auger2_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
Auger2Button.Foreground = plant.State.Auger2_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
Auger2Button.Background = plant.State.Auger2_IsActive ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
Auger3Button.BorderBrush = plant.State.Auger3_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
Auger3Button.Foreground = plant.State.Auger3_IsActive ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
Auger3Button.Background = plant.State.Auger3_IsActive ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
MP1BackwardButton.BorderBrush = plant.State.MP1_State == MotorState.Backward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP1BackwardButton.Foreground = plant.State.MP1_State == MotorState.Backward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP1BackwardButton.Background = plant.State.MP1_State == MotorState.Backward ? Brushes.MintCream : Brushes.WhiteSmoke;
|
|
MP1HaltButton.BorderBrush = plant.State.MP1_State == MotorState.Halt ? Brushes.DarkRed : Brushes.SlateGray;
|
|
MP1HaltButton.Foreground = plant.State.MP1_State == MotorState.Halt ? Brushes.DarkRed : Brushes.SlateGray;
|
|
MP1HaltButton.Background = plant.State.MP1_State == MotorState.Halt ? Brushes.MistyRose : Brushes.WhiteSmoke;
|
|
MP1ForwardButton.BorderBrush = plant.State.MP1_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP1ForwardButton.Foreground = plant.State.MP1_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP1ForwardButton.Background = plant.State.MP1_State == MotorState.Forward ? Brushes.MintCream: Brushes.WhiteSmoke;
|
|
|
|
MP2BackwardButton.BorderBrush = plant.State.MP2_State == MotorState.Backward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP2BackwardButton.Foreground = plant.State.MP2_State == MotorState.Backward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP2BackwardButton.Background = plant.State.MP2_State == MotorState.Backward ? Brushes.MintCream : Brushes.WhiteSmoke;
|
|
MP2HaltButton.BorderBrush = plant.State.MP2_State == MotorState.Halt ? Brushes.DarkRed : Brushes.SlateGray;
|
|
MP2HaltButton.Foreground = plant.State.MP2_State == MotorState.Halt ? Brushes.DarkRed : Brushes.SlateGray;
|
|
MP2HaltButton.Background = plant.State.MP2_State == MotorState.Halt ? Brushes.MistyRose : Brushes.WhiteSmoke;
|
|
MP2ForwardButton.BorderBrush = plant.State.MP2_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP2ForwardButton.Foreground = plant.State.MP2_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.SlateGray;
|
|
MP2ForwardButton.Background = plant.State.MP2_State == MotorState.Forward ? Brushes.MintCream : Brushes.WhiteSmoke;
|
|
|
|
P12Button.BorderBrush = plant.State.P12_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P12Button.Foreground = plant.State.P12_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P12Button.Background = plant.State.P12_State == MotorState.Forward ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
P3Button.BorderBrush = plant.State.P3_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P3Button.Foreground = plant.State.P3_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P3Button.Background = plant.State.P3_State == MotorState.Forward ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
P4Button.BorderBrush = plant.State.P4_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P4Button.Foreground = plant.State.P4_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P4Button.Background = plant.State.P4_State == MotorState.Forward ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
P5Button.BorderBrush = plant.State.P5_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P5Button.Foreground = plant.State.P5_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P5Button.Background = plant.State.P5_State == MotorState.Forward ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
P6Button.BorderBrush = plant.State.P6_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P6Button.Foreground = plant.State.P6_State == MotorState.Forward ? Brushes.DarkGreen : Brushes.DarkRed;
|
|
P6Button.Background = plant.State.P6_State == MotorState.Forward ? Brushes.MintCream : Brushes.MistyRose;
|
|
|
|
Status.Text = $"""
|
|
Presse Querschnecke: {plant.State.PressCrossAuger_State}
|
|
Füllstände:
|
|
Maischewanne 1: {plant.State.MW2_FillLevel} (ausgewählt: {plant.State.MW1_WantSelected}, Status: {plant.State.MW1_IsSelected})
|
|
Maischewanne 2: {plant.State.MW2_FillLevel} (ausgewählt: {plant.State.MW2_WantSelected}, Status: {plant.State.MW2_IsSelected})
|
|
Presse 1: {plant.State.Press1_HasClearance}
|
|
Presse 2: {plant.State.Press2_HasClearance}
|
|
Tank 1: {plant.State.T1_FillLevel}
|
|
Tank 2: {plant.State.T2_FillLevel}
|
|
Tank 3: {plant.State.T3_FillLevel}
|
|
Tank 4: {plant.State.T4_FillLevel}
|
|
Tank 5: {plant.State.T5_FillLevel}
|
|
Tank 6: {plant.State.T6_FillLevel}
|
|
Tank 7: {plant.State.T7_FillLevel}
|
|
Tank 8: {plant.State.T8_FillLevel}
|
|
Tank 9: {plant.State.T9_FillLevel}
|
|
""";
|
|
}
|
|
|
|
private void TroughAugerButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.TroughAuger_IsActive) {
|
|
App.Plant.StopTroughAuger();
|
|
} else {
|
|
App.Plant.StartTroughAuger();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void ReblerButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.Rebler_IsActive) {
|
|
App.Plant.StopRebler();
|
|
} else {
|
|
App.Plant.StartRebler();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void StirrerMW1Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.MW1_Stirrer_IsActive) {
|
|
App.Plant.StopStirrerMW1();
|
|
} else {
|
|
App.Plant.StartStirrerMW1();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void StirrerMW2Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.MW2_Stirrer_IsActive) {
|
|
App.Plant.StopStirrerMW2();
|
|
} else {
|
|
App.Plant.StartStirrerMW2();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void Auger1Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.Auger1_IsActive) {
|
|
App.Plant.StopAuger1();
|
|
} else {
|
|
App.Plant.StartAuger1();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void Auger2Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.Auger2_IsActive) {
|
|
App.Plant.StopAuger2();
|
|
} else {
|
|
App.Plant.StartAuger2();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void Auger3Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.Auger3_IsActive) {
|
|
App.Plant.StopAuger3();
|
|
} else {
|
|
App.Plant.StartAuger3();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void MP1BackwardButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
App.Plant.StartMP1Backward();
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void MP1HaltButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
App.Plant.StopMP1();
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void MP1ForwardButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
App.Plant.StartMP1Forward();
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
|
|
private void MP2BackwardButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
App.Plant.StartMP2Backward();
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void MP2HaltButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
App.Plant.StopMP2();
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void MP2ForwardButton_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
App.Plant.StartMP2Forward();
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void P12Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.P12_IsActive) {
|
|
App.Plant.DisableP12();
|
|
} else {
|
|
App.Plant.EnableP12();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void P3Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.P3_IsActive) {
|
|
App.Plant.DisableP3();
|
|
} else {
|
|
App.Plant.EnableP3();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void P4Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.P4_IsActive) {
|
|
App.Plant.DisableP4();
|
|
} else {
|
|
App.Plant.EnableP4();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void P5Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.P5_IsActive) {
|
|
App.Plant.DisableP5();
|
|
} else {
|
|
App.Plant.EnableP5();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
private void P6Button_Click(object? sender, RoutedEventArgs? evt) {
|
|
if (App.Plant == null) return;
|
|
try {
|
|
if (App.Plant.State.P6_IsActive) {
|
|
App.Plant.DisableP6();
|
|
} else {
|
|
App.Plant.EnableP6();
|
|
}
|
|
} catch (NoClearanceException exc) {
|
|
MessageBox.Show($"{exc.Message}", "Keine Freigabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
}
|
|
}
|