資源描述:
《增量式pid算法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、....增量式PID算法程序是自己編的,根據(jù)多方資料改寫了一部分,為增量式PID算法。程序采用浮點形式,如果MCU速度不夠快,可根據(jù)需求轉(zhuǎn)換定點運算。關(guān)鍵變量:ref——設(shè)置的參數(shù);feb——采樣反饋;根據(jù)實際情況修改這兩個變量即可。相關(guān)參數(shù):Kp、Ti、Td、T:根據(jù)各項目的控制對象不同而修改其定義值。//定義變量doubleref=0;//設(shè)置參數(shù)doublefeb=0;//采樣反饋intpwm_var=0;//PID調(diào)整量----....Uint16PWM_out=0;//PWM輸出量doubleUo=0;----....double
2、Ek=0;doubleEi=0;doubleEd=0;#defineKp8//PID調(diào)節(jié)的比例常數(shù)#defineTi0.05//PID調(diào)節(jié)的積分常數(shù)#defineTd0.02//PID調(diào)節(jié)的微分時間常數(shù)#defineT0.02//采樣周期#defineKppKp*(1+(T/Ti)+(Td/T))----....#defineKi(-Kp)*(1+(2*----....Td/T))#defineKdKp*Td/T//#defineKpp4//#defineKi0.8//#defineKd20//誤差的閥值,小于這個數(shù)值的時候,不做PID調(diào)整
3、,避免誤差較小時頻繁調(diào)節(jié)引起震蕩#defineEmin3//調(diào)整值限幅,防止積分飽和#defineUmax100#defineUmin-100//輸出值限幅#definePmax15500#definePmin200/////////////////////////////////////////////////////////////////////////PID運算----....///////voidpid_ctrl(void){Ek=ref-feb;//差值運算if(fabs(Ek)<Emin)//誤差的閥值(死區(qū)控制??){
4、pwm_var=0;----....}----....else{Uo=Kpp*Ek+Ki*Ei+Kd*Ed;//PID計算Ed=Ei;Ei=Ek;pwm_var=(int)Uo;//強制轉(zhuǎn)化調(diào)整量,PWM為整數(shù)----....if(pwm_var----....>=Umax)pwm_var=Umax;//調(diào)整值限幅,防止積分飽和if(pwm_var<=Umin)pwm_var=Umin;//調(diào)整值限幅,防止積分飽和}PWM_out+=pwm_var;//調(diào)整PWM輸出if(PWM_out>Pmax)PWM_out=Pmax
5、;----....//輸出值限幅if(PWM_out<Pmin)PWM_out=Pmin;//輸出值限幅TBCCR1=PWM_out;//輸出給寄存器,改變PWM占空比}///////////////////////////////////////////////////////////////////調(diào)用示例:voidmain(void){ref=120.6;while(1)----....{----....feb=adc_sample();pid_ctrl();}}另外附上:PID調(diào)節(jié)經(jīng)驗總結(jié)(搜索資源)PID控制器參數(shù)選擇的方法
6、很多,例如試湊法、臨界比例度法、擴充臨界比例度法等。但是,對于PID控制而言,參數(shù)的選擇始終是一件非常煩雜的工作,需要經(jīng)過不斷的調(diào)整才能得到較為滿意的控制效果。依據(jù)經(jīng)驗,一般PID參數(shù)確定的步驟如下:----....(1)確定比例系數(shù)Kp----....確定比例系數(shù)Kp時,首先去掉PID的積分項和微分項,可以令Ti=0、Td=0,使之成為純比例調(diào)節(jié)。輸入設(shè)定為系統(tǒng)允許輸出最大值的60%~70%,比例系數(shù)Kp由0開始逐漸增----....大,直至系統(tǒng)出現(xiàn)振蕩;再反過來,從此時的比例系數(shù)逐漸減小,直至系統(tǒng)振蕩消失。記錄此時的比例系數(shù)設(shè)定PID的
7、比例系數(shù)Kp為當前值的60%~70%。KpKp,----....(2)確定積分時間常數(shù)Ti比例系數(shù)Kp確定之后,設(shè)定一個較大的積分時間常數(shù)Ti,然后逐漸減小Ti,直至系統(tǒng)出現(xiàn)振蕩,然后再反過來,逐漸增大Ti,直至系統(tǒng)振蕩消失。記錄此時的Ti,設(shè)定PID的積分時間常數(shù)Ti為當前值的150%~180%。(3)確定微分時間常數(shù)Td微分時間常數(shù)Td一般不用設(shè)定,為0即可,此時PID調(diào)節(jié)轉(zhuǎn)換為PI調(diào)節(jié)。如果需要設(shè)定,則與確定Kp的方法相同,----....取不振蕩時其值的30%。----....(4)系統(tǒng)空載、帶載聯(lián)調(diào)對PID參數(shù)進行微調(diào),直到滿
8、足性能要求。----