Changes in Description

Add new Paramcontrol with Range Validation
move Values from general to Etcher-Robot step Table
Add File Extension to Save/Open File Dialog
This commit is contained in:
2026-03-09 12:19:09 +01:00
parent ff9add4081
commit a753f1c7a7
7 changed files with 199 additions and 47 deletions

View File

@@ -0,0 +1,25 @@
<UserControl x:Class="Common.ParamControlIntRange"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:common="clr-namespace:Common"
d:DataContext="{d:DesignInstance Type=common:ParamControlIntRangeVm, IsDesignTimeCreatable=True}"
mc:Ignorable="d"
d:DesignWidth="600"
d:DesignHeight="120"
Width="Auto"
Height="Auto">
<Grid Height="70">
<Grid.ColumnDefinitions>
<!-- <ColumnDefinition Width="Auto" /> -->
<ColumnDefinition Width="400" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Label x:Name="tbName" Grid.Column="0" Content="{Binding SName, Mode=OneWay }" FontSize="30" VerticalAlignment="Center"/>
<TextBox x:Name="tbValue" Text="{Binding Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="10" Width="Auto" FontSize="30" Grid.Column="1" MaxLines="1" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" IsReadOnly="{Binding Readonly}" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,31 @@
using System.Text.RegularExpressions;
using System.Windows.Controls;
using System.Windows.Input;
namespace Common;
/// <summary>
/// Interaktionslogik für AnalogValue.xaml
/// </summary>
public partial class ParamControlIntRange : UserControl
{
public bool IsReadonly { get; set; }
public ParamControlIntRange()
{
InitializeComponent();
// Unloaded += OnUnloaded;
}
private void OnUnloaded(object? sender, EventArgs e)
{
var disposable = DataContext as IDisposable;
disposable?.Dispose();
}
private void NumberValidation(object sender, TextCompositionEventArgs e)
{
Regex regex = new("^[-+]?[0-9]*,?[0-9]+$");
e.Handled = regex.IsMatch(e.Text);
}
}

View File

@@ -0,0 +1,80 @@
using CommunityToolkit.Mvvm.ComponentModel;
using InfineonHMI.Common;
using System.ComponentModel.DataAnnotations;
using TwinCAT.TypeSystem;
namespace Common;
public sealed class InRangeAttribute(string propMin, string propMax) : ValidationAttribute
{
public string PropMin { get; } = propMin;
public string PropMax { get; } = propMax;
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
object instance = validationContext.ObjectInstance;
int minValue = (int)(instance.GetType().GetProperty(PropMin)?.GetValue(instance) ?? 1);
int maxValue = (int)(instance.GetType().GetProperty(PropMax)?.GetValue(instance) ?? 1);
int tempValue = (int)(value ?? 1);
if (tempValue <= maxValue && tempValue >= minValue)
return ValidationResult.Success;
return new($"Value has to be greater than {minValue} and smaller then {maxValue}");
}
}
public sealed partial class ParamControlIntRangeVm : ObservableValidator, IDisposable, IChangeTrackingEx
{
private int initValue;
[ObservableProperty]
private int iMin;
[ObservableProperty]
private int iMax;
[ObservableProperty] private string sName;
private int value;
[InRangeAttribute(nameof(IMin), nameof(IMax))]
public int Value
{
get => this.value;
set
{
SetProperty(ref this.value, value, true);
if (value >= IMin && value <= IMax)
{
}
}
}
public ParamControlIntRangeVm()
{
SName = "No Name:";
Value = 0;
initValue = Value;
}
public void Dispose()
{
}
public void AcceptChanges()
{
initValue = Value;
}
public bool IsChanged => initValue != Value;
public void DiscardChanges()
{
Value = initValue;
}
}

View File

@@ -49,6 +49,9 @@
<Compile Update="Common\MediaContainer.xaml.cs"> <Compile Update="Common\MediaContainer.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Update="Common\ParamControlIntRange.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="Common\ParamControlInt.xaml.cs"> <Compile Update="Common\ParamControlInt.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>

View File

@@ -161,18 +161,13 @@ public class ReceipeEtcher
/// </summary> /// </summary>
public UInt16 NumberRobotPos { get; set; } public UInt16 NumberRobotPos { get; set; }
public float Rpm { get; set; }
/// <summary> /// <summary>
/// Roboter position and setting data /// Roboter position and setting data
/// </summary> /// </summary>
public List<EtcherRobotStepData> RobotStepData { get; set; } public List<EtcherRobotStepData> RobotStepData { get; set; }
/// <summary>
/// Radial position of water jet under the blank in mm
/// </summary>
public float RadialPosLowerWaterJet { get; set; }
public ReceipeEtcher() public ReceipeEtcher()
{ {
RobotStepData = new List<EtcherRobotStepData>(); RobotStepData = new List<EtcherRobotStepData>();
@@ -186,6 +181,9 @@ public class EtcherRobotStepData
public float PosY { get; set; } public float PosY { get; set; }
public float PosZ { get; set; } public float PosZ { get; set; }
public float AngleAlpha { get; set; } public float AngleAlpha { get; set; }
public float AngleGamma { get; set; }
public float RadialposUnderwater { get; set; }
public float ChuckRpm { get; set; }
public float MoveSpeed { get; set; } public float MoveSpeed { get; set; }
public float Delay { get; set; } public float Delay { get; set; }
public UInt16 Medium { get; set; } public UInt16 Medium { get; set; }

View File

@@ -48,8 +48,6 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
TargetTemperatureCoolplateVm.IsChanged || TargetTemperatureCoolplateVm.IsChanged ||
PermissibleBeamParamDeviationsVm.IsChanged || PermissibleBeamParamDeviationsVm.IsChanged ||
TimeIntervallBeamCheckVm.IsChanged || TimeIntervallBeamCheckVm.IsChanged ||
RadialPosLowerWaterJetVm.IsChanged ||
ChuckRpmVm.IsChanged ||
HvmaxTestCurrentVm.IsChanged || HvmaxTestCurrentVm.IsChanged ||
Hvn2PrePurgeTimeVm.IsChanged || Hvn2PrePurgeTimeVm.IsChanged ||
HvnumRetriesVm.IsChanged || HvnumRetriesVm.IsChanged ||
@@ -123,7 +121,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
private ParamControlFloatVm hvtestFrequencyVm = new(); private ParamControlFloatVm hvtestFrequencyVm = new();
[ObservableProperty] [ObservableProperty]
private ParamControlIntVm hvpolarityVm = new(); private ParamControlIntRangeVm hvpolarityVm = new();
[ObservableProperty] [ObservableProperty]
private ParamControlFloatVm hvtestPressureN2Vm = new(); private ParamControlFloatVm hvtestPressureN2Vm = new();
@@ -145,16 +143,10 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
[ObservableProperty] [ObservableProperty]
private ParamControlIntVm numberRobotPositionsVm = new(); private ParamControlIntVm numberRobotPositionsVm = new();
[ObservableProperty]
private ParamControlFloatVm chuckRpmVm = new();
[ObservableProperty] [ObservableProperty]
private ObservableCollection<EtcherRobotStepData> etcherRobotSteps; private ObservableCollection<EtcherRobotStepData> etcherRobotSteps;
[ObservableProperty]
private ParamControlFloatVm radialPosLowerWaterJetVm = new();
[ObservableProperty] [ObservableProperty]
private ParamControlIntVm flowNodeCountVm = new(); private ParamControlIntVm flowNodeCountVm = new();
@@ -404,6 +396,9 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PosZ = 0.0f, PosZ = 0.0f,
MoveSpeed = 0.0f, MoveSpeed = 0.0f,
AngleAlpha = 0.0f, AngleAlpha = 0.0f,
AngleGamma = 0.0f,
ChuckRpm = 0.0f,
RadialposUnderwater = 0.0f,
WaterFromAbove = false, WaterFromAbove = false,
WaterFromBelow = false, WaterFromBelow = false,
Medium = 0, Medium = 0,
@@ -430,6 +425,9 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PosZ = etchStep.PosZ, PosZ = etchStep.PosZ,
MoveSpeed = etchStep.MoveSpeed, MoveSpeed = etchStep.MoveSpeed,
AngleAlpha = etchStep.AngleAlpha, AngleAlpha = etchStep.AngleAlpha,
AngleGamma = etchStep.AngleGamma,
ChuckRpm = etchStep.ChuckRpm,
RadialposUnderwater = etchStep.RadialposUnderwater,
WaterFromAbove = etchStep.WaterFromAbove, WaterFromAbove = etchStep.WaterFromAbove,
WaterFromBelow = etchStep.WaterFromBelow, WaterFromBelow = etchStep.WaterFromBelow,
Medium = etchStep.Medium, Medium = etchStep.Medium,
@@ -515,9 +513,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PermissibleBeamParamDeviationsVm.AcceptChanges(); PermissibleBeamParamDeviationsVm.AcceptChanges();
TimeIntervallBeamCheckVm.AcceptChanges(); TimeIntervallBeamCheckVm.AcceptChanges();
RadialPosLowerWaterJetVm.AcceptChanges();
ChuckRpmVm.AcceptChanges();
HvmaxTestCurrentVm.AcceptChanges(); HvmaxTestCurrentVm.AcceptChanges();
Hvn2PrePurgeTimeVm.AcceptChanges(); Hvn2PrePurgeTimeVm.AcceptChanges();
HvnumRetriesVm.AcceptChanges(); HvnumRetriesVm.AcceptChanges();
@@ -530,6 +526,9 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
HvtestVoltageVm.AcceptChanges(); HvtestVoltageVm.AcceptChanges();
HvtestPressureN2Vm.AcceptChanges(); HvtestPressureN2Vm.AcceptChanges();
FlowReceipe.AcceptChanges(); FlowReceipe.AcceptChanges();
trayPositionsCollectionChanged = false;
etcherRobotStepsCollectionChanged = false;
flowreceipeCollectionChanged = false;
} }
[RelayCommand] [RelayCommand]
@@ -547,10 +546,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PermissibleBeamParamDeviationsVm.DiscardChanges(); PermissibleBeamParamDeviationsVm.DiscardChanges();
TimeIntervallBeamCheckVm.DiscardChanges(); TimeIntervallBeamCheckVm.DiscardChanges();
RadialPosLowerWaterJetVm.DiscardChanges();
ChuckRpmVm.DiscardChanges();
HvmaxTestCurrentVm.DiscardChanges(); HvmaxTestCurrentVm.DiscardChanges();
Hvn2PrePurgeTimeVm.DiscardChanges(); Hvn2PrePurgeTimeVm.DiscardChanges();
HvnumRetriesVm.DiscardChanges(); HvnumRetriesVm.DiscardChanges();
@@ -584,6 +580,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
public void ReadReceipeFile() public void ReadReceipeFile()
{ {
var dlg = new OpenFileDialog(); var dlg = new OpenFileDialog();
dlg.Filter = "XML-Dateien (*.xml)|*.xml|Alle Dateien (*.*)|*.*";
if (dlg.ShowDialog() != true) if (dlg.ShowDialog() != true)
return; return;
@@ -599,6 +596,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
public void WriteReceipeFile() public void WriteReceipeFile()
{ {
var dlg = new SaveFileDialog(); var dlg = new SaveFileDialog();
dlg.Filter = "XML-Dateien (*.xml)|*.xml|Alle Dateien (*.*)|*.*";
if (dlg.ShowDialog() != true) if (dlg.ShowDialog() != true)
return; return;
@@ -656,9 +654,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PermissibleBeamParamDeviationsVm.PropertyChanged += NewData; PermissibleBeamParamDeviationsVm.PropertyChanged += NewData;
TimeIntervallBeamCheckVm.PropertyChanged += NewData; TimeIntervallBeamCheckVm.PropertyChanged += NewData;
RadialPosLowerWaterJetVm.PropertyChanged += NewData;
ChuckRpmVm.PropertyChanged += NewData;
HvmaxTestCurrentVm.PropertyChanged += NewData; HvmaxTestCurrentVm.PropertyChanged += NewData;
Hvn2PrePurgeTimeVm.PropertyChanged += NewData; Hvn2PrePurgeTimeVm.PropertyChanged += NewData;
HvnumRetriesVm.PropertyChanged += NewData; HvnumRetriesVm.PropertyChanged += NewData;
@@ -724,12 +720,12 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
RestingTimeCoolplateVm.SName = "Verweilzeit Kühlplatte: "; RestingTimeCoolplateVm.SName = "Verweilzeit Kühlplatte: ";
TargetTemperatureCoolplateVm.SName = "Zieltemperatur Kühlplatte"; TargetTemperatureCoolplateVm.SName = "Zieltemperatur Kühlplatte";
RadialPosLowerWaterJetVm.SName = "Radial Position Unterwasserstrahl: ";
ChuckRpmVm.SName = "Drehzahl: ";
HvmaxTestCurrentVm.SName = "HV: Max. Teststrom: "; HvmaxTestCurrentVm.SName = "HV: Max. Teststrom: ";
Hvn2PrePurgeTimeVm.SName = "HV: Vorreinigungszeit: "; Hvn2PrePurgeTimeVm.SName = "HV: Vorreinigungszeit: ";
HvnumRetriesVm.SName = "HV: Anzahl Wiederholversuche: "; HvnumRetriesVm.SName = "HV: Anzahl Wiederholversuche: ";
HvpolarityVm.SName = "HV: Polarität (1=Pos, 2=Neg): "; HvpolarityVm.SName = "HV: Polarität (1=Pos, 2=Neg): ";
HvpolarityVm.IMin = 1;
HvpolarityVm.IMax = 2;
HvrampTimeVm.SName = "HV: Rampenzeit: "; HvrampTimeVm.SName = "HV: Rampenzeit: ";
HvtestFrequencyVm.SName = "HV: Testfrequenz: "; HvtestFrequencyVm.SName = "HV: Testfrequenz: ";
HvTestOkCurrentVm.SName = "HV: Teststrom Teil OK"; HvTestOkCurrentVm.SName = "HV: Teststrom Teil OK";
@@ -789,8 +785,6 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
receipe.ReceipeObject.ReceipeCoolplate.TargetTemperature = TargetTemperatureCoolplateVm.Value; receipe.ReceipeObject.ReceipeCoolplate.TargetTemperature = TargetTemperatureCoolplateVm.Value;
receipe.ReceipeObject.ReceipeEtcher.NumberRobotPos = (ushort)NumberRobotPositionsVm.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.ReceipeEtcher.RobotStepData = new List<EtcherRobotStepData>(EtcherRobotSteps);
receipe.ReceipeObject.ReceipeHvTester.MaximumTestCurrent = HvmaxTestCurrentVm.Value; receipe.ReceipeObject.ReceipeHvTester.MaximumTestCurrent = HvmaxTestCurrentVm.Value;
@@ -845,8 +839,6 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
TargetTemperatureCoolplateVm.Value = receipe.ReceipeObject.ReceipeCoolplate.TargetTemperature; TargetTemperatureCoolplateVm.Value = receipe.ReceipeObject.ReceipeCoolplate.TargetTemperature;
NumberRobotPositionsVm.Value = receipe.ReceipeObject.ReceipeEtcher.NumberRobotPos; NumberRobotPositionsVm.Value = receipe.ReceipeObject.ReceipeEtcher.NumberRobotPos;
RadialPosLowerWaterJetVm.Value = receipe.ReceipeObject.ReceipeEtcher.RadialPosLowerWaterJet;
ChuckRpmVm.Value = receipe.ReceipeObject.ReceipeEtcher.Rpm;
EtcherRobotSteps = new(receipe.ReceipeObject.ReceipeEtcher.RobotStepData); EtcherRobotSteps = new(receipe.ReceipeObject.ReceipeEtcher.RobotStepData);
HvmaxTestCurrentVm.Value = receipe.ReceipeObject.ReceipeHvTester.MaximumTestCurrent; HvmaxTestCurrentVm.Value = receipe.ReceipeObject.ReceipeHvTester.MaximumTestCurrent;
@@ -910,6 +902,12 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
EtcherRobotSteps[i].PosZ); EtcherRobotSteps[i].PosZ);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleAlpha", _adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleAlpha",
EtcherRobotSteps[i].AngleAlpha); EtcherRobotSteps[i].AngleAlpha);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleGamma",
EtcherRobotSteps[i].AngleGamma);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rRadialPosLowerWaterJet",
EtcherRobotSteps[i].RadialposUnderwater);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rRPM",
EtcherRobotSteps[i].ChuckRpm);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rMoveSpeed", _adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rMoveSpeed",
EtcherRobotSteps[i].MoveSpeed); EtcherRobotSteps[i].MoveSpeed);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rDelay", _adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rDelay",
@@ -954,14 +952,11 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
_adsManager.WriteValue("GVL_SCADA.stMachine.rTimeIntervalBeamCheck", TimeIntervallBeamCheckVm.Value); _adsManager.WriteValue("GVL_SCADA.stMachine.rTimeIntervalBeamCheck", TimeIntervallBeamCheckVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rRestingTime", RestingTimeHotplateVm.Value); _adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rRestingTime", RestingTimeHotplateVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rTemp", TargetTemperatureHotplateVm.Value); _adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHotplate.rTemp", TargetTemperatureHotplateVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rRestingTime", _adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rRestingTime", RestingTimeCoolplateVm.Value);
RestingTimeCoolplateVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rTemp", TargetTemperatureCoolplateVm.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.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.rTestVoltage", HvtestVoltageVm.Value);
_adsManager.WriteValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rMaxTestCurrent", HvmaxTestCurrentVm.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.rRampTime", HvrampTimeVm.Value);
@@ -1009,6 +1004,9 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
EtcherRobotSteps.Last().PosY = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosY")); 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().PosZ = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosZ"));
EtcherRobotSteps.Last().AngleAlpha = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleAlpha")); EtcherRobotSteps.Last().AngleAlpha = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleAlpha"));
EtcherRobotSteps.Last().AngleGamma = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleGamma"));
EtcherRobotSteps.Last().RadialposUnderwater = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rRadialPosLowerWaterJet"));
EtcherRobotSteps.Last().ChuckRpm = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rRPM"));
EtcherRobotSteps.Last().MoveSpeed = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rMoveSpeed")); 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().Delay = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rDelay"));
EtcherRobotSteps.Last().Medium =GetUShort(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].uiMedium")); EtcherRobotSteps.Last().Medium =GetUShort(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].uiMedium"));
@@ -1046,8 +1044,6 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
RestingTimeCoolplateVm.Value=GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rRestingTime")); RestingTimeCoolplateVm.Value=GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rRestingTime"));
TargetTemperatureCoolplateVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rTemp" )); TargetTemperatureCoolplateVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeCoolplate.rTemp" ));
NumberRobotPositionsVm.Value = GetInt(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeEtcher.uiNumRobotPos")); 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")); HvtestVoltageVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rTestVoltage"));
HvmaxTestCurrentVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rMaxTestCurrent")); HvmaxTestCurrentVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rMaxTestCurrent"));
HvrampTimeVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rRampTime")); HvrampTimeVm.Value = GetFloat(_adsManager.ReadValue("GVL_SCADA.stMachine.stMasterRecipeHVTest.rRampTime"));

View File

@@ -121,14 +121,12 @@
<common:ParamControlFloat DataContext="{Binding PermissibleBeamParamDeviationsVm}" Grid.Column="0" Grid.Row="16" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlFloat DataContext="{Binding PermissibleBeamParamDeviationsVm}" Grid.Column="0" Grid.Row="16" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding TimeIntervallBeamCheckVm}" Grid.Column="0" Grid.Row="17" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlFloat DataContext="{Binding TimeIntervallBeamCheckVm}" Grid.Column="0" Grid.Row="17" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding RadialPosLowerWaterJetVm}" Grid.Column="0" Grid.Row="18" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding ChuckRpmVm}" Grid.Column="0" Grid.Row="19" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label Grid.Column="1" Grid.Row="1" Content="Hochvolt Parameter: " VerticalAlignment="Center" FontSize="24"></Label> <Label Grid.Column="1" Grid.Row="1" Content="Hochvolt Parameter: " VerticalAlignment="Center" FontSize="24"></Label>
<common:ParamControlFloat DataContext="{Binding HvmaxTestCurrentVm}" Grid.Column="1" Grid.Row="2" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlFloat DataContext="{Binding HvmaxTestCurrentVm}" Grid.Column="1" Grid.Row="2" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding Hvn2PrePurgeTimeVm}" Grid.Column="1" Grid.Row="3" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlFloat DataContext="{Binding Hvn2PrePurgeTimeVm}" Grid.Column="1" Grid.Row="3" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlInt DataContext="{Binding HvnumRetriesVm}" Grid.Column="1" Grid.Row="4" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlInt DataContext="{Binding HvnumRetriesVm}" Grid.Column="1" Grid.Row="4" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlInt DataContext="{Binding HvpolarityVm}" Grid.Column="1" Grid.Row="5" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlIntRange DataContext="{Binding HvpolarityVm}" Grid.Column="1" Grid.Row="5" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding HvrampTimeVm}" Grid.Column="1" Grid.Row="6" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlFloat DataContext="{Binding HvrampTimeVm}" Grid.Column="1" Grid.Row="6" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding HvtestFrequencyVm}" Grid.Column="1" Grid.Row="7" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlFloat DataContext="{Binding HvtestFrequencyVm}" Grid.Column="1" Grid.Row="7" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding HvTestOkCurrentVm}" Grid.Column="1" Grid.Row="8" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/> <common:ParamControlFloat DataContext="{Binding HvTestOkCurrentVm}" Grid.Column="1" Grid.Row="8" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
@@ -284,6 +282,13 @@
SelectedItem="{Binding SelectedEtchRobotStep, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedEtchRobotStep, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False" CanUserAddRows="False" FontSize="30"> AutoGenerateColumns="False" CanUserAddRows="False" FontSize="30">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="RPM" Binding="{Binding ChuckRpm}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Pos X" Binding="{Binding PosX}"> <DataGridTextColumn Header="Pos X" Binding="{Binding PosX}">
<DataGridTextColumn.EditingElementStyle> <DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox"> <Style TargetType="TextBox">
@@ -305,7 +310,14 @@
</Style> </Style>
</DataGridTextColumn.EditingElementStyle> </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn> </DataGridTextColumn>
<DataGridTextColumn Header="Winkel Alpha" Binding="{Binding AngleAlpha}"> <DataGridTextColumn Header="W.Alpha" Binding="{Binding AngleAlpha}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="W.Gamma" Binding="{Binding AngleGamma}">
<DataGridTextColumn.EditingElementStyle> <DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox"> <Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/> <Setter Property="FontSize" Value="30"/>
@@ -319,7 +331,7 @@
</Style> </Style>
</DataGridTextColumn.EditingElementStyle> </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn> </DataGridTextColumn>
<DataGridTextColumn Header="Wartezeit" Binding="{Binding Delay}"> <DataGridTextColumn Header="Wartez." Binding="{Binding Delay}">
<DataGridTextColumn.EditingElementStyle> <DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox"> <Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/> <Setter Property="FontSize" Value="30"/>
@@ -333,8 +345,15 @@
</Style> </Style>
</DataGridTextColumn.EditingElementStyle> </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn> </DataGridTextColumn>
<DataGridCheckBoxColumn Header="Oberwasseer" Binding="{Binding WaterFromAbove}"/> <DataGridCheckBoxColumn Header="Oberw." Binding="{Binding WaterFromAbove}"/>
<DataGridCheckBoxColumn Header="Unterwasser" Binding="{Binding WaterFromBelow}"/> <DataGridCheckBoxColumn Header="Unterw." Binding="{Binding WaterFromBelow}"/>
<DataGridTextColumn Header="R Pos UW" Binding="{Binding RadialposUnderwater}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
<StackPanel Grid.Column="1" Orientation="Vertical"> <StackPanel Grid.Column="1" Orientation="Vertical">