Browse Source

revise releated view bug

chenzk 1 week ago
parent
commit
f9327c9289

+ 2 - 2
PunkHPX8_MainPages/ViewModels/SystemFacilitiesViewModel.cs

@@ -344,8 +344,8 @@ namespace PunkHPX8_MainPages.ViewModels
                     PlateCellFFUPressure = CommonFunction.GetValue<double>(_rtDataValueDic, $"System.{FACILITIES}.{FFU_PLATECELL_PRESSURE_PRESSURE}");
                     CorridorFFUPressure = CommonFunction.GetValue<double>(_rtDataValueDic, $"System.{FACILITIES}.{FFU_CORRIDOR_PRESSURE}");
 
-                    AllStatus = (NitrogenOn && ExtendCdaOn && CdaOn && DiWaterPressureOn && HouseChilledWaterFlowOn && VpwDiWEnable && DiFillEnable && DiReplenEnable && SrdDiWEnable && SampleStationEnable && FilterPurgeEnable) ? 1 :
-                     (!NitrogenOn && !CdaOn && !ExtendCdaOn && !DiWaterPressureOn && !HouseChilledWaterFlowOn && !VpwDiWEnable && !DiFillEnable && !DiReplenEnable && !SrdDiWEnable && !SampleStationEnable && !FilterPurgeEnable) ? 0 : -1;
+                    AllStatus = (NitrogenOn  && CdaOn && DiWaterPressureOn && HouseChilledWaterFlowOn && VpwDiWEnable && DiFillEnable && DiReplenEnable && SrdDiWEnable && SampleStationEnable && FilterPurgeEnable) ? 1 :
+                     (!NitrogenOn && !CdaOn  && !DiWaterPressureOn && !HouseChilledWaterFlowOn && !VpwDiWEnable && !DiFillEnable && !DiReplenEnable && !SrdDiWEnable && !SampleStationEnable && !FilterPurgeEnable) ? 0 : -1;
 
 
                 }

+ 1 - 6
PunkHPX8_MainPages/Views/DMReservoirView.xaml

@@ -182,12 +182,7 @@
                                    ModuleName="{Binding Module}"
                                    OperationModeValue="{Binding ReservoirsPersistent.OperatingMode}"/>
  
-            <Grid Grid.Row="2" Grid.Column="3">
-                <Label Content="Recipe Mode"  FontSize="15" FontWeight="Bold" Margin="0,0,-100,90" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"></Label>
-                <userControls:RecipeModeControl HorizontalAlignment="Center" Margin="0,140,-100,0" VerticalAlignment="Top" Width="190"
-                                   ModuleName="{Binding Module}"
-                                   RecipeModeValue="{Binding ReservoirsPersistent.RecipeOperatingMode}" />
-            </Grid>
+  
             <GroupBox Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Grid.RowSpan="3" HorizontalAlignment="Right" Height="200" VerticalAlignment="Center" Margin="0,0,-50,180">
                 <Grid>
                     <Grid.RowDefinitions>

+ 6 - 6
PunkHPX8_MainPages/Views/EfemView.xaml

@@ -36,17 +36,17 @@
 
         <userControls:FOUPFrontView UnitData="{Binding LP1ModuleInfo}"
                                     IsCassettePlaced="{Binding RtDataValues[LP1.CassettePlaced]}"
-                                    Canvas.Top="40" Canvas.Left="1650"/>
-        <TextBlock Text="LP1" Canvas.Top="15" Canvas.Left="1700" FontSize="12"
+                                    Canvas.Top="40" Canvas.Left="1600"/>
+        <TextBlock Text="LP1" Canvas.Top="15" Canvas.Left="1650" FontSize="12"
                    Visibility="{Binding RtDataValues[LP1.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"></TextBlock>
         <userControls:FOUPFrontView UnitData="{Binding LP2ModuleInfo}"
                                     IsCassettePlaced="{Binding RtDataValues[LP2.CassettePlaced]}"
-                                    Canvas.Top="40" Canvas.Left="1800"/>
-        <TextBlock Text="LP2" Canvas.Top="15" Canvas.Left="1850" FontSize="12"
+                                    Canvas.Top="40" Canvas.Left="1750"/>
+        <TextBlock Text="LP2" Canvas.Top="15" Canvas.Left="1800" FontSize="12"
                    Visibility="{Binding RtDataValues[LP2.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"></TextBlock>
 
 
-        <StackPanel Canvas.Top="500" Canvas.Left="1800">
+        <StackPanel Canvas.Top="500" Canvas.Left="1750">
             <userControls:FOUPFrontView UnitData="{Binding Dummy2ModuleInfo}"
                                         IsCassettePlaced="{Binding RtDataValues[Dummy2.CassettePlaced]}"
                                         ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
@@ -56,7 +56,7 @@
             <TextBlock Text="{Binding RtDataValues[Dummy2.WaferSize], StringFormat=({0})}" HorizontalAlignment="Center" Margin="0,-10,0,0" FontSize="12"
            Visibility="{Binding RtDataValues[Dummy2.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"/>
         </StackPanel>
-        <StackPanel Canvas.Top="500" Canvas.Left="1650">
+        <StackPanel Canvas.Top="500" Canvas.Left="1600">
             <userControls:FOUPFrontView UnitData="{Binding Dummy1ModuleInfo}"
                                         IsCassettePlaced="{Binding RtDataValues[Dummy1.CassettePlaced]}"
                                         ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>

+ 6 - 224
PunkHPX8_MainPages/Views/JobOperationView.xaml

@@ -94,20 +94,17 @@
             <Rectangle  Width="70" Height="70" Fill="Silver"  Opacity="0.8" RadiusX="0.1" RadiusY="0.1"
 />
         </Grid>
-        <Grid Canvas.Left="116" Canvas.Top="378" Panel.ZIndex="2" Visibility="{Binding LP3Unable,Converter={StaticResource bool2VisibilityConverter}}">
-            <Rectangle  Width="70" Height="70" Fill="Silver"  Opacity="0.8" RadiusX="0.1" RadiusY="0.1"
-                />
-        </Grid>
+  
         <Canvas Canvas.Top="74" Height="1126" Width="1920" HorizontalAlignment="Center" VerticalAlignment="Top">
 
-            <Canvas Height="406" Width="448" HorizontalAlignment="Left" Canvas.Left="42" VerticalAlignment="Center">
+            <Canvas Height="306" Width="448" HorizontalAlignment="Left" Canvas.Left="42" VerticalAlignment="Center">
 
                 <Grid Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Canvas}},Path=Height}" Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Canvas}},Path=Width}" Background="{DynamicResource Table_BG_Content}">
 
                     <Grid.RowDefinitions>
                         <RowDefinition/>
                         <RowDefinition/>
-                        <RowDefinition/>
+           
                     </Grid.RowDefinitions>
                     <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,0" Background="{DynamicResource Table_BG_Content}" Grid.Row="0" Padding="5,1,0,1">
                         <Grid Margin="206,5,5,5" >
@@ -148,23 +145,7 @@
                         </Grid>
                     </Border>
 
-                    <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Padding="5,1,0,1">
-                        <Grid Grid.Row="2" Margin="206,0,0,0">
-                            <Grid.RowDefinitions>
-                                <RowDefinition/>
-                                <RowDefinition/>
-                            </Grid.RowDefinitions>
-                            <Grid.ColumnDefinitions>
-                                <ColumnDefinition/>
-                                <ColumnDefinition/>
-                            </Grid.ColumnDefinitions>
-                            <StackPanel Grid.ColumnSpan="2" HorizontalAlignment="Left" VerticalAlignment="Center" Orientation="Horizontal">
-                                <TextBlock Text="Wafer Count:" FontSize="15" FontFamily="Arial" Margin="15,0,20,0"/>
-                                <TextBlock Text="{Binding LP3WaferCount}" FontSize="15" FontFamily="Arial"/>
-                            </StackPanel>
-
-                            <customControls:PathButton Grid.Row="1" IsEnabled="{Binding IsLP3Unable}" Content="Map" Width="90" Height="33" Command="{Binding LPMapCommand}"   CommandParameter="LP3"/>                        </Grid>
-                    </Border>
+      
 
 
                 </Grid>
@@ -193,19 +174,7 @@
                         </userControls:Foup>
                     </Canvas>
                 </Viewbox>
-                <Viewbox Stretch="Fill" Height="330" Width="330" Canvas.Left="158" Canvas.Top="283" HorizontalAlignment="Left" VerticalAlignment="Top">
-                    <Canvas Width="1000" Height="1000">
-                        <userControls:Loadport Canvas.Top="20" Width="300" Height="300" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top"/>
-                        <userControls:Foup Width="230" Height="450" Canvas.Left="-35"  Canvas.Top="53"  Visibility="{Binding RtDataValues[LP3.CassettePlaced],Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP3Style}"  RotateTransformValue="90">
-                            <userControls:Foup.RenderTransform>
-                                <TransformGroup>
-                                    <TranslateTransform/>
-                                </TransformGroup>
-                            </userControls:Foup.RenderTransform>
-                        </userControls:Foup>
-                    </Canvas>
-
-                </Viewbox>
+           
 
 
             </Canvas>
@@ -593,200 +562,13 @@
 
                 </Grid>
 
-                <Grid Grid.Column="3" HorizontalAlignment="Center" unity:GridOptions.ShowBorder="True" unity:GridOptions.LineBrush="Black" Background="{DynamicResource Table_BG_Content}" Width="AUTO" >
-                    <Grid.RowDefinitions>
-                        <RowDefinition Height="AUTO"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height="33"></RowDefinition>
-                        <RowDefinition Height ="1*"></RowDefinition>
-                    </Grid.RowDefinitions>
-
-                    <Label Content="LP3"  Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Grid.Row="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
-
-                    <StackPanel Grid.Row="1" Orientation="Horizontal">
-                        <TextBlock Margin="5,0,0,0" Text="Lot ID:"  TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center" Width="80"></TextBlock>
-                        <TextBox Margin="5,3,0,3" FontSize="15" Text="{Binding LP3WaferAssociation.LotId}" Width="242" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" RenderTransformOrigin="0.319,0.594" IsEnabled="{Binding ButtonIsEnableLP3}"/>
-                    </StackPanel>
-
-                    <StackPanel Grid.Row="2" Orientation="Horizontal">
-                        <TextBlock Margin="5,0,10,0" Text="Sequence Type:"  TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center" Width="111"></TextBlock>
-                        <CheckBox Margin="5" Content="Engineering" VerticalAlignment="Center" IsChecked="{Binding LP3RecipeMode,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding ButtonIsEnableLP3}">
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="Checked">
-                                    <i:InvokeCommandAction Command="{Binding SeqTypeChangeCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                                </i:EventTrigger>
-                                <i:EventTrigger EventName="Unchecked">
-                                    <i:InvokeCommandAction Command="{Binding SeqTypeChangeCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </CheckBox>
-                        <CheckBox Margin="5" Content="Production" VerticalAlignment="Center" IsChecked="{Binding LP3RecipeMode}" IsEnabled="{Binding ButtonIsEnableLP3}">
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="Checked">
-                                    <i:InvokeCommandAction Command="{Binding SeqTypeChangeCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                                </i:EventTrigger>
-                                <i:EventTrigger EventName="Unchecked">
-                                    <i:InvokeCommandAction Command="{Binding SeqTypeChangeCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </CheckBox>
-                    </StackPanel>
-
-                    <StackPanel Grid.Row="3" Orientation="Horizontal">
-                        <TextBlock Margin="5,0,0,0" Text="Sequence:"  TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center" Width="80"></TextBlock>
-                        <ComboBox Margin="5,3,0,3" Width="242" SelectedItem="{Binding LP3SequenceName}" ItemsSource="{Binding SequenceSelectedItemsSource3}" IsEnabled="{Binding ButtonIsEnableLP3}">
-                            <i:Interaction.Triggers>
-                                <i:EventTrigger EventName="SelectionChanged">
-                                    <i:InvokeCommandAction Command="{Binding SelectionChangedCommand}" CommandParameter="{Binding LP3WaferAssociation.ModuleData.ModuleID}"/>
-                                </i:EventTrigger>
-                            </i:Interaction.Triggers>
-                        </ComboBox>
-                    </StackPanel>
-
-                    <Grid Grid.Row="4" >
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-                        </Grid.ColumnDefinitions>
-
-                        <StackPanel Orientation="Horizontal" >
-                            <TextBlock Text="Cycle Set:"  Margin="5,0,0,0" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" Width="65"></TextBlock>
-                            <CheckBox Margin="5" x:Name="IsEnableCycleCheckBox3" Content="IsEnable" VerticalAlignment="Center" Padding="3 0 0 0"  IsEnabled="{Binding ButtonIsEnableLP3}" IsChecked="{Binding LP3WaferAssociation.IsEnableCycle}"/>
-                        </StackPanel>
-
-                        <StackPanel Orientation="Horizontal" Grid.Column="1">
-                            <TextBlock Text="Cycle Num:"  Margin="5,0,0,0" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" Width="80"></TextBlock>
-                            <TextBox x:Name="CycleNumTextbox3" Margin="5,0,0,0" Width="72" VerticalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="20" BorderThickness="1"  Text="{Binding LP3WaferAssociation.CycleNumber}" >
-                                <TextBox.IsEnabled>
-                                    <MultiBinding Converter="{StaticResource mutiBoolToBool}">
-                                        <Binding Path="ButtonIsEnableLP3" />
-                                        <Binding ElementName="IsEnableCycleCheckBox3" Path="IsChecked"/>
-                                    </MultiBinding>
-                                </TextBox.IsEnabled>
-                            </TextBox>
-                        </StackPanel>
-
-                    </Grid>
-
-                    <StackPanel Grid.Row="5" Orientation="Horizontal">
-                        <TextBlock Text="Cycle Info:"  Margin="5,0,0,0" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" Width="80"></TextBlock>
-                        <TextBlock FontSize="12" FontFamily="Arial" VerticalAlignment="Center">
-                            <TextBlock.Text>
-                                <MultiBinding StringFormat="{}{0}/{1}      Wafer Count:  {2}" >
-                                    <Binding Path="RtDataValues[LP3.CycleSetPoint]"></Binding>
-                                    <Binding Path="RtDataValues[LP3.CycledCount]"></Binding>
-                                    <Binding Path="RtDataValues[LP3.CycledWafer]"></Binding>
-                                </MultiBinding>
-                            </TextBlock.Text>
-                        </TextBlock>
-                    </StackPanel>
-
-                    <StackPanel Grid.Row="6" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button Content="Select All" Width="94"  Height="28" Margin="10,2,10,2" Command="{Binding SelectAllCommand}"   CommandParameter="{Binding LP3WaferAssociation}"/>
-                        <Button Content="DeSelect All" Width="94"  Height="28" Margin="-5,2,10,2" Command="{Binding UnSelectAllCommand}"   CommandParameter="{Binding LP3WaferAssociation}"/>
-                    </StackPanel>
-
-                    <Grid Grid.Row="7" >
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition/>
-                            <ColumnDefinition/>
-                        </Grid.ColumnDefinitions>
-
-                        <StackPanel Orientation="Horizontal" >
-                            <TextBlock Margin="5,0,0,0" Text="Name:"  TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center" Width="52"></TextBlock>
-                            <TextBox Margin="0,3,0,3" FontSize="15" Text="{Binding LP3WaferAssociation.JobID}" Width="101" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" RenderTransformOrigin="0.319,0.594" IsEnabled="{Binding ButtonIsEnableLP3}"/>
-                        </StackPanel>
-
-                        <StackPanel Orientation="Horizontal" Grid.Column="1">
-                            <TextBlock Margin="5,0,0,0" Text="Status:"  TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="15" FontFamily="Arial" VerticalAlignment="Center" Width="52"></TextBlock>
-                            <TextBox Margin="0,3,0,3" FontSize="15" IsEnabled="False" Text="{Binding LP3WaferAssociation.JobStatus}" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Width="115" RenderTransformOrigin="0.319,0.594"/>
-                        </StackPanel>
-
-                    </Grid>
-
-                    <StackPanel Grid.Row="8" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button IsEnabled="{Binding IsLP3CanCreatedJob}" Content="Create Job" Width="94"  Height="28" Margin="10,2,10,2" Command="{Binding CreateJobCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                    </StackPanel>
-
-                    <StackPanel Grid.Row="9" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button IsEnabled="{Binding IsLP3AutoStoped}" Content="Start" Width="64"  Height="28" Margin="10,2,10,2" Command="{Binding StartCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                        <Button IsEnabled="{Binding IsLP3AutoStarted}" Content="Stop" Width="64"  Height="28" Margin="10,2,10,2" Command="{Binding StopCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                    </StackPanel>
-
-                    <ListBox Grid.Row="10" ItemsSource="{Binding LP3WaferAssociation.ModuleData.WaferManager.Wafers}" Name="list3" IsEnabled="{Binding IsLP3Unable}">
-                        <ListBox.Resources>
-                            <Style TargetType="ListBoxItem" BasedOn="{StaticResource ResourceKey={x:Type ListBoxItem}}">
-                                <Setter Property="Rectangle.StrokeThickness" Value="1"/>
-                            </Style>
-                        </ListBox.Resources>
-                        <ListBox.ItemTemplate>
-                            <DataTemplate>
-                                <Grid Height="18" Background="#F5F7FA">
-                                    <Grid.ColumnDefinitions>
-                                        <ColumnDefinition Width="AUTO"></ColumnDefinition>
-                                        <ColumnDefinition Width="AUTO"></ColumnDefinition>
-                                        <ColumnDefinition Width="AUTO"></ColumnDefinition>
-                                    </Grid.ColumnDefinitions>
-                                    <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0 0 1 1"  Width="110" >
-                                        <controls:Slot ViewType="Bottom"  WaferStatus="{Binding WaferStatus}" SlotID="{Binding SlotID}" ModuleID="{Binding ModuleID}" 
-                                                       SourceName="{Binding SourceName}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="8,1,8,1" 
-                                                       SlotMouseButtonDown="Slot_SlotMouseButtonDown" WaferTransferStarted="Slot_WaferTransferStarted" FontFamily="Arial" FontSize="2">
-                                        </controls:Slot>
-                                    </Border>
-                                    <Border Grid.Column="1" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Width="200" >
-                                        <Border.Style>
-                                            <Style>
-                                                <Style.Triggers>
-                                                    <DataTrigger Binding="{Binding WaferStatus}" Value="0">
-                                                        <Setter Property="Border.Background" Value="AliceBlue"/>
-                                                    </DataTrigger>
-                                                    <DataTrigger Binding="{Binding WaferStatus}" Value="1">
-                                                        <Setter Property="Border.Background" Value="AliceBlue"/>
-                                                    </DataTrigger>
-                                                </Style.Triggers>
-                                            </Style>
-                                        </Border.Style>
-                                        <TextBlock Name="txtSeqName"  Text="{Binding SequenceName}" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
-                                    </Border>
-                                    <Border  Grid.Column="2" BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1"  Width="110" Padding="5,1" >
-                                        <Button Width="60" Height="14" Command="{Binding Path=DataContext.SetSequenceCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}" CommandParameter="{Binding}" IsEnabled="{Binding ButtonIsEnableLP1}">
-                                            <Button.Style>
-                                                <Style TargetType="{x:Type Button}" BasedOn="{StaticResource ResourceKey={x:Type Button}}">
-                                                    <Setter Property="Button.Content" Value="Remove"/>
-                                                    <Setter Property="FontSize" Value="10" />
-                                                    <Style.Triggers>
-                                                        <DataTrigger Binding="{Binding ElementName=txtSeqName, Path=Text}" Value="{x:Static sys:String.Empty}">
-                                                            <Setter Property="Button.Content" Value="Set"/>
-                                                        </DataTrigger>
-                                                        <DataTrigger Binding="{Binding WaferStatus}" Value="0">
-                                                            <Setter Property="Button.IsEnabled" Value="False"/>
-                                                        </DataTrigger>
-                                                    </Style.Triggers>
-                                                </Style>
-                                            </Button.Style>
-                                        </Button>
-                                    </Border>
-
-                                </Grid>
-                            </DataTemplate>
-                        </ListBox.ItemTemplate>
-                    </ListBox>
-
-                </Grid>
+               
 
             </Grid>
 
         </Canvas>
         <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP1" FontSize="20" Width="40"  Height="28" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" Canvas.Left="50" Canvas.Top="130" VerticalAlignment="Top"/>
         <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP2" FontSize="20" Width="40"  Height="28" Background="Transparent" HorizontalContentAlignment="Center" Canvas.Left="50" Canvas.Top="266" HorizontalAlignment="Center" VerticalAlignment="Top"/>
-        <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP3" FontSize="20" Width="40"  Height="28" Background="Transparent" HorizontalContentAlignment="Center" Canvas.Left="50" Canvas.Top="398" HorizontalAlignment="Center" VerticalAlignment="Top"/>
         <TextBlock Canvas.Top="150" Canvas.Left="50" Text="{Binding RtDataValues[LP1.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP1.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
 HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
         </TextBlock>

+ 1 - 0
PunkHPX8_MainPages/Views/PlatingCellHomePageView.xaml

@@ -177,6 +177,7 @@
                                                 VerticalStation="{Binding VerticalMotionData.MotorPosition}"
                                                 SelectedWaferSize="{Binding SelectedWaferSize,Mode=TwoWay}"
                                                 WaferSizeList="{Binding WaferSizeList}"
+                                                WaferSize="{Binding PlatingCellPersistent.PlatingCellWaferSize}"
                                                 ClamshellSensor="{Binding PlatingCellCommonData.ClamShellDistance}"
                                                 IsClamshellOpen="{Binding PlatingCellCommonData.ClamShellClose,Converter={StaticResource BoolToBool}}"
                                                 IsClamshellClose="{Binding PlatingCellCommonData.ClamShellClose}"

+ 3 - 10
PunkHPX8_MainPages/Views/VPWCellView.xaml

@@ -88,12 +88,7 @@
         </Grid>
 
         
-        <Grid Grid.Row="2" Grid.Column="3" Grid.RowSpan="2" Margin="25,0,0,80" VerticalAlignment="Center">
-            <UserControls:RecipeModeControl Margin="5,40,35,10"
-                                     ModuleName="{Binding Module}"
-                                     RecipeModeValue="{Binding VpwCellPersistent.RecipeOperatingMode}"
-                                     ></UserControls:RecipeModeControl>
-        </Grid>
+
 
 
         <Grid Grid.Row="1" Grid.Column="3">
@@ -119,11 +114,9 @@
 
 
 
-        <Grid Grid.Row="3" Grid.Column="3" >
-            <Button Margin="0,20,0,0" IsEnabled="True" VerticalAlignment="Top" Style="{StaticResource SysBtnStyle}" Height="30" Width="120" HorizontalAlignment="Center" Content="Home" Command="{Binding HomeCommand}" />
-        </Grid>
+ 
 
-        <Label Grid.Row="2" Grid.Column="3" Margin="0,0,0,0" Content="Recipe Mode"  FontSize="15" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"></Label>
+      
 
 
 

+ 2 - 10
PunkHPX8_MainPages/Views/VPWMainView.xaml

@@ -109,22 +109,14 @@
                                                ></UserControls:OperatingModeControl>
         </Grid>
 
-        <Grid Grid.Row="2" Grid.Column="3" Margin="25,10,0,0">
-            <UserControls:RecipeModeControl Margin="5,40,35,10"
-                                            ModuleName="{Binding Module}"
-                                            RecipeModeValue="{Binding VpwMainPersistent.RecipeOperatingMode}"
-                                            ></UserControls:RecipeModeControl>
-        </Grid>
+   
 
         <Grid Grid.Row="0" Grid.Column="3" Grid.RowSpan="2">
             <Button Margin="0,0,0,140" IsEnabled="True" Style="{StaticResource SysBtnStyle}" Height="30" Width="120" HorizontalAlignment="Center" Content="Initialize" Command="{Binding InitializeCommand}" />
         </Grid>
-        <Grid Grid.Row="2" Grid.Column="3" Grid.RowSpan="2">
-            <Button Margin="0,0,0,80" IsEnabled="True" Style="{StaticResource SysBtnStyle}" Height="30" Width="120" HorizontalAlignment="Center" Content="Home" Command="{Binding HomeCommand}" />
-        </Grid>
+
 
         <Label Grid.Row="1" Grid.Column="3" Margin="0,35,0,0" Content="Operating Mode"  FontSize="15" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Center"></Label>
-        <Label Grid.Row="2" Grid.Column="3" Margin="0,10,0,0" Content="Recipe Mode"  FontSize="15" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Center"></Label>
 
 
 

+ 3 - 3
PunkHPX8_RT/Modules/PlatingCell/PlatingCellCCRRoutine.cs

@@ -137,7 +137,7 @@ namespace PunkHPX8_RT.Modules.PlatingCell
             CheckCurrentStepAndTimeRemain();
             _platingCellDevice.UpdateStatus(_currentStep);
             Runner.RunIf(CCRStep.CSRStart, _cSREnable , () => RecordCCRStepStartTime(out _cSRStartTime),  _delay_1ms)
-                .RunIf(CCRStep.CSRClamshellClose, _cSREnable , () => { return _platingCellDevice.ClamShellClose(); }, CheckClamShellClosed, _delay_1ms)
+                .RunIf(CCRStep.CSRClamshellClose, _cSREnable , () => { return _platingCellDevice.ClamShellClose(); }, CheckClamShellClosed, _delay_1s)
                 .RunIf(CCRStep.CSROpenRinseValve, _cSREnable, OpenRinseValve, _delay_1ms)
                 .RunIf(CCRStep.CSRStartRotation, _cSREnable, () => CSRStartRotation(), _delay_1ms)
                 .WaitIf(CCRStep.CSRRinseMonitor, _cSREnable, MonitorCSRRinseRotationEndStatus)
@@ -146,7 +146,7 @@ namespace PunkHPX8_RT.Modules.PlatingCell
                 .WaitWithStopConditionIf(CCRStep.CSRCheckRotationStoped, _cSREnable, CheckRotationEndStatus, CheckRotationStopStatus)
 
                 .RunIf(CCRStep.CCR1Start, _cCR1Enable, () => RecordCCRStepStartTime(out _cCR1StartTime), _delay_1ms)
-                .RunIf(CCRStep.CCR1ClamshellOpen, _cCR1Enable, () => _platingCellDevice.ClamShellOpen(), CheckClamShellOpen, _delay_1ms)
+                .RunIf(CCRStep.CCR1ClamshellOpen, _cCR1Enable, () => _platingCellDevice.ClamShellOpen(), CheckClamShellOpen, _delay_1s)
                 .RunIf(CCRStep.OpenCCR1Valve, _cCR1Enable, OpenCCRValve, _delay_1ms)
                 .RunIf(CCRStep.CCR1StartRotation, _cCR1Enable, () => CCR1StartRotation(), _delay_1ms)
                 .WaitIf(CCRStep.CCR1CCRMonitor, _cCR1Enable, MonitorCCR1RotationEndStatus)
@@ -155,7 +155,7 @@ namespace PunkHPX8_RT.Modules.PlatingCell
                 .WaitWithStopConditionIf(CCRStep.CCR1CheckRotationStoped, _cCR1Enable, CheckRotationEndStatus, CheckRotationStopStatus)
 
                 .RunIf(CCRStep.CCR2Start, _cCR2Enable, () => RecordCCRStepStartTime(out _cCR2StartTime), _delay_1ms)
-                .RunIf(CCRStep.CCR2ClamshellOpen, _cCR2Enable, () => _platingCellDevice.ClamShellOpen(), CheckClamShellOpen, _delay_1ms)
+                .RunIf(CCRStep.CCR2ClamshellOpen, _cCR2Enable, () => _platingCellDevice.ClamShellOpen(), CheckClamShellOpen, _delay_1s)
                 .RunIf(CCRStep.OpenCCR2Valve, _cCR2Enable, OpenCCRValve, _delay_1ms)
                 .RunIf(CCRStep.CCR2StartRotation, _cCR2Enable, () => CCR2StartRotation(), _delay_1ms)
                 .WaitIf(CCRStep.CCR2CCRMonitor, _cCR2Enable, MonitorCCR2RotationEndStatus)

+ 26 - 1
PunkHPX8_RT/Modules/PlatingCell/PlatingCellEntity.cs

@@ -49,7 +49,7 @@ namespace PunkHPX8_RT.Modules.PlatingCell
             Abort,
             Init,
             CCR,
-            CCRAbort
+            CCRAbort,
         }
 
         #region 常量
@@ -254,6 +254,22 @@ namespace PunkHPX8_RT.Modules.PlatingCell
             OP.Subscribe($"{Module}.InitializeAll", (cmd, args) => { return CheckToPostMessage<PlatingCellState, PlatingCellMsg>(eEvent.ERR_RESERVOIR, Module.ToString(), (int)PlatingCellMsg.Initialize); });
             OP.Subscribe($"{Module}.ManualCCRStart", (cmd, args) => { return CheckToPostMessage<PlatingCellState, PlatingCellMsg>(eEvent.ERR_RESERVOIR, Module.ToString(), (int)PlatingCellMsg.CCR); });
             OP.Subscribe($"{Module}.ManualCCRStop", (cmd, args) => { return CheckToPostMessage<PlatingCellState, PlatingCellMsg>(eEvent.ERR_RESERVOIR, Module.ToString(), (int)PlatingCellMsg.CCRAbort); });
+            OP.Subscribe($"{Module}.CycleManualProcessRecipe", (cmd, args) =>
+            {
+                DepRecipe recipe = RecipeFileManager.Instance.LoadGenericityRecipe<DepRecipe>(args[0].ToString());
+                if (recipe == null)
+                {
+                    LOG.WriteLog(eEvent.ERR_PLATINGCELL, Module.ToString(), $"{args[0]} recipe is null");
+                    return false;
+                }
+                object[] objects = new object[args.Length];
+                objects[0] = recipe;
+                for (int i = 1; i < args.Length; i++)
+                {
+                    objects[i] = args[i];
+                }
+                return CheckToPostMessage<PlatingCellState, PlatingCellMsg>(eEvent.ERR_PREWET, Module.ToString(), (int)PlatingCellMsg.RunRecipe, objects);
+            });
         }
 
         /// 初始化状态机
@@ -363,6 +379,15 @@ namespace PunkHPX8_RT.Modules.PlatingCell
                     return false;
                 }
             }
+            string AnotherModule = ModuleMatcherManager.Instance.GetMatcherByModule(Module.ToString());
+            PlatingCellEntity anotherEntity = Singleton<RouteManager>.Instance.GetModule<PlatingCellEntity>(AnotherModule);
+            {
+                if(anotherEntity != null && anotherEntity.IsBusy)
+                {
+                    LOG.WriteLog(eEvent.ERR_METAL, Module.ToString(), "Another Platingcell is busy, can not initialized");
+                    return false;
+                }
+            }
             bool result = _initializeRoutine.Start(_persistentValue) == RState.Running;
             return result;
            

+ 2 - 2
PunkHPX8_RT/Modules/PlatingCell/PlatingCellInitializeRoutine.cs

@@ -108,14 +108,14 @@ namespace PunkHPX8_RT.Modules.PlatingCell
         public RState Monitor()
         {
             Runner.Run(InitializeStep.CheckPowerSupplierConnected, CheckPowerSupplierStatus, _delay_1ms)
-                .Run(InitializeStep.CheckClamShellClosed, () => _platingCellDevice.ClamShellClose(), CheckClamShellClosed, _delay_1ms)
+                .Run(InitializeStep.CheckClamShellClosed, () => _platingCellDevice.ClamShellClose(), CheckClamShellClosed, _delay_1s)
                 .Run(InitializeStep.VerticalGotoLoad, VerticalGotoLoad,100)
                 .WaitWithStopCondition(InitializeStep.VerticalGotoLoadCheck, CheckVerticalPositionStatus, CheckVerticalPositionRunStop)
                 .Run(InitializeStep.RotationHome, RotationGotoHome, 100)
                 .WaitWithStopCondition(InitializeStep.RotationHomeCheck, CheckRotationPositionStatus, CheckRotationPositionRunStop)
                 .Run(InitializeStep.AngleEntryTilt, () => _platingCellDevice.HeadtTiltAction(), CheckAngleTilt, _delay_1ms)
                 .Run(InitializeStep.AngleEntryVertical, () => _platingCellDevice.HeadtVerticalAction(), CheckAngleVertical, _delay_1ms)
-                .Run(InitializeStep.CheckClamShellClosed, () => _platingCellDevice.ClamShellOpen(), CheckClamShellOpen, _delay_1ms)
+                .Run(InitializeStep.CheckClamShellClosed, () => _platingCellDevice.ClamShellOpen(), CheckClamShellOpen, _delay_1s)
                 .Run(InitializeStep.OpenCAAndANIsoltaionValve, OpenReservoirIsolationValve,_delay_1ms)
                 .Delay(InitializeStep.CheckCellFlowWait, _flowFaultHoldOffTime)
                 .Run(InitializeStep.CheckCellFlow, CheckCellFlow, _delay_1ms)

+ 16 - 9
PunkHPX8_RT/Modules/PlatingCell/PlatingCellRunRecipeRoutine.cs

@@ -75,6 +75,9 @@ namespace PunkHPX8_RT.Modules.PlatingCell
         ///rotation Provider对象
         /// </summary>
         private BeckhoffProviderAxis _rotationProviderAxis;
+        ///是否选中dummy load
+        /// </summary>
+        private bool _isDummyLoad;
         /// cycle次数
         /// </summary>
         private int _cycle;
@@ -166,24 +169,24 @@ namespace PunkHPX8_RT.Modules.PlatingCell
                         () => CommonFunction.CheckRoutineStopState(_interRinseRoutine))
                 //启动Rotation/Rotation 设置为entry 转速 (没有intercal rinse 在entry开始的时候启动rotation)
                 .RunIf(RunRecipeStep.RotationStartEntry, !_recipe.RinseBeforeEntryEnable, RotationStartEntry, _delay_1ms)
-                 //有intercal rinse 直接变速 (rotation在interval rinse的时候已经启动了)
+                //有intercal rinse 直接变速 (rotation在interval rinse的时候已经启动了)
                 .RunIf(RunRecipeStep.RotationChangeToEntrySpeed, _recipe.RinseBeforeEntryEnable, () => { return ChangeSpeed(_recipe.EntrySpinSpeed); }, _delay_1ms) 
-                 //Angle tilt 操作
+                //Angle tilt 操作
                 .Run(RunRecipeStep.AngleTilt, _device.HeadtTiltAction, () => { return _device.PlatingCellDeviceData.IsHeadTilt; }, _delay_1s)
-                 //vertical goto plate
+                //vertical goto plate
                 .Run(RunRecipeStep.VerticalGotoPlate, () => { return StartVertical("Plate", _recipe.EntryZoffset); }, _delay_1ms)
-                 //vertical 到达entry位置前110ms
-                .DelayIf(RunRecipeStep.WaitEntryCurrentProtectedFromRinse, !_recipe.RinseBeforeEntryEnable, CalculateVerticaMoveTime("Rinse", "Entry") - 110 > 0 ? CalculateVerticaMoveTime("Rinse", "Entry") : 0) //提前110ms,多10ms
+                //vertical 到达entry位置前110ms (多10ms)
+                .DelayIf(RunRecipeStep.WaitEntryCurrentProtectedFromRinse, !_recipe.RinseBeforeEntryEnable, CalculateVerticaMoveTime("Rinse", "Entry") - 110 > 0 ? CalculateVerticaMoveTime("Rinse", "Entry") : 0) 
                 .DelayIf(RunRecipeStep.WaitEntryCurrentProtectedFromHome, _recipe.RinseBeforeEntryEnable, CalculateVerticaMoveTime("Home", "Entry") - 110 > 0 ? CalculateVerticaMoveTime("Home", "Entry") : 0)
-                 //有上电保护,此刻给电
+                //有上电保护,此刻给电
                 .RunIf(RunRecipeStep.RunPowerStepWithEntryProtect, !_recipe.IsEntryTypeCold,StartPowerStep, _delay_1ms)
-                 //检查vertical到达plate位置
+                //检查vertical到达plate位置
                 .WaitWithStopCondition(RunRecipeStep.CheckVerticalGotoPlate, CheckVerticalEnd, CheckVerticalError)
                 //Angle vertical操作
                 .Run(RunRecipeStep.AngleVertical, _device.HeadtVerticalAction, () => { return _device.PlatingCellDeviceData.IsHeadVertical; }, _delay_1s)
                 //如果不需要上电保护,执行plating delay
                 .RunIf(RunRecipeStep.WaitPlatingDelay, _recipe.IsEntryTypeCold, NullFun, _recipe.PlatingDelay)
-                 //没有上电保护,此刻给电
+                //没有上电保护,此刻给电
                 .RunIf(RunRecipeStep.RunPowerStep, _recipe.IsEntryTypeCold, StartPowerStep, _delay_1ms)
                 .WaitWithStopCondition(RunRecipeStep.RunPowerStepWait, CheckRecipeStepEndStatus, CheckRecipeStepStopStatus, _delay_1ms)
                 .End(RunRecipeStep.End, NullFun);
@@ -340,7 +343,11 @@ namespace PunkHPX8_RT.Modules.PlatingCell
             }
             if (objs.Length > 1)
             {
-                _cycle = (int)objs[1];
+                _isDummyLoad = (bool)objs[1];
+            }
+            if (objs.Length > 2)
+            {
+                _cycle = (int)objs[2];
             }
             _device = DEVICE.GetDevice<PlatingCellDevice>(Module);
             _rotationAxis = DEVICE.GetDevice<JetAxisBase>($"{Module}.Rotation");

+ 1 - 1
PunkHPX8_Themes/UserControls/PlatingCellStatusControl.xaml

@@ -123,7 +123,7 @@
                 <TextBlock  Text="{Binding ElementName=self,Path=Chemistry}" Foreground="Lime" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Left"/>
             </Border>
             <Border Grid.Row="2" Grid.Column="1"  Grid.ColumnSpan="2" Margin="5,5,5,5" Background="Black" Width="50" VerticalAlignment="Center" HorizontalAlignment="Left">
-                <TextBlock  Text="{Binding ElementName=self,Path=SelectedWaferSize,Mode=TwoWay}" Foreground="Lime" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Left"/>
+                <TextBlock  Text="{Binding ElementName=self,Path=WaferSize,Mode=TwoWay}" Foreground="Lime" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Left"/>
             </Border>
             <Border Grid.Row="2" Grid.Column="2"  Grid.ColumnSpan="2" Margin="32,5,5,5" Background="Black" Height="22" Width="50" VerticalAlignment="Center" HorizontalAlignment="Left">
                 <TextBlock  Text="mm" Foreground="Lime" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Left"/>

+ 16 - 1
PunkHPX8_Themes/UserControls/PlatingCellStatusControl.xaml.cs

@@ -112,7 +112,22 @@ namespace PunkHPX8_Themes.UserControls
                 this.SetValue(SelectedWaferSizeProperty, value);
             }
         }
-
+        public static readonly DependencyProperty WaferSizeProperty = DependencyProperty.Register(
+    "WaferSize", typeof(int), typeof(PlatingCellStatusControl), new FrameworkPropertyMetadata(200, FrameworkPropertyMetadataOptions.AffectsRender));
+        /// <summary>
+        /// WaferSize
+        /// </summary>
+        public int WaferSize
+        {
+            get
+            {
+                return (int)this.GetValue(WaferSizeProperty);
+            }
+            set
+            {
+                this.SetValue(WaferSizeProperty, value);
+            }
+        }
         public static readonly DependencyProperty ClamshellSensorProperty = DependencyProperty.Register(
             "ClamshellSensor", typeof(double), typeof(PlatingCellStatusControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));
         /// <summary>