Bläddra i källkod

1.修复不能跑atm模式的bug
2.修复PM第八路气体无法使用bug
3.修复TM/LL 漏气检测bug
4.主界面传片信息显示问题修复
5.IOList升级,软件升级

lixiang 7 månader sedan
förälder
incheckning
d6b8d32004

+ 23 - 12
Venus/Venus_MainPages/ViewModels/OperationOverViewModel.cs

@@ -131,10 +131,14 @@ namespace Venus_MainPages.ViewModels
             get { return m_LP1Loaded; }
             set
             {
-                if (m_LP1Loaded != value)
+                if (value != m_LP1Loaded && value == true)
                 {
                     InvokeClient.Instance.Service.DoOperation($"LP1.ReadCarrierId");
                 }
+                //if (value != m_LP1Loaded && value == false)
+                //{
+                //    RtDataValues["LP1.CarrierId"] = "";
+                //}
                 SetProperty(ref m_LP1Loaded, value);
             }
         }
@@ -143,10 +147,14 @@ namespace Venus_MainPages.ViewModels
             get { return m_LP2Loaded; }
             set
             {
-                if (m_LP2Loaded != value)
+                if (value != m_LP2Loaded && value == true)
                 {
                     InvokeClient.Instance.Service.DoOperation($"LP2.ReadCarrierId");
                 }
+                //if (value != m_LP2Loaded && value == false)
+                //{
+                //    RtDataValues["LP2.CarrierId"] = "";
+                //}
                 SetProperty(ref m_LP2Loaded, value);
             }
         }
@@ -155,10 +163,14 @@ namespace Venus_MainPages.ViewModels
             get { return m_LP3Loaded; }
             set
             {
-                if (m_LP3Loaded != value)
+                if (value != m_LP3Loaded && value == true)
                 {
                     InvokeClient.Instance.Service.DoOperation($"LP3.ReadCarrierId");
                 }
+                //if (value!=m_LP3Loaded && value == false)
+                //{
+                //    RtDataValues["LP3.CarrierId"] = "";
+                //}
                 SetProperty(ref m_LP3Loaded, value);
             }
         }
@@ -1088,8 +1100,9 @@ namespace Venus_MainPages.ViewModels
                 else
                 {
                     ButtonIsEnableLP1 = false;
-                    UPdateWaferAssociation(LP1WaferAssociation, lp1Cj);
                 }
+                UPdateWaferAssociation(LP1WaferAssociation, lp1Cj);
+
                 ControlJobInfo lp2Cj = CommonFunction.GetValue<ControlJobInfo>(RtDataValues, "LP2.CurrentControlJob");
                 if (lp2Cj == null)
                 {
@@ -1098,8 +1111,9 @@ namespace Venus_MainPages.ViewModels
                 else
                 {
                     ButtonIsEnableLP2 = false;
-                    UPdateWaferAssociation(LP2WaferAssociation, lp2Cj);
                 }
+                UPdateWaferAssociation(LP2WaferAssociation, lp2Cj);
+
                 ControlJobInfo lp3Cj = CommonFunction.GetValue<ControlJobInfo>(RtDataValues, "LP3.CurrentControlJob");
                 if (lp3Cj == null)
                 {
@@ -1108,8 +1122,9 @@ namespace Venus_MainPages.ViewModels
                 else
                 {
                     ButtonIsEnableLP3 = false;
-                    UPdateWaferAssociation(LP3WaferAssociation, lp3Cj);
                 }
+                UPdateWaferAssociation(LP3WaferAssociation, lp3Cj);
+
             }
 
 
@@ -1131,11 +1146,7 @@ namespace Venus_MainPages.ViewModels
         /// <param name="info"></param>
         /// <param name="cjInfo"></param>
         private void UPdateWaferAssociation(WaferAssociationInfo info, ControlJobInfo cjInfo)
-        {
-            if (info == null)
-            {
-                return;
-            }
+        {           
             if (cjInfo != null)
             {
                 info.LotId = cjInfo.LotName;
@@ -1153,7 +1164,7 @@ namespace Venus_MainPages.ViewModels
             }
             else
             {
-                if (!string.IsNullOrEmpty(info.JobID))
+                if (!string.IsNullOrEmpty(info?.JobID))
                 {
                     info.LotId = "";
                     info.JobID = "";

+ 2 - 2
Venus/Venus_MainPages/Views/OperationOverView.xaml

@@ -415,7 +415,7 @@
 
 
                 <Canvas Canvas.Top="-40" Canvas.Left="30">
-                    <userControls:TextBlockWithLabel  Canvas.Left="320" Canvas.Top="375" LabelValue="{Binding PressureType, StringFormat=CM5({0})}" TextBoxValue="{Binding RtDataValues[TM.LLAPressureGauge.Value],StringFormat='F1'}"/>
+                    <userControls:TextBlockWithLabel  Canvas.Left="254" Canvas.Top="422" LabelValue="{Binding PressureType, StringFormat=CM5({0})}" TextBoxValue="{Binding RtDataValues[TM.LLAPressureGauge.Value],StringFormat='F1'}"/>
                     <Ellipse Width="15" Height="15"  Canvas.Left="360" Canvas.Top="426" Fill="{Binding RtDataValues[TM.IoSensor.LLAATMSwitch.Value],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="0"></Ellipse>
                     <Ellipse Width="15" Height="15"  Canvas.Left="360" Canvas.Top="446" Fill="{Binding RtDataValues[TM.IoSensor.LLAVacSwitch.Value],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="0"></Ellipse>
                     <TextBlock Text="ATM" Canvas.Left="330" Canvas.Top="426"/>
@@ -423,7 +423,7 @@
                 </Canvas>
 
                 <Canvas Canvas.Top="-40" Canvas.Left="-125">
-                    <userControls:TextBlockWithLabel  Canvas.Left="805" Canvas.Top="375" LabelValue="{Binding PressureType, StringFormat=CM4({0})}" TextBoxValue="{Binding RtDataValues[TM.LLBPressureGauge.Value],StringFormat='F1'}"/>
+                    <userControls:TextBlockWithLabel  Canvas.Left="870" Canvas.Top="422" LabelValue="{Binding PressureType, StringFormat=CM4({0})}" TextBoxValue="{Binding RtDataValues[TM.LLBPressureGauge.Value],StringFormat='F1'}"/>
                     <Ellipse Width="15" Height="15"  Canvas.Left="820" Canvas.Top="426" Fill="{Binding RtDataValues[TM.IoSensor.LLBATMSwitch.Value],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="0"></Ellipse>
                     <Ellipse Width="15" Height="15"  Canvas.Left="820" Canvas.Top="446" Fill="{Binding RtDataValues[TM.IoSensor.LLBVacSwitch.Value],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="0"></Ellipse>
                     <TextBlock Text="ATM" Canvas.Left="840" Canvas.Top="426"/>

+ 2 - 2
Venus/Venus_RT/Config/System_Kepler2200.sccfg

@@ -255,7 +255,7 @@
 		<configs name="Cooling" nameView="Cooling" >			
 			<config default="100"  name="MFCFlow"     nameView="MFCFlow"       description="" max="10000" min="0" paramter="" tag="" unit="sccm" type="Double" />
 			<config default="150"  name="CoolingTime" nameView="Cooling Time"  description="" max="3000"  min="0" paramter="" tag="" unit="s"    type="Integer" />
-			<config default="20"   name="LLMaxCoolingWaitTime" nameView="Cooling Time"  description="" max="100"  min="0" paramter="" tag="" unit="s"    type="Integer" />
+			<!--<config default="20"   name="LLMaxCoolingWaitTime" nameView="Cooling Time"  description="" max="100"  min="0" paramter="" tag="" unit="s"    type="Integer" />-->
 
 		</configs>
 	</configs>
@@ -308,7 +308,7 @@
 		<configs name="Cooling" nameView="Cooling" >
 			<config default="100"  name="MFCFlow"     nameView="MFCFlow"       description="" max="10000" min="0" paramter="" tag="" unit="sccm" type="Double" />
 			<config default="150"  name="CoolingTime" nameView="Cooling Time"  description="" max="3000"  min="0" paramter="" tag="" unit="s"    type="Integer" />
-			<config default="20"   name="LLMaxCoolingWaitTime" nameView="Cooling Time"  description="" max="100"  min="0" paramter="" tag="" unit="s"    type="Integer" />
+			<!--<config default="20"   name="LLMaxCoolingWaitTime" nameView="Cooling Time"  description="" max="100"  min="0" paramter="" tag="" unit="s"    type="Integer" />-->
 
 		</configs>
 	</configs>

+ 1 - 0
Venus/Venus_RT/Devices/EFEM/Loadport.cs

@@ -745,6 +745,7 @@ namespace Venus_RT.Devices.EFEM
                             _faCallback.CarrierRemoved(this);
                             JobDone = false;
                             _waferThicknessType = "";
+                            CarrierId = "";
                         }
                     }
                     else

+ 1 - 0
Venus/Venus_RT/Devices/JetKepler2200APM.cs

@@ -220,6 +220,7 @@ namespace Venus_RT.Devices
         public override float PendulumPressure => _pendulumValve.Pressure;
         public override float PendulumPosition => _pendulumValve.Position;
 
+        public override bool IsAllowRobotTransfer => _WaferTransferPosi_sw.Value;
         public new ModuleName Module { get; }
 
         //public override bool CheckAtm()

+ 1 - 0
Venus/Venus_RT/Devices/JetKepler2200BPM.cs

@@ -218,6 +218,7 @@ namespace Venus_RT.Devices
 
         public override float PendulumPressure => _pendulumValve.Pressure;
         public override float PendulumPosition => _pendulumValve.Position;
+        public override bool IsAllowRobotTransfer => _WaferTransferPosi_sw.Value;
 
         public new ModuleName Module { get; }
 

+ 1 - 0
Venus/Venus_RT/Devices/JetPMBase.cs

@@ -92,6 +92,7 @@ namespace Venus_RT.Devices
         public virtual bool LoadlockArmRetract { get; }
         public virtual bool LoadlockArmExtend { get; }
 
+        public virtual bool IsAllowRobotTransfer { get; }
         public abstract float ReflectPower { get; }
         public virtual float BiasReflectPower { get; }
 

+ 7 - 4
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -725,7 +725,7 @@ namespace Venus_RT.Modules
 
         public bool ReayForTMInTime(int seconds)
         {
-            return (Status ==  ModuleStatus.Pumping && TimeToReady < seconds) || Status == ModuleStatus.VacReady;
+            return ((RouteManager.IsATMMode ? Status == ModuleStatus.AtmReady : Status == ModuleStatus.Pumping) && TimeToReady < seconds) || Status == ModuleStatus.VacReady;
         }
 
         public bool ReayForEfemInTime(int seconds)
@@ -1640,8 +1640,11 @@ namespace Venus_RT.Modules
                     if (!wafer.IsEmpty)
                         systemWaferCount++;
                 }
+                //if (ModuleHelper.IsLoadLock(mod.Key) && _dictModuleTask[mod.Key].HasWafer)
+                //{
+                //    (_dictModuleTask[mod.Key] as LoadlockTask).Cooling();
+                //}
             }
-
             if (systemWaferCount == 0)
                 return RState.End;
 
@@ -4874,7 +4877,7 @@ namespace Venus_RT.Modules
 
                     var nextModule = nextActions.First().Module;
 
-                    if (ModuleHelper.IsLoadLock(nextModule) && !_dictModuleTask[nextModule].IsIdle)
+                    if (ModuleHelper.IsLoadLock(nextModule) && !_dictModuleTask[nextModule].IsIdle && _dictModuleTask[nextModule].Status!=ModuleStatus.StartCooling)
                         return;
 
                     _curEfemAction = _efemSchdActions.Dequeue();
@@ -4902,7 +4905,7 @@ namespace Venus_RT.Modules
 
                     var nextModule = nextActions.First().Module;
 
-                    if (ModuleHelper.IsLoadLock(nextModule) && !_dictModuleTask[nextModule].IsIdle)
+                    if (ModuleHelper.IsLoadLock(nextModule) && !_dictModuleTask[nextModule].IsIdle && _dictModuleTask[nextModule].Status != ModuleStatus.StartCooling)
                         return;
 
                     _curTmAction = _tmSchdActions.Dequeue();

+ 34 - 0
Venus/Venus_RT/Modules/TM/MFPMSwapRoutine.cs

@@ -13,6 +13,7 @@ using Venus_RT.Modules.PMs;
 using MECF.Framework.Common.Schedulers;
 using System.Collections.Generic;
 using System;
+using Aitex.Core.RT.Device;
 
 namespace Venus_RT.Modules.TM
 {
@@ -58,6 +59,7 @@ namespace Venus_RT.Modules.TM
         private int _pickDelayTime = 0;
         private ModuleName _targetModule;
         private PMEntity _pmModule;
+        private JetPMBase _jetPM;
         private int _targetSlot;
         private Hand _pickHand;
         private Hand _placeHand;
@@ -89,6 +91,7 @@ namespace Venus_RT.Modules.TM
             if (ModuleHelper.IsPm(_targetModule) && ModuleHelper.IsInstalled(_targetModule))
             {
                 _pmModule = Singleton<RouteManager>.Instance.GetPM(_targetModule);
+                _jetPM= DEVICE.GetDevice<JetPMBase>(_targetModule.ToString());
             }
             else
             {
@@ -279,7 +282,27 @@ namespace Venus_RT.Modules.TM
         }
         private bool Picking()
         {
+            if (!_jetPM.IsAllowRobotTransfer)
+            {
+                Runner.Stop($"不允许Pick,传片位置信号不满足");
+                return false;
+            }
+            if (!_jetPM.PreparePlaceIsOK())
+            {
+                Runner.Stop($"不允许Pick,传片位置信号满足,但不在Position1");
+                return false;
+            }
             return _robot.Pick(_targetModule, _targetSlot, _pickHand);
+
+            //if (_jetPM.PreparePickIsOK())
+            //{
+            //}
+            //else
+            //{
+            //    Runner.Stop($"TM Robot Picking failed due to");
+
+            //    return false;
+            //}
         }
 
         private bool WaitPickDone()
@@ -303,7 +326,18 @@ namespace Venus_RT.Modules.TM
         }
         private bool Placing()
         {
+            if (!_jetPM.IsAllowRobotTransfer)
+            {
+                Runner.Stop($"不允许Place,传片位置信号不满足");
+                return false;
+            }
+            if (!_jetPM.PreparePlaceIsOK())
+            {
+                Runner.Stop($"不允许Place,传片位置信号满足,但不在Position1");
+                return false;
+            }
             return _robot.Place(_targetModule, _targetSlot, _placeHand);
+
         }
 
         private bool WaitPlaceDone()