pwr ctrl fdir
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good

This commit is contained in:
2023-09-27 14:46:45 +02:00
parent 1973bd2c5b
commit c486bb2cf3
3 changed files with 31 additions and 1 deletions

View File

@ -54,6 +54,12 @@ ReturnValue_t PowerController::getParameter(uint8_t domainId, uint8_t parameterI
case 0x3:
parameterWrapper->set(maxAllowedTimeDiff);
break;
case 0x4:
parameterWrapper->set(payloadLimit);
break;
case 0x5:
parameterWrapper->set(higherModesLimit);
break;
default:
return INVALID_IDENTIFIER_ID;
}
@ -213,7 +219,20 @@ void PowerController::calculateStateOfCharge() {
}
void PowerController::watchStateOfCharge() {
// ToDo: FDIR
if (pwrCtrlCoreHk.coulombCounterCharge.isValid()) {
if (not pwrLvlLowFlag and pwrCtrlCoreHk.coulombCounterCharge.value < payloadLimit) {
triggerEvent(power::POWER_LEVEL_LOW);
pwrLvlLowFlag = true;
} else {
pwrLvlLowFlag = false;
}
if (not pwrLvlCriticalFlag and pwrCtrlCoreHk.coulombCounterCharge.value < higherModesLimit) {
triggerEvent(power::POWER_LEVEL_CRITICAL);
pwrLvlCriticalFlag = true;
} else {
pwrLvlCriticalFlag = false;
}
}
}
ReturnValue_t PowerController::calculateOpenCircuitVoltageCharge() {

View File

@ -57,6 +57,8 @@ class PowerController : public ExtendedControllerBase, public ReceivesParameterM
float batteryMaximumCapacity = 2.6 * 2; // [Ah]
float coulombCounterVoltageUpperThreshold = 16.2e3; // [mV]
double maxAllowedTimeDiff = 0.5; // [s]
float payloadLimit = 0.75; // [%]
float higherModesLimit = 0.6; // [%]
// OCV Look-up-Table {[Ah],[V]}
static constexpr uint8_t LOOK_UP_TABLE_MAX_IDX = 99;
@ -111,6 +113,9 @@ class PowerController : public ExtendedControllerBase, public ReceivesParameterM
static constexpr int16_t INVALID_TOTAL_BATTERY_CURRENT = 0;
static constexpr float INVALID_SOC = -1;
bool pwrLvlLowFlag = false;
bool pwrLvlCriticalFlag = false;
// HK Datasets for Calculation
BpxBatteryHk bpxBatteryHk = BpxBatteryHk(objects::BPX_BATT_HANDLER);
P60Dock::CoreHkSet p60CoreHk = P60Dock::CoreHkSet(objects::P60DOCK_HANDLER);