PIDデジタルノート(2)

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を行います。

おすすめ

転載: www.cnblogs.com/CodeWorkerLiMing/p/11406984.html