一、什么是PID:
創(chuàng)新互聯自2013年創(chuàng)立以來,先為新城等服務建站,新城等地企業(yè),進行企業(yè)商務咨詢服務。為新城企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
PID即:Proportional(比例)、Integral(積分)、Differential(微分)的縮寫。顧名思義,PID控制算法是結合比例、積分和微分三種環(huán)節(jié)于一體的控制算法,它是連續(xù)系統(tǒng)中技術最為成熟、應用最為廣泛的一種控制算法,該控制算法出現于20世紀30至40年代,適用于對被控對象模型了解不清楚的場合。 ---百度百科
二、PID是否難學:
在工業(yè)應用中PID及其衍生算法是應用最廣泛的算法之一,是當之無愧的萬能算法,如果能夠熟練掌握PID算法的設計與實現過程,對于一般的研發(fā)人員來講,應該是足夠應對一般研發(fā)問題了,而難能可貴的是,在我所接觸的控制算法當中,PID控制算法又是最簡單,最能體現反饋思想的控制算法,可謂經典中的經典。經典的未必是復雜的,經典的東西常常是簡單的,而且是最簡單的,想想牛頓的力學三大定律吧,想想愛因斯坦的質能方程吧,何等的簡單!簡單的不是原始的,簡單的也不是落后的,簡單到了美的程度。 ---【1】
三、PID算法的C語言源碼:
PID 控制算法可以分為位置式 PID?和增量式 PID?控制算法
詳細見參考【1】【2】
參考:
【1】PID算法
【2】簡易PID算法的快速掃盲(超詳細+過程推導+C語言程序)
#includeunistd.h
#includestdio.h
int main(int argc,int **argv)
{
int pid=fork();
if(pid==-1)
{
printf("error");
}
else if(pid==0)
{
printf("This is the child process!\n");
}
else
{
printf("This is the parent process! child process id=%d\n",pid);
}
return 0;
}
首先為什么這段代碼gcc編譯不了,只能用g++編譯,gcc編譯顯示結果如下
Undefined first referenced
symbol in file
__gxx_personality_v0 /var/tmp//ccuHN8IS.o
ld: fatal: Symbol referencing errors. No output written to t5
collect2: ld returned 1 exit status
其次,g++編譯后運行結果如下
This is the parent process! child process id=27406
This is the child process!
基本流程
積分環(huán)節(jié):主要是用來消除 靜差 (系統(tǒng)穩(wěn)定后輸出值和設定值之間的差值,積分環(huán)節(jié)實際上就是偏差累積的過程,把累積的誤差加到原來系統(tǒng)上以抵消系統(tǒng)造成的靜差)
微分環(huán)節(jié):反映了偏差信號的變化規(guī)律,根據偏差信號的變化規(guī)律來進行超前調節(jié),從而增加系統(tǒng)的快速性
對上述公式進行離散化(采樣):兩個公式
增量型PID:
通過增量型PID公式可以看出,最終表達結果和最近三次的偏差有關,最終輸出結果應該為:
首先定義結構變量體:
然后初始化變量
最后編寫控制算法
基本算法,沒有考慮死區(qū)問題,沒有設定上下限
在啟動、結束或大幅度增減設定時,短時間內系統(tǒng)輸出有很大的偏差,會造成PID運算的積分積累,導致控制量超過執(zhí)行機構可能允許的最大動作范圍對應的極限控制量,從而引起較大的超調,甚至是振蕩。
為了克服這個問題,引入積分分離的概念,即當被控量和設定值偏差較大時,取消積分作用;當被控量接近設定值時,引入積分控制,以消除靜差,提高精度。
abs :絕對值
令index=0使積分環(huán)節(jié)失效
積分飽和現象:如果系統(tǒng)存在一個方向的偏差,PID控制器的輸出由于積分作用的不斷累加而加大,從而導致執(zhí)行機構達到極限位置。此時計算器輸出量超出正常運行范圍而進入飽和區(qū),一旦系統(tǒng)出現反向偏差,輸出量將逐漸從飽和區(qū)退出,進入飽和區(qū)越深則退出飽和區(qū)時間越長,在這段時間里,執(zhí)行機構仍然停留在極限位置而不隨偏差反向而立即做出相應改變,造成性能惡化。
采用梯形積分能夠減小余差,提高精度
改變積分系數,若偏差大,積分作用減弱,系數減?。蝗羝钚?,積分作用增強,系數增大。
變積分PID的基本思想是設法改變積分項的累加速度,使其與偏差大小對應。
使整個系統(tǒng)的穩(wěn)定速度非???/p>
比例系數Kp的作用是加快系統(tǒng)的響應速度提高系統(tǒng)的調節(jié)精度
積分系數Ki的作用是消除系統(tǒng)的穩(wěn)態(tài)誤差
微分系數Kd的作用是改善系統(tǒng)的動態(tài)特性
反應系統(tǒng)性能的兩個參數是系統(tǒng)誤差和誤差變化律
就是一般的排序算法,與查找算法一樣,這個的都不會嗎floata[3],max=0;for(i=0;i=2;i++){printf("Pleaseenterthemark:");scanf("%f",a[i]);if(maxintsort(intnum[5]);voidmain(){intnumm[5],i,a;for(i=0;i5;i++)scanf("%d",numm[i]);sort(numm);//調用排序for(i=0;i5;i++)printf("%d",numm[i]);}intsort(intnum[5]){intm,n,t;for(m=0;m4;m++)for(n=m+1;n5;n++)//冒泡排序{if(num[m]
新聞標題:c語言pid函數講解,pid算法c
分享地址:http://aaarwkj.com/article42/dsspghc.html
成都網站建設公司_創(chuàng)新互聯,為您提供微信公眾號、網站維護、App設計、品牌網站建設、電子商務、用戶體驗
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯