应急联调完成
This commit is contained in:
@@ -3,8 +3,10 @@
|
||||
#include "../loguru.hpp"
|
||||
#include <string>
|
||||
#include "MOOS/libMOOS/Utils/MOOSUtilityFunctions.h"
|
||||
#include "../faultCode.h"
|
||||
|
||||
#define DEBUG
|
||||
// #define DEBUG
|
||||
#define DEBUG_1
|
||||
// 定义静态成员
|
||||
PowerManger* PowerManagerFsm::pm = nullptr;
|
||||
void PowerManagerFsm::react(TaskStopEvent const &e) {
|
||||
@@ -14,10 +16,10 @@ void PowerManagerFsm::react(TaskStopEvent const &e) {
|
||||
|
||||
void PowerManagerFsm::react(CycleTriggeredEvent const &){
|
||||
// 更新当前设备状态
|
||||
// cout << "CycleTriggeredEvent" << endl;
|
||||
pm->m_currentDriverState = pm->m_subDisSysState;
|
||||
// cout << (int)pm->m_subDisSysState.depth1 << endl;
|
||||
// cout << (int)pm->m_subDisSysState.depth1 << endl;
|
||||
#ifdef DEBUG_1
|
||||
pm->m_currentDriverState = pm->m_subDisSysState;
|
||||
#endif
|
||||
// cout << "CycleTriggeredEvent received" << endl;
|
||||
}
|
||||
bool PowerManagerFsm::handPowerProtection(DevCmdExt const &e){
|
||||
if(pm->workCondition > WorkCondition::REMOTE_CONTROL){
|
||||
@@ -735,23 +737,23 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
case 27:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet1 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet1 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet1 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet1 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet1 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet1 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet1 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet1 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -759,7 +761,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet1 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet1 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -767,29 +769,29 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet1 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet1 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 28:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet2 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet2 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet2 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet2 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet2 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet2 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet2 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet2 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -797,7 +799,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet2 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet2 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -805,29 +807,29 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet2 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet2 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 29:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet3 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet3 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet3 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet3 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet3 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet3 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet3 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet3 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -835,7 +837,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet3 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet3 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -843,29 +845,29 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet3 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet3 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 30:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet4 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet4 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet4 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet4 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet4 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet4 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet4 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet4 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -873,7 +875,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet4 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet4 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -881,29 +883,29 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet4 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet4 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 31:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet5 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet5 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet5 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet5 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet5 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet5 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet5 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet5 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -911,7 +913,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet5 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet5 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -919,29 +921,29 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet5 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet5 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 32:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet6 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet6 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet6 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet6 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet6 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet6 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet6 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet6 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet6 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet6 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -949,7 +951,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet6 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet6 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -957,29 +959,29 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet6 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet6 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 33:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet7 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet7 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet7 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet7 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet7 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet7 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet7 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet7 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet7 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet7 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -987,7 +989,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet7 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet7 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -995,29 +997,29 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet7 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet7 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 34:
|
||||
{
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet8 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterInet8 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
#ifdef DEBUG
|
||||
pm->m_currentDriverState.bowWaterlnet8 = e.cmd;
|
||||
pm->m_currentDriverState.bowWaterInet8 = e.cmd;
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet8 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet8 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet8 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet8 = 1;
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet8 = 1;
|
||||
pm->m_subDisSysCmd.bowWaterInet8 = 1;
|
||||
}
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
@@ -1025,7 +1027,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterlnet8 = 0;
|
||||
pm->m_subDisSysCmd.bowWaterInet8 = 0;
|
||||
}
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
@@ -1033,7 +1035,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterlnet8 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
LOG_F(WARNING, "DevCmdExt received bowWaterInet8 - id: %d, cmd: %d is out of range", e.id, e.cmd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1744,57 +1746,57 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
void PowerManagerFsm::basicNavigationFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "basicNavigationFault");
|
||||
if(FaultEnable::BasicNavigationFault_1)
|
||||
if((e.injectionFaultCode==1))
|
||||
{
|
||||
LOG_F(INFO, "部分深度计失效");
|
||||
pm->faultCode.push_back(0x1102);
|
||||
pm->faultCode.push_back(0x1103);
|
||||
pm->faultCode.push_back(0x1104);
|
||||
}
|
||||
if(FaultEnable::BasicNavigationFault_2)
|
||||
if((e.injectionFaultCode==2))
|
||||
{
|
||||
LOG_F(INFO, "DVL失效");
|
||||
pm->faultCode.push_back(0x1301);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_3)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
LOG_F(INFO, "单个艉舵失效");
|
||||
pm->faultCode.push_back(0x1207);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_4)
|
||||
if ((e.injectionFaultCode==4))
|
||||
{
|
||||
LOG_F(INFO, "部分艉舵失效");
|
||||
pm->faultCode.push_back(0x1308);
|
||||
pm->faultCode.push_back(0x1307);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_5)
|
||||
if ((e.injectionFaultCode==5))
|
||||
{
|
||||
LOG_F(INFO, "动力锂电池失效");
|
||||
pm->faultCode.push_back(0x130B);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_6)
|
||||
if ((e.injectionFaultCode==6))
|
||||
{
|
||||
LOG_F(INFO, "推进电机失效");
|
||||
pm->faultCode.push_back(0x130A);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_7)
|
||||
if ((e.injectionFaultCode==7))
|
||||
{
|
||||
LOG_F(INFO, "惯导失效");
|
||||
pm->faultCode.push_back(0x1305);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_8)
|
||||
if ((e.injectionFaultCode==8))
|
||||
{
|
||||
LOG_F(INFO, "深度失效");
|
||||
pm->faultCode.push_back(0x1302);
|
||||
pm->faultCode.push_back(0x1303);
|
||||
pm->faultCode.push_back(0x1304);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_9)
|
||||
if ((e.injectionFaultCode==9))
|
||||
{
|
||||
LOG_F(INFO, "仪表锂电池失效");
|
||||
pm->faultCode.push_back(0x1412);
|
||||
}
|
||||
if (FaultEnable::BasicNavigationFault_9)
|
||||
if ((e.injectionFaultCode==10))
|
||||
{
|
||||
LOG_F(INFO, "复合管控器失效");
|
||||
pm->faultCode.push_back(0x1413);
|
||||
@@ -1803,22 +1805,22 @@ void PowerManagerFsm::basicNavigationFault(FaultEvent const &e)
|
||||
void PowerManagerFsm::extendedNavigationFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "extendedNavigationFault");
|
||||
if (FaultEnable::ExtendedNavigationFault_1)
|
||||
if ((e.injectionFaultCode==1))
|
||||
{
|
||||
LOG_F(INFO, "艏舵展开电缸失效");
|
||||
pm->faultCode.push_back(0x2311);
|
||||
}
|
||||
if (FaultEnable::ExtendedNavigationFault_2)
|
||||
if ((e.injectionFaultCode==2))
|
||||
{
|
||||
LOG_F(INFO, "艏舵控制控制失效");
|
||||
pm->faultCode.push_back(0x2312);
|
||||
}
|
||||
if (FaultEnable::ExtendedNavigationFault_3)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
LOG_F(INFO, "动力锂电池功率不满/失效");
|
||||
pm->faultCode.push_back(0x2323);
|
||||
}
|
||||
if (FaultEnable::ExtendedNavigationFault_4)
|
||||
if ((e.injectionFaultCode==4))
|
||||
{
|
||||
LOG_F(INFO, "燃料电池失效");
|
||||
pm->faultCode.push_back(0x2334);
|
||||
@@ -1827,12 +1829,12 @@ void PowerManagerFsm::extendedNavigationFault(FaultEvent const &e)
|
||||
void PowerManagerFsm::obstacleAvoidanceFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "obstacleAvoidanceFault");
|
||||
if (FaultEnable::ObstacleAvoidanceFault_1)
|
||||
if ((e.injectionFaultCode==1))
|
||||
{
|
||||
pm->faultCode.push_back(0x3108);
|
||||
pm->faultCode.push_back(0x3109);
|
||||
}
|
||||
if (FaultEnable::ObstacleAvoidanceFault_2)
|
||||
if ((e.injectionFaultCode==2))
|
||||
{
|
||||
pm->faultCode.push_back(0x3201);
|
||||
pm->faultCode.push_back(0x3202);
|
||||
@@ -1842,7 +1844,7 @@ void PowerManagerFsm::obstacleAvoidanceFault(FaultEvent const &e)
|
||||
pm->faultCode.push_back(0x3206);
|
||||
pm->faultCode.push_back(0x3207);
|
||||
}
|
||||
if (FaultEnable::ObstacleAvoidanceFault_2)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
pm->faultCode.push_back(0x3301);
|
||||
}
|
||||
@@ -1851,24 +1853,24 @@ void PowerManagerFsm::obstacleAvoidanceFault(FaultEvent const &e)
|
||||
void PowerManagerFsm::buoyancyControlFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "buoyancyControlFault");
|
||||
if (FaultEnable::BuoyancyControlFault_1)
|
||||
if ((e.injectionFaultCode==1))
|
||||
{
|
||||
LOG_F(INFO, "单一浮调机构失效");
|
||||
pm->faultCode.push_back(0x4101);
|
||||
pm->faultCode.push_back(0x4201);
|
||||
}
|
||||
if (FaultEnable::BuoyancyControlFault_2)
|
||||
if ((e.injectionFaultCode==2))
|
||||
{
|
||||
LOG_F(INFO, "2-4及以上浮调装置失效");
|
||||
pm->faultCode.push_back(0x4301);
|
||||
pm->faultCode.push_back(0x4302);
|
||||
pm->faultCode.push_back(0x4303);
|
||||
}
|
||||
if (FaultEnable::BuoyancyControlFault_3)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
LOG_F(INFO, "功率不足满足浮调要求");
|
||||
pm->faultCode.push_back(0x4336);
|
||||
pm->faultCode.push_back(0x4436);
|
||||
}
|
||||
if (FaultEnable::BuoyancyControlFault_4)
|
||||
if ((e.injectionFaultCode==4))
|
||||
{
|
||||
LOG_F(INFO, "所有浮调系统失效");
|
||||
pm->faultCode.push_back(0x4301);
|
||||
@@ -1878,21 +1880,21 @@ void PowerManagerFsm::buoyancyControlFault(FaultEvent const &e)
|
||||
void PowerManagerFsm::communicationSystemFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "communicationSystemFault");
|
||||
if (FaultEnable::CommunicationSystemFault_1)
|
||||
if ((e.injectionFaultCode==1))
|
||||
{
|
||||
LOG_F(INFO, "部分水下通信失效");
|
||||
pm->faultCode.push_back(0x5203);
|
||||
pm->faultCode.push_back(0x5204);
|
||||
pm->faultCode.push_back(0x5205);
|
||||
}
|
||||
if (FaultEnable::CommunicationSystemFault_2)
|
||||
if ((e.injectionFaultCode==2))
|
||||
{
|
||||
LOG_F(INFO, "水下通信失效");
|
||||
pm->faultCode.push_back(0x5303);
|
||||
pm->faultCode.push_back(0x5304);
|
||||
pm->faultCode.push_back(0x5305);
|
||||
}
|
||||
if (FaultEnable::CommunicationSystemFault_2)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
LOG_F(INFO, "水面通信失效");
|
||||
pm->faultCode.push_back(0x5301);
|
||||
@@ -1902,7 +1904,7 @@ void PowerManagerFsm::communicationSystemFault(FaultEvent const &e)
|
||||
void PowerManagerFsm::payloadSystemFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "payloadSystemFault");
|
||||
if (FaultEnable::PayloadSystemFault_1)
|
||||
if ((e.injectionFaultCode==1))
|
||||
{
|
||||
LOG_F(INFO, "存在启闭机构或者敞水电缸失效");
|
||||
pm->faultCode.push_back(0x6211);
|
||||
@@ -1920,32 +1922,32 @@ void PowerManagerFsm::payloadSystemFault(FaultEvent const &e)
|
||||
pm->faultCode.push_back(0x621D);
|
||||
pm->faultCode.push_back(0x621E);
|
||||
}
|
||||
if (FaultEnable::PayloadSystemFault_2)
|
||||
if ((e.injectionFaultCode==2))
|
||||
{
|
||||
LOG_F(INFO, "舷侧探测失效");
|
||||
pm->faultCode.push_back(0x6321);
|
||||
}
|
||||
if (FaultEnable::PayloadSystemFault_3)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
LOG_F(INFO, "舷侧主动探测失效");
|
||||
pm->faultCode.push_back(0x6323);
|
||||
}
|
||||
if (FaultEnable::PayloadSystemFault_4)
|
||||
if ((e.injectionFaultCode==4))
|
||||
{
|
||||
LOG_F(INFO, "TYZ失效");
|
||||
pm->faultCode.push_back(0x6322);
|
||||
}
|
||||
if (FaultEnable::PayloadSystemFault_5)
|
||||
if ((e.injectionFaultCode==5))
|
||||
{
|
||||
LOG_F(INFO, "光电探测失效");
|
||||
pm->faultCode.push_back(0x6332);
|
||||
}
|
||||
if (FaultEnable::PayloadSystemFault_6)
|
||||
if ((e.injectionFaultCode==6))
|
||||
{
|
||||
LOG_F(INFO, "电磁探测失效");
|
||||
pm->faultCode.push_back(0x6331);
|
||||
}
|
||||
if (FaultEnable::PayloadSystemFault_7)
|
||||
if ((e.injectionFaultCode==7))
|
||||
{
|
||||
LOG_F(INFO, "载荷失效或者全部载荷启闭机构均失效");
|
||||
pm->faultCode.push_back(0x633F);
|
||||
@@ -1954,36 +1956,36 @@ void PowerManagerFsm::payloadSystemFault(FaultEvent const &e)
|
||||
void PowerManagerFsm::emergencySystemFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "emergencySystemFault");
|
||||
if (FaultEnable::EmergencySystemFault_1)
|
||||
if ((e.injectionFaultCode==1))
|
||||
{
|
||||
//备注:抛载具有自己的电池
|
||||
LOG_F(INFO, "部分抛载失效");
|
||||
pm->faultCode.push_back(0x7102);
|
||||
pm->faultCode.push_back(0x7103);
|
||||
}
|
||||
if (FaultEnable::EmergencySystemFault_2)
|
||||
if ((e.injectionFaultCode==2))
|
||||
{
|
||||
LOG_F(INFO, "一个超深检测装置失效");
|
||||
pm->faultCode.push_back(0x7204);
|
||||
pm->faultCode.push_back(0x7205);
|
||||
}
|
||||
if (FaultEnable::EmergencySystemFault_3)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
LOG_F(INFO, "注水机构失效");
|
||||
pm->faultCode.push_back(0x7301);
|
||||
}
|
||||
if (FaultEnable::EmergencySystemFault_4)
|
||||
if ((e.injectionFaultCode==4))
|
||||
{
|
||||
LOG_F(INFO, "抛载失效");
|
||||
pm->faultCode.push_back(0x7302);
|
||||
pm->faultCode.push_back(0x7303);
|
||||
}
|
||||
if (FaultEnable::EmergencySystemFault_5)
|
||||
if ((e.injectionFaultCode==5))
|
||||
{
|
||||
LOG_F(INFO, "艏部应急电源失效");
|
||||
pm->faultCode.push_back(0x7306);
|
||||
}
|
||||
if (FaultEnable::EmergencySystemFault_6)
|
||||
if ((e.injectionFaultCode==6))
|
||||
{
|
||||
LOG_F(INFO, "艉部应急电源失效");
|
||||
pm->faultCode.push_back(0x7307);
|
||||
@@ -1992,18 +1994,18 @@ void PowerManagerFsm::emergencySystemFault(FaultEvent const &e)
|
||||
void PowerManagerFsm::sensorSystemFault(FaultEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "sensorSystemFault");
|
||||
if (FaultEnable::SensorSystemFault_1)
|
||||
if ((e.injectionFaultCode==1))
|
||||
{
|
||||
LOG_F(INFO, "部分CTD失效");
|
||||
pm->faultCode.push_back(0x8202);
|
||||
}
|
||||
if (FaultEnable::SensorSystemFault_2)
|
||||
if ((e.injectionFaultCode==2))
|
||||
{
|
||||
LOG_F(INFO, "CTD失效");
|
||||
pm->faultCode.push_back(0x8302);
|
||||
pm->faultCode.push_back(0x8303);
|
||||
}
|
||||
if (FaultEnable::SensorSystemFault_2)
|
||||
if ((e.injectionFaultCode==3))
|
||||
{
|
||||
LOG_F(INFO, "声速仪失效");
|
||||
pm->faultCode.push_back(0x8301);
|
||||
@@ -2145,5 +2147,132 @@ void PowerManagerFsm::handleDeviceCmd() {
|
||||
LOG_F(INFO, "开始处理设备命令:");
|
||||
}
|
||||
|
||||
void PowerManagerFsm::react(TestEvent const &e)
|
||||
{
|
||||
LOG_F(INFO, "测试消息");
|
||||
if(e.type == 0){
|
||||
LOG_F(INFO, "清空故障代码");
|
||||
pm->faultCode.clear();
|
||||
pm->m_leakage = 0x00;
|
||||
pm->m_systemData->insfaultCode = 0x00;
|
||||
pm->m_systemData->powfaultCode = 0x00;
|
||||
pm->m_systemData->fc_fault_level_4 = 0;
|
||||
pm->m_systemData->fc_fault_level_3 = 0;
|
||||
pm->m_systemData->fc_fault_level_2 = 0;
|
||||
pm->m_systemData->fc_fault_level_1 = 0;
|
||||
pm->m_systemData->distributeFaultCode.clear();
|
||||
cout << "清空故障代码" << endl;
|
||||
};
|
||||
// if(e.eventId == 0) return ;
|
||||
LOG_F(INFO, "测试消息类型: %d,测试代码:%d", e.type, e.eventId);
|
||||
FaultEvent faultEvent;
|
||||
faultEvent.injectionFaultCode = e.eventId;
|
||||
//故障注入
|
||||
switch (e.type)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
basicNavigationFault(faultEvent);
|
||||
break;
|
||||
case 2:
|
||||
extendedNavigationFault(faultEvent);
|
||||
break;
|
||||
case 3:
|
||||
obstacleAvoidanceFault(faultEvent);
|
||||
break;
|
||||
case 4:
|
||||
buoyancyControlFault(faultEvent);
|
||||
break;
|
||||
case 5:
|
||||
communicationSystemFault(faultEvent);
|
||||
break;
|
||||
case 6:
|
||||
payloadSystemFault(faultEvent);
|
||||
break;
|
||||
case 7:
|
||||
emergencySystemFault(faultEvent);
|
||||
break;
|
||||
case 8:
|
||||
sensorSystemFault(faultEvent);
|
||||
break;
|
||||
case 9:
|
||||
LOG_F(INFO, "漏水故障");
|
||||
switch (e.eventId)
|
||||
{
|
||||
case 1:
|
||||
pm->m_leakage = 0x10; //锂电池舱
|
||||
break;
|
||||
case 2:
|
||||
pm->m_leakage = 0x20; //艉应急
|
||||
break;
|
||||
case 3:
|
||||
pm->m_leakage = 0x40;
|
||||
break;
|
||||
case 4:
|
||||
pm->m_leakage = 0x80;
|
||||
break;
|
||||
case 5:
|
||||
pm->m_leakage = 0x01; //艏部应急漏水
|
||||
break;
|
||||
case 6:
|
||||
pm->m_leakage = 0x02; //艏高压漏水
|
||||
break;
|
||||
case 7:
|
||||
pm->m_leakage = 0x04; //艏低压漏水
|
||||
break;
|
||||
case 8:
|
||||
pm->m_leakage = 0x08; //燃电舱漏水
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
LOG_F(INFO,"锂电池故障测试");
|
||||
pm->m_systemData->insfaultCode = batfaultMap[e.eventId].code;
|
||||
pm->m_systemData->powfaultCode = batfaultMap[e.eventId].code;
|
||||
cout << "=======================" << (int)pm->m_systemData->insfaultCode << endl;
|
||||
cout << "=======================" << (int)pm->m_systemData->powfaultCode << endl;
|
||||
break;
|
||||
case 11:
|
||||
{
|
||||
LOG_F(INFO,"燃料电池1级故障测试");
|
||||
uint16_t code = 0x0001;
|
||||
pm->m_systemData->fc_fault_level_1 = code << (e.eventId);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
LOG_F(INFO,"燃料电池2级故障测试");
|
||||
uint16_t code = 0x0001;
|
||||
pm->m_systemData->fc_fault_level_2 = code << (e.eventId);
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
LOG_F(INFO,"燃料电池3级故障测试");
|
||||
uint16_t code = 0x0001;
|
||||
pm->m_systemData->fc_fault_level_3 = code << (e.eventId);
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
LOG_F(INFO,"燃料电池4级故障测试");
|
||||
uint16_t code = 0x0001;
|
||||
pm->m_systemData->fc_fault_level_4 = code << (e.eventId);
|
||||
break;
|
||||
}
|
||||
case 15:
|
||||
{
|
||||
LOG_F(INFO,"配电系统故障测试");
|
||||
pm->m_systemData->distributeFaultCode.push_back(disfaultMap[e.eventId].code);
|
||||
}
|
||||
default:
|
||||
LOG_F(INFO, "测试消息类型错误");
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FSM_INITIAL_STATE(PowerManagerFsm, InitState);
|
||||
Reference in New Issue
Block a user