国产清洁工av剧情精品_欧洲日韩av网站_国产视频手机在线播放_亚洲精品国产va在线观看蜜芽_AV网页在线好看_久久精品国产亚洲精品2023_一级日韩一级欧美_亚洲欧美日韩中文天堂_最近中文字幕mv在线视频_男女啪啪高潮激烈免费版网站

您好,歡迎訪問(wèn)泰安宏盛自動(dòng)化科技有限公司!
20年專注工控自動(dòng)化研發(fā)制造 系統(tǒng)設(shè)計(jì)\制作\安裝一條龍服務(wù)
全國(guó)咨詢熱線:18605386049
當(dāng)前位置: 首頁(yè) > 技術(shù)資料 > 程序案例

控制算法之PID算法 | 從入門到理解到應(yīng)用

作者:小編 時(shí)間:2022-12-28 10:48:26 點(diǎn)擊:

PID算法 是控制算法中的經(jīng)典算法,特別是在一個(gè)閉環(huán)控制系統(tǒng)中更為常用。自己曾是第十三屆全國(guó)大學(xué)生“恩智浦”杯智能汽車競(jìng)賽的參賽選手,相信所有的選手在電機(jī)控制算法上大多都是用PID算法,本想好好使用這種算法,卻無(wú)奈沒(méi)有學(xué)過(guò)。而網(wǎng)上查閱資料卻又是基本都是一些苦澀難懂?dāng)?shù)學(xué)公式和膾炙人口的一些PID語(yǔ)句,對(duì)于剛接觸PID算法的人而言無(wú)異于天書(shū)。所以寫(xiě)此文章,意在用于分享自己對(duì)于PID算法的理解,希望可以幫助同樣與我曾經(jīng)有相同困惑的人排除困惑。注:本文是自己通過(guò)查閱書(shū)籍和觀看視頻學(xué)習(xí)而得,若有錯(cuò)誤,歡迎批評(píng)指正。

  • PS:感謝評(píng)論區(qū)的大佬指出我畫(huà)的PID的圖都有些小問(wèn)題,但是我還畫(huà)不好一個(gè)比較好的圖來(lái)替代它們,所以大家可以根據(jù)自己所學(xué),結(jié)合評(píng)論區(qū)大佬的建議看看。(QAQ我盡量早些畫(huà)出比較好的圖來(lái)替代。)
  • 2020.4.8:隨著這篇文章的點(diǎn)贊數(shù)越來(lái)越多,首先感謝大家對(duì)我的肯定,其次,不好意思,我的圖還沒(méi)畫(huà)出來(lái),?大家一定要帶著懷疑的心態(tài)看我的圖片啊.?? 期待各位看官可以再給我提出新的問(wèn)題和改進(jìn)思路。?

一、簡(jiǎn)介

1.1控制系統(tǒng) :開(kāi)環(huán)控制系統(tǒng)與閉環(huán)控制系統(tǒng)

控制系統(tǒng)有幾種分類方法,其中,按控制原理的不同,自動(dòng)控制系統(tǒng)分為開(kāi)環(huán)控制系統(tǒng)閉環(huán)控制系統(tǒng) 。

  • 開(kāi)環(huán)控制系統(tǒng)

在開(kāi)環(huán)控制系統(tǒng)中,系統(tǒng)輸出只受輸入的控制,控制精度和抑制干擾的特性都比較差。



  • 閉環(huán)控制系統(tǒng)

閉環(huán)控制系統(tǒng)利用輸出量同期望值的偏差對(duì)系統(tǒng)進(jìn)行控制,可獲得比較好的控制性能。閉環(huán)控制系統(tǒng)又稱反饋控制系統(tǒng)。



由圖中可以很明顯的看出,此控制系統(tǒng)比開(kāi)環(huán)系統(tǒng)多了一個(gè)環(huán)節(jié)——傳感器,通過(guò)傳感器進(jìn)行 采集和反饋 到控制算法中,形成一個(gè) 閉合的回環(huán) 這也就是閉環(huán)控制系統(tǒng)中的閉環(huán)。

1.2PID算法介紹

PID算法是將偏差比例( P roportion)、積分( I ntegral)微分( D ifferential) 通過(guò)線性組合構(gòu)成控制量,用這一控制量對(duì)被控對(duì)象進(jìn)行控制,這樣的控制器稱PID控制器。



簡(jiǎn)單來(lái)說(shuō),偏差= 用戶設(shè)定的期望值— 傳感器采集回來(lái)的當(dāng)前值,將偏差進(jìn)行P、I、D三個(gè)環(huán)節(jié)的計(jì)算,再進(jìn)行求和、輸出。

二、二位式控制算法

2.1 為什么要解釋二位式控制算法

二位式控制算法在某種程度上可謂是PID算法的前身,了解原理便可更好的理解PID算法。

2.2 以實(shí)例理解二位式控制

二位式控制算法輸出的控制量只有高 \ 低 電平2種狀態(tài)。我們以燒水為例:假設(shè)我們要求此控制系統(tǒng)要將水加熱到100℃,當(dāng)傳感器采集反饋回的當(dāng)前值 沒(méi)有達(dá)到期望值 (100℃),便全高/低電平加熱;當(dāng)傳感器采集反饋回的當(dāng)前值達(dá)到期望值(100℃),便停止加熱。



2.3 引入慣性環(huán)節(jié)

一個(gè)簡(jiǎn)單的控制系統(tǒng)這么設(shè)計(jì)看似毫無(wú)問(wèn)題,然而,由于我們的控制對(duì)象具有慣性,例如我們控制加熱絲燒水,當(dāng)我們達(dá)到指定溫度停止加熱的時(shí)候,加熱絲不會(huì)馬上冷卻下來(lái),水溫還會(huì)繼續(xù)升高,超過(guò)指定溫度;而過(guò)了一會(huì)兒,水溫冷卻下來(lái)低于指定溫度時(shí),給加熱絲通電,加熱絲也無(wú)法立刻把溫度升上去。由于我們的控制對(duì)象(加熱絲、電感、電容、電機(jī)等)具有慣性,而二位式控制算法的輸出量只于當(dāng)前狀態(tài)有關(guān),故很難達(dá)到精確控制。

eg:電機(jī)就是一個(gè) 具有慣性的對(duì)象,給他施加電壓,不能馬上轉(zhuǎn)到對(duì)應(yīng)的速度;撤去電壓,電機(jī)也不能馬上停下。



由于慣性環(huán)節(jié)的存在,會(huì)使控制對(duì)象超出期望值。

三、位置式PID算法

  • ①如果我們把二位式控制算法理解為數(shù)字量輸出,那么PID算法則就是模擬量輸出。
  • ②二位式控制算法只于當(dāng)前偏差有關(guān),而PID算法則是考慮到過(guò)去、現(xiàn)在、和未來(lái)的控制算法。

我們規(guī)定:用戶期望值為 Expect,每隔一個(gè)固定時(shí)間對(duì)控制對(duì)象進(jìn)行信息采樣X(jué)n,在此基礎(chǔ)上,我們?cè)谌齻€(gè)環(huán)節(jié)中介紹三個(gè)序列。

3.1 P環(huán)節(jié)(現(xiàn)在)

P(比例)環(huán)節(jié):對(duì)當(dāng)前時(shí)刻的偏差進(jìn)行比例放大。

  • 采樣序列:系統(tǒng)中每個(gè)時(shí)刻采集回來(lái)的當(dāng)前值 Xn 。
  • X1、X2、X3 … Xn-1、Xn; 第k時(shí)刻的 偏差:e(k)=Expect — Xk;
    • e(k)>0 :控制系統(tǒng)還未達(dá)到期望值;
    • e(k)=0 :控制系統(tǒng)已經(jīng)達(dá)到期望值;
    • e(k)<0 :控制系統(tǒng)已經(jīng)超過(guò)期望值;
  • P環(huán)節(jié)的第k時(shí)刻的輸出:u(k)=Kp * e(k) 。
    • Kp:P比例系數(shù),可以理解為放大倍數(shù)。
  • 單P算法中的缺陷:當(dāng)系統(tǒng)不存在偏差(e(k)=0)時(shí),執(zhí)行部件便無(wú)輸出,被控對(duì)象處于失控狀態(tài)。



3.2 I 環(huán)節(jié)(過(guò)去)

I(積分)環(huán)節(jié):對(duì)過(guò)去所有時(shí)間的偏差進(jìn)行積分。

  • 偏差序列:e(k)=Expect — Xk
  • e1、e2、e3 … en-1、en; ∑ei:對(duì)過(guò)去所有時(shí)間的偏差進(jìn)行求和;
    • ∑ei<0 :控制系統(tǒng)在 過(guò)去大部分時(shí)間段還未達(dá)到期望值;
    • ∑ei=0 :控制系統(tǒng)在 過(guò)去大部分時(shí)間段已經(jīng)達(dá)到期望值;
    • ∑ei>0 :控制系統(tǒng)在 過(guò)去大部分時(shí)間段已經(jīng)超過(guò)期望值;
  • I環(huán)節(jié)的第k時(shí)刻的輸出:u(k)=Ki * ∑ei 。(Ki:i比例系數(shù))

在控制系統(tǒng)剛啟動(dòng)時(shí),由于I環(huán)節(jié)的 偏差累積效應(yīng),可以 更快的達(dá)到期望值。但同時(shí)也由于偏差的累積效應(yīng),使得系統(tǒng)第一次達(dá)到期望值時(shí),過(guò)去所有時(shí)刻都未達(dá)標(biāo),即∑ei很大,所以曲線其實(shí)會(huì)超過(guò)期望的那條虛線并持續(xù)增長(zhǎng),所以,我們通常會(huì)在I環(huán)節(jié)中除以積分時(shí)間Ti,即u(k)=Ki * ∑ei/Ti 另一個(gè)解決辦法 我們后面在增量式算法中再進(jìn)行討論。



3.3 D環(huán)節(jié)(將來(lái))

D(微分)環(huán)節(jié):通過(guò)偏差的偏差,對(duì)控制系統(tǒng)的輸出走向進(jìn)行預(yù)判,起超前調(diào)節(jié)的作用。

  • 偏差的偏差序列:△ek=ek-ek-1;
  • △e1、△e2、△e3 … △en-1、△en;
    • △e(k)很大時(shí),表示控制系統(tǒng)上一刻的輸出很“陡峭”,表明控制系統(tǒng)離目標(biāo)相差很遠(yuǎn),所以D環(huán)節(jié)的輸出也很大。
  • D環(huán)節(jié)的第k時(shí)刻的輸出:u(k)=Kd * △e(k) 。
  • Kd:D積分系數(shù),除了超前預(yù)判,還可理解為阻尼力。



四、增量式PID算法

位置式PID:u(k)=Kp * e(k)+Ki / T * ∫ e(k) dt+Kd*d e(k);

增量式PID:u(k)=Kp * e(k-1)+Ki *e(t) +Kd *(e(k)-2e(k-1)+e(k-2));

很顯然,對(duì)位置式PID進(jìn)行求導(dǎo)(dx = f(x) - f(x-1)),就得到了增量式PID。

對(duì)于前面談到的,位置式PID的 I 環(huán)節(jié),是對(duì)過(guò)去所有時(shí)間的偏差進(jìn)行積分,其輸出與過(guò)去所有時(shí)間都有關(guān),而增量式的PID只于最近的三個(gè)時(shí)刻的偏差有關(guān)。

其實(shí),增量式PID我覺(jué)得也沒(méi)有很多需要理解的,自然而然的代入應(yīng)用即可。

//電機(jī)控制  增量式 P I 算法

    Err_speed=Expect_speed-actual_speed;
    
    Err_dev_speed=Err_speed-Err_speed_last;
    
    Err_speed_last=Err_speed;
    
    gradinets=(int) (PID_P*Err_dev_speed+PID_I*Err_speed);
float PID_Cal(float Speed){
 pid.SetSpeed = Speed;
 pid.Err = pid.SetSpeed - pid.ActualSpeed;//誤差的計(jì)算,即比例控制
 pid.Integral += pid.Err;//誤差相加,即積分控制
 pid.Voltage = pid.Kp * pid.Err + pid.Ki * pid.Integral + pid.Kd *
  (pid.Err - pid.Err_last);//根據(jù)位置型PID控制的公式
 pid.Err_last = pid.Err;
 pid.ActualSpeed = pid.Voltage * 1.0; //轉(zhuǎn)換
 return pid.ActualSpeed;//PID控制后的實(shí)際輸出值}


QQ在線咨詢
聯(lián)系電話
17658151177
售后服務(wù)
17658151177