1、PID演算法基本原理
PID演算法是控制行業最經典、最簡單、而又最能體現反饋控制思想的演算法。對於一般的研發人員來說,設計和實現PID演算法是完成自動控制系統的基本要求。這一演算法雖然簡單,但真正要實現好,卻也需要下一定功夫。首先我們從PID演算法最基本的原理開始分析和設計這一經典命題。
PID演算法的執行流程是非常簡單的,即利用反饋來檢測偏差訊號,並透過偏差訊號來控制被控量。而控制器本身就是比例、積分、微分三個環節的加和。
位置型PID的實現就是以前面的位置型公式為基礎。這一節我們只是完成最簡單的實現,也就是將前面的離散位置型PID公式的計算機語言化。
首先定義PID物件的結構體:
程式碼示例:
/*定義結構體和公用體*/
typedef struct
{
float setpoint; //設定值
float proportiongain; //比例係數
float integralgain; //積分系數
float derivativegain; //微分系數
float lasterror; //前一拍偏差
float result; //輸出值
float integral;//積分值
}PID;
接下來實現PID控制器:
void PIDRegulation(PID *vPID, float processValue)
float thisError;
thisError=vPID->setpoint-processValue;
vPID->integral+=thisError;
vPID->result=vPID->proportiongain*thisError+vPID->integralgain*vPID->integral+vPID->derivativegain*(thisError-vPID->lasterror);
vPID->lasterror=thisError;
}
1、PID演算法基本原理
PID演算法是控制行業最經典、最簡單、而又最能體現反饋控制思想的演算法。對於一般的研發人員來說,設計和實現PID演算法是完成自動控制系統的基本要求。這一演算法雖然簡單,但真正要實現好,卻也需要下一定功夫。首先我們從PID演算法最基本的原理開始分析和設計這一經典命題。
PID演算法的執行流程是非常簡單的,即利用反饋來檢測偏差訊號,並透過偏差訊號來控制被控量。而控制器本身就是比例、積分、微分三個環節的加和。
位置型PID的實現就是以前面的位置型公式為基礎。這一節我們只是完成最簡單的實現,也就是將前面的離散位置型PID公式的計算機語言化。
首先定義PID物件的結構體:
程式碼示例:
/*定義結構體和公用體*/
typedef struct
{
float setpoint; //設定值
float proportiongain; //比例係數
float integralgain; //積分系數
float derivativegain; //微分系數
float lasterror; //前一拍偏差
float result; //輸出值
float integral;//積分值
}PID;
接下來實現PID控制器:
void PIDRegulation(PID *vPID, float processValue)
{
float thisError;
thisError=vPID->setpoint-processValue;
vPID->integral+=thisError;
vPID->result=vPID->proportiongain*thisError+vPID->integralgain*vPID->integral+vPID->derivativegain*(thisError-vPID->lasterror);
vPID->lasterror=thisError;
}