mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-04 18:29:48 +02:00
SMA-BYD-HVS: change SMA_158 depending on battery_allows_contactor_closing, and add CAN_inverter_still_alive for all CAN messages sent by SMA
This commit is contained in:
parent
eb293b38d4
commit
e7d7791da9
1 changed files with 53 additions and 4 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue