PowerEventDeal.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. #pragma once
  2. #include "BaseDataStructDefine.h"
  3. #include "BaseElectricEqpmt.h"
  4. #include "ElectricEqpmt_Breaker.h"
  5. #include "ElectricEqpmt_Line_TouchNet.h"
  6. #include "ElectricEqpmt_PowerBolt.h"
  7. #include "ElectricEqpmt_TelesignalisationMng.h"
  8. #include "ElectricEqpmt_ElcTurnOffAreaMng.h"
  9. #include "ElectricEqpmt_Station400VLoadMng.h"
  10. #include <mutex>
  11. class PowerEventDeal //故障处理类
  12. {
  13. public:
  14. PowerEventDeal();
  15. virtual ~PowerEventDeal();
  16. void SetEqpmtMap(ELEEQPMTMAP* pepmtmap, std::recursive_mutex* psec, EQPMTTELEINFO* pEqpmtTeleInfo);
  17. void SetProtectSetStr(string str)
  18. {
  19. if (m_StrProtectSetStr.empty()&& str!=m_StrProtectSetStr)
  20. {
  21. m_StrProtectSetStr=str;
  22. }
  23. }
  24. void SetStaionID(int stationid)
  25. {
  26. if (stationid != m_stationid)
  27. {
  28. m_stationid = stationid;
  29. }
  30. }
  31. void SetViewID(int viewid)
  32. {
  33. if (viewid != m_viewid)
  34. {
  35. m_viewid = viewid;
  36. }
  37. }
  38. void SetSubSystemID(int subsystid)
  39. {
  40. if (subsystid != m_subsystemid)
  41. {
  42. m_subsystemid = subsystid;
  43. }
  44. }
  45. void SetStdID(int stdid)
  46. {
  47. if (stdid != m_stdid)
  48. {
  49. m_stdid = stdid;
  50. }
  51. }
  52. //added by zhangjiahua
  53. void SetCourseID(int ID)
  54. {
  55. m_CourseID = ID;
  56. }
  57. int GetCourseID()
  58. {
  59. return m_CourseID;
  60. }
  61. ELECSTATIONMAP m_MI_powerstation; //变电站相关信息
  62. string GetStationName(int stationID);//根据车站ID获取车站名称 added by zhangjiahua
  63. bool DealEvent(NORMALCMDC NCmd,int EventOper,string Eqpmtid,int parm, const string& str2); //故障处理
  64. void EqpmtCtrl(NORMALCMDC NCmd,string Eqpmtid,int Status,string Stdid,int CtrlType,int nMark = 0);//设备控制
  65. void EqpmtCtrlCheck(int ViewID,int SubSys,string Eqpmtid,int Status,int Stdid,int ctrlarea,int grade,int station, int CtrlType);//设备检测
  66. void SetInitInfo(CommandQueue * psendlist,int trian);
  67. bool CloseOffSwicth(); //关闭开关
  68. bool handle_delaytime(); // 延时处理
  69. bool NeedDelayTimeDeal(); //是否需要延时处理
  70. DELAYMAP* GetDelayTimeMap(); //获取延时表
  71. bool DealWithAutoBoltCtrlMothod(int trainid,string Eqpmtid,int ctrlmode); //更新备自投控制模式:自投自复、自投手复、手复手投、手复自投
  72. void SetEqpmtTelemeteryValue(string Eqpmtid, int nType, float nValue, int IsReset);//设置电压、电流遥测值
  73. void DealWith_EqpmtFixedAreaCtrl(string Eqpmtid, int CtrlType, int FixedArea, int SysID);//设置设备定值分区
  74. void DealWith_StationCommunicationStatus(int nStation, int IsReset);//设置车站通信状态
  75. void SystemInit(int nDesSysID = 0);
  76. void EqpmetInit();//设备初始化 //added by zhangjiahua
  77. string m_StrProtectSetStr;
  78. ElectricEqpmt_TelesignalisationMng m_TelesignalisationMng;
  79. ElectricEqpmt_ElcTurnOffAreaMng m_ElcTurnOffAreaMng;
  80. ElectricEqpmt_Station400VLoadMng m_400VLoadMng;
  81. /*
  82. 设备故障后遥信功能处理
  83. pOwner: 处理模块句柄
  84. nProtectID: 故障保护类型
  85. strEqpmtStrID: 保护动作设备编号
  86. nMark: 设置标识 0取消 1设置
  87. */
  88. static void DealTelesignalisation(void* pOwner, int nProtectID, const string& strEqpmtStrID, int nMark );
  89. void DealTelesignalisation( int nProtectID, const string& strEqpmtStrID, int nMark );
  90. /*
  91. 遥信初始化
  92. */
  93. void TelesignalisationInit();
  94. /*
  95. 电环联合接口:判断设备是否有电
  96. 返回值:ture表示有电 false表示无电
  97. */
  98. static bool GetEqpmtElcStatus(void* pOwner, const string& strEqpmtStrID );
  99. bool GetEqpmtElcStatus( const string& strEqpmtStrID );
  100. /*
  101. 电环联合接口:设备区断电处理
  102. nMark: 0表示停电 1表示送电
  103. */
  104. static void TurnOffArea(void* pOwner, int nAreaID, int nStationID, int nMark );
  105. void TurnOffArea(int nAreaID, int nStationID, int nMark );
  106. static void DealElcTurnOffArea(void* pOwner, const string& strEqpmtStrID );
  107. /*
  108. 电力区域报警
  109. nStationID: 车站ID bPowers:true表示受电 false表示失电
  110. */
  111. void ElcAreaAlarm( int nStationID, bool bPower );
  112. //特殊处理接触轨停电
  113. void DealThirdTrackPowerLose();
  114. /*
  115. 环电联合:环调设备故障导致电力设备跳闸
  116. */
  117. void PowerCutArea( int nAreaID );
  118. /*
  119. 车站三级负荷自切
  120. */
  121. void Deal400VLoad( int nStationID, int nThreeLoadUnitID, int nCutMark );
  122. void DealRemoteLock(NORMALCMDC& NCmd);
  123. void DealPermissionChange(NORMALCMDC& NCmd); //处理车站权限转换 added by zhangjiahua
  124. void SendControlPermission();//发送车站权限 added by zhangjiahua
  125. //向教员发送评价信息 added by zhangjiahua
  126. void SendMsgToTech(UpdateEvaOperStatus data);
  127. //向客户端发送报警信息
  128. void SendStationAlarmMsgToClient(int nStation, string AlarmText);
  129. static void DealDeal400VLoadTurnOff(void* pOwner, const string& strEqpmtStrID, int nButtonID );
  130. bool IsExamMOde; //是否为考试模式 add by chenht
  131. public:
  132. MapIndex_ElcEqpmtStatusToIBPLight m_MIEqpmtStatusToIBPLight;//IBP盘
  133. //IBP盘处理
  134. void InitEqpmtStatusToIBP();
  135. void EqpmtStatusToIBP( const std::string& strEqpmtID, int nEqpmtStatus );
  136. void UpdateIBPLightStatus( int nIBPSysID, std::string& strKey, int nStatus ,int nflashFlag=IBPFlash_Normal,int nIBPIOID=0);
  137. void UpdateIBPLightStatus( int nIBPSysID, vector<std::string>& vecKey, int nStatus,int nflashFlag=IBPFlash_Normal,int nIBPIOID=0);
  138. void UpdateIBPLightStatus( int nIBPSysID, int nKey, int nStatus ,int nflashFlag=IBPFlash_Normal,int nIBPIOID=0);
  139. protected:
  140. ELEEQPMTMAP* pElectricEqpmtMap; //设备列表
  141. //std::mutex* pEqpmtMapCriticalSection;
  142. std::recursive_mutex* pEqpmtMapCriticalSection;
  143. DELAYMAP m_DelayDelMap;
  144. EQPMTTELEINFO* mptr_EqpmtTeleInfo;//设备遥测相关信息
  145. int m_trainID;
  146. CommandQueue * p_SendList; //消息队列
  147. int m_EqpmtStationID; //操作相关电力元件所属车站ID
  148. string m_StrCheckEqpmt; //保存检查设备ID
  149. int m_stationid;
  150. int m_viewid;
  151. int m_subsystemid;
  152. int m_stdid;
  153. int m_CourseID; //课程编号 added by zhangjiahua
  154. };