0606
This commit is contained in:
+18
-17
@@ -36,24 +36,25 @@ BS_:
|
||||
BU_:
|
||||
|
||||
|
||||
BO_ 256 EngineData: 8 Vector__XXX
|
||||
SG_ Temp : 32|8@1- (1,0) [0|0] "" Vector__XXX
|
||||
SG_ Speed : 16|16@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ RPM : 0|16@1+ (1,0) [0|0] "" Vector__XXX
|
||||
BO_ 2432696577 HostToCompositeControl: 8 Vector__XXX
|
||||
SG_ Reserved1 : 56|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ HostStatus : 48|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ HostHeartbeat : 40|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ PowerBatteryStartStop : 32|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ MeterBatteryStartStop : 24|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ MeterBatteryChargeFlag : 16|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ FuelCellCommand : 8|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ FuelCellModeSet : 0|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
|
||||
BO_ 512 VehicleStatus: 4 Vector__XXX
|
||||
SG_ LightStatus : 4|4@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ DoorStatus : 0|4@1+ (1,0) [0|0] "" Vector__XXX
|
||||
|
||||
BO_ 2483135745 CircuitBreakerStatus: 8 Vector__XXX
|
||||
SG_ SternRudder1Breaker : 56|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ SternFT45Breaker : 48|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ BowDistBoxBreaker : 40|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ DCDC5Breaker : 32|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ BatteryMeterBreaker : 24|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ MotorBreaker : 16|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ BatteryBreaker : 8|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ FuelCellBreaker : 0|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
BO_ 2432696833 CompositeControlToHost: 8 Vector__XXX
|
||||
SG_ Reserved2 : 56|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ PowerBatteryTotalEnergy : 48|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ MeterBatteryTotalEnergy : 40|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ PowerBatteryEmergency : 32|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ MeterBatteryEmergency : 24|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ FuelCellFaultLevel : 16|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ FuelCellStatus : 8|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
SG_ FuelCellSystemMode : 0|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ bool LowerCommManager::initUdpComm(){
|
||||
}
|
||||
void LowerCommManager::processPeriodicTasks() {
|
||||
sendCcuCommand(m_pm->m_CcuColCmd);
|
||||
// cout << "send ccu command" << endl;
|
||||
//延时5ms
|
||||
usleep(5000);
|
||||
// sendDisSysCommand(m_pm->m_targetDisBreakerState);
|
||||
@@ -259,6 +260,16 @@ bool LowerCommManager::updatePoweSystemStates(){
|
||||
m_pm->m_currentDisBreakerState.bus4Breaker = *pdis4;
|
||||
delete pdis4;
|
||||
}
|
||||
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.ccustate);
|
||||
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus1State);
|
||||
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus2State);
|
||||
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus3State);
|
||||
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus4State);
|
||||
m_pm->m_systemData->device_common_status.ccu_status.lastUpdateTime = m_pm->m_lowerCommManager->msg_CcuStateFbMsg_Update_time;
|
||||
m_pm->m_systemData->device_common_status.dis_hv_c1.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighVolBusFbMsg_Update_time;
|
||||
m_pm->m_systemData->device_common_status.dis_hv_c2.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighAVolBusFbMsg_Update_time;
|
||||
m_pm->m_systemData->device_common_status.dis_lv_c1.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighBVolBusFbMsg_Update_time;
|
||||
m_pm->m_systemData->device_common_status.dis_lv_c2.lastUpdateTime = m_pm->m_lowerCommManager->msg_disLowBusFbMsg_Update_time;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -151,16 +151,16 @@ bool PowerManger::Iterate()
|
||||
PowerManagerFsm::dispatch(cycleEvent);
|
||||
faultLevel = getFaultLevel();
|
||||
// 更新系统数据
|
||||
m_systemData->updateSystemData(m_pmCurrentState.ccustate);
|
||||
m_systemData->updateSystemData(m_pmCurrentState.bus1State);
|
||||
m_systemData->updateSystemData(m_pmCurrentState.bus2State);
|
||||
m_systemData->updateSystemData(m_pmCurrentState.bus3State);
|
||||
m_systemData->updateSystemData(m_pmCurrentState.bus4State);
|
||||
m_systemData->device_common_status.ccu_status.lastUpdateTime = m_lowerCommManager->msg_CcuStateFbMsg_Update_time;
|
||||
m_systemData->device_common_status.dis_hv_c1.lastUpdateTime = m_lowerCommManager->msg_disHighVolBusFbMsg_Update_time;
|
||||
m_systemData->device_common_status.dis_hv_c2.lastUpdateTime = m_lowerCommManager->msg_disHighAVolBusFbMsg_Update_time;
|
||||
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->updateSystemData(m_pmCurrentState.ccustate);
|
||||
// m_systemData->updateSystemData(m_pmCurrentState.bus1State);
|
||||
// m_systemData->updateSystemData(m_pmCurrentState.bus2State);
|
||||
// m_systemData->updateSystemData(m_pmCurrentState.bus3State);
|
||||
// m_systemData->updateSystemData(m_pmCurrentState.bus4State);
|
||||
// m_systemData->device_common_status.ccu_status.lastUpdateTime = m_lowerCommManager->msg_CcuStateFbMsg_Update_time;
|
||||
// m_systemData->device_common_status.dis_hv_c1.lastUpdateTime = m_lowerCommManager->msg_disHighVolBusFbMsg_Update_time;
|
||||
// m_systemData->device_common_status.dis_hv_c2.lastUpdateTime = m_lowerCommManager->msg_disHighAVolBusFbMsg_Update_time;
|
||||
// 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();
|
||||
// m_CcuColCmd.heartbeat
|
||||
if (m_ticker++ % 5 == 0)
|
||||
@@ -342,7 +342,7 @@ void PowerManger::initControlCmd()
|
||||
m_CcuColCmd.fcmode = 0x00; //默认无效
|
||||
m_CcuColCmd.fcuCmd = 0x00; //无效指令
|
||||
m_CcuColCmd.fcuPowerEfficiency = 15; //默认为15kw
|
||||
m_CcuColCmd.insChargeEnable = 00; //不允许充电
|
||||
m_CcuColCmd.insChargeEnable = 0x30; //不允许充电
|
||||
m_CcuColCmd.insBatCmd = 0x00; //无效指令
|
||||
m_CcuColCmd.powerBatCmd = 0x00; //无效指令
|
||||
m_CcuColCmd.powerBatEfficiency = 230; //默认为最大
|
||||
|
||||
@@ -102,6 +102,7 @@ public:
|
||||
|
||||
//操作函数,操作指定设备
|
||||
//TODO: 增加设备操作函数
|
||||
void operateSubDriver(int id, int cmd, DriverTable* driverTable);
|
||||
// void setDriverTable(DriverTable* driverTable, ,DriverCmd::Type cmd);
|
||||
|
||||
|
||||
|
||||
@@ -38,12 +38,48 @@ bool PowerManagerFsm::handPowerProtection(DevCmdExt const &e){
|
||||
e.id == DeviceId::forwardSonar ||
|
||||
e.id == DeviceId::lowFreqSonar ||
|
||||
e.id == DeviceId::DVL ||
|
||||
e.id == DeviceId::USBL){
|
||||
if(e.cmd == 1){
|
||||
LOG_F(INFO, "水声设备操作上电保护 %d 已关闭", e.id);
|
||||
return false;
|
||||
e.id == DeviceId::USBL)
|
||||
{
|
||||
if(e.cmd == 1)
|
||||
{
|
||||
if(pm->m_depth < 10)
|
||||
{
|
||||
LOG_F(INFO, "水下设备操作上电保护 %d ", e.id);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void PowerManagerFsm::handleNoPowerDeviceCmd(int id , int cmd){
|
||||
if(id == DeviceId::depth1 ||
|
||||
id == DeviceId::depth2 ||
|
||||
id == DeviceId::depth3 ||
|
||||
id == DeviceId::overDeep1 ||
|
||||
id == DeviceId::overDeep2 ||
|
||||
id == DeviceId::ctd1 ||
|
||||
id == DeviceId::ctd2 ||
|
||||
id == DeviceId::soundVeloc ||
|
||||
id == DeviceId::waterInject ||
|
||||
id == DeviceId::launchControler ||
|
||||
id == DeviceId::photoSensor ||
|
||||
id == DeviceId::electSensor ||
|
||||
id == DeviceId::commMast ||
|
||||
id == DeviceId::ntp ||
|
||||
id == DeviceId::bowThrow ||
|
||||
id == DeviceId::sternThrow ||
|
||||
id == DeviceId::ins ||
|
||||
id == DeviceId::ntp ||
|
||||
id == DeviceId::inputWaterSensor1 ||
|
||||
id == DeviceId::inputWaterSensor2 ||
|
||||
id == DeviceId::inputWaterSensor3
|
||||
)
|
||||
{
|
||||
LOG_F(INFO, "无动力电设备操作");
|
||||
}
|
||||
}
|
||||
|
||||
void PowerManagerFsm::react(DeviceCmd const &){
|
||||
@@ -237,13 +273,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
MOOSPause(10);
|
||||
pm->m_subDisSysCmd.bowCover1 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover1 = 1;
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
MOOSPause(1);
|
||||
pm->m_subDisSysCmd.bowCover1 = 1;
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -252,6 +292,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -260,6 +301,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -276,13 +318,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover2 = 0;
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
MOOSPause(1);
|
||||
pm->m_subDisSysCmd.bowCover2 = 0;
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover2 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -299,6 +345,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -316,11 +363,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover3 = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover3 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -329,6 +380,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -337,6 +389,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -354,11 +407,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover4 = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover4 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -367,6 +424,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -375,6 +433,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -392,11 +451,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover5 = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover5 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -405,6 +468,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -413,6 +477,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -430,11 +495,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover6 = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowCover6 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -443,6 +512,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -451,6 +521,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -468,11 +539,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowRudderDeploy = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowRudderDeploy = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -481,6 +556,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -489,6 +565,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -506,11 +583,16 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowRudderServo1 = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowRudderServo1 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -519,6 +601,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -527,6 +610,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -544,11 +628,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowRudderServo2 = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowRudderServo2 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -557,6 +645,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -565,6 +654,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -745,11 +835,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterInet1 = 0;
|
||||
//TODO :动力电断电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterInet1 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -758,6 +852,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -766,6 +861,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -781,12 +877,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
MOOSPause(1);
|
||||
pm->m_subDisSysCmd.bowWaterInet2 = 0;
|
||||
//TODO :动力电断电
|
||||
|
||||
}
|
||||
else if (e.cmd == 1)
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterInet2 = 1;
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
//TODO :动力电上电
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
@@ -796,6 +897,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -804,6 +906,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -819,6 +922,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
MOOSPause(1);
|
||||
pm->m_subDisSysCmd.bowWaterInet3 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
@@ -826,6 +931,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterInet3 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -834,6 +941,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -842,6 +950,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -857,6 +966,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
#endif
|
||||
if (e.cmd == 0)
|
||||
{
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
MOOSPause(1);
|
||||
pm->m_subDisSysCmd.bowWaterInet4 = 0;
|
||||
//TODO :动力电断电
|
||||
}
|
||||
@@ -864,6 +975,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
{
|
||||
pm->m_subDisSysCmd.bowWaterInet4 = 1;
|
||||
//TODO :动力电上电
|
||||
MOOSPause(1);
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 2)
|
||||
{
|
||||
@@ -872,6 +985,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 3)
|
||||
{
|
||||
//TODO :动力电上电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||
}
|
||||
else if (e.cmd == 4)
|
||||
{
|
||||
@@ -880,6 +994,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
else if (e.cmd == 5)
|
||||
{
|
||||
//TODO :动力电断电
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2030,40 +2145,112 @@ void PowerManagerFsm::handelPowerCmd(){
|
||||
switch (pm->m_msCmd.powerCMD)
|
||||
{
|
||||
case 0:
|
||||
LOG_F(INFO, "收到上位机控制指令:关机");
|
||||
LOG_F(INFO, "收到上位机控制指令:关机");
|
||||
//1. 关闭动力电池
|
||||
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Stop;
|
||||
MOOSPause(3);
|
||||
while (!(pm->m_systemData->dyn_pos_relay_status == 0x02 && pm->m_systemData->dyn_neg_relay_status == 0x02))
|
||||
{
|
||||
LOG_F(INFO,"动力锂电池下电中...");
|
||||
MOOSPause(3);
|
||||
}
|
||||
LOG_F(INFO, "动力锂电池已下电");
|
||||
//2. 断掉所有动力电断路器
|
||||
//2.1 断开所有艏部高压断路器
|
||||
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HVA_xczCircuit_Breaker(BREAK_OFF);
|
||||
|
||||
//2.2 断开所有艉部高压设备断路器
|
||||
pm->m_lowerCommManager->operate_HV_propulsionMotor_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_sternFt45_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_sternRudder1_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_sternRudder2_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_fbReserved_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_tyzReserved_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_reserved_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_dcDc5_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_HV_coolingSystem_Breaker(BREAK_OFF);
|
||||
|
||||
//2.3 断开仪表预留断路器
|
||||
pm->m_lowerCommManager->operate_LV_reservedCircuit1_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_LV_reservedCircuit2_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_LVA_reservedCircuit1_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_LVA_reservedCircuit2_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_LVA_bowPZDeviceCircuit_Breaker(BREAK_OFF);
|
||||
|
||||
//2.4 断开应急电池断路器
|
||||
pm->m_lowerCommManager->operate_LV_mergencyLithiumBatteryGroup2Circuit_Breaker(BREAK_OFF);
|
||||
pm->m_lowerCommManager->operate_LVA_mergencyLithiumBatteryGroup1Circuit_Breaker(BREAK_OFF);
|
||||
|
||||
//3. 次级配电系统恢复待机
|
||||
pm->m_driver.getSTANDBYTable(&pm->m_subDisSysCmd);
|
||||
MOOSPause(30);
|
||||
//4. 执行锂电池关机指令
|
||||
pm->m_CcuColCmd.insBatCmd = BatteryCommand::Stop;
|
||||
break;
|
||||
case 1:
|
||||
LOG_F(INFO, "收到上位机控制指令:动力电上电");
|
||||
//闭合动力电断路器
|
||||
if(pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(BREAK_ON))
|
||||
LOG_F(INFO,"动力锂电池断路器闭合成功");
|
||||
else
|
||||
LOG_F(INFO,"动力锂电池断路器闭合操作失败");
|
||||
//1. 动力锂电池上电
|
||||
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
||||
//2. 燃料电池上电
|
||||
break;
|
||||
case 2:
|
||||
LOG_F(INFO, "收到上位机控制指令:锂电池启动");
|
||||
LOG_F(INFO, "收到上位机控制指令:锂动力电上电");
|
||||
//1. 闭合动力电断路器
|
||||
pm->m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(BREAK_ON);
|
||||
//2. 动力锂电池上电
|
||||
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
||||
break;
|
||||
case 3:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池");
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池上电");
|
||||
//备用
|
||||
break;
|
||||
case 4:
|
||||
LOG_F(INFO, "收到上位机控制指令:锂动力电关闭");
|
||||
LOG_F(INFO, "收到上位机控制指令:锂动力电下电");
|
||||
//1. 动力锂电池下电
|
||||
MOOSPause(3);
|
||||
while (!(pm->m_systemData->dyn_pos_relay_status == 0x02 && pm->m_systemData->dyn_neg_relay_status == 0x02))
|
||||
{
|
||||
LOG_F(INFO,"动力锂电池下电中...");
|
||||
MOOSPause(3);
|
||||
}
|
||||
LOG_F(INFO, "动力锂电池已下电");
|
||||
break;
|
||||
case 5:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池停机");
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池下电");
|
||||
break;
|
||||
case 6:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池预热指令");
|
||||
//备用
|
||||
break;
|
||||
case 7:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池自检指令");
|
||||
//备用
|
||||
break;
|
||||
case 8:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池紧急停机");
|
||||
//备用
|
||||
break;
|
||||
case 9:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池复位指令");
|
||||
//备用
|
||||
break;
|
||||
case 10:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池补给指令");
|
||||
//备用
|
||||
break;
|
||||
case 11:
|
||||
LOG_F(INFO, "收到上位机控制指令:燃料电池停机维护");
|
||||
//备用
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -100,6 +100,16 @@ public:
|
||||
void handleWorkCmd();
|
||||
void handleDeviceCmd();
|
||||
|
||||
void handleNoPowerDeviceCmd(int id , int cmd);
|
||||
void handleBowRudderSystemCmd(int id, int cmd);
|
||||
void handleActuatorCmd(int id, int cmd);
|
||||
void handleSternRudderCmd(int id, int cmd);
|
||||
void handlePropulsionMotorCmd(int id, int cmd);
|
||||
void handleBuoyancyAdjustmentCmd(int id, int cmd);
|
||||
void handleFBSystemCmd(int id, int cmd);
|
||||
void handleSideSonarCmd(int id, int cmd);
|
||||
void handleMastFoldingSystemCmd(int id, int cmd);
|
||||
|
||||
bool handPowerProtection(DevCmdExt const &e);
|
||||
//故障处理
|
||||
void basicNavigationFault(FaultEvent const &e);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "PowerManagerFsm.hpp"
|
||||
|
||||
// RemoteControl实现
|
||||
void RemoteControl::react(MasterCommandEvent const &) {
|
||||
void RemoteControl::react(MasterCommandEvent const &){
|
||||
PowerManagerFsm::handelPowerCmd();
|
||||
PowerManagerFsm::handleModCmd();
|
||||
PowerManagerFsm::handleWorkCmd();
|
||||
|
||||
@@ -12,7 +12,7 @@ void ShoreBasedReady::react(MasterCommandEvent const &) {
|
||||
void ShoreBasedReady::entry() {
|
||||
PowerManagerFsm::entry();
|
||||
pm->m_driver.getSHORE_BASED_READYable(&pm->m_subDisSysCmd);
|
||||
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
||||
// pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
||||
pm->workCondition = WorkCondition::CHANING;
|
||||
//依次接入执行机构动力电设备
|
||||
//TODO:接入执行机构动力电设备
|
||||
|
||||
@@ -5,7 +5,7 @@ void WaterBasedReady::entry() {
|
||||
PowerManagerFsm::entry();
|
||||
pm->workCondition = WorkCondition::CHANING;
|
||||
pm->m_driver.getWATER_BASED_READYable(&pm->m_subDisSysCmd);
|
||||
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
||||
// pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
||||
//依次接入执行机构动力电设备
|
||||
//TODO:接入执行机构动力电设备
|
||||
pm->workCondition = WorkCondition::WATER_BASED_READY;
|
||||
|
||||
@@ -338,6 +338,15 @@ body {
|
||||
<input type="hidden" name="instrumentBattery" value="00H">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">仪表锂电池允许充电</label>
|
||||
<div class="button-group">
|
||||
<button type="button" class="button button-secondary" data-command="instrumentBatteryCharge" data-value="0">允许</button>
|
||||
<button type="button" class="button button-active" data-command="instrumentBatteryCharge" data-value="48">禁止</button>
|
||||
</div>
|
||||
<input type="hidden" name="instrumentBatteryCharge" value="1">
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">动力锂电池启停指令</label>
|
||||
<div class="button-group">
|
||||
|
||||
@@ -249,11 +249,11 @@ const std::string DATA_HTML = R"(
|
||||
<span class="data-value" id="dyn-total-energy">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">仪表电池输入功率:</span>
|
||||
<span class="data-label">仪表电池接入功率:</span>
|
||||
<span class="data-value" id="ins-power-input">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">动力电池输入功率:</span>
|
||||
<span class="data-label">动力电池接入功率:</span>
|
||||
<span class="data-value" id="dyn-power-input">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
@@ -264,6 +264,14 @@ const std::string DATA_HTML = R"(
|
||||
<span class="data-label">动力电池最大放电功率:</span>
|
||||
<span class="data-value" id="dyn-max-discharge-power">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">仪表电池充放电状态:</span>
|
||||
<span class="data-value" id="ins-charge-status">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">动力电池充放电状态:</span>
|
||||
<span class="data-value" id="dyn-charge-status">正在加载...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -380,6 +388,22 @@ const std::string DATA_HTML = R"(
|
||||
<span class="data-label">动力紧急状态:</span>
|
||||
<span class="data-value" id="dyn-emergency-status">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">充电等级:</span>
|
||||
<span class="data-value" id="dyn-charge-level">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">仪表电池漏水状态:</span>
|
||||
<span class="data-value" id="water-leak-status-from-insbat">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">动力电池漏水状态:</span>
|
||||
<span class="data-value" id="water-leak-status-from-dynbat">正在加载...</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="data-label">DCDC状态:</span>
|
||||
<span class="data-value" id="dcdc-status-from-insbat">正在加载...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1061,6 +1085,14 @@ function updateSystemData(data) {
|
||||
document.getElementById('dyn-max-discharge-power').textContent =
|
||||
(data.dyn_max_discharge_power).toFixed(2) + ' kW';
|
||||
}
|
||||
if (data.ins_charge_status !== undefined) {
|
||||
document.getElementById('ins-charge-status').textContent =
|
||||
getChargeStatusText(data.ins_charge_status);
|
||||
}
|
||||
if (data.dyn_charge_status !== undefined) {
|
||||
document.getElementById('dyn-charge-status').textContent =
|
||||
getChargeStatusText(data.dyn_charge_status);
|
||||
}
|
||||
|
||||
// 继电器状态
|
||||
if (data.ins_relay_status1 !== undefined) {
|
||||
@@ -1107,6 +1139,18 @@ function updateSystemData(data) {
|
||||
if (data.dyn_emergency_status !== undefined) {
|
||||
document.getElementById('dyn-emergency-status').textContent = getEmergencyStatusText(data.dyn_emergency_status);
|
||||
}
|
||||
if (data.dyn_charge_level !== undefined) {
|
||||
document.getElementById('dyn-charge-level').textContent = getChargeLevelText(data.dyn_charge_level);
|
||||
}
|
||||
if (data.water_leak_status_from_insbat !== undefined) {
|
||||
document.getElementById('water-leak-status-from-insbat').textContent = getWaterLeakStatusText(data.water_leak_status_from_insbat);
|
||||
}
|
||||
if (data.water_leak_status_from_dynbat !== undefined) {
|
||||
document.getElementById('water-leak-status-from-dynbat').textContent = getWaterLeakStatusText(data.water_leak_status_from_dynbat);
|
||||
}
|
||||
if (data.dcdc_status_from_insbat !== undefined) {
|
||||
document.getElementById('dcdc-status-from-insbat').textContent = getDCDCStatusText(data.dcdc_status_from_insbat);
|
||||
}
|
||||
if (data.dyn_alarm_flag1 !== undefined) {
|
||||
document.getElementById('dyn-alarm-flag1').textContent = data.dyn_alarm_flag1;
|
||||
}
|
||||
@@ -1640,6 +1684,16 @@ if (data.power_a_bus_status) {
|
||||
}
|
||||
}
|
||||
|
||||
// 充放电状态文本转换
|
||||
function getChargeStatusText(status) {
|
||||
const statuses = {
|
||||
0: '无效',
|
||||
16: '充电',
|
||||
32: '放电'
|
||||
};
|
||||
return statuses[status] || '未知状态';
|
||||
}
|
||||
|
||||
// 继电器状态文本转换
|
||||
function getRelayStatusText(status) {
|
||||
const statuses = {
|
||||
@@ -1649,6 +1703,26 @@ function getRelayStatusText(status) {
|
||||
return statuses[status] || '无效';
|
||||
}
|
||||
|
||||
// 充电等级文本转换
|
||||
function getChargeLevelText(level) {
|
||||
const levels = {
|
||||
1: '1级(不限)',
|
||||
2: '2级(限功率)',
|
||||
3: '3级(关闭)'
|
||||
};
|
||||
return levels[level] || '未知等级';
|
||||
}
|
||||
|
||||
// 漏水状态文本转换
|
||||
function getWaterLeakStatusText(status) {
|
||||
return status === 0 ? '正常' : '异常漏水';
|
||||
}
|
||||
|
||||
// DCDC状态文本转换
|
||||
function getDCDCStatusText(status) {
|
||||
return status === 0 ? '正常' : '故障';
|
||||
}
|
||||
|
||||
// 紧急状态文本转换
|
||||
function getEmergencyStatusText(status) {
|
||||
const statuses = {
|
||||
|
||||
@@ -116,6 +116,8 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_
|
||||
fuelCellPower = (unsigned short)atoi(tmp);
|
||||
mg_http_get_var(&body, "instrumentBattery", tmp, sizeof(tmp));
|
||||
instrumentBattery = (unsigned char)strtoul(tmp, NULL, 16);
|
||||
mg_http_get_var(&body, "instrumentBatteryCharge", tmp, sizeof(tmp));
|
||||
unsigned char instrumentBatteryCharge = (unsigned char)atoi(tmp);
|
||||
mg_http_get_var(&body, "powerBattery", tmp, sizeof(tmp));
|
||||
powerBattery = (unsigned char)strtoul(tmp, NULL, 16);
|
||||
mg_http_get_var(&body, "powerBatteryPower", tmp, sizeof(tmp));
|
||||
@@ -126,10 +128,10 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_
|
||||
// 记录接收到的配置
|
||||
LOG_F(INFO, "Received battery control config: "
|
||||
"fuelCellMode=%02XH, fuelCellCommand=%02XH, fuelCellPower=%d, "
|
||||
"instrumentBattery=%02XH, powerBattery=%02XH, powerBatteryPower=%d, "
|
||||
"instrumentBattery=%02XH, instrumentBatteryCharge=%d, powerBattery=%02XH, powerBatteryPower=%d, "
|
||||
"hostStatus=%02XH",
|
||||
fuelCellMode, fuelCellCommand, fuelCellPower,
|
||||
instrumentBattery, powerBattery, powerBatteryPower, hostStatus);
|
||||
instrumentBattery, instrumentBatteryCharge, powerBattery, powerBatteryPower, hostStatus);
|
||||
|
||||
m_powerManger->m_CcuColCmd.fcmode = fuelCellMode;
|
||||
m_powerManger->m_CcuColCmd.fcuCmd = fuelCellCommand;
|
||||
@@ -139,6 +141,7 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_
|
||||
m_powerManger->m_CcuColCmd.powerBatCmd = powerBattery;
|
||||
m_powerManger->m_CcuColCmd.powerBatEfficiency = powerBatteryPower;
|
||||
m_powerManger->m_CcuColCmd.masterState = hostStatus;
|
||||
m_powerManger->m_CcuColCmd.insChargeEnable = instrumentBatteryCharge;
|
||||
cout << "m_powerManger->m_CcuColCmd.masterState:" << (int)m_powerManger->m_CcuColCmd.masterState << endl;
|
||||
|
||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
||||
@@ -476,6 +479,12 @@ void HttpServer::pushSystemData() {
|
||||
//紧急状态
|
||||
j["ins_emergency_status"] = Json::Value(m_systemData->ins_emergency_status); // 紧急状态
|
||||
j["dyn_emergency_status"] = Json::Value(m_systemData->dyn_emergency_status); // 紧急状态
|
||||
|
||||
// 电池充电等级和漏水状态
|
||||
j["dyn_charge_level"] = Json::Value(m_systemData->dyn_charge_level); //01H:1级(不限)02H:2级(限功率)03H:3级(关闭)
|
||||
j["water_leak_status_from_insbat"] = Json::Value(m_systemData->water_leak_status_from_insbat ); // 00 正常,01 异常漏水
|
||||
j["water_leak_status_from_dynbat"] = Json::Value((m_systemData->water_leak_status_from_dynbat) ); // 00 正常,01 异常漏水
|
||||
j["dcdc_status_from_insbat"] = Json::Value((m_systemData->dcdc_status_from_insbat ) ); // 00 正常,01 故障
|
||||
|
||||
j["ins_soc_threshold1"] = Json::Value(m_systemData->ins_soc_threshold1); // 仪表电池1 SOC门限
|
||||
j["ins_soc_threshold2"] = Json::Value(m_systemData->ins_soc_threshold2); // 仪表电池2 SOC门限
|
||||
@@ -488,6 +497,11 @@ void HttpServer::pushSystemData() {
|
||||
j["dyn_power_limit1"] = Json::Value(m_systemData->dyn_power_limit1); // 动力电池1功率限制值
|
||||
j["dyn_power_limit2"] = Json::Value(m_systemData->dyn_power_limit2); // 动力电池2功率限制值
|
||||
|
||||
// uint8_t ins_charge_status; // 仪表电池充放电状态:00H-无效,10H-充电,20H-放电
|
||||
// uint8_t dyn_charge_status; // 动力电池充放电状态:00H-无效,10H-充电,20H-放电
|
||||
j["ins_charge_status"] = Json::Value(m_systemData->ins_charge_status);
|
||||
j["dyn_charge_status"] = Json::Value(m_systemData->dyn_charge_status);
|
||||
|
||||
//设备在线状态
|
||||
j["device_online"]["device_online_flag1"] = Json::Value(m_systemData->device_online_flag1);
|
||||
j["device_online"]["device_online_flag2"] = Json::Value(m_systemData->device_online_flag2);
|
||||
@@ -516,6 +530,12 @@ void HttpServer::pushSystemData() {
|
||||
j["comm_state"]["dis_lv_c1"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_lv_c1.lastUpdateTime);
|
||||
j["comm_state"]["dis_lv_c2"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_lv_c2.isTimeout);
|
||||
j["comm_state"]["dis_lv_c2"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_lv_c2.lastUpdateTime);
|
||||
|
||||
// 低压配电状态
|
||||
j["comm_state"]["dis_lv_c1"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_lv_c1.isTimeout);
|
||||
j["comm_state"]["dis_lv_c1"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_lv_c1.lastUpdateTime);
|
||||
j["comm_state"]["dis_lv_c2"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_lv_c2.isTimeout);
|
||||
j["comm_state"]["dis_lv_c2"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_lv_c2.lastUpdateTime);
|
||||
|
||||
//复合管控器心跳计算器
|
||||
j["heartbeat"] = Json::Value(m_systemData->heartbeat);
|
||||
|
||||
@@ -343,7 +343,7 @@ const std::string LOG_PAGE_HTML = R"(
|
||||
每页显示:
|
||||
<select id="pageSize">
|
||||
<option value="100">100</option>
|
||||
<option value="200">200</option>
|
||||
<option value="200" selected>200</option>
|
||||
<option value="500">500</option>
|
||||
<option value="1000">1000</option>
|
||||
</select>
|
||||
@@ -368,7 +368,7 @@ let autoScroll = true;
|
||||
let logContent = document.getElementById('logContent');
|
||||
let currentPage = 1;
|
||||
let totalPages = 1;
|
||||
let pageSize = 100;
|
||||
let pageSize = 200;
|
||||
let allLogs = [];
|
||||
let filteredLogs = [];
|
||||
let searchTimer = null;
|
||||
|
||||
@@ -43,7 +43,7 @@ typedef struct ccuState
|
||||
uint8_t flame_detector1; // 火焰探测器1状态:00H-无效, 01H-报警, 02H-故障
|
||||
uint8_t flame_detector2; // 火焰探测器2状态:00H-无效, 01H-报警, 02H-故障
|
||||
|
||||
uint16_t h2_concentration1; // 舱室H2浓度1,单位:0.01% LEL(爆炸下限)
|
||||
uint16_t h2_concentration1; // 舱室H2浓度1,单位:0.01% LEL
|
||||
uint16_t h2_concentration2; // 舱室H2浓度2,单位:0.01% LEL
|
||||
uint16_t h2_concentration3; // 舱室H2浓度3,单位:0.01% LEL
|
||||
uint16_t o2_concentration1; // 舱室O2浓度1,单位:0.01% LEL
|
||||
@@ -117,8 +117,12 @@ typedef struct ccuState
|
||||
|
||||
uint32_t device_online_flag1; // 设备在线状态标志1,byte0:低压配电板在线标志位 byte1:复合管控主机在线标志位 byte2:复合管控备机在线标志位
|
||||
uint32_t device_online_flag2; // 设备在线状态标志2,byte0:仪表锂电在线标志位 byte1:动力锂电在线标志位 byte2:燃电锂电在线标志位 byte3:高压配电板在线标志位
|
||||
|
||||
uint32_t reserved4; // 保留字段,协议预留
|
||||
|
||||
uint8_t dyn_charge_level; // 动力电池充电状态:01H-1级(不限), 02H-2级(限功率), 03H-3级(关闭)
|
||||
uint8_t dyn_water_leak_status; // 动力漏水状态:0XH-正常, 1XH-异常漏水
|
||||
uint8_t ins_water_leak_dcdc_status; // 仪表漏水状态与DCDC状态:低4位-漏水状态(0XH正常,1XH异常),高4位-DCDC状态(X0H正常,X1H故障)
|
||||
uint8_t reserved4;
|
||||
// uint32_t reserved4; // 保留字段,协议预留
|
||||
uint32_t heartbeat; // 主机心跳计数器或标志值
|
||||
} ccuState;
|
||||
|
||||
@@ -139,7 +143,7 @@ typedef struct {
|
||||
unsigned char fcmode;
|
||||
unsigned char fcuCmd;
|
||||
unsigned char fcuPowerEfficiency;
|
||||
unsigned char insChargeEnable; //0 不允许充电 1 允许充电
|
||||
unsigned char insChargeEnable;
|
||||
unsigned char insBatCmd;
|
||||
unsigned char powerBatCmd;
|
||||
unsigned short powerBatEfficiency;
|
||||
@@ -193,7 +197,7 @@ typedef struct disHighVolBusState
|
||||
// 0x00: 正常状态
|
||||
// Bit0: 通讯故障报警
|
||||
// Bit1: 工作状态 1:启动,0:关闭
|
||||
// Bit2: 冷却泵1故障 冷却泵1故障 : 1故障, 0正常
|
||||
// Bit2: 冷却泵1故障 冷却泵1故障 : 1故障, 0 正常
|
||||
// Bit3: 冷却泵2故障 冷却泵2故障 :1故障,0 正常
|
||||
// Bit4: 冷却水泄露
|
||||
// Bit5:冷却泵1运行状态 :1 运行,0 停止
|
||||
@@ -823,4 +827,6 @@ namespace FaultEnable {
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -627,6 +627,7 @@ bool SQLite::insertData(const ccuColCmd cmd) {
|
||||
std::cerr << "执行插入失败: " << sqlite3_errmsg(m_db) << std::endl;
|
||||
}
|
||||
|
||||
|
||||
sqlite3_finalize(stmt);
|
||||
return success;
|
||||
}
|
||||
|
||||
@@ -143,8 +143,18 @@ public:
|
||||
uint32_t device_online_flag1; // 设备在线状态标志1
|
||||
uint32_t device_online_flag2; // 设备在线状态标志2
|
||||
|
||||
//其他锂电池状态
|
||||
uint8_t dyn_charge_level; // 动力电池充电状态:01H-1级(不限), 02H-2级(限功率), 03H-3级(关闭)
|
||||
uint8_t dyn_water_leak_status; // 动力漏水状态:0XH-正常, 1XH-异常漏水
|
||||
uint8_t ins_water_leak_dcdc_status; // 仪表漏水状态与DCDC状态:低4位-漏水状态(0XH正常,1XH异常),高4位-DCDC状态(X0H正常,X1H故障)
|
||||
uint8_t reserved4;
|
||||
|
||||
unsigned char water_leak_status_from_insbat; // 仪表漏水状态
|
||||
unsigned char water_leak_status_from_dynbat; // 动力漏水状态
|
||||
unsigned char dcdc_status_from_insbat; // 仪表DCDC状态
|
||||
|
||||
//保留字段
|
||||
uint32_t reserved4; // 保留字段
|
||||
// uint32_t reserved4; // 保留字段
|
||||
uint32_t heartbeat; // 主机心跳计数器
|
||||
|
||||
//锂电池故障字段
|
||||
@@ -570,15 +580,22 @@ public:
|
||||
device_online_status.composite_online_state = (data.device_online_flag2 >> 8) & 0xFF; // byte1:复合管控主机在线标志位
|
||||
device_online_status.composite_backup_online_state = (data.device_online_flag2 >> 16) & 0xFF; // byte2:复合管控备机在线标志位
|
||||
|
||||
// std::cout << "device_online_status.ins_online_state: " << (int)device_online_status.ins_online_state << std::endl;
|
||||
// std::cout << "device_online_status.dyn_online_state: " << (int)device_online_status.dyn_online_state << std::endl;
|
||||
// std::cout << "device_online_status.fuel_online_state: " << (int)device_online_status.fuel_online_state << std::endl;
|
||||
// std::cout << "device_online_status.high_voltage_online_state: " << (int)device_online_status.high_voltage_online_state << std::endl;
|
||||
// std::cout << "device_online_status.low_voltage_online_state: " << (int)device_online_status.low_voltage_online_state << std::endl;
|
||||
// std::cout << "device_online_status.composite_online_state: " << (int)device_online_status.composite_online_state << std::endl;
|
||||
// std::cout << "device_online_status.composite_backup_online_state: " << (int)device_online_status.composite_backup_online_state << std::endl;
|
||||
|
||||
// 更新锂电池其他状态
|
||||
dyn_water_leak_status = data.dyn_water_leak_status;
|
||||
ins_water_leak_dcdc_status = data.ins_water_leak_dcdc_status;
|
||||
|
||||
dyn_charge_level = data.dyn_charge_level; //01H:1级(不限)02H:2级(限功率)03H:3级(关闭)
|
||||
water_leak_status_from_insbat = ( data.ins_water_leak_dcdc_status >> 4) & 0x0F; // 00 正常,01 异常漏水
|
||||
water_leak_status_from_dynbat = (data.dyn_water_leak_status >> 4) & 0x0F; // 00 正常,01 异常漏水
|
||||
dcdc_status_from_insbat = (data.ins_water_leak_dcdc_status) & 0x0F; // 00 正常,01 故障
|
||||
|
||||
// std::cout << "dyn_charge_level: " << std::hex << static_cast<int>(dyn_charge_level) << std::endl;
|
||||
// std::cout << "ins_water_leak_dcdc_status: " << std::hex << static_cast<int>(ins_water_leak_dcdc_status) << std::endl;
|
||||
// std::cout << "dcdc_status_from_insbat: " << std::hex << static_cast<int>(dcdc_status_from_insbat) << std::endl;
|
||||
// std::cout << "water_leak_status_from_insbat: " << std::hex << static_cast<int>(water_leak_status_from_insbat) << std::endl;
|
||||
// std::cout << "water_leak_status_from_dynbat: " << std::hex << static_cast<int>(water_leak_status_from_dynbat) << std::endl;
|
||||
|
||||
//心跳计数器
|
||||
heartbeat = data.heartbeat;
|
||||
}
|
||||
|
||||
@@ -12,47 +12,43 @@ def create_sample_dbc():
|
||||
"""创建一个示例DBC文件"""
|
||||
db = Database()
|
||||
|
||||
# 添加消息
|
||||
# 主机->复合管控 (ID:0x11000101)
|
||||
msg1 = Message(
|
||||
name="EngineData",
|
||||
frame_id=0x100,
|
||||
length=8,
|
||||
signals=[
|
||||
Signal(name="RPM", start=0, length=16, is_signed=False),
|
||||
Signal(name="Speed", start=16, length=16, is_signed=False),
|
||||
Signal(name="Temp", start=32, length=8, is_signed=True)
|
||||
]
|
||||
)
|
||||
|
||||
msg2 = Message(
|
||||
name="VehicleStatus",
|
||||
frame_id=0x200,
|
||||
length=4,
|
||||
signals=[
|
||||
Signal(name="DoorStatus", start=0, length=4, is_multiplexer=False),
|
||||
Signal(name="LightStatus", start=4, length=4, is_multiplexer=False)
|
||||
]
|
||||
)
|
||||
|
||||
# 添加断路器状态消息
|
||||
msg3 = Message(
|
||||
name="CircuitBreakerStatus",
|
||||
frame_id=0x1401A501,
|
||||
name="HostToCompositeControl",
|
||||
frame_id=0x11000101,
|
||||
is_extended_frame=True,
|
||||
length=8,
|
||||
signals=[
|
||||
Signal(name="FuelCellBreaker", start=0, length=8, is_signed=False),
|
||||
Signal(name="BatteryBreaker", start=8, length=8, is_signed=False),
|
||||
Signal(name="MotorBreaker", start=16, length=8, is_signed=False),
|
||||
Signal(name="BatteryMeterBreaker", start=24, length=8, is_signed=False),
|
||||
Signal(name="DCDC5Breaker", start=32, length=8, is_signed=False),
|
||||
Signal(name="BowDistBoxBreaker", start=40, length=8, is_signed=False),
|
||||
Signal(name="SternFT45Breaker", start=48, length=8, is_signed=False),
|
||||
Signal(name="SternRudder1Breaker", start=56, length=8, is_signed=False)
|
||||
Signal(name="FuelCellModeSet", start=0, length=8, is_signed=False),
|
||||
Signal(name="FuelCellCommand", start=8, length=8, is_signed=False),
|
||||
Signal(name="MeterBatteryChargeFlag", start=16, length=8, is_signed=False),
|
||||
Signal(name="MeterBatteryStartStop", start=24, length=8, is_signed=False),
|
||||
Signal(name="PowerBatteryStartStop", start=32, length=8, is_signed=False),
|
||||
Signal(name="HostHeartbeat", start=40, length=8, is_signed=False),
|
||||
Signal(name="HostStatus", start=48, length=8, is_signed=False),
|
||||
Signal(name="Reserved1", start=56, length=8, is_signed=False)
|
||||
]
|
||||
)
|
||||
|
||||
db.messages.extend([msg1, msg2, msg3])
|
||||
# 复合管控->主机 (ID:0x11000201)
|
||||
msg2 = Message(
|
||||
name="CompositeControlToHost",
|
||||
frame_id=0x11000201,
|
||||
is_extended_frame=True,
|
||||
length=8,
|
||||
signals=[
|
||||
Signal(name="FuelCellSystemMode", start=0, length=8, is_signed=False),
|
||||
Signal(name="FuelCellStatus", start=8, length=8, is_signed=False),
|
||||
Signal(name="FuelCellFaultLevel", start=16, length=8, is_signed=False),
|
||||
Signal(name="MeterBatteryEmergency", start=24, length=8, is_signed=False),
|
||||
Signal(name="PowerBatteryEmergency", start=32, length=8, is_signed=False),
|
||||
Signal(name="MeterBatteryTotalEnergy", start=40, length=8, is_signed=False),
|
||||
Signal(name="PowerBatteryTotalEnergy", start=48, length=8, is_signed=False),
|
||||
Signal(name="Reserved2", start=56, length=8, is_signed=False)
|
||||
]
|
||||
)
|
||||
|
||||
db.messages.extend([msg1, msg2])
|
||||
return db
|
||||
|
||||
def save_dbc_file(db, filename):
|
||||
|
||||
Reference in New Issue
Block a user