pid_Cal(ボイド)無効
{
//フロートインデックス= 0。
IncPid * P = NULL;
P =&g_PID_Inc。
P-> SETVAL = sys_para.given_temp。
P-> ActualVal = g_pt100.f_real_value。
P-> ERR =のp> SETVAL - P - > ActualVal。
IF(work_temp_phase == work_phase_43C_level)
{
IF(FAN_Speed_Status == FAN_Speed_LOW)
{
IF(ファブ(P-> ERR)> = 6.0f)
{
P-> Kpを= 0。//0.45
P->のKi = 0.4。//0.05
P->のKd = 0。
}
他
{
P-> Kpを= 1.8。//0.4 0.475
P->のKi = 0.4。//0.05 0.07
P->のKd = 0。//0.2
}
}
そうであれば(FAN_Speed_Status == FAN_Speed_HIGH)
{
IF(ファブ(P-> ERR)> = 6.0f)
{
P-> Kpを= 0。//0.45
P->のKi = 0.4。//0.05
P->のKd = 0。
}
他
{
P-> Kpを= 1.75。//0.4 0.475
P->のKi = 0.38。//0.05 0.07
P->のKd = 0。//0.2
}
}
}
そうであれば(work_temp_phase == work_phase_38C_level)
{
IF(FAN_Speed_Status == FAN_Speed_LOW)
{
IF(ファブ(P-> ERR)> = 6.0f)
{
P-> Kpを= 0。//0.45
P->のKi = 0.4。//0.05
P->のKd = 0。
}
他
{
P-> Kpを= 1.8; //0.4 0.475
P->のKi = 0.4。//0.05 0.07
P->のKd = 0。//0.2
}
}
そうであれば(FAN_Speed_Status == FAN_Speed_HIGH)
{
IF(ファブ(P-> ERR)> = 6.0f)
{
P-> Kpを= 0。//0.45
P->のKi = 0.4。//0.05
P->のKd = 0。
}
他
{
P-> Kpを= 1.75。//0.4 0.475
P->のKi = 0.38。//0.05 0.07
P->のKd = 0。//0.2
}
}
}
そうであれば(work_temp_phase == work_phase_32C_level)
{
IF(FAN_Speed_Status == FAN_Speed_LOW)
{
IF(ファブ(P-> ERR)> = 6.0f)
{
P-> Kpを= 0; //0.45
P-> IncrementVal =(P-> Kpを*(P-> ERR - P->
P->のKi = 0.4。//0.05
P->のKd = 0。
}
他
{
P-> Kpを= 1.8。//0.4 0.475
P->のKi = 0.4。//0.05 0.07
P->のKd = 0。//0.2
}
}
そうであれば(FAN_Speed_Status == FAN_Speed_HIGH)
{
IF(ファブ(P-> ERR)> = 6.0f)
{
P-> Kpを= 0。//0.45
P->のKi = 0.4。//0.05
P->のKd = 0。
}
他
{
P-> Kpを= 1.75。//0.4 0.475
P->のKi = 0.38。//0.05 0.07
P->のKd = 0。//0.2
}
}
}
+(P->のKi * P-> ERR)
+(P->のKd *(P-> ERR - 2 * P-> err_next + P-> err_last))。
P-> err_last = P-> err_next。
P-> err_next = P-> ERR。
}
図から分かるように、Pは、第1の調整制御であり、コードがのKIである、式Iの位置に対応する増分PID制御パラメータPためKI、最初のKIを調整し、衝撃温度は、次の式のKP(位置を追加制御d)は、あなたがシステムを安定させることができます。
一定の安定した範囲に、およびのみPD制御を使用して、同時に、また思考の差動分離して、比較的大きな温度差ではなく、マイクロコントローラ、すなわち、KP = 0を行います。