Some error fixed. two main problem to solve at this point: adjust the periodic reading of the data through the dh, adjust the operations of the components (error in reading the target state).

This commit is contained in:
2021-09-14 21:09:06 +02:00
parent 868a461acb
commit 04cfb85311
18 changed files with 64 additions and 51 deletions

View File

@ -24,6 +24,13 @@ TCS_ThermalComponent::TCS_ThermalComponent(object_id_t reportingObjectId,
ThermalComponentIF::STATE_REQUEST_NON_OPERATIONAL),
Heater(Heater), RedundantHeater(RedundantHeater),
nopParameters({ parameters.lowerNopLimit, parameters.upperNopLimit }) {
//Set thermal state once, then leave to operator.
/*DataSet mySet;
PoolVariable<int8_t> writableTargetState(targetStatePoolId, &mySet, PoolVariableIF::VAR_WRITE);
writableTargetState = ThermalComponentIF::STATE_REQUEST_NON_OPERATIONAL;
mySet.commit(PoolVariableIF::VALID);*/
}
TCS_ThermalComponent::~TCS_ThermalComponent() {
@ -31,6 +38,7 @@ TCS_ThermalComponent::~TCS_ThermalComponent() {
ThermalComponentIF::HeaterRequest TCS_ThermalComponent::performOperation(uint8_t opCode, bool redundancy, bool dual) {
sif::debug<<"DEBUG_COMPONENT: 1"<<std::endl;
// Heater define the Internal State
if (Heater != NULL) {
Heater->performOperation(0);
@ -40,9 +48,11 @@ ThermalComponentIF::HeaterRequest TCS_ThermalComponent::performOperation(uint8_t
RedundantHeater->performOperation(0);
}
}
sif::debug<<"DEBUG_COMPONENT: 2"<<std::endl;
HeaterRequest request = HEATER_DONT_CARE;
request = CoreComponent::performOperation(0);
sif::debug<<"DEBUG_COMPONENT: 3"<<std::endl;
/*if (Heater == NULL) {
informComponentsAboutHeaterState(false, NONE, priority, request);
@ -56,26 +66,38 @@ ThermalComponentIF::HeaterRequest TCS_ThermalComponent::performOperation(uint8_t
//Components overwrite the module request.
heating = ((request == ThermalComponentIF::HEATER_REQUEST_ON) ||
(request == ThermalComponentIF::HEATER_REQUEST_EMERGENCY_ON));
sif::debug<<"DEBUG_COMPONENT: 4"<<std::endl;
}
// strategy NOT-PASSIVE as default
if (heating) {
ReturnValue_t result = Heater->set();
if (redundancy){
if (result != HasReturnvaluesIF::RETURN_OK || dual) {
sif::debug<<"DEBUG_COMPONENT: 5"<<std::endl;
RedundantHeater->set();
sif::debug<<"DEBUG_COMPONENT: 6"<<std::endl;
} else {
sif::debug<<"DEBUG_COMPONENT: 7"<<std::endl;
RedundantHeater->clear(false);
sif::debug<<"DEBUG_COMPONENT: 8"<<std::endl;
}
} else {
sif::debug<<"DEBUG_COMPONENT: 9"<<std::endl;
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::debug<<"DEBUG_COMPONENT: 10"<<std::endl;
Heater->clear(false);
sif::debug<<"DEBUG_COMPONENT: 11"<<std::endl;
}
}
else {
if (result != HasReturnvaluesIF::RETURN_OK)
Heater->clear(false);
}
} else {
sif::debug<<"DEBUG_COMPONENT: 12"<<std::endl;
Heater->clear(false);
RedundantHeater->clear(false);
sif::debug<<"DEBUG_COMPONENT: 13"<<std::endl;
}
sif::debug<<"DEBUG_COMPONENT: 14"<<std::endl;
/*if (strategy == PASSIVE) {
informComponentsAboutHeaterState(false, NONE, priority, request);

View File

@ -44,11 +44,9 @@ protected:
TCS_Heater *Heater;
TCS_Heater *RedundantHeater;
State getState(float temperature, CoreComponent::Parameters parameters,
int8_t targetState);
State getState(float temperature, CoreComponent::Parameters parameters, int8_t targetState);
virtual void checkLimits(State state);
virtual HeaterRequest getHeaterRequest(int8_t targetState, float temperature,
CoreComponent::Parameters parameters);
virtual HeaterRequest getHeaterRequest(int8_t targetState, float temperature, CoreComponent::Parameters parameters);
State getIgnoredState(int8_t state);
enum Informee {

View File

@ -10,17 +10,17 @@
ThermalController::ThermalController(object_id_t objectId, object_id_t powerSwitcher, size_t commandQueueDepth):
ControllerBase(objectId, 0, commandQueueDepth),
powerSwitcherId(powerSwitcher), TempValueVec(datapool::Temperature_value, &TCSData, PoolVariableIF::VAR_READ),
TEMPERATURE_SENSOR_CH1(objects::TCS_SENSOR_CH1, &TempValueVec[0], &TempValueVec, 0, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH1, &TCSData, NULL),
TEMPERATURE_SENSOR_CH2(objects::TCS_SENSOR_CH2, &TempValueVec[1], &TempValueVec, 1, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH2, &TCSData, NULL),
powerSwitcherId(powerSwitcher), TempValueVec(datapool::Temperature_value, &SensorData, PoolVariableIF::VAR_READ),
TEMPERATURE_SENSOR_CH1(objects::TCS_SENSOR_CH1, &TempValueVec[0], &TempValueVec, 0, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH1, &SensorData, NULL),
TEMPERATURE_SENSOR_CH2(objects::TCS_SENSOR_CH2, &TempValueVec[1], &TempValueVec, 1, TEMPERATURE_SENSOR_CONFIG, datapool::TEMP_SENSOR_CH2, &SensorData, NULL),
HEATER_1(objects::TCS_HEATER_1, objects::TCS_SWITCH_1),
REDUNDANT_HEATER_1(objects::TCS_REDUNDANT_HEATER_1, objects::TCS_SWITCH_1R),
HEATER_2(objects::TCS_HEATER_2, objects::TCS_SWITCH_2),
REDUNDANT_HEATER_2(objects::TCS_REDUNDANT_HEATER_2, objects::TCS_SWITCH_2R),
TEMPERATURE_COMPONENT_1(objects::TCS_COMPONENT_1, COMPONENT_DOMAIN_ID, datapool::TEMP_SENSOR_CH1, datapool::TargetState_COMPONENT_1, datapool::CurrentState_COMPONENT_1,
datapool::HeaterRequest_COMPONENT_1, &TCSData, &TEMPERATURE_SENSOR_CH1, NULL, NULL, &HEATER_1, &REDUNDANT_HEATER_1, NULL, COMPONENT1_CONFIG, ThermalComponentIF::SAFE),
datapool::HeaterRequest_COMPONENT_1, &ComponentData, &TEMPERATURE_SENSOR_CH1, NULL, NULL, &HEATER_1, &REDUNDANT_HEATER_1, NULL, COMPONENT1_CONFIG, ThermalComponentIF::SAFE),
TEMPERATURE_COMPONENT_2(objects::TCS_COMPONENT_2, COMPONENT_DOMAIN_ID + 1, datapool::TEMP_SENSOR_CH2, datapool::TargetState_COMPONENT_2, datapool::CurrentState_COMPONENT_2,
datapool::HeaterRequest_COMPONENT_2, &TCSData, &TEMPERATURE_SENSOR_CH2, NULL, NULL, &HEATER_2, &REDUNDANT_HEATER_2, NULL, COMPONENT2_CONFIG, ThermalComponentIF::SAFE)
datapool::HeaterRequest_COMPONENT_2, &ComponentData, &TEMPERATURE_SENSOR_CH2, NULL, NULL, &HEATER_2, &REDUNDANT_HEATER_2, NULL, COMPONENT2_CONFIG, ThermalComponentIF::SAFE)
{
sensors.push_back(TEMPERATURE_SENSOR_CH1);
sensors.push_back(TEMPERATURE_SENSOR_CH2);
@ -88,38 +88,36 @@ ReturnValue_t ThermalController::handleCommandMessage(CommandMessage *message) {
ReturnValue_t ThermalController::performOperation(uint8_t opCode) {
sif::debug<<"\nDEBUG_TCS: Start of controller operations"<<std::endl;
std::cout << "\nDEBUG_TCS: Start of controller operations" << std::endl;
sif::debug<<"DEBUG_TCS: Start of controller operations"<<std::endl;
for (std::list<ArduinoTCSTemperatureSensor>::iterator iter = sensors.begin(); iter != sensors.end(); iter++) {
iter->performHealthOp();
}
sif::debug<<"\nDEBUG_TCS: Health ops"<<std::endl;
sif::debug<<"DEBUG_TCS: Health ops"<<std::endl;
ControllerBase::performOperation(0);
sif::debug<<"\nDEBUG_TCS: Controller ops"<<std::endl;
sif::debug<<"DEBUG_TCS: Controller ops"<<std::endl;
if (mode == MODE_OFF) {
return HasReturnvaluesIF::RETURN_OK;
}
TCSData.read();
SensorData.read();
for (std::list<ArduinoTCSTemperatureSensor>::iterator iter = sensors.begin(); iter != sensors.end(); iter++) {
iter->performOperation(0);
}
TCSData.commit();
sif::debug<<"\nDEBUG_TCS: Sensor ops"<<std::endl;
SensorData.commit();
sif::debug<<"DEBUG_TCS: Sensor ops"<<std::endl;
TCSData.read(); // ?check the read, separate dataset
ComponentData.read();
//calculateStrategy(true, true);
ThermalComponentIF::HeaterRequest request;
for (std::list<TCS_ThermalComponent>::iterator iter = components.begin(); iter != components.end(); iter++) {
request = iter->performOperation(0, true, false); // request returnvalue
request = iter->performOperation(0, true, false); // request returnvalue to check, overridden
//request = iter->performOperation(0, ThermalComponentIF::SAFE, true, false);
}
TCSData.commit();
sif::debug<<"\nDEBUG_TCS: Component ops"<<std::endl;
std::cout << "\nDEBUG_TCS: End of controller operations" << std::endl;
ComponentData.commit();
sif::debug<<"DEBUG_TCS: Component ops"<<std::endl;
return HasReturnvaluesIF::RETURN_OK;
}

View File

@ -50,7 +50,8 @@ private:
object_id_t powerSwitcherId;
// definition of dataset
DataSet TCSData;
DataSet SensorData;
DataSet ComponentData;
// definition of dataset variables from datapool
PoolVector <float, 36> TempValueVec;