日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > PID算法的C程序實現方式,大神帶你入門

PID算法的C程序實現方式,大神帶你入門 時間:2018-04-24      來源:未知

一、PID算法簡介

在水溫控制模型、智能車比賽、四軸飛行器穩定,平衡車速度等控制實現時,因為預設值與實際控制效果之間存在一定的偏差、實際輸出與數據反饋之間存在一定的延時,往往不能得到理想的控制效果。PID作為應用為廣泛的一種自動控制器,在實際控制中加入PID算法將能達到系統不斷靈活變化的效果。

上面的提到的幾種實例都可以稱為惰性系統(過程控制對象具有“一介滯后+純滯后”與“二介滯后+純滯后 ”特點,說白了就是響應延遲+反饋延時),PID控制器是一種最優控制器。

顧名思義,P指是比例(Proportion),I指是積分(Integral),D指微分(Differential)。在電機調速系統中,輸入信號為正,要求電機正轉時,反饋信號也為正(PID算法時,誤差=輸入-反饋),同時電機轉速越高,反饋信號越大。要想搞懂PID算法的原理,首先必須先明白P,I,D各自的含義及控制規律:

1.1比例P

Proportion(比例),就是輸入偏差乘以一個常數。

比例調節器方程為:

y=Kp*e(t)

調節器的輸出與輸入偏差成正比。比例項部分其實就是對預設值和反饋值差值的放大倍數。

圖示

圖1 比例放大示意圖

控制對象為電機時,比例Kp越大時,電機轉速回歸到輸入值的速度將更快,及調節靈敏度就越高。從而,加Kp值,可以減少從非穩態到穩態的時間。但是同時也可能造成電機轉速在預設值附近振蕩的情形,即用力過猛,調整跨度太大,如果是舵機轉向系統,會出現智能車搖擺S型前進,這就是Kp過大造成的,所以又引入積分I解決此問題。

1.2 積分I

Integral(積分),積分作用是指調節器的輸出與輸入偏差的積分成比例的作用。

積分方程為:

Ti是積分時間常數,它表示積分速度的大小,Ti越大,積分速度越慢,積分作用越弱。

圖示

圖2 積分調節示意圖

積分環節的調節作用雖然會消除靜態誤差,但也會降低系統的響應速度,也就是積分項的調節存在明顯的滯后,因為Ti代表的是時間常數,Ti值越大,時間越長,滯后效果越明顯,增加系統的超調量。積分常數T I 越大,積分的積累作用越弱。增大積分常數T I 會減慢靜態誤差的消除過程,但可以減少超調量,提高系統的穩定性。所以,必須根據實際控制的具體要求來確定TI 。比如:當差值不是很大時,可以減小控制效果,維持原系統的輸出值。但是還是要將偏差進行加法積累。當這個和累加超過預定值時,再一次性進行處理。從而避免了頻繁控制而出現振蕩現象。

1.3 微分D

Derivative(微分),微分項部分其實就是求電機轉速的變化率。也就是前后兩次差值的差。

微分調節器的微分方程為

圖示

圖3 微分控制器曲線

微分反應了偏差信號的變化規律,或者說是變化趨勢,偏差的微分實際偏差的變化速率,變化越快,其微分絕對值越大。偏差增大時,其微分為正;偏差減小時,其微分為負。控制器輸出量的微分部分與誤差的微分成正比,反映了被控量變化的趨勢。根據偏差信號的變化趨勢來進行超前調節,從而增加了系統的快速性。Td值越大,超前控制作用就會越明顯,可以在做到提前控制。比例僅僅是偏差的放大增幅,表示當前調節參數,微分是預測偏差的變化,相當于提前加入了控制數據。在比例微分調節器中,能夠提前控制偏差,也有可能出現負值,避免了惰性系統的超調現象。

一、PID算法內容

2.1 PID算法選擇

PID算法中有比例積分調節(PI),比例微分調節器(PD),可根據系統要求進行選擇,通常為了改善調節品質,往往把比例、積分、微分三種作用組合起來,形成PID調節器。理想的PID微分方程為:

其中u(t) 調節器的輸出信號;

e(t) 調節器的偏差信號,它等于給定值與測量值之差

Kp 為比例增益;

T i 積分時間

T d 微分時間

KP /T I 積分系數

KP / T D 微分系數

2.2 PID算法要求

PID需要在一個閉環系統里面(橋黑板)。閉環系統即在控制系統中,有執行處理單元,同時必須有輸入反饋單元,電機系統中,必須有編碼器、測速電機等測速設備。控制系統原理圖如下:

圖4 閉環PID控制系統

2.3 PID參數常用小口訣:

整定參數尋最佳,從小到大逐步查;

先調比例后積分,微分作用最后加;

曲線震蕩很頻繁,比例刻度要放大;

曲線漂浮波動大,比例刻度要拉小;

曲線偏離回復慢,積分時間往小降;

曲線波動周期長,積分時間要加長;

曲線震蕩動作繁,微分時間要加長。

一、C代碼實現

由于計算機控制是一種采樣控制,它只能根據采樣許可的偏差計算控制量,而不能象模擬控制那樣連續輸出控制量,進行連續控制。那么上面的PID公式不能直接使用,必須進行離散化處理

假設采樣時間間隔為T,則在k時刻:

偏差為e(k);

積分為e(k)+e(k-1)+e(k-2)+...+e(0);

微分為(e(k)-e(k-1))/T;

從而公式離散化后如下:

k 采樣信號,k=0,1,2,…

u k 第k 次采樣時刻的計算機輸出值

e k 第k 次采樣時刻輸入的偏差值

e k −1 第k-1 次采樣時刻輸入的偏差值。

實際上面的公式為位置式PID,運算較多,占用單片機資源,還可以推出增量式PID:

U(k) = P *e(k) + I *[e(k)+e(k-1)+...+e(0)]+ D *[e(k)-e(k-1)]。

簡化后可以在C語言中寫成:

u(k) = u(k)-u(k-1) = Kp(e(k) - e(k-1)) + Ki *e(k) + Kd(e(k)) - 2e(k-1) + e(k-2))

上面的表達式就是增量式表達形式,u(k)與最后三次計算偏差有關。

C語言理解代碼:

//創建變量結構體

struct pid_type{

float Kp; //PI調節的比例常數

float Ti; //PI調節的積分常數

float T; //采樣周期

float Ki;

float ek; //偏差e[k]

float ek1; //偏差e[k-1]

float ek2; //偏差e[k-2]

float uk; //u[k]

signed int uk1; //對u[k]四舍五入取整

signed int adjust; //調節器輸出調整量

}pid;

//變量初始

void Pid_Init(void)

{

pid.Kp=4;

pid.Ti=0.005;

pid.T=0.001;

pid.Ki=0.6; //微分系數Kd=KpTd/T。根據實際調節

pid.ek=0;

pid.ek1=0;

pid.ek2=0;

pid.uk=0;

pid.uk1=0;

pid.adjust=0;

}

int PIDadjust(float ek) //PI調節算法

{

if( gabs(ek)<0.1 )

{

pid.adjust=0;

}

else

{

pid.uk=pid.Kp*(pid.ek-pid.ek1)+pid.Ki*pid.ek; //計算控制增量

pid.ek1=pid.ek;

pid.uk1=(signed int)pid.uk;

if(pid.uk>0)

{

if(piduk-piduk1>=0.5)

{

pi.uk1=pid.uk1+1;

}

}

if(piduk<0)

{

if(pid.uk1-pid.uk>=0.5)

{

pid.uk1=pid.uk1-1;

}

}

adjust=pid.uk1;

}

return adjust;

}

一、小結

增大比例系數P一般將加快系統的響應,在有靜差的情況下有利于減小靜差,但是過大的比例系數會使系統有比較大的超調,并產生振蕩,使穩定性變壞。

增大積分時間I有利于減小超調,減小振蕩,使系統的穩定性增加,但是系統靜差消除時間變長。

增大微分時間D有利于加快系統的響應速度,使系統超調量減小,穩定性增加,但系統對擾動的抑制能力減弱。

也可以說比例系數P代表著現在,表明現在預設值與實際的偏差,積分代表著過去,是過去Ti時間內的偏差積累,可以減少震蕩,微分D代表著未來,反應了偏差變化率,可以超前預測并提出控制。

這里有關PID資料的講的非常好,推薦給大家:

1. https://blog.csdn.net/u010312937/article/details/53363831#t3《PID控制算法的C語言實現<完整版>》

2. https://blog.csdn.net/qq229596421/article/details/51419813

3. https://blog.csdn.net/msdnwolaile/article/details/51038196

祝君爽!!

上一篇:DS1302時鐘保持芯片,讓你很快讀懂它

下一篇:MPPT工作流程及算法和硬件的選擇

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 小妹妹电影| 延边卫视节目表| 孤岛飞鹰演员表| 打手板心视频80下| 财神经正版全文| 黄视频免费观看网站| raz分级阅读绘本| 上门女婿电影完整版免费| 生死搏斗| 生猴子视频| 爱很美味电影| 尼康相机型号大全和价格| 小姐诱心在线观看| 《最后的凶手》免费观看| 伸舌头接吻脱裤子| 啊嗯啊嗯嗯| 乔军| 邓为个人资料及简历| 山上的小屋 残雪| 聊斋花弄月普通话版免费| 运气旺的微信头像图片| 风云雄霸天下| 爱在西元前简谱| 少妇荡乳情欲办公室| 釜山电影节| 浪客剑心星霜篇| 日本电影小小的家| www.douyin.com| 湖南卫视节目表| 大唐狄公案电视剧演员表| 做菜的视频家常菜大全| 熊出没免费电影| 香帅传奇郑少秋版国语全集在线观看高清 | 直播惊魂夜| 夫妻激情| 超级风暴国语电影在线观看| 北京新闻频道回看| 孤芳岚影| 阿尔西| 礼佛大忏悔文简书| 男操女视频免费|