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.OperationCenter; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using Aitex.Core.Utilities; using Aitex.Sorter.Common; using FurnaceRT.Devices; using FurnaceRT.Equipments.PMs; using FurnaceRT.Equipments.Systems; using MECF.Framework.Common.Alarms; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Event; using MECF.Framework.Common.Schedulers; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FurnaceRT.Equipments.FIMSs { public partial class FIMSModule { #region fields private List _triggeredAlarmList = new List(); private List _alarmSignals = new List(); private List _allModuleDevice = new List(); private int _alarmNumber; #endregion public IoFIMS FIMSDevice { get; set; } public IoSensor SensorWaferRobotEX1AxisHomePosition { get; set; } public IoSensor SensorWaferRobotEX2AxisHomePosition { get; set; } public bool IsMapping { get; set; } public bool IsDoorOpen { get { if (!SC.GetValue("System.IsSimulatorMode")) { if (FIMSDevice != null) { return FIMSDevice.DoorOpenCloseStatus == DeviceStatus.Open; } } return true; } } public bool IsWaferOnRobot => FIMSDevice == null ? false : FIMSDevice.IsWaferOnRobot; public void InitDevice() { FIMSDevice = DEVICE.GetDevice($"PM1.{Module}"); SensorWaferRobotEX1AxisHomePosition = DEVICE.GetDevice($"PM1.SensorWaferRobotEX1AxisHomePosition"); SensorWaferRobotEX2AxisHomePosition = DEVICE.GetDevice($"PM1.SensorWaferRobotEX2AxisHomePosition"); 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 { } } public void Stop() { FIMSDevice.Stop(); (Singleton.Instance.Modules[ModuleName.PM1] as PMModule)?.SetN2PurgeProcess(false); return; } } }