| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | using System;using System.Collections.Generic;using System.Diagnostics;using Aitex.Core.RT.DataCenter;using Aitex.Core.RT.Device;using Aitex.Core.RT.Device.Unit;using Aitex.Core.RT.Event;using Aitex.Core.RT.Fsm;using Aitex.Core.RT.OperationCenter;using Aitex.Core.RT.Routine;using Aitex.Core.RT.SCCore;using Aitex.Core.Utilities;using Aitex.Sorter.Common;using MECF.Framework.Common.Alarms;using MECF.Framework.Common.Equipment;using MECF.Framework.Common.Event;using MECF.Framework.Common.Schedulers;using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts;using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;namespace FurnaceRT.Equipments.Stockers{    public partial class StockerModule    {        #region fields        private IoSensor _diStationCassettePresent;        private IoTrigger _foupPurge;        private int _alarmNumber;        #endregion        private List<AlarmEventItem> _triggeredAlarmList = new List<AlarmEventItem>();        public void InitDevice()        {            _diStationCassettePresent = DEVICE.GetDevice<IoSensor>($"PM1.Sensor{Module}");            _foupPurge = DEVICE.GetDevice<IoTrigger>($"PM1.TrigStockerPurge{Module}");            this.OnDeviceAlarmStateChanged += OnModuleDeviceAlarmStateChanged;        }        public void OnModuleDeviceAlarmStateChanged(string deviceId, AlarmEventItem alarmItem)        {            if (alarmItem.IsTriggered)            {                EventLevel level = alarmItem.Level;                _triggeredAlarmList.Add(alarmItem);                if (level == EventLevel.Alarm)                {                    try                    {                        EV.PostAlarmLog(Module, alarmItem);                    }                    catch (Exception ex)                    {                        EV.WriteEvent(ex.Message.ToString());                    }                }                else                {                    EV.PostWarningLog(Module, alarmItem);                }            }            else            {            }        }        private void SetDisplayName()        {            if (!SC.ContainsItem($"System.Stocker.{Module}WaferType"))                return;            var type = SC.GetStringValue($"System.Stocker.{Module}WaferType");            if (type.Contains("P"))                type = "P";            else if (type.Contains("M"))                type = "M";            else if (type.Contains("SD"))                type = "SD";            else if (type.Contains("ED"))                type = "ED";            int display = 0;            for(int i = 1; i < 30; i++)            {                if (!SC.ContainsItem($"System.Stocker.Stocker{i}WaferType"))                    continue;                if (SC.GetStringValue($"System.Stocker.Stocker{i}WaferType").Contains(type))                    display++;                if (Module == $"Stocker{i}")                    break;            }            SC.SetItemValue($"System.StockerDisplayName.{Module}", $"{display}");        }        public override void Monitor()        {            if(_foupPurge != null && _diStationCassettePresent != null &&                _foupPurge.Value != _diStationCassettePresent.Value)             {                _foupPurge.SetTrigger(_diStationCassettePresent.Value, out _);            }        }    }}
 |