mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-05 02:39:57 +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
|
//Error bits
|
||||||
if (datalayer.system.status.inverter_allows_contactor_closing) {
|
if (datalayer.system.status.battery_allows_contactor_closing) {
|
||||||
SMA_158.data.u8[2] = 0xAA;
|
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
|
#ifdef INVERTER_CONTACTOR_ENABLE_LED_PIN
|
||||||
digitalWrite(INVERTER_CONTACTOR_ENABLE_LED_PIN,
|
digitalWrite(INVERTER_CONTACTOR_ENABLE_LED_PIN,
|
||||||
HIGH); // Turn on LED to indicate that SMA inverter allows contactor closing
|
HIGH); // Turn on LED to indicate that SMA inverter allows contactor closing
|
||||||
#endif // INVERTER_CONTACTOR_ENABLE_LED_PIN
|
#endif // INVERTER_CONTACTOR_ENABLE_LED_PIN
|
||||||
} else {
|
} else {
|
||||||
SMA_158.data.u8[2] = 0x6A;
|
|
||||||
#ifdef INVERTER_CONTACTOR_ENABLE_LED_PIN
|
#ifdef INVERTER_CONTACTOR_ENABLE_LED_PIN
|
||||||
digitalWrite(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
|
#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
|
case 0x560: //Message originating from SMA inverter - Init
|
||||||
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
|
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
|
||||||
break;
|
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
|
case 0x5E0: //Message originating from SMA inverter - String
|
||||||
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
|
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
|
||||||
//Inverter brand (frame1-3 = 0x53 0x4D 0x41) = SMA
|
//Inverter brand (frame1-3 = 0x53 0x4D 0x41) = SMA
|
||||||
break;
|
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
|
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;
|
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
|
||||||
transmit_can_init();
|
transmit_can_init();
|
||||||
break;
|
break;
|
||||||
|
case 0x62C:
|
||||||
|
datalayer.system.status.CAN_inverter_still_alive = CAN_STILL_ALIVE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void transmit_can_inverter(unsigned long currentMillis) {
|
void transmit_can_inverter(unsigned long currentMillis) {
|
||||||
|
|
||||||
// Send CAN Message every 100ms if inverter allows contactor closing
|
// Send CAN Message every 100ms if inverter allows contactor closing
|
||||||
if (datalayer.system.status.inverter_allows_contactor_closing) {
|
if (datalayer.system.status.inverter_allows_contactor_closing) {
|
||||||
if (currentMillis - previousMillis100ms >= 100) {
|
if (currentMillis - previousMillis100ms >= 100) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue