123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- using Aitex.Core.RT.Device;
- using Aitex.Core.Util;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using MECF.Framework.Common.CommonData.SorterDefines;
- using Aitex.Core.RT.SCCore;
- using Aitex.Core.Common;
- using Aitex.Core.RT.DataCenter;
- using Aitex.Core.RT.OperationCenter;
- using Aitex.Core.RT.Event;
- namespace MECF.Framework.Common.SubstrateTrackings
- {
- public class CarrierConfigurationManager : Singleton<CarrierConfigurationManager>
- {
- public CarrierConfigurationManager()
- {
-
- }
- private CarrierConfigurationItem[] _lstCarriers
- {
- get
- {
- List<CarrierConfigurationItem> lstitems = new List<CarrierConfigurationItem>();
- for (int i = 0; i < _carrierCount; i++)
- {
- var item = GetCarrierConfigItem(i);
- lstitems.Add(item);
- }
- return lstitems.ToArray();
- }
- }
- private int _carrierCount;
- public void Initialize(int count=16)
- {
- _carrierCount = count;
- DATA.Subscribe("CarrierConfigurationList", () => _lstCarriers);
- OP.Subscribe($"SetCarrierConfigurationItem", (string cmd, object[] param) =>
- {
- CarrierConfigurationItem item = new CarrierConfigurationItem()
- {
- Index = (int)param[0],
- CarrierName = (string)param[1],
- CarrierWaferSize = (int)param[2],
- CarrierSlotsNumber = (int)param[3],
- IsInfoPadAOn = (bool)param[4],
- IsInfoPadBOn = (bool)param[5],
- IsInfoPadCOn = (bool)param[6],
- IsInfoPadDOn = (bool)param[7],
- LP1StationName = param[8]==null ? "" :param[8].ToString(),
- LP2StationName = param[9] == null ? "" : param[9].ToString(),
- LP3StationName = param[10] == null ? "" : param[10].ToString(),
- LP4StationName = param[11] == null ? "" : param[11].ToString(),
- LP5StationName = param[12] == null ? "" : param[12].ToString(),
- LP6StationName = param[13] == null ? "" : param[13].ToString(),
- LP7StationName = param[14] == null ? "" : param[14].ToString(),
- LP8StationName = param[15] == null ? "" : param[15].ToString(),
- GetOffset = param[16] == null ? "" : param[16].ToString(),
- PutOffset = param[17] == null ? "" : param[17].ToString(),
- CIDReaderIndex = (int)param[18],
- CarrierFosbMode = (bool)param[19],
- NeedCheckIronDoorCarrier = (bool)param[20],
- KeepClampedAfterUnloadCarrier = (bool)param[21],
- DisableEvenSlot = (bool)param[22],
- DisableOddSlot = (bool)param[23],
- ThicknessLowLimit = (int)param[24],
- ThicknessHighLimit = (int)param[25],
- SlotPositionBaseLine = (int)param[26],
- SlotPitch = (int)param[27],
- WaferCenterDeviationLimit = (int)param[28],
- EnableDualTransfer = (bool)param[29],
- ForbidAccessAboveWafer = param.Length > 30 ? (bool)param[30] : true,
- MappedByRobot = param.Length > 31 ? (bool)param[31] : false,
- EnableCarrier = param.Length > 32 ? (bool)param[32] : true,
- LPRecipeNumber = param.Length > 33 ? (int)param[33] : 0,
-
- AccessPermitToCarrierIndex = param.Length > 34 ? (param[34] == null ? "" : param[34].ToString()) : "",
- }
- ;
- SetCarrierConfigItem(item);
- EV.PostInfoLog("System", $"Complete set carrier configuration item");
- return true;
- });
- }
- public CarrierConfigurationItem GetCarrierConfigItem(int index)
- {
- CarrierConfigurationItem item = new CarrierConfigurationItem()
- {
- Index = index,
- IsInfoPadAOn = (index & 8) == 8,
- IsInfoPadBOn = (index & 4) == 4,
- IsInfoPadCOn = (index & 2) == 2,
- IsInfoPadDOn = (index & 1) == 1,
- };
- if(SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierName"))
- item.CarrierName = SC.GetStringValue($"CarrierInfo.Carrier{index}.CarrierName");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.GetOffset"))
- item.GetOffset = SC.GetStringValue($"CarrierInfo.Carrier{index}.GetOffset");
- if(SC.ContainsItem($"CarrierInfo.Carrier{index}.PutOffset"))
- item.PutOffset = SC.GetStringValue($"CarrierInfo.Carrier{index}.PutOffset");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CIDReaderIndex"))
- item.CIDReaderIndex = SC.GetValue<int>($"CarrierInfo.Carrier{index}.CIDReaderIndex");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierFosbMode"))
- item.CarrierFosbMode = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.CarrierFosbMode");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierWaferSize"))
- item.CarrierWaferSize = SC.GetValue<int>($"CarrierInfo.Carrier{index}.CarrierWaferSize");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.NeedCheckIronDoorCarrier"))
- item.NeedCheckIronDoorCarrier = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.NeedCheckIronDoorCarrier");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.KeepClampedAfterUnloadCarrier"))
- item.KeepClampedAfterUnloadCarrier = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.KeepClampedAfterUnloadCarrier");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.DisableEvenSlot"))
- item.DisableEvenSlot = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.DisableEvenSlot");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.DisableOddSlot"))
- item.DisableOddSlot = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.DisableOddSlot");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierSlotsNumber"))
- item.CarrierSlotsNumber = SC.GetValue<int>($"CarrierInfo.Carrier{index}.CarrierSlotsNumber");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.ThicknessLowLimit"))
- item.ThicknessLowLimit = SC.GetValue<int>($"CarrierInfo.Carrier{index}.ThicknessLowLimit");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.ThicknessHighLimit"))
- item.ThicknessHighLimit = SC.GetValue<int>($"CarrierInfo.Carrier{index}.ThicknessHighLimit");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.SlotPositionBaseLine"))
- item.SlotPositionBaseLine = SC.GetValue<int>($"CarrierInfo.Carrier{index}.SlotPositionBaseLine");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.SlotPitch"))
- item.SlotPitch = SC.GetValue<int>($"CarrierInfo.Carrier{index}.SlotPitch");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.WaferCenterDeviationLimit"))
- item.WaferCenterDeviationLimit = SC.GetValue<int>($"CarrierInfo.Carrier{index}.WaferCenterDeviationLimit");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.EnableDualTransfer"))
- item.EnableDualTransfer = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.EnableDualTransfer");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.ForbidAccessAboveWafer"))
- item.ForbidAccessAboveWafer = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.ForbidAccessAboveWafer");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP1Station"))
- item.LP1StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP1Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP2Station"))
- item.LP2StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP2Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP3Station"))
- item.LP3StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP3Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP4Station"))
- item.LP4StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP4Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP5Station"))
- item.LP5StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP5Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP6Station"))
- item.LP6StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP6Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP7Station"))
- item.LP7StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP7Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP8Station"))
- item.LP8StationName = SC.GetStringValue($"CarrierInfo.Carrier{index}.LP8Station");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.MappedByRobot"))
- item.MappedByRobot = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.MappedByRobot");
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.EnableCarrier"))
- item.EnableCarrier = SC.GetValue<bool>($"CarrierInfo.Carrier{index}.EnableCarrier");
- else
- item.EnableCarrier = true;
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LPRecipeNumber"))
- item.LPRecipeNumber = SC.GetValue<int>($"CarrierInfo.Carrier{index}.LPRecipeNumber");
-
- List<int> accessP = new List<int>();
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.AccessPermitToCarrierIndex"))
- {
- item.AccessPermitToCarrierIndex = SC.GetStringValue($"CarrierInfo.Carrier{index}.AccessPermitToCarrierIndex");
-
- foreach(var strIndex in item.AccessPermitToCarrierIndex.Split(','))
- {
- if(int.TryParse(strIndex,out int nIndex))
- {
- if(!accessP.Contains(nIndex))
- accessP.Add(nIndex);
- }
- }
- item.Int_AccessPermitToCarrierIndex = accessP.ToArray();
- }
- else
- {
- item.AccessPermitToCarrierIndex = null; //Enable All
- for(int i=0;i<100;i++)
- {
- accessP.Add(i);
- }
- item.Int_AccessPermitToCarrierIndex = accessP.ToArray();
- }
- return item;
- }
- public bool SetCarrierConfigItem(CarrierConfigurationItem item)
- {
- int index = item.Index;
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierName"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.CarrierName",item.CarrierName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.GetOffset"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.GetOffset",item.GetOffset);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.PutOffset"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.PutOffset",item.PutOffset);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CIDReaderIndex"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.CIDReaderIndex",item.CIDReaderIndex);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierFosbMode"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.CarrierFosbMode",item.CarrierFosbMode);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierWaferSize"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.CarrierWaferSize",(int)item.CarrierWaferSize);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.NeedCheckIronDoorCarrier"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.NeedCheckIronDoorCarrier",item.NeedCheckIronDoorCarrier);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.KeepClampedAfterUnloadCarrier"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.KeepClampedAfterUnloadCarrier",item.KeepClampedAfterUnloadCarrier);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.DisableEvenSlot"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.DisableEvenSlot",item.DisableEvenSlot);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.DisableOddSlot"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.DisableOddSlot",item.DisableOddSlot);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.CarrierSlotsNumber"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.CarrierSlotsNumber",item.CarrierSlotsNumber);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.ThicknessLowLimit"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.ThicknessLowLimit",item.ThicknessLowLimit);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.ThicknessHighLimit"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.ThicknessHighLimit",item.ThicknessHighLimit);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.SlotPositionBaseLine"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.SlotPositionBaseLine", item.SlotPositionBaseLine) ;
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.SlotPitch"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.SlotPitch",item.SlotPitch);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.WaferCenterDeviationLimit"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.WaferCenterDeviationLimit",item.WaferCenterDeviationLimit);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP1Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP1Station",item.LP1StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP2Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP2Station", item.LP2StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP3Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP3Station", item.LP3StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP4Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP4Station", item.LP4StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP5Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP5Station", item.LP5StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP6Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP6Station", item.LP6StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP7Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP7Station", item.LP7StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LP8Station"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LP8Station", item.LP8StationName);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.EnableDualTransfer"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.EnableDualTransfer", item.EnableDualTransfer);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.ForbidAccessAboveWafer"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.ForbidAccessAboveWafer", item.ForbidAccessAboveWafer);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.MappedByRobot"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.MappedByRobot", item.MappedByRobot);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.EnableCarrier"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.EnableCarrier", item.EnableCarrier);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.LPRecipeNumber"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.LPRecipeNumber", item.LPRecipeNumber);
- if (SC.ContainsItem($"CarrierInfo.Carrier{index}.AccessPermitToCarrierIndex"))
- SC.SetItemValue($"CarrierInfo.Carrier{index}.AccessPermitToCarrierIndex", item.AccessPermitToCarrierIndex);
- return true;
- }
- }
- }
|