Files
infineon_cs_hmi/uniper_hmi/UniperHMI/Common/PackMLControlVm.cs

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();
}
}