update
This commit is contained in:
@@ -499,27 +499,235 @@ INT itcPressureOptimizer::mitc_pressc_recalculate(MITCPRESSC_INFO *info) {
|
||||
}
|
||||
return FE_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
_Pressure 0 D
|
||||
_MercuryITCSetpoint 1
|
||||
_MercuryITCTemperat(ure) 2
|
||||
_MercuryITCPower 3
|
||||
_AveragedPower 4
|
||||
_CalcPressure 5
|
||||
_PressureControlMode 6 D
|
||||
_SetRCPressure 7 D
|
||||
_PressureCalc_minPressure 8 D
|
||||
_PressureCalc_maxPressure 9 D
|
||||
_PressureCalc_const1 10 D
|
||||
_PressureCalc_const2 11 D
|
||||
*/
|
||||
|
||||
INT itcPressureOptimizer::mitc_pressc_set(MITCPRESSC_INFO *info, INT channel,
|
||||
float value) {
|
||||
return 0;
|
||||
switch (channel) {
|
||||
case 0: // PRESSURE - only set pressure if not in calculated mode
|
||||
if (info->last_demand[6] != 1.0f) {
|
||||
if (info->last_demand[channel] != value) {
|
||||
info->last_demand[channel] = value;
|
||||
info->last_demand_set[channel] = ss_time();
|
||||
info->recalculate = TRUE;
|
||||
}
|
||||
} else {
|
||||
if (std::abs(info->last_demand[channel] - value) > 0.2f) {
|
||||
cm_msg(MLOG, "",
|
||||
"PressureControlMode is set to calculated! "
|
||||
"- Not setting pressure!");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6: // Pressure Control Mode : 1 = Calc(automatic), 0 = Man
|
||||
if ((info->last_demand[channel] != 1.0f) && (value == 1.0f)) {
|
||||
info->last_demand[channel] = 1.0f;
|
||||
info->last_demand_set[channel] = ss_time();
|
||||
cm_msg(MLOG, "", "Pressure Control Mode is set to Calculated");
|
||||
|
||||
info->recalculate = TRUE;
|
||||
} else if ((info->last_demand[channel] != 0.0f) && (value != 1.0f)) {
|
||||
info->last_demand[channel] = 0.0f;
|
||||
info->last_demand_set[channel] = ss_time();
|
||||
|
||||
cm_msg(MLOG, "", "Pressure Control Mode is set to Manual");
|
||||
|
||||
info->recalculate = TRUE;
|
||||
}
|
||||
break;
|
||||
case 7: // set Pressure for Mercury ITC: 1 = Update Mercury ITC Pressure
|
||||
// Setpoint
|
||||
// 0 = do not
|
||||
if ((info->last_demand[channel] != 1.0f) && (value == 1.0f)) {
|
||||
info->last_demand[channel] = 1.0f;
|
||||
info->last_demand_set[channel] = ss_time();
|
||||
|
||||
cm_msg(MLOG, "",
|
||||
"MPC_SetPressure is enabled - Setting Mercury ITC "
|
||||
"Pressure Setpoint in ODB");
|
||||
} else if ((info->last_demand[channel] != 0.0f) && (value != 1.0f)) {
|
||||
info->last_demand[channel] = 0.0f;
|
||||
info->last_demand_set[channel] = ss_time();
|
||||
cm_msg(MLOG, "",
|
||||
"MPC_SetPressure is disabled - Not Setting Mercury ITC "
|
||||
"Pressure Setpoint in ODB");
|
||||
|
||||
info->recalculate = TRUE;
|
||||
}
|
||||
break;
|
||||
case 8: // min pressure
|
||||
case 9: // max pressure
|
||||
case 10: // pressure c1
|
||||
case 11: // pressure c2
|
||||
if (info->last_demand[channel] != value) {
|
||||
char name[NAME_LENGTH],
|
||||
name1[NAME_LENGTH]; // TODO : change to std::string
|
||||
mitc_pressc_get_name(info, channel, name);
|
||||
if (info->initialised)
|
||||
cm_msg(MLOG, "", "Channel %d (%s): output was %f now set to %f",
|
||||
channel, name, *(info->last_demand + channel), value);
|
||||
else
|
||||
cm_msg(MLOG, "", "%s (Channel %d): Output is set to %f", name,
|
||||
channel, value);
|
||||
|
||||
if (channel == 9) {
|
||||
if (info->last_demand[channel - 1] >= value) {
|
||||
mitc_pressc_get_name(info, channel - 1, name1);
|
||||
cm_msg(MERROR, "mitc_pressc_set",
|
||||
"%s should be larger than %s (%f)", name, name1,
|
||||
*(info->last_demand + channel - 1));
|
||||
}
|
||||
}
|
||||
info->last_demand[channel] = value;
|
||||
info->last_demand_set[channel] = ss_time();
|
||||
info->recalculate = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// all demand values set from ODB during init?
|
||||
if ((channel == info->num_channels - 1) && !info->initialised) {
|
||||
info->initialised = TRUE; // flag init done
|
||||
info->recalculate = TRUE; // flag to recalculate
|
||||
}
|
||||
|
||||
mitc_pressc_recalculate(info);
|
||||
return FE_SUCCESS;
|
||||
}
|
||||
|
||||
INT itcPressureOptimizer::mitc_pressc_get_demand(MITCPRESSC_INFO *info,
|
||||
INT channel, float *pvalue) {
|
||||
return 0;
|
||||
if (pvalue) {
|
||||
if ((channel >= 0) && (channel < info->num_channels) &&
|
||||
(info->last_demand)) {
|
||||
if (*pvalue != info->last_demand[channel])
|
||||
cm_msg(MLOG, "", "Channel %d: Output was %f - now set to %f",
|
||||
channel, *pvalue, *(info->last_demand + channel));
|
||||
*pvalue = info->last_demand[channel];
|
||||
} else {
|
||||
*pvalue = -1.0f;
|
||||
}
|
||||
}
|
||||
return FE_SUCCESS;
|
||||
}
|
||||
|
||||
INT itcPressureOptimizer::mitc_pressc_get(MITCPRESSC_INFO *info, INT channel,
|
||||
float *pvalue) {
|
||||
return 0;
|
||||
// update variox readout
|
||||
mitc_pressc_update_mitc_input(info);
|
||||
|
||||
// update pressure demand readout
|
||||
mitc_pressc_update_pressure_demanded(info);
|
||||
|
||||
// recalculate pressure and nv%
|
||||
mitc_pressc_recalculate(info);
|
||||
|
||||
if ((channel == info->num_channels - 1) && !info->initialised)
|
||||
ss_sleep(1000);
|
||||
|
||||
if (pvalue) {
|
||||
if ((channel >= 0) && (channel < info->num_channels) &&
|
||||
info->last_measured) {
|
||||
if (*pvalue != info->last_measured[channel]) {
|
||||
*pvalue = info->last_measured[channel];
|
||||
}
|
||||
} else {
|
||||
*pvalue = -1.0f;
|
||||
}
|
||||
}
|
||||
return FE_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
Default threshold for measured values index threshold
|
||||
----------------------------------------------------------------------
|
||||
_Pressure 0 0.01
|
||||
_MercuryITCSetpoint 1 0.001
|
||||
_MercuryITCTemperat(ure) 2 0.0001
|
||||
_MercuryITCPower 3 0.1
|
||||
_AveragedPower 4 0.01
|
||||
_CalcPressure 5 0.01
|
||||
_PressureControlMode 6 -
|
||||
_SetRCPressure 7 -
|
||||
_PressureCalc_minPressure 8 0.01
|
||||
_PressureCalc_maxPressure 9 0.01
|
||||
_PressureCalc_const1 10 0.01
|
||||
_PressureCalc_const2 11 0.01
|
||||
*/
|
||||
|
||||
INT itcPressureOptimizer::mitc_pressc_get_default_threshold(
|
||||
MITCPRESSC_INFO *info, INT channel, float *pvalue) {
|
||||
return 0;
|
||||
switch (channel) {
|
||||
case 0:
|
||||
case 4:
|
||||
case 5:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
*pvalue = 0.01;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
*pvalue = 0.1;
|
||||
break;
|
||||
case 1:
|
||||
*pvalue = 0.001;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
*pvalue = 0.0001;
|
||||
break;
|
||||
default:
|
||||
*pvalue = 1.0;
|
||||
}
|
||||
return FE_SUCCESS;
|
||||
}
|
||||
|
||||
INT itcPressureOptimizer::mitc_pressc_get_name(MITCPRESSC_INFO *info,
|
||||
INT channel, char *name) {
|
||||
return 0;
|
||||
if (name != nullptr) {
|
||||
if (channel == 0)
|
||||
strcpy(name, "Pressure Setpoint");
|
||||
else if (channel == 1)
|
||||
strcpy(name, "MPC_ITC_VarioxSP");
|
||||
else if (channel == 2)
|
||||
strcpy(name, "MPC_ITC_VarioxTemp");
|
||||
else if (channel == 3)
|
||||
strcpy(name, "MPC_ITC_VarioxPower");
|
||||
else if (channel == 4)
|
||||
strcpy(name, "MPC_AveragedPower");
|
||||
else if (channel == 5)
|
||||
strcpy(name, "MPC_CalcPressure");
|
||||
else if (channel == 6)
|
||||
strcpy(name, "Pressure Control Mode");
|
||||
else if (channel == 7)
|
||||
strcpy(name, "MPC_SetPressure");
|
||||
else if (channel == 8)
|
||||
strcpy(name, "MPC_PressCalcminPress");
|
||||
else if (channel == 9)
|
||||
strcpy(name, "MPC_PressCalcmaxPress");
|
||||
else if (channel == 10)
|
||||
strcpy(name, "MPC_PressCalc_const1");
|
||||
else if (channel == 11)
|
||||
strcpy(name, "MPC_PressCalc_const2");
|
||||
else
|
||||
strcpy(name, "NONE");
|
||||
}
|
||||
|
||||
return FE_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user