Browse Source

update galilconfig name

chenkui 2 weeks ago
parent
commit
f4a23bc2c9

+ 46 - 47
CyberX8_MainPages/ViewModels/JobOperationViewModel.cs

@@ -128,8 +128,8 @@ namespace CyberX8_MainPages.ViewModels
         private bool _isLP3AutoStarted = false;
         private bool _isLP1CanCreatedJob = false;
         private bool _isLP2CanCreatedJob = false;
-        private bool _isLP3CanCreatedJob = false;
-        
+        private bool _isLP3CanCreatedJob = false;
+
         /// <summary>
         /// LP1 RecipeMode
         /// </summary>
@@ -284,8 +284,8 @@ namespace CyberX8_MainPages.ViewModels
         {
             get { return m_ButtonIsEnableLP3; }
             set { SetProperty(ref m_ButtonIsEnableLP3, value); }
-        }
-        
+        }
+
         /// <summary>
         /// Created job 按钮可用性
         /// </summary>
@@ -431,8 +431,7 @@ namespace CyberX8_MainPages.ViewModels
 
         private DelegateCommand<object> _LPMapCommand;
         public DelegateCommand<object> LPMapCommand =>
-            _LPMapCommand ?? (_LPMapCommand = new DelegateCommand<object>(OnLPLoad));
-
+            _LPMapCommand ?? (_LPMapCommand = new DelegateCommand<object>(OnLPMap));
         private DelegateCommand<object> _SeqTypeChangeCommand;
         public DelegateCommand<object> SeqTypeChangeCommand =>
             _SeqTypeChangeCommand ?? (_SeqTypeChangeCommand = new DelegateCommand<object>(OnSeqTypeChange));
@@ -446,8 +445,8 @@ namespace CyberX8_MainPages.ViewModels
         {
             LP1WaferAssociation = new WaferAssociationInfo();
             LP3WaferAssociation = new WaferAssociationInfo();
-            LP2WaferAssociation = new WaferAssociationInfo();
-            
+            LP2WaferAssociation = new WaferAssociationInfo();
+
             SequenceSelectedItemsSource1 = new ObservableCollection<string>();
             SequenceSelectedItemsSource2 = new ObservableCollection<string>();
             SequenceSelectedItemsSource3 = new ObservableCollection<string>();
@@ -462,7 +461,7 @@ namespace CyberX8_MainPages.ViewModels
             LP1RecipeMode = true;
             LP2RecipeMode = true;
             LP3RecipeMode = true;
-            addDataKeys();           
+            addDataKeys();
         }
         #endregion
 
@@ -471,7 +470,7 @@ namespace CyberX8_MainPages.ViewModels
         /// 加载数据
         /// </summary>
         public void LoadData(string systemName)
-        {                  
+        {
             if (_timer == null)
             {
                 _timer = new DispatcherTimer();
@@ -546,7 +545,7 @@ namespace CyberX8_MainPages.ViewModels
             ControlJobInfo lp2Cj = CommonFunction.GetValue<ControlJobInfo>(RtDataValues, "LP2.CurrentControlJob");
             if (lp2Cj == null)
             {
-                ButtonIsEnableLP2 = true; 
+                ButtonIsEnableLP2 = true;
                 LP2WaferAssociation.JobStatus = "";
             }
             else
@@ -571,7 +570,7 @@ namespace CyberX8_MainPages.ViewModels
             LP3WaferCount = LP3WaferAssociation.ModuleData.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
 
             _isLP1Docked = CommonFunction.GetValue<bool>(RtDataValues, "LP1.IsDocked");
-            if (!_isLP1Docked)
+            if (!_isLP1Docked && LP1WaferCount == 0)
             {
                 LP1WaferAssociation.SlotFrom = 1;
                 LP1WaferAssociation.SlotTo = 25;
@@ -581,11 +580,11 @@ namespace CyberX8_MainPages.ViewModels
                 _LP1SequenceNameBuffer = null;
                 LP1WaferAssociation.CycleNumber = 1;
                 LP1WaferAssociation.IsEnableCycle = false;
-                AssociateSequence(LP1WaferAssociation, false);
-                               
+                AssociateSequence(LP1WaferAssociation, false);
+
             }
             _isLP2Docked = CommonFunction.GetValue<bool>(RtDataValues, "LP2.IsDocked");
-            if (!_isLP2Docked)
+            if (!_isLP2Docked && LP2WaferCount == 0)
             {
                 LP2WaferAssociation.SlotFrom = 1;
                 LP2WaferAssociation.SlotTo = 25;
@@ -595,11 +594,11 @@ namespace CyberX8_MainPages.ViewModels
                 _LP2SequenceNameBuffer = null;
                 LP2WaferAssociation.CycleNumber = 1;
                 LP2WaferAssociation.IsEnableCycle = false;
-                AssociateSequence(LP2WaferAssociation, false);
-                
+                AssociateSequence(LP2WaferAssociation, false);
+
             }
             _isLP3Docked = CommonFunction.GetValue<bool>(RtDataValues, "LP3.IsDocked");
-            if (!_isLP3Docked)
+            if (!_isLP3Docked && LP3WaferCount == 0)
             {
                 LP3WaferAssociation.SlotFrom = 1;
                 LP3WaferAssociation.SlotTo = 25;
@@ -609,8 +608,8 @@ namespace CyberX8_MainPages.ViewModels
                 _LP3SequenceNameBuffer = null;
                 LP3WaferAssociation.CycleNumber = 1;
                 LP3WaferAssociation.IsEnableCycle = false;
-                AssociateSequence(LP3WaferAssociation, false);
-                
+                AssociateSequence(LP3WaferAssociation, false);
+
             }
             LP1WaferAssociation.SequenceType = LP1RecipeMode ? "Production" : "Engineering";
             LP2WaferAssociation.SequenceType = LP2RecipeMode ? "Production" : "Engineering";
@@ -701,15 +700,15 @@ namespace CyberX8_MainPages.ViewModels
         private void OnSelectAll(object obj)
         {
             var info = obj as WaferAssociationInfo;
-            var module = info.ModuleData.ModuleID;
-  
+            var module = info.ModuleData.ModuleID;
+
             if (CommonFunction.GetValue<bool>(RtDataValues, $"{module}.IsLoaded"))
             {
                 info.SlotFrom = 1;
-                info.SlotTo = 25;              
+                info.SlotTo = 25;
                 AssociateSequence(info, true);
-            }
-            
+            }
+
         }
         /// <summary>
         /// 取消选择所有Wafer
@@ -728,13 +727,13 @@ namespace CyberX8_MainPages.ViewModels
         private void OnCreateJob(object obj)
         {
             var info = obj as WaferAssociationInfo;
-            List<string> slotSequence = new List<string>();       
-
+            List<string> slotSequence = new List<string>();
+
             info.ModuleData.WaferManager.Wafers.ForEach(key => { slotSequence.Insert(0, key.SequenceName); });
             if (info.LotId == "" && info.JobID != "") info.LotId = info.JobID;
             if (info.LotId != "" && info.JobID == "") info.JobID = info.LotId;
-            info.LotIdSaved = true;
-            
+            info.LotIdSaved = true;
+
             Dictionary<string, object> param = new Dictionary<string, object>()
             {
                 {"JobId", info.JobID},
@@ -745,11 +744,11 @@ namespace CyberX8_MainPages.ViewModels
                 {"CycleNumber",info.CycleNumber},
                 {"SequenceType", info.SequenceType}
             };
-            if(info.JobID != "" || info.LotId != "")
+            if (info.JobID != "" || info.LotId != "")
             {
 
                 InvokeClient.Instance.Service.DoOperation("System.CreateJob", param);
-            }           
+            }
         }
         /// <summary>
         /// 取消任务
@@ -795,7 +794,7 @@ namespace CyberX8_MainPages.ViewModels
             var moduleName = obj.ToString();
             switch (moduleName)
             {
-                case "LP1":                   
+                case "LP1":
                     if (!string.IsNullOrEmpty(_LP1SequenceNameBuffer) && LP1SequenceName == null) LP1SequenceName = _LP1SequenceNameBuffer;
                     _LP1SequenceNameBuffer = LP1SequenceName;
                     LP1WaferAssociation.SequenceName = LP1SequenceName;
@@ -905,7 +904,7 @@ namespace CyberX8_MainPages.ViewModels
         /// 添加RT查询key
         /// </summary>
         private void addDataKeys()
-        {                     
+        {
             m_RtDataKeys.Add("LP1.IsLoaded");
             m_RtDataKeys.Add("LP2.IsLoaded");
             m_RtDataKeys.Add("LP3.IsLoaded");
@@ -936,12 +935,12 @@ namespace CyberX8_MainPages.ViewModels
 
             m_RtDataKeys.Add("LP1.IsDocked");
             m_RtDataKeys.Add("LP2.IsDocked");
-            m_RtDataKeys.Add("LP3.IsDocked");
-
-            m_RtDataKeys.Add("LP1.WaferSize");
-            m_RtDataKeys.Add("LP2.WaferSize");
-            m_RtDataKeys.Add("LP3.WaferSize");
-
+            m_RtDataKeys.Add("LP3.IsDocked");
+
+            m_RtDataKeys.Add("LP1.WaferSize");
+            m_RtDataKeys.Add("LP2.WaferSize");
+            m_RtDataKeys.Add("LP3.WaferSize");
+
         }
         /// <summary>
         /// 更新Wafer情况
@@ -965,8 +964,8 @@ namespace CyberX8_MainPages.ViewModels
                     {
                         info.ModuleData.WaferManager.Wafers[24 - i].SequenceName = cjInfo.SequenceNameList[i];
                     }
-                }
-                
+                }
+
             }
             else
             {
@@ -974,13 +973,13 @@ namespace CyberX8_MainPages.ViewModels
                 {
                     info.LotId = "";
                     info.JobID = "";
-                    info.JobStatus = "";                  
+                    info.JobStatus = "";
                     AssociateSequence(info, false);
                 }
             }
         }
-        private void OnLPLoad(object obj)
-        { 
+        private void OnLPMap(object obj)
+        {
             InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Map");
 
         }
@@ -999,8 +998,8 @@ namespace CyberX8_MainPages.ViewModels
                     foreach (var seqitem in seqitems)
                     {
                         SequenceSelectedItemsSource1.Add(seqitem);
-                    }
-                    
+                    }
+
                     break;
                 case "LP2":
                     info.SequenceType = LP2RecipeMode ? "Production" : "Engineering";
@@ -1022,7 +1021,7 @@ namespace CyberX8_MainPages.ViewModels
                     break;
                 default:
                     break;
-            }                         
+            }
         }
         #endregion
     }

+ 2 - 1
CyberX8_MainPages/ViewModels/WaferHolderViewModel.cs

@@ -320,8 +320,9 @@ namespace CyberX8_MainPages.ViewModels
             MoveLocationCommand = new DelegateCommand<object>(MoveLocationAction);
             //Wafer尺寸集合
             WaferSizeLst = new List<string>();
+            WaferSizeLst.Add("100");
+            WaferSizeLst.Add("150");
             WaferSizeLst.Add("200");
-            WaferSizeLst.Add("300");
             //化学液集合
             string chemistryContent = QueryDataClient.Instance.Service.GetConfig($"System.ChemistryList").ToString();
             if (!string.IsNullOrEmpty(chemistryContent))

+ 26 - 28
CyberX8_MainPages/Views/JobOperationView.xaml

@@ -98,7 +98,6 @@
             <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">
@@ -126,7 +125,7 @@
                             </StackPanel>
 
                             <customControls:PathButton  Grid.Row="1" IsEnabled="{Binding IsLP1Unable}" Content="Map" Width="90" Height="33" Command="{Binding LPMapCommand}"   CommandParameter="LP1"/>
-
+                           
                         </Grid>
                     </Border>
 
@@ -164,8 +163,7 @@
                                 <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>
+                            <customControls:PathButton Grid.Row="1" IsEnabled="{Binding IsLP3Unable}" Content="Map" Width="90" Height="33" Command="{Binding LPMapCommand}"   CommandParameter="LP3"/>                        </Grid>
                     </Border>
 
 
@@ -316,8 +314,8 @@
                     </StackPanel>
 
                     <StackPanel Grid.Row="6" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button Content="Select All" Width="94"  Height="33" Margin="10,2,10,2" Command="{Binding SelectAllCommand}"   CommandParameter="{Binding LP1WaferAssociation}"/>
-                        <Button Content="DeSelect All" Width="94"  Height="33" Margin="-5,2,10,2" Command="{Binding UnSelectAllCommand}"   CommandParameter="{Binding LP1WaferAssociation}"/>
+                        <Button Content="Select All" Width="94"  Height="28" Margin="10,2,10,2" Command="{Binding SelectAllCommand}"   CommandParameter="{Binding LP1WaferAssociation}"/>
+                        <Button Content="DeSelect All" Width="94"  Height="28" Margin="-5,2,10,2" Command="{Binding UnSelectAllCommand}"   CommandParameter="{Binding LP1WaferAssociation}"/>
                     </StackPanel>
 
                     <Grid Grid.Row="7" >
@@ -337,12 +335,12 @@
                     </Grid>
 
                     <StackPanel Grid.Row="8" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button IsEnabled="{Binding IsLP1CanCreatedJob}" Content="Create Job" Width="94"  Height="33" Margin="10,2,10,2" Command="{Binding CreateJobCommand}" CommandParameter="{Binding LP1WaferAssociation}"/>
+                        <Button IsEnabled="{Binding IsLP1CanCreatedJob}" Content="Create Job" Width="94"  Height="28" Margin="10,2,10,2" Command="{Binding CreateJobCommand}" CommandParameter="{Binding LP1WaferAssociation}"/>
                     </StackPanel>
 
                     <StackPanel Grid.Row="9" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button  IsEnabled="{Binding IsLP1AutoStoped}" Content="Start" Width="64"  Height="33" Margin="10,2,10,2" Command="{Binding StartCommand}" CommandParameter="{Binding LP1WaferAssociation}"/>
-                        <Button IsEnabled="{Binding IsLP1AutoStarted}" Content="Stop" Width="64"  Height="33" Margin="10,2,10,2" Command="{Binding StopCommand}" CommandParameter="{Binding LP1WaferAssociation}"/>
+                        <Button  IsEnabled="{Binding IsLP1AutoStoped}" Content="Start" Width="64"  Height="28" Margin="10,2,10,2" Command="{Binding StartCommand}" CommandParameter="{Binding LP1WaferAssociation}"/>
+                        <Button IsEnabled="{Binding IsLP1AutoStarted}" Content="Stop" Width="64"  Height="28" Margin="10,2,10,2" Command="{Binding StopCommand}" CommandParameter="{Binding LP1WaferAssociation}"/>
                     </StackPanel>
 
                     <ListBox Grid.Row="10" ItemsSource="{Binding LP1WaferAssociation.ModuleData.WaferManager.Wafers}" Name="list1" IsEnabled="{Binding IsLP1Unable}">
@@ -502,8 +500,8 @@
                     </StackPanel>
 
                     <StackPanel Grid.Row="6" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button Content="Select All" Width="94"  Height="33" Margin="10,2,10,2" Command="{Binding SelectAllCommand}"   CommandParameter="{Binding LP2WaferAssociation}"/>
-                        <Button Content="DeSelect All" Width="94"  Height="33" Margin="-5,2,10,2" Command="{Binding UnSelectAllCommand}"   CommandParameter="{Binding LP2WaferAssociation}"/>
+                        <Button Content="Select All" Width="94"  Height="28" Margin="10,2,10,2" Command="{Binding SelectAllCommand}"   CommandParameter="{Binding LP2WaferAssociation}"/>
+                        <Button Content="DeSelect All" Width="94"  Height="28" Margin="-5,2,10,2" Command="{Binding UnSelectAllCommand}"   CommandParameter="{Binding LP2WaferAssociation}"/>
                     </StackPanel>
 
                     <Grid Grid.Row="7" >
@@ -525,13 +523,13 @@
                     </Grid>
 
                     <StackPanel Grid.Row="8" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button IsEnabled="{Binding IsLP2CanCreatedJob}" Content="Create Job" Width="94"  Height="33" Margin="10,2,10,2" Command="{Binding CreateJobCommand}" CommandParameter="{Binding LP2WaferAssociation}"/>
+                        <Button IsEnabled="{Binding IsLP2CanCreatedJob}" Content="Create Job" Width="94"  Height="28" Margin="10,2,10,2" Command="{Binding CreateJobCommand}" CommandParameter="{Binding LP2WaferAssociation}"/>
 
                     </StackPanel>
 
                     <StackPanel Grid.Row="9" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button IsEnabled="{Binding IsLP2AutoStoped}" Content="Start" Width="64"  Height="33" Margin="10,2,10,2" Command="{Binding StartCommand}" CommandParameter="{Binding LP2WaferAssociation}"/>
-                        <Button IsEnabled="{Binding IsLP2AutoStarted}" Content="Stop" Width="64"  Height="33" Margin="10,2,10,2" Command="{Binding StopCommand}" CommandParameter="{Binding LP2WaferAssociation}"/>
+                        <Button IsEnabled="{Binding IsLP2AutoStoped}" Content="Start" Width="64"  Height="28" Margin="10,2,10,2" Command="{Binding StartCommand}" CommandParameter="{Binding LP2WaferAssociation}"/>
+                        <Button IsEnabled="{Binding IsLP2AutoStarted}" Content="Stop" Width="64"  Height="28" Margin="10,2,10,2" Command="{Binding StopCommand}" CommandParameter="{Binding LP2WaferAssociation}"/>
                     </StackPanel>
 
                     <ListBox Grid.Row="10" ItemsSource="{Binding LP2WaferAssociation.ModuleData.WaferManager.Wafers}" Name="list2" IsEnabled="{Binding IsLP2Unable}">
@@ -691,8 +689,8 @@
                     </StackPanel>
 
                     <StackPanel Grid.Row="6" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button Content="Select All" Width="94"  Height="33" Margin="10,2,10,2" Command="{Binding SelectAllCommand}"   CommandParameter="{Binding LP3WaferAssociation}"/>
-                        <Button Content="DeSelect All" Width="94"  Height="33" Margin="-5,2,10,2" Command="{Binding UnSelectAllCommand}"   CommandParameter="{Binding LP3WaferAssociation}"/>
+                        <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" >
@@ -714,12 +712,12 @@
                     </Grid>
 
                     <StackPanel Grid.Row="8" Orientation="Horizontal" HorizontalAlignment="Center">
-                        <Button IsEnabled="{Binding IsLP3CanCreatedJob}" Content="Create Job" Width="94"  Height="33" Margin="10,2,10,2" Command="{Binding CreateJobCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
+                        <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="33" Margin="10,2,10,2" Command="{Binding StartCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
-                        <Button IsEnabled="{Binding IsLP3AutoStarted}" Content="Stop" Width="64"  Height="33" Margin="10,2,10,2" Command="{Binding StopCommand}" CommandParameter="{Binding LP3WaferAssociation}"/>
+                        <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}">
@@ -758,7 +756,7 @@
                                         <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 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"/>
@@ -789,14 +787,14 @@
         <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>
-        <TextBlock Canvas.Top="300" Canvas.Left="50" Text="{Binding RtDataValues[LP2.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP2.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
-HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
-        </TextBlock>
-        <TextBlock Canvas.Top="420" Canvas.Left="50" Text="{Binding RtDataValues[LP3.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP3.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
-           HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
+        <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>
+        <TextBlock Canvas.Top="300" Canvas.Left="50" Text="{Binding RtDataValues[LP2.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP2.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
+HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
+        </TextBlock>
+        <TextBlock Canvas.Top="420" Canvas.Left="50" Text="{Binding RtDataValues[LP3.WaferSize], StringFormat=({0})}" Visibility="{Binding RtDataValues[LP3.CassettePlaced], Converter={StaticResource BoolToVisibility2}}"
+           HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="16">
         </TextBlock>
     </Canvas>
 

+ 29 - 15
CyberX8_RT/Config/Devices/GalilControllerCfg-Simulator.xml

@@ -13,7 +13,7 @@
 			<DI Name="DI8"  Address="8" Invert="false"/>
 			<DI Name="DI9"  Address="9" Invert="false"/>
 		</Dig_In>
-		<GalilAxisConfig Name="Flip" Index="0" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="PUF1.Flip" Index="0" Type="Galil" CNType="-1">
 			<Speed>1000000</Speed>
 			<Acceleration>2000000</Acceleration>
 			<Deceleration>2000000</Deceleration>
@@ -27,7 +27,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="Rotation" Index="1" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="PUF1.Rotation" Index="1" Type="Galil" CNType="-1">
 			<Speed>500000</Speed>
 			<Acceleration>500000</Acceleration>
 			<Deceleration>250000</Deceleration>
@@ -55,7 +55,7 @@
 			<DI Name="DI8"  Address="8" Invert="false"/>
 			<DI Name="DI9"  Address="9" Invert="false"/>
 		</Dig_In>
-		<GalilAxisConfig Name="LSA" Index="4" Type="GalilLipsel" CNType="-1">
+		<GalilAxisConfig Name="Loader1.LSA" Index="4" Type="GalilLipsel" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -69,7 +69,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="TiltA" Index="5" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.TiltA" Index="5" Type="Galil" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -83,7 +83,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="ShuttleA" Index="6" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.ShuttleA" Index="6" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -97,7 +97,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="Rotation" Index="3" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.Rotation" Index="3" Type="Galil" CNType="-1">
 			<Speed>100000</Speed>
 			<Acceleration>50000</Acceleration>
 			<Deceleration>50000</Deceleration>
@@ -111,7 +111,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="LSB" Index="0" Type="GalilLipsel" CNType="-1">
+		<GalilAxisConfig Name="Loader1.LSB" Index="0" Type="GalilLipsel" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -125,7 +125,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="TiltB" Index="1" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.TiltB" Index="1" Type="Galil" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -139,7 +139,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="ShuttleB" Index="2" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.ShuttleB" Index="2" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -167,7 +167,7 @@
 			<DI Name="DI8"  Address="8" Invert="false"/>
 			<DI Name="DI9"  Address="9" Invert="false"/>
 		</Dig_In>
-		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Transporter1.Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -181,7 +181,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="Gantry" Index="1" Type="Galil" CNType="1">
+		<GalilAxisConfig Name="Transporter1.Gantry" Index="1" Type="Galil" CNType="1">
 			<Speed>400000</Speed>
 			<Acceleration>400000</Acceleration>
 			<Deceleration>400000</Deceleration>
@@ -209,7 +209,7 @@
 			<DI Name="DI8"  Address="8" Invert="false"/>
 			<DI Name="DI9"  Address="9" Invert="false"/>
 		</Dig_In>
-		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Transporter2.Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -223,7 +223,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="Gantry" Index="1" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Transporter2.Gantry" Index="1" Type="Galil" CNType="-1">
 			<Speed>400000</Speed>
 			<Acceleration>400000</Acceleration>
 			<Deceleration>400000</Deceleration>
@@ -251,7 +251,7 @@
 			<DI Name="DI8"  Address="8" Invert="false"/>
 			<DI Name="DI9"  Address="9" Invert="false"/>
 		</Dig_In>
-		<GalilAxisConfig Name="Rotation" Index="0" Type="GalilRotation" CNType="-1">
+		<GalilAxisConfig Name="SRD1.Rotation" Index="0" Type="GalilRotation" CNType="-1">
 			<Speed>529400</Speed>
 			<Acceleration>84000</Acceleration>
 			<Deceleration>84000</Deceleration>
@@ -264,6 +264,20 @@
 			<ForwardSoftwareLimit>0</ForwardSoftwareLimit>
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
-		</GalilAxisConfig>		
+		</GalilAxisConfig>
+		<GalilAxisConfig Name="SRD2.Rotation" Index="1" Type="GalilRotation" CNType="-1">
+			<Speed>529400</Speed>
+			<Acceleration>84000</Acceleration>
+			<Deceleration>84000</Deceleration>
+			<HomingSpeed>2500</HomingSpeed>
+			<HomingOffset>0</HomingOffset>
+			<HomingTimeOut>60000</HomingTimeOut>
+			<HomingAcceleration>84000</HomingAcceleration>
+			<HomingDeceleration>420000</HomingDeceleration>
+			<ReverseSoftwareLimit>0</ReverseSoftwareLimit>
+			<ForwardSoftwareLimit>0</ForwardSoftwareLimit>
+			<NegativeTorqueLimit>130</NegativeTorqueLimit>
+			<PositiveTorqueLimit>20</PositiveTorqueLimit>
+		</GalilAxisConfig>
 	</GalilDeviceConfig>
 </GalilControllerConfig>

+ 29 - 15
CyberX8_RT/Config/Devices/GalilControllerCfg.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <GalilControllerConfig>
   <GalilDeviceConfig Module="PUF1" IpAddress="10.0.0.22" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil40">
-	<GalilAxisConfig Name="Flip" Index="0" Type="Galil" CNType="-1">
+	<GalilAxisConfig Name="PUF1.Flip" Index="0" Type="Galil" CNType="-1">
 		<Speed>1000000</Speed>
 		<Acceleration>2000000</Acceleration>
 		<Deceleration>2000000</Deceleration>
@@ -15,7 +15,7 @@
 		<NegativeTorqueLimit>130</NegativeTorqueLimit>
 		<PositiveTorqueLimit>20</PositiveTorqueLimit>
 	</GalilAxisConfig>
-	<GalilAxisConfig Name="Rotation" Index="1" Type="Galil" CNType="-1">
+	<GalilAxisConfig Name="PUF1.Rotation" Index="1" Type="Galil" CNType="-1">
 		<Speed>500000</Speed>
 		<Acceleration>500000</Acceleration>
 		<Deceleration>250000</Deceleration>
@@ -31,7 +31,7 @@
 	</GalilAxisConfig>
   </GalilDeviceConfig>
 	<GalilDeviceConfig Module="Loader1" IpAddress="10.0.0.20" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">
-		<GalilAxisConfig Name="LSA" Index="4" Type="GalilLipsel" CNType="-1">
+		<GalilAxisConfig Name="Loader1.LSA" Index="4" Type="GalilLipsel" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -45,7 +45,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="TiltA" Index="5" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.TiltA" Index="5" Type="Galil" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -59,7 +59,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="ShuttleA" Index="6" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.ShuttleA" Index="6" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -73,7 +73,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="Rotation" Index="3" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.Rotation" Index="3" Type="Galil" CNType="-1">
 			<Speed>100000</Speed>
 			<Acceleration>50000</Acceleration>
 			<Deceleration>50000</Deceleration>
@@ -87,7 +87,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="LSB" Index="0" Type="GalilLipsel" CNType="-1">
+		<GalilAxisConfig Name="Loader1.LSB" Index="0" Type="GalilLipsel" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -101,7 +101,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="TiltB" Index="1" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.TiltB" Index="1" Type="Galil" CNType="-1">
 			<Speed>150000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -115,7 +115,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="ShuttleB" Index="2" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Loader1.ShuttleB" Index="2" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -134,7 +134,7 @@
 		<Dig_In>
 			<DI Name="r_TRANSPORT1_WS_HOLD_PRESENT"  Address="0" Invert="true" Bit="4"/>
 		</Dig_In>
-		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Transporter1.Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -148,7 +148,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="Gantry" Index="1" Type="Galil" CNType="1">
+		<GalilAxisConfig Name="Transporter1.Gantry" Index="1" Type="Galil" CNType="1">
 			<Speed>400000</Speed>
 			<Acceleration>400000</Acceleration>
 			<Deceleration>400000</Deceleration>
@@ -167,7 +167,7 @@
 		<Dig_In>
 			<DI Name="r_TRANSPORT2_WS_HOLD_PRESENT"  Address="0" Invert="true" Bit="4"/>
 		</Dig_In>
-		<GalilAxisConfig Name="Elevator" Index="0" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Transporter2.Elevator" Index="0" Type="Galil" CNType="-1">
 			<Speed>200000</Speed>
 			<Acceleration>200000</Acceleration>
 			<Deceleration>200000</Deceleration>
@@ -181,7 +181,7 @@
 			<NegativeTorqueLimit>130</NegativeTorqueLimit>
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
-		<GalilAxisConfig Name="Gantry" Index="1" Type="Galil" CNType="-1">
+		<GalilAxisConfig Name="Transporter2.Gantry" Index="1" Type="Galil" CNType="-1">
 			<Speed>400000</Speed>
 			<Acceleration>400000</Acceleration>
 			<Deceleration>400000</Deceleration>
@@ -196,8 +196,22 @@
 			<PositiveTorqueLimit>20</PositiveTorqueLimit>
 		</GalilAxisConfig>
   </GalilDeviceConfig>
-	<GalilDeviceConfig Module="SRD1" IpAddress="10.0.0.24" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">		
-		<GalilAxisConfig Name="Rotation" Index="0" Type="GalilRotation" CNType="-1">
+	<GalilDeviceConfig Module="SRD" IpAddress="10.0.0.24" Port="58678" SendTimeout="2000" RecvTimeout="2000" GalilType="Galil21">		
+		<GalilAxisConfig Name="SRD1.Rotation" Index="0" Type="GalilRotation" CNType="-1">
+			<Speed>529400</Speed>
+			<Acceleration>84000</Acceleration>
+			<Deceleration>84000</Deceleration>
+			<HomingSpeed>2500</HomingSpeed>
+			<HomingOffset>0</HomingOffset>
+			<HomingTimeOut>60000</HomingTimeOut>
+			<HomingAcceleration>84000</HomingAcceleration>
+			<HomingDeceleration>420000</HomingDeceleration>
+			<ReverseSoftwareLimit>0</ReverseSoftwareLimit>
+			<ForwardSoftwareLimit>0</ForwardSoftwareLimit>
+			<NegativeTorqueLimit>130</NegativeTorqueLimit>
+			<PositiveTorqueLimit>20</PositiveTorqueLimit>
+		</GalilAxisConfig>
+		<GalilAxisConfig Name="SRD2.Rotation" Index="1" Type="GalilRotation" CNType="-1">
 			<Speed>529400</Speed>
 			<Acceleration>84000</Acceleration>
 			<Deceleration>84000</Deceleration>

+ 2 - 2
CyberX8_RT/Devices/EFEM/Loadport.cs

@@ -210,11 +210,11 @@ namespace CyberX8_RT.Devices.EFEM
                     WaferSize = WaferSize.WS4;
                 }
             }
-            if (!_cassete100Present && !_cassete150Present && !_cassete200Present)
+            if (!_cassete100Present && !_cassete150Present )
             {
                 UpdateWaferArrive(false);
             }
-            else
+            else 
             {
                 UpdateWaferArrive(true);
             }

+ 10 - 1
CyberX8_RT/Modules/LPs/LoadPortModule.cs

@@ -14,6 +14,7 @@ using CyberX8_RT.Devices.EFEM;
 using CyberX8_Core;
 using Aitex.Core.Common;
 using Aitex.Core.Util;
+using Aitex.Core.RT.Log;
 
 namespace CyberX8_RT.Modules.LPs
 {
@@ -174,7 +175,15 @@ namespace CyberX8_RT.Modules.LPs
             OP.Subscribe($"{Module}.Dock", (cmd, args) => { PostMsg(MSG.Dock); return true; });
             OP.Subscribe($"{Module}.Undock", (cmd, args) => { PostMsg(MSG.Undock); return true; });
             
-            OP.Subscribe($"{Module}.Map", (cmd, args) => { PostMsg(MSG.Map); return true; });
+            OP.Subscribe($"{Module}.Map", (cmd, args) => 
+            {
+                if (!Singleton<RouteManager>.Instance.EFEM.IsHomed)
+                {
+                    LOG.WriteLog(eEvent.WARN_EFEM_ROBOT, Module, $"Efem is not homed,cannot map");
+                    return true;
+                }
+                PostMsg(MSG.Map); return true; 
+            });
 
             OP.Subscribe($"{Module}.Home", (cmd, args) => { PostMsg(MSG.Home); return true; });
             OP.Subscribe($"{Module}.Abort", (cmd, args) => { PostMsg(MSG.Abort); return true; });

+ 3 - 8
Framework/Common/Device/Galil/GalilControllerCfgManager.cs

@@ -123,20 +123,15 @@ namespace MECF.Framework.Common.Device.Galil
         private void InitializeGalilDevice(GalilDeviceConfig deviceConfig)
         {
             List<string> lst = new List<string>();
-            int maxIndex = 0;
             _moduleDeviceConfigDictionary[deviceConfig.Module] = deviceConfig;
             foreach(var item in deviceConfig.GalilAxises)
             {
-                _moduleNameIndexDictionary[$"{deviceConfig.Module}.{item.Name}"] = item.Index;
-                _moduleNameAxisConfigDictionary[$"{deviceConfig.Module}.{item.Name}"]=item;
+                _moduleNameIndexDictionary[item.Name] = item.Index;
+                _moduleNameAxisConfigDictionary[item.Name]=item;
                 if (!lst.Contains(item.Name))
                 {
                     lst.Add(item.Name);
                 }
-                if (maxIndex < item.Index)
-                {
-                    maxIndex= item.Index;
-                }
             }
             if (lst.Count > 0)
             {
@@ -167,7 +162,7 @@ namespace MECF.Framework.Common.Device.Galil
             List<string> lst = _moduleNameLstDictionary[module];
             foreach (var item in lst)
             {
-                string moduleName = $"{module}.{item}";
+                string moduleName = item;
                 if (!_moduleNameIndexDictionary.ContainsKey(moduleName))
                 {
                     continue;