ElectricEqpmt_Breaker_35kV_Circuit.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "pch.h"
  2. #include "ElectricEqpmt_Breaker_35kV_Circuit.h"
  3. CElectricEqpmt_Breaker_35kV_Circuit::CElectricEqpmt_Breaker_35kV_Circuit(void)
  4. {
  5. SetSubType(Electric_Breaker_Circuit);
  6. }
  7. CElectricEqpmt_Breaker_35kV_Circuit::~CElectricEqpmt_Breaker_35kV_Circuit(void)
  8. {
  9. }
  10. int CElectricEqpmt_Breaker_35kV_Circuit::CheckEqpmtCtrlCase(int status,ELEEQPMTMAP& ElectricEqpmtMap,int stdid,int subsysid,int trianid,int stationid,int viewid,int CtrlType, int nMark)
  11. {
  12. // 真实设备反馈状态变化,不进行校验直接更新
  13. if (OperClient_RealSys == nMark || OperClient_RealSynch == nMark)
  14. {
  15. return DH_CmdReplyStatus_Pass;
  16. }
  17. // 35kV母联断路器手动操作,三合两闭处理逻辑
  18. int nRetStatus = DH_CmdReplyStatus_Pass;
  19. ELEEQPMTMAP::iterator iterBolt = ElectricEqpmtMap.find(GetAutoBoltID());
  20. if (iterBolt != ElectricEqpmtMap.end() )
  21. {
  22. ElectricEqpmt_PowerBolt* pEqpmtBolt = (ElectricEqpmt_PowerBolt*)iterBolt->second;
  23. if ( pEqpmtBolt != NULL )
  24. {
  25. if (GetStatus()==Electric_Eqpmt_Status_OFF && GetRelationBreakerType()==EQPMT_RELATIONTYPE_AUTOBOLT && GetSubType()==Electric_Breaker_Circuit)
  26. {
  27. nRetStatus = pEqpmtBolt->GetEqpmtCtrlCaseStatus_CircuitBreaker_OnByHand(status,ElectricEqpmtMap);
  28. }
  29. if ( nRetStatus == DH_CmdReplyStatus_Deny )
  30. {
  31. if (trianid>0)
  32. {
  33. std::stringstream ss;
  34. ss << GetEqpmentName() << " 操作禁止";
  35. std::string retstr = ss.str();
  36. DHSVRREPLY CheckReplyMsg;
  37. memset(&CheckReplyMsg, 0, sizeof(DHSVRREPLY));
  38. strncpy(CheckReplyMsg.ReplyText, retstr.c_str(), sizeof(CheckReplyMsg.ReplyText));
  39. CheckReplyMsg.CmdID = OCCCOMMAND::eUpdateOperCheck;
  40. string strName=GetEqpmentID();
  41. strncpy(CheckReplyMsg.EqpmtStrID, strName.c_str(), sizeof(CheckReplyMsg.EqpmtStrID));
  42. CheckReplyMsg.CtrlLock=GetControlLock();
  43. CheckReplyMsg.StdID = stdid;
  44. CheckReplyMsg.EqpmtStatus =nRetStatus;
  45. CheckReplyMsg.StationID=stationid;
  46. CheckReplyMsg.ViewID = viewid;
  47. CheckReplyMsg.SubSysID = subsysid;
  48. OCCCOMMAND NetOrder;
  49. NetOrder.DesSysType = OCC_SYS_DD_CLIENT;
  50. NetOrder.ScrSysType = OCC_SYS_DD_SVR;
  51. NetOrder.TrainningID = trianid;
  52. NetOrder.setPacketValue(&CheckReplyMsg,OCCCOMMAND::eUpdateSvrReply);
  53. p_SendList->push(NetOrder);
  54. return nRetStatus;
  55. }
  56. }
  57. }
  58. }
  59. return CElectricEqpmt_SwicthEqpmt::CheckEqpmtCtrlCase(status, ElectricEqpmtMap, stdid, subsysid, trianid, stationid, viewid, CtrlType, nMark);
  60. }