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

@@ -48,8 +48,6 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
TargetTemperatureCoolplateVm.IsChanged ||
PermissibleBeamParamDeviationsVm.IsChanged ||
TimeIntervallBeamCheckVm.IsChanged ||
RadialPosLowerWaterJetVm.IsChanged ||
ChuckRpmVm.IsChanged ||
HvmaxTestCurrentVm.IsChanged ||
Hvn2PrePurgeTimeVm.IsChanged ||
HvnumRetriesVm.IsChanged ||
@@ -123,7 +121,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
private ParamControlFloatVm hvtestFrequencyVm = new();
[ObservableProperty]
private ParamControlIntVm hvpolarityVm = new();
private ParamControlIntRangeVm hvpolarityVm = new();
[ObservableProperty]
private ParamControlFloatVm hvtestPressureN2Vm = new();
@@ -145,16 +143,10 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
[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();
@@ -404,6 +396,9 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PosZ = 0.0f,
MoveSpeed = 0.0f,
AngleAlpha = 0.0f,
AngleGamma = 0.0f,
ChuckRpm = 0.0f,
RadialposUnderwater = 0.0f,
WaterFromAbove = false,
WaterFromBelow = false,
Medium = 0,
@@ -430,6 +425,9 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PosZ = etchStep.PosZ,
MoveSpeed = etchStep.MoveSpeed,
AngleAlpha = etchStep.AngleAlpha,
AngleGamma = etchStep.AngleGamma,
ChuckRpm = etchStep.ChuckRpm,
RadialposUnderwater = etchStep.RadialposUnderwater,
WaterFromAbove = etchStep.WaterFromAbove,
WaterFromBelow = etchStep.WaterFromBelow,
Medium = etchStep.Medium,
@@ -515,9 +513,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PermissibleBeamParamDeviationsVm.AcceptChanges();
TimeIntervallBeamCheckVm.AcceptChanges();
RadialPosLowerWaterJetVm.AcceptChanges();
ChuckRpmVm.AcceptChanges();
HvmaxTestCurrentVm.AcceptChanges();
Hvn2PrePurgeTimeVm.AcceptChanges();
HvnumRetriesVm.AcceptChanges();
@@ -530,6 +526,9 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
HvtestVoltageVm.AcceptChanges();
HvtestPressureN2Vm.AcceptChanges();
FlowReceipe.AcceptChanges();
trayPositionsCollectionChanged = false;
etcherRobotStepsCollectionChanged = false;
flowreceipeCollectionChanged = false;
}
[RelayCommand]
@@ -547,10 +546,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PermissibleBeamParamDeviationsVm.DiscardChanges();
TimeIntervallBeamCheckVm.DiscardChanges();
RadialPosLowerWaterJetVm.DiscardChanges();
ChuckRpmVm.DiscardChanges();
HvmaxTestCurrentVm.DiscardChanges();
Hvn2PrePurgeTimeVm.DiscardChanges();
HvnumRetriesVm.DiscardChanges();
@@ -584,6 +580,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
public void ReadReceipeFile()
{
var dlg = new OpenFileDialog();
dlg.Filter = "XML-Dateien (*.xml)|*.xml|Alle Dateien (*.*)|*.*";
if (dlg.ShowDialog() != true)
return;
@@ -599,6 +596,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
public void WriteReceipeFile()
{
var dlg = new SaveFileDialog();
dlg.Filter = "XML-Dateien (*.xml)|*.xml|Alle Dateien (*.*)|*.*";
if (dlg.ShowDialog() != true)
return;
@@ -656,9 +654,7 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
PermissibleBeamParamDeviationsVm.PropertyChanged += NewData;
TimeIntervallBeamCheckVm.PropertyChanged += NewData;
RadialPosLowerWaterJetVm.PropertyChanged += NewData;
ChuckRpmVm.PropertyChanged += NewData;
HvmaxTestCurrentVm.PropertyChanged += NewData;
Hvn2PrePurgeTimeVm.PropertyChanged += NewData;
HvnumRetriesVm.PropertyChanged += NewData;
@@ -724,12 +720,12 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
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): ";
HvpolarityVm.IMin = 1;
HvpolarityVm.IMax = 2;
HvrampTimeVm.SName = "HV: Rampenzeit: ";
HvtestFrequencyVm.SName = "HV: Testfrequenz: ";
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.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;
@@ -845,8 +839,6 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
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;
@@ -910,6 +902,12 @@ public sealed partial class ReceipePageVM : ObservableValidator, IDisposable
EtcherRobotSteps[i].PosZ);
_adsManager.WriteValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rAngleAlpha",
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",
EtcherRobotSteps[i].MoveSpeed);
_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.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.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);
@@ -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().PosZ = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rPosZ"));
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().Delay = GetFloat(_adsManager.ReadValue("GVL_SCADA.stRecipeEtcher.stRobotStepData[" + i + "].rDelay"));
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"));
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"));

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 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>
<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: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 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"/>
@@ -284,6 +282,13 @@
SelectedItem="{Binding SelectedEtchRobotStep, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False" CanUserAddRows="False" FontSize="30">
<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.EditingElementStyle>
<Style TargetType="TextBox">
@@ -305,7 +310,14 @@
</Style>
</DataGridTextColumn.EditingElementStyle>
</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>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
@@ -319,7 +331,7 @@
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Wartezeit" Binding="{Binding Delay}">
<DataGridTextColumn Header="Wartez." Binding="{Binding Delay}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
@@ -333,8 +345,15 @@
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridCheckBoxColumn Header="Oberwasseer" Binding="{Binding WaterFromAbove}"/>
<DataGridCheckBoxColumn Header="Unterwasser" Binding="{Binding WaterFromBelow}"/>
<DataGridCheckBoxColumn Header="Oberw." Binding="{Binding WaterFromAbove}"/>
<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>
<StackPanel Grid.Column="1" Orientation="Vertical">