#pragma once #include "BaseDataStructDefine.h" #include "BaseElectricEqpmt.h" #include "ElectricEqpmt_Breaker.h" #include "ElectricEqpmt_Line_TouchNet.h" #include "ElectricEqpmt_PowerBolt.h" #include "ElectricEqpmt_TelesignalisationMng.h" #include "ElectricEqpmt_ElcTurnOffAreaMng.h" #include "ElectricEqpmt_Station400VLoadMng.h" #include class PowerEventDeal //故障处理类 { public: PowerEventDeal(); virtual ~PowerEventDeal(); void SetEqpmtMap(ELEEQPMTMAP* pepmtmap, std::recursive_mutex* psec, EQPMTTELEINFO* pEqpmtTeleInfo); void SetProtectSetStr(string str) { if (m_StrProtectSetStr.empty()&& str!=m_StrProtectSetStr) { m_StrProtectSetStr=str; } } void SetStaionID(int stationid) { if (stationid != m_stationid) { m_stationid = stationid; } } void SetViewID(int viewid) { if (viewid != m_viewid) { m_viewid = viewid; } } void SetSubSystemID(int subsystid) { if (subsystid != m_subsystemid) { m_subsystemid = subsystid; } } void SetStdID(int stdid) { if (stdid != m_stdid) { m_stdid = stdid; } } //added by zhangjiahua void SetCourseID(int ID) { m_CourseID = ID; } int GetCourseID() { return m_CourseID; } ELECSTATIONMAP m_MI_powerstation; //变电站相关信息 string GetStationName(int stationID);//根据车站ID获取车站名称 added by zhangjiahua bool DealEvent(NORMALCMDC NCmd,int EventOper,string Eqpmtid,int parm, const string& str2); //故障处理 void EqpmtCtrl(NORMALCMDC NCmd,string Eqpmtid,int Status,string Stdid,int CtrlType,int nMark = 0);//设备控制 void EqpmtCtrlCheck(int ViewID,int SubSys,string Eqpmtid,int Status,int Stdid,int ctrlarea,int grade,int station, int CtrlType);//设备检测 void SetInitInfo(CommandQueue * psendlist,int trian); bool CloseOffSwicth(); //关闭开关 bool handle_delaytime(); // 延时处理 bool NeedDelayTimeDeal(); //是否需要延时处理 DELAYMAP* GetDelayTimeMap(); //获取延时表 bool DealWithAutoBoltCtrlMothod(int trainid,string Eqpmtid,int ctrlmode); //更新备自投控制模式:自投自复、自投手复、手复手投、手复自投 void SetEqpmtTelemeteryValue(string Eqpmtid, int nType, float nValue, int IsReset);//设置电压、电流遥测值 void DealWith_EqpmtFixedAreaCtrl(string Eqpmtid, int CtrlType, int FixedArea, int SysID);//设置设备定值分区 void DealWith_StationCommunicationStatus(int nStation, int IsReset);//设置车站通信状态 void SystemInit(int nDesSysID = 0); void EqpmetInit();//设备初始化 //added by zhangjiahua string m_StrProtectSetStr; ElectricEqpmt_TelesignalisationMng m_TelesignalisationMng; ElectricEqpmt_ElcTurnOffAreaMng m_ElcTurnOffAreaMng; ElectricEqpmt_Station400VLoadMng m_400VLoadMng; /* 设备故障后遥信功能处理 pOwner: 处理模块句柄 nProtectID: 故障保护类型 strEqpmtStrID: 保护动作设备编号 nMark: 设置标识 0取消 1设置 */ static void DealTelesignalisation(void* pOwner, int nProtectID, const string& strEqpmtStrID, int nMark ); void DealTelesignalisation( int nProtectID, const string& strEqpmtStrID, int nMark ); /* 遥信初始化 */ void TelesignalisationInit(); /* 电环联合接口:判断设备是否有电 返回值:ture表示有电 false表示无电 */ static bool GetEqpmtElcStatus(void* pOwner, const string& strEqpmtStrID ); bool GetEqpmtElcStatus( const string& strEqpmtStrID ); /* 电环联合接口:设备区断电处理 nMark: 0表示停电 1表示送电 */ static void TurnOffArea(void* pOwner, int nAreaID, int nStationID, int nMark ); void TurnOffArea(int nAreaID, int nStationID, int nMark ); static void DealElcTurnOffArea(void* pOwner, const string& strEqpmtStrID ); /* 电力区域报警 nStationID: 车站ID bPowers:true表示受电 false表示失电 */ void ElcAreaAlarm( int nStationID, bool bPower ); //特殊处理接触轨停电 void DealThirdTrackPowerLose(); /* 环电联合:环调设备故障导致电力设备跳闸 */ void PowerCutArea( int nAreaID ); /* 车站三级负荷自切 */ void Deal400VLoad( int nStationID, int nThreeLoadUnitID, int nCutMark ); void DealRemoteLock(NORMALCMDC& NCmd); void DealPermissionChange(NORMALCMDC& NCmd); //处理车站权限转换 added by zhangjiahua void SendControlPermission();//发送车站权限 added by zhangjiahua //向教员发送评价信息 added by zhangjiahua void SendMsgToTech(UpdateEvaOperStatus data); //向客户端发送报警信息 void SendStationAlarmMsgToClient(int nStation, string AlarmText); static void DealDeal400VLoadTurnOff(void* pOwner, const string& strEqpmtStrID, int nButtonID ); bool IsExamMOde; //是否为考试模式 add by chenht public: MapIndex_ElcEqpmtStatusToIBPLight m_MIEqpmtStatusToIBPLight;//IBP盘 //IBP盘处理 void InitEqpmtStatusToIBP(); void EqpmtStatusToIBP( const std::string& strEqpmtID, int nEqpmtStatus ); void UpdateIBPLightStatus( int nIBPSysID, std::string& strKey, int nStatus ,int nflashFlag=IBPFlash_Normal,int nIBPIOID=0); void UpdateIBPLightStatus( int nIBPSysID, vector& vecKey, int nStatus,int nflashFlag=IBPFlash_Normal,int nIBPIOID=0); void UpdateIBPLightStatus( int nIBPSysID, int nKey, int nStatus ,int nflashFlag=IBPFlash_Normal,int nIBPIOID=0); protected: ELEEQPMTMAP* pElectricEqpmtMap; //设备列表 //std::mutex* pEqpmtMapCriticalSection; std::recursive_mutex* pEqpmtMapCriticalSection; DELAYMAP m_DelayDelMap; EQPMTTELEINFO* mptr_EqpmtTeleInfo;//设备遥测相关信息 int m_trainID; CommandQueue * p_SendList; //消息队列 int m_EqpmtStationID; //操作相关电力元件所属车站ID string m_StrCheckEqpmt; //保存检查设备ID int m_stationid; int m_viewid; int m_subsystemid; int m_stdid; int m_CourseID; //课程编号 added by zhangjiahua };