Преглед на файлове

增加了Loadport AccessModel和State

chenkui преди 7 месеца
родител
ревизия
665c6d15f7

BIN
Venus/ThirdParty/SecsGem.Core.Application.dll


BIN
Venus/ThirdParty/SecsGem.Core.dll


BIN
Venus/ThirdParty/SecsGem.Hsms.Core.dll


+ 12 - 7
Venus/Venus_RT/Config/EquipmentVariables.xml

@@ -62,27 +62,32 @@
     <StatusVariable id="10228001" valueType="Boolean" logicalName="System.SensorWaterInletValve.Value" eventTrigger="" units="" />
     <StatusVariable id="10301001" valueType="Boolean" logicalName="System.IoValve.WaterInletValve.SetPoint" eventTrigger="" units="" />
     <StatusVariable id="10301002" valueType="Boolean" logicalName="System.IoValve.WaterInletValve.Status" eventTrigger="" units="" />
-    <StatusVariable id="20101001" valueType="Ascii" logicalName="LP1.CassettePlaced" eventTrigger="" units="" />
-    <StatusVariable id="20101002" valueType="Ascii" logicalName="LP1.CassettePresent" eventTrigger="" units="" />
+    <StatusVariable id="20101001" valueType="Boolean" logicalName="LP1.CassettePlaced" eventTrigger="" units="" />
+    <StatusVariable id="20101002" valueType="U4" logicalName="LP1.CassettePresent" eventTrigger="" units="" />
     <StatusVariable id="20101003" valueType="Boolean" logicalName="LP1.IsClamped" eventTrigger="" units="" />
     <StatusVariable id="20101004" valueType="Boolean" logicalName="LP1.IsDocked" eventTrigger="" units="" />
     <StatusVariable id="20101005" valueType="Boolean" logicalName="LP1.IsLoaded" eventTrigger="" units="" />
     <StatusVariable id="20101006" valueType="Boolean" logicalName="LP1.IsMapped" eventTrigger="" units="" />
     <StatusVariable id="20101007" valueType="Boolean" logicalName="LP1.IsWaferProtrude" eventTrigger="" units="" />
-    <StatusVariable id="20101008" valueType="Ascii" logicalName="LP2.CassettePlaced" eventTrigger="" units="" />
-    <StatusVariable id="20101009" valueType="Ascii" logicalName="LP2.CassettePresent" eventTrigger="" units="" />
+    <StatusVariable id="20101008" valueType="Boolean" logicalName="LP2.CassettePlaced" eventTrigger="" units="" />
+    <StatusVariable id="20101009" valueType="U4" logicalName="LP2.CassettePresent" eventTrigger="" units="" />
     <StatusVariable id="20101010" valueType="Boolean" logicalName="LP2.IsClamped" eventTrigger="" units="" />
     <StatusVariable id="20101011" valueType="Boolean" logicalName="LP2.IsDocked" eventTrigger="" units="" />
     <StatusVariable id="20101012" valueType="Boolean" logicalName="LP2.IsLoaded" eventTrigger="" units="" />
     <StatusVariable id="20101013" valueType="Boolean" logicalName="LP2.IsMapped" eventTrigger="" units="" />
     <StatusVariable id="20101014" valueType="Boolean" logicalName="LP2.IsWaferProtrude" eventTrigger="" units="" />
-    <StatusVariable id="20101015" valueType="Ascii" logicalName="LP3.CassettePlaced" eventTrigger="" units="" />
-    <StatusVariable id="20101016" valueType="Ascii" logicalName="LP3.CassettePresent" eventTrigger="" units="" />
+    <StatusVariable id="20101015" valueType="Boolean" logicalName="LP3.CassettePlaced" eventTrigger="" units="" />
+    <StatusVariable id="20101016" valueType="U4" logicalName="LP3.CassettePresent" eventTrigger="" units="" />
     <StatusVariable id="20101017" valueType="Boolean" logicalName="LP3.IsClamped" eventTrigger="" units="" />
     <StatusVariable id="20101018" valueType="Boolean" logicalName="LP3.IsDocked" eventTrigger="" units="" />
     <StatusVariable id="20101019" valueType="Boolean" logicalName="LP3.IsLoaded" eventTrigger="" units="" />
     <StatusVariable id="20101020" valueType="Boolean" logicalName="LP3.IsMapped" eventTrigger="" units="" />
-    <StatusVariable id="20101021" valueType="Boolean" logicalName="LP3.IsWaferProtrude" eventTrigger="" units="" />
+    <StatusVariable id="20101021" valueType="U4" logicalName="LP1.AccessMode" eventTrigger="" units="" />
+	<StatusVariable id="20101022" valueType="U4" logicalName="LP1.State" eventTrigger="" units="" />
+	<StatusVariable id="20101023" valueType="U4" logicalName="LP2.AccessMode" eventTrigger="" units="" />
+	<StatusVariable id="20101024" valueType="U4" logicalName="LP2.State" eventTrigger="" units="" />
+	<StatusVariable id="20101025" valueType="U4" logicalName="LP3.AccessMode" eventTrigger="" units="" />
+	<StatusVariable id="20101026" valueType="U4" logicalName="LP3.State" eventTrigger="" units="" />
     <StatusVariable id="310101001" valueType="Boolean" logicalName="LLA.MainPump" eventTrigger="" units="" />
     <StatusVariable id="310101002" valueType="Boolean" logicalName="LLA.MainPump.IsEoor" eventTrigger="" units="" />
     <StatusVariable id="310101003" valueType="Boolean" logicalName="LLA.MainPump.IsOn" eventTrigger="" units="" />

+ 33 - 4
Venus/Venus_RT/Devices/EFEM/Loadport.cs

@@ -116,16 +116,15 @@ namespace Venus_RT.Devices.EFEM
             DATA.Subscribe($"{mod}.CassettePlaced", () => HasCassette);
             DATA.Subscribe($"{mod}.SlotMap", () => SlotMap);
             DATA.Subscribe($"{mod}.IsWaferProtrude", () => Protrusion ? 1 : 0);
-
+            
             DATA.Subscribe($"{mod}.IsMapped", () => IsMapped);
             DATA.Subscribe($"{mod}.IsLoaded", () => IsLoaded);
             DATA.Subscribe($"{mod}.IsClamped", () => IsClamped);
             DATA.Subscribe($"{mod}.IsDocked", () => IsDocked);
             DATA.Subscribe($"{mod}.CarrierId", () => CarrierId);
             DATA.Subscribe($"{mod}.SmartTag", () => SmartTag);
-
-
-
+            DATA.Subscribe($"{mod}.AccessMode", () => GetAccessModel());//Auto
+            DATA.Subscribe($"{mod}.State", () => GetLoadPortState());
 
             DATA.Subscribe($"{Module}.WaferThicknessType", () => _waferThicknessType);
 
@@ -134,6 +133,36 @@ namespace Venus_RT.Devices.EFEM
             _lpCallBack = E87LoadPortManager.Instance.GetLoadPort((int)mod - (int)ModuleName.LP1 + 1);
         }
 
+        private int GetAccessModel()
+        {
+            return 1;//Auto
+        }
+        /// <summary>
+        /// 获取LoadPort状态
+        /// </summary>
+        /// <returns></returns>
+        private int GetLoadPortState()
+        {
+            //不存在cassete为0
+            if(!HasCassette)
+            {
+                return 0;
+            }
+            else
+            {
+                //存在Cassete但没有Clamp为1
+                if (!IsClamped)
+                {
+                    return 1;
+                }
+                else
+                {
+                    //存在Cassete同时Clamped为2
+                    return 2;
+                }
+            }
+        }
+
         /// <summary>
         /// 为没有efem的lp设计 部分属性默认设置为true 相关逻辑需要与eap协同
         /// </summary>