Add event for Solax requesting contactor open

This commit is contained in:
Daniel 2024-02-19 17:44:26 +02:00
parent ac2bbb850b
commit 3783a2ddf2
3 changed files with 7 additions and 1 deletions

View file

@ -137,6 +137,7 @@ void init_events(void) {
events.entries[EVENT_LOW_SOH].level = EVENT_LEVEL_ERROR; events.entries[EVENT_LOW_SOH].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_HVIL_FAILURE].level = EVENT_LEVEL_ERROR; events.entries[EVENT_HVIL_FAILURE].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_INTERNAL_OPEN_FAULT].level = EVENT_LEVEL_ERROR; events.entries[EVENT_INTERNAL_OPEN_FAULT].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_INVERTER_OPEN_CONTACTOR].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_CELL_UNDER_VOLTAGE].level = EVENT_LEVEL_ERROR; events.entries[EVENT_CELL_UNDER_VOLTAGE].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_CELL_OVER_VOLTAGE].level = EVENT_LEVEL_ERROR; events.entries[EVENT_CELL_OVER_VOLTAGE].level = EVENT_LEVEL_ERROR;
events.entries[EVENT_CELL_DEVIATION_HIGH].level = EVENT_LEVEL_WARNING; events.entries[EVENT_CELL_DEVIATION_HIGH].level = EVENT_LEVEL_WARNING;
@ -210,6 +211,8 @@ const char* get_event_message_string(EVENTS_ENUM_TYPE event) {
"disabled!"; "disabled!";
case EVENT_INTERNAL_OPEN_FAULT: case EVENT_INTERNAL_OPEN_FAULT:
return "ERROR: High voltage cable removed while battery running. Opening contactors!"; return "ERROR: High voltage cable removed while battery running. Opening contactors!";
case EVENT_INVERTER_OPEN_CONTACTOR:
return "ERROR: Inverter requested contactors to open. Opening contactors!";
case EVENT_CELL_UNDER_VOLTAGE: case EVENT_CELL_UNDER_VOLTAGE:
return "ERROR: CELL UNDERVOLTAGE!!! Stopping battery charging and discharging. Inspect battery!"; return "ERROR: CELL UNDERVOLTAGE!!! Stopping battery charging and discharging. Inspect battery!";
case EVENT_CELL_OVER_VOLTAGE: case EVENT_CELL_OVER_VOLTAGE:

View file

@ -36,6 +36,7 @@
XX(EVENT_LOW_SOH) \ XX(EVENT_LOW_SOH) \
XX(EVENT_HVIL_FAILURE) \ XX(EVENT_HVIL_FAILURE) \
XX(EVENT_INTERNAL_OPEN_FAULT) \ XX(EVENT_INTERNAL_OPEN_FAULT) \
XX(EVENT_INVERTER_OPEN_CONTACTOR) \
XX(EVENT_CELL_UNDER_VOLTAGE) \ XX(EVENT_CELL_UNDER_VOLTAGE) \
XX(EVENT_CELL_OVER_VOLTAGE) \ XX(EVENT_CELL_OVER_VOLTAGE) \
XX(EVENT_CELL_DEVIATION_HIGH) \ XX(EVENT_CELL_DEVIATION_HIGH) \

View file

@ -279,8 +279,10 @@ void receive_can_solax(CAN_frame_t rx_frame) {
CAN_WriteFrame(&SOLAX_1878); CAN_WriteFrame(&SOLAX_1878);
// Message from the inverter to open contactor // Message from the inverter to open contactor
// Byte 4 changes from 1 to 0 // Byte 4 changes from 1 to 0
if (rx_frame.data.u64 == Contactor_Open_Payload) if (rx_frame.data.u64 == Contactor_Open_Payload) {
set_event(EVENT_INVERTER_OPEN_CONTACTOR, 0);
STATE = BATTERY_ANNOUNCE; STATE = BATTERY_ANNOUNCE;
}
break; break;
} }
} }