ElectricEqpmt_Breaker_DC.cpp 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "pch.h"
  2. #include "ElectricEqpmt_Breaker_DC.h"
  3. #include "PublicEqpmtID.h"
  4. CElectricEqpmt_Breaker_DC::CElectricEqpmt_Breaker_DC(void)
  5. {
  6. }
  7. CElectricEqpmt_Breaker_DC::~CElectricEqpmt_Breaker_DC(void)
  8. {
  9. }
  10. int CElectricEqpmt_Breaker_DC::CheckEqpmtCtrlCaseTouchnetTest(int status,ELEEQPMTMAP& ElectricEqpmtMap,int stdid,int subsysid,int trianid,int stationid,int viewid)
  11. {
  12. //xyx修改begin
  13. string EqpmtTypeName = GetBaseTypeName(); //设备类型名称
  14. string EqpmtName = GetEqpmentName(); //设备名称
  15. int EqpmtSourceStatonID = GetSourceStationID(); //设备所属车站ID
  16. int EqpmtType = GetBaseType(); //设备类型
  17. int retstatus = DH_CmdReplyStatus_Deny;
  18. vector<string>::iterator vec=m_FaultEqpmt.begin();
  19. bool Test_Fail = false;
  20. for (;vec!=m_FaultEqpmt.end();vec++)
  21. {
  22. ELEEQPMTMAP::iterator iterFaultEqpmt;
  23. iterFaultEqpmt=ElectricEqpmtMap.find(*vec);
  24. if (iterFaultEqpmt!=ElectricEqpmtMap.end()&&iterFaultEqpmt->second->GetFaultLockStatus()==Electric_Eqpmt_Status_Lock&&iterFaultEqpmt->second->GetBaseType()==OCC_EQPMTTYPE_TouchNet)
  25. {
  26. retstatus = DH_CmdReplyStatus_Deny;
  27. int nActType1 = ElcAlarm_TripActType_TouchnetTest_Fail; //“线路测试未通过”报文类型
  28. UpdateAlarmType(EqpmtType,EqpmtTypeName,EqpmtName,EqpmtSourceStatonID,nActType1);
  29. Test_Fail = true;
  30. break;
  31. }
  32. }
  33. if (!Test_Fail)
  34. {
  35. retstatus = DH_CmdReplyStatus_Pass;
  36. int nActType2 = ElcAlarm_TripActType_TouchnetTest_Success; //“线路测试通过”报文类型
  37. UpdateAlarmType(EqpmtType, EqpmtTypeName, EqpmtName, EqpmtSourceStatonID, nActType2);
  38. }
  39. return retstatus;
  40. //xyx修改end
  41. }
  42. //直流断路器合闸前进行线路测试测试通过后合闸操作才可操作成功
  43. void CElectricEqpmt_Breaker_DC::EqpmtCtrl( int status,ELEEQPMTMAP& ElectricEqpmtMap,string Stdid,int CtrlType, int nMark /*= 0*/ )
  44. {
  45. CElectricEqpmt_SwicthEqpmt::EqpmtCtrl(status, ElectricEqpmtMap, Stdid, CtrlType, nMark );
  46. if (CtrlType==CTRLTYPE_LOCKSTATUS)
  47. {
  48. UpdateLockStatus(status);
  49. }
  50. else if (CtrlType ==CTRLTYPE_STATUS)
  51. {
  52. if (GetControlLock()==Electric_Eqpmt_Status_UnLock)
  53. {
  54. string EqpmtTypeName = GetBaseTypeName(); //设备类型名称
  55. string EqpmtName = GetEqpmentName(); //设备名称
  56. int EqpmtSourceStatonID = GetSourceStationID(); //设备所属车站ID
  57. int EqpmtType = GetBaseType(); //设备类型
  58. if (status==Eqpmt_Operation_ON&&GetStatus()==Electric_Eqpmt_Status_OFF)
  59. {
  60. int CheckResult=-1;
  61. CheckResult = CheckEqpmtCtrlCaseTouchnetTest(status,ElectricEqpmtMap,0,GetOperSubsysID(),m_Trianid,GetSourceStationID(),GetViewID()); //合闸前进行线路测试
  62. if (CheckResult==DH_CmdReplyStatus_Deny)
  63. {
  64. return;
  65. }
  66. else
  67. {
  68. TurnOn(ElectricEqpmtMap);
  69. int nActType = ElcAlarm_TripActType_Close; //“合闸”类型
  70. UpdateAlarmType(EqpmtType,EqpmtTypeName,EqpmtName,EqpmtSourceStatonID,nActType);
  71. UpdateOperResultToTechEva(GetEqpmentID(),GetStatus()); //更新“合闸”执行结果
  72. }
  73. }
  74. }
  75. }
  76. }