From 8bfe2405cdd56b3fa5d5bcc4151260c76509fa89 Mon Sep 17 00:00:00 2001 From: Irini Kosmidou Date: Mon, 19 Dec 2022 18:30:22 +0100 Subject: [PATCH] changes thermal control --- mission/controller/ThermalController.cpp | 115 ++++++++++++++++++----- mission/controller/ThermalController.h | 4 +- 2 files changed, 95 insertions(+), 24 deletions(-) diff --git a/mission/controller/ThermalController.cpp b/mission/controller/ThermalController.cpp index bcb448a0..53530634 100644 --- a/mission/controller/ThermalController.cpp +++ b/mission/controller/ThermalController.cpp @@ -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; } -} \ No newline at end of file +} + +void ThermalController::ctrlComponentTemperature(heater::Switchers switchNr, heater::Switchers redSwitchNr, TempLimits *tempLimit) { + + chooseHeater(switchNr, redSwitchNr); + + if (heaterAvailable) { + //chooseSensor(); //TODO + + if (sensorTempAvailable) { + ctrlHeater(switchNr, redSwitchNr, tempLimit); + } + } +} + diff --git a/mission/controller/ThermalController.h b/mission/controller/ThermalController.h index 3094b8de..35707ff5 100644 --- a/mission/controller/ThermalController.h +++ b/mission/controller/ThermalController.h @@ -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);