0606
This commit is contained in:
+18
-17
@@ -36,24 +36,25 @@ BS_:
|
|||||||
BU_:
|
BU_:
|
||||||
|
|
||||||
|
|
||||||
BO_ 256 EngineData: 8 Vector__XXX
|
BO_ 2432696577 HostToCompositeControl: 8 Vector__XXX
|
||||||
SG_ Temp : 32|8@1- (1,0) [0|0] "" Vector__XXX
|
SG_ Reserved1 : 56|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||||
SG_ Speed : 16|16@1+ (1,0) [0|0] "" Vector__XXX
|
SG_ HostStatus : 48|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||||
SG_ RPM : 0|16@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
|
BO_ 2432696833 CompositeControlToHost: 8 Vector__XXX
|
||||||
SG_ LightStatus : 4|4@1+ (1,0) [0|0] "" Vector__XXX
|
SG_ Reserved2 : 56|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||||
SG_ DoorStatus : 0|4@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
|
||||||
BO_ 2483135745 CircuitBreakerStatus: 8 Vector__XXX
|
SG_ PowerBatteryEmergency : 32|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||||
SG_ SternRudder1Breaker : 56|8@1+ (1,0) [0|0] "" Vector__XXX
|
SG_ MeterBatteryEmergency : 24|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||||
SG_ SternFT45Breaker : 48|8@1+ (1,0) [0|0] "" Vector__XXX
|
SG_ FuelCellFaultLevel : 16|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||||
SG_ BowDistBoxBreaker : 40|8@1+ (1,0) [0|0] "" Vector__XXX
|
SG_ FuelCellStatus : 8|8@1+ (1,0) [0|0] "" Vector__XXX
|
||||||
SG_ DCDC5Breaker : 32|8@1+ (1,0) [0|0] "" Vector__XXX
|
SG_ FuelCellSystemMode : 0|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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ bool LowerCommManager::initUdpComm(){
|
|||||||
}
|
}
|
||||||
void LowerCommManager::processPeriodicTasks() {
|
void LowerCommManager::processPeriodicTasks() {
|
||||||
sendCcuCommand(m_pm->m_CcuColCmd);
|
sendCcuCommand(m_pm->m_CcuColCmd);
|
||||||
|
// cout << "send ccu command" << endl;
|
||||||
//延时5ms
|
//延时5ms
|
||||||
usleep(5000);
|
usleep(5000);
|
||||||
// sendDisSysCommand(m_pm->m_targetDisBreakerState);
|
// sendDisSysCommand(m_pm->m_targetDisBreakerState);
|
||||||
@@ -259,6 +260,16 @@ bool LowerCommManager::updatePoweSystemStates(){
|
|||||||
m_pm->m_currentDisBreakerState.bus4Breaker = *pdis4;
|
m_pm->m_currentDisBreakerState.bus4Breaker = *pdis4;
|
||||||
delete 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -151,16 +151,16 @@ bool PowerManger::Iterate()
|
|||||||
PowerManagerFsm::dispatch(cycleEvent);
|
PowerManagerFsm::dispatch(cycleEvent);
|
||||||
faultLevel = getFaultLevel();
|
faultLevel = getFaultLevel();
|
||||||
// 更新系统数据
|
// 更新系统数据
|
||||||
m_systemData->updateSystemData(m_pmCurrentState.ccustate);
|
// m_systemData->updateSystemData(m_pmCurrentState.ccustate);
|
||||||
m_systemData->updateSystemData(m_pmCurrentState.bus1State);
|
// m_systemData->updateSystemData(m_pmCurrentState.bus1State);
|
||||||
m_systemData->updateSystemData(m_pmCurrentState.bus2State);
|
// m_systemData->updateSystemData(m_pmCurrentState.bus2State);
|
||||||
m_systemData->updateSystemData(m_pmCurrentState.bus3State);
|
// m_systemData->updateSystemData(m_pmCurrentState.bus3State);
|
||||||
m_systemData->updateSystemData(m_pmCurrentState.bus4State);
|
// 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.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_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_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_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->device_common_status.dis_lv_c2.lastUpdateTime = m_lowerCommManager->msg_disLowBusFbMsg_Update_time;
|
||||||
m_systemData->updateCommonStatus();
|
m_systemData->updateCommonStatus();
|
||||||
// m_CcuColCmd.heartbeat
|
// m_CcuColCmd.heartbeat
|
||||||
if (m_ticker++ % 5 == 0)
|
if (m_ticker++ % 5 == 0)
|
||||||
@@ -342,7 +342,7 @@ void PowerManger::initControlCmd()
|
|||||||
m_CcuColCmd.fcmode = 0x00; //默认无效
|
m_CcuColCmd.fcmode = 0x00; //默认无效
|
||||||
m_CcuColCmd.fcuCmd = 0x00; //无效指令
|
m_CcuColCmd.fcuCmd = 0x00; //无效指令
|
||||||
m_CcuColCmd.fcuPowerEfficiency = 15; //默认为15kw
|
m_CcuColCmd.fcuPowerEfficiency = 15; //默认为15kw
|
||||||
m_CcuColCmd.insChargeEnable = 00; //不允许充电
|
m_CcuColCmd.insChargeEnable = 0x30; //不允许充电
|
||||||
m_CcuColCmd.insBatCmd = 0x00; //无效指令
|
m_CcuColCmd.insBatCmd = 0x00; //无效指令
|
||||||
m_CcuColCmd.powerBatCmd = 0x00; //无效指令
|
m_CcuColCmd.powerBatCmd = 0x00; //无效指令
|
||||||
m_CcuColCmd.powerBatEfficiency = 230; //默认为最大
|
m_CcuColCmd.powerBatEfficiency = 230; //默认为最大
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ public:
|
|||||||
|
|
||||||
//操作函数,操作指定设备
|
//操作函数,操作指定设备
|
||||||
//TODO: 增加设备操作函数
|
//TODO: 增加设备操作函数
|
||||||
|
void operateSubDriver(int id, int cmd, DriverTable* driverTable);
|
||||||
// void setDriverTable(DriverTable* driverTable, ,DriverCmd::Type cmd);
|
// void setDriverTable(DriverTable* driverTable, ,DriverCmd::Type cmd);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -38,11 +38,47 @@ bool PowerManagerFsm::handPowerProtection(DevCmdExt const &e){
|
|||||||
e.id == DeviceId::forwardSonar ||
|
e.id == DeviceId::forwardSonar ||
|
||||||
e.id == DeviceId::lowFreqSonar ||
|
e.id == DeviceId::lowFreqSonar ||
|
||||||
e.id == DeviceId::DVL ||
|
e.id == DeviceId::DVL ||
|
||||||
e.id == DeviceId::USBL){
|
e.id == DeviceId::USBL)
|
||||||
if(e.cmd == 1){
|
{
|
||||||
LOG_F(INFO, "水声设备操作上电保护 %d 已关闭", e.id);
|
if(e.cmd == 1)
|
||||||
|
{
|
||||||
|
if(pm->m_depth < 10)
|
||||||
|
{
|
||||||
|
LOG_F(INFO, "水下设备操作上电保护 %d ", e.id);
|
||||||
return false;
|
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, "无动力电设备操作");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,13 +273,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
#endif
|
#endif
|
||||||
if (e.cmd == 0)
|
if (e.cmd == 0)
|
||||||
{
|
{
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
|
MOOSPause(10);
|
||||||
pm->m_subDisSysCmd.bowCover1 = 0;
|
pm->m_subDisSysCmd.bowCover1 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover1 = 1;
|
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_subDisSysCmd.bowCover1 = 1;
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -252,6 +292,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -260,6 +301,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -276,13 +318,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
#endif
|
#endif
|
||||||
if (e.cmd == 0)
|
if (e.cmd == 0)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover2 = 0;
|
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_subDisSysCmd.bowCover2 = 0;
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover2 = 1;
|
pm->m_subDisSysCmd.bowCover2 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -299,6 +345,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -316,11 +363,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover3 = 0;
|
pm->m_subDisSysCmd.bowCover3 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover3 = 1;
|
pm->m_subDisSysCmd.bowCover3 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -329,6 +380,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -337,6 +389,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -354,11 +407,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover4 = 0;
|
pm->m_subDisSysCmd.bowCover4 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover4 = 1;
|
pm->m_subDisSysCmd.bowCover4 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -367,6 +424,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -375,6 +433,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -392,11 +451,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover5 = 0;
|
pm->m_subDisSysCmd.bowCover5 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover5 = 1;
|
pm->m_subDisSysCmd.bowCover5 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -405,6 +468,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -413,6 +477,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -430,11 +495,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover6 = 0;
|
pm->m_subDisSysCmd.bowCover6 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowCover6 = 1;
|
pm->m_subDisSysCmd.bowCover6 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -443,6 +512,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -451,6 +521,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -468,11 +539,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowRudderDeploy = 0;
|
pm->m_subDisSysCmd.bowRudderDeploy = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowRudderDeploy = 1;
|
pm->m_subDisSysCmd.bowRudderDeploy = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -481,6 +556,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -489,6 +565,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -506,11 +583,16 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowRudderServo1 = 0;
|
pm->m_subDisSysCmd.bowRudderServo1 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowRudderServo1 = 1;
|
pm->m_subDisSysCmd.bowRudderServo1 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -519,6 +601,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -527,6 +610,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -544,11 +628,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowRudderServo2 = 0;
|
pm->m_subDisSysCmd.bowRudderServo2 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowRudderServo2 = 1;
|
pm->m_subDisSysCmd.bowRudderServo2 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -557,6 +645,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -565,6 +654,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -745,11 +835,15 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowWaterInet1 = 0;
|
pm->m_subDisSysCmd.bowWaterInet1 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowWaterInet1 = 1;
|
pm->m_subDisSysCmd.bowWaterInet1 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -758,6 +852,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -766,6 +861,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -781,12 +877,17 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
#endif
|
#endif
|
||||||
if (e.cmd == 0)
|
if (e.cmd == 0)
|
||||||
{
|
{
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
|
MOOSPause(1);
|
||||||
pm->m_subDisSysCmd.bowWaterInet2 = 0;
|
pm->m_subDisSysCmd.bowWaterInet2 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (e.cmd == 1)
|
else if (e.cmd == 1)
|
||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowWaterInet2 = 1;
|
pm->m_subDisSysCmd.bowWaterInet2 = 1;
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
@@ -796,6 +897,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -804,6 +906,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -819,6 +922,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
#endif
|
#endif
|
||||||
if (e.cmd == 0)
|
if (e.cmd == 0)
|
||||||
{
|
{
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
|
MOOSPause(1);
|
||||||
pm->m_subDisSysCmd.bowWaterInet3 = 0;
|
pm->m_subDisSysCmd.bowWaterInet3 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
}
|
}
|
||||||
@@ -826,6 +931,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowWaterInet3 = 1;
|
pm->m_subDisSysCmd.bowWaterInet3 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -834,6 +941,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -842,6 +950,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -857,6 +966,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
#endif
|
#endif
|
||||||
if (e.cmd == 0)
|
if (e.cmd == 0)
|
||||||
{
|
{
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
|
MOOSPause(1);
|
||||||
pm->m_subDisSysCmd.bowWaterInet4 = 0;
|
pm->m_subDisSysCmd.bowWaterInet4 = 0;
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
}
|
}
|
||||||
@@ -864,6 +975,8 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
{
|
{
|
||||||
pm->m_subDisSysCmd.bowWaterInet4 = 1;
|
pm->m_subDisSysCmd.bowWaterInet4 = 1;
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
MOOSPause(1);
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 2)
|
else if (e.cmd == 2)
|
||||||
{
|
{
|
||||||
@@ -872,6 +985,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 3)
|
else if (e.cmd == 3)
|
||||||
{
|
{
|
||||||
//TODO :动力电上电
|
//TODO :动力电上电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_ON);
|
||||||
}
|
}
|
||||||
else if (e.cmd == 4)
|
else if (e.cmd == 4)
|
||||||
{
|
{
|
||||||
@@ -880,6 +994,7 @@ void PowerManagerFsm::react(DevCmdExt const &e) {
|
|||||||
else if (e.cmd == 5)
|
else if (e.cmd == 5)
|
||||||
{
|
{
|
||||||
//TODO :动力电断电
|
//TODO :动力电断电
|
||||||
|
pm->m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(BREAK_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2031,39 +2146,111 @@ void PowerManagerFsm::handelPowerCmd(){
|
|||||||
{
|
{
|
||||||
case 0:
|
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;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
LOG_F(INFO, "收到上位机控制指令:动力电上电");
|
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;
|
break;
|
||||||
case 2:
|
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;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池上电");
|
||||||
|
//备用
|
||||||
break;
|
break;
|
||||||
case 4:
|
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;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池停机");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池下电");
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池预热指令");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池预热指令");
|
||||||
|
//备用
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池自检指令");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池自检指令");
|
||||||
|
//备用
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池紧急停机");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池紧急停机");
|
||||||
|
//备用
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池复位指令");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池复位指令");
|
||||||
|
//备用
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池补给指令");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池补给指令");
|
||||||
|
//备用
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
LOG_F(INFO, "收到上位机控制指令:燃料电池停机维护");
|
LOG_F(INFO, "收到上位机控制指令:燃料电池停机维护");
|
||||||
|
//备用
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -100,6 +100,16 @@ public:
|
|||||||
void handleWorkCmd();
|
void handleWorkCmd();
|
||||||
void handleDeviceCmd();
|
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);
|
bool handPowerProtection(DevCmdExt const &e);
|
||||||
//故障处理
|
//故障处理
|
||||||
void basicNavigationFault(FaultEvent const &e);
|
void basicNavigationFault(FaultEvent const &e);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ void ShoreBasedReady::react(MasterCommandEvent const &) {
|
|||||||
void ShoreBasedReady::entry() {
|
void ShoreBasedReady::entry() {
|
||||||
PowerManagerFsm::entry();
|
PowerManagerFsm::entry();
|
||||||
pm->m_driver.getSHORE_BASED_READYable(&pm->m_subDisSysCmd);
|
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;
|
pm->workCondition = WorkCondition::CHANING;
|
||||||
//依次接入执行机构动力电设备
|
//依次接入执行机构动力电设备
|
||||||
//TODO:接入执行机构动力电设备
|
//TODO:接入执行机构动力电设备
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ void WaterBasedReady::entry() {
|
|||||||
PowerManagerFsm::entry();
|
PowerManagerFsm::entry();
|
||||||
pm->workCondition = WorkCondition::CHANING;
|
pm->workCondition = WorkCondition::CHANING;
|
||||||
pm->m_driver.getWATER_BASED_READYable(&pm->m_subDisSysCmd);
|
pm->m_driver.getWATER_BASED_READYable(&pm->m_subDisSysCmd);
|
||||||
pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
// pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start;
|
||||||
//依次接入执行机构动力电设备
|
//依次接入执行机构动力电设备
|
||||||
//TODO:接入执行机构动力电设备
|
//TODO:接入执行机构动力电设备
|
||||||
pm->workCondition = WorkCondition::WATER_BASED_READY;
|
pm->workCondition = WorkCondition::WATER_BASED_READY;
|
||||||
|
|||||||
@@ -338,6 +338,15 @@ body {
|
|||||||
<input type="hidden" name="instrumentBattery" value="00H">
|
<input type="hidden" name="instrumentBattery" value="00H">
|
||||||
</div>
|
</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">
|
<div class="control-group">
|
||||||
<label class="control-label">动力锂电池启停指令</label>
|
<label class="control-label">动力锂电池启停指令</label>
|
||||||
<div class="button-group">
|
<div class="button-group">
|
||||||
|
|||||||
@@ -249,11 +249,11 @@ const std::string DATA_HTML = R"(
|
|||||||
<span class="data-value" id="dyn-total-energy">正在加载...</span>
|
<span class="data-value" id="dyn-total-energy">正在加载...</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="data-item">
|
<div class="data-item">
|
||||||
<span class="data-label">仪表电池输入功率:</span>
|
<span class="data-label">仪表电池接入功率:</span>
|
||||||
<span class="data-value" id="ins-power-input">正在加载...</span>
|
<span class="data-value" id="ins-power-input">正在加载...</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="data-item">
|
<div class="data-item">
|
||||||
<span class="data-label">动力电池输入功率:</span>
|
<span class="data-label">动力电池接入功率:</span>
|
||||||
<span class="data-value" id="dyn-power-input">正在加载...</span>
|
<span class="data-value" id="dyn-power-input">正在加载...</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="data-item">
|
<div class="data-item">
|
||||||
@@ -264,6 +264,14 @@ const std::string DATA_HTML = R"(
|
|||||||
<span class="data-label">动力电池最大放电功率:</span>
|
<span class="data-label">动力电池最大放电功率:</span>
|
||||||
<span class="data-value" id="dyn-max-discharge-power">正在加载...</span>
|
<span class="data-value" id="dyn-max-discharge-power">正在加载...</span>
|
||||||
</div>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -380,6 +388,22 @@ const std::string DATA_HTML = R"(
|
|||||||
<span class="data-label">动力紧急状态:</span>
|
<span class="data-label">动力紧急状态:</span>
|
||||||
<span class="data-value" id="dyn-emergency-status">正在加载...</span>
|
<span class="data-value" id="dyn-emergency-status">正在加载...</span>
|
||||||
</div>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1061,6 +1085,14 @@ function updateSystemData(data) {
|
|||||||
document.getElementById('dyn-max-discharge-power').textContent =
|
document.getElementById('dyn-max-discharge-power').textContent =
|
||||||
(data.dyn_max_discharge_power).toFixed(2) + ' kW';
|
(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) {
|
if (data.ins_relay_status1 !== undefined) {
|
||||||
@@ -1107,6 +1139,18 @@ function updateSystemData(data) {
|
|||||||
if (data.dyn_emergency_status !== undefined) {
|
if (data.dyn_emergency_status !== undefined) {
|
||||||
document.getElementById('dyn-emergency-status').textContent = getEmergencyStatusText(data.dyn_emergency_status);
|
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) {
|
if (data.dyn_alarm_flag1 !== undefined) {
|
||||||
document.getElementById('dyn-alarm-flag1').textContent = data.dyn_alarm_flag1;
|
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) {
|
function getRelayStatusText(status) {
|
||||||
const statuses = {
|
const statuses = {
|
||||||
@@ -1649,6 +1703,26 @@ function getRelayStatusText(status) {
|
|||||||
return statuses[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) {
|
function getEmergencyStatusText(status) {
|
||||||
const statuses = {
|
const statuses = {
|
||||||
|
|||||||
@@ -116,6 +116,8 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_
|
|||||||
fuelCellPower = (unsigned short)atoi(tmp);
|
fuelCellPower = (unsigned short)atoi(tmp);
|
||||||
mg_http_get_var(&body, "instrumentBattery", tmp, sizeof(tmp));
|
mg_http_get_var(&body, "instrumentBattery", tmp, sizeof(tmp));
|
||||||
instrumentBattery = (unsigned char)strtoul(tmp, NULL, 16);
|
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));
|
mg_http_get_var(&body, "powerBattery", tmp, sizeof(tmp));
|
||||||
powerBattery = (unsigned char)strtoul(tmp, NULL, 16);
|
powerBattery = (unsigned char)strtoul(tmp, NULL, 16);
|
||||||
mg_http_get_var(&body, "powerBatteryPower", tmp, sizeof(tmp));
|
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: "
|
LOG_F(INFO, "Received battery control config: "
|
||||||
"fuelCellMode=%02XH, fuelCellCommand=%02XH, fuelCellPower=%d, "
|
"fuelCellMode=%02XH, fuelCellCommand=%02XH, fuelCellPower=%d, "
|
||||||
"instrumentBattery=%02XH, powerBattery=%02XH, powerBatteryPower=%d, "
|
"instrumentBattery=%02XH, instrumentBatteryCharge=%d, powerBattery=%02XH, powerBatteryPower=%d, "
|
||||||
"hostStatus=%02XH",
|
"hostStatus=%02XH",
|
||||||
fuelCellMode, fuelCellCommand, fuelCellPower,
|
fuelCellMode, fuelCellCommand, fuelCellPower,
|
||||||
instrumentBattery, powerBattery, powerBatteryPower, hostStatus);
|
instrumentBattery, instrumentBatteryCharge, powerBattery, powerBatteryPower, hostStatus);
|
||||||
|
|
||||||
m_powerManger->m_CcuColCmd.fcmode = fuelCellMode;
|
m_powerManger->m_CcuColCmd.fcmode = fuelCellMode;
|
||||||
m_powerManger->m_CcuColCmd.fcuCmd = fuelCellCommand;
|
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.powerBatCmd = powerBattery;
|
||||||
m_powerManger->m_CcuColCmd.powerBatEfficiency = powerBatteryPower;
|
m_powerManger->m_CcuColCmd.powerBatEfficiency = powerBatteryPower;
|
||||||
m_powerManger->m_CcuColCmd.masterState = hostStatus;
|
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;
|
cout << "m_powerManger->m_CcuColCmd.masterState:" << (int)m_powerManger->m_CcuColCmd.masterState << endl;
|
||||||
|
|
||||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
||||||
@@ -477,6 +480,12 @@ void HttpServer::pushSystemData() {
|
|||||||
j["ins_emergency_status"] = Json::Value(m_systemData->ins_emergency_status); // 紧急状态
|
j["ins_emergency_status"] = Json::Value(m_systemData->ins_emergency_status); // 紧急状态
|
||||||
j["dyn_emergency_status"] = Json::Value(m_systemData->dyn_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_threshold1"] = Json::Value(m_systemData->ins_soc_threshold1); // 仪表电池1 SOC门限
|
||||||
j["ins_soc_threshold2"] = Json::Value(m_systemData->ins_soc_threshold2); // 仪表电池2 SOC门限
|
j["ins_soc_threshold2"] = Json::Value(m_systemData->ins_soc_threshold2); // 仪表电池2 SOC门限
|
||||||
j["ins_soc_threshold3"] = Json::Value(m_systemData->ins_soc_threshold3); // 仪表电池3 SOC门限
|
j["ins_soc_threshold3"] = Json::Value(m_systemData->ins_soc_threshold3); // 仪表电池3 SOC门限
|
||||||
@@ -488,6 +497,11 @@ void HttpServer::pushSystemData() {
|
|||||||
j["dyn_power_limit1"] = Json::Value(m_systemData->dyn_power_limit1); // 动力电池1功率限制值
|
j["dyn_power_limit1"] = Json::Value(m_systemData->dyn_power_limit1); // 动力电池1功率限制值
|
||||||
j["dyn_power_limit2"] = Json::Value(m_systemData->dyn_power_limit2); // 动力电池2功率限制值
|
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_flag1"] = Json::Value(m_systemData->device_online_flag1);
|
||||||
j["device_online"]["device_online_flag2"] = Json::Value(m_systemData->device_online_flag2);
|
j["device_online"]["device_online_flag2"] = Json::Value(m_systemData->device_online_flag2);
|
||||||
@@ -517,6 +531,12 @@ void HttpServer::pushSystemData() {
|
|||||||
j["comm_state"]["dis_lv_c2"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_lv_c2.isTimeout);
|
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_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);
|
j["heartbeat"] = Json::Value(m_systemData->heartbeat);
|
||||||
//=============================================================================================================
|
//=============================================================================================================
|
||||||
|
|||||||
@@ -343,7 +343,7 @@ const std::string LOG_PAGE_HTML = R"(
|
|||||||
每页显示:
|
每页显示:
|
||||||
<select id="pageSize">
|
<select id="pageSize">
|
||||||
<option value="100">100</option>
|
<option value="100">100</option>
|
||||||
<option value="200">200</option>
|
<option value="200" selected>200</option>
|
||||||
<option value="500">500</option>
|
<option value="500">500</option>
|
||||||
<option value="1000">1000</option>
|
<option value="1000">1000</option>
|
||||||
</select>
|
</select>
|
||||||
@@ -368,7 +368,7 @@ let autoScroll = true;
|
|||||||
let logContent = document.getElementById('logContent');
|
let logContent = document.getElementById('logContent');
|
||||||
let currentPage = 1;
|
let currentPage = 1;
|
||||||
let totalPages = 1;
|
let totalPages = 1;
|
||||||
let pageSize = 100;
|
let pageSize = 200;
|
||||||
let allLogs = [];
|
let allLogs = [];
|
||||||
let filteredLogs = [];
|
let filteredLogs = [];
|
||||||
let searchTimer = null;
|
let searchTimer = null;
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ typedef struct ccuState
|
|||||||
uint8_t flame_detector1; // 火焰探测器1状态:00H-无效, 01H-报警, 02H-故障
|
uint8_t flame_detector1; // 火焰探测器1状态:00H-无效, 01H-报警, 02H-故障
|
||||||
uint8_t flame_detector2; // 火焰探测器2状态: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_concentration2; // 舱室H2浓度2,单位:0.01% LEL
|
||||||
uint16_t h2_concentration3; // 舱室H2浓度3,单位:0.01% LEL
|
uint16_t h2_concentration3; // 舱室H2浓度3,单位:0.01% LEL
|
||||||
uint16_t o2_concentration1; // 舱室O2浓度1,单位:0.01% LEL
|
uint16_t o2_concentration1; // 舱室O2浓度1,单位:0.01% LEL
|
||||||
@@ -118,7 +118,11 @@ typedef struct ccuState
|
|||||||
uint32_t device_online_flag1; // 设备在线状态标志1,byte0:低压配电板在线标志位 byte1:复合管控主机在线标志位 byte2:复合管控备机在线标志位
|
uint32_t device_online_flag1; // 设备在线状态标志1,byte0:低压配电板在线标志位 byte1:复合管控主机在线标志位 byte2:复合管控备机在线标志位
|
||||||
uint32_t device_online_flag2; // 设备在线状态标志2,byte0:仪表锂电在线标志位 byte1:动力锂电在线标志位 byte2:燃电锂电在线标志位 byte3:高压配电板在线标志位
|
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; // 主机心跳计数器或标志值
|
uint32_t heartbeat; // 主机心跳计数器或标志值
|
||||||
} ccuState;
|
} ccuState;
|
||||||
|
|
||||||
@@ -139,7 +143,7 @@ typedef struct {
|
|||||||
unsigned char fcmode;
|
unsigned char fcmode;
|
||||||
unsigned char fcuCmd;
|
unsigned char fcuCmd;
|
||||||
unsigned char fcuPowerEfficiency;
|
unsigned char fcuPowerEfficiency;
|
||||||
unsigned char insChargeEnable; //0 不允许充电 1 允许充电
|
unsigned char insChargeEnable;
|
||||||
unsigned char insBatCmd;
|
unsigned char insBatCmd;
|
||||||
unsigned char powerBatCmd;
|
unsigned char powerBatCmd;
|
||||||
unsigned short powerBatEfficiency;
|
unsigned short powerBatEfficiency;
|
||||||
@@ -824,3 +828,5 @@ namespace FaultEnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -627,6 +627,7 @@ bool SQLite::insertData(const ccuColCmd cmd) {
|
|||||||
std::cerr << "执行插入失败: " << sqlite3_errmsg(m_db) << std::endl;
|
std::cerr << "执行插入失败: " << sqlite3_errmsg(m_db) << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sqlite3_finalize(stmt);
|
sqlite3_finalize(stmt);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,8 +143,18 @@ public:
|
|||||||
uint32_t device_online_flag1; // 设备在线状态标志1
|
uint32_t device_online_flag1; // 设备在线状态标志1
|
||||||
uint32_t device_online_flag2; // 设备在线状态标志2
|
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; // 主机心跳计数器
|
uint32_t heartbeat; // 主机心跳计数器
|
||||||
|
|
||||||
//锂电池故障字段
|
//锂电池故障字段
|
||||||
@@ -570,14 +580,21 @@ public:
|
|||||||
device_online_status.composite_online_state = (data.device_online_flag2 >> 8) & 0xFF; // byte1:复合管控主机在线标志位
|
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:复合管控备机在线标志位
|
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;
|
heartbeat = data.heartbeat;
|
||||||
|
|||||||
@@ -12,47 +12,43 @@ def create_sample_dbc():
|
|||||||
"""创建一个示例DBC文件"""
|
"""创建一个示例DBC文件"""
|
||||||
db = Database()
|
db = Database()
|
||||||
|
|
||||||
# 添加消息
|
# 主机->复合管控 (ID:0x11000101)
|
||||||
msg1 = Message(
|
msg1 = Message(
|
||||||
name="EngineData",
|
name="HostToCompositeControl",
|
||||||
frame_id=0x100,
|
frame_id=0x11000101,
|
||||||
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,
|
|
||||||
is_extended_frame=True,
|
is_extended_frame=True,
|
||||||
length=8,
|
length=8,
|
||||||
signals=[
|
signals=[
|
||||||
Signal(name="FuelCellBreaker", start=0, length=8, is_signed=False),
|
Signal(name="FuelCellModeSet", start=0, length=8, is_signed=False),
|
||||||
Signal(name="BatteryBreaker", start=8, length=8, is_signed=False),
|
Signal(name="FuelCellCommand", start=8, length=8, is_signed=False),
|
||||||
Signal(name="MotorBreaker", start=16, length=8, is_signed=False),
|
Signal(name="MeterBatteryChargeFlag", start=16, length=8, is_signed=False),
|
||||||
Signal(name="BatteryMeterBreaker", start=24, length=8, is_signed=False),
|
Signal(name="MeterBatteryStartStop", start=24, length=8, is_signed=False),
|
||||||
Signal(name="DCDC5Breaker", start=32, length=8, is_signed=False),
|
Signal(name="PowerBatteryStartStop", start=32, length=8, is_signed=False),
|
||||||
Signal(name="BowDistBoxBreaker", start=40, length=8, is_signed=False),
|
Signal(name="HostHeartbeat", start=40, length=8, is_signed=False),
|
||||||
Signal(name="SternFT45Breaker", start=48, length=8, is_signed=False),
|
Signal(name="HostStatus", start=48, length=8, is_signed=False),
|
||||||
Signal(name="SternRudder1Breaker", start=56, 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
|
return db
|
||||||
|
|
||||||
def save_dbc_file(db, filename):
|
def save_dbc_file(db, filename):
|
||||||
|
|||||||
Reference in New Issue
Block a user