changes thermal control
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
Irini Kosmidou 2022-12-19 18:30:22 +01:00
parent 6365f497a7
commit 8bfe2405cd
2 changed files with 95 additions and 24 deletions

View File

@ -975,7 +975,9 @@ void ThermalController::copyDevices() {
}
}
void ThermalController::ctrlAcsBoard() {}
void ThermalController::ctrlAcsBoard() {
ctrlComponentTemperature(heater::HEATER_2_ACS_BRD, heater::HEATER_0_OBC_BRD, &acsBoardLimits);
}
void ThermalController::ctrlMgt() {
heater::Switchers switchNr = heater::HEATER_2_ACS_BRD;
heater::Switchers redSwitchNr = heater::HEATER_3_PCDU_PDU;
@ -984,8 +986,7 @@ void ThermalController::ctrlMgt() {
if (heaterAvailable) {
chooseSensor(switchNr, sensorTemperatures.sensor_magnettorquer.value,
deviceTemperatures.mgt.value,
sensorTemperatures.sensor_plpcdu_heatspreader.value,
deviceTemperatures.mgt.value, sensorTemperatures.sensor_plpcdu_heatspreader.value,
sensorTemperatures.sensor_magnettorquer.isValid(),
deviceTemperatures.mgt.isValid(),
sensorTemperatures.sensor_plpcdu_heatspreader.isValid());
@ -996,7 +997,9 @@ void ThermalController::ctrlMgt() {
}
}
void ThermalController::ctrlRw() {}
void ThermalController::ctrlRw() {
ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_6_DRO, &rwLimits);
}
void ThermalController::ctrlStr() {
heater::Switchers switchNr = heater::HEATER_5_STR;
@ -1006,11 +1009,9 @@ void ThermalController::ctrlStr() {
if (heaterAvailable) {
chooseSensor(switchNr, sensorTemperatures.sensor_startracker.value,
deviceTemperatures.startracker.value,
sensorTemperatures.sensor_dro.value,
deviceTemperatures.startracker.value, sensorTemperatures.sensor_dro.value,
sensorTemperatures.sensor_startracker.isValid(),
deviceTemperatures.startracker.isValid(),
sensorTemperatures.sensor_dro.isValid());
deviceTemperatures.startracker.isValid(), sensorTemperatures.sensor_dro.isValid());
if (sensorTempAvailable) {
ctrlHeater(switchNr, redSwitchNr, &strLimits);
@ -1025,8 +1026,7 @@ void ThermalController::ctrlIfBoard() {
if (heaterAvailable) {
chooseSensor(switchNr, sensorTemperatures.tmp1075IfBrd.value,
sensorTemperatures.sensor_magnettorquer.value,
deviceTemperatures.mgm2SideB.value,
sensorTemperatures.sensor_magnettorquer.value, deviceTemperatures.mgm2SideB.value,
sensorTemperatures.tmp1075IfBrd.isValid(),
sensorTemperatures.sensor_magnettorquer.isValid(),
deviceTemperatures.mgm2SideB.isValid());
@ -1036,17 +1036,71 @@ void ThermalController::ctrlIfBoard() {
}
}
}
void ThermalController::ctrlTcsBoard() {}
void ThermalController::ctrlObc() {}
void ThermalController::ctrlObcIfBoard() {}
void ThermalController::ctrlSBandTransceiver() {}
void ThermalController::ctrlPcduP60Board() {}
void ThermalController::ctrlPcduAcu() {}
void ThermalController::ctrlPcduPdu() {}
void ThermalController::ctrlPlPcduBoard() {}
void ThermalController::ctrlPlocMissionBoard() {}
void ThermalController::ctrlPlocProcessingBoard() {}
void ThermalController::ctrlDac() {}
void ThermalController::ctrlTcsBoard() {
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD, &tcsBoardLimits);
}
void ThermalController::ctrlObc() {
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD, &obcLimits);
}
void ThermalController::ctrlObcIfBoard() {
ctrlComponentTemperature(heater::HEATER_0_OBC_BRD, heater::HEATER_2_ACS_BRD, &obcIfBoardLimits);
}
void ThermalController::ctrlSBandTransceiver() {
ctrlComponentTemperature(heater::HEATER_7_S_BAND, heater::HEATER_4_CAMERA, &sBandTransceiverLimits);
}
void ThermalController::ctrlPcduP60Board() {
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, &pcduP60BoardLimits);
}
void ThermalController::ctrlPcduAcu() {
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, &pcduAcuLimits);
}
void ThermalController::ctrlPcduPdu() {
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, &pcduPduLimits);
}
void ThermalController::ctrlPlPcduBoard() {
ctrlComponentTemperature(heater::HEATER_3_PCDU_PDU, heater::HEATER_2_ACS_BRD, &plPcduBoardLimits);
}
void ThermalController::ctrlPlocMissionBoard() {
ctrlComponentTemperature(heater::HEATER_1_PLOC_PROC_BRD, heater::HEATER_0_OBC_BRD, &plocMissionBoardLimits);
}
void ThermalController::ctrlPlocProcessingBoard() {
heater::Switchers switchNr = heater::HEATER_1_PLOC_PROC_BRD;
heater::Switchers redSwitchNr = heater::HEATER_0_OBC_BRD;
chooseHeater(switchNr, redSwitchNr);
if (heaterAvailable) {
chooseSensor(switchNr, sensorTemperatures.sensor_ploc_missionboard.value,
sensorTemperatures.sensor_ploc_heatspreader.value,
sensorTemperatures.sensor_dac_heatspreader.value,
sensorTemperatures.sensor_ploc_missionboard.isValid(),
sensorTemperatures.sensor_ploc_heatspreader.isValid(),
sensorTemperatures.sensor_dac_heatspreader.isValid());
if (sensorTempAvailable) {
ctrlHeater(switchNr, redSwitchNr, &plocProcessingBoardLimits);
}
}
}
void ThermalController::ctrlDac() {
heater::Switchers switchNr = heater::HEATER_1_PLOC_PROC_BRD;
heater::Switchers redSwitchNr = heater::HEATER_0_OBC_BRD;
chooseHeater(switchNr, redSwitchNr);
if (heaterAvailable) {
chooseSensor(switchNr, sensorTemperatures.sensor_dac_heatspreader.value,
sensorTemperatures.sensor_ploc_missionboard.value,
sensorTemperatures.sensor_ploc_heatspreader.value,
sensorTemperatures.sensor_dac_heatspreader.isValid(),
sensorTemperatures.sensor_ploc_missionboard.isValid(),
sensorTemperatures.sensor_ploc_heatspreader.isValid());
if (sensorTempAvailable) {
ctrlHeater(switchNr, redSwitchNr, &dacLimits);
}
}
}
void ThermalController::ctrlCameraBody() {
heater::Switchers switchNr = heater::HEATER_4_CAMERA;
heater::Switchers redSwitchNr = heater::HEATER_6_DRO;
@ -1072,7 +1126,8 @@ void ThermalController::ctrlTx() {}
void ThermalController::ctrlMpa() {}
void ThermalController::ctrlScexBoard() {}
void ThermalController::ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr, struct TempLimits *tempLimit) {
void ThermalController::ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr,
struct TempLimits* tempLimit) {
// Heater off
if (not heaterHandler.checkSwitchState(switchNr)) {
// TODO: check if OP or NOP
@ -1128,4 +1183,18 @@ void ThermalController::chooseSensor(heater::Switchers switchNr, float sensorVal
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
sensorTempAvailable = false;
}
}
}
void ThermalController::ctrlComponentTemperature(heater::Switchers switchNr, heater::Switchers redSwitchNr, TempLimits *tempLimit) {
chooseHeater(switchNr, redSwitchNr);
if (heaterAvailable) {
//chooseSensor(); //TODO
if (sensorTempAvailable) {
ctrlHeater(switchNr, redSwitchNr, tempLimit);
}
}
}

View File

@ -154,7 +154,9 @@ class ThermalController : public ExtendedControllerBase {
void copySus();
void copyDevices();
void ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr, struct TempLimits *tempLimit);
void ctrlComponentTemperature(heater::Switchers switchNr, heater::Switchers redSwitchNr, TempLimits *tempLimit);
void ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr,
struct TempLimits* tempLimit);
void chooseHeater(heater::Switchers& switchNr, heater::Switchers redSwitchNr);
void chooseSensor(heater::Switchers switchNr, float sensorValue1, float sensorValue2,
float sensorValue3, bool sensor1Valid, bool sensor2Valid, bool sensor3Valid);