123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- using Aitex.Core.Common;
- using Aitex.Core.RT.Device.Unit;
- using MECF.Framework.Common.SubstrateTrackings;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.YaskawaSR100Aligner
- {
- public class YaskawaSrAlignerWithPositioner : YaskawaAligner.YaskawaAligner
- {
- public YaskawaSrAlignerWithPositioner(string module, string name, string scRoot, IoSensor[] dis, IoTrigger[] dos, int alignerType = 0)
- :base(module,name,scRoot,dis,dos,alignerType)
- {
- _diAlignerOnWS8 = dis[4];
- _diAlginerOnWS12 = dis[5];
- _diOcrOnWS8 = dis[6];
- _diOcrOnWS12 = dis[7];
- _doAlignerToWS8 = dos[1];
- _doAlignerToWS12 = dos[2];
- _doOcrToWS8 = dos[3];
- _doOcrToWS12 = dos[4];
- }
-
- private IoSensor _diAlignerOnWS8;
- private IoSensor _diAlginerOnWS12;
- private IoSensor _diOcrOnWS8;
- private IoSensor _diOcrOnWS12;
- private IoTrigger _doAlignerToWS8;
- private IoTrigger _doAlignerToWS12;
- private IoTrigger _doOcrToWS8;
- private IoTrigger _doOcrToWS12;
- private DateTime _dtActionStart;
- protected override bool fStartSetParameters(object[] param)
- {
- _dtActionStart = DateTime.Now;
- _currentSetParameter = param[0].ToString();
- switch (_currentSetParameter)
- {
- case "WaferSize":
- //if (GetWaferState() != RobotArmWaferStateEnum.Absent)
- //{
- // EV.PostAlarmLog("System", "Can't set wafersize when wafer is not absent");
- // return false;
- //}
- _currentSetWaferSize = (WaferSize)param[1];
- if (WaferManager.Instance.CheckHasWafer(RobotModuleName, 0))
- {
- WaferManager.Instance.UpdateWaferSize(RobotModuleName, 0, _currentSetWaferSize);
- }
- switch (_currentSetWaferSize)
- {
- case WaferSize.WS12:
- _doAlignerToWS12.SetTrigger(true, out _);
- _doAlignerToWS8.SetTrigger(false, out _);
- _doOcrToWS12.SetTrigger(true, out _);
- _doOcrToWS8.SetTrigger(false, out _);
- break;
- case WaferSize.WS8:
- _doAlignerToWS12.SetTrigger(false, out _);
- _doAlignerToWS8.SetTrigger(true, out _);
- _doOcrToWS12.SetTrigger(false, out _);
- _doOcrToWS8.SetTrigger(true, out _);
- break;
- default:
- break;
- }
-
- break;
- }
- return true;
- }
- private string _currentSetParameter;
- private WaferSize _currentSetWaferSize = WaferSize.WS0;
- protected override bool fMonitorSetParamter(object[] param)
- {
- IsBusy = false;
- if (DateTime.Now - _dtActionStart > TimeSpan.FromSeconds(TimeLimitAlignerHome))
- OnError("Set parameter timeout");
- switch (_currentSetParameter)
- {
- case "WaferSize":
- switch (_currentSetWaferSize)
- {
-
- case WaferSize.WS8:
- return !_diAlginerOnWS12.Value && _diAlignerOnWS8.Value &&
- !_diOcrOnWS12.Value && _diOcrOnWS8.Value;
-
-
- case WaferSize.WS12:
- return _diAlginerOnWS12.Value && !_diAlignerOnWS8.Value &&
- _diOcrOnWS12.Value && !_diOcrOnWS8.Value;
-
- default:
- return true;
- }
-
- default:
- return true;
- }
- }
- public override bool IsNeedChangeWaferSize(WaferSize wz)
- {
- switch(wz)
- {
- case WaferSize.WS12:
- return !(_diAlginerOnWS12.Value && !_diAlignerOnWS8.Value &&
- _diOcrOnWS12.Value && !_diOcrOnWS8.Value &&
- _doAlignerToWS12.Value && !_doAlignerToWS8.Value &&
- _doOcrToWS12.Value && !_doOcrToWS8.Value);
-
- case WaferSize.WS8:
- return !(!_diAlginerOnWS12.Value && _diAlignerOnWS8.Value &&
- !_diOcrOnWS12.Value && _diOcrOnWS8.Value &&
- !_doOcrToWS12.Value && _doOcrToWS8.Value &&
- !_doAlignerToWS12.Value && _doAlignerToWS8.Value);
- default:
- return true;
- }
- }
- public override WaferSize GetCurrentWaferSize()
- {
- if (WaferManager.Instance.CheckHasWafer(RobotModuleName, 0))
- return WaferManager.Instance.GetWaferSize(RobotModuleName, 0);
- if (_diAlginerOnWS12.Value && !_diAlignerOnWS8.Value &&
- _diOcrOnWS12.Value && !_diOcrOnWS8.Value &&
- _doAlignerToWS12.Value && !_doAlignerToWS8.Value &&
- _doOcrToWS12.Value && !_doOcrToWS8.Value)
- return WaferSize.WS12;
- if (!_diAlginerOnWS12.Value && _diAlignerOnWS8.Value &&
- !_diOcrOnWS12.Value && _diOcrOnWS8.Value &&
- !_doOcrToWS12.Value && _doOcrToWS8.Value &&
- !_doAlignerToWS12.Value && _doAlignerToWS8.Value)
- return WaferSize.WS8;
- return WaferSize.WS0;
- }
- }
- }
|