应急联调完成
This commit is contained in:
+18
-18
@@ -48,14 +48,14 @@ bool SQLiteDB::bindParameters<DriverTable>(sqlite3_stmt* stmt, const DriverTable
|
||||
sqlite3_bind_int(stmt, index++, data.DVL);
|
||||
sqlite3_bind_int(stmt, index++, data.lowFreqSonar);
|
||||
sqlite3_bind_int(stmt, index++, data.USBL);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet1);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet2);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet3);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet4);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet5);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet6);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet7);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterlnet8);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet1);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet2);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet3);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet4);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet5);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet6);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet7);
|
||||
sqlite3_bind_int(stmt, index++, data.bowWaterInet8);
|
||||
sqlite3_bind_int(stmt, index++, data.bowRudderDeploy);
|
||||
sqlite3_bind_int(stmt, index++, data.bowRudderServo1);
|
||||
sqlite3_bind_int(stmt, index++, data.bowRudderServo2);
|
||||
@@ -405,14 +405,14 @@ bool SQLiteDB::createDriversTables(string tableName)
|
||||
"bowRudderServo1 INTEGER DEFAULT 0, "
|
||||
"bowRudderServo2 INTEGER DEFAULT 0, "
|
||||
"bowThrow INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet1 INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet2 INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet3 INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet4 INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet5 INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet6 INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet7 INTEGER DEFAULT 0, "
|
||||
"bowWaterlnet8 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet1 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet2 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet3 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet4 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet5 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet6 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet7 INTEGER DEFAULT 0, "
|
||||
"bowWaterInet8 INTEGER DEFAULT 0, "
|
||||
"buoyage INTEGER DEFAULT 0, "
|
||||
"buoyancyAdjust1 INTEGER DEFAULT 0, "
|
||||
"buoyancyAdjust2 INTEGER DEFAULT 0, "
|
||||
@@ -1019,8 +1019,8 @@ bool SQLiteDB::insertDriverTables(DriverTable driverTable,string tableName)
|
||||
"inputWaterSensor1, inputWaterSensor2, inputWaterSensor3, "
|
||||
"singleBeamSonar1, singleBeamSonar2, singleBeamSonar3, singleBeamSonar4, singleBeamSonar5, "
|
||||
"singleBeamSonar6, singleBeamSonar7, singleBeamSonar8, forwardSonar, DVL, lowFreqSonar, USBL, "
|
||||
"bowWaterlnet1, bowWaterlnet2, bowWaterlnet3, bowWaterlnet4, bowWaterlnet5, bowWaterlnet6, "
|
||||
"bowWaterlnet7, bowWaterlnet8, bowRudderDeploy, bowRudderServo1, bowRudderServo2, "
|
||||
"bowWaterInet1, bowWaterInet2, bowWaterInet3, bowWaterInet4, bowWaterInet5, bowWaterInet6, "
|
||||
"bowWaterInet7, bowWaterInet8, bowRudderDeploy, bowRudderServo1, bowRudderServo2, "
|
||||
"bowCover1, bowCover2, bowCover3, bowCover4, bowCover5, bowCover6, waterInject, "
|
||||
"mastLiftingServo, buoyancyAdjust1, buoyancyAdjust2, buoyancyAdjust3, buoyancyAdjust4, "
|
||||
"buoyancyAdjust5, sternRudderServo1, sternRudderServo2, sternRudderServo3, sternRudderServo4, "
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//SERVERHOST = 192.168.0.100
|
||||
//SERVERPORT = 9000
|
||||
ProcessConfig = pPowerManger
|
||||
{
|
||||
AppTick = 4
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
"bowRudderServo1" : 0,
|
||||
"bowRudderServo2" : 0,
|
||||
"bowThrow" : 0,
|
||||
"bowWaterlnet1" : 0,
|
||||
"bowWaterlnet2" : 0,
|
||||
"bowWaterlnet3" : 0,
|
||||
"bowWaterlnet4" : 0,
|
||||
"bowWaterlnet5" : 0,
|
||||
"bowWaterlnet6" : 0,
|
||||
"bowWaterlnet7" : 0,
|
||||
"bowWaterlnet8" : 0,
|
||||
"bowWaterInet1" : 0,
|
||||
"bowWaterInet2" : 0,
|
||||
"bowWaterInet3" : 0,
|
||||
"bowWaterInet4" : 0,
|
||||
"bowWaterInet5" : 0,
|
||||
"bowWaterInet6" : 0,
|
||||
"bowWaterInet7" : 0,
|
||||
"bowWaterInet8" : 0,
|
||||
"buoyage" : 0,
|
||||
"buoyancyAdjust1" : 0,
|
||||
"buoyancyAdjust2" : 0,
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
"bowRudderServo1_uni8" : 0,
|
||||
"bowRudderServo2_uni8" : 0,
|
||||
"bowThrow_uni8" : 0,
|
||||
"bowWaterlnet1_uni8" : 0,
|
||||
"bowWaterlnet2_uni8" : 0,
|
||||
"bowWaterlnet3_uni8" : 0,
|
||||
"bowWaterlnet4_uni8" : 0,
|
||||
"bowWaterlnet5_uni8" : 0,
|
||||
"bowWaterlnet6_uni8" : 0,
|
||||
"bowWaterlnet7_uni8" : 0,
|
||||
"bowWaterlnet8_uni8" : 0,
|
||||
"bowWaterInet1_uni8" : 0,
|
||||
"bowWaterInet2_uni8" : 0,
|
||||
"bowWaterInet3_uni8" : 0,
|
||||
"bowWaterInet4_uni8" : 0,
|
||||
"bowWaterInet5_uni8" : 0,
|
||||
"bowWaterInet6_uni8" : 0,
|
||||
"bowWaterInet7_uni8" : 0,
|
||||
"bowWaterInet8_uni8" : 0,
|
||||
"buoyage_uni8" : 0,
|
||||
"buoyancyAdjust1_uni8" : 0,
|
||||
"buoyancyAdjust2_uni8" : 0,
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
"bowRudderServo1_uni8" : 0,
|
||||
"bowRudderServo2_uni8" : 0,
|
||||
"bowThrow_uni8" : 0,
|
||||
"bowWaterlnet1_uni8" : 0,
|
||||
"bowWaterlnet2_uni8" : 0,
|
||||
"bowWaterlnet3_uni8" : 0,
|
||||
"bowWaterlnet4_uni8" : 0,
|
||||
"bowWaterlnet5_uni8" : 0,
|
||||
"bowWaterlnet6_uni8" : 0,
|
||||
"bowWaterlnet7_uni8" : 0,
|
||||
"bowWaterlnet8_uni8" : 0,
|
||||
"bowWaterInet1_uni8" : 0,
|
||||
"bowWaterInet2_uni8" : 0,
|
||||
"bowWaterInet3_uni8" : 0,
|
||||
"bowWaterInet4_uni8" : 0,
|
||||
"bowWaterInet5_uni8" : 0,
|
||||
"bowWaterInet6_uni8" : 0,
|
||||
"bowWaterInet7_uni8" : 0,
|
||||
"bowWaterInet8_uni8" : 0,
|
||||
"buoyage_uni8" : 0,
|
||||
"buoyancyAdjust1_uni8" : 0,
|
||||
"buoyancyAdjust2_uni8" : 0,
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
"bowRudderServo1" : 0,
|
||||
"bowRudderServo2" : 0,
|
||||
"bowThrow" : 0,
|
||||
"bowWaterlnet1" : 0,
|
||||
"bowWaterlnet2" : 0,
|
||||
"bowWaterlnet3" : 0,
|
||||
"bowWaterlnet4" : 0,
|
||||
"bowWaterlnet5" : 0,
|
||||
"bowWaterlnet6" : 0,
|
||||
"bowWaterlnet7" : 0,
|
||||
"bowWaterlnet8" : 0,
|
||||
"bowWaterInet1" : 0,
|
||||
"bowWaterInet2" : 0,
|
||||
"bowWaterInet3" : 0,
|
||||
"bowWaterInet4" : 0,
|
||||
"bowWaterInet5" : 0,
|
||||
"bowWaterInet6" : 0,
|
||||
"bowWaterInet7" : 0,
|
||||
"bowWaterInet8" : 0,
|
||||
"buoyage" : 0,
|
||||
"buoyancyAdjust1" : 0,
|
||||
"buoyancyAdjust2" : 0,
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
"bowRudderServo1" : 0,
|
||||
"bowRudderServo2" : 0,
|
||||
"bowThrow" : 0,
|
||||
"bowWaterlnet1" : 0,
|
||||
"bowWaterlnet2" : 0,
|
||||
"bowWaterlnet3" : 0,
|
||||
"bowWaterlnet4" : 0,
|
||||
"bowWaterlnet5" : 0,
|
||||
"bowWaterlnet6" : 0,
|
||||
"bowWaterlnet7" : 0,
|
||||
"bowWaterlnet8" : 0,
|
||||
"bowWaterInet1" : 0,
|
||||
"bowWaterInet2" : 0,
|
||||
"bowWaterInet3" : 0,
|
||||
"bowWaterInet4" : 0,
|
||||
"bowWaterInet5" : 0,
|
||||
"bowWaterInet6" : 0,
|
||||
"bowWaterInet7" : 0,
|
||||
"bowWaterInet8" : 0,
|
||||
"buoyage" : 0,
|
||||
"buoyancyAdjust1" : 0,
|
||||
"buoyancyAdjust2" : 0,
|
||||
|
||||
@@ -25,6 +25,9 @@ SET(HTTP_SRC
|
||||
httpserver/mongoose.c
|
||||
httpserver/httpserver.cpp)
|
||||
|
||||
SET(UDP_COMM_SRC
|
||||
udpcomm/udpComm.cpp)
|
||||
|
||||
SET(FSMLIB_SRC
|
||||
fsm/PowerManagerFsm.cpp
|
||||
fsm/CruiseMode.cpp
|
||||
@@ -46,9 +49,10 @@ SET(SRC
|
||||
${FSMLIB_SRC}
|
||||
${SQLITE_SRC}
|
||||
${HTTP_SRC}
|
||||
${UDP_COMM_SRC}
|
||||
PowerManger.cpp
|
||||
PowerManger_Info.cpp
|
||||
udpComm.cpp
|
||||
# udpComm.cpp
|
||||
main.cpp
|
||||
# SQLiteDB.cpp
|
||||
driver.cpp
|
||||
@@ -93,7 +97,7 @@ SET(DRIVER_SRC
|
||||
# PowerManagerFsm.cpp)
|
||||
|
||||
# ADD_LIBRARY(SQLiteDB STATIC ${SQLITEDB_SRC})
|
||||
ADD_LIBRARY(UDPComm STATIC ${UDPCOMM_SRC})
|
||||
# ADD_LIBRARY(FSMLib STATIC ${FSMLIB_SRC})
|
||||
ADD_LIBRARY(Driver STATIC ${DRIVER_SRC})
|
||||
# ADD_LIBRARY(UDPComm STATIC ${UDPCOMM_SRC})
|
||||
# # ADD_LIBRARY(FSMLib STATIC ${FSMLIB_SRC})
|
||||
# ADD_LIBRARY(Driver STATIC ${DRIVER_SRC})
|
||||
# ADD_LIBRARY(PowerMange STATIC ${POWERMANGE_SRC})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "LowerCommManager.h"
|
||||
#include "PowerManger.h"
|
||||
#include "driver.h"
|
||||
#include "udpComm.h"
|
||||
#include "udpcomm/udpComm.h"
|
||||
|
||||
bool _ListenCB(void * pParam)
|
||||
{
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
#include "MOOS/libMOOS/Comms/XPCUdpSocket.h"
|
||||
#include "MOOS/libMOOS/Utils/MOOSThread.h"
|
||||
#include "MOOS/libMOOS/Utils/MOOSLock.h"
|
||||
#include "ccuUdpMsg.h"
|
||||
#include "../udpcomm/ccuUdpMsg.h"
|
||||
#include "pmSysvariable.h"
|
||||
#include <queue>
|
||||
#include <map>
|
||||
#include <functional>
|
||||
#include <atomic>
|
||||
#include <vector>
|
||||
#include "udpComm.h"
|
||||
#include "udpcomm/udpComm.h"
|
||||
#include <functional>
|
||||
|
||||
class PowerManger; // 前向声明
|
||||
|
||||
@@ -35,7 +35,7 @@ PowerManger::PowerManger()
|
||||
m_faultNum = 0;
|
||||
m_ticker = 0;
|
||||
m_leakage = 0;
|
||||
faultCode.push_back(0);
|
||||
faultCode.clear();
|
||||
|
||||
m_pmCurrentState = {};
|
||||
m_currentDisBreakerState = {};
|
||||
@@ -68,7 +68,6 @@ PowerManger::PowerManger()
|
||||
m_httpServer->setLowerCommManager(m_lowerCommManager);
|
||||
m_httpServer->setSystemData(m_systemData);
|
||||
m_httpServer->start();
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
@@ -151,7 +150,6 @@ bool PowerManger::Iterate()
|
||||
m_systemData->device_common_status.dis_lv_c1.lastUpdateTime = m_lowerCommManager->msg_disHighBVolBusFbMsg_Update_time;
|
||||
m_systemData->device_common_status.dis_lv_c2.lastUpdateTime = m_lowerCommManager->msg_disLowBusFbMsg_Update_time;
|
||||
m_systemData->updateCommonStatus();
|
||||
|
||||
if (m_ticker++ % 5 == 0)
|
||||
{
|
||||
m_CcuColCmd.heartbeat++;
|
||||
@@ -358,3 +356,10 @@ unsigned char PowerManger::getFaultLevel()
|
||||
}
|
||||
return maxLevel;
|
||||
}
|
||||
|
||||
|
||||
void PowerManger::injectFault(unsigned type,unsigned int faultCode){
|
||||
LOG_F(INFO, "注入故障: %d %d", type, faultCode);
|
||||
TestEvent testEvent("故障注入测试",type,faultCode);
|
||||
PowerManagerFsm::dispatch(testEvent);
|
||||
}
|
||||
@@ -26,9 +26,9 @@
|
||||
#include "MOOS/libMOOS/Utils/MOOSThread.h"
|
||||
#include "MOOS/libMOOS/Utils/MOOSUtilityFunctions.h"
|
||||
#include "MOOS/libMOOS/Utils/ConsoleColours.h"
|
||||
#include "ccuUdpMsg.h"
|
||||
#include "../udpcomm/ccuUdpMsg.h"
|
||||
#include "json/json.h"
|
||||
#include "udpComm.h"
|
||||
#include "udpcomm/udpComm.h"
|
||||
#include "pmSysvariable.h"
|
||||
#include "fsm/PowerManagerFsm.hpp"
|
||||
#include "driver.h"
|
||||
@@ -37,11 +37,11 @@
|
||||
#include "sqlit3/SQLite.h"
|
||||
#include "systemData.h"
|
||||
#include "httpserver/httpserver.h"
|
||||
|
||||
#include "faultCode.h"
|
||||
#define IPORT 5001
|
||||
#define CCUPORT 7000
|
||||
// #define CCUHOST "192.168.0.140"
|
||||
#define CCUHOST "127.0.0.0"
|
||||
#define CCUHOST "192.168.0.140"
|
||||
// #define CCUHOST "127.0.0.0"
|
||||
#define MAX_UDP_PKT_SIZE 65535
|
||||
#define SKEW_TOLERANCE 5
|
||||
|
||||
@@ -138,6 +138,9 @@ class PowerManger : public AppCastingMOOSApp
|
||||
double GetPublicCPULoad() { return GetCPULoad(); }
|
||||
double GetPublicTimeSinceIterate() { return GetTimeSinceIterate(); }
|
||||
double GetPublicLastIterateTime() { return GetLastIterateTime(); }
|
||||
public:
|
||||
//故障注入
|
||||
void injectFault(unsigned type,unsigned int faultCode);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -134,14 +134,15 @@ void UpperCommManager::buildSystemReport() {
|
||||
m_pmStateMsg.state.powerState = m_pm->powerState;
|
||||
m_pmStateMsg.state.faultLevel = m_pm->faultLevel;
|
||||
m_pmStateMsg.state.faultCode = m_pm->faultCode;
|
||||
// cout << "m_pmStateMsg.state.faultCode.size():" << m_pmStateMsg.state.faultCode.size() << endl;
|
||||
m_pmStateMsg.state.soc = m_pm->soc;
|
||||
m_pmStateMsg.state.sustainableTime = m_pm->sustainableTime;
|
||||
m_pmStateMsg.state.m_leakage = m_pm->m_leakage;
|
||||
m_pmStateMsg.state.m_faultNum = m_pm->m_faultNum;
|
||||
|
||||
m_pm->sendNotification(m_pmStateMsg.key, m_pmStateMsg.buildMsg());
|
||||
m_pm->sendNotification(m_fcsStateMsg.key, m_fcsStateMsg.buildMsg(m_pm->m_pmCurrentState.ccustate));
|
||||
m_pm->sendNotification(m_liBatStateMsg.key, m_liBatStateMsg.buildMsg(m_pm->m_pmCurrentState.ccustate));
|
||||
m_pm->sendNotification(m_disSysStateMsg.key, m_disSysStateMsg.buildMsg(m_pm->m_currentDisBreakerState));
|
||||
m_pm->sendNotification(m_fcsStateMsg.key, m_fcsStateMsg.buildMsg(*(m_pm->m_systemData)));
|
||||
m_pm->sendNotification(m_liBatStateMsg.key, m_liBatStateMsg.buildMsg(*(m_pm->m_systemData)));
|
||||
m_pm->sendNotification(m_disSysStateMsg.key, m_disSysStateMsg.buildMsg(*(m_pm->m_systemData),m_pm->m_currentDisBreakerState));
|
||||
m_pm->sendNotification(m_currentStateMsg.key, m_currentStateMsg.buildMsg(m_pm->m_pmCurrentState));
|
||||
}
|
||||
@@ -58,22 +58,6 @@ public:
|
||||
|
||||
// 生成系统报告
|
||||
void buildSystemReport();
|
||||
|
||||
// 消息处理函数
|
||||
// const MSControlCmd getMasterControlCmd(const std::string& key, const std::string& msg);
|
||||
// const DriverTable getEquipmentCmd(const std::string& key, const std::string& msg);
|
||||
// int getSetPMSys(const std::string& key, const std::string& msg);
|
||||
// DeviceSwitchCmd getSetDevSwitch(const std::string& key, const std::string& msg);
|
||||
// const DriverTable getSubDisState(const std::string& key, const std::string& msg);
|
||||
// const int getDeepth(const std::string& key, const std::string& msg);
|
||||
// MissionState getMission(const std::string& key, const std::string& msg);
|
||||
// bool getTaskStop(const std::string& key, const std::string& msg);
|
||||
// 处理外部通信消息
|
||||
// int getSetOpCondition(const std::string& key, const std::string& msg);
|
||||
// int getSetOpMode(const std::string& key, const std::string& msg);
|
||||
// const std::string getSubDisCmd(DriverTable& driver);
|
||||
// 其他公共函数
|
||||
// bool saveStringToJsonFile(const string &strJson, const string &filePath);
|
||||
|
||||
public:
|
||||
//定义上位机消息
|
||||
|
||||
+99
-99
@@ -66,14 +66,14 @@ void Driver::getSTANDBYTable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = 0;
|
||||
driverTable->bowRudderServo1 = 0;
|
||||
driverTable->bowRudderServo2 = 0;
|
||||
driverTable->bowWaterlnet1 = 0;
|
||||
driverTable->bowWaterlnet2 = 0;
|
||||
driverTable->bowWaterlnet3 = 0;
|
||||
driverTable->bowWaterlnet4 = 0;
|
||||
driverTable->bowWaterlnet5 = 0;
|
||||
driverTable->bowWaterlnet6 = 0;
|
||||
driverTable->bowWaterlnet7 = 0;
|
||||
driverTable->bowWaterlnet8 = 0;
|
||||
driverTable->bowWaterInet1 = 0;
|
||||
driverTable->bowWaterInet2 = 0;
|
||||
driverTable->bowWaterInet3 = 0;
|
||||
driverTable->bowWaterInet4 = 0;
|
||||
driverTable->bowWaterInet5 = 0;
|
||||
driverTable->bowWaterInet6 = 0;
|
||||
driverTable->bowWaterInet7 = 0;
|
||||
driverTable->bowWaterInet8 = 0;
|
||||
driverTable->waterInject = 0;
|
||||
driverTable->mastLiftingServo = 0;
|
||||
driverTable->buoyancyAdjust1 = 0;
|
||||
@@ -140,14 +140,14 @@ void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = 1;
|
||||
driverTable->bowRudderServo1 = 1;
|
||||
driverTable->bowRudderServo2 = 1;
|
||||
driverTable->bowWaterlnet1 = 1;
|
||||
driverTable->bowWaterlnet2 = 1;
|
||||
driverTable->bowWaterlnet3 = 1;
|
||||
driverTable->bowWaterlnet4 = 1;
|
||||
driverTable->bowWaterlnet5 = 1;
|
||||
driverTable->bowWaterlnet6 = 1;
|
||||
driverTable->bowWaterlnet7 = 1;
|
||||
driverTable->bowWaterlnet8 = 1;
|
||||
driverTable->bowWaterInet1 = 1;
|
||||
driverTable->bowWaterInet2 = 1;
|
||||
driverTable->bowWaterInet3 = 1;
|
||||
driverTable->bowWaterInet4 = 1;
|
||||
driverTable->bowWaterInet5 = 1;
|
||||
driverTable->bowWaterInet6 = 1;
|
||||
driverTable->bowWaterInet7 = 1;
|
||||
driverTable->bowWaterInet8 = 1;
|
||||
driverTable->waterInject = 1;
|
||||
driverTable->mastLiftingServo = 1;
|
||||
driverTable->buoyancyAdjust1 = 1;
|
||||
@@ -213,14 +213,14 @@ void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = 1;
|
||||
driverTable->bowRudderServo1 = 1;
|
||||
driverTable->bowRudderServo2 = 1;
|
||||
driverTable->bowWaterlnet1 = 1;
|
||||
driverTable->bowWaterlnet2 = 1;
|
||||
driverTable->bowWaterlnet3 = 1;
|
||||
driverTable->bowWaterlnet4 = 1;
|
||||
driverTable->bowWaterlnet5 = 1;
|
||||
driverTable->bowWaterlnet6 = 1;
|
||||
driverTable->bowWaterlnet7 = 1;
|
||||
driverTable->bowWaterlnet8 = 1;
|
||||
driverTable->bowWaterInet1 = 1;
|
||||
driverTable->bowWaterInet2 = 1;
|
||||
driverTable->bowWaterInet3 = 1;
|
||||
driverTable->bowWaterInet4 = 1;
|
||||
driverTable->bowWaterInet5 = 1;
|
||||
driverTable->bowWaterInet6 = 1;
|
||||
driverTable->bowWaterInet7 = 1;
|
||||
driverTable->bowWaterInet8 = 1;
|
||||
driverTable->waterInject = 1;
|
||||
driverTable->mastLiftingServo = 1;
|
||||
driverTable->buoyancyAdjust1 = 1;
|
||||
@@ -273,14 +273,14 @@ void Driver::getCRUISE_MODEable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = 1;
|
||||
driverTable->bowRudderServo1 = 1;
|
||||
driverTable->bowRudderServo2 = 1;
|
||||
driverTable->bowWaterlnet1 = 0;
|
||||
driverTable->bowWaterlnet2 = 0;
|
||||
driverTable->bowWaterlnet3 = 0;
|
||||
driverTable->bowWaterlnet4 = 0;
|
||||
driverTable->bowWaterlnet5 = 0;
|
||||
driverTable->bowWaterlnet6 = 0;
|
||||
driverTable->bowWaterlnet7 = 0;
|
||||
driverTable->bowWaterlnet8 = 0;
|
||||
driverTable->bowWaterInet1 = 0;
|
||||
driverTable->bowWaterInet2 = 0;
|
||||
driverTable->bowWaterInet3 = 0;
|
||||
driverTable->bowWaterInet4 = 0;
|
||||
driverTable->bowWaterInet5 = 0;
|
||||
driverTable->bowWaterInet6 = 0;
|
||||
driverTable->bowWaterInet7 = 0;
|
||||
driverTable->bowWaterInet8 = 0;
|
||||
driverTable->waterInject = 0;
|
||||
driverTable->mastLiftingServo = 1;
|
||||
driverTable->buoyancyAdjust1 = 1;
|
||||
@@ -334,14 +334,14 @@ void Driver::getHIGH_SPEED_MODEable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
||||
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||
driverTable->mastLiftingServo = DRIVER_POWER_OFF;
|
||||
driverTable->buoyancyAdjust1 = DRIVER_POWER_OFF;
|
||||
@@ -395,14 +395,14 @@ void Driver::getASCEND_DESCENDable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
||||
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
||||
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||
@@ -456,14 +456,14 @@ void Driver::getBUOYANCY_ADJUSTable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
||||
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
||||
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||
@@ -517,14 +517,14 @@ void Driver::getUNDERWATER_RECONable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
||||
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||
driverTable->mastLiftingServo = DRIVER_POWER_OFF;
|
||||
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||
@@ -578,14 +578,14 @@ void Driver::getSURFACE_RECONable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
||||
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
||||
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
||||
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||
@@ -638,14 +638,14 @@ void Driver::getDJ_MODEable(DriverTable* driverTable)
|
||||
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet3 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet4 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet5 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet6 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet7 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterlnet8 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet1 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet2 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet3 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet4 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet5 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet6 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet7 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->bowWaterInet8 = DRIVER_FULL_POWER_ON;
|
||||
driverTable->waterInject = DRIVER_POWER_OFF;
|
||||
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
||||
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
||||
@@ -703,14 +703,14 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
|
||||
root["bowRudderDeploy_uint8"] = driverTable->bowRudderDeploy;
|
||||
root["bowRudderServo1_uint8"] = driverTable->bowRudderServo1;
|
||||
root["bowRudderServo2_uint8"] = driverTable->bowRudderServo2;
|
||||
root["bowWaterlnet1_uint8"] = driverTable->bowWaterlnet1;
|
||||
root["bowWaterlnet2_uint8"] = driverTable->bowWaterlnet2;
|
||||
root["bowWaterlnet3_uint8"] = driverTable->bowWaterlnet3;
|
||||
root["bowWaterlnet4_uint8"] = driverTable->bowWaterlnet4;
|
||||
root["bowWaterlnet5_uint8"] = driverTable->bowWaterlnet5;
|
||||
root["bowWaterlnet6_uint8"] = driverTable->bowWaterlnet6;
|
||||
root["bowWaterlnet7_uint8"] = driverTable->bowWaterlnet7;
|
||||
root["bowWaterlnet8_uint8"] = driverTable->bowWaterlnet8;
|
||||
root["bowWaterInet1_uint8"] = driverTable->bowWaterInet1;
|
||||
root["bowWaterInet2_uint8"] = driverTable->bowWaterInet2;
|
||||
root["bowWaterInet3_uint8"] = driverTable->bowWaterInet3;
|
||||
root["bowWaterInet4_uint8"] = driverTable->bowWaterInet4;
|
||||
root["bowWaterInet5_uint8"] = driverTable->bowWaterInet5;
|
||||
root["bowWaterInet6_uint8"] = driverTable->bowWaterInet6;
|
||||
root["bowWaterInet7_uint8"] = driverTable->bowWaterInet7;
|
||||
root["bowWaterInet8_uint8"] = driverTable->bowWaterInet8;
|
||||
root["waterInject_uint8"] = driverTable->waterInject;
|
||||
root["mastLiftingServo_uint8"] = driverTable->mastLiftingServo;
|
||||
root["buoyancyAdjust1_uint8"] = driverTable->buoyancyAdjust1;
|
||||
@@ -789,9 +789,9 @@ vector<DriverCommand> Driver::loadDriverIdFromJson(const std::string &strJson) {
|
||||
{"bowCover1", 9}, {"bowCover2", 10}, {"bowCover3", 11},
|
||||
{"bowCover4", 12}, {"bowCover5", 13}, {"bowCover6", 14},
|
||||
{"bowRudderDeploy", 15}, {"bowRudderServo1", 16}, {"bowRudderServo2", 17},
|
||||
{"bowWaterlnet1", 27}, {"bowWaterlnet2", 28}, {"bowWaterlnet3", 29},
|
||||
{"bowWaterlnet4", 30}, {"bowWaterlnet5", 31}, {"bowWaterlnet6", 32},
|
||||
{"bowWaterlnet7", 33}, {"bowWaterlnet8", 34}, {"waterInject", 26},
|
||||
{"bowWaterInet1", 27}, {"bowWaterInet2", 28}, {"bowWaterInet3", 29},
|
||||
{"bowWaterInet4", 30}, {"bowWaterInet5", 31}, {"bowWaterInet6", 32},
|
||||
{"bowWaterInet7", 33}, {"bowWaterInet8", 34}, {"waterInject", 26},
|
||||
{"mastLiftingServo", 41}, {"buoyancyAdjust1", 44}, {"buoyancyAdjust2", 45},
|
||||
{"buoyancyAdjust3", 46}, {"buoyancyAdjust4", 47}, {"buoyancyAdjust5", 48},
|
||||
{"sternRudderServo1", 49}, {"sternRudderServo2", 50}, {"sternRudderServo3", 51},
|
||||
@@ -910,28 +910,28 @@ int Driver::loadDriverTableFromJson(const std::string &strJson, DriverTable& tab
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
// 执行机构
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet1_uint8", table.bowWaterlnet1);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet1_uint8", table.bowWaterInet1);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet2_uint8", table.bowWaterlnet2);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet2_uint8", table.bowWaterInet2);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet3_uint8", table.bowWaterlnet3);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet3_uint8", table.bowWaterInet3);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet4_uint8", table.bowWaterlnet4);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet4_uint8", table.bowWaterInet4);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet5_uint8", table.bowWaterlnet5);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet5_uint8", table.bowWaterInet5);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet6_uint8", table.bowWaterlnet6);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet6_uint8", table.bowWaterInet6);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet7_uint8", table.bowWaterlnet7);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet7_uint8", table.bowWaterInet7);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowWaterlnet8_uint8", table.bowWaterlnet8);
|
||||
error_code = SafeReadUInt(root, "bowWaterInet8_uint8", table.bowWaterInet8);
|
||||
if (error_code != 0) return error_code;
|
||||
|
||||
error_code = SafeReadUInt(root, "bowRudderDeploy_uint8", table.bowRudderDeploy);
|
||||
|
||||
@@ -42,14 +42,14 @@ struct DriverTable
|
||||
unsigned char lowFreqSonar;
|
||||
unsigned char USBL;
|
||||
//执行机构
|
||||
unsigned char bowWaterlnet1;
|
||||
unsigned char bowWaterlnet2;
|
||||
unsigned char bowWaterlnet3;
|
||||
unsigned char bowWaterlnet4;
|
||||
unsigned char bowWaterlnet5;
|
||||
unsigned char bowWaterlnet6;
|
||||
unsigned char bowWaterlnet7;
|
||||
unsigned char bowWaterlnet8;
|
||||
unsigned char bowWaterInet1;
|
||||
unsigned char bowWaterInet2;
|
||||
unsigned char bowWaterInet3;
|
||||
unsigned char bowWaterInet4;
|
||||
unsigned char bowWaterInet5;
|
||||
unsigned char bowWaterInet6;
|
||||
unsigned char bowWaterInet7;
|
||||
unsigned char bowWaterInet8;
|
||||
unsigned char bowRudderDeploy;
|
||||
unsigned char bowRudderServo1;
|
||||
unsigned char bowRudderServo2;
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
#ifndef FAULTCODE_H
|
||||
#define FAULTCODE_H
|
||||
|
||||
/**
|
||||
* @file faultCode.h
|
||||
* @brief 锂电池故障码定义及映射表
|
||||
*/
|
||||
|
||||
// 故障码映射表
|
||||
typedef struct {
|
||||
int id; // 序号
|
||||
int level; // 故障级别
|
||||
const uint8_t code; // 16进制故障码
|
||||
const char* desc; // 报警信息
|
||||
} FaultMap;
|
||||
|
||||
static const FaultMap batfaultMap[] = {
|
||||
//四级故障
|
||||
{1, 4, 0xC1, "MBMS绝缘故障"},
|
||||
{2, 4, 0xC2, "温度过高"},
|
||||
{3, 4, 0xC3, "MBMS预充失败"},
|
||||
{4, 4, 0xC4, "MBMS正主极继电器失效"},
|
||||
{5, 4, 0xC5, "MBMS负主极继电器失效"},
|
||||
{6, 4, 0xC6, "MBMS燃电充电正极继电器正极失效[仪器]"},
|
||||
{7, 4, 0xC7, "母线高压回路异常"},
|
||||
{8, 4, 0xC9, "MBMS电压测量异常"},
|
||||
{9, 4, 0xCA, "MBMS电流测量异常"},
|
||||
//三级故障
|
||||
{10, 3, 0x81, "MBMS绝缘故障3级"},
|
||||
{11, 3, 0x82, "温度过高3级"},
|
||||
{12, 3, 0x83, "温度过低3级"},
|
||||
{13, 3, 0x84, "MBMS总放电超功率3级"},
|
||||
{14, 3, 0x85, "MBMS总充电电流过大3级"},
|
||||
//二级故障
|
||||
{15, 1, 0x31, "BMS均衡模块故障2级"},
|
||||
{16, 2, 0x41, "MBMS绝缘故障2级"},
|
||||
{17, 2, 0x42, "MBMS总放电超功率2级"},
|
||||
{18, 2, 0x43, "电池包放电超功率2级"},
|
||||
{19, 2, 0x44, "MBMS总放电过流2级"},
|
||||
{20, 2, 0x45, "单包异常剔除2级"},
|
||||
{21, 2, 0x46, "单包没有电流2级"},
|
||||
{22, 2, 0x47, "自检有重复ID号2级"},
|
||||
{23, 2, 0x48, "电池包接入失败2级"},
|
||||
{24, 2, 0x49, "电池包充电电流过大2级"},
|
||||
{25, 2, 0x51, "电池包绝缘故障2级"},
|
||||
{26, 2, 0x52, "电池包温度过高2级"},
|
||||
{27, 2, 0x53, "电池包温度过低2级"},
|
||||
{28, 2, 0x54, "电池包单体电压不均衡2级"},
|
||||
{29, 2, 0x55, "电池包单体温度不均衡2级"},
|
||||
{30, 2, 0x56, "电池包过流2级"},
|
||||
{31, 2, 0x57, "电池包充电电流过大2级"},
|
||||
{32, 2, 0x58, "电池包单体电压过高2级"},
|
||||
{33, 2, 0x59, "电池包单体电压过低2级"},
|
||||
{34, 2, 0x5A, "电池包总电压过高2级"},
|
||||
{35, 2, 0x5B, "电池包总电压过低2级"},
|
||||
{36, 2, 0x5C, "电池包内部通讯故障2级"},
|
||||
{37, 2, 0x5D, "电池包初始化故障2级"},
|
||||
{38, 2, 0x62, "电池包高压回路连接异常2级"},
|
||||
{39, 2, 0x65, "电池包烟雾报警2级"},
|
||||
{40, 2, 0x72, "MBMS在线燃电充电超温2级"},
|
||||
//一级故障
|
||||
{41, 1, 0x01, "MBMS绝缘故障1级"},
|
||||
{42, 1, 0x02, "MBMS总放电超功率1级"},
|
||||
{43, 1, 0x11, "电池包绝缘故障1级"},
|
||||
{44, 1, 0x12, "电池包最高温度过高1级"},
|
||||
{45, 1, 0x13, "电池包最低温度过低1级"},
|
||||
{46, 1, 0x14, "电池包单体电压不均衡1级"},
|
||||
{47, 1, 0x15, "电池包单体温度不均衡1级"},
|
||||
{48, 1, 0x16, "电池包放电过流1级"},
|
||||
{49, 1, 0x17, "电池包充电电流过大1级"},
|
||||
{50, 1, 0x18, "电池包单体电压过高1级"},
|
||||
{51, 1, 0x19, "电池包单体电压过低1级"},
|
||||
{52, 1, 0x1A, "电池包总电压过高1级"},
|
||||
{53, 1, 0x1B, "电池包总电压过低1级"},
|
||||
{54, 1, 0x1D, "电池包烟雾报警1级"},
|
||||
};
|
||||
|
||||
static const FaultMap disfaultMap[] = {
|
||||
{1, 3, 1, "燃料电池断路器故障脱扣"},
|
||||
{2, 4, 2, "动力锂电池断路器故障脱扣"},
|
||||
{3, 4, 3, "推进电机断路器故障脱扣"},
|
||||
{4, 4, 4, "锂电池组仪表断路器故障脱扣"},
|
||||
{5, 4, 5, "DC/DC5模块断路器故障脱扣"},
|
||||
{6, 4, 6, "艏部高压配电箱断路器故障脱扣"},
|
||||
{7, 4, 7, "艉部FT装置4/5断路器故障脱扣"},
|
||||
{8, 4, 8, "艉舵开关1断路器故障脱扣"},
|
||||
{9, 4, 9, "艉舵开关2断路器故障脱扣"},
|
||||
{10, 4, 10, "FB预留断路器故障脱扣"},
|
||||
{11, 4, 11, "TYZ预留断路器故障脱扣"},
|
||||
{12, 4, 12, "预留断路器故障脱扣"},
|
||||
{13, 4, 13, "艏部FT装置1-3 断路器故障脱扣"},
|
||||
{14, 4, 14, "启闭机构断路器故障脱扣"},
|
||||
{15, 4, 15, "桅杆舵机控制箱断路器故障脱扣"},
|
||||
{16, 4, 16, "XCZ 断路器故障脱扣"},
|
||||
{17, 4, 17, "艏舵控制箱断路器故障脱扣"},
|
||||
{18, 4, 18, "敞水盖启动电缸断路器故障脱扣"},
|
||||
{19, 4, 19, "锂电池组(仪表)断路器故障脱扣"},
|
||||
{20, 4, 20, "艏部低压配电箱断路器故障脱扣"},
|
||||
{21, 4, 21, "UNIT4仪表DC48V断路器故障脱扣"},
|
||||
{22, 4, 22, "DC-DC1直流配电板断路器故障脱扣"},
|
||||
{23, 4, 23, "预留断路器故障脱扣"},
|
||||
{24, 4, 24, "预留断路器故障脱扣"},
|
||||
{25, 4, 25, "应急锂电池组2断路器"},
|
||||
{26, 4, 26, "UNIT1断路器故障脱扣"},
|
||||
{27, 4, 27, "UNIT2断路器故障脱扣"},
|
||||
{28, 4, 28, "UNIT3断路器故障脱扣"},
|
||||
{29, 4, 29, "UNIT5断路器故障脱扣"},
|
||||
{30, 4, 30, "艏部PZ装置断路器故障脱扣"},
|
||||
{31, 4, 31, "预留断路器故障脱扣"},
|
||||
{32, 4, 32, "预留断路器故障脱扣"},
|
||||
{33, 4, 33, "应急锂电池组1断路器故障脱扣"},
|
||||
{34, 4, 34, "动力母排绝缘低"},
|
||||
{35, 4, 35, "A汇流排绝缘低"},
|
||||
{36, 4, 36, "高压母线配电控制器仪表电源失电信号"},
|
||||
{37, 4, 37, "高压母线配电控制器应急电源失电信号"},
|
||||
{38, 4, 38, "高压汇流排A仪表电源失电信号"},
|
||||
{39, 4, 39, "高压汇流排A应急电源失电信号"},
|
||||
{40, 4, 40, "高压汇流排A仪表汇流排绝缘低"},
|
||||
{41, 4, 41, "高压汇流排B仪表电源失电信号"},
|
||||
{42, 4, 42, "高压汇流排B应急电源失电信号"},
|
||||
{43, 4, 43, "高压汇流排B仪表汇流排绝缘低"},
|
||||
{44, 4, 44, "仪表汇流排失电信号"},
|
||||
{45, 4, 45, "仪表汇流排浸水报警"}
|
||||
};
|
||||
#endif // FAULTCODE_H
|
||||
@@ -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);
|
||||
@@ -40,23 +40,34 @@ struct DevCmdExt : tinyfsm::Event {
|
||||
DevCmdExt() : id(0), cmd(0) {};
|
||||
DevCmdExt(int id, int cmd) : id(id), cmd(cmd) {};
|
||||
};
|
||||
//==================测试事件================================
|
||||
struct TestEvent : tinyfsm::Event {
|
||||
std::string eventName;
|
||||
unsigned int type;
|
||||
unsigned int eventId;
|
||||
TestEvent() : eventName(""), eventId(0),type(0) {};
|
||||
TestEvent(std::string eventName, unsigned int type,unsigned int eventId) : eventName(eventName), eventId(eventId),type(type) {};
|
||||
};
|
||||
struct FaultEvent : tinyfsm::Event {
|
||||
unsigned int subDisSysFaultCode;
|
||||
unsigned int disSysFaultCode;
|
||||
unsigned int powerFaultCode;
|
||||
unsigned int fcsFaultCode;
|
||||
unsigned int ccsFaultCode;
|
||||
FaultEvent() : subDisSysFaultCode(0), disSysFaultCode(0), powerFaultCode(0), fcsFaultCode(0), ccsFaultCode(0) {};
|
||||
unsigned int injectionFaultCode;
|
||||
FaultEvent() : subDisSysFaultCode(0), disSysFaultCode(0), powerFaultCode(0), fcsFaultCode(0), ccsFaultCode(0),injectionFaultCode(0) {};
|
||||
FaultEvent(unsigned int subDisSysFaultCode,
|
||||
unsigned int disSysFaultCode,
|
||||
unsigned int powerFaultCode,
|
||||
unsigned int fcsFaultCode,
|
||||
unsigned int ccsFaultCode)
|
||||
unsigned int ccsFaultCode,
|
||||
unsigned int injectionFaultCode)
|
||||
: subDisSysFaultCode(subDisSysFaultCode),
|
||||
disSysFaultCode(disSysFaultCode),
|
||||
powerFaultCode(powerFaultCode),
|
||||
fcsFaultCode(fcsFaultCode),
|
||||
ccsFaultCode(ccsFaultCode) {};
|
||||
ccsFaultCode(ccsFaultCode),
|
||||
injectionFaultCode(injectionFaultCode) {};
|
||||
};
|
||||
|
||||
class PowerManagerFsm : public tinyfsm::Fsm<PowerManagerFsm> {
|
||||
@@ -78,7 +89,10 @@ public:
|
||||
virtual void react(TaskStartEvent const &e);
|
||||
virtual void react(FaultEvent const &e);
|
||||
virtual void react(TaskStopEvent const &e);
|
||||
virtual void react(CycleTriggeredEvent const &);
|
||||
virtual void react(CycleTriggeredEvent const &e);
|
||||
|
||||
//测试事件
|
||||
virtual void react(TestEvent const &);
|
||||
|
||||
//操作函数
|
||||
void handelPowerCmd();
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <sys/resource.h>
|
||||
#include "data.h"
|
||||
#include "logpage.h"
|
||||
#include "testpage.h"
|
||||
|
||||
using json = Json::Value;
|
||||
|
||||
@@ -76,6 +77,15 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_
|
||||
} else if (mg_match(hm->uri, mg_str("/logs"), NULL)) {
|
||||
// 返回日志页面HTML
|
||||
mg_http_reply(c, 200, "Content-Type: text/html; charset=utf-8\r\n", LOG_PAGE_HTML.c_str());
|
||||
} else if (mg_match(hm->uri, mg_str("/testpage"), NULL)) {
|
||||
if (mg_strcmp(hm->method, mg_str("POST")) == 0) {
|
||||
// 解析POST请求并调用处理函数
|
||||
std::string msg(hm->body.buf, hm->body.len);
|
||||
handleTestPage(c, msg);
|
||||
} else {
|
||||
// 返回测试页面HTML
|
||||
mg_http_reply(c, 200, "Content-Type: text/html; charset=utf-8\r\n", TESTPAGE_HTML.c_str());
|
||||
}
|
||||
} else if (mg_match(hm->uri, mg_str("/control"), NULL)) {
|
||||
// 处理断路器控制请求
|
||||
if (mg_strcmp(hm->method, mg_str("POST")) == 0) {
|
||||
@@ -655,6 +665,84 @@ std::vector<std::string> HttpServer::readLogFile(int page, int pageSize, const s
|
||||
return std::vector<std::string>(filteredLogs.begin() + start, filteredLogs.begin() + end);
|
||||
}
|
||||
|
||||
void HttpServer::handleTestPage(struct mg_connection* c, const std::string& msg) {
|
||||
try {
|
||||
// 检查空消息
|
||||
if (msg.empty()) {
|
||||
LOG_F(ERROR, "Empty test page request received");
|
||||
mg_http_reply(c, 400, "Content-Type: application/json\r\n",
|
||||
"{\"success\": false, \"error\": \"Empty request body\"}");
|
||||
return;
|
||||
}
|
||||
|
||||
// 解析JSON请求
|
||||
Json::Value json;
|
||||
Json::CharReaderBuilder builder;
|
||||
std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
|
||||
std::string errors;
|
||||
const char* msg_start = msg.c_str();
|
||||
const char* msg_end = msg_start + msg.size();
|
||||
|
||||
if (!reader->parse(msg_start, msg_end, &json, &errors)) {
|
||||
// 记录详细的解析错误
|
||||
LOG_F(ERROR, "Failed to parse test page request JSON: %s\nRequest content: %s",
|
||||
errors.c_str(), msg.c_str());
|
||||
|
||||
// 返回结构化的错误响应
|
||||
mg_http_reply(c, 400, "Content-Type: application/json\r\n",
|
||||
"{\"success\": false, \"error\": \"Invalid JSON format\", "
|
||||
"\"details\": \"%s\", \"position\": %d}",
|
||||
errors.c_str(), (int)(errors.find("offset") != std::string::npos ?
|
||||
std::stoi(errors.substr(errors.find("offset") + 7)) : 0));
|
||||
return;
|
||||
}
|
||||
|
||||
// 记录接收到的请求
|
||||
LOG_F(INFO, "Received valid test page request: %s", msg.c_str());
|
||||
|
||||
// 检查必需字段是否存在
|
||||
if (!json.isMember("type") || !json.isMember("id")) {
|
||||
mg_http_reply(c, 400, "Content-Type: application/json\r\n",
|
||||
"{\"success\": false, \"error\": \"type and id fields are required\"}");
|
||||
return;
|
||||
}
|
||||
unsigned int type = 0;
|
||||
unsigned int id = 0;
|
||||
|
||||
try {
|
||||
if (json["type"].isString()) {
|
||||
type = std::stoul(json["type"].asString());
|
||||
} else if (json["type"].isNumeric()) {
|
||||
type = json["type"].asUInt();
|
||||
} else {
|
||||
throw std::invalid_argument("type must be number or numeric string");
|
||||
}
|
||||
|
||||
if (json["id"].isString()) {
|
||||
id = std::stoul(json["id"].asString());
|
||||
} else if (json["id"].isNumeric()) {
|
||||
id = json["id"].asUInt();
|
||||
} else {
|
||||
throw std::invalid_argument("id must be number or numeric string");
|
||||
}
|
||||
} catch (const std::exception& e) {
|
||||
mg_http_reply(c, 400, "Content-Type: application/json\r\n",
|
||||
"{\"success\": false, \"error\": \"%s\"}", e.what());
|
||||
return;
|
||||
}
|
||||
|
||||
m_powerManger->injectFault(type, id);
|
||||
// 返回成功响应
|
||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
||||
"{\"success\": true, \"message\": \"Request received\", "
|
||||
"\"content\": %s}",
|
||||
msg.c_str());
|
||||
} catch (const std::exception& e) {
|
||||
LOG_F(ERROR, "Error handling test page request: %s", e.what());
|
||||
mg_http_reply(c, 500, "Content-Type: text/plain\r\n", "Internal server error");
|
||||
}
|
||||
}
|
||||
|
||||
void HttpServer::monitorLogFile() {
|
||||
static std::streampos lastPos = 0;
|
||||
std::ifstream file(m_logFilePath);
|
||||
|
||||
@@ -54,6 +54,9 @@ public:
|
||||
// 读取日志文件
|
||||
std::vector<std::string> readLogFile(int page, int pageSize, const std::string& level, const std::string& search);
|
||||
|
||||
// 测试页面请求处理函数
|
||||
void handleTestPage(struct mg_connection* c, const std::string& msg);
|
||||
|
||||
private:
|
||||
// WebSocket事件处理函数
|
||||
void handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_data, void* fn_data);
|
||||
|
||||
@@ -210,6 +210,10 @@ body {
|
||||
<span class="sidebar-icon">📝</span>
|
||||
<span>系统日志</span>
|
||||
</a>
|
||||
<a href="/testpage" class="sidebar-button">
|
||||
<span class="sidebar-icon">🧪</span>
|
||||
<span>测试页面</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -300,6 +300,10 @@ const std::string LOG_PAGE_HTML = R"(
|
||||
<span class="sidebar-icon">📝</span>
|
||||
<span>系统日志</span>
|
||||
</a>
|
||||
<a href="/testpage" class="sidebar-button">
|
||||
<span class="sidebar-icon">🧪</span>
|
||||
<span>测试页面</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,378 @@
|
||||
#ifndef HTTP_SERVER_TESTPAGE_H
|
||||
#define HTTP_SERVER_TESTPAGE_H
|
||||
|
||||
#include <string>
|
||||
|
||||
const std::string TESTPAGE_HTML = R"row(
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>测试页面</title>
|
||||
<link rel="stylesheet" href="/static/style.css">
|
||||
<style>
|
||||
:root {
|
||||
--primary-color: #2563eb;
|
||||
--primary-hover: #1d4ed8;
|
||||
--bg-color: #f8fafc;
|
||||
--sidebar-width: 60px;
|
||||
--sidebar-expanded: 220px;
|
||||
--header-height: 36px;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||
background-color: var(--bg-color);
|
||||
color: #1a1a1a;
|
||||
}
|
||||
|
||||
.container {
|
||||
display: grid;
|
||||
grid-template-areas:
|
||||
"sidebar main-content";
|
||||
grid-template-columns: var(--sidebar-width) 1fr;
|
||||
grid-template-rows: 1fr;
|
||||
min-height: 100vh;
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.header {
|
||||
grid-area: unset;
|
||||
background: white;
|
||||
padding: 0 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: var(--sidebar-width);
|
||||
height: var(--header-height);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.header h1 {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
grid-area: sidebar;
|
||||
background: white;
|
||||
width: var(--sidebar-width);
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
padding: 0.5rem 0.25rem;
|
||||
transition: width 0.3s ease;
|
||||
box-shadow: 1px 0 3px rgba(0, 0, 0, 0.1);
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.sidebar:hover {
|
||||
width: var(--sidebar-expanded);
|
||||
}
|
||||
|
||||
.sidebar-menu {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.sidebar-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.5rem 0.75rem;
|
||||
border-radius: 0.375rem;
|
||||
color: #4b5563;
|
||||
text-decoration: none;
|
||||
transition: all 0.2s ease;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.sidebar-button:hover {
|
||||
background: var(--bg-color);
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.sidebar-icon {
|
||||
min-width: 1.5rem;
|
||||
margin-right: 1rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
grid-area: main-content;
|
||||
padding: 1px;
|
||||
margin-top: var(--header-height);
|
||||
}
|
||||
|
||||
.status-bar {
|
||||
position: fixed;
|
||||
top: 4px;
|
||||
right: 8px;
|
||||
background: white;
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
z-index: 15;
|
||||
}
|
||||
|
||||
.status-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: #4b5563;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.data-panel {
|
||||
background: white;
|
||||
border-radius: 4px;
|
||||
padding: 16px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
height: calc(100vh - var(--header-height) + 3px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 8px;
|
||||
border-bottom: 1px solid #e5e7eb;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.form-label {
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
font-weight: 500;
|
||||
color: #374151;
|
||||
}
|
||||
|
||||
.form-input {
|
||||
width: 100%;
|
||||
padding: 8px 12px;
|
||||
border: 1px solid #d1d5db;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
.form-input:focus {
|
||||
outline: none;
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.1);
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 8px 16px;
|
||||
background-color: var(--primary-color);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background-color: var(--primary-hover);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.container {
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-areas:
|
||||
"header"
|
||||
"main-content";
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
|
||||
.header {
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="sidebar">
|
||||
<div class="sidebar-menu">
|
||||
<a href="/" class="sidebar-button">
|
||||
<span class="sidebar-icon">🏠</span>
|
||||
<span>系统主页</span>
|
||||
</a>
|
||||
<a href="/data" class="sidebar-button">
|
||||
<span class="sidebar-icon">📊</span>
|
||||
<span>系统数据</span>
|
||||
</a>
|
||||
<a href="/dashboard" class="sidebar-button">
|
||||
<span class="sidebar-icon">⚡</span>
|
||||
<span>配电操作</span>
|
||||
</a>
|
||||
<a href="/logs" class="sidebar-button">
|
||||
<span class="sidebar-icon">📝</span>
|
||||
<span>系统日志</span>
|
||||
</a>
|
||||
<a href="/testpage" class="sidebar-button">
|
||||
<span class="sidebar-icon">🧪</span>
|
||||
<span>测试页面</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<h1>测试页面</h1>
|
||||
<div class="status-bar">
|
||||
<div class="status-info">
|
||||
<span>🟢 系统状态: <span id="systemStatus">运行中</span></span>
|
||||
<span>⚡ 应用频率: <span id="appFreq">0</span> Hz</span>
|
||||
<span>📡 通信频率: <span id="commFreq">0</span> Hz</span>
|
||||
<span>💻 CPU负载: <span id="cpuLoad">0</span>%</span>
|
||||
<span>⏱️ 迭代间隔: <span id="timeSinceIterate">0</span>ms</span>
|
||||
<span>🕒 更新时间: <time id="updateTime">2025-05-19 11:54</time></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main-content">
|
||||
<div class="data-panel">
|
||||
<div class="panel-title">测试表单</div>
|
||||
<form id="testForm">
|
||||
<div class="form-group">
|
||||
<label for="type" class="form-label">类型</label>
|
||||
<input type="number" id="type" name="type" class="form-input" min="0" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="id" class="form-label">ID</label>
|
||||
<input type="number" id="id" name="id" class="form-input" min="0" required>
|
||||
</div>
|
||||
<button type="button" class="btn" onclick="submitTestForm()">提交</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let ws = null;
|
||||
|
||||
function initWebSocket() {
|
||||
ws = new WebSocket('ws://' + window.location.host + '/ws');
|
||||
|
||||
ws.onopen = () => {
|
||||
console.log('WebSocket连接已建立');
|
||||
updateStatus('运行中', true);
|
||||
};
|
||||
|
||||
ws.onmessage = (event) => {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log('收到系统数据:', data);
|
||||
|
||||
// 更新MOOSDB信息
|
||||
if (data.moosdb) {
|
||||
document.getElementById('appFreq').textContent = data.moosdb.appFreq.toFixed(2);
|
||||
document.getElementById('commFreq').textContent = data.moosdb.commFreq.toFixed(2);
|
||||
document.getElementById('cpuLoad').textContent = data.moosdb.cpuLoad.toFixed(1);
|
||||
document.getElementById('timeSinceIterate').textContent = data.moosdb.timeSinceIterate.toFixed(0);
|
||||
}
|
||||
|
||||
updateTime();
|
||||
};
|
||||
|
||||
ws.onclose = () => {
|
||||
console.log('WebSocket连接已关闭');
|
||||
updateStatus('已断开', false);
|
||||
setTimeout(initWebSocket, 5000);
|
||||
};
|
||||
|
||||
ws.onerror = (error) => {
|
||||
console.error('WebSocket错误:', error);
|
||||
updateStatus('错误', false);
|
||||
};
|
||||
}
|
||||
|
||||
function updateStatus(status, isConnected) {
|
||||
const statusElement = document.querySelector('.status-info span:first-child');
|
||||
statusElement.innerHTML = `${isConnected ? '🟢' : '🔴'} 系统状态: ${status}`;
|
||||
}
|
||||
|
||||
function updateTime() {
|
||||
const now = new Date();
|
||||
const timeStr = now.toLocaleString('zh-CN', {
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit',
|
||||
hour12: false
|
||||
});
|
||||
document.getElementById('updateTime').textContent = timeStr;
|
||||
}
|
||||
|
||||
function submitTestForm() {
|
||||
const form = document.getElementById('testForm');
|
||||
const typeValue = parseInt(form.type.value);
|
||||
const idValue = parseInt(form.id.value);
|
||||
|
||||
if (typeValue < 0 || idValue < 0) {
|
||||
alert('请输入非负整数');
|
||||
return;
|
||||
}
|
||||
|
||||
const formData = {
|
||||
type: typeValue,
|
||||
id: idValue
|
||||
};
|
||||
|
||||
fetch('/testpage', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(formData)
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
alert('提交成功: ' + data.message);
|
||||
} else {
|
||||
alert('提交失败: ' + data.error);
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('提交错误:', error);
|
||||
alert('提交过程中发生错误');
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('load', initWebSocket);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
)row";
|
||||
|
||||
#endif // HTTP_SERVER_TESTPAGE_H
|
||||
@@ -733,14 +733,14 @@ namespace DeviceId {
|
||||
ctd2 = 24,
|
||||
soundVeloc = 25,
|
||||
waterInject = 26,
|
||||
bowWaterlnet1 = 27,
|
||||
bowWaterlnet2 = 28,
|
||||
bowWaterlnet3 = 29,
|
||||
bowWaterlnet4 = 30,
|
||||
bowWaterlnet5 = 31,
|
||||
bowWaterlnet6 = 32,
|
||||
bowWaterlnet7 = 33,
|
||||
bowWaterlnet8 = 34,
|
||||
bowWaterInet1 = 27,
|
||||
bowWaterInet2 = 28,
|
||||
bowWaterInet3 = 29,
|
||||
bowWaterInet4 = 30,
|
||||
bowWaterInet5 = 31,
|
||||
bowWaterInet6 = 32,
|
||||
bowWaterInet7 = 33,
|
||||
bowWaterInet8 = 34,
|
||||
sideSonar = 35,
|
||||
lowFreqSonar = 36,
|
||||
launchControler = 37,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define SYSTEMDATA_H
|
||||
#include "pmSysvariable.h"
|
||||
#include "sqlit3/SQLite.h"
|
||||
|
||||
#define DEBUFG
|
||||
class SystemData
|
||||
{
|
||||
private:
|
||||
@@ -135,6 +135,11 @@ public:
|
||||
uint32_t reserved4; // 保留字段
|
||||
uint32_t heartbeat; // 主机心跳计数器
|
||||
|
||||
//锂电池故障字段
|
||||
unsigned char powfaultCode;
|
||||
unsigned char insfaultCode;
|
||||
//配电系统故障码
|
||||
std::vector<unsigned char> distributeFaultCode;
|
||||
|
||||
// MOOSD 状态
|
||||
bool moosd_status;
|
||||
@@ -386,7 +391,7 @@ public:
|
||||
//初始化变量全部为0
|
||||
memset(this, 0, sizeof(SystemData));
|
||||
};
|
||||
~SystemData();
|
||||
~SystemData(){};
|
||||
|
||||
void updateCommonStatus(double time_out=3){
|
||||
//更新时间
|
||||
@@ -411,10 +416,12 @@ public:
|
||||
total_generation_power = data.total_generation_power;
|
||||
|
||||
//故障信息
|
||||
#ifdef DEBUG
|
||||
fc_fault_level_1 = data.fault_level_1;
|
||||
fc_fault_level_2 = data.fault_level_2;
|
||||
fc_fault_level_3 = data.fault_level_3;
|
||||
fc_fault_level_4 = data.fault_level_4;
|
||||
#endif
|
||||
|
||||
//燃料容量
|
||||
hydrogen_capacity = static_cast<int>(data.hydrogen_capacity);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#ifndef CCUUDPMSG__H
|
||||
#define CCUUDPMSG__H
|
||||
#include "pmSysvariable.h"
|
||||
#include "../pmSysvariable.h"
|
||||
|
||||
#define CCU_UDPMSG_START1 0x20
|
||||
#define CCU_UDPMSG_START2 0x20
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <chrono>
|
||||
#include <iostream>
|
||||
#include <utility>
|
||||
#include "loguru.hpp"
|
||||
#include "../loguru.hpp"
|
||||
using namespace std;
|
||||
#define QUENUE_SIZE 100
|
||||
|
||||
@@ -297,14 +297,14 @@ public:
|
||||
|
||||
// UNIT2
|
||||
state.sideSonar = driver.sideSonar;
|
||||
state.bowWaterInet1 = driver.bowWaterlnet1;
|
||||
state.bowWaterInet2 = driver.bowWaterlnet2;
|
||||
state.bowWaterInet3 = driver.bowWaterlnet3;
|
||||
state.bowWaterInet4 = driver.bowWaterlnet4;
|
||||
state.bowWaterInet5 = driver.bowWaterlnet5;
|
||||
state.bowWaterInet6 = driver.bowWaterlnet6;
|
||||
state.bowWaterInet7 = driver.bowWaterlnet7;
|
||||
state.bowWaterInet8 = driver.bowWaterlnet8;
|
||||
state.bowWaterInet1 = driver.bowWaterInet1;
|
||||
state.bowWaterInet2 = driver.bowWaterInet2;
|
||||
state.bowWaterInet3 = driver.bowWaterInet3;
|
||||
state.bowWaterInet4 = driver.bowWaterInet4;
|
||||
state.bowWaterInet5 = driver.bowWaterInet5;
|
||||
state.bowWaterInet6 = driver.bowWaterInet6;
|
||||
state.bowWaterInet7 = driver.bowWaterInet7;
|
||||
state.bowWaterInet8 = driver.bowWaterInet8;
|
||||
state.launchControler = driver.launchControler;
|
||||
state.electSensor = driver.electSensor;
|
||||
state.lowFreqSonar = driver.lowFreqSonar;
|
||||
@@ -381,14 +381,14 @@ public:
|
||||
|
||||
// UNIT2
|
||||
driver.sideSonar = state.sideSonar;
|
||||
driver.bowWaterlnet1 = state.bowWaterInet1;
|
||||
driver.bowWaterlnet2 = state.bowWaterInet2;
|
||||
driver.bowWaterlnet3 = state.bowWaterInet3;
|
||||
driver.bowWaterlnet4 = state.bowWaterInet4;
|
||||
driver.bowWaterlnet5 = state.bowWaterInet5;
|
||||
driver.bowWaterlnet6 = state.bowWaterInet6;
|
||||
driver.bowWaterlnet7 = state.bowWaterInet7;
|
||||
driver.bowWaterlnet8 = state.bowWaterInet8;
|
||||
driver.bowWaterInet1 = state.bowWaterInet1;
|
||||
driver.bowWaterInet2 = state.bowWaterInet2;
|
||||
driver.bowWaterInet3 = state.bowWaterInet3;
|
||||
driver.bowWaterInet4 = state.bowWaterInet4;
|
||||
driver.bowWaterInet5 = state.bowWaterInet5;
|
||||
driver.bowWaterInet6 = state.bowWaterInet6;
|
||||
driver.bowWaterInet7 = state.bowWaterInet7;
|
||||
driver.bowWaterInet8 = state.bowWaterInet8;
|
||||
driver.launchControler = state.launchControler;
|
||||
driver.electSensor = state.electSensor;
|
||||
driver.lowFreqSonar = state.lowFreqSonar;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "json/json.h"
|
||||
#include <bitset>
|
||||
#include "../pmSysvariable.h"
|
||||
|
||||
#include "../systemData.h"
|
||||
class uPower_disSysStateMsg
|
||||
{
|
||||
private:
|
||||
@@ -16,9 +16,8 @@ public:
|
||||
~uPower_disSysStateMsg() {};
|
||||
std::string key = "uPower_disSysState_st";
|
||||
|
||||
disSysBreakerList currentDisBreakerState;
|
||||
|
||||
std::string buildMsg(disSysBreakerList currentDisBreakerState)
|
||||
std::string buildMsg(SystemData data,disSysBreakerList currentDisBreakerState)
|
||||
{
|
||||
//构建配电系统状态报告
|
||||
Json::Value dis;
|
||||
@@ -38,13 +37,12 @@ public:
|
||||
dis["LVolBusBreaker_uint16"] = *(unsigned short*)pdis4;
|
||||
|
||||
//TODO: 构建配电系统故障码
|
||||
// Json::Value faultCodeDis_array;
|
||||
// for(auto val : m_pm->faultCode)
|
||||
// {
|
||||
// faultCodeDis_array.append(val);
|
||||
// }
|
||||
// dis[VAR_TO_STR(faultCode_array)] = faultCodeDis_array;
|
||||
// 转化为json格式
|
||||
Json::Value faultCodeDis_array = Json::Value(Json::arrayValue);
|
||||
for(auto val : data.distributeFaultCode)
|
||||
{
|
||||
faultCodeDis_array.append(val);
|
||||
}
|
||||
dis["faultCode_array"] = faultCodeDis_array;
|
||||
|
||||
Json::StreamWriterBuilder writerBuilder;
|
||||
writerBuilder.settings_["indentation"] = "";
|
||||
|
||||
@@ -141,14 +141,14 @@ public:
|
||||
state.actuatorState.openCloseMechanism4 = s.bowCover4;
|
||||
state.actuatorState.openCloseMechanism5 = s.bowCover5;
|
||||
state.actuatorState.openCloseMechanism6 = s.bowCover6;
|
||||
state.actuatorState.openWaterMechanism1 = s.bowWaterlnet1;
|
||||
state.actuatorState.openWaterMechanism2 = s.bowWaterlnet2;
|
||||
state.actuatorState.openWaterMechanism3 = s.bowWaterlnet3;
|
||||
state.actuatorState.openWaterMechanism4 = s.bowWaterlnet4;
|
||||
state.actuatorState.openWaterMechanism5 = s.bowWaterlnet5;
|
||||
state.actuatorState.openWaterMechanism6 = s.bowWaterlnet6;
|
||||
state.actuatorState.openWaterMechanism7 = s.bowWaterlnet7;
|
||||
state.actuatorState.openWaterMechanism8 = s.bowWaterlnet8;
|
||||
state.actuatorState.openWaterMechanism1 = s.bowWaterInet1;
|
||||
state.actuatorState.openWaterMechanism2 = s.bowWaterInet2;
|
||||
state.actuatorState.openWaterMechanism3 = s.bowWaterInet3;
|
||||
state.actuatorState.openWaterMechanism4 = s.bowWaterInet4;
|
||||
state.actuatorState.openWaterMechanism5 = s.bowWaterInet5;
|
||||
state.actuatorState.openWaterMechanism6 = s.bowWaterInet6;
|
||||
state.actuatorState.openWaterMechanism7 = s.bowWaterInet7;
|
||||
state.actuatorState.openWaterMechanism8 = s.bowWaterInet8;
|
||||
|
||||
// 运动状态赋值
|
||||
state.motionState.sternRudder1 = s.sternRudderServo1;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "string"
|
||||
#include "json/json.h"
|
||||
#include <bitset>
|
||||
|
||||
#include "../systemData.h"
|
||||
class uPower_fcsStateMsg
|
||||
{
|
||||
private:
|
||||
@@ -24,105 +24,59 @@ public:
|
||||
unsigned int errorCode : 8; // 错误代码
|
||||
} state;
|
||||
|
||||
std::string buildMsg(ccuState ccustate)
|
||||
std::string buildMsg(SystemData data)
|
||||
{
|
||||
//TODO:根据最新协议修改
|
||||
Json::Value fcs;
|
||||
// suffix = getTypeName(typeid(ccustate.fcuState).name());
|
||||
// fcs["fcuState"] = ccustate.fcuState;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuFaultLeve).name());
|
||||
// fcs["fcuFaultLeve"] = ccustate.fcuFaultLeve;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.powerLimit).name());
|
||||
// fcs[VAR_TO_STR(powLimit)+suffix] = ccustate.powerLimit;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.totalPowerGeneration).name());
|
||||
// fcs[VAR_TO_STR(powerGen)+suffix] = ccustate.totalPowerGeneration;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.ch4o).name());
|
||||
// fcs[VAR_TO_STR(ch4o)+suffix] = ccustate.ch4o;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.o2).name());
|
||||
// fcs[VAR_TO_STR(o2)+suffix] = ccustate.o2;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuVoltage).name());
|
||||
// fcs[VAR_TO_STR(fcuVol)+suffix] = ccustate.fcuVoltage;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuCurrent).name());
|
||||
// fcs[VAR_TO_STR(fcuCur)+suffix] = ccustate.fcuCurrent;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.o2Level).name());
|
||||
// fcs[VAR_TO_STR(o2Level)+suffix] = ccustate.o2Level;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.exchangerTemperature).name());
|
||||
// fcs[VAR_TO_STR(excTemp)+suffix] = ccustate.exchangerTemperature;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuOutPower).name());
|
||||
// fcs[VAR_TO_STR(fcuOutPower)+suffix] = ccustate.fcuOutPower;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuOutIns).name());
|
||||
// fcs[VAR_TO_STR(fcuOutIns)+suffix] = ccustate.fcuOutIns;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuVoltageIns).name());
|
||||
// fcs[VAR_TO_STR(fcuVolIns)+suffix] = ccustate.fcuVoltageIns;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuVoltagePower).name());
|
||||
// fcs[VAR_TO_STR(fcuVolPower)+suffix] = ccustate.fcuVoltagePower;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuCurrentIns).name());
|
||||
// fcs[VAR_TO_STR(fcuCurIns)+suffix] = ccustate.fcuCurrentIns;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.fcuCurrentPower).name());
|
||||
// fcs[VAR_TO_STR(fcuCurPower)+suffix] = ccustate.fcuCurrentPower;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.h2Concentration1).name());
|
||||
// fcs[VAR_TO_STR(h2Concent1)+suffix] = ccustate.h2Concentration1;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.h2Concentration2).name());
|
||||
// fcs[VAR_TO_STR(h2Concent2)+suffix] = ccustate.h2Concentration2;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.o2Concentration1).name());
|
||||
// fcs[VAR_TO_STR(o2Concent1)+suffix] = ccustate.o2Concentration1;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.o2Concentration2).name());
|
||||
// fcs[VAR_TO_STR(o2Concent2)+suffix] = ccustate.o2Concentration2;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.ch4oConcentration1).name());
|
||||
// fcs[VAR_TO_STR(ch4oConcent1)+suffix] = ccustate.ch4oConcentration1;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.ch4oConcentration2).name());
|
||||
// fcs[VAR_TO_STR(ch4oConcent2)+suffix] = ccustate.ch4oConcentration2;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.backpressure1).name());
|
||||
// fcs[VAR_TO_STR(backpressure1)+suffix] = ccustate.backpressure1;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.backpressure2).name());
|
||||
// fcs[VAR_TO_STR(backpressure2)+suffix] = ccustate.backpressure2;
|
||||
|
||||
// suffix = getTypeName(typeid(ccustate.flameDetection).name());
|
||||
// fcs[VAR_TO_STR(flameDet)+suffix] = ccustate.flameDetection;
|
||||
|
||||
// unsigned short faultCode1;
|
||||
// unsigned short faultCode2;
|
||||
// unsigned short faultCode3;
|
||||
// faultCode1 = (ccustate.fcuGZ_1H << 8) | ccustate.fcuGZ_1L;
|
||||
// faultCode2 = (ccustate.fcuGZ_2H << 8) | ccustate.fcuGZ_2L;
|
||||
// faultCode3 = (ccustate.fcuGZ_3H << 8) | ccustate.fcuGZ_3L;
|
||||
|
||||
// suffix = getTypeName(typeid(faultCode1).name());
|
||||
// fcs[VAR_TO_STR(faultCode1)+suffix] = faultCode1;
|
||||
// suffix = getTypeName(typeid(faultCode2).name());
|
||||
// fcs[VAR_TO_STR(faultCode2)+suffix] = faultCode2;
|
||||
// suffix = getTypeName(typeid(faultCode3).name());
|
||||
// fcs[VAR_TO_STR(faultCode3)+suffix] = faultCode3;
|
||||
fcs["backpressure1_fp32"] = data.cabin_pressure1;
|
||||
fcs["backpressure2_fp32"] = data.cabin_pressure2;
|
||||
|
||||
// // 转化为json格式
|
||||
// Json::Value root;
|
||||
// root["fcsStatus"] = state.fcsStatus;
|
||||
// root["outputPower"] = state.outputPower;
|
||||
// root["temperature"] = state.temperature;
|
||||
// root["errorCode"] = state.errorCode;
|
||||
fcs["ch4oConcent1_fp32"] = data.ch3oh_concentration1;
|
||||
fcs["ch4oConcent2_fp32"] = data.ch3oh_concentration2;
|
||||
|
||||
fcs["ch4o_fp32"] = 0.0; // 备用
|
||||
|
||||
fcs["excTemp_fp32"] = data.palladium_temp;
|
||||
|
||||
fcs["fcuCurIns_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["fcuCurPower_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["fcuCur_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["fcuFaultLeve_uint8"] = data.fc_fault_level;
|
||||
|
||||
fcs["fcuOutIns_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["fcuOutPower_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["fcuState_uint8"] = data.fc_status;
|
||||
|
||||
fcs["fcuVolIns_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["fcuVolPower_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["fcuVol_fp32"] = 0.0; //备用
|
||||
|
||||
fcs["h2Concent1_fp32"] = data.h2_concentration1;
|
||||
fcs["h2Concent2_fp32"] = data.h2_concentration2;
|
||||
|
||||
fcs[ "o2Concent1_fp32"] = data.o2_concentration1;
|
||||
fcs["o2Concent2_fp32"] = data.o2_concentration2;
|
||||
|
||||
fcs["o2Level_fp32"] = 0.0; //备用
|
||||
fcs["o2_fp32"] = 0.0; //备用
|
||||
fcs["powLimit_fp32"] = data.output_power_limit;
|
||||
fcs[ "powerGen_fp32"] = data.total_generation_power;
|
||||
|
||||
fcs["flameDet_uint8"] = data.flame_detector1;
|
||||
|
||||
fcs["faultCode1_uint16"] = data.fc_fault_level_1;
|
||||
fcs["faultCode2_uint16"] = data.fc_fault_level_2;
|
||||
fcs["faultCode3_uint16"] = data.fc_fault_level_3;
|
||||
fcs["faultCode4_uint16"] = data.fc_fault_level_4;
|
||||
|
||||
Json::StreamWriterBuilder writerBuilder;
|
||||
writerBuilder.settings_["indentation"] = "";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "string"
|
||||
#include "json/json.h"
|
||||
#include <bitset>
|
||||
|
||||
#include "../systemData.h"
|
||||
class uPower_liBatStateMsg
|
||||
{
|
||||
private:
|
||||
@@ -16,118 +16,46 @@ public:
|
||||
std::string key = "uPower_liBatState_st";
|
||||
|
||||
|
||||
std::string buildMsg(ccuState ccustate)
|
||||
std::string buildMsg(SystemData data)
|
||||
{
|
||||
//TODO:根据最新协议修改
|
||||
Json::Value lbs;
|
||||
//构建动力锂电池状态报告
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insPosRelayState).name());
|
||||
// lbs[VAR_TO_STR(insPosRelayState)+suffix] = m_pm->m_pmCurrentState.ccustate.insPosRelayState;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insNegRelayState).name());
|
||||
// lbs[VAR_TO_STR(insNegRelayState)+suffix] = m_pm->m_pmCurrentState.ccustate.insNegRelayState;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerPosRelayState).name());
|
||||
// lbs[VAR_TO_STR(powPosRelayState)+suffix] = m_pm->m_pmCurrentState.ccustate.powerPosRelayState;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerNegRelayState).name());
|
||||
// lbs[VAR_TO_STR(powNegRelayState)+suffix] = m_pm->m_pmCurrentState.ccustate.powerNegRelayState;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insBatLimit).name());
|
||||
// lbs[VAR_TO_STR(insBatLimit)+suffix] = m_pm->m_pmCurrentState.ccustate.insBatLimit;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerBatLimit).name());
|
||||
// lbs[VAR_TO_STR(powerBatLimit)+suffix] = m_pm->m_pmCurrentState.ccustate.powerBatLimit;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insBatSoc).name());
|
||||
// lbs[VAR_TO_STR(insBatSoc)+suffix] = m_pm->m_pmCurrentState.ccustate.insBatSoc;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerBatSoc).name());
|
||||
// lbs[VAR_TO_STR(powBatSoc)+suffix] = m_pm->m_pmCurrentState.ccustate.powerBatSoc;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insBatTotalElectricity).name());
|
||||
// lbs[VAR_TO_STR(insBatTotalElect)+suffix] = m_pm->m_pmCurrentState.ccustate.insBatTotalElectricity;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerBatTotalElectricity).name());
|
||||
// lbs[VAR_TO_STR(powBatTotalElect)+suffix] = m_pm->m_pmCurrentState.ccustate.powerBatTotalElectricity;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insBatCurrentElectricity).name());
|
||||
// lbs[VAR_TO_STR(insBatCurElect)+suffix] = m_pm->m_pmCurrentState.ccustate.insBatCurrentElectricity;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerBatCurrentElectricity).name());
|
||||
// lbs[VAR_TO_STR(powBatCurElect)+suffix] = m_pm->m_pmCurrentState.ccustate.powerBatCurrentElectricity;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insChargeState).name());
|
||||
// lbs[VAR_TO_STR(insChargeState)+suffix] = m_pm->m_pmCurrentState.ccustate.insChargeState;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerChargeState).name());
|
||||
// lbs[VAR_TO_STR(powChargeState)+suffix] = m_pm->m_pmCurrentState.ccustate.powerChargeState;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insLinkVoltage).name());
|
||||
// lbs[VAR_TO_STR(insLinkVol)+suffix] = m_pm->m_pmCurrentState.ccustate.insLinkVoltage;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insPackVoltage).name());
|
||||
// lbs[VAR_TO_STR(insPackVol)+suffix] = m_pm->m_pmCurrentState.ccustate.insPackVoltage;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insCurrent).name());
|
||||
// lbs[VAR_TO_STR(insCurrent)+suffix] = m_pm->m_pmCurrentState.ccustate.insCurrent;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insPosInsulationResistance).name());
|
||||
// lbs[VAR_TO_STR(insPosRes)+suffix] = m_pm->m_pmCurrentState.ccustate.insPosInsulationResistance;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insNegInsulationResistance).name());
|
||||
// lbs[VAR_TO_STR(insNegRes)+suffix] = m_pm->m_pmCurrentState.ccustate.insNegInsulationResistance;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerLinkVoltage).name());
|
||||
// lbs[VAR_TO_STR(powLinkVol)+suffix] = m_pm->m_pmCurrentState.ccustate.powerLinkVoltage;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerPackVoltage).name());
|
||||
// lbs[VAR_TO_STR(powerPackVol)+suffix] = m_pm->m_pmCurrentState.ccustate.powerPackVoltage;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerCurrent).name());
|
||||
// lbs[VAR_TO_STR(powCur)+suffix] = m_pm->m_pmCurrentState.ccustate.powerCurrent;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerPosInsulationResistance).name());
|
||||
// lbs[VAR_TO_STR(powPosRes)+suffix] = m_pm->m_pmCurrentState.ccustate.powerPosInsulationResistance;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerNegInsulationResistance).name());
|
||||
// lbs[VAR_TO_STR(powNegRes)+suffix] = m_pm->m_pmCurrentState.ccustate.powerNegInsulationResistance;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insCurrentSocHold1).name());
|
||||
// lbs[VAR_TO_STR(insCurSocHold1)+suffix] = m_pm->m_pmCurrentState.ccustate.insCurrentSocHold1;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insCurrentSocHold2).name());
|
||||
// lbs[VAR_TO_STR(insCurSocHold2)+suffix] = m_pm->m_pmCurrentState.ccustate.insCurrentSocHold2;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insCurrentSocHold3).name());
|
||||
// lbs[VAR_TO_STR(insCurSocHold3)+suffix] = m_pm->m_pmCurrentState.ccustate.insCurrentSocHold3;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.fcuCurrentToInsLimit1).name());
|
||||
// lbs[VAR_TO_STR(fcuCurToInsLimit1)+suffix] = m_pm->m_pmCurrentState.ccustate.fcuCurrentToInsLimit1;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.fcuCurrentToinsLimit2).name());
|
||||
// lbs[VAR_TO_STR(fcuCurToinsLimit2)+suffix] = m_pm->m_pmCurrentState.ccustate.fcuCurrentToinsLimit2;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerCurrentSocHold1).name());
|
||||
// lbs[VAR_TO_STR(powCurSocHold1)+suffix] = m_pm->m_pmCurrentState.ccustate.powerCurrentSocHold1;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerCurrentSocHold2).name());
|
||||
// lbs[VAR_TO_STR(powCurSocHold2)+suffix] = m_pm->m_pmCurrentState.ccustate.powerCurrentSocHold2;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerCurrentSocHold3).name());
|
||||
// lbs[VAR_TO_STR(powCurSocHold3)+suffix] = m_pm->m_pmCurrentState.ccustate.powerCurrentSocHold3;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerCurrentToInsLimit1).name());
|
||||
// lbs[VAR_TO_STR(powCurToInsLimit1)+suffix] = m_pm->m_pmCurrentState.ccustate.powerCurrentToInsLimit1;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerCurrentToinsLimit2).name());
|
||||
// lbs[VAR_TO_STR(powCurToinsLimit2)+suffix] = m_pm->m_pmCurrentState.ccustate.powerCurrentToinsLimit2;
|
||||
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.insAlarmIdentificationWord).name());
|
||||
// lbs[VAR_TO_STR(insfaultCode)+suffix] = m_pm->m_pmCurrentState.ccustate.insAlarmIdentificationWord;
|
||||
// suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.powerAlarmIdentificationWord).name());
|
||||
// lbs[VAR_TO_STR(powfaultCode)+suffix] = m_pm->m_pmCurrentState.ccustate.powerAlarmIdentificationWord;
|
||||
|
||||
lbs["insBatCurElect_uint16"] = data.ins_current;
|
||||
lbs["insBatLimit_uint16"] = data.ins_power_limit1;
|
||||
lbs[ "insBatSoc_uint8"] = data.ins_soc;
|
||||
lbs["insBatTotalElect_uint16"] = data.ins_total_energy;
|
||||
lbs["insChargeState_uint8"] = data.ins_charge_status;
|
||||
lbs["insCurSocHold1_uint8"] = 0; //备用
|
||||
lbs["insCurSocHold2_uint8"] = 0; //备用
|
||||
lbs["insCurSocHold3_uint8"] = 0; //备用
|
||||
lbs["insCurrent_uint16"] = data.ins_current;
|
||||
lbs[ "insLinkVol_uint16"] = data.ins_voltage_link;
|
||||
lbs["insNegRelayState_uint8"] = 0;
|
||||
lbs["insNegRes_uint16"] = data.ins_resistance_neg;
|
||||
lbs[ "insPackVol_uint16"] = data.ins_voltage_pack;
|
||||
lbs[ "insPosRelayState_uint8"] = 0;
|
||||
lbs["insPosRes_uint16"] = data.ins_resistance_pos;
|
||||
lbs["powBatCurElect_uint16"] = 0;
|
||||
lbs["powBatSoc_uint8"] = data.dyn_soc;
|
||||
lbs[ "powBatTotalElect_uint16"] = data.dyn_total_energy;
|
||||
lbs["powChargeState_uint8"] = data.dyn_charge_status;
|
||||
lbs["powCurSocHold1_uint8"] = 0; //备用
|
||||
lbs["powCurSocHold2_uint8"] = 0; //备用
|
||||
lbs["powCurSocHold3_uint8"] = 0; //备用
|
||||
lbs["powCurToInsLimit1_uint8"] = data.dyn_power_limit1;
|
||||
lbs["powCurToInsLimit2_uint8"] = data.dyn_power_limit2;
|
||||
lbs["powCur_uint16"] = data.dyn_current;
|
||||
lbs["powLinkVol_uint16"] = data.dyn_voltage_link;
|
||||
lbs["powNegRelayState_uint8"] = 0;
|
||||
lbs["powNegRes_uint16"] = data.dyn_resistance_neg;
|
||||
lbs["powPosRelayState_uint8"] = 0;
|
||||
lbs["powPosRes_uint16"] = data.dyn_resistance_pos;
|
||||
lbs["powerBatLimit_uint16"] = 0; //备用
|
||||
lbs["powerPackVol_uint16"] = data.dyn_voltage_pack;
|
||||
lbs["powFaultCode_uint8"] = data.powfaultCode;
|
||||
lbs["insFaultCode_uint8"] = data.insfaultCode;
|
||||
|
||||
Json::StreamWriterBuilder writerBuilder;
|
||||
writerBuilder.settings_["indentation"] = "";
|
||||
return Json::writeString(writerBuilder, lbs);
|
||||
|
||||
@@ -32,15 +32,14 @@ public:
|
||||
std::string buildMsg()
|
||||
{
|
||||
// 状态赋值
|
||||
//1.构建系统状态报告
|
||||
Json::Value pms;
|
||||
|
||||
|
||||
pms["workCondition_uint"] = state.workCondition;
|
||||
pms["currentMod_uint8"] = state.currentMod;
|
||||
pms["powerState_uint8"] = state.powerState;
|
||||
pms["faultLevel_uint8"] = state.faultLevel;
|
||||
|
||||
Json::Value faultCode_array;
|
||||
Json::Value faultCode_array = Json::Value(Json::arrayValue);
|
||||
for(auto val : state.faultCode)
|
||||
{
|
||||
faultCode_array.append(val);
|
||||
|
||||
Reference in New Issue
Block a user