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
|
// TODO: Heater control
|
||||||
// ctrlCameraBody();
|
ctrlCameraBody();
|
||||||
// ctrlAcsBoard();
|
ctrlAcsBoard();
|
||||||
/*ctrlMgt();
|
ctrlMgt();
|
||||||
ctrlRw();
|
ctrlRw();
|
||||||
ctrlStr();
|
ctrlStr();
|
||||||
ctrlIfBoard();
|
ctrlIfBoard();
|
||||||
@ -132,7 +132,7 @@ void ThermalController::performControlOperation() {
|
|||||||
ctrlHpa();
|
ctrlHpa();
|
||||||
ctrlTx();
|
ctrlTx();
|
||||||
ctrlMpa();
|
ctrlMpa();
|
||||||
ctrlScexBoard();*/
|
ctrlScexBoard();
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
ReturnValue_t ThermalController::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||||
@ -984,16 +984,23 @@ void ThermalController::copyDevices() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ThermalController::ctrlAcsBoard() {
|
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 switchNr = heater::HEATER_2_ACS_BRD;
|
||||||
heater::Switchers redSwitchNr = heater::HEATER_0_OBC_BRD;
|
heater::Switchers redSwitchNr = heater::HEATER_0_OBC_BRD;
|
||||||
chooseHeater(switchNr, redSwitchNr);
|
chooseHeater(switchNr, redSwitchNr);
|
||||||
|
|
||||||
if (heaterAvailable) {
|
if (heaterAvailable) {
|
||||||
/*chooseOf5Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA,
|
// A side
|
||||||
deviceTemperatures.gyro1SideA, deviceTemperatures.mgt,
|
chooseOf5Sensors(switchNr, deviceTemperatures.gyro0SideA, deviceTemperatures.mgm0SideA,
|
||||||
sensorTemperatures.sensor_tcs_board);*/
|
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) {
|
if (sensorTempAvailable) {
|
||||||
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits);
|
ctrlHeater(switchNr, redSwitchNr, &acsBoardLimits);
|
||||||
}
|
}
|
||||||
@ -1001,18 +1008,129 @@ void ThermalController::ctrlAcsBoard() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ThermalController::ctrlMgt() {
|
void ThermalController::ctrlMgt() {
|
||||||
// TODO: cast deviceTemperatures.mgt
|
// TODO: use heaterReq
|
||||||
PoolReadGuard pg(&imtqThermalSet);
|
PoolReadGuard pg(&imtqThermalSet);
|
||||||
ThermalComponentIF::StateRequest heaterReq =
|
ThermalComponentIF::StateRequest heaterReq =
|
||||||
static_cast<ThermalComponentIF::StateRequest>(imtqThermalSet.heaterRequest.value);
|
static_cast<ThermalComponentIF::StateRequest>(imtqThermalSet.heaterRequest.value);
|
||||||
// ctrlComponentTemperature(heater::HEATER_2_ACS_BRD, heater::HEATER_3_PCDU_PDU,
|
|
||||||
// sensorTemperatures.sensor_magnettorquer, deviceTemperatures.mgt,
|
if (heaterReq == ThermalComponentIF::STATE_REQUEST_OPERATIONAL) {
|
||||||
// sensorTemperatures.sensor_plpcdu_heatspreader, &mgtLimits);
|
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() {
|
void ThermalController::ctrlRw() {
|
||||||
// ctrlComponentTemperature(heater::HEATER_6_DRO, heater::HEATER_6_DRO,
|
heater::Switchers switchNr = heater::HEATER_6_DRO;
|
||||||
// sensorTemperatures.sensor_rw1, deviceTemperatures.rw1, deviceTemperatures.rw3, &rwLimits);
|
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() {
|
void ThermalController::ctrlStr() {
|
||||||
@ -1079,9 +1197,10 @@ void ThermalController::ctrlPcduAcu() {
|
|||||||
}
|
}
|
||||||
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, switchNr);
|
||||||
sensorTempAvailable = false;
|
sensorTempAvailable = false;
|
||||||
if (sensorTempAvailable) {
|
|
||||||
ctrlHeater(switchNr, redSwitchNr, &pcduAcuLimits);
|
}
|
||||||
}
|
if (sensorTempAvailable) {
|
||||||
|
ctrlHeater(switchNr, redSwitchNr, &pcduAcuLimits);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1100,26 +1219,12 @@ void ThermalController::ctrlPlPcduBoard() {
|
|||||||
chooseHeater(switchNr, redSwitchNr);
|
chooseHeater(switchNr, redSwitchNr);
|
||||||
|
|
||||||
if (heaterAvailable) {
|
if (heaterAvailable) {
|
||||||
sensorTempAvailable = true;
|
chooseOf4Sensors(switchNr, sensorTemperatures.tmp1075PlPcdu0, sensorTemperatures.tmp1075PlPcdu1,
|
||||||
|
deviceTemperatures.adcPayloadPcdu,
|
||||||
if (sensorTemperatures.tmp1075PlPcdu0.isValid()) {
|
sensorTemperatures.sensor_plpcdu_heatspreader);
|
||||||
sensorTemp = sensorTemperatures.tmp1075PlPcdu0.value;
|
if (sensorTempAvailable) {
|
||||||
} else if (sensorTemperatures.tmp1075PlPcdu1.isValid()) {
|
ctrlHeater(switchNr, redSwitchNr, &plPcduBoardLimits);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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,
|
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& sensor2, const lp_float_t& sensor3,
|
||||||
const lp_float_t& sensor4, const lp_float_t& sensor5) {
|
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()) {
|
} else if (sensor3.isValid()) {
|
||||||
sensorTemp = sensor3.value;
|
sensorTemp = sensor3.value;
|
||||||
} else if (sensor4.isValid()) {
|
} else if (sensor4.isValid()) {
|
||||||
sensorTemp = sensor4.value;
|
sensorTemp = sensor4.value;
|
||||||
} else if (sensor5.isValid()) {
|
} else if (sensor5.isValid()) {
|
||||||
sensorTemp = sensor5.value;
|
sensorTemp = sensor5.value;
|
||||||
} else {
|
} else {
|
||||||
if (heaterHandler.checkSwitchState(switchNr)) {
|
if (heaterHandler.checkSwitchState(switchNr)) {
|
||||||
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
heaterHandler.switchHeater(switchNr, HeaterHandler::SwitchState::OFF);
|
||||||
|
@ -160,15 +160,19 @@ class ThermalController : public ExtendedControllerBase {
|
|||||||
void copySus();
|
void copySus();
|
||||||
void copyDevices();
|
void copyDevices();
|
||||||
|
|
||||||
void ctrlComponentTemperature(
|
void ctrlComponentTemperature(heater::Switchers switchNr, heater::Switchers redSwitchNr,
|
||||||
heater::Switchers switchNr, heater::Switchers redSwitchNr, const lp_float_t& sensor1,
|
const lp_float_t& sensor1, const lp_float_t& sensor2,
|
||||||
const lp_float_t& sensor2, const lp_float_t& sensor3, TempLimits* tempLimit); // TODO sensor 4, 5 = default argument, if not available
|
const lp_float_t& sensor3, TempLimits* tempLimit);
|
||||||
void ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr, TempLimits* tempLimit);
|
void ctrlHeater(heater::Switchers switchNr, heater::Switchers redSwitchNr, TempLimits* tempLimit);
|
||||||
void chooseHeater(heater::Switchers& switchNr, heater::Switchers redSwitchNr);
|
void chooseHeater(heater::Switchers& switchNr, heater::Switchers redSwitchNr);
|
||||||
void chooseSensor(heater::Switchers switchNr, const lp_float_t& sensor1,
|
void chooseSensor(heater::Switchers switchNr, const lp_float_t& sensor1,
|
||||||
const lp_float_t& sensor2, const lp_float_t& sensor3);
|
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,
|
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 ctrlAcsBoard();
|
||||||
void ctrlMgt();
|
void ctrlMgt();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user