ThermalController additions
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
This commit is contained in:
parent
0e2ae50fc5
commit
95fe06a09b
@ -109,9 +109,9 @@ void ThermalController::performControlOperation() {
|
||||
}
|
||||
|
||||
// TODO: Heater control
|
||||
// ctrlCameraBody();
|
||||
// ctrlAcsBoard();
|
||||
/*ctrlMgt();
|
||||
ctrlCameraBody();
|
||||
ctrlAcsBoard();
|
||||
ctrlMgt();
|
||||
ctrlRw();
|
||||
ctrlStr();
|
||||
ctrlIfBoard();
|
||||
@ -132,7 +132,7 @@ void ThermalController::performControlOperation() {
|
||||
ctrlHpa();
|
||||
ctrlTx();
|
||||
ctrlMpa();
|
||||
ctrlScexBoard();*/
|
||||
ctrlScexBoard();
|
||||
}
|
||||
|
||||
ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||
@ -984,16 +984,23 @@ void ThermalController::copyDevices() {
|
||||
}
|
||||
|
||||
void ThermalController::ctrlAcsBoard() {
|
||||
// TODO: add red sensors, check sensor 4
|
||||
// TODO: check sensor 4; A:MGM1(int); B: MGM3(int)
|
||||
heater::Switchers switchNr = heater::HEATER_2_ACS_BRD;
|
||||
heater::Switchers redSwitchNr = heater::HEATER_0_OBC_BRD;
|
||||
chooseHeater(switchNr, redSwitchNr);
|
||||
|
||||
if (heaterAvailable) {
|
||||
/*chooseOf5Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA,
|
||||
deviceTemperatures.gyro1SideA, deviceTemperatures.mgt,
|
||||
sensorTemperatures.sensor_tcs_board);*/
|
||||
|
||||
// A side
|
||||
chooseOf5Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA,
|
||||
deviceTemperatures.gyro1SideA, deviceTemperatures.mgm0SideA,
|
||||
sensorTemperatures.sensor_tcs_board);
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits);
|
||||
}
|
||||
// B side
|
||||
chooseOf5Sensors(switchNr, deviceTemperatures.gyro2SideB, deviceTemperatures.mgm2SideB,
|
||||
deviceTemperatures.gyro3SideB, deviceTemperatures.mgm2SideB,
|
||||
sensorTemperatures.sensor_tcs_board);
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits);
|
||||
}
|
||||
@ -1001,18 +1008,129 @@ void ThermalController::ctrlAcsBoard() {
|
||||
}
|
||||
|
||||
void ThermalController::ctrlMgt() {
|
||||
// TODO: cast deviceTemperatures.mgt
|
||||
// TODO: use heaterReq
|
||||
PoolReadGuard pg(&imtqThermalSet);
|
||||
ThermalComponentIF::StateRequest heaterReq =
|
||||
static_cast<ThermalComponentIF::StateRequest>(imtqThermalSet.heaterRequest.value);
|
||||
// ctrlComponentTemperature(heater::HEATER_2_ACS_BRD, heater::HEATER_3_PCDU_PDU,
|
||||
// sensorTemperatures.sensor_magnettorquer, deviceTemperatures.mgt,
|
||||
// sensorTemperatures.sensor_plpcdu_heatspreader, &mgtLimits);
|
||||
|
||||
if (heaterReq == ThermalComponentIF::STATE_REQUEST_OPERATIONAL) {
|
||||
heater::Switchers switchNr = heater::HEATER_2_ACS_BRD;
|
||||
heater::Switchers redSwitchNr = heater::HEATER_3_PCDU_PDU;
|
||||
|
||||
chooseHeater(switchNr, redSwitchNr);
|
||||
|
||||
if (heaterAvailable) {
|
||||
sensorTempAvailable = true;
|
||||
|
||||
if (sensorTemperatures.sensor_magnettorquer.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_magnettorquer.value;
|
||||
} else if (deviceTemperatures.mgt.isValid()) {
|
||||
sensorTemp = deviceTemperatures.mgt.value;
|
||||
} else if (sensorTemperatures.sensor_plpcdu_heatspreader.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_plpcdu_heatspreader.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
|
||||
}
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &mgtLimits);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ThermalController::ctrlRw() {
|
||||
// ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_6_DRO,
|
||||
// sensorTemperatures.sensor_rw1, deviceTemperatures.rw1, deviceTemperatures.rw3, &rwLimits);
|
||||
heater::Switchers switchNr = heater::HEATER_6_DRO;
|
||||
heater::Switchers redSwitchNr = heater::HEATER_6_DRO;
|
||||
redSwitchNrInUse = false;
|
||||
|
||||
if (heaterHandler.getHealth(switchNr) == HasHealthIF::HEALTHY) {
|
||||
// RW1
|
||||
sensorTempAvailable = true;
|
||||
|
||||
if (sensorTemperatures.sensor_rw1.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_rw1.value;
|
||||
} else if (deviceTemperatures.rw1.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw1.value;
|
||||
} else if (deviceTemperatures.rw4.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw4.value;
|
||||
} else if (sensorTemperatures.sensor_dro.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_dro.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
}
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &rwLimits);
|
||||
}
|
||||
// RW2
|
||||
sensorTempAvailable = true;
|
||||
if (deviceTemperatures.rw2.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw2.value;
|
||||
} else if (deviceTemperatures.rw3.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw3.value;
|
||||
} else if (sensorTemperatures.sensor_rw1.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_rw1.value;
|
||||
} else if (sensorTemperatures.sensor_dro.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_dro.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
}
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &rwLimits);
|
||||
}
|
||||
// RW3
|
||||
sensorTempAvailable = true;
|
||||
if (deviceTemperatures.rw3.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw3.value;
|
||||
} else if (deviceTemperatures.rw4.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw4.value;
|
||||
} else if (sensorTemperatures.sensor_rw1.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_rw1.value;
|
||||
} else if (sensorTemperatures.sensor_dro.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_dro.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
}
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &rwLimits);
|
||||
}
|
||||
// RW4
|
||||
sensorTempAvailable = true;
|
||||
if (deviceTemperatures.rw4.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw4.value;
|
||||
} else if (deviceTemperatures.rw1.isValid()) {
|
||||
sensorTemp = deviceTemperatures.rw1.value;
|
||||
} else if (sensorTemperatures.sensor_rw1.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_rw1.value;
|
||||
} else if (sensorTemperatures.sensor_dro.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_dro.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
}
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &rwLimits);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ThermalController::ctrlStr() {
|
||||
@ -1079,9 +1197,10 @@ void ThermalController::ctrlPcduAcu() {
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &pcduAcuLimits);
|
||||
}
|
||||
|
||||
}
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &pcduAcuLimits);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1100,26 +1219,12 @@ void ThermalController::ctrlPlPcduBoard() {
|
||||
chooseHeater(switchNr, redSwitchNr);
|
||||
|
||||
if (heaterAvailable) {
|
||||
sensorTempAvailable = true;
|
||||
|
||||
if (sensorTemperatures.tmp1075PlPcdu0.isValid()) {
|
||||
sensorTemp = sensorTemperatures.tmp1075PlPcdu0.value;
|
||||
} else if (sensorTemperatures.tmp1075PlPcdu1.isValid()) {
|
||||
sensorTemp = sensorTemperatures.tmp1075PlPcdu1.value;
|
||||
} else if (deviceTemperatures.adcPayloadPcdu.isValid()) {
|
||||
sensorTemp = deviceTemperatures.adcPayloadPcdu.value;
|
||||
} else if (sensorTemperatures.sensor_plpcdu_heatspreader.isValid()) {
|
||||
sensorTemp = sensorTemperatures.sensor_plpcdu_heatspreader.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &plPcduBoardLimits);
|
||||
}
|
||||
}
|
||||
chooseOf4Sensors(switchNr, sensorTemperatures.tmp1075PlPcdu0, sensorTemperatures.tmp1075PlPcdu1,
|
||||
deviceTemperatures.adcPayloadPcdu,
|
||||
sensorTemperatures.sensor_plpcdu_heatspreader);
|
||||
if (sensorTempAvailable) {
|
||||
ctrlHeater(switchNr, redSwitchNr, &plPcduBoardLimits);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1258,6 +1363,27 @@ void ThermalController::ctrlComponentTemperature(heater::Switchers switchNr,
|
||||
}
|
||||
}
|
||||
}
|
||||
void ThermalController::chooseOf4Sensors(heater::Switchers switchNr, const lp_float_t& sensor1,
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3,
|
||||
const lp_float_t& sensor4) {
|
||||
sensorTempAvailable = true;
|
||||
|
||||
if (sensor1.isValid()) {
|
||||
sensorTemp = sensor1.value;
|
||||
} else if (sensor2.isValid()) {
|
||||
sensorTemp = sensor2.value;
|
||||
} else if (sensor3.isValid()) {
|
||||
sensorTemp = sensor3.value;
|
||||
} else if (sensor4.isValid()) {
|
||||
sensorTemp = sensor4.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
}
|
||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||
sensorTempAvailable = false;
|
||||
}
|
||||
}
|
||||
void ThermalController::chooseOf5Sensors(heater::Switchers switchNr, const lp_float_t& sensor1,
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3,
|
||||
const lp_float_t& sensor4, const lp_float_t& sensor5) {
|
||||
@ -1270,9 +1396,9 @@ void ThermalController::chooseOf5Sensors(heater::Switchers switchNr, const lp_fl
|
||||
} else if (sensor3.isValid()) {
|
||||
sensorTemp = sensor3.value;
|
||||
} else if (sensor4.isValid()) {
|
||||
sensorTemp = sensor4.value;
|
||||
sensorTemp = sensor4.value;
|
||||
} else if (sensor5.isValid()) {
|
||||
sensorTemp = sensor5.value;
|
||||
sensorTemp = sensor5.value;
|
||||
} else {
|
||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||
|
@ -160,15 +160,19 @@ class ThermalController : public ExtendedControllerBase {
|
||||
void copySus();
|
||||
void copyDevices();
|
||||
|
||||
void ctrlComponentTemperature(
|
||||
heater::Switchers switchNr, heater::Switchers redSwitchNr, const lp_float_t& sensor1,
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3, TempLimits* tempLimit); // TODO sensor 4, 5 = default argument, if not available
|
||||
void ctrlComponentTemperature(heater::Switchers switchNr, heater::Switchers redSwitchNr,
|
||||
const lp_float_t& sensor1, const lp_float_t& sensor2,
|
||||
const lp_float_t& sensor3, TempLimits* tempLimit);
|
||||
void ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr, TempLimits* tempLimit);
|
||||
void chooseHeater(heater::Switchers& switchNr, heater::Switchers redSwitchNr);
|
||||
void chooseSensor(heater::Switchers switchNr, const lp_float_t& sensor1,
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3);
|
||||
void chooseOf4Sensors(heater::Switchers switchNr, const lp_float_t& sensor1,
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3,
|
||||
const lp_float_t& sensor4);
|
||||
void chooseOf5Sensors(heater::Switchers switchNr, const lp_float_t& sensor1,
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3, const lp_float_t& sensor4, const lp_float_t& sensor5);
|
||||
const lp_float_t& sensor2, const lp_float_t& sensor3,
|
||||
const lp_float_t& sensor4, const lp_float_t& sensor5);
|
||||
|
||||
void ctrlAcsBoard();
|
||||
void ctrlMgt();
|
||||
|
Loading…
x
Reference in New Issue
Block a user