mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-03 09:49:32 +02:00
Add event for using missing interface
This commit is contained in:
parent
4f508dba86
commit
d8b91eb34e
5 changed files with 20 additions and 14 deletions
|
@ -897,7 +897,9 @@ void transmit_can(CAN_frame_t* tx_frame, int interface) {
|
||||||
MCP2515Frame.data[i] = tx_frame->data.u8[i];
|
MCP2515Frame.data[i] = tx_frame->data.u8[i];
|
||||||
}
|
}
|
||||||
can.tryToSend(MCP2515Frame);
|
can.tryToSend(MCP2515Frame);
|
||||||
#endif
|
#else // Interface not compiled, and settings try to use it
|
||||||
|
set_event(EVENT_INTERFACE_MISSING, interface);
|
||||||
|
#endif //DUAL_CAN
|
||||||
} break;
|
} break;
|
||||||
case CAN_ADDON_FD_MCP2518:
|
case CAN_ADDON_FD_MCP2518:
|
||||||
#ifdef CAN_FD
|
#ifdef CAN_FD
|
||||||
|
@ -909,7 +911,9 @@ void transmit_can(CAN_frame_t* tx_frame, int interface) {
|
||||||
MCP2518Frame.data[i] = tx_frame->data.u8[i];
|
MCP2518Frame.data[i] = tx_frame->data.u8[i];
|
||||||
}
|
}
|
||||||
canfd.tryToSend(MCP2518Frame);
|
canfd.tryToSend(MCP2518Frame);
|
||||||
#endif
|
#else // Interface not compiled, and settings try to use it
|
||||||
|
set_event(EVENT_INTERFACE_MISSING, interface);
|
||||||
|
#endif //CAN_FD
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Invalid interface sent with function call. TODO: Raise event that coders messed up
|
// Invalid interface sent with function call. TODO: Raise event that coders messed up
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
#include "src/devboard/hal/hal.h"
|
#include "src/devboard/hal/hal.h"
|
||||||
/* This file contains all the battery settings and limits */
|
/* This file contains all the battery settings and limits */
|
||||||
/* They can be defined here, or later on in the WebUI */
|
/* They can be defined here, or later on in the WebUI */
|
||||||
|
/* Most important is to select which CAN interface each component is connected to */
|
||||||
/* Select which CAN interface each component is connected to */
|
|
||||||
/*
|
/*
|
||||||
CAN_NATIVE = Native CAN port on the LilyGo & Stark hardware
|
CAN_NATIVE = Native CAN port on the LilyGo & Stark hardware
|
||||||
CANFD_NATIVE = Native CANFD port on the Stark CMR hardware
|
CANFD_NATIVE = Native CANFD port on the Stark CMR hardware
|
||||||
|
@ -14,11 +13,10 @@ CAN_ADDON_FD_MCP2518 = Add-on CAN-FD MCP2518 connected to GPIO pins
|
||||||
|
|
||||||
volatile CAN_Configuration can_config = {
|
volatile CAN_Configuration can_config = {
|
||||||
.battery = CAN_NATIVE, // Which CAN is your battery connected to?
|
.battery = CAN_NATIVE, // Which CAN is your battery connected to?
|
||||||
.inverter = CAN_NATIVE // Which CAN is your inverter connected to? (No need to configure incase you use RS485)
|
.inverter = CAN_NATIVE, // Which CAN is your inverter connected to? (No need to configure incase you use RS485)
|
||||||
.battery_double = CAN_ADDON_MCP2515, // (OPTIONAL) Which CAN is your second battery connected to?
|
.battery_double = CAN_ADDON_MCP2515, // (OPTIONAL) Which CAN is your second battery connected to?
|
||||||
.charger = CAN_NATIVE; // (OPTIONAL) Which CAN is your charger connected to?
|
.charger = CAN_NATIVE // (OPTIONAL) Which CAN is your charger connected to?
|
||||||
}
|
};
|
||||||
;
|
|
||||||
|
|
||||||
#ifdef WEBSERVER
|
#ifdef WEBSERVER
|
||||||
volatile uint8_t AccessPointEnabled = true; //Set to either true/false to enable direct wifi access point
|
volatile uint8_t AccessPointEnabled = true; //Set to either true/false to enable direct wifi access point
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
/* Select inverter communication protocol. See Wiki for which to use with your inverter: https://github.com/dalathegreat/BYD-Battery-Emulator-For-Gen24/wiki */
|
/* Select inverter communication protocol. See Wiki for which to use with your inverter: https://github.com/dalathegreat/BYD-Battery-Emulator-For-Gen24/wiki */
|
||||||
//#define BYD_CAN //Enable this line to emulate a "BYD Battery-Box Premium HVS" over CAN Bus
|
//#define BYD_CAN //Enable this line to emulate a "BYD Battery-Box Premium HVS" over CAN Bus
|
||||||
//#define BYD_MODBUS //Enable this line to emulate a "BYD 11kWh HVM battery" over Modbus RTU
|
#define BYD_MODBUS //Enable this line to emulate a "BYD 11kWh HVM battery" over Modbus RTU
|
||||||
//#define LUNA2000_MODBUS //Enable this line to emulate a "Luna2000 battery" over Modbus RTU
|
//#define LUNA2000_MODBUS //Enable this line to emulate a "Luna2000 battery" over Modbus RTU
|
||||||
//#define PYLON_CAN //Enable this line to emulate a "Pylontech battery" over CAN bus
|
//#define PYLON_CAN //Enable this line to emulate a "Pylontech battery" over CAN bus
|
||||||
//#define SMA_CAN //Enable this line to emulate a "BYD Battery-Box H 8.9kWh, 7 mod" over CAN bus
|
//#define SMA_CAN //Enable this line to emulate a "BYD Battery-Box H 8.9kWh, 7 mod" over CAN bus
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
//#define INTERLOCK_REQUIRED //Nissan LEAF specific setting, if enabled requires both high voltage conenctors to be seated before starting
|
//#define INTERLOCK_REQUIRED //Nissan LEAF specific setting, if enabled requires both high voltage conenctors to be seated before starting
|
||||||
//#define CONTACTOR_CONTROL //Enable this line to have pins 25,32,33 handle automatic precharge/contactor+/contactor- closing sequence
|
//#define CONTACTOR_CONTROL //Enable this line to have pins 25,32,33 handle automatic precharge/contactor+/contactor- closing sequence
|
||||||
//#define PWM_CONTACTOR_CONTROL //Enable this line to use PWM logic for contactors, which lower power consumption and heat generation
|
//#define PWM_CONTACTOR_CONTROL //Enable this line to use PWM logic for contactors, which lower power consumption and heat generation
|
||||||
//#define DUAL_CAN //Enable this line to activate an isolated secondary CAN Bus using add-on MCP2515 controller (Needed for some inverters / double battery)
|
#define DUAL_CAN //Enable this line to activate an isolated secondary CAN Bus using add-on MCP2515 controller (Needed for some inverters / double battery)
|
||||||
//#define CAN_FD //Enable this line to activate an isolated secondary CAN-FD bus using add-on MCP2517FD controller (Needed for some batteries)
|
//#define CAN_FD //Enable this line to activate an isolated secondary CAN-FD bus using add-on MCP2517FD controller (Needed for some batteries)
|
||||||
//#define SERIAL_LINK_RECEIVER //Enable this line to receive battery data over RS485 pins from another Lilygo (This LilyGo interfaces with inverter)
|
//#define SERIAL_LINK_RECEIVER //Enable this line to receive battery data over RS485 pins from another Lilygo (This LilyGo interfaces with inverter)
|
||||||
//#define SERIAL_LINK_TRANSMITTER //Enable this line to send battery data over RS485 pins to another Lilygo (This LilyGo interfaces with battery)
|
//#define SERIAL_LINK_TRANSMITTER //Enable this line to send battery data over RS485 pins to another Lilygo (This LilyGo interfaces with battery)
|
||||||
|
@ -87,8 +87,8 @@
|
||||||
typedef enum { CAN_NATIVE = 0, CANFD_NATIVE = 1, CAN_ADDON_MCP2515 = 2, CAN_ADDON_FD_MCP2518 = 3 } CAN_Interface;
|
typedef enum { CAN_NATIVE = 0, CANFD_NATIVE = 1, CAN_ADDON_MCP2515 = 2, CAN_ADDON_FD_MCP2518 = 3 } CAN_Interface;
|
||||||
typedef struct {
|
typedef struct {
|
||||||
CAN_Interface battery;
|
CAN_Interface battery;
|
||||||
CAN_Interface battery_double;
|
|
||||||
CAN_Interface inverter;
|
CAN_Interface inverter;
|
||||||
|
CAN_Interface battery_double;
|
||||||
CAN_Interface charger;
|
CAN_Interface charger;
|
||||||
} CAN_Configuration;
|
} CAN_Configuration;
|
||||||
extern volatile CAN_Configuration can_config;
|
extern volatile CAN_Configuration can_config;
|
||||||
|
|
|
@ -163,6 +163,7 @@ void init_events(void) {
|
||||||
events.entries[EVENT_PRECHARGE_FAILURE].level = EVENT_LEVEL_INFO;
|
events.entries[EVENT_PRECHARGE_FAILURE].level = EVENT_LEVEL_INFO;
|
||||||
events.entries[EVENT_INTERNAL_OPEN_FAULT].level = EVENT_LEVEL_ERROR;
|
events.entries[EVENT_INTERNAL_OPEN_FAULT].level = EVENT_LEVEL_ERROR;
|
||||||
events.entries[EVENT_INVERTER_OPEN_CONTACTOR].level = EVENT_LEVEL_INFO;
|
events.entries[EVENT_INVERTER_OPEN_CONTACTOR].level = EVENT_LEVEL_INFO;
|
||||||
|
events.entries[EVENT_INTERFACE_MISSING].level = EVENT_LEVEL_INFO;
|
||||||
events.entries[EVENT_MODBUS_INVERTER_MISSING].level = EVENT_LEVEL_INFO;
|
events.entries[EVENT_MODBUS_INVERTER_MISSING].level = EVENT_LEVEL_INFO;
|
||||||
events.entries[EVENT_ERROR_OPEN_CONTACTOR].level = EVENT_LEVEL_INFO;
|
events.entries[EVENT_ERROR_OPEN_CONTACTOR].level = EVENT_LEVEL_INFO;
|
||||||
events.entries[EVENT_CELL_UNDER_VOLTAGE].level = EVENT_LEVEL_ERROR;
|
events.entries[EVENT_CELL_UNDER_VOLTAGE].level = EVENT_LEVEL_ERROR;
|
||||||
|
@ -291,6 +292,8 @@ const char* get_event_message_string(EVENTS_ENUM_TYPE event) {
|
||||||
return "ERROR: High voltage cable removed while battery running. Opening contactors!";
|
return "ERROR: High voltage cable removed while battery running. Opening contactors!";
|
||||||
case EVENT_INVERTER_OPEN_CONTACTOR:
|
case EVENT_INVERTER_OPEN_CONTACTOR:
|
||||||
return "Info: Inverter side opened contactors. Normal operation.";
|
return "Info: Inverter side opened contactors. Normal operation.";
|
||||||
|
case EVENT_INTERFACE_MISSING:
|
||||||
|
return "Info: Configuration trying to use CAN interface not baked into the software. Recompile software!";
|
||||||
case EVENT_ERROR_OPEN_CONTACTOR:
|
case EVENT_ERROR_OPEN_CONTACTOR:
|
||||||
return "Info: Too much time spent in error state. Opening contactors, not safe to continue charging. "
|
return "Info: Too much time spent in error state. Opening contactors, not safe to continue charging. "
|
||||||
"Check other error code for reason!";
|
"Check other error code for reason!";
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
// #define INCLUDE_EVENTS_TEST // Enable to run an event test loop, see events_test_on_target.cpp
|
// #define INCLUDE_EVENTS_TEST // Enable to run an event test loop, see events_test_on_target.cpp
|
||||||
|
|
||||||
#define EE_MAGIC_HEADER_VALUE 0x0010 // 0x0000 to 0xFFFF
|
#define EE_MAGIC_HEADER_VALUE 0x0011 // 0x0000 to 0xFFFF
|
||||||
|
|
||||||
#define GENERATE_ENUM(ENUM) ENUM,
|
#define GENERATE_ENUM(ENUM) ENUM,
|
||||||
#define GENERATE_STRING(STRING) #STRING,
|
#define GENERATE_STRING(STRING) #STRING,
|
||||||
|
@ -59,6 +59,7 @@
|
||||||
XX(EVENT_PRECHARGE_FAILURE) \
|
XX(EVENT_PRECHARGE_FAILURE) \
|
||||||
XX(EVENT_INTERNAL_OPEN_FAULT) \
|
XX(EVENT_INTERNAL_OPEN_FAULT) \
|
||||||
XX(EVENT_INVERTER_OPEN_CONTACTOR) \
|
XX(EVENT_INVERTER_OPEN_CONTACTOR) \
|
||||||
|
XX(EVENT_INTERFACE_MISSING) \
|
||||||
XX(EVENT_MODBUS_INVERTER_MISSING) \
|
XX(EVENT_MODBUS_INVERTER_MISSING) \
|
||||||
XX(EVENT_ERROR_OPEN_CONTACTOR) \
|
XX(EVENT_ERROR_OPEN_CONTACTOR) \
|
||||||
XX(EVENT_CELL_UNDER_VOLTAGE) \
|
XX(EVENT_CELL_UNDER_VOLTAGE) \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue