diff --git a/Software/src/devboard/utils/events.cpp b/Software/src/devboard/utils/events.cpp index 1a6e17d7..9bfb184b 100644 --- a/Software/src/devboard/utils/events.cpp +++ b/Software/src/devboard/utils/events.cpp @@ -137,6 +137,7 @@ void init_events(void) { events.entries[EVENT_LOW_SOH].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_INVERTER_OPEN_CONTACTOR].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_DEVIATION_HIGH].level = EVENT_LEVEL_WARNING; @@ -210,6 +211,8 @@ const char* get_event_message_string(EVENTS_ENUM_TYPE event) { "disabled!"; case EVENT_INTERNAL_OPEN_FAULT: 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: return "ERROR: CELL UNDERVOLTAGE!!! Stopping battery charging and discharging. Inspect battery!"; case EVENT_CELL_OVER_VOLTAGE: diff --git a/Software/src/devboard/utils/events.h b/Software/src/devboard/utils/events.h index e2b922e7..13e67179 100644 --- a/Software/src/devboard/utils/events.h +++ b/Software/src/devboard/utils/events.h @@ -36,6 +36,7 @@ XX(EVENT_LOW_SOH) \ XX(EVENT_HVIL_FAILURE) \ XX(EVENT_INTERNAL_OPEN_FAULT) \ + XX(EVENT_INVERTER_OPEN_CONTACTOR) \ XX(EVENT_CELL_UNDER_VOLTAGE) \ XX(EVENT_CELL_OVER_VOLTAGE) \ XX(EVENT_CELL_DEVIATION_HIGH) \ diff --git a/Software/src/inverter/SOLAX-CAN.cpp b/Software/src/inverter/SOLAX-CAN.cpp index ae74e822..60708dfa 100644 --- a/Software/src/inverter/SOLAX-CAN.cpp +++ b/Software/src/inverter/SOLAX-CAN.cpp @@ -279,8 +279,10 @@ void receive_can_solax(CAN_frame_t rx_frame) { CAN_WriteFrame(&SOLAX_1878); // Message from the inverter to open contactor // 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; + } break; } }