diff --git a/Software/src/inverter/SMA-BYD-HVS-CAN.cpp b/Software/src/inverter/SMA-BYD-HVS-CAN.cpp index b32ba0f6..93e62135 100644 --- a/Software/src/inverter/SMA-BYD-HVS-CAN.cpp +++ b/Software/src/inverter/SMA-BYD-HVS-CAN.cpp @@ -138,17 +138,22 @@ void update_values_can_inverter() { //This function maps all the values fetched } //Error bits - if (datalayer.system.status.inverter_allows_contactor_closing) { + if (datalayer.system.status.battery_allows_contactor_closing) { SMA_158.data.u8[2] = 0xAA; + } else { + SMA_158.data.u8[2] = 0x6A; + } + + // Inverter allows contactor closing + if (datalayer.system.status.inverter_allows_contactor_closing) { #ifdef INVERTER_CONTACTOR_ENABLE_LED_PIN digitalWrite(INVERTER_CONTACTOR_ENABLE_LED_PIN, HIGH); // Turn on LED to indicate that SMA inverter allows contactor closing #endif // INVERTER_CONTACTOR_ENABLE_LED_PIN } else { - SMA_158.data.u8[2] = 0x6A; #ifdef INVERTER_CONTACTOR_ENABLE_LED_PIN digitalWrite(INVERTER_CONTACTOR_ENABLE_LED_PIN, - LOW); // Turn off LED to indicate that SMA inverter allows contactor closing + LOW); // Turn off LED to indicate that SMA inverter does not allow contactor closing #endif // INVERTER_CONTACTOR_ENABLE_LED_PIN } @@ -241,21 +246,65 @@ void map_can_frame_to_variable_inverter(CAN_frame rx_frame) { case 0x560: //Message originating from SMA inverter - Init datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; break; + case 0x561: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x562: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x563: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x564: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x565: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x566: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x567: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; case 0x5E0: //Message originating from SMA inverter - String datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; //Inverter brand (frame1-3 = 0x53 0x4D 0x41) = SMA break; + case 0x5E1: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x5E2: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x5E3: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x5E4: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x5E5: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; + case 0x5E6: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; case 0x5E7: //Pairing request +#ifdef DEBUG_LOG + logging.println("Received 0x5E7: SMA pairing request"); +#endif // DEBUG_LOG datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; transmit_can_init(); break; + case 0x62C: + datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE; + break; default: break; } } void transmit_can_inverter(unsigned long currentMillis) { - // Send CAN Message every 100ms if inverter allows contactor closing if (datalayer.system.status.inverter_allows_contactor_closing) { if (currentMillis - previousMillis100ms >= 100) {