|
@@ -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
|