Rewrite error handling to stop sending CAN

This commit is contained in:
Daniel 2023-07-26 14:52:42 +03:00
parent e2cec23017
commit af7157e403

View file

@ -87,16 +87,6 @@ void update_values_can_byd()
//Temperature min //Temperature min
BYD_210.data.u8[2] = (temperature_min >> 8); BYD_210.data.u8[2] = (temperature_min >> 8);
BYD_210.data.u8[3] = (temperature_min & 0x00FF); BYD_210.data.u8[3] = (temperature_min & 0x00FF);
//Indicate to inverter if BMS has encountered issues
if(bms_status == FAULT)
{
BYD_190.data.u8[2] = 0x00; //We are not sure what this means, but battery control will be stopped for 5minutes if this is sent
} //Todo, maybe try other values and see if the inverter stops permanently until next reboot?
else
{
BYD_190.data.u8[2] = 0x03; //Indicates battery is OK to continue
}
} }
void receive_can_byd(CAN_frame_t rx_frame) void receive_can_byd(CAN_frame_t rx_frame)
@ -123,31 +113,35 @@ void send_can_byd()
send_intial_data(); send_intial_data();
initialDataSent = 1; initialDataSent = 1;
} }
// Send 2s CAN Message
if (currentMillis - previousMillis2s >= interval2s)
{
previousMillis2s = currentMillis;
ESP32Can.CANWriteFrame(&BYD_110); if(bms_status != FAULT)
} { // Send CAN messages towards inverter if battery is OK
// Send 10s CAN Message // Send 2s CAN Message
if (currentMillis - previousMillis10s >= interval10s) if (currentMillis - previousMillis2s >= interval2s)
{ {
previousMillis10s = currentMillis; previousMillis2s = currentMillis;
ESP32Can.CANWriteFrame(&BYD_150); ESP32Can.CANWriteFrame(&BYD_110);
ESP32Can.CANWriteFrame(&BYD_1D0); }
ESP32Can.CANWriteFrame(&BYD_210); // Send 10s CAN Message
//Serial.println("CAN 10s done"); if (currentMillis - previousMillis10s >= interval10s)
} {
//Send 60s message previousMillis10s = currentMillis;
if (currentMillis - previousMillis60s >= interval60s)
{
previousMillis60s = currentMillis;
ESP32Can.CANWriteFrame(&BYD_190); ESP32Can.CANWriteFrame(&BYD_150);
//Serial.println("CAN 60s done"); ESP32Can.CANWriteFrame(&BYD_1D0);
} ESP32Can.CANWriteFrame(&BYD_210);
//Serial.println("CAN 10s done");
}
//Send 60s message
if (currentMillis - previousMillis60s >= interval60s)
{
previousMillis60s = currentMillis;
ESP32Can.CANWriteFrame(&BYD_190);
//Serial.println("CAN 60s done");
}
}
} }
void send_intial_data() void send_intial_data()