Files
infineon_cs_hmi/uniper_hmi/UniperHMI/Pages/Views/ReceipePage.xaml
bliestlech-tc a753f1c7a7 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
2026-03-09 12:19:09 +01:00

375 lines
21 KiB
XML

<Page x:Class="InfineonHMI.Pages.Views.ReceipePage"
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:uniperHmi="clr-namespace:InfineonHMI"
xmlns:HMIToolkit="clr-namespace:HMIToolkit"
xmlns:common="clr-namespace:Common"
d:DataContext="{d:DesignInstance Type=uniperHmi:ReceipePageVM, IsDesignTimeCreatable=True}"
mc:Ignorable="d"
d:DesignHeight="1554" d:DesignWidth="3840">
<Page.Resources>
<CollectionViewSource x:Key="FlowStations" Source="{Binding FlowStationsVm.FlowStations}"/>
<HMIToolkit:BoolToVisibilityConverter x:Key="BoolToVisibilityConverterHide"
True="Hidden"
False="Visible"/>
<HMIToolkit:BoolToVisibilityConverter x:Key="BoolToVisibilityConverterVisible"
True="Visible"
False="Hidden"/>
</Page.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Orientation="Horizontal">
<Button Grid.Row="0" x:Name="BtnReadReceipeFile"
Content="Rezept aus Datei Laden"
Width="450" Height="140" FontSize="30"
Command="{Binding ReadReceipeFileCommand}"
HorizontalAlignment="Left"
Margin="10"/>
<Button Grid.Row="0" x:Name="BtnWriteReceipeFile"
Content="Rezept speichern"
Width="450" Height="140" FontSize="30"
Command="{Binding WriteReceipeFileCommand}"
HorizontalAlignment="Left"
Margin="10"/>
<Button Grid.Row="0" x:Name="BtnWriteToPlc"
Content="Sende Daten an SPS"
Width="450" Height="140" FontSize="30"
Command="{Binding WriteToPlcCommand}"
HorizontalAlignment="Left"
Margin="10"/>
<Button Grid.Row="0" x:Name="BtnReadToPlc"
Content="Lese Daten von SPS"
Width="450" Height="140" FontSize="30"
Command="{Binding LoadFromPlcCommand}"
HorizontalAlignment="Left"
Margin="10"
/>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Daten an SPS gesendet: " VerticalAlignment="Center" FontSize="30"/>
<Label Grid.Row="1" Content="Daten in Datei gespeichert: " VerticalAlignment="Center" FontSize="30"/>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image Grid.Row="0" Source="/Resources/X.png" Visibility="{Binding DataSendToPlc, Converter={StaticResource BoolToVisibilityConverterHide}}" MaxHeight="60" Margin="10"/>
<Image Grid.Row="0" Source="/Resources/Check.png" Visibility="{Binding DataSendToPlc, Converter={StaticResource BoolToVisibilityConverterVisible}}" MaxHeight="60" Margin="10"/>
<Image Grid.Row="1" Source="/Resources/X.png" Visibility="{Binding DataSaved, Converter={StaticResource BoolToVisibilityConverterHide}}" MaxHeight="60" Margin="10"/>
<Image Grid.Row="1" Source="/Resources/Check.png" Visibility="{Binding DataSaved, Converter={StaticResource BoolToVisibilityConverterVisible}}" MaxHeight="60" Margin="10"/>
</Grid>
<Button Grid.Row="0" x:Name="BtnDiscardChanges"
Content="Änderungen verwerfen"
Width="450" Height="140" FontSize="30"
Command="{Binding DiscardChangesCommand}"
HorizontalAlignment="Left"
Margin="10"
/>
</StackPanel>
<Label Grid.Column="0" Grid.Row="1" Content="Allgemein: " VerticalAlignment="Center" FontSize="24"></Label>
<common:ParamControlInt DataContext="{Binding CameraProgramsVm}" Grid.Column="0" Grid.Row="2" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlInt DataContext="{Binding ChucksVm}" Grid.Column="0" Grid.Row="3" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlInt DataContext="{Binding GripperVm}" Grid.Column="0" Grid.Row="4" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding DiameterVm}" Grid.Column="0" Grid.Row="6" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding ThicknessVm}" Grid.Column="0" Grid.Row="7" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label Grid.Column="0" Grid.Row="9" Content="Heiz-/ Kühlplatte: " VerticalAlignment="Center" FontSize="24"></Label>
<common:ParamControlFloat DataContext="{Binding RestingTimeHotplateVm}" Grid.Column="0" Grid.Row="10" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding TargetTemperatureHotplateVm}" Grid.Column="0" Grid.Row="11" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding RestingTimeCoolplateVm}" Grid.Column="0" Grid.Row="12" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding TargetTemperatureCoolplateVm}" Grid.Column="0" Grid.Row="13" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label Grid.Column="0" Grid.Row="15" Content="Ätzerparameter: " VerticalAlignment="Center" FontSize="24"></Label>
<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"/>
<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: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"/>
<common:ParamControlFloat DataContext="{Binding HvTestOkVoltageVm}" Grid.Column="1" Grid.Row="9" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding HvtestTemperatureVm}" Grid.Column="1" Grid.Row="10" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding HvtestVoltageVm}" Grid.Column="1" Grid.Row="11" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<common:ParamControlFloat DataContext="{Binding HvtestPressureN2Vm}" Grid.Column="1" Grid.Row="12" Margin="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label Grid.Column="1" Grid.Row="14" Content="Traypositionen" FontSize="35"></Label>
<Grid Grid.Column="1" Grid.Row="15" Grid.RowSpan="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.8*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0" ItemsSource="{Binding TrayPositions}"
SelectedItem="{Binding SelectedTrayPosition}"
AutoGenerateColumns="False" CanUserAddRows="False" FontSize="30" >
<DataGrid.Columns>
<DataGridTextColumn Header="Pos Nr." Binding="{Binding PosId}" IsReadOnly="True">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Pos X" Binding="{Binding PosX, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True}" Width="170">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Pos Y" Binding="{Binding PosY, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True}" Width="170">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<StackPanel Grid.Column="1" Orientation="Vertical">
<Button Content="+" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding AddTrayPositionCommand}" IsEnabled="{Binding CanAddTrayPosition}"/>
<Button Content="-" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding RemoveTrayPositionCommand}" IsEnabled="{Binding CanRemoveTrayPosition}"/>
<Button Content="↑" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding TrayPositionUpCommand}"/>
<Button Content="↓" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding TrayPositionDownCommand}"/>
</StackPanel>
</Grid>
<Label Grid.Column="2" Grid.Row="1" Content="Durchlaufrezept Tabelle" FontSize="30"/>
<Grid Grid.Column="2" Grid.Row="2" Grid.RowSpan="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90*"/>
<ColumnDefinition Width="10*"/>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0" ItemsSource="{Binding FlowReceipe.FlowReceipeEntries}"
SelectedItem="{Binding SelectedFlowReceipeEntry, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False" CanUserAddRows="False" FontSize="30" CanUserReorderColumns="False" CanUserSortColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="NodeID" Binding="{Binding NodeId, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Prio" Binding="{Binding Priority, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Header="Station">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding Source={StaticResource FlowStations}}"
SelectedValue="{Binding Station, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Station, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="False"
FontSize="30">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--<DataGridComboBoxColumn Header="Station"
ItemsSource="{Binding Source={StaticResource FlowStations}}"
SelectedValueBinding="{Binding Station, NotifyOnTargetUpdated=True, NotifyOnSourceUpdated=True}"
>
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="FontSize" Value="30"/>
<Setter Property="IsHitTestVisible" Value="False"/>
<Setter Property="Focusable" Value="False"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>-->
<DataGridTextColumn Header="Max. Wdh." Binding="{Binding MaxRetries, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Nächste Node" Binding="{Binding NextNodeSuccess, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Nächste Node bei Wdh." Binding="{Binding NextNodeRetry, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Nächste Node bei Fail" Binding="{Binding NextNodeFail, UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<StackPanel Grid.Column="1" Orientation="Vertical">
<Button Content="+" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding AddFlowReceipeEntryCommand}" IsEnabled="{Binding CanAddFlowReceipeEntry}"></Button>
<Button Content="-" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding RemoveFlowReceipeEntryCommand}" IsEnabled="{Binding CanRemoveFlowReceipeEntry}"></Button>
<Button Content="↑" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding FlowReceipeEntryUpCommand}"></Button>
<Button Content="↓" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding FlowReceipeEntryDownCommand}"></Button>
</StackPanel>
</Grid>
<Label Grid.Column="2" Grid.Row="9" Content="Ätzschritte Mecademic Roboter" FontSize="30"></Label>
<Grid Grid.Column="2" Grid.ColumnSpan="1" Grid.Row="10" Grid.RowSpan="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90*"/>
<ColumnDefinition Width="10*"/>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0" ItemsSource="{Binding EtcherRobotSteps}"
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">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Pos Y" Binding="{Binding PosY}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Pos Z" Binding="{Binding PosZ}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<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"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Geschw." Binding="{Binding MoveSpeed}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Wartez." Binding="{Binding Delay}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Medium" Binding="{Binding Medium}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="30"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<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">
<Button Content="+" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding AddEtchRobotStepCommand}" IsEnabled="{Binding CanAddEtchRobotStep}"></Button>
<Button Content="-" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding RemoveEtchRobotStepCommand}" IsEnabled="{Binding CanRemoveEtchRobotStep}"></Button>
<Button Content="↑" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding EtchRobotStepUpCommand}"></Button>
<Button Content="↓" FontSize="24" Width="60" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="10" Command="{Binding EtchRobotStepDownCommand}"></Button>
</StackPanel>
</Grid>
</Grid>
</Page>