80 for (uint8_t stringNumber = 0u; stringNumber <
BS_NR_OF_STRINGS; stringNumber++) {
147 for (uint8_t stringNumber = 0u; stringNumber <
BS_NR_OF_STRINGS; stringNumber++) {
284 uint32_t absStringCurrent_mA = (uint32_t)abs(pTablePackValues->
stringCurrent_mA[s]);
290 if (
true == stringOvercurrent) {
296 if (
true == cellOvercurrent) {
303 if (
true == stringOvercurrent) {
309 if (
true == cellOvercurrent) {
334 uint32_t absPackCurrent_mA = (uint32_t)abs(pTablePackValues->
packCurrent_mA);
338 if (
true == packOvercurrent) {
344 if (
true == packOvercurrent) {
Configuration of the battery cell (e.g., minimum and maximum cell voltage)
#define BC_TEMPERATURE_MAX_CHARGE_RSL_ddegC
Maximum temperature limit during charge.
#define BC_VOLTAGE_MIN_MSL_mV
Minimum cell voltage limit.
#define BC_TEMPERATURE_MIN_DISCHARGE_RSL_ddegC
Minimum temperature limit during discharge.
#define BC_TEMPERATURE_MIN_DISCHARGE_MOL_ddegC
Minimum temperature limit during discharge.
#define BC_TEMPERATURE_MIN_CHARGE_RSL_ddegC
Minimum temperature limit during discharge.
#define BC_TEMPERATURE_MAX_CHARGE_MSL_ddegC
Maximum temperature limit during charge.
#define BC_TEMPERATURE_MIN_CHARGE_MSL_ddegC
Minimum temperature limit during discharge.
#define BC_TEMPERATURE_MAX_DISCHARGE_RSL_ddegC
Maximum temperature limit during discharge.
#define BC_TEMPERATURE_MAX_DISCHARGE_MSL_ddegC
Maximum temperature limit during discharge.
#define BC_VOLTAGE_MAX_MOL_mV
Maximum cell voltage limit.
#define BC_VOLTAGE_MIN_MOL_mV
Minimum cell voltage limit.
#define BC_TEMPERATURE_MIN_DISCHARGE_MSL_ddegC
Minimum temperature limit during discharge.
#define BC_VOLTAGE_MAX_RSL_mV
Maximum cell voltage limit.
#define BC_VOLTAGE_DEEP_DISCHARGE_mV
Deep-discharge cell voltage limit.
#define BC_TEMPERATURE_MIN_CHARGE_MOL_ddegC
Minimum temperature limit during discharge.
#define BC_TEMPERATURE_MAX_CHARGE_MOL_ddegC
Maximum temperature limit during charge.
#define BC_TEMPERATURE_MAX_DISCHARGE_MOL_ddegC
Maximum temperature limit during discharge.
#define BC_VOLTAGE_MAX_MSL_mV
Maximum cell voltage limit.
#define BC_VOLTAGE_MIN_RSL_mV
Minimum cell voltage limit.
Configuration of the battery system (e.g., number of battery modules, battery cells,...
BMS_CURRENT_FLOW_STATE_e BMS_GetCurrentFlowDirection(int32_t current_mA)
Get current flow direction, current value as function parameter.
enum BMS_CURRENT_FLOW_STATE BMS_CURRENT_FLOW_STATE_e
DIAG_RETURNTYPE_e DIAG_Handler(DIAG_ID_e diag_id, DIAG_EVENT_e event, DIAG_IMPACT_LEVEL_e impact, uint32_t data)
DIAG_Handler provides generic error handling, based on diagnosis group.
@ DIAG_HANDLER_RETURN_ERR_OCCURRED
enum DIAG_RETURNTYPE DIAG_RETURNTYPE_e
@ DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_MSL
@ DIAG_ID_PACK_OVERCURRENT_CHARGE_MSL
@ DIAG_ID_CELLVOLTAGE_UNDERVOLTAGE_RSL
@ DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_MSL
@ DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_RSL
@ DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_RSL
@ DIAG_ID_CELLVOLTAGE_OVERVOLTAGE_MOL
@ DIAG_ID_OVERCURRENT_DISCHARGE_CELL_MSL
@ DIAG_ID_CELLVOLTAGE_OVERVOLTAGE_RSL
@ DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_RSL
@ DIAG_ID_TEMP_OVERTEMPERATURE_DISCHARGE_MOL
@ DIAG_ID_STRING_OVERCURRENT_CHARGE_MSL
@ DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_MSL
@ DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_MOL
@ DIAG_ID_TEMP_UNDERTEMPERATURE_CHARGE_MOL
@ DIAG_ID_PACK_OVERCURRENT_DISCHARGE_MSL
@ DIAG_ID_DEEP_DISCHARGE_DETECTED
@ DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_MOL
@ DIAG_ID_CURRENT_ON_OPEN_STRING
@ DIAG_ID_STRING_OVERCURRENT_DISCHARGE_MSL
@ DIAG_ID_OVERCURRENT_CHARGE_CELL_MSL
@ DIAG_ID_CELLVOLTAGE_UNDERVOLTAGE_MOL
@ DIAG_ID_CELLVOLTAGE_OVERVOLTAGE_MSL
@ DIAG_ID_TEMP_OVERTEMPERATURE_CHARGE_RSL
@ DIAG_ID_CELLVOLTAGE_UNDERVOLTAGE_MSL
@ DIAG_ID_TEMP_UNDERTEMPERATURE_DISCHARGE_MSL
#define FAS_ASSERT(x)
Assertion macro that asserts that x is true.
math library for often used math functions
#define NULL_PTR
Null pointer.
void SOA_CheckTemperatures(DATA_BLOCK_MIN_MAX_s *pMinimumMaximumCellTemperatures, DATA_BLOCK_PACK_VALUES_s *pCurrent)
checks the abidance by the safe operating area
void SOA_CheckVoltages(DATA_BLOCK_MIN_MAX_s *pMinimumMaximumCellVoltages)
checks the abidance by the safe operating area
void SOA_CheckSlaveTemperatures(void)
FOR FUTURE COMPATIBILITY; DUMMY FUNCTION; DO NOT USE.
void SOA_CheckCurrent(DATA_BLOCK_PACK_VALUES_s *pTablePackValues)
checks the abidance by the safe operating area
Header for SOA module, responsible for checking battery parameters against safety limits.
bool SOA_IsCurrentOnOpenString(BMS_CURRENT_FLOW_STATE_e currentDirection, uint8_t stringNumber)
Checks if string current is floating while contactors are open.
bool SOA_IsStringCurrentLimitViolated(uint32_t current_mA, BMS_CURRENT_FLOW_STATE_e currentDirection)
Checks if string current limit is violated.
bool SOA_IsCellCurrentLimitViolated(uint32_t current_mA, BMS_CURRENT_FLOW_STATE_e currentDirection)
Checks if cell current limit is violated.
int16_t maximumTemperature_ddegC[BS_NR_OF_STRINGS]
int16_t minimumTemperature_ddegC[BS_NR_OF_STRINGS]
int16_t maximumCellVoltage_mV[BS_NR_OF_STRINGS]
int16_t minimumCellVoltage_mV[BS_NR_OF_STRINGS]
int32_t stringCurrent_mA[BS_NR_OF_STRINGS]
uint8_t invalidPackCurrent
uint8_t invalidStringCurrent[BS_NR_OF_STRINGS]