#pragma once #include "module.h" //报警错误的类型(后期只能在后面增加类型) enum EWarningCode { _Warning_Code_00 = 0,// _Warning_Code_01,//"Motion Ctrl Init Devs Error";//运动控制器初始化错误 _Warning_Code_02,//"Motion Ctrl Devs State Error";//运动控制器状态错误 _Warning_Code_03,//"Motion Ctrl Speed Error";//运动控制器速度错误 _Warning_Code_04,//"Motion Ctrl Move Error";//运动控制器移动错误 _Warning_Code_05,//"Motion Ctrl I/O Error";//运动控制器IO错误 _Warning_Code_06,//"PLC Communication Error";//PLC 通信错误 _Warning_Code_07,//"Motor W Drive Error";//光闸电机报警(PLC 点位反馈) _Warning_Code_08,//"Motor Z Drive Error";//Z 轴电机报警(PLC 点位反馈) _Warning_Code_09,//"Machine Gate Check Err";//机械关闸检查失败 _Warning_Code_10,//"Laser Beam Check Err";//光束检测失败 _Warning_Code_11,//"Wafer adsorption Err";//晶圆吸附检测异常 _Warning_Code_12,//"Door State Check Err";//门状态检测异常 _Warning_Code_13,//"Laipu IO Card Init Devs Error";//莱普pci365 卡初始化错误 _Warning_Code_14,//"Authorization Error";//授权异常 _Warning_Code_15,//"Dis Meter Error";//激光测距仪错误 _Warning_Code_16,//"Laser Power Meter Error";//激光功率计错误 _Warning_Code_17,//"Laser Spot Meter Error";//光束分析仪错误 _Warning_Code_18,//"Laser Device Comm Error";//激光器通信错误 _Warning_Code_19,//"Laser device state Error";//激光器状态错误 _Warning_Code_20,//"Oscilloscope state Error";//tek 示波器状态错误 _Warning_Code_21,//"Operate Ldd Error";//操作激光LDD 错误 _Warning_Code_22,//"Transfer Wafer Error";//wafer 传输错误 _Warning_Code_23,//"Laser Energy Density Check Err";//Recipe 功率密度检测失败 _Warning_Code_24,//"Red Laser Device Comm Error";//红光激光器通信错误 _Warning_Code_25,//"Red Laser device state Error";//红光激光器状态错误 _Warning_Code_26,//"Transfer Arm Alarm";//传片机报警(PLC 点位反馈) _Warning_Code_27,//"Water leaking Alarm";//红光激光器漏水(PLC 点位反馈) _Warning_Code_28,//"O2 Senser Alarm";//氧气含量过低报警(PLC 点位反馈) _Warning_Code_29,//"Wind pressure Alarm";//风压检测报警(PLC 点位反馈) _Warning_Code_30,//"Device Temperature Alarm";//机台温度报警(PLC 点位反馈) _Warning_Code_31,//"APT pressure Alarm";//APT负压报警(PLC 点位反馈) _Warning_Code_32,//"Smoke Senser Alarm";//烟雾传感器报警(PLC 点位反馈) _Warning_Code_33,//"Wave Form Channel Error";//波形发生器错误 _Warning_Code_34,//"Laser Cooling Alarm";//绿光水冷机报警(PLC 点位反馈) _Warning_Code_35,//"Water leaking Alarm";//载盘水冷机漏水(PLC 点位反馈) _Warning_Code_36,//"Water leaking Alarm";//绿光激光器漏水(PLC 点位反馈) _Warning_Code_37,//"Water leaking Alarm";//绿光水冷机漏水(PLC 点位反馈) _Warning_Code_38,//"Water leaking Alarm";//总进水盘漏水(PLC 点位反馈) _Warning_Code_39,//"Water leaking Alarm";//总出水盘漏水(PLC 点位反馈) _Warning_Code_40,//"Laser Par Error";//激光器参数错误 _Warning_Code_41,//"Laser1 Pow Check Error";//激光1 功率点检错误 _Warning_Code_42,//"Laser2 Pow Check Error";//激光2 功率点检错误 _Warning_Code_43,//"Red Laser Pow Check Error";//红光功率点检错误 _Warning_Code_44,//"Wafer Aligner Error";//准直器错误 _Warning_Code_45,//"Oxygen Check Error";//氧气浓度检测错误 _Warning_Code_46,//"Tempratue Measure Error";//温度检测错误 _Warning_Code_47,//"Anneal Pow Check Error";//退火过程功率监控错误 _Warning_Code_48,// _Warning_Code_49,// _Warning_Code_50,// _Warning_Code_51,// _Warning_Code_52,// _Warning_Code_53,// _Warning_Code_54,// _Warning_Code_55,// _Warning_Code_56,// _Warning_Code_57,// _Warning_Code_58,// _Warning_Code_59,// }; //报警的类型 enum EWarningType { _WarningType_Warning = 0,//一般性报警 _WarningType_Error,//严重报警 }; #define WARNING_ON true #define WARNING_OFF false //报警状态 class CWarningState { public: CWarningState(void) { m_bWarning = false;//是否正在报警 m_pModule = NULL;//用于响应报警清除的模块指针(有些报警需要再次检测) m_bNeedInitDevice = false;//清除错误状态的时候是否需要重新初始化设备 m_bStopAnnealFlow = true;//是否立即终止退火过程 m_bSendToServer = false;//是否发送到服务器 m_SecsAlarmId = 0; } public: EWarningCode m_WarningCode;//报警错误的code int m_SecsAlarmId;//发送给Secs 服务器的alarm id(定义在Alarm.csv) bool m_bWarning;//是否正在报警 bool m_bNeedInitDevice;//清除错误状态的时候是否需要重新初始化设备 bool m_bStopAnnealFlow;//是否立即终止退火过程 bool m_bSendToServer;//报警时是否发送给服务器 CString m_Description;//报警描述(固定) CString m_AddInfo;//附加信息(由报警发生位置设置,用于区分相同类型报警) CString m_DateTime;//报警发生的时间 CModule* m_pModule;//用于响应报警清除的模块指针 }; //报警管理 class CWarningMgr :public CModule { public: CWarningMgr(void); ~CWarningMgr(void); virtual void OnAppInitialize(); void SendWarningMsg(EWarningCode WarningCode,CString AddInfo,bool bThowException=false); void ClearAllWarningState(); bool HasWarningMsg(bool bException=false); bool HasStopAnnealWarningMsg(); void InsertRecordList(CListCtrl &List,CString Date,bool bShowByMonth); void InitWarningStateToList(CListCtrl &List); void UpdateWarningStateToList(CListCtrl &List); bool IsbClearAllWarningState(){return m_bClearAllWarningState;}; bool GetWarningState(EWarningCode WarningCode); private: void AddWarningRecord(CWarningState &WarningState); CString GetRecordFilePath(CString FileName); CString GetCurRecordFileName(); void ReadRecordInfoFile(vector &RecordInfoVec,CString Path); void WriteRecordInfoToFile(vector &RecordInfoVec,CString RecordFilePath); CString GetMonthStr(CString Date); void GetOneMonthRecordFileName(CString Date,vector &RecordFileNameVec); void GetOneMonthRecord(CString Date,vector &RecordInfoVec); void InsertRecordListExt(CListCtrl &List,vector &WarningStateVec,bool bOnlyWarning); CString GetWarningCode(CWarningState &WarningState); void CreatRecordPath(); void InitWarningStateVec(); void SendWarningMsgExt(CWarningState &WarningState); void SyncWarningRecordVec(vector &RecordInfoVec); private: vector m_WarningStateVec;//当前所有报警状态(用来判断报警状态是否变化) vector m_RecordInfoVec;//当前显示的报警信息列表 bool m_bClearAllWarningState;//是否正在清空报警 }; extern CWarningMgr *gWarningMgr;