| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 | 
							- using Aitex.Core.RT.DataCenter;
 
- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.Event;
 
- using Aitex.Core.RT.IOCore;
 
- using Aitex.Core.RT.SCCore;
 
- using MECF.Framework.Common.Device.Bases;
 
- using MECF.Framework.Common.Equipment;
 
- using MECF.Framework.Common.SubstrateTrackings;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Xml;
 
- namespace FurnaceRT.Equipments.Systems
 
- {
 
-     public class IoSmif: SMIFBase
 
-     {
 
-         public IoSmif(string module, XmlElement node, string ioModule = "")
 
-         {
 
-             base.Module = string.IsNullOrEmpty(node.GetAttribute("module")) ? module : node.GetAttribute("module");
 
-             base.Name = node.GetAttribute("id");
 
-             base.Display = node.GetAttribute("display");
 
-             base.DeviceID = node.GetAttribute("schematicId");
 
-             _diPodLockPosition = ParseDiNode("diPodLockPosition", node, ioModule);
 
-             _diPodUnlockPosition = ParseDiNode("diPodUnlockPosition", node, ioModule);
 
-             _diPodOpenPosition = ParseDiNode("diPodOpenPosition", node, ioModule);
 
-             _diPodClosePosition = ParseDiNode("diPodClosePosition", node, ioModule);
 
-             _diPodPresence = ParseDiNode("diPodPresence", node, ioModule);
 
-             _diZAxisUnloadPosition = ParseDiNode("diZAxisUnloadPosition", node, ioModule);
 
-             _diZAxisLoadPosition = ParseDiNode("diZAxisLoadPosition", node, ioModule);
 
-             _diZAxisPosition1 = ParseDiNode("diZAxisPosition1", node, ioModule);
 
-             _diZAxisPosition2 = ParseDiNode("diZAxisPosition2", node, ioModule);
 
-             _diRotateAxisCheck1 = ParseDiNode("diRotateAxisCheck1", node, ioModule);
 
-             _diRotateAxisCheck2 = ParseDiNode("diRotateAxisCheck2", node, ioModule);
 
-             _diSlideAxisExtend = ParseDiNode("diSlideAxisExtend", node, ioModule);
 
-             _diSlideAxisRetract = ParseDiNode("diSlideAxisRetract", node, ioModule);
 
-             _diProtrudedWafer = ParseDiNode("diProtrudedWafer", node, ioModule);
 
-             _diMapping = ParseDiNode("diMapping", node, ioModule);
 
-             _diFfuOK = ParseDiNode("diFfuOK", node, ioModule);
 
-             _diPodLockValveFB = ParseDiNode("diPodLockValveFB", node, ioModule);
 
-             _diPodUnlockValveFB = ParseDiNode("diPodUnlockValveFB", node, ioModule);
 
-             _diPodOpenVavleFB = ParseDiNode("diPodOpenVavleFB", node, ioModule);
 
-             _diPodCloseVavleFB = ParseDiNode("diPodCloseVavleFB", node, ioModule);
 
-             _diRotateArmValve1FB = ParseDiNode("diRotateArmValve1FB", node, ioModule);
 
-             _diRotateArmValve2FB = ParseDiNode("diRotateArmValve2FB", node, ioModule);
 
-             _diSlideArmValve1FB = ParseDiNode("diSlideArmValve1FB", node, ioModule);
 
-             _diSlideArmValve2FB = ParseDiNode("diSlideArmValve2FB", node, ioModule);
 
-             _diSmifCassettePresence = ParseDiNode("diSmifCassettePresence", node, ioModule);
 
-             _diSmifReady = ParseDiNode("diSmifReady", node, ioModule);
 
-             _diSmifHomed = ParseDiNode("diSmifHomed", node, ioModule);
 
-             _diRobotNotExtendToSmif = ParseDiNode("diRobotNotExtendToSmif", node, ioModule);
 
-            
 
-             _doPodLockValve = ParseDoNode("doPodLockValve", node, ioModule);
 
-             _doPodUnlockValve = ParseDoNode("doPodUnlockValve", node, ioModule);
 
-             _doPodOpenVavle = ParseDoNode("doPodOpenVavle", node, ioModule);
 
-             _doPodCloseVavle = ParseDoNode("doPodCloseVavle", node, ioModule);
 
-             _doRotateArmValve1 = ParseDoNode("doRotateArmValve1", node, ioModule);
 
-             _doRotateArmValve2 = ParseDoNode("doRotateArmValve2", node, ioModule);
 
-             _doSlideArmValve1 = ParseDoNode("doSlideArmValve1", node, ioModule);
 
-             _doSlideArmValve2 = ParseDoNode("doSlideArmValve2", node, ioModule);
 
-             _doZAxisBK = ParseDoNode("doZAxisBK", node, ioModule);
 
-             _doLoadSmif = ParseDoNode("doLoadSmif", node, ioModule);
 
-             _doUnloadSmif = ParseDoNode("doUnloadSmif", node, ioModule);
 
-             _doInitSmif = ParseDoNode("doInitSmif", node, ioModule);
 
-             _doStopSmif = ParseDoNode("doStopSmif", node, ioModule);
 
-         }
 
-         #region fields
 
-         private DIAccessor _diPodLockPosition;
 
-         private DIAccessor _diPodUnlockPosition;
 
-         private DIAccessor _diPodOpenPosition;
 
-         private DIAccessor _diPodClosePosition;
 
-         private DIAccessor _diPodPresence;
 
-         private DIAccessor _diZAxisUnloadPosition;
 
-         private DIAccessor _diZAxisLoadPosition;
 
-         private DIAccessor _diZAxisPosition1;
 
-         private DIAccessor _diZAxisPosition2;
 
-         private DIAccessor _diRotateAxisCheck1;
 
-         private DIAccessor _diRotateAxisCheck2;
 
-         private DIAccessor _diSlideAxisExtend;
 
-         private DIAccessor _diSlideAxisRetract;
 
-         private DIAccessor _diProtrudedWafer;
 
-         private DIAccessor _diMapping;
 
-         private DIAccessor _diFfuOK;
 
-         private DIAccessor _diPodLockValveFB;
 
-         private DIAccessor _diPodUnlockValveFB;
 
-         private DIAccessor _diPodOpenVavleFB;
 
-         private DIAccessor _diPodCloseVavleFB;
 
-         private DIAccessor _diRotateArmValve1FB;
 
-         private DIAccessor _diRotateArmValve2FB;
 
-         private DIAccessor _diSlideArmValve1FB;
 
-         private DIAccessor _diSlideArmValve2FB;
 
-         private DIAccessor _diSmifCassettePresence;
 
-         private DIAccessor _diSmifReady;
 
-         private DIAccessor _diSmifHomed;
 
-         private DIAccessor _diRobotNotExtendToSmif;
 
-         private DOAccessor _doPodLockValve;
 
-         private DOAccessor _doPodUnlockValve;
 
-         private DOAccessor _doPodOpenVavle;
 
-         private DOAccessor _doPodCloseVavle;
 
-         private DOAccessor _doRotateArmValve1;
 
-         private DOAccessor _doRotateArmValve2;
 
-         private DOAccessor _doSlideArmValve1;
 
-         private DOAccessor _doSlideArmValve2;
 
-         private DOAccessor _doZAxisBK;
 
-         private DOAccessor _doLoadSmif;
 
-         private DOAccessor _doUnloadSmif;
 
-         private DOAccessor _doInitSmif;
 
-         private DOAccessor _doStopSmif;
 
-           
 
-         #endregion
 
-         #region properties
 
-         //public override bool IsPodPresent => _diPodPresence.Value && _diSmifCassettePresence.Value && !_diProtrudedWafer.Value;
 
-         public override bool IsPodPresent => _diPodPresence.Value;
 
-         public override bool IsIdle => _diSmifReady.Value;
 
-         public override bool IsHomed => _diSmifHomed.Value;
 
-         public string CurrentLotId { get; set; }
 
-         public List<string> WaitLotId { get; set; }
 
-         public bool IsRobotNotExtendTo => _diRobotNotExtendToSmif.Value;
 
-         public override bool IsLoaded => _diZAxisLoadPosition.Value && _diSlideAxisExtend.Value;
 
-         public override bool IsUnloaded => _diZAxisUnloadPosition.Value && _diSlideAxisRetract.Value;
 
-         public override bool IsExtend => _diSlideAxisExtend.Value;
 
-         public override bool IsRetract => _diSlideAxisRetract.Value;
 
-         #endregion
 
-         public override bool Initialize()
 
-         {
 
-             CarrierManager.Instance.SubscribeLocation(Name, 1, SC.GetValue<int>("System.CassetteSlotCount"));
 
-             WaferManager.Instance.SubscribeLocation(Name, SC.GetValue<int>("System.CassetteSlotCount"));
 
-             //CarrierManager.Instance.CreateCarrier(Name);
 
-             //DATA.Subscribe($"{Name}.CurrentLotId", () => CurrentLotId);
 
-             //DATA.Subscribe($"{Name}.WaitLotId", () => WaitLotId);
 
-             MappingResult = new List<string>();
 
-             return true;
 
-         }
 
-         public override void Monitor()
 
-         {
 
-             base.Monitor();
 
-         }
 
-         public override void Reset()
 
-         {
 
-             base.Reset();
 
-         }
 
-         public override void Terminate()
 
-         {
 
-             base.Terminate();
 
-         }
 
-         public override bool HomeSmif(out string reason)
 
-         {
 
-             reason = string.Empty;
 
-             if(!IsIdle)
 
-             {
 
-                 reason = $"{Name} is busy";
 
-                 return false;
 
-             }
 
-             _doInitSmif.SetPulseValue(true, 2000);
 
-             return true;
 
-         }
 
-         public override bool LoadCassette(out string reason)
 
-         {
 
-             reason = string.Empty;
 
-             //if (!IsIdle)
 
-             //{
 
-             //    reason = $"{Name} is busy";
 
-             //    return false;
 
-             //}
 
-             _doLoadSmif.SetPulseValue(true, 2000);
 
-             return true;
 
-         }
 
-         public override bool UnloadCassette(out string reason)
 
-         {
 
-             reason = string.Empty;
 
-             //if (!IsIdle)
 
-             //{
 
-             //    reason = $"{Name} is busy";
 
-             //    return false;
 
-             //}
 
-             _doUnloadSmif.SetPulseValue(true, 2000);
 
-             return true;
 
-         }
 
-         public override void Stop()
 
-         {
 
-             _doUnloadSmif.SetValue(false, out _);
 
-             _doInitSmif.SetValue(false, out _);
 
-             _doLoadSmif.SetValue(false, out _);
 
-             _doStopSmif.SetPulseValue(true, 2000);
 
-             return;
 
-         }
 
-         public void DeleteCarrier()
 
-         {
 
-             ModuleName chamber = ModuleHelper.Converter(Name);
 
-             if (CarrierManager.Instance.HasCarrier(chamber.ToString()))
 
-             {
 
-                 CarrierManager.Instance.DeleteCarrier(chamber.ToString());
 
-                 EV.PostInfoLog(Name, $"Carrier deleted from {chamber}");
 
-                 var wafers = WaferManager.Instance.GetWafers(chamber);
 
-                 for (int i = 0; i < wafers.Length; i++)
 
-                 {
 
-                     if (!wafers[i].IsEmpty)
 
-                         WaferManager.Instance.DeleteWafer(chamber, i);
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 EV.PostInfoLog(Name, string.Format("No carrier at {0}, delete not valid", chamber.ToString()));
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |