limit for error events thermalcontroller + dummy beta
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
This commit is contained in:
@ -91,22 +91,23 @@ void ThermalController::performControlOperation() {
|
||||
break;
|
||||
}
|
||||
|
||||
ReturnValue_t result = sensorTemperatures.read();
|
||||
if (result == returnvalue::OK) {
|
||||
copySensors();
|
||||
sensorTemperatures.commit();
|
||||
{
|
||||
PoolReadGuard pg(&sensorTemperatures);
|
||||
if (pg.getReadResult() == returnvalue::OK) {
|
||||
copySensors();
|
||||
}
|
||||
}
|
||||
|
||||
result = susTemperatures.read();
|
||||
if (result == returnvalue::OK) {
|
||||
copySus();
|
||||
susTemperatures.commit();
|
||||
{
|
||||
PoolReadGuard pg(&susTemperatures);
|
||||
if (pg.getReadResult() == returnvalue::OK) {
|
||||
copySus();
|
||||
}
|
||||
}
|
||||
|
||||
result = deviceTemperatures.read();
|
||||
if (result == returnvalue::OK) {
|
||||
copyDevices();
|
||||
deviceTemperatures.commit();
|
||||
{
|
||||
PoolReadGuard pg(&deviceTemperatures);
|
||||
if (pg.getReadResult() == returnvalue::OK) {
|
||||
copyDevices();
|
||||
}
|
||||
}
|
||||
|
||||
performThermalModuleCtrl();
|
||||
@ -1178,7 +1179,8 @@ void ThermalController::ctrlPcduAcu() {
|
||||
if (chooseHeater(switchNr, redSwitchNr)) {
|
||||
bool sensorTempAvailable = true;
|
||||
|
||||
if (deviceTemperatures.acu.value[0] != INVALID_TEMPERATURE) { //TODO: war invalid aber Wert 0 stat 999
|
||||
if (deviceTemperatures.acu.value[0] !=
|
||||
INVALID_TEMPERATURE) { // TODO: war invalid aber Wert 0 stat 999
|
||||
sensorTemp = deviceTemperatures.acu.value[0];
|
||||
} else if (deviceTemperatures.acu.value[1] != INVALID_TEMPERATURE) {
|
||||
sensorTemp = deviceTemperatures.acu.value[1];
|
||||
@ -1426,10 +1428,22 @@ bool ThermalController::selectAndReadSensorTemp() {
|
||||
for (unsigned i = 0; i < numSensors; i++) {
|
||||
if (sensors[i].first and sensors[i].second != INVALID_TEMPERATURE) {
|
||||
sensorTemp = sensors[i].second;
|
||||
errorCounters[thermalComponent] = 0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, thermalComponent);
|
||||
|
||||
errorCounters[thermalComponent] ++;
|
||||
if(thermalComponent != rw and thermalComponent != acsBoard){
|
||||
if (errorCounters[thermalComponent] <= 3){
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, thermalComponent);
|
||||
}
|
||||
}else{
|
||||
if (errorCounters[thermalComponent] <= 8){
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, thermalComponent);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1458,5 +1472,5 @@ void ThermalController::resetSensorsArray() {
|
||||
validValuePair.first = false;
|
||||
validValuePair.second = INVALID_TEMPERATURE;
|
||||
}
|
||||
thermalComponent = none;
|
||||
thermalComponent = NONE;
|
||||
}
|
||||
|
@ -34,31 +34,33 @@ struct TempLimits {
|
||||
float nopUpperLimit;
|
||||
};
|
||||
|
||||
enum ThermalComponents {
|
||||
none,
|
||||
acsBoard,
|
||||
mgt,
|
||||
rw,
|
||||
str,
|
||||
ifBoard,
|
||||
tcsBoard,
|
||||
obc,
|
||||
obcIfBoard,
|
||||
sBandTransceiver,
|
||||
pcduP60Board,
|
||||
pcduAcu,
|
||||
pcduPdu,
|
||||
plPcduBoard,
|
||||
plocMissionBoard,
|
||||
plocProcessingBoard,
|
||||
dac,
|
||||
camera,
|
||||
dro,
|
||||
x8,
|
||||
hpa,
|
||||
tx,
|
||||
mpa,
|
||||
scexBoard
|
||||
enum ThermalComponents: uint8_t {
|
||||
//TODO: Großbuchstaben
|
||||
NONE = 0,
|
||||
acsBoard = 1,
|
||||
mgt = 2,
|
||||
rw = 3,
|
||||
str = 4,
|
||||
ifBoard = 5,
|
||||
tcsBoard = 6,
|
||||
obc = 7,
|
||||
obcIfBoard = 8,
|
||||
sBandTransceiver = 9,
|
||||
pcduP60Board = 10,
|
||||
pcduAcu = 11,
|
||||
pcduPdu = 12,
|
||||
plPcduBoard = 13,
|
||||
plocMissionBoard = 14,
|
||||
plocProcessingBoard = 15,
|
||||
dac = 16,
|
||||
camera = 17,
|
||||
dro = 18,
|
||||
x8 = 19,
|
||||
hpa = 20,
|
||||
tx = 21,
|
||||
mpa = 22,
|
||||
scexBoard = 23,
|
||||
NUM_ENTRIES
|
||||
};
|
||||
|
||||
class ThermalController : public ExtendedControllerBase {
|
||||
@ -173,9 +175,10 @@ class ThermalController : public ExtendedControllerBase {
|
||||
TempLimits scexBoardLimits = TempLimits(-60.0, -40.0, 80.0, 85.0, 150.0);
|
||||
|
||||
double sensorTemp = INVALID_TEMPERATURE;
|
||||
ThermalComponents thermalComponent = none;
|
||||
ThermalComponents thermalComponent = NONE;
|
||||
bool redSwitchNrInUse = false;
|
||||
bool componentAboveCutOffLimit = false;
|
||||
uint8_t errorCounters[32];
|
||||
|
||||
// Initial delay to make sure all pool variables have been initialized their owners
|
||||
Countdown initialCountdown = Countdown(DELAY);
|
||||
|
Reference in New Issue
Block a user