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:
@ -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);
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user