ElectricEqpmt_Breaker.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #pragma once
  2. #include "ElectricEqpmt_SwicthEqpmt.h"
  3. #include "ElectricEqpmt_PowerBolt.h"
  4. class ElectricEqpmt_Breaker : //断路器
  5. public CElectricEqpmt_SwicthEqpmt
  6. {
  7. public:
  8. ElectricEqpmt_Breaker();
  9. virtual ~ElectricEqpmt_Breaker(){};
  10. virtual void CalculateValue(double inputv,double inputI,ELEEQPMTMAP* PEqpmtMap);
  11. virtual bool handle_checkprotect(int eventOper,ELEEQPMTMAP& eqpmtmap,int errorid,int protectid);
  12. virtual bool handle_delaytime(time_t& time, map<string, BaseElectricEqpmt*>& eqpmtmap, const DelayTimeInfo& delayparm);
  13. virtual bool CheckProtect(ELEEQPMTMAP& ElectricEqpmtMap,int errorid,int protectid,bool bAutoRelation = true );
  14. virtual void SetRemoteLock(ELEEQPMTMAP& ElectricEqpmtMap,int status,int ctrlArea,int lockType);
  15. virtual void CancleRemoteLock(ELEEQPMTMAP& ElectricEqpmtMap,int status,int ctrlArea);
  16. virtual void SetCommunicationStatus(map<string,BaseElectricEqpmt*>& ElectricEqpmtMap);
  17. virtual void CancleCommunicationStatus(map<string,BaseElectricEqpmt*>& ElectricEqpmtMap);
  18. int CheckAutoUnionStatus(int errorid,ELEEQPMTMAP& ElectricEqpmtMap, const ProtectValue& protectValue, bool bAutoRelation = true );
  19. bool AddProtectRelation(ProtectValue& protect); //增加保护关系
  20. void SetRepeatShut(int shutstatus); //设置重合闸
  21. int GetActiveProtectID(); //获取主保护ID
  22. int EqpmtAutoBreak(ELEEQPMTMAP& ElectricEqpmtMap,const ProtectValue& protectValue, bool bAutoRelation = true ); //设备自断
  23. ElectricEqpmt_PowerBolt* GetBoltInShut(ELEEQPMTMAP& eqpmtmap); //获取合闸的备自投设备
  24. ElectricEqpmt_PowerBolt* GetBoltInOff(ELEEQPMTMAP& eqpmtmap); //获取分闸的备自投设备
  25. /*
  26. 故障发生时联跳设备处理方法 Add By XYX 2017 12 21
  27. */
  28. virtual bool CheckTripping( ELEEQPMTMAP& ElectricEqpmtMap, const ProtectValue& protectValue );
  29. /*
  30. 判断断路器当前是否故障
  31. */
  32. bool IsFault();
  33. /*
  34. 联跳设备故障恢复:解除锁闭状态
  35. */
  36. void UnLockTrippingEqpmt( ELEEQPMTMAP& ElectricEqpmtMap );
  37. virtual void EqpmtCtrl(int status,ELEEQPMTMAP& ElectricEqpmtMap,string Stdid,int CtrlType, int nMark = 0);
  38. /*
  39. 检查出线设备是否需要断开:手动分闸时调用
  40. */
  41. void CheckOutLineElectricEqpmt( ELEEQPMTMAP& ElectricEqpmtMap, int nMark /*= 0*/ );
  42. /*
  43. 35KV出线设备自断逻辑处理
  44. */
  45. void PowerCutOutLineElectricEqpmt_35KV( ELEEQPMTMAP& ElectricEqpmtMap, const string& strOutLineElectricEqpmtStrID );
  46. /*
  47. 400V出线设备自断逻辑处理
  48. */
  49. void PowerCutOutLineElectricEqpmt_400V( ELEEQPMTMAP& ElectricEqpmtMap, const string& strOutLineElectricEqpmtStrID );
  50. /*
  51. 400V出线设备自断
  52. */
  53. void PowerCutCurElectricEqpmt_400V( ELEEQPMTMAP& ElectricEqpmtMap );
  54. /*
  55. 35KV目联是否投入
  56. */
  57. bool BoltPowerIn_35KV( ELEEQPMTMAP& ElectricEqpmtMap, const string& strOutLineElectricEqpmtStrID );
  58. /*
  59. 目联备自投要特殊处理
  60. */
  61. //virtual int CheckEqpmtCtrlCase(int status,ELEEQPMTMAP& ElectricEqpmtMap,int stdid,int subsysid,int trianid,int stationid,int viewid);
  62. virtual bool PowerCut(ELEEQPMTMAP& eqpmtmap,string sourceid,int offcase);
  63. virtual bool PowerLost(ELEEQPMTMAP& eqpmtmap,string sourceid,int offcase);
  64. virtual bool PowerIn(ELEEQPMTMAP& eqpmtmap,string sourceid);
  65. private:
  66. std::vector<ProtectValue> SettingProtects;
  67. int ActiveProtectIndex; //主保护索引
  68. //string BreakHandleID; //断路器手车ID
  69. /* string AutoBoltID;*/ //备自投ID
  70. int RepeatShut; //重合闸
  71. int64_t RepeatShutST; //重合闸开始时间
  72. int64_t LastShutST; //最后一次重合闸的时间
  73. /*
  74. 重合闸执行次数及时间间隔
  75. */
  76. static map<int, BreakerDelayTime> mapBreakerDelayTime;
  77. int RepeatShutIndex;
  78. static map<string,string> m_mapCheckedEqpmtStrID;
  79. public:
  80. /*
  81. 根据项目不同设置重合闸执行次数以及时间间隔 ADD BY XYX 2017-12-27
  82. */
  83. static void AddRepeatShut( int nEqpmtType, int nIndex, int nDelayTime, int nOneTime );
  84. int GetAllRepeatShutTime( );
  85. int GetDelayTime( int nIndex );
  86. int GetOneTime();
  87. int GetCurIndexDelayTime();
  88. void ResetRepeatShutIndex()
  89. {
  90. RepeatShutIndex = 1;
  91. }
  92. void MoveNextRepeatShutIndex()
  93. {
  94. RepeatShutIndex++;
  95. }
  96. int GetRepeatShutIndex()
  97. {
  98. return RepeatShutIndex;
  99. }
  100. private:
  101. string m_strBreakHandleID; //断路器手车ID
  102. public:
  103. void SetBreakHandID(string id) //设置断路器手车
  104. {
  105. m_strBreakHandleID=id;
  106. }
  107. string GetBreakHandleID() //获取断路器手车
  108. {
  109. return m_strBreakHandleID;
  110. }
  111. };