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