Merge pull request #452 from dalathegreat/bugfix/SMA-pairing

Bugfix: SMA pairing reliability
This commit is contained in:
Daniel Öster 2024-09-11 20:53:25 +03:00 committed by GitHub
commit ccb2db87ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 21 deletions

View file

@ -6,7 +6,7 @@
/* TODO: Map error bits in 0x158 */ /* TODO: Map error bits in 0x158 */
/* Do not change code below unless you are sure what you are doing */ /* Do not change code below unless you are sure what you are doing */
static unsigned long previousMillis60s = 0; static unsigned long previousMillis100ms = 0;
//Actual content messages //Actual content messages
CAN_frame SMA_358 = {.FD = false, CAN_frame SMA_358 = {.FD = false,
@ -51,7 +51,7 @@ CAN_frame SMA_598 = {.FD = false,
.ext_ID = false, .ext_ID = false,
.DLC = 8, .DLC = 8,
.ID = 0x598, .ID = 0x598,
.data = {0x00, 0xD3, 0x00, 0x01, 0x5C, 0x98, 0xB6, 0xEE}}; .data = {0x00, 0x01, 0x0F, 0x2C, 0x5C, 0x98, 0xB6, 0xEE}};
CAN_frame SMA_5D8 = {.FD = false, CAN_frame SMA_5D8 = {.FD = false,
.ext_ID = false, .ext_ID = false,
.DLC = 8, .DLC = 8,
@ -221,12 +221,14 @@ void receive_can_inverter(CAN_frame rx_frame) {
break; break;
case 0x420: //Message originating from SMA inverter - Timestamp case 0x420: //Message originating from SMA inverter - Timestamp
//Frame0-3 Timestamp //Frame0-3 Timestamp
/*
transmit_can(&SMA_158, can_config.inverter); transmit_can(&SMA_158, can_config.inverter);
transmit_can(&SMA_358, can_config.inverter); transmit_can(&SMA_358, can_config.inverter);
transmit_can(&SMA_3D8, can_config.inverter); transmit_can(&SMA_3D8, can_config.inverter);
transmit_can(&SMA_458, can_config.inverter); transmit_can(&SMA_458, can_config.inverter);
transmit_can(&SMA_518, can_config.inverter); transmit_can(&SMA_518, can_config.inverter);
transmit_can(&SMA_4D8, can_config.inverter); transmit_can(&SMA_4D8, can_config.inverter);
*/
break; break;
case 0x5E0: //Message originating from SMA inverter - String case 0x5E0: //Message originating from SMA inverter - String
break; break;
@ -254,15 +256,17 @@ void receive_can_inverter(CAN_frame rx_frame) {
void send_can_inverter() { void send_can_inverter() {
unsigned long currentMillis = millis(); unsigned long currentMillis = millis();
// Send CAN Message every 60s // Send CAN Message every 100ms if we're enabled
if (currentMillis - previousMillis60s >= INTERVAL_60_S) { if (datalayer.system.status.inverter_allows_contactor_closing) {
previousMillis60s = currentMillis; if (currentMillis - previousMillis100ms >= 100) {
transmit_can(&SMA_158, can_config.inverter); previousMillis100ms = currentMillis;
transmit_can(&SMA_358, can_config.inverter); transmit_can(&SMA_158, can_config.inverter);
transmit_can(&SMA_3D8, can_config.inverter); transmit_can(&SMA_358, can_config.inverter);
transmit_can(&SMA_458, can_config.inverter); transmit_can(&SMA_3D8, can_config.inverter);
transmit_can(&SMA_518, can_config.inverter); transmit_can(&SMA_458, can_config.inverter);
transmit_can(&SMA_4D8, can_config.inverter); transmit_can(&SMA_518, can_config.inverter);
transmit_can(&SMA_4D8, can_config.inverter);
}
} }
} }
#endif #endif

View file

@ -6,7 +6,7 @@
/* TODO: Map error bits in 0x158 */ /* TODO: Map error bits in 0x158 */
/* Do not change code below unless you are sure what you are doing */ /* Do not change code below unless you are sure what you are doing */
static unsigned long previousMillis60s = 0; static unsigned long previousMillis100ms = 0;
//Actual content messages //Actual content messages
CAN_frame SMA_558 = {.FD = false, CAN_frame SMA_558 = {.FD = false,
@ -218,12 +218,14 @@ void receive_can_inverter(CAN_frame rx_frame) {
break; break;
case 0x420: //Message originating from SMA inverter - Timestamp case 0x420: //Message originating from SMA inverter - Timestamp
//Frame0-3 Timestamp //Frame0-3 Timestamp
/*
transmit_can(&SMA_158, can_config.inverter); transmit_can(&SMA_158, can_config.inverter);
transmit_can(&SMA_358, can_config.inverter); transmit_can(&SMA_358, can_config.inverter);
transmit_can(&SMA_3D8, can_config.inverter); transmit_can(&SMA_3D8, can_config.inverter);
transmit_can(&SMA_458, can_config.inverter); transmit_can(&SMA_458, can_config.inverter);
transmit_can(&SMA_518, can_config.inverter); transmit_can(&SMA_518, can_config.inverter);
transmit_can(&SMA_4D8, can_config.inverter); transmit_can(&SMA_4D8, can_config.inverter);
*/
break; break;
case 0x5E0: //Message originating from SMA inverter - String case 0x5E0: //Message originating from SMA inverter - String
break; break;
@ -251,16 +253,18 @@ void receive_can_inverter(CAN_frame rx_frame) {
void send_can_inverter() { void send_can_inverter() {
unsigned long currentMillis = millis(); unsigned long currentMillis = millis();
// Send CAN Message every 60s // Send CAN Message every 100ms if Enable line is HIGH
if (currentMillis - previousMillis60s >= INTERVAL_60_S) { if (datalayer.system.status.inverter_allows_contactor_closing) {
previousMillis60s = currentMillis; if (currentMillis - previousMillis100ms >= 100) {
previousMillis100ms = currentMillis;
transmit_can(&SMA_158, can_config.inverter); transmit_can(&SMA_158, can_config.inverter);
transmit_can(&SMA_358, can_config.inverter); transmit_can(&SMA_358, can_config.inverter);
transmit_can(&SMA_3D8, can_config.inverter); transmit_can(&SMA_3D8, can_config.inverter);
transmit_can(&SMA_458, can_config.inverter); transmit_can(&SMA_458, can_config.inverter);
transmit_can(&SMA_518, can_config.inverter); transmit_can(&SMA_518, can_config.inverter);
transmit_can(&SMA_4D8, can_config.inverter); transmit_can(&SMA_4D8, can_config.inverter);
}
} }
} }
#endif #endif