Files
infineon_cs_hmi/uniper_hmi/UniperHMI/Pages/ViewModels/ReceipePageVM.cs

1117 lines
38 KiB
C#

using Common;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Heisig.HMI.AdsManager;
using InfineonHMI.Common;
using InfineonHMI.Model;
using Microsoft.Win32;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Printing;
using System.Runtime.InteropServices.JavaScript;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Input;
using System.Xml.Linq;
using TwinCAT.PlcOpen;
namespace InfineonHMI;
public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
{
#region Properties
private AdsManager _adsManager;
private int maxFlowNodes = 10;
private int maxTrayPositions = 20;
private int maxEtcherRobotPositions = 20;
private bool flowreceipeCollectionChanged = false;
private bool trayPositionsCollectionChanged = false;
private bool etcherRobotStepsCollectionChanged = false;
private void NewData(object? sender, PropertyChangedEventArgs e)
{
if (
CameraProgramsVm.IsChanged ||
ChucksVm.IsChanged ||
GripperVm.IsChanged ||
DiameterVm.IsChanged ||
ThicknessVm.IsChanged ||
RestingTimeHotplateVm.IsChanged ||
TargetTemperatureHotplateVm.IsChanged ||
RestingTimeCoolplateVm.IsChanged ||
TargetTemperatureCoolplateVm.IsChanged ||
PermissibleBeamParamDeviationsVm.IsChanged ||
TimeIntervallBeamCheckVm.IsChanged ||
RadialPosLowerWaterJetVm.IsChanged ||
ChuckRpmVm.IsChanged ||
HvmaxTestCurrentVm.IsChanged ||
Hvn2PrePurgeTimeVm.IsChanged ||
HvnumRetriesVm.IsChanged ||
HvpolarityVm.IsChanged ||
HvrampTimeVm.IsChanged ||
HvtestFrequencyVm.IsChanged ||
HvTestOkCurrentVm.IsChanged ||
HvTestOkVoltageVm.IsChanged ||
HvtestTemperatureVm.IsChanged ||
HvtestVoltageVm.IsChanged ||
HvtestPressureN2Vm.IsChanged ||
FlowStationsVm.IsChanged ||
FlowReceipe.IsChanged||
trayPositionsCollectionChanged ||
etcherRobotStepsCollectionChanged ||
flowreceipeCollectionChanged)
{
DataSendToPlc = false;
DataSaved = false;
}
}
[ObservableProperty]
private ObservableCollection<TrayPosition> trayPositions;
[ObservableProperty]
private ParamControlIntVm cameraProgramsVm = new();
[ObservableProperty]
private ParamControlIntVm chucksVm = new();
[ObservableProperty]
private ParamControlIntVm gripperVm = new();
[ObservableProperty]
private ParamControlFloatVm permissibleBeamParamDeviationsVm = new();
[ObservableProperty]
private ParamControlFloatVm diameterVm = new();
[ObservableProperty]
private ParamControlFloatVm thicknessVm = new();
[ObservableProperty]
private ParamControlFloatVm timeIntervallBeamCheckVm = new();
[ObservableProperty]
private ParamControlFloatVm restingTimeHotplateVm = new();
[ObservableProperty]
private ParamControlFloatVm targetTemperatureHotplateVm = new();
[ObservableProperty]
private ParamControlFloatVm restingTimeCoolplateVm = new();
[ObservableProperty]
private ParamControlFloatVm targetTemperatureCoolplateVm = new();
[ObservableProperty]
private ParamControlFloatVm hvtestVoltageVm = new();
[ObservableProperty]
private ParamControlFloatVm hvmaxTestCurrentVm = new();
[ObservableProperty]
private ParamControlFloatVm hvrampTimeVm = new();
[ObservableProperty]
private ParamControlFloatVm hvtestFrequencyVm = new();
[ObservableProperty]
private ParamControlIntVm hvpolarityVm = new();
[ObservableProperty]
private ParamControlFloatVm hvtestPressureN2Vm = new();
[ObservableProperty]
private ParamControlFloatVm hvn2PrePurgeTimeVm = new();
[ObservableProperty]
private ParamControlIntVm hvnumRetriesVm = new();
[ObservableProperty]
private ParamControlFloatVm hvtestTemperatureVm = new();
[ObservableProperty]
private ParamControlFloatVm hvTestOkVoltageVm = new();
[ObservableProperty]
private ParamControlFloatVm hvTestOkCurrentVm = new();
[ObservableProperty]
private ParamControlIntVm numberRobotPositionsVm = new();
[ObservableProperty]
private ParamControlFloatVm chuckRpmVm = new();
[ObservableProperty]
private ObservableCollection<EtcherRobotStepData> etcherRobotSteps;
[ObservableProperty]
private ParamControlFloatVm radialPosLowerWaterJetVm = new();
[ObservableProperty]
private ParamControlIntVm flowNodeCountVm = new();
[ObservableProperty]
private bool dataSaved;
[ObservableProperty]
private bool dataSendToPlc;
#endregion Properties
#region FlowReceipe
[ObservableProperty]
private FlowStationsViewModelBase flowStationsVm = new ();
[ObservableProperty] private FlowReceipe flowReceipe = new();
// [ObservableProperty] private ObservableCollection<FlowReceipeEntry> flowReceipeEntries;
[RelayCommand]
public void AddFlowReceipeEntry()
{
var nodeid = FlowReceipe.FlowReceipeEntries.Count;
FlowReceipe.FlowReceipeEntries.Add(new FlowReceipeEntry
{
NodeId = nodeid,
MaxRetries = 0,
NextNodeFail = -1,
NextNodeSuccess = -1,
NextNodeRetry = -1,
Priority = 100,
Station = FlowStationsVm.FlowStations[0]
});
if (FlowReceipe.FlowReceipeEntries.Count >= maxFlowNodes)
{
CanAddFlowReceipeEntry = false;
}
if (FlowReceipe.FlowReceipeEntries.Count > 0)
{
CanRemoveFlowReceipeEntry = true;
}
}
private void addFlowReceipeEntry(FlowReceipeEntry fre)
{
var nodeid = FlowReceipe.FlowReceipeEntries.Count;
FlowReceipe.FlowReceipeEntries.Add(new FlowReceipeEntry
{
NodeId = nodeid,
MaxRetries = fre.MaxRetries,
NextNodeFail = fre.NextNodeFail,
NextNodeSuccess = fre.NextNodeSuccess,
NextNodeRetry = fre.NextNodeRetry,
Priority = fre.Priority,
Station = new StationEntry(fre.Station.EStation, fre.Station.SName)
});
}
[RelayCommand]
public void RemoveFlowReceipeEntry()
{
FlowReceipe.FlowReceipeEntries.Remove(SelectedFlowReceipeEntry);
var receipes = new ObservableCollection<FlowReceipeEntry>(FlowReceipe.FlowReceipeEntries);
FlowReceipe.FlowReceipeEntries.Clear();
foreach (var receipe in receipes)
addFlowReceipeEntry(receipe);
if (FlowReceipe.FlowReceipeEntries.Count < maxFlowNodes)
{
CanAddFlowReceipeEntry = true;
}
if (FlowReceipe.FlowReceipeEntries.Count > 0)
{
CanRemoveFlowReceipeEntry = true;
}
else
{
CanRemoveFlowReceipeEntry = false;
}
}
[RelayCommand]
public void FlowReceipeEntryUp()
{
var selectedIndex = FlowReceipe.FlowReceipeEntries.IndexOf(SelectedFlowReceipeEntry);
if (selectedIndex == 0)
return;
FlowReceipe.FlowReceipeEntries.Move(selectedIndex, selectedIndex - 1);
var receipes = new ObservableCollection<FlowReceipeEntry>(FlowReceipe.FlowReceipeEntries);
FlowReceipe.FlowReceipeEntries.Clear();
foreach (var receipe in receipes)
addFlowReceipeEntry(receipe);
}
[RelayCommand]
public void FlowReceipeEntryDown()
{
var selectedIndex = FlowReceipe.FlowReceipeEntries.IndexOf(SelectedFlowReceipeEntry);
if (selectedIndex >= FlowReceipe.FlowReceipeEntries.Count)
return;
FlowReceipe.FlowReceipeEntries.Move(selectedIndex, selectedIndex + 1);
var receipes = new ObservableCollection<FlowReceipeEntry>(FlowReceipe.FlowReceipeEntries);
FlowReceipe.FlowReceipeEntries.Clear();
foreach (var receipe in receipes)
addFlowReceipeEntry(receipe);
}
[ObservableProperty] private bool canAddFlowReceipeEntry;
[ObservableProperty] private bool canRemoveFlowReceipeEntry;
[ObservableProperty] private FlowReceipeEntry selectedFlowReceipeEntry;
#endregion Flowreceipe
#region Trayposition
[ObservableProperty] private TrayPosition selectedTrayPosition;
[ObservableProperty] private bool canAddTrayPosition;
[ObservableProperty] private bool canRemoveTrayPosition;
[RelayCommand]
public void AddTrayPosition()
{
var posId = TrayPositions.Count;
TrayPositions.Add(new TrayPosition
{
PosId = posId,
PosX = 0.0f,
PosY = 0.0f,
});
if (TrayPositions.Count >= maxTrayPositions)
{
CanAddTrayPosition = false;
}
if (TrayPositions.Count > 0)
{
CanRemoveTrayPosition = true;
}
}
private void addTrayPosition(TrayPosition trayPos)
{
var posId = TrayPositions.Count;
TrayPositions.Add(new TrayPosition
{
PosId = posId,
PosX = trayPos.PosX,
PosY = trayPos.PosY
});
}
[RelayCommand]
public void RemoveTrayPosition()
{
TrayPositions.Remove(SelectedTrayPosition);
var positions = new ObservableCollection<TrayPosition>(TrayPositions);
TrayPositions.Clear();
foreach (var position in positions)
addTrayPosition(position);
if (TrayPositions.Count < maxTrayPositions)
{
CanAddTrayPosition = true;
}
if (TrayPositions.Count > 0)
{
CanRemoveTrayPosition = true;
}
else
{
CanRemoveTrayPosition = false;
}
}
[RelayCommand]
public void TrayPositionUp()
{
var selectedIndex = TrayPositions.IndexOf(SelectedTrayPosition);
if (selectedIndex == 0)
return;
TrayPositions.Move(selectedIndex, selectedIndex - 1);
var positions = new ObservableCollection<TrayPosition>(TrayPositions);
TrayPositions.Clear();
foreach (var pos in positions)
addTrayPosition(pos);
}
[RelayCommand]
public void TrayPositionDown()
{
var selectedIndex = TrayPositions.IndexOf(SelectedTrayPosition);
if (selectedIndex >= TrayPositions.Count)
return;
TrayPositions.Move(selectedIndex, selectedIndex + 1);
var positions = new ObservableCollection<TrayPosition>(TrayPositions);
TrayPositions.Clear();
foreach (var pos in positions)
addTrayPosition(pos);
}
#endregion Traypositions
#region EtcherRobotPositions
[ObservableProperty] private EtcherRobotStepData selectedEtchRobotStep;
[ObservableProperty] private bool canAddEtchRobotStep;
[ObservableProperty] private bool canRemoveEtchRobotStep;
[RelayCommand]
public void AddEtchRobotStep()
{
EtcherRobotSteps.Add(new EtcherRobotStepData()
{
PosX = 0.0f,
PosY = 0.0f,
PosZ = 0.0f,
MoveSpeed = 0.0f,
AngleAlpha = 0.0f,
WaterFromAbove = false,
WaterFromBelow = false,
Medium = 0,
Delay = 0.0f
});
if (EtcherRobotSteps.Count >= maxEtcherRobotPositions)
{
CanAddEtchRobotStep = false;
}
if (EtcherRobotSteps.Count > 0)
{
CanRemoveEtchRobotStep = true;
}
}
private void addEtchRobotStep(EtcherRobotStepData etchStep)
{
var posId = EtcherRobotSteps.Count;
EtcherRobotSteps.Add(new EtcherRobotStepData()
{
PosX = etchStep.PosX,
PosY = etchStep.PosY,
PosZ = etchStep.PosZ,
MoveSpeed = etchStep.MoveSpeed,
AngleAlpha = etchStep.AngleAlpha,
WaterFromAbove = etchStep.WaterFromAbove,
WaterFromBelow = etchStep.WaterFromBelow,
Medium = etchStep.Medium,
Delay = etchStep.Delay
});
}
[RelayCommand]
public void RemoveEtchRobotStep()
{
EtcherRobotSteps.Remove(SelectedEtchRobotStep);
var steps = new ObservableCollection<EtcherRobotStepData>(EtcherRobotSteps);
EtcherRobotSteps.Clear();
foreach (var step in steps)
addEtchRobotStep(step);
if (EtcherRobotSteps.Count < maxEtcherRobotPositions)
{
CanAddEtchRobotStep = true;
}
if (EtcherRobotSteps.Count > 0)
{
CanRemoveEtchRobotStep = true;
}
else
{
CanRemoveEtchRobotStep = false;
}
}
[RelayCommand]
public void EtchRobotStepUp()
{
var selectedIndex = EtcherRobotSteps.IndexOf(SelectedEtchRobotStep);
if (selectedIndex == 0)
return;
EtcherRobotSteps.Move(selectedIndex, selectedIndex - 1);
var steps = new ObservableCollection<EtcherRobotStepData>(EtcherRobotSteps);
EtcherRobotSteps.Clear();
foreach (var step in steps)
addEtchRobotStep(step);
}
[RelayCommand]
public void EtchRobotStepDown()
{
var selectedIndex = EtcherRobotSteps.IndexOf(SelectedEtchRobotStep);
if (selectedIndex >= EtcherRobotSteps.Count)
return;
EtcherRobotSteps.Move(selectedIndex, selectedIndex + 1);
var steps = new ObservableCollection<EtcherRobotStepData>(EtcherRobotSteps);
EtcherRobotSteps.Clear();
foreach (var step in steps)
addEtchRobotStep(step);
}
#endregion
#region Commands
private void AcceptChanges()
{
CameraProgramsVm.AcceptChanges();
ChucksVm.AcceptChanges();
GripperVm.AcceptChanges();
DiameterVm.AcceptChanges();
ThicknessVm.AcceptChanges();
RestingTimeHotplateVm.AcceptChanges();
TargetTemperatureHotplateVm.AcceptChanges();
RestingTimeCoolplateVm.AcceptChanges();
TargetTemperatureCoolplateVm.AcceptChanges();
PermissibleBeamParamDeviationsVm.AcceptChanges();
TimeIntervallBeamCheckVm.AcceptChanges();
RadialPosLowerWaterJetVm.AcceptChanges();
ChuckRpmVm.AcceptChanges();
HvmaxTestCurrentVm.AcceptChanges();
Hvn2PrePurgeTimeVm.AcceptChanges();
HvnumRetriesVm.AcceptChanges();
HvpolarityVm.AcceptChanges();
HvrampTimeVm.AcceptChanges();
HvtestFrequencyVm.AcceptChanges();
HvTestOkCurrentVm.AcceptChanges();
HvTestOkVoltageVm.AcceptChanges();
HvtestTemperatureVm.AcceptChanges();
HvtestVoltageVm.AcceptChanges();
HvtestPressureN2Vm.AcceptChanges();
FlowReceipe.AcceptChanges();
}
[RelayCommand]
public void DiscardChanges()
{
CameraProgramsVm.DiscardChanges();
ChucksVm.DiscardChanges();
GripperVm.DiscardChanges();
DiameterVm.DiscardChanges();
ThicknessVm.DiscardChanges();
RestingTimeHotplateVm.DiscardChanges();
TargetTemperatureHotplateVm.DiscardChanges();
RestingTimeCoolplateVm.DiscardChanges();
TargetTemperatureCoolplateVm.DiscardChanges();
PermissibleBeamParamDeviationsVm.DiscardChanges();
TimeIntervallBeamCheckVm.DiscardChanges();
RadialPosLowerWaterJetVm.DiscardChanges();
ChuckRpmVm.DiscardChanges();
HvmaxTestCurrentVm.DiscardChanges();
Hvn2PrePurgeTimeVm.DiscardChanges();
HvnumRetriesVm.DiscardChanges();
HvpolarityVm.DiscardChanges();
HvrampTimeVm.DiscardChanges();
HvtestFrequencyVm.DiscardChanges();
HvTestOkCurrentVm.DiscardChanges();
HvTestOkVoltageVm.DiscardChanges();
HvtestTemperatureVm.DiscardChanges();
HvtestVoltageVm.DiscardChanges();
HvtestPressureN2Vm.DiscardChanges();
FlowReceipe.DiscardChanges();
}
[RelayCommand]
public void WriteToPlc()
{
SendDataToPLC();
DataSendToPlc = true;
}
[RelayCommand]
public void LoadFromPlc()
{
ReadDataFromPLC();
DataSendToPlc = true;
}
[RelayCommand]
public void ReadReceipeFile()
{
var dlg = new OpenFileDialog();
if (dlg.ShowDialog() != true)
return;
var dto = new ReceipeDto();
dto.Read(dlg.FileName);
GetDto(dto);
DataSaved = true;
AcceptChanges();
}
[RelayCommand]
public void WriteReceipeFile()
{
var dlg = new SaveFileDialog();
if (dlg.ShowDialog() != true)
return;
var dto = SetDto();
dto.Write(dlg.FileName);
DataSaved = true;
AcceptChanges();
}
#endregion Commands
#region ctor
public ReceipePageVM()
{
// Just for Designer
maxFlowNodes = 10;
maxEtcherRobotPositions = 10;
maxTrayPositions = 10;
InitializePropertiesEx();
InitializePropertyChangedMethod();
}
public ReceipePageVM(AdsManager adsManager)
{
_adsManager = adsManager;
InitializePropertiesEx();
InitializePropertyChangedMethod();
var val = _adsManager.ReadValue("GVL_Scheduler.MAX_RECIPE_NODES");
maxFlowNodes = (val == null) ? 10 : (int)val;
val = _adsManager.ReadValue("GVL_ETCHER.MAX_ROBOT_POS");
maxEtcherRobotPositions = (val == null) ? 10 : (int)val;
val = _adsManager.ReadValue("GVL_ETCHER.MAX_ROBOT_POS");
maxTrayPositions = (val == null) ? 10 : (int)val;
}
private void InitializePropertyChangedMethod()
{
CameraProgramsVm.PropertyChanged += NewData;
ChucksVm.PropertyChanged += NewData;
GripperVm.PropertyChanged += NewData;
DiameterVm.PropertyChanged += NewData;
ThicknessVm.PropertyChanged += NewData;
RestingTimeHotplateVm.PropertyChanged += NewData;
TargetTemperatureHotplateVm.PropertyChanged += NewData;
RestingTimeCoolplateVm.PropertyChanged += NewData;
TargetTemperatureCoolplateVm.PropertyChanged += NewData;
PermissibleBeamParamDeviationsVm.PropertyChanged += NewData;
TimeIntervallBeamCheckVm.PropertyChanged += NewData;
RadialPosLowerWaterJetVm.PropertyChanged += NewData;
ChuckRpmVm.PropertyChanged += NewData;
HvmaxTestCurrentVm.PropertyChanged += NewData;
Hvn2PrePurgeTimeVm.PropertyChanged += NewData;
HvnumRetriesVm.PropertyChanged += NewData;
HvpolarityVm.PropertyChanged += NewData;
HvrampTimeVm.PropertyChanged += NewData;
HvtestFrequencyVm.PropertyChanged += NewData;
HvTestOkCurrentVm.PropertyChanged += NewData;
HvTestOkVoltageVm.PropertyChanged += NewData;
HvtestTemperatureVm.PropertyChanged += NewData;
HvtestVoltageVm.PropertyChanged += NewData;
HvtestPressureN2Vm.PropertyChanged += NewData;
FlowStationsVm.PropertyChanged += NewData;
FlowReceipe.PropertyChanged += NewData;
TrayPositions.CollectionChanged += TrayPositionCollectionChangedEvent;
EtcherRobotSteps.CollectionChanged += EtcherRobotStepsCollectionChangedEvent;
FlowReceipe.FlowReceipeEntries.CollectionChanged += FlowReceipeCollectionChangedEvent;
}
private void EtcherRobotStepsCollectionChangedEvent(object? obj, NotifyCollectionChangedEventArgs e)
{
etcherRobotStepsCollectionChanged = true;
NewData(obj, new PropertyChangedEventArgs("FlowReceipe"));
}
private void TrayPositionCollectionChangedEvent(object? obj, NotifyCollectionChangedEventArgs e)
{
trayPositionsCollectionChanged = true;
NewData(obj, new PropertyChangedEventArgs("FlowReceipe"));
}
private void FlowReceipeCollectionChangedEvent(object? obj, NotifyCollectionChangedEventArgs e)
{
flowreceipeCollectionChanged = true;
NewData(obj, new PropertyChangedEventArgs("FlowReceipe"));
}
private void InitializePropertiesEx()
{
FlowStationsVm.FlowStations.Add(new(Stationenum.EINGABE, "Eingabetray"));
FlowStationsVm.FlowStations.Add(new(Stationenum.QRCODE, "QR Code Scan"));
FlowStationsVm.FlowStations.Add(new(Stationenum.AUSRICHTEN, "Ausrichten"));
FlowStationsVm.FlowStations.Add(new(Stationenum.AETZEN, "Ätzstation 1/2"));
FlowStationsVm.FlowStations.Add(new(Stationenum.HEIZPLATTE, "Heizplatte"));
FlowStationsVm.FlowStations.Add(new(Stationenum.KUEHLPLATTE, "Kühlplatte"));
FlowStationsVm.FlowStations.Add(new(Stationenum.HOCHVOLTHEISS, "Hochvolt Heiss"));
FlowStationsVm.FlowStations.Add(new(Stationenum.HOCHVOLTKALT, "Hochvolt Kalt"));
FlowStationsVm.FlowStations.Add(new(Stationenum.AUSGABE, "Ausgabetray"));
FlowStationsVm.FlowStations.Add(new(Stationenum.NIOSTATION, "NIO Station"));
TrayPositions = new();
EtcherRobotSteps = new();
FlowReceipe.FlowReceipeEntries = new();
CameraProgramsVm.SName = "Kameraprogramme: ";
ChucksVm.SName = "Drehteller: ";
GripperVm.SName = "Greifertyp: ";
PermissibleBeamParamDeviationsVm.SName = "Max. Strahlabweichung: ";
DiameterVm.SName = "Teiledurchmesser: ";
ThicknessVm.SName = "Teiledicke: ";
TimeIntervallBeamCheckVm.SName = "Intervall Strahlvermessung: ";
RestingTimeHotplateVm.SName = "Verweilzeit Heizplatte: ";
TargetTemperatureHotplateVm.SName = "Zieltemperatur Heizplatte: ";
RestingTimeCoolplateVm.SName = "Verweilzeit Kühlplatte: ";
TargetTemperatureCoolplateVm.SName = "Zieltemperatur Kühlplatte";
RadialPosLowerWaterJetVm.SName = "Radial Position Unterwasserstrahl: ";
ChuckRpmVm.SName = "Drehzahl: ";
HvmaxTestCurrentVm.SName = "HV: Max. Teststrom: ";
Hvn2PrePurgeTimeVm.SName = "HV: Vorreinigungszeit: ";
HvnumRetriesVm.SName = "HV: Anzahl Wiederholversuche: ";
HvpolarityVm.SName = "HV: Polarität (1=Pos, 2=Neg): ";
HvrampTimeVm.SName = "HV: Rampenzeit: ";
HvtestFrequencyVm.SName = "HV: Testfrequenz: ";
HvTestOkCurrentVm.SName = "HV: Teststrom Teil OK";
HvTestOkVoltageVm.SName = "HV: Testspannung Teil OK";
HvtestTemperatureVm.SName = "HV: Testtemperatur: ";
HvtestVoltageVm.SName = "HV: Testspannung: ";
HvtestPressureN2Vm.SName = "HV: DruckN2: ";
FlowReceipe.FlowReceipeEntries = new();
FlowReceipe.FlowReceipeEntries.Add(new FlowReceipeEntry
{
Priority = 100,
Station = FlowStationsVm.FlowStations[0],
MaxRetries = 0,
NextNodeSuccess = 1,
NextNodeRetry = -1,
NextNodeFail = -1
});
CanAddTrayPosition = true;
CanRemoveTrayPosition = false;
CanAddFlowReceipeEntry = true;
CanRemoveFlowReceipeEntry = false;
CanAddEtchRobotStep = true;
CanRemoveEtchRobotStep = false;
DataSendToPlc = false;
DataSaved = false;
}
#endregion ctor
private ReceipeDto SetDto()
{
var receipe = new ReceipeDto();
receipe.ReceipeObject.MachineParameters.TrayPositions = new List<TrayPosition>(TrayPositions);
receipe.ReceipeObject.MachineParameters.CameraPrograms = CameraProgramsVm.Value;
receipe.ReceipeObject.MachineParameters.Chucks = ChucksVm.Value;
receipe.ReceipeObject.MachineParameters.Gripper = GripperVm.Value;
receipe.ReceipeObject.MachineParameters.PermissibleBeamParameterDeviations =
PermissibleBeamParamDeviationsVm.Value;
receipe.ReceipeObject.ProductParameters.Diameter = DiameterVm.Value;
receipe.ReceipeObject.ProductParameters.Thickness = ThicknessVm.Value;
receipe.ReceipeObject.ProductParameters.TimeIntervallBeamCheck = TimeIntervallBeamCheckVm.Value;
receipe.ReceipeObject.ReceipeHotplate.RestingTime = RestingTimeHotplateVm.Value;
receipe.ReceipeObject.ReceipeHotplate.TargetTemperature = TargetTemperatureHotplateVm.Value;
receipe.ReceipeObject.ReceipeCoolplate.RestingTime = RestingTimeCoolplateVm.Value;
receipe.ReceipeObject.ReceipeCoolplate.TargetTemperature = TargetTemperatureCoolplateVm.Value;
receipe.ReceipeObject.ReceipeEtcher.NumberRobotPos = (ushort)NumberRobotPositionsVm.Value;
receipe.ReceipeObject.ReceipeEtcher.RadialPosLowerWaterJet = RadialPosLowerWaterJetVm.Value;
receipe.ReceipeObject.ReceipeEtcher.Rpm = ChuckRpmVm.Value;
receipe.ReceipeObject.ReceipeEtcher.RobotStepData = new List<EtcherRobotStepData>(EtcherRobotSteps);
receipe.ReceipeObject.ReceipeHvTester.MaximumTestCurrent = HvmaxTestCurrentVm.Value;
receipe.ReceipeObject.ReceipeHvTester.N2PrePurgetime = Hvn2PrePurgeTimeVm.Value;
receipe.ReceipeObject.ReceipeHvTester.NumRetries = (ushort)HvnumRetriesVm.Value;
receipe.ReceipeObject.ReceipeHvTester.Polarity = (ushort)HvpolarityVm.Value;
receipe.ReceipeObject.ReceipeHvTester.RampTime = HvrampTimeVm.Value;
receipe.ReceipeObject.ReceipeHvTester.TestFrequency = HvtestFrequencyVm.Value;
receipe.ReceipeObject.ReceipeHvTester.TestOkCurrent = HvTestOkCurrentVm.Value;
receipe.ReceipeObject.ReceipeHvTester.TestOkVoltage = HvTestOkVoltageVm.Value;
receipe.ReceipeObject.ReceipeHvTester.TestTemperature = HvtestTemperatureVm.Value;
receipe.ReceipeObject.ReceipeHvTester.TestVoltage = HvtestVoltageVm.Value;
receipe.ReceipeObject.ReceipeHvTester.TestpressureN2 = HvtestPressureN2Vm.Value;
receipe.ReceipeObject.FlowreceipeModel.Nodes = new List<FlowReceipeNode>();
foreach (var entry in FlowReceipe.FlowReceipeEntries)
{
var node = new FlowReceipeNode();
node.StationType = (uint)entry.Station.EStation;
node.Priority = entry.Priority;
node.NextNodeSuccess = entry.NextNodeSuccess;
node.NextNodeRetry = entry.NextNodeRetry;
node.NextNodeFail = entry.NextNodeFail;
node.MaxRetries = entry.MaxRetries;
receipe.ReceipeObject.FlowreceipeModel.Nodes.Add(node);
}
receipe.ReceipeObject.FlowreceipeModel.NodeCount = receipe.ReceipeObject.FlowreceipeModel.Nodes.Count;
return receipe;
}
private void GetDto(ReceipeDto receipe)
{
TrayPositions = new(receipe.ReceipeObject.MachineParameters.TrayPositions);
CameraProgramsVm.Value = receipe.ReceipeObject.MachineParameters.CameraPrograms;
ChucksVm.Value = receipe.ReceipeObject.MachineParameters.Chucks;
GripperVm.Value = receipe.ReceipeObject.MachineParameters.Gripper;
PermissibleBeamParamDeviationsVm.Value =
receipe.ReceipeObject.MachineParameters.PermissibleBeamParameterDeviations;
DiameterVm.Value = receipe.ReceipeObject.ProductParameters.Diameter;
ThicknessVm.Value = receipe.ReceipeObject.ProductParameters.Thickness;
TimeIntervallBeamCheckVm.Value = receipe.ReceipeObject.ProductParameters.TimeIntervallBeamCheck;
RestingTimeHotplateVm.Value = receipe.ReceipeObject.ReceipeHotplate.RestingTime;
TargetTemperatureHotplateVm.Value = receipe.ReceipeObject.ReceipeHotplate.TargetTemperature;
RestingTimeCoolplateVm.Value = receipe.ReceipeObject.ReceipeCoolplate.RestingTime;
TargetTemperatureCoolplateVm.Value = receipe.ReceipeObject.ReceipeCoolplate.TargetTemperature;
NumberRobotPositionsVm.Value = receipe.ReceipeObject.ReceipeEtcher.NumberRobotPos;
RadialPosLowerWaterJetVm.Value = receipe.ReceipeObject.ReceipeEtcher.RadialPosLowerWaterJet;
ChuckRpmVm.Value = receipe.ReceipeObject.ReceipeEtcher.Rpm;
EtcherRobotSteps = new(receipe.ReceipeObject.ReceipeEtcher.RobotStepData);
HvmaxTestCurrentVm.Value = receipe.ReceipeObject.ReceipeHvTester.MaximumTestCurrent;
Hvn2PrePurgeTimeVm.Value = receipe.ReceipeObject.ReceipeHvTester.N2PrePurgetime;
HvnumRetriesVm.Value = receipe.ReceipeObject.ReceipeHvTester.NumRetries;
HvpolarityVm.Value = receipe.ReceipeObject.ReceipeHvTester.Polarity;
HvrampTimeVm.Value = receipe.ReceipeObject.ReceipeHvTester.RampTime;
HvtestFrequencyVm.Value = receipe.ReceipeObject.ReceipeHvTester.TestFrequency;
HvTestOkCurrentVm.Value = receipe.ReceipeObject.ReceipeHvTester.TestOkCurrent;
HvTestOkVoltageVm.Value = receipe.ReceipeObject.ReceipeHvTester.TestOkVoltage;
HvtestTemperatureVm.Value = receipe.ReceipeObject.ReceipeHvTester.TestTemperature;
HvtestVoltageVm.Value = receipe.ReceipeObject.ReceipeHvTester.TestVoltage;
HvtestPressureN2Vm.Value = receipe.ReceipeObject.ReceipeHvTester.TestpressureN2;
FlowReceipe.FlowReceipeEntries.Clear();
foreach (var node in receipe.ReceipeObject.FlowreceipeModel.Nodes)
{
StationEntry i = new StationEntry(Stationenum.EINGABE, Stationenum.EINGABE.ToString());
var station = FlowStationsVm.FlowStations.First(i => (uint)i.EStation == (uint)node.StationType);
AddFlowReceipeEntry();
FlowReceipe.FlowReceipeEntries.Last().MaxRetries = node.MaxRetries;
FlowReceipe.FlowReceipeEntries.Last().NextNodeRetry = node.NextNodeRetry;
FlowReceipe.FlowReceipeEntries.Last().NextNodeFail = node.NextNodeFail;
FlowReceipe.FlowReceipeEntries.Last().NextNodeSuccess = node.NextNodeSuccess;
FlowReceipe.FlowReceipeEntries.Last().Priority = node.Priority;
FlowReceipe.FlowReceipeEntries.Last().Station = station;
}
FlowNodeCountVm.Value = receipe.ReceipeObject.FlowreceipeModel.NodeCount;
}
private void SendDataToPLC()
{
if (_adsManager == null)
return;
var val = _adsManager.ReadValue("GVL_Scheduler.MAX_RECIPE_NODES");
maxFlowNodes = (val == null) ? 10 : (int)val;
;
val = _adsManager.ReadValue("GVL_ETCHER.MAX_ROBOT_POS");
maxEtcherRobotPositions = (val == null) ? 10 : (int)val;
val = _adsManager.ReadValue("GVL_ETCHER.MAX_ROBOT_POS");
maxTrayPositions = (val == null) ? 20 : (int)val;
for (var i = 0; i < maxTrayPositions && i < TrayPositions.Count; i++)
{
_adsManager.WriteValue("GVL_SCADA.stMachine.stTray.arPosX[" + i + "]", TrayPositions[i].PosX);
_adsManager.WriteValue("GVL_SCADA.stMachine.stTray.arPosY[" + i + "]", TrayPositions[i].PosY);
}
var trayPosCountToPlc = TrayPositions.Count < maxTrayPositions ? TrayPositions.Count : maxTrayPositions;
_adsManager.WriteValue("GVL_SCADA.stMachine.stTray.iPosCnt", trayPosCountToPlc);
for (var i = 0; i < maxEtcherRobotPositions && i < EtcherRobotSteps.Count; i++)
{
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosX",
EtcherRobotSteps[i].PosX);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosY",
EtcherRobotSteps[i].PosY);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosZ",
EtcherRobotSteps[i].PosZ);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleAlpha",
EtcherRobotSteps[i].AngleAlpha);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rMoveSpeed",
EtcherRobotSteps[i].MoveSpeed);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rDelay",
EtcherRobotSteps[i].Delay);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].uiMedium",
EtcherRobotSteps[i].Medium);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].xWaterFromBelow",
EtcherRobotSteps[i].WaterFromBelow);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].xWaterFromAbove",
EtcherRobotSteps[i].WaterFromAbove);
}
for (var i = 0; (i < maxFlowNodes && i < FlowReceipe.FlowReceipeEntries.Count); i++)
{
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].uiPriority",
FlowReceipe.FlowReceipeEntries[i].Priority);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].dwReqCap",
FlowReceipe.FlowReceipeEntries[i].Station.EStation);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].uiMaxRetries",
FlowReceipe.FlowReceipeEntries[i].MaxRetries);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].iNextNodeSuccess",
FlowReceipe.FlowReceipeEntries[i].NextNodeSuccess);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].iNextNodeRetry",
FlowReceipe.FlowReceipeEntries[i].NextNodeRetry);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].iNextNodeFail",
FlowReceipe.FlowReceipeEntries[i].NextNodeFail);
}
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterFlowRecipe.uiNodeCnt", FlowNodeCountVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.iCameraprograms", CameraProgramsVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.iChucks", ChucksVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.iGripper", GripperVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.rBeamDeviation", PermissibleBeamParamDeviationsVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.rDiameter", DiameterVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.rThickness", ThicknessVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.rTimeIntervalBeamCheck", TimeIntervallBeamCheckVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rRestingTime", RestingTimeHotplateVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rTemp", TargetTemperatureHotplateVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rRestingTime",
RestingTimeCoolplateVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rTemp", TargetTemperatureCoolplateVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeEtcher.uiNumRobotPos", NumberRobotPositionsVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeEtcher.rRadialPosLowerWaterJet",
RadialPosLowerWaterJetVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeEtcher.rChuckRPM", ChuckRpmVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestVoltage", HvtestVoltageVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rMaxTestCurrent", HvmaxTestCurrentVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rRampTime", HvrampTimeVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestFrequency", HvtestFrequencyVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.uiPolarity", HvpolarityVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestPresN2", HvtestPressureN2Vm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rN2PrePurgeTime", Hvn2PrePurgeTimeVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.uiNumRetries", HvnumRetriesVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestTemp", HvtestTemperatureVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestOkVoltage", HvTestOkVoltageVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestOkCurrent", HvTestOkCurrentVm.Value);
}
private void ReadDataFromPLC()
{
if (_adsManager == null)
return;
var val = _adsManager.ReadValue("GVL_Scheduler.MAX_RECIPE_NODES");
maxFlowNodes = (val == null) ? 10 : (int)val;
;
val = _adsManager.ReadValue("GVL_ETCHER.MAX_ROBOT_POS");
maxEtcherRobotPositions = (val == null) ? 10 : (int)val;
val = _adsManager.ReadValue("GVL_ETCHER.MAX_ROBOT_POS");
maxTrayPositions = (val == null) ? 20 : (int)val;
TrayPositions = new ObservableCollection<TrayPosition>();
for (var i = 0; i < maxTrayPositions && i < TrayPositions.Count; i++)
{
AddTrayPosition();
TrayPositions.Last().PosX = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stTray.arPosX[" + i + "]"));
TrayPositions.Last().PosY = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stTray.arPosY[" + i + "]"));
}
var trayPosCountToPlc = TrayPositions.Count < maxTrayPositions ? TrayPositions.Count : maxTrayPositions;
_adsManager.WriteValue("GVL_SCADA.stMachine.stTray.iPosCnt", trayPosCountToPlc);
EtcherRobotSteps = new ObservableCollection<EtcherRobotStepData>();
for (var i = 0; i < maxEtcherRobotPositions && i < EtcherRobotSteps.Count; i++)
{
AddEtchRobotStep();
EtcherRobotSteps.Last().PosX = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosX"));
EtcherRobotSteps.Last().PosY = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosY"));
EtcherRobotSteps.Last().PosZ = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosZ"));
EtcherRobotSteps.Last().AngleAlpha = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleAlpha"));
EtcherRobotSteps.Last().MoveSpeed = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rMoveSpeed"));
EtcherRobotSteps.Last().Delay = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rDelay"));
EtcherRobotSteps.Last().Medium =GetUShort(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].uiMedium"));
EtcherRobotSteps.Last().WaterFromBelow = GetBool(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].xWaterFromBelow"));
EtcherRobotSteps.Last().WaterFromAbove = GetBool(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].xWaterFromAbove"));
}
for (var i = 0; (i < maxFlowNodes && i < FlowReceipe.FlowReceipeEntries.Count); i++)
{
var stationFromPlc = GetUInt32(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].dwReqCap"));
var station = FlowStationsVm.FlowStations.First(i => (uint)i.EStation == stationFromPlc);
AddFlowReceipeEntry();
FlowReceipe.FlowReceipeEntries.Last().MaxRetries = GetUShort(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].uiMaxRetries"));
FlowReceipe.FlowReceipeEntries.Last().NextNodeRetry = GetUShort(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].iNextNodeRetry"));
FlowReceipe.FlowReceipeEntries.Last().NextNodeFail = GetUShort(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].iNextNodeFail"));
FlowReceipe.FlowReceipeEntries.Last().NextNodeSuccess = GetUShort(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].iNextNodeSuccess"));
FlowReceipe.FlowReceipeEntries.Last().Priority = GetUShort(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterFlowRecipe.astNodes[" + i + "].uiPriority"));
FlowReceipe.FlowReceipeEntries.Last().Station = station;
}
FlowNodeCountVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterFlowRecipe.uiNodeCnt"));
CameraProgramsVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.iCameraprograms"));
ChucksVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.iChucks"));
GripperVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.iGripper"));
PermissibleBeamParamDeviationsVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.rBeamDeviation"));
DiameterVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.rDiameter" ));
ThicknessVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.rThickness"));
TimeIntervallBeamCheckVm.Value=GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.rTimeIntervalBeamCheck"));
RestingTimeHotplateVm.Value=GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rRestingTime"));
TargetTemperatureHotplateVm.Value=GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rTemp"));
RestingTimeCoolplateVm.Value=GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rRestingTime"));
TargetTemperatureCoolplateVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rTemp" ));
NumberRobotPositionsVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeEtcher.uiNumRobotPos"));
RadialPosLowerWaterJetVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeEtcher.rRadialPosLowerWaterJet"));
ChuckRpmVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeEtcher.rChuckRPM"));
HvtestVoltageVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestVoltage"));
HvmaxTestCurrentVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rMaxTestCurrent"));
HvrampTimeVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rRampTime"));
HvtestFrequencyVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestFrequency"));
HvpolarityVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.uiPolarity"));
HvtestPressureN2Vm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestPresN2"));
Hvn2PrePurgeTimeVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rN2PrePurgeTime"));
HvnumRetriesVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.uiNumRetries"));
HvtestTemperatureVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestTemp"));
HvTestOkVoltageVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestOkVoltage"));
HvTestOkCurrentVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestOkCurrent"));
}
#region helperMethods
private short GetShort(object? value)
{
if (value != null)
return (short)value;
return -1;
}
private uint GetUInt32(object? value)
{
if (value != null)
return (uint)value;
return 0;
}
private int GetInt(object? value)
{
if (value != null)
return (int)value;
return 0;
}
private UInt16 GetUShort(object? value)
{
if (value != null)
return (UInt16)value;
return 0;
}
private bool GetBool(object? value)
{
if (value != null)
return (bool)value;
return false;
}
private float GetFloat(object? value)
{
if (value != null)
return (float)value;
return -1;
}
#endregion helperMethods
public void Dispose()
{
}
}