216 lines
5.3 KiB
C#
216 lines
5.3 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using TwinCAT.TypeSystem;
|
|
using Heisig.HMI.AdsManager;
|
|
using HMIToolkit;
|
|
using InfineonHMI.Common;
|
|
|
|
namespace Common;
|
|
|
|
public sealed partial class PackMLControlVM : ObservableValidator, IDisposable
|
|
{
|
|
|
|
private IAdsManager _adsManager;
|
|
private readonly string _variableName;
|
|
|
|
[ObservableProperty] private string? sTitle;
|
|
|
|
[ObservableProperty] private string? sCurrentMode;
|
|
|
|
[ObservableProperty] private string? sCurrentState;
|
|
|
|
[ObservableProperty] private HMIControlButtonVM? prodModeButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? manualModeButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? clearButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? resetButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? startButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? abortButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? holdButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? stopButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? suspendButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? unholdButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? unsuspendButtonVm;
|
|
[ObservableProperty] private HMIControlButtonVM? completeButtonVm;
|
|
|
|
[ObservableProperty] private bool canUserInteract;
|
|
|
|
public PackMLControlVM()
|
|
{
|
|
SCurrentMode = "Modus: ";
|
|
SCurrentState = "Aktueller Zustand: ";
|
|
STitle = "Betriebsart";
|
|
ProdModeButtonVm = new();
|
|
ManualModeButtonVm = new();
|
|
ClearButtonVm= new();
|
|
ResetButtonVm= new();
|
|
StartButtonVm = new();
|
|
AbortButtonVm = new();
|
|
HoldButtonVm = new();
|
|
StopButtonVm = new();
|
|
SuspendButtonVm = new();
|
|
UnholdButtonVm = new();
|
|
UnsuspendButtonVm = new();
|
|
CompleteButtonVm = new();
|
|
|
|
var currentUser = Users.getCurrentUser();
|
|
canUserInteract = currentUser.UserLevel > 50;
|
|
}
|
|
|
|
public PackMLControlVM(IAdsManager adsManager, string variableName)
|
|
{
|
|
|
|
_adsManager = adsManager;
|
|
_variableName = variableName;
|
|
STitle = "Betriebsart";
|
|
|
|
SCurrentMode = "Modus: ";
|
|
SCurrentState = "Aktueller Zustand: ";
|
|
|
|
ProdModeButtonVm = new(_adsManager, _variableName + ".stBtnProdMode");
|
|
ManualModeButtonVm = new(_adsManager, _variableName + ".stBtnManualMode");
|
|
ClearButtonVm = new(_adsManager, _variableName + ".stBtnClear");
|
|
ResetButtonVm = new(_adsManager, _variableName + ".stBtnReset");
|
|
StartButtonVm = new(_adsManager, _variableName + ".stBtnStart");
|
|
AbortButtonVm = new(_adsManager, _variableName + ".stBtnAbort");
|
|
HoldButtonVm = new(_adsManager, _variableName + ".stBtnHold");
|
|
StopButtonVm = new(_adsManager, _variableName + ".stBtnStop");
|
|
SuspendButtonVm = new(_adsManager, _variableName + ".stBtnSuspend");
|
|
UnholdButtonVm = new(_adsManager, _variableName + ".stBtnUnhold");
|
|
UnsuspendButtonVm = new(_adsManager, _variableName + ".stBtnUnsuspend");
|
|
CompleteButtonVm = new(_adsManager, _variableName + ".stBtnComplete");
|
|
|
|
_adsManager.Register(_variableName + ".eCurrentState", StateChanged);
|
|
_adsManager.Register(_variableName + ".eCurrentMode", ModeChanged);
|
|
|
|
var currentUser = Users.getCurrentUser();
|
|
canUserInteract = currentUser.UserLevel > 50;
|
|
}
|
|
|
|
private void StateChanged(object? sender, ValueChangedEventArgs e)
|
|
{
|
|
var state = (int)e.Value;
|
|
var curState = "Aktueller Status: ";
|
|
switch (state)
|
|
{
|
|
case 0:
|
|
curState += "Undefined";
|
|
break;
|
|
case 1:
|
|
curState += "Clearing";
|
|
break;
|
|
case 2:
|
|
curState += "Stopped";
|
|
break;
|
|
case 3:
|
|
curState += "Starting";
|
|
break;
|
|
case 4:
|
|
curState += "Idle";
|
|
break;
|
|
case 5:
|
|
curState += "Suspended";
|
|
break;
|
|
case 6:
|
|
curState += "Execute";
|
|
break;
|
|
case 7:
|
|
curState += "Stopping";
|
|
break;
|
|
case 8:
|
|
curState += "Aborting";
|
|
break;
|
|
case 9:
|
|
curState += "Aborted";
|
|
break;
|
|
case 10:
|
|
curState += "Holding";
|
|
break;
|
|
case 11:
|
|
curState += "Held";
|
|
break;
|
|
case 12:
|
|
curState += "Unholding";
|
|
break;
|
|
case 13:
|
|
curState += "Suspending";
|
|
break;
|
|
case 14:
|
|
curState += "Unsuspending";
|
|
break;
|
|
case 15:
|
|
curState += "Resetting";
|
|
break;
|
|
case 16:
|
|
curState += "Completing";
|
|
break;
|
|
case 17:
|
|
curState += "Completed";
|
|
break;
|
|
default:
|
|
curState += "Undefined";
|
|
break;
|
|
}
|
|
SCurrentState = curState;
|
|
}
|
|
|
|
private void ModeChanged(object? sender, ValueChangedEventArgs e)
|
|
{
|
|
var curMode = "Aktueller Modus: ";
|
|
var mode = (int)e.Value;
|
|
|
|
switch (mode)
|
|
{
|
|
case 0:
|
|
curMode += "Invalid";
|
|
break;
|
|
case 1:
|
|
curMode += "Production";
|
|
break;
|
|
case 2:
|
|
curMode += "Maintenance";
|
|
break;
|
|
case 3:
|
|
curMode += "Manual";
|
|
break;
|
|
case 4:
|
|
curMode += "change_over";
|
|
break;
|
|
case 5:
|
|
curMode += "clean";
|
|
break;
|
|
case 6:
|
|
curMode += "set up";
|
|
break;
|
|
case 7:
|
|
curMode += "empty out";
|
|
break;
|
|
default:
|
|
curMode += "Invalid";
|
|
break;
|
|
|
|
}
|
|
|
|
SCurrentMode = curMode;
|
|
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
ProdModeButtonVm?.Dispose();
|
|
ManualModeButtonVm?.Dispose();
|
|
ClearButtonVm?.Dispose();
|
|
ResetButtonVm?.Dispose();
|
|
StartButtonVm?.Dispose();
|
|
AbortButtonVm?.Dispose();
|
|
HoldButtonVm?.Dispose();
|
|
StopButtonVm?.Dispose();
|
|
SuspendButtonVm?.Dispose();
|
|
UnholdButtonVm?.Dispose();
|
|
UnsuspendButtonVm?.Dispose();
|
|
CompleteButtonVm?.Dispose();
|
|
}
|
|
|
|
|
|
}
|