瀏覽代碼

1、配置文件中增加了FA.Encoding
2、优化了FA中LoadPort的Load/Unload/ReadId中判定逻辑

chenkui 1 年之前
父節點
當前提交
587ffe27b5

+ 2 - 1
Venus/Venus_RT/Config/System.sccfg

@@ -68,7 +68,8 @@
 		<config default="true" name="SpoolingFullOverWrite" description="Spooling Full OverWrite" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Enabled" name="DefaultCommunicationState" description="Default Communication State" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Online" name="DefaultControlState" description="Default Control State" max="0" min="0" paramter="" tag="" unit="" type="String" />
-		<config default="Local" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="Remote" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="ASCII" name="Encoding" description="Encoding" max="0" min="0" paramter="" tag="" unit="" type="String" />
 	</configs>
 
 	<!--Router-->

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

@@ -69,7 +69,8 @@
 		<config default="true" name="SpoolingFullOverWrite" description="Spooling Full OverWrite" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Enabled" name="DefaultCommunicationState" description="Default Communication State" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Online" name="DefaultControlState" description="Default Control State" max="0" min="0" paramter="" tag="" unit="" type="String" />
-		<config default="Local" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="Remote" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="ASCII" name="Encoding" description="Encoding" max="0" min="0" paramter="" tag="" unit="" type="String" />
 	</configs>
 
 	<!--Router-->

+ 2 - 1
Venus/Venus_RT/Config/System_Kepler2300.sccfg

@@ -68,7 +68,8 @@
 		<config default="true" name="SpoolingFullOverWrite" description="Spooling Full OverWrite" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Enabled" name="DefaultCommunicationState" description="Default Communication State" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Online" name="DefaultControlState" description="Default Control State" max="0" min="0" paramter="" tag="" unit="" type="String" />
-		<config default="Local" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="Remote" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="ASCII" name="Encoding" description="Encoding" max="0" min="0" paramter="" tag="" unit="" type="String" />
 	</configs>
 
 	<!--Router-->

+ 2 - 1
Venus/Venus_RT/Config/System_Venus.sccfg

@@ -68,7 +68,8 @@
 		<config default="true" name="SpoolingFullOverWrite" description="Spooling Full OverWrite" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Enabled" name="DefaultCommunicationState" description="Default Communication State" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Online" name="DefaultControlState" description="Default Control State" max="0" min="0" paramter="" tag="" unit="" type="String" />
-		<config default="Local" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="Remote" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="ASCII" name="Encoding" description="Encoding" max="0" min="0" paramter="" tag="" unit="" type="String" />
 	</configs>
 
 	<!--Router-->

+ 2 - 1
Venus/Venus_RT/Config/System_VenusDE.sccfg

@@ -68,7 +68,8 @@
 		<config default="true" name="SpoolingFullOverWrite" description="Spooling Full OverWrite" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Enabled" name="DefaultCommunicationState" description="Default Communication State" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Online" name="DefaultControlState" description="Default Control State" max="0" min="0" paramter="" tag="" unit="" type="String" />
-		<config default="Local" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="Remote" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="ASCII" name="Encoding" description="Encoding" max="0" min="0" paramter="" tag="" unit="" type="String" />
 	</configs>
 
 	<!--Router-->

+ 2 - 1
Venus/Venus_RT/Config/System_VenusSE.sccfg

@@ -68,7 +68,8 @@
 		<config default="true" name="SpoolingFullOverWrite" description="Spooling Full OverWrite" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Enabled" name="DefaultCommunicationState" description="Default Communication State" max="0" min="0" paramter="" tag="" unit="" type="String" />
 		<config default="Online" name="DefaultControlState" description="Default Control State" max="0" min="0" paramter="" tag="" unit="" type="String" />
-		<config default="Local" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="Remote" name="DefaultControlSubState" description="Default Control SubState" max="0" min="0" paramter="" tag="" unit="" type="String" />
+		<config default="ASCII" name="Encoding" description="Encoding" max="0" min="0" paramter="" tag="" unit="" type="String" />
 	</configs>
 
 	<!--Router-->

+ 12 - 0
Venus/Venus_RT/Modules/EFEM/EfemEntity.cs

@@ -157,6 +157,18 @@ namespace Venus_RT.Modules
         private Stopwatch _robotWatch = new Stopwatch();
         private R_TRIG _robotIdleTrigger = new R_TRIG();
 
+        public LoadPortModule GetLoadportModule(int lpNumber)
+        {
+            if(lpNumber<=0)
+            {
+                return null;
+            }
+            if(_lpms.Length>=lpNumber)
+            {
+                return _lpms[lpNumber-1];
+            }
+            return null;
+        }
         // Constructor
         //
         public EfemEntity()

+ 79 - 9
Venus/Venus_RT/Modules/RouteManager.cs

@@ -23,6 +23,10 @@ using Venus_RT.Devices.PreAligner;
 using Venus_RT.Modules.TM.VenusEntity;
 using SecsGem.Core.Application;
 using Aitex.Core.RT.RecipeCenter;
+using System.Reflection;
+using Venus_RT.Modules.LPs;
+using System.Runtime.InteropServices;
+using Venus_RT.Devices.EFEM;
 
 namespace Venus_RT.Modules
 {
@@ -1164,11 +1168,11 @@ namespace Venus_RT.Modules
                 case "ResumeJob":
                     return FaResumeJob(paras[0].ToString(), out reason);
                 case "Load":
-                    return FaLoad(paras[0].ToString());
+                    return FaLoad(paras[0].ToString(),out reason);
                 case "Unload":
-                    return FaUnLoad(paras[0].ToString());
+                    return FaUnLoad(paras[0].ToString(),out reason);
                 case "ReadID":
-                    return FaReadId(paras[0].ToString());
+                    return FaReadId(paras[0].ToString(),out reason);
                     
             }
             return true;
@@ -1259,27 +1263,93 @@ namespace Venus_RT.Modules
         /// </summary>
         /// <param name="lp"></param>
         /// <returns></returns>
-        private bool FaLoad(string lp)
+        private bool FaLoad(string lp,out string reason)
         {
-            return EFEM.EfemDevice.Load(ModuleHelper.Converter($"LP{lp}"));
+            reason = "";
+            Loadport loadport=FaGetLoadPort(lp,out reason);
+            if(loadport!=null)
+            {
+                loadport.Load();
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+        /// <summary>
+        /// 获取LoadPort对象
+        /// </summary>
+        /// <param name="lp"></param>
+        /// <param name="reason"></param>
+        /// <returns></returns>
+        private Loadport FaGetLoadPort(string lp,out string reason)
+        {
+            reason = "";
+            if (int.TryParse(lp, out var lpValue))
+            {
+                LoadPortModule loadPortModule = EFEM.GetLoadportModule(lpValue);
+                if (loadPortModule != null)
+                {
+                    if (loadPortModule.LPDevice.HasCassette)
+                    {
+                        return loadPortModule.LPDevice;
+                    }
+                    else
+                    {
+                        reason = $"LP{lpValue} not found carrier, can not load";
+                        return null;
+                    }
+                }
+                else
+                {
+                    reason = $"LP{lp} is null";
+                    return null;
+                }
+            }
+            else
+            {
+                reason = $"{lp} is invalid data";
+                return null;
+            }
         }
         /// <summary>
         /// 读取Id
         /// </summary>
         /// <param name="lp"></param>
         /// <returns></returns>
-        private bool FaReadId(string lp)
+        private bool FaReadId(string lp,out string reason)
         {
-            return EFEM.EfemDevice.ReadCarrierId(ModuleHelper.Converter($"LP{lp}"));
+            reason = "";
+            Loadport loadport = FaGetLoadPort(lp, out reason);
+            if (loadport != null)
+            {
+                loadport.ReadCarrierID();
+                return true;
+            }
+            else
+            {
+                return false;
+            }
         }
         /// <summary>
         /// Fa Unload
         /// </summary>
         /// <param name="lp"></param>
         /// <returns></returns>
-        private bool FaUnLoad(string lp)
+        private bool FaUnLoad(string lp, out string reason)
         {
-            return EFEM.EfemDevice.Unload(ModuleHelper.Converter($"LP{lp}"));
+            reason = "";
+            Loadport loadport = FaGetLoadPort(lp, out reason);
+            if (loadport != null)
+            {
+                loadport.Unload();
+                return true;
+            }
+            else
+            {
+                return false;
+            }
         }
         /// <summary>
         /// 获取所有Sequence