进行了水面端测试

This commit is contained in:
zjk
2025-04-28 19:41:37 +08:00
parent a45ba75c37
commit 97a86acae4
24 changed files with 2734 additions and 714 deletions
+51
View File
@@ -142,6 +142,57 @@ bool PMtest::Iterate()
Notify(DB_TO_PM_MSCMD, content);
}
}
else if (c == 'e')
{
//发送DB_TO_PM_MISSION消息
std::cout << "发送uExternComm_setDeviceSwitch_cmd消息" << std::endl;
string filename = "/home/zjk/project/H100/H100PowerManger/data/testmsg/uExternComm_setDeviceSwitch_cmd.json";
string content;
if(readJsonFromFile(filename, content)) {
Notify("uExternComm_setDeviceSwitch_cmd", content);
}
}
else if (c == 'q')
{
//发送DB_TO_PM_MISSION消息
std::cout << "发送uExternComm_setOpCondition_cmd消息" << std::endl;
string filename = "/home/zjk/project/H100/H100PowerManger/data/testmsg/uExternComm_setOpCondition_cmd.json";
string content;
if(readJsonFromFile(filename, content)) {
Notify("uExternComm_setOpCondition_cmd", content);
}
}
else if (c == 'w')
{
//发送DB_TO_PM_MISSION消息
std::cout << "发送uExternComm_setOpMode_cmd消息" << std::endl;
string filename = "/home/zjk/project/H100/H100PowerManger/data/testmsg/uExternComm_setOpMode_cmd.json";
string content;
if(readJsonFromFile(filename, content)) {
Notify("uExternComm_setOpMode_cmd", content);
}
}
else if (c == 'r')
{
//发送DB_TO_PM_MISSION消息
std::cout << "发送uExternComm_setPowerSystem_cmd消息" << std::endl;
string filename = "/home/zjk/project/H100/H100PowerManger/data/testmsg/uExternComm_setPowerSystem_cmd.json";
string content;
if(readJsonFromFile(filename, content)) {
Notify("uExternComm_setPowerSystem_cmd", content);
}
}
else if (c == 't')
{
//发送DB_TO_PM_MISSION消息
std::cout << "发送uExternComm_setPowerSystem_cmd消息" << std::endl;
string filename = "/home/zjk/project/H100/H100PowerManger/data/testmsg/uPlan_planStop_cmd.json";
string content;
if(readJsonFromFile(filename, content)) {
Notify("uPlan_planStop_cmd", content);
}
}
}
return(true);
}
+7
View File
@@ -30,6 +30,13 @@ using namespace std;
//决策消息
#define DB_TO_PM_DEEPTH "uDevice_depth_st"
#define DB_TO_PM_MISSION "uPlan_taskStart_cmd"
#define DB_TO_PM_TASKSTOP "uPlan_planStop_cmd"
//外部通信消息
#define DB_TO_PM_SETOPCONDITION "uExternComm_setOpCondition_cmd"
#define DB_TO_PM_SETOPMODE "uExternComm_setOpMode_cmd"
#define DB_TO_PM_SETPMSYS "uExternComm_setPowerSystem_cmd"
#define DB_TO_PM_SETDEVSWITCH "uExternComm_setDeviceSwitch_cmd"
class PMtest : public CMOOSApp
{
+1
View File
@@ -41,6 +41,7 @@ TARGET_LINK_LIBRARIES(pPowerManger
pthread
jsoncpp
${SYSTEM_LIBS}
dl
# SQLiteDB
# sqlite3
)
File diff suppressed because it is too large Load Diff
+50 -22
View File
@@ -9,6 +9,7 @@
#include <cxxabi.h> // 新增头文件,用于demangle功能
#include "pmSysvariable.h"
#include "driver.h"
#include "PowerManger.h"
// 前向声明
class PowerManger;
@@ -21,13 +22,17 @@ enum class PowerSystemState {
//==================状态切换事件=============================
struct InitEvent : tinyfsm::Event { };
struct StandbyEvent : tinyfsm::Event { };
struct FaultEvent : tinyfsm::Event {
unsigned int faultCode;
FaultEvent(unsigned int code) : faultCode(code) {}
};
struct TaskStopEvent : tinyfsm::Event { };
//==================状态流程事件============================
struct MasterCommandEvent : tinyfsm::Event {};
struct TaskStart : tinyfsm::Event { };
struct TaskStartEvent : tinyfsm::Event {
int type;
bool enableBowRudder;
bool enableBuoyancyAdjustment;
TaskStartEvent() : type(0), enableBowRudder(false), enableBuoyancyAdjustment(false) {};
TaskStartEvent(int type, bool bowRudder, bool buoyancyAdjustment) : type(type), enableBowRudder(bowRudder), enableBuoyancyAdjustment(buoyancyAdjustment) {};
};
struct DeviceCmd : tinyfsm::Event { };
struct DevCmdExt : tinyfsm::Event {
int id;
@@ -35,7 +40,24 @@ struct DevCmdExt : tinyfsm::Event {
DevCmdExt() : id(0), cmd(0) {};
DevCmdExt(int id, int cmd) : id(id), cmd(cmd) {};
};
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) {};
FaultEvent(unsigned int subDisSysFaultCode,
unsigned int disSysFaultCode,
unsigned int powerFaultCode,
unsigned int fcsFaultCode,
unsigned int ccsFaultCode)
: subDisSysFaultCode(subDisSysFaultCode),
disSysFaultCode(disSysFaultCode),
powerFaultCode(powerFaultCode),
fcsFaultCode(fcsFaultCode),
ccsFaultCode(ccsFaultCode) {};
};
class PowerManagerFsm : public tinyfsm::Fsm<PowerManagerFsm> {
protected:
@@ -46,21 +68,31 @@ public:
static void init(PowerManger* powerManager) {
pm = powerManager;
}
// 响应事件默认实现
virtual void react(tinyfsm::Event const &) { std::cout << "[ Reseve Envt ] " << "No Idear" << std::endl; }
virtual void react(InitEvent const &) {};
virtual void react(StandbyEvent const &) { };
virtual void react(FaultEvent const &) { };
virtual void react(MasterCommandEvent const &) { LOG_F(INFO, "MasterCommandEvent");};
virtual void react(TaskStart const &) { LOG_F(INFO, "TaskStart"); };
virtual void react(DeviceCmd const &) { LOG_F(INFO, "DeviceCmd"); };
virtual void react(DevCmdExt const &e);
virtual void react(TaskStartEvent const &e);
virtual void react(FaultEvent const &e);
virtual void react(TaskStopEvent const &e);
//操作函数
void handelPowerCmd();
void handleModCmd();
void handleWorkCmd();
void handleDeviceCmd();
//故障处理
void basicNavigationFault(FaultEvent const &e);
void extendedNavigationFault(FaultEvent const &e);
void obstacleAvoidanceFault(FaultEvent const &e);
void buoyancyControlFault(FaultEvent const &e);
void communicationSystemFault(FaultEvent const &e);
void payloadSystemFault(FaultEvent const &e);
void emergencySystemFault(FaultEvent const &e);
void sensorSystemFault(FaultEvent const &e);
// 状态机生命周期方法
virtual void entry() {
@@ -110,8 +142,6 @@ public:
void entry() override;
void react(StandbyEvent const &) override;
void react(MasterCommandEvent const &) override;
void react(TaskStart const &) override;
// void react(DeviceCmd const &) override;
private:
void handlePowerOn();
};
@@ -121,8 +151,6 @@ class ShoreBasedReady : public PowerManagerFsm {
public:
void entry() override;
void react(MasterCommandEvent const &) override;
void react(TaskStart const &) override;
// void react(DeviceCmd const &) override;
private:
// void handlePowerCommands();
// void handlePowerOn();
@@ -133,7 +161,7 @@ class WaterBasedReady : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
// void handlePowerOn();
@@ -144,7 +172,7 @@ class CruiseMode : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
};
@@ -155,7 +183,7 @@ class HighSpeedMode : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
};
@@ -165,7 +193,7 @@ class FloatDown : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
};
@@ -175,7 +203,7 @@ class FloatAdjust : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
};
@@ -185,7 +213,7 @@ class UnderwaterSurvey : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
@@ -196,7 +224,7 @@ class SurfaceSurvey : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
@@ -207,7 +235,7 @@ class DJMode : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
@@ -218,7 +246,7 @@ class RemoteControl : public PowerManagerFsm {
void entry() override;
void react(MasterCommandEvent const &) override;
// void react(DeviceCmd const &) override;
void react(TaskStart const &) override;
// void react(TaskStart const &) override;
private:
// void handlePowerCommands();
};
+21 -10
View File
@@ -29,7 +29,7 @@ PowerManger::PowerManger()
workCondition = 0;
currentMod = 0;
powerState = 0;
falutLevel = 0;
faultLevel = 0;
soc = 0;
sustainableTime = 0;
m_faultNum = 0;
@@ -125,6 +125,7 @@ bool PowerManger::Iterate()
AppCastingMOOSApp::Iterate();
// 打印当前状态
// cout << " Current State : " << (int)PowerManagerFsm::current_state_ptr->getCurrentState();
faultLevel = getFaultLevel();
if (m_ticker++ % 5 == 0)
{
m_CcuColCmd.heartbeat++;
@@ -196,6 +197,11 @@ void PowerManger::registerVariables()
Register(DB_TO_PM_SUBDISSTATE, 0);
Register(DB_TO_PM_MISSION,0);
Register(DB_TO_PM_DEEPTH,0);
Register(DB_TO_PM_SETOPCONDITION,0);
Register(DB_TO_PM_SETOPMODE,0);
Register(DB_TO_PM_SETPMSYS,0);
Register(DB_TO_PM_SETDEVSWITCH,0);
Register(DB_TO_PM_TASKSTOP,0);
}
@@ -277,14 +283,6 @@ void PowerManger::printState(const std::string& stateName, const std::string& de
}
//==============================系统操作函数====================
bool PowerManger::shutdown()
{
m_CcuColCmd.masterState = 0xFF; //关机
return true;
}
void PowerManger::initControlCmd()
{
//================初始化配电指令=============================
@@ -340,4 +338,17 @@ void PowerManger::initControlCmd()
m_msCmd.workCMD = 99;
//================初始化设备驱动指令========================
}
}
unsigned char PowerManger::getFaultLevel()
{
unsigned char maxLevel = 0;
for (auto code : faultCode) {
// 提取0xabcd中的b位 (右移8位后取低4位)
unsigned char level = (code >> 8) & 0xF;
if (level > maxLevel) {
maxLevel = level;
}
}
return maxLevel;
}
+2 -3
View File
@@ -62,6 +62,7 @@ class PowerManger : public AppCastingMOOSApp
public:
void updateTime(){m_current_time = MOOSTime();}
unsigned char getFaultLevel();
//数据库
// SQLiteDB* m_db;
bool writeDataToDB();
@@ -85,14 +86,13 @@ class PowerManger : public AppCastingMOOSApp
disSysBreakerList m_currentDisBreakerState; //配电断路器状态
DriverTable m_currentDriverState;
DriverTable m_subDisSysState;
int m_depth;
MissionState m_missionState;
//===========================STATE=========================================
unsigned char workCondition;
unsigned char currentMod;
unsigned char powerState;
unsigned char falutLevel;
unsigned char faultLevel;
vector<unsigned int> faultCode;
unsigned int soc;
unsigned int sustainableTime;
@@ -125,7 +125,6 @@ class PowerManger : public AppCastingMOOSApp
//==================================================================================
int checkError();
bool shutdown();
bool sendNotification(const std::string& key, const std::string& value) {
return Notify(key, value);
+43 -10
View File
@@ -27,7 +27,11 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
}
else if(key == DB_TO_PM_MISSION) {
m_pm->m_missionState = getMission(key, strJson);
//TODO:转移到对应工况下
TaskStartEvent event;
event.type = m_pm->m_missionState.type;
event.enableBowRudder = m_pm->m_missionState.enableBowRudder;
event.enableBuoyancyAdjustment = m_pm->m_missionState.enableBuoyancyAdjustment;
PowerManagerFsm::dispatch(event);
return true;
} else if(key == DB_TO_PM_SETOPCONDITION) {
m_pm->m_msCmd.workCMD = getSetOpCondition(key, strJson);
@@ -58,6 +62,16 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
}
LOG_F(INFO, "set dev switch success");
return true;
} else if(key == DB_TO_PM_TASKSTOP) {
bool stop = getTaskStop(key, strJson);
if (stop) {
LOG_F(INFO, "task stop success");
return true;
}
else {
LOG_F(WARNING, "task stop error:%s", strJson.c_str());
return false;
}
}
LOG_F(WARNING, "Unknown key: %s", key.c_str());
return false;
@@ -178,8 +192,8 @@ int UpperCommManager::getSetOpCondition(const std::string& key, const std::strin
// 检查并读取操作条件
if (root.isMember("state_uint8") && root["state_uint8"].isUInt()) {
return root["opCondition"].asUInt();
LOG_F(INFO, "上位机指令:opCondition: %d", root["opCondition"].asUInt());
return root["state_uint8"].asUInt();
LOG_F(INFO, "上位机指令:opCondition: %d", root["state_uint8"].asUInt());
} else {
LOG_F(WARNING, "缺少或类型不匹配: opCondition");
return -1;
@@ -256,9 +270,28 @@ DeviceSwitchCmd UpperCommManager::getSetDevSwitch(const std::string& key, const
LOG_F(WARNING, "缺少或类型不匹配: state_bool");
}
return cmd;
}
const std::string UpperCommManager::getCurrentEquState(DriverTable& driver)
}
bool UpperCommManager::getTaskStop(const std::string& key, const std::string& msg) {
Json::Value root;
Json::CharReaderBuilder builder;
JSONCPP_STRING errs;
// 解析JSON字符串
std::istringstream stream(msg);
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
return false;
}
// 检查op_int32字段
if (root.isMember("op_int32") && root["op_int32"].isInt()) {
return root["op_int32"].asInt() == 1;
}
return false;
}
const std::string UpperCommManager::getCurrentEquState(DriverTable& driver)
{
return m_pm->m_driver.saveDriverTableToJson(&driver);
}
@@ -337,8 +370,8 @@ void UpperCommManager::buildSystemReport() {
suffix = getTypeName(typeid(m_pm->powerState).name());
pms[VAR_TO_STR(powerState)+suffix] = m_pm->powerState;
suffix = getTypeName(typeid(m_pm->falutLevel).name());
pms[VAR_TO_STR(falutLevel)+suffix] = m_pm->falutLevel;
suffix = getTypeName(typeid(m_pm->faultLevel).name());
pms[VAR_TO_STR(faultLevel)+suffix] = m_pm->faultLevel;
Json::Value faultCode_array;
for(auto val : m_pm->faultCode)
@@ -348,10 +381,10 @@ void UpperCommManager::buildSystemReport() {
pms[VAR_TO_STR(faultCode_array)] = faultCode_array;
suffix = getTypeName(typeid(m_pm->soc).name());
pms[VAR_TO_STR(soc)+suffix] = m_pm->soc;
pms["soc_uint16"] = m_pm->soc;
suffix = getTypeName(typeid(m_pm->sustainableTime).name());
pms[VAR_TO_STR(sustainableTime)+suffix] = m_pm->sustainableTime;
pms["sustainableTime_int64"] = m_pm->sustainableTime;
//2.构建燃料电池状态报告
suffix = getTypeName(typeid(m_pm->m_pmCurrentState.ccustate.fcuState).name());
+3 -1
View File
@@ -27,7 +27,8 @@ using namespace std;
//决策消息
#define DB_TO_PM_DEEPTH "uDevice_depth_st"
#define DB_TO_PM_MISSION "uPlan_taskStart_cmd"
#define DB_TO_PM_MISSION "uPlan_taskReport_st"
#define DB_TO_PM_TASKSTOP "uPlan_planStop_cmd"
//外部通信消息
#define DB_TO_PM_SETOPCONDITION "uExternComm_setOpCondition_cmd"
@@ -57,6 +58,7 @@ public:
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);
+236 -238
View File
@@ -93,209 +93,208 @@ void Driver::getSTANDBYTable(DriverTable* driverTable)
void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
{
// 打开所有传感器
driverTable->depth1 = DRIVER_FULL_POWER_ON;
driverTable->depth2 = DRIVER_FULL_POWER_ON;
driverTable->depth3 = DRIVER_FULL_POWER_ON;
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
driverTable->commMast = DRIVER_FULL_POWER_ON;
driverTable->ins = DRIVER_FULL_POWER_ON;
driverTable->ntp = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
driverTable->depth1 = 1;
driverTable->depth2 = 1;
driverTable->depth3 = 1;
driverTable->overDeep1 = 1;
driverTable->overDeep2 = 1;
driverTable->ctd1 = 1;
driverTable->ctd2 = 1;
driverTable->soundVeloc = 1;
driverTable->commMast = 1;
driverTable->ins = 1;
driverTable->ntp = 1;
driverTable->inputWaterSensor1 = 1;
driverTable->inputWaterSensor2 = 1;
driverTable->inputWaterSensor3 = 1;
// 允许启动负载
// 关闭xcz
driverTable->photoSensor = DRIVER_STANDBY;
driverTable->electSensor = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_STANDBY;
driverTable->photoSensor = 0;
driverTable->electSensor = 0;
driverTable->launchControler = 0;
driverTable->sideSonar = 0;
driverTable->buoyage = 0;
// 关闭所有水声设备
driverTable->singleBeamSonar1 = DRIVER_POWER_OFF;
driverTable->singleBeamSonar2 = DRIVER_POWER_OFF;
driverTable->singleBeamSonar3 = DRIVER_POWER_OFF;
driverTable->singleBeamSonar4 = DRIVER_POWER_OFF;
driverTable->singleBeamSonar5 = DRIVER_POWER_OFF;
driverTable->singleBeamSonar6 = DRIVER_POWER_OFF;
driverTable->singleBeamSonar7 = DRIVER_POWER_OFF;
driverTable->singleBeamSonar8 = DRIVER_POWER_OFF;
driverTable->DVL = DRIVER_POWER_OFF;
driverTable->forwardSonar = DRIVER_POWER_OFF;
driverTable->lowFreqSonar = DRIVER_POWER_OFF;
driverTable->USBL = DRIVER_POWER_OFF;
driverTable->singleBeamSonar1 = 0;
driverTable->singleBeamSonar2 = 0;
driverTable->singleBeamSonar3 = 0;
driverTable->singleBeamSonar4 = 0;
driverTable->singleBeamSonar5 = 0;
driverTable->singleBeamSonar6 = 0;
driverTable->singleBeamSonar7 = 0;
driverTable->singleBeamSonar8 = 0;
driverTable->DVL = 0;
driverTable->forwardSonar = 0;
driverTable->lowFreqSonar = 0;
driverTable->USBL = 0;
// 打开必要的执行机构
driverTable->bowCover1 = DRIVER_FULL_POWER_ON;
driverTable->bowCover2 = DRIVER_FULL_POWER_ON;
driverTable->bowCover3 = DRIVER_FULL_POWER_ON;
driverTable->bowCover4 = DRIVER_FULL_POWER_ON;
driverTable->bowCover5 = DRIVER_FULL_POWER_ON;
driverTable->bowCover6 = DRIVER_FULL_POWER_ON;
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->waterInject = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
driverTable->thruster = DRIVER_FULL_POWER_ON;
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
driverTable->bowCover1 = 1;
driverTable->bowCover2 = 1;
driverTable->bowCover3 = 1;
driverTable->bowCover4 = 1;
driverTable->bowCover5 = 1;
driverTable->bowCover6 = 1;
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->waterInject = 1;
driverTable->mastLiftingServo = 1;
driverTable->buoyancyAdjust1 = 1;
driverTable->buoyancyAdjust2 = 1;
driverTable->buoyancyAdjust3 = 1;
driverTable->buoyancyAdjust4 = 1;
driverTable->buoyancyAdjust5 = 1;
driverTable->sternRudderServo1 = 1;
driverTable->sternRudderServo2 = 1;
driverTable->sternRudderServo3 = 1;
driverTable->sternRudderServo4 = 1;
driverTable->thruster = 1;
driverTable->bowThrow = 1;
driverTable->sternThrow = 1;
}
void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
{
// 打开所有传感器
driverTable->depth1 = DRIVER_FULL_POWER_ON;
driverTable->depth2 = DRIVER_FULL_POWER_ON;
driverTable->depth3 = DRIVER_FULL_POWER_ON;
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
driverTable->commMast = DRIVER_FULL_POWER_ON;
driverTable->ins = DRIVER_FULL_POWER_ON;
driverTable->ntp = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
driverTable->depth1 = 1;
driverTable->depth2 = 1;
driverTable->depth3 = 1;
driverTable->overDeep1 = 1;
driverTable->overDeep2 = 1;
driverTable->ctd1 = 1;
driverTable->ctd2 = 1;
driverTable->soundVeloc = 1;
driverTable->commMast = 1;
driverTable->ins = 1;
driverTable->ntp = 1;
driverTable->inputWaterSensor1 = 1;
driverTable->inputWaterSensor2 = 1;
driverTable->inputWaterSensor3 = 1;
// 允许启动负载
driverTable->photoSensor = DRIVER_STANDBY;
driverTable->electSensor = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_STANDBY;
driverTable->buoyage = DRIVER_STANDBY;
driverTable->photoSensor = 0;
driverTable->electSensor = 0;
driverTable->launchControler = 0;
driverTable->sideSonar = 0;
driverTable->buoyage = 0;
// 所有水声设备待机
// 打开DVL
driverTable->singleBeamSonar1 = DRIVER_STANDBY;
driverTable->singleBeamSonar2 = DRIVER_STANDBY;
driverTable->singleBeamSonar3 = DRIVER_STANDBY;
driverTable->singleBeamSonar4 = DRIVER_STANDBY;
driverTable->singleBeamSonar5 = DRIVER_STANDBY;
driverTable->singleBeamSonar6 = DRIVER_STANDBY;
driverTable->singleBeamSonar7 = DRIVER_STANDBY;
driverTable->singleBeamSonar8 = DRIVER_STANDBY;
driverTable->DVL = DRIVER_FULL_POWER_ON;
driverTable->forwardSonar = DRIVER_STANDBY;
driverTable->lowFreqSonar = DRIVER_STANDBY;
driverTable->USBL = DRIVER_STANDBY;
driverTable->singleBeamSonar1 = 0;
driverTable->singleBeamSonar2 = 0;
driverTable->singleBeamSonar3 = 0;
driverTable->singleBeamSonar4 = 0;
driverTable->singleBeamSonar5 = 0;
driverTable->singleBeamSonar6 = 0;
driverTable->singleBeamSonar7 = 0;
driverTable->singleBeamSonar8 = 0;
driverTable->DVL = 0;
driverTable->forwardSonar = 0;
driverTable->lowFreqSonar = 0;
driverTable->USBL = 0;
// 打开必要的执行机构
driverTable->bowCover1 = DRIVER_FULL_POWER_ON;
driverTable->bowCover2 = DRIVER_FULL_POWER_ON;
driverTable->bowCover3 = DRIVER_FULL_POWER_ON;
driverTable->bowCover4 = DRIVER_FULL_POWER_ON;
driverTable->bowCover5 = DRIVER_FULL_POWER_ON;
driverTable->bowCover6 = DRIVER_FULL_POWER_ON;
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->waterInject = DRIVER_FULL_POWER_ON;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
driverTable->thruster = DRIVER_FULL_POWER_ON;
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
driverTable->bowCover1 = 1;
driverTable->bowCover2 = 1;
driverTable->bowCover3 = 1;
driverTable->bowCover4 = 1;
driverTable->bowCover5 = 1;
driverTable->bowCover6 = 1;
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->waterInject = 1;
driverTable->mastLiftingServo = 1;
driverTable->buoyancyAdjust1 = 1;
driverTable->buoyancyAdjust2 = 1;
driverTable->buoyancyAdjust3 = 1;
driverTable->buoyancyAdjust4 = 1;
driverTable->buoyancyAdjust5 = 1;
driverTable->sternRudderServo1 = 1;
driverTable->sternRudderServo2 = 1;
driverTable->sternRudderServo3 = 1;
driverTable->sternRudderServo4 = 1;
driverTable->thruster = 1;
driverTable->bowThrow = 1;
driverTable->sternThrow = 1;
}
void Driver::getCRUISE_MODEable(DriverTable* driverTable)
{
// 打开所有传感器
driverTable->depth1 = DRIVER_FULL_POWER_ON;
driverTable->depth2 = DRIVER_FULL_POWER_ON;
driverTable->depth3 = DRIVER_FULL_POWER_ON;
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
driverTable->commMast = DRIVER_FULL_POWER_ON;
driverTable->ins = DRIVER_FULL_POWER_ON;
driverTable->ntp = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
driverTable->depth1 = 1;
driverTable->depth2 = 1;
driverTable->depth3 = 1;
driverTable->overDeep1 = 1;
driverTable->overDeep2 = 1;
driverTable->ctd1 = 1;
driverTable->ctd2 = 1;
driverTable->soundVeloc = 1;
driverTable->commMast = 1;
driverTable->ins = 1;
driverTable->ntp = 1;
driverTable->inputWaterSensor1 = 1;
driverTable->inputWaterSensor2 = 1;
driverTable->inputWaterSensor3 = 1;
// 所有负载设备关机
driverTable->photoSensor = DRIVER_POWER_OFF;
driverTable->electSensor = DRIVER_POWER_OFF;
driverTable->launchControler = DRIVER_POWER_OFF;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
driverTable->photoSensor = 0;
driverTable->electSensor = 0;
driverTable->launchControler = 0;
driverTable->sideSonar = 0;
driverTable->buoyage = 0;
// 打开必要的执行机构
// 关闭非必要的执行机构
driverTable->bowCover1 = DRIVER_POWER_OFF;
driverTable->bowCover2 = DRIVER_POWER_OFF;
driverTable->bowCover3 = DRIVER_POWER_OFF;
driverTable->bowCover4 = DRIVER_POWER_OFF;
driverTable->bowCover5 = DRIVER_POWER_OFF;
driverTable->bowCover6 = DRIVER_POWER_OFF;
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->waterInject = DRIVER_POWER_OFF;
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
driverTable->thruster = DRIVER_FULL_POWER_ON;
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
driverTable->bowCover1 = 0;
driverTable->bowCover2 = 0;
driverTable->bowCover3 = 0;
driverTable->bowCover4 = 0;
driverTable->bowCover5 = 0;
driverTable->bowCover6 = 0;
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->waterInject = 0;
driverTable->mastLiftingServo = 1;
driverTable->buoyancyAdjust1 = 1;
driverTable->buoyancyAdjust2 = 1;
driverTable->buoyancyAdjust3 = 1;
driverTable->buoyancyAdjust4 = 1;
driverTable->buoyancyAdjust5 = 1;
driverTable->sternRudderServo1 = 1;
driverTable->sternRudderServo2 = 1;
driverTable->sternRudderServo3 = 1;
driverTable->sternRudderServo4 = 1;
driverTable->thruster = 1;
driverTable->bowThrow = 1;
driverTable->sternThrow = 1;
}
@@ -668,70 +667,69 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
Json::Value root;
// 添加所有成员到json
root["depth1"] = driverTable->depth1;
root["depth2"] = driverTable->depth2;
root["depth3"] = driverTable->depth3;
root["overDeep1"] = driverTable->overDeep1;
root["overDeep2"] = driverTable->overDeep2;
root["ctd1"] = driverTable->ctd1;
root["ctd2"] = driverTable->ctd2;
root["soundVeloc"] = driverTable->soundVeloc;
root["commMast"] = driverTable->commMast;
root["ins"] = driverTable->ins;
root["ntp"] = driverTable->ntp;
root["inputWaterSensor1"] = driverTable->inputWaterSensor1;
root["inputWaterSensor2"] = driverTable->inputWaterSensor2;
root["inputWaterSensor3"] = driverTable->inputWaterSensor3;
root["singleBeamSonar1"] = driverTable->singleBeamSonar1;
root["singleBeamSonar2"] = driverTable->singleBeamSonar2;
root["singleBeamSonar3"] = driverTable->singleBeamSonar3;
root["singleBeamSonar4"] = driverTable->singleBeamSonar4;
root["singleBeamSonar5"] = driverTable->singleBeamSonar5;
root["singleBeamSonar6"] = driverTable->singleBeamSonar6;
root["singleBeamSonar7"] = driverTable->singleBeamSonar7;
root["singleBeamSonar8"] = driverTable->singleBeamSonar8;
root["forwardSonar"] = driverTable->forwardSonar;
root["DVL"] = driverTable->DVL;
root["lowFreqSonar"] = driverTable->lowFreqSonar;
root["USBL"] = driverTable->USBL;
root["bowCover1"] = driverTable->bowCover1;
root["bowCover2"] = driverTable->bowCover2;
root["bowCover3"] = driverTable->bowCover3;
root["bowCover4"] = driverTable->bowCover4;
root["bowCover5"] = driverTable->bowCover5;
root["bowCover6"] = driverTable->bowCover6;
root["bowRudderDeploy"] = driverTable->bowRudderDeploy;
root["bowRudderServo1"] = driverTable->bowRudderServo1;
root["bowRudderServo2"] = driverTable->bowRudderServo2;
root["bowWaterlnet1"] = driverTable->bowWaterlnet1;
root["bowWaterlnet2"] = driverTable->bowWaterlnet2;
root["bowWaterlnet3"] = driverTable->bowWaterlnet3;
root["bowWaterlnet4"] = driverTable->bowWaterlnet4;
root["bowWaterlnet5"] = driverTable->bowWaterlnet5;
root["bowWaterlnet6"] = driverTable->bowWaterlnet6;
root["bowWaterlnet7"] = driverTable->bowWaterlnet7;
root["bowWaterlnet8"] = driverTable->bowWaterlnet8;
root["waterInject"] = driverTable->waterInject;
root["mastLiftingServo"] = driverTable->mastLiftingServo;
root["buoyancyAdjust1"] = driverTable->buoyancyAdjust1;
root["buoyancyAdjust2"] = driverTable->buoyancyAdjust2;
root["buoyancyAdjust3"] = driverTable->buoyancyAdjust3;
root["buoyancyAdjust4"] = driverTable->buoyancyAdjust4;
root["buoyancyAdjust5"] = driverTable->buoyancyAdjust5;
root["sternRudderServo1"] = driverTable->sternRudderServo1;
root["sternRudderServo2"] = driverTable->sternRudderServo2;
root["sternRudderServo3"] = driverTable->sternRudderServo3;
root["sternRudderServo4"] = driverTable->sternRudderServo4;
root["thruster"] = driverTable->thruster;
root["bowThrow"] = driverTable->bowThrow;
root["sternThrow"] = driverTable->sternThrow;
root["photoSensor"] = driverTable->photoSensor;
root["electSensor"] = driverTable->electSensor;
root["launchControler"] = driverTable->launchControler;
root["sideSonar"] = driverTable->sideSonar;
root["buoyage"] = driverTable->buoyage;
root["depth1_uni8"] = driverTable->depth1;
root["depth2_uni8"] = driverTable->depth2;
root["depth3_uni8"] = driverTable->depth3;
root["overDeep1_uni8"] = driverTable->overDeep1;
root["overDeep2_uni8"] = driverTable->overDeep2;
root["ctd1_uni8"] = driverTable->ctd1;
root["ctd2_uni8"] = driverTable->ctd2;
root["soundVeloc_uni8"] = driverTable->soundVeloc;
root["commMast_uni8"] = driverTable->commMast;
root["ins_uni8"] = driverTable->ins;
root["ntp_uni8"] = driverTable->ntp;
root["inputWaterSensor1_uni8"] = driverTable->inputWaterSensor1;
root["inputWaterSensor2_uni8"] = driverTable->inputWaterSensor2;
root["inputWaterSensor3_uni8"] = driverTable->inputWaterSensor3;
root["singleBeamSonar1_uni8"] = driverTable->singleBeamSonar1;
root["singleBeamSonar2_uni8"] = driverTable->singleBeamSonar2;
root["singleBeamSonar3_uni8"] = driverTable->singleBeamSonar3;
root["singleBeamSonar4_uni8"] = driverTable->singleBeamSonar4;
root["singleBeamSonar5_uni8"] = driverTable->singleBeamSonar5;
root["singleBeamSonar6_uni8"] = driverTable->singleBeamSonar6;
root["singleBeamSonar7_uni8"] = driverTable->singleBeamSonar7;
root["singleBeamSonar8_uni8"] = driverTable->singleBeamSonar8;
root["forwardSonar_uni8"] = driverTable->forwardSonar;
root["DVL_uni8"] = driverTable->DVL;
root["lowFreqSonar_uni8"] = driverTable->lowFreqSonar;
root["USBL_uni8"] = driverTable->USBL;
root["bowCover1_uni8"] = driverTable->bowCover1;
root["bowCover2_uni8"] = driverTable->bowCover2;
root["bowCover3_uni8"] = driverTable->bowCover3;
root["bowCover4_uni8"] = driverTable->bowCover4;
root["bowCover5_uni8"] = driverTable->bowCover5;
root["bowCover6_uni8"] = driverTable->bowCover6;
root["bowRudderDeploy_uni8"] = driverTable->bowRudderDeploy;
root["bowRudderServo1_uni8"] = driverTable->bowRudderServo1;
root["bowRudderServo2_uni8"] = driverTable->bowRudderServo2;
root["bowWaterlnet1_uni8"] = driverTable->bowWaterlnet1;
root["bowWaterlnet2_uni8"] = driverTable->bowWaterlnet2;
root["bowWaterlnet3_uni8"] = driverTable->bowWaterlnet3;
root["bowWaterlnet4_uni8"] = driverTable->bowWaterlnet4;
root["bowWaterlnet5_uni8"] = driverTable->bowWaterlnet5;
root["bowWaterlnet6_uni8"] = driverTable->bowWaterlnet6;
root["bowWaterlnet7_uni8"] = driverTable->bowWaterlnet7;
root["bowWaterlnet8_uni8"] = driverTable->bowWaterlnet8;
root["waterInject_uni8"] = driverTable->waterInject;
root["mastLiftingServo_uni8"] = driverTable->mastLiftingServo;
root["buoyancyAdjust1_uni8"] = driverTable->buoyancyAdjust1;
root["buoyancyAdjust2_uni8"] = driverTable->buoyancyAdjust2;
root["buoyancyAdjust3_uni8"] = driverTable->buoyancyAdjust3;
root["buoyancyAdjust4_uni8"] = driverTable->buoyancyAdjust4;
root["buoyancyAdjust5_uni8"] = driverTable->buoyancyAdjust5;
root["sternRudderServo1_uni8"] = driverTable->sternRudderServo1;
root["sternRudderServo2_uni8"] = driverTable->sternRudderServo2;
root["sternRudderServo3_uni8"] = driverTable->sternRudderServo3;
root["sternRudderServo4_uni8"] = driverTable->sternRudderServo4;
root["thruster_uni8"] = driverTable->thruster;
root["bowThrow_uni8"] = driverTable->bowThrow;
root["sternThrow_uni8"] = driverTable->sternThrow;
root["photoSensor_uni8"] = driverTable->photoSensor;
root["electSensor_uni8"] = driverTable->electSensor;
root["launchControler_uni8"] = driverTable->launchControler;
root["sideSonar_uni8"] = driverTable->sideSonar;
root["buoyage_uni8"] = driverTable->buoyage;
return root.toStyledString();
}
std::string Driver::getDriverTableJson()
+53
View File
@@ -423,6 +423,7 @@ namespace PMMode {
//工况定义
namespace WorkCondition {
enum Type : unsigned char {
CHANING = 0, // 工况切换中
STANDBY = 1, // 待机工况
SHORE_BASED_READY = 2, // 岸基备航
WATER_BASED_READY = 3, // 水中备航
@@ -509,5 +510,57 @@ struct DeviceSwitchCmd
int cmd;
};
namespace FaultEnable {
enum Type : bool {
BasicNavigationFault_1 = true, // 使能故障
BasicNavigationFault_2 = false,
BasicNavigationFault_3 = false,
BasicNavigationFault_4 = false,
BasicNavigationFault_5 = false,
BasicNavigationFault_6 = false,
BasicNavigationFault_7 = false,
BasicNavigationFault_8 = false,
BasicNavigationFault_9 = false,
BasicNavigationFault_10 = false,
ExtendedNavigationFault_1 = false, // 使能故障
ExtendedNavigationFault_2 = false,
ExtendedNavigationFault_3 = false,
ExtendedNavigationFault_4 = false,
ObstacleAvoidanceFault_1 = false, // 使能故障
ObstacleAvoidanceFault_2 = false,
ObstacleAvoidanceFault_3 = false,
BuoyancyControlFault_1 = false, // 使能故障
BuoyancyControlFault_2 = false,
BuoyancyControlFault_3 = false,
BuoyancyControlFault_4 = false,
CommunicationSystemFault_1 = false, // 使能故障
CommunicationSystemFault_2 = false,
CommunicationSystemFault_3 = false,
PayloadSystemFault_1 = false, // 使能故障
PayloadSystemFault_2 = false,
PayloadSystemFault_3 = false,
PayloadSystemFault_4 = false,
PayloadSystemFault_5 = false,
PayloadSystemFault_6 = false,
PayloadSystemFault_7 = false,
EmergencySystemFault_1 = false, // 使能故障
EmergencySystemFault_2 = false,
EmergencySystemFault_3 = false,
EmergencySystemFault_4 = false,
EmergencySystemFault_5 = false,
EmergencySystemFault_6 = false,
SensorSystemFault_1 = false, // 使能故障
SensorSystemFault_2 = false,
SensorSystemFault_3 = false,
};
}
#endif