using System; using System.Collections.Generic; using Aitex.Core.RT.Event; using MECF.Framework.Common.Event; namespace FurnaceRT.Equipments.Systems { public partial class EquipmentManager { private List _triggeredAlarmList = new List(); public AlarmEventItem PLCDisconnectAlarm { get; set; } public AlarmEventItem PLCConnectRecoveryWarning { get; set; } public AlarmEventItem MoveWaferFailedWarning { get; set; } public AlarmEventItem ReturnWaferFailedWarning { get; set; } public AlarmEventItem DeleteWaferFailedWarning { get; set; } public AlarmEventItem CreateWaferFailedWarning { get; set; } public AlarmEventItem SetLotIDFailedWarning { get; set; } public AlarmEventItem ChargeProcessDischargeStartFailedWarning { get; set; } public AlarmEventItem LoadProcessStockerStartFailedWarning { get; set; } public AlarmEventItem LoadProcessUnloadStartFailedWarning { get; set; } public AlarmEventItem ExpertChargeProcessDischargeStartFailedWarning { get; set; } public AlarmEventItem ExpertChargeProcessStartFailedWarning { get; set; } public AlarmEventItem LoadCassetteJobStartFailedWarning { get; set; } public AlarmEventItem UnloadCassetteJobStartFailedWarning { get; set; } public AlarmEventItem ChargeWaferJobStartFailedWarning { get; set; } public AlarmEventItem ReturnAllWaferJobStartFailedWarning { get; set; } public AlarmEventItem ChargeWaferJobMonitorFailedAlarm { get; set; } public AlarmEventItem DischargeWaferJobMonitorFailedAlarm { get; set; } public AlarmEventItem SDWaferTypeUseCountWarning { get; set; } public AlarmEventItem SDWaferTypeUseCountAlarm { get; set; } public AlarmEventItem SDWaferTypeUseTimeWarning { get; set; } public AlarmEventItem SDWaferTypeUseTimeAlarm { get; set; } public AlarmEventItem SDWaferTypeThicknessWarning { get; set; } public AlarmEventItem SDWaferTypeThicknessAlarm { get; set; } public AlarmEventItem EDWaferTypeUseCountWarning { get; set; } public AlarmEventItem EDWaferTypeUseCountAlarm { get; set; } public AlarmEventItem EDWaferTypeUseTimeWarning { get; set; } public AlarmEventItem EDWaferTypeUseTimeAlarm { get; set; } public AlarmEventItem EDWaferTypeThicknessWarning { get; set; } public AlarmEventItem EDWaferTypeThicknessAlarm { get; set; } public AlarmEventItem EquipmentEmergencyStopAlarm { get; set; } public AlarmEventItem TransferJobStartFailedWarning { get; set; } #region MyRegion public AlarmEventItem RecipeExecuteFreqAlarm { get; set; } public AlarmEventItem RecipeExecuteFreqWarning { get; set; } public AlarmEventItem RecipeThicknessAlarm { get; set; } public AlarmEventItem RecipeThicknessWarning { get; set; } public AlarmEventItem ReatorStepRunFreqWarning { get; set; } public AlarmEventItem ReatorStepRunFreqAlarm { get; set; } public AlarmEventItem ReatorStepRunTimeWarning { get; set; } public AlarmEventItem ReatorStepRunTimeAlarm { get; set; } public AlarmEventItem ReatorStepThicknessAlarm { get; set; } public AlarmEventItem ReatorStepThicknessWarning { get; set; } #endregion private void InitAlarmDefine() { PLCDisconnectAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.PLCDisconnectAlarm", Description = $"PLC disconnect ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); PLCConnectRecoveryWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.PLCConnectRecoveryWarning", Description = $"PLC connect recovery ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); MoveWaferFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.MoveWaferFailedWarning", Description = $"{Name} move wafer failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReturnWaferFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReturnWaferFailedWarning", Description = $"{Name} return wafer failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); DeleteWaferFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.DeleteWaferFailedWarning", Description = $"{Name} delete wafer failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); CreateWaferFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.CreateWaferFailedWarning", Description = $"{Name} create wafer failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); SetLotIDFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.SetLotIDFailedWarning", Description = $"{Name} set lotID failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ChargeProcessDischargeStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ChargeProcessDischargeStartFailedWarning", Description = $"{Name} ChargeProcessDischarge start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); LoadProcessStockerStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.LoadProcessStockerStartFailedWarning", Description = $"{Name} LoadProcessStocker start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); LoadProcessUnloadStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.LoadProcessUnloadStartFailedWarning", Description = $"{Name} LoadProcessUnload start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ExpertChargeProcessDischargeStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ExpertChargeProcessDischargeStartFailedWarning", Description = $"{Name} Expert ChargeProcessDischarge start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ExpertChargeProcessStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ExpertChargeProcessStartFailedWarning", Description = $"{Name} Expert ChargeProcess start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); LoadCassetteJobStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.LoadCassetteJobStartFailedWarning", Description = $"{Name} LoadCassette job start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); UnloadCassetteJobStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.UnloadCassetteJobStartFailedWarning", Description = $"{Name} UnloadCassette job start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ChargeWaferJobStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ChargeWaferJobStartFailedWarning", Description = $"{Name} ChargeWafer job start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReturnAllWaferJobStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReturnAllWaferJobStartFailedWarning", Description = $"{Name} ReturnAllWafer job start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ChargeWaferJobMonitorFailedAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ChargeWaferJobMonitorFailedAlarm", Description = $"{Name} ChargeWafer job monitor start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); DischargeWaferJobMonitorFailedAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.DischargeWaferJobMonitorFailedAlarm", Description = $"{Name} DischargeWafer job monitor start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); SDWaferTypeUseCountWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.SDWaferTypeUseCountWarning", Description = $"SD wafer useCount warning ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); SDWaferTypeUseCountAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.SDWaferTypeUseCountAlarm", Description = $"SD wafer useCount alarm ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); SDWaferTypeUseTimeWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.SDWaferTypeUseTimeWarning", Description = $"SD wafer useTime warning ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); RecipeExecuteFreqWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.RecipeExecuteFreqWarning", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); RecipeExecuteFreqAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.RecipeExecuteFreqAlarm", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); RecipeThicknessWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.RecipeThicknessWarning", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); RecipeThicknessAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.RecipeThicknessAlarm", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReatorStepRunTimeWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReatorStepRunTimeWarning", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReatorStepRunTimeAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReatorStepRunTimeAlarm", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReatorStepRunFreqWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReatorStepRunFreqWarning", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReatorStepRunFreqAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReatorStepRunFreqAlarm", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReatorStepThicknessWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReatorStepThicknessWarning", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); ReatorStepThicknessAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.ReatorStepThicknessAlarm", Description = $"", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); SDWaferTypeUseTimeAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.SDWaferTypeUseTimeAlarm", Description = $"SD wafer type use time alarm ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); SDWaferTypeThicknessWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.SDWaferTypeThicknessWarning", Description = $"SD wafer thickness warning ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); SDWaferTypeThicknessAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.SDWaferTypeThicknessAlarm", Description = $"SD wafer thickness alarm ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); EDWaferTypeUseCountWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.EDWaferTypeUseCountWarning", Description = $"ED wafer useCount warning ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); EDWaferTypeUseCountAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.EDWaferTypeUseCountAlarm", Description = $"ED wafer useCount alarm ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); EDWaferTypeUseTimeWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.EDWaferTypeUseTimeWarning", Description = $"ED wafer useTime warning ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); EDWaferTypeUseTimeAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.EDWaferTypeUseTimeAlarm", Description = $"ED wafer useTime alarm ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); EDWaferTypeThicknessWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.EDWaferTypeThicknessWarning", Description = $"ED wafer thickness warning ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); EDWaferTypeThicknessAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.EDWaferTypeThicknessAlarm", Description = $"ED wafer thickness alarm ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); EquipmentEmergencyStopAlarm = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.EquipmentEmergencyStopAlarm", Description = $"{Name} equipment emergency stop alarm ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Alarm, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); TransferJobStartFailedWarning = SubscribeAlarm(new AlarmEventItem() { EventEnum = $"{Name}.TransferJobStartFailedWarning", Description = $"Transfer job start failed ", Solution = "No information available. Press[Clear] to delete alarm message.", Explaination = "No information available.", AutoRecovery = false, Level = EventLevel.Warning, Action = EventAction.Clear, Category = "SystemAlarm", }, () => { return true; }); } 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 { } } } }