中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是PID算法及PID算法源代碼怎么寫

發布時間:2021-10-14 13:54:40 來源:億速云 閱讀:279 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關什么是PID算法及PID算法源代碼怎么寫,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

明接到這樣一個任務:

有一個水缸點漏水(而且漏水的速度還不一定固定不變),
要求水面高度維持在某個位置,
一旦發現水面高度低于要求位置,就要往水缸里加水。 

小明接到任務后就一直守在水缸旁邊,
時間長就覺得無聊,就跑到房里看小說了,
每30分鐘來檢查一次水面高度。水漏得太快,
每次小明來檢查時,水都快漏完了,離要求的高度相差很遠
,小明改為每3分鐘來檢查一次,結果每次來水都沒怎么漏
,不需要加水,來得太頻繁做的是無用功。幾次試驗后,
確定每10分鐘來檢查一次。這個檢查時間就稱為采樣周期。 

開始小明用瓢加水,水龍頭離水缸有十幾米的距離,
經常要跑好幾趟才加夠水,于是小明又改為用桶加,
一加就是一桶,跑的次數少了,加水的速度也快了,
但好幾次將缸給加溢出了,不小心弄濕了幾次鞋,小明又動腦筋,
我不用瓢也不用桶,老子用盆,幾次下來,發現剛剛好,不用跑太多次,
也不會讓水溢出。這個加水工具的大小就稱為比例系數。 

小明又發現水雖然不會加過量溢出了,有時會高過要求位置比較多
,還是有打濕鞋的危險。他又想了個辦法,在水缸上裝一個漏斗,
每次加水不直接倒進水缸,而是倒進漏斗讓它慢慢加。這樣溢出的問題解決了,
但加水的速度又慢了,有時還趕不上漏水的速度。
于是他試著變換不同大小口徑的漏斗來控制加水的速度
,最后終于找到了滿意的漏斗。漏斗的時間就稱為積分時間 。

小明終于喘了一口,但任務的要求突然嚴了,
水位控制的及時性要求大大提高,一旦水位過低,
必須立即將水加到要求位置,而且不能高出太多,否則不給工錢。
小明又為難了!于是他又開努腦筋,終于讓它想到一個辦法,常放一盆備用水在旁邊,
一發現水位低了,不經過漏斗就是一盆水下去,這樣及時性是保證了,但水位有時會高多了。
他又在要求水面位置上面一點將水鑿一孔,再接一根管子到下面的備用桶里這樣多出的水會從上面的孔里漏出來。
這個水漏出的快慢就稱為微分時間。


大學時代做機器人時用的PID算法源代碼:
#define PID_Uint struct pid_uint
PID_Uint
{
        int
U_kk;
        int
ekk;
        int
ekkk;
        int
Ur;                                //限幅輸出值,需初始化
        int
Un;                                //不靈敏區
        //int
multiple;                //PID系數的放大倍數,用整形數據的情況下,提高PID參數的設置精度          固定為256
        int
Kp;                                //比例,從小往大調
        int
Ti;                                //積分,從大往小調
        int
Td;                                //微分,用巡線板時設為0
        int
k1;                                //
        int
k2;
        int
k3;
};


void Init_PID_uint(PID_Uint *p)
{
        p->k1=(p->Kp)+(p->Kp)*1024/(p->Ti)+(p->Kp)*(p->Td)/1024;
        p->k2=(p->Kp)+2*(p->Kp)*(p->Td)/1024;
        p->k3=(p->Kp)*(p->Td)/1024;
}

void reset_Uk(PID_Uint *p)
{
        p->U_kk=0;
        p->ekk=0;
        p->ekkk=0;
}

int PID_common(int set,int jiance,PID_Uint *p)
{
        int
ek,U_k=0;
        ek=jiance-set;
        if((ek>(p->Un))||(ek<-(p->Un)))                //積分不靈敏區
                U_k=(p->U_kk)+(p->k1)*ek-(p->k2)*(p->ekk)+(p->k3)*(p->ekkk);
        p->U_kk=U_k;
           p->ekkk=p->ekk;
        p->ekk=ek;
        if(U_k>(p->Ur))                         

以上就是什么是PID算法及PID算法源代碼怎么寫,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

pid
AI

吴忠市| 宜宾市| 丘北县| 天台县| 汕头市| 舟山市| 桐庐县| 察雅县| 日照市| 酒泉市| 临海市| 沾化县| 靖边县| 宿松县| 定安县| 钟祥市| 城固县| 库尔勒市| 芜湖市| 安阳市| 长寿区| 北流市| 西畴县| 江北区| 襄樊市| 句容市| 新巴尔虎右旗| 大厂| 广河县| 民权县| 双辽市| 望都县| 永胜县| 沂南县| 陈巴尔虎旗| 乌兰浩特市| 娱乐| 德州市| 高陵县| 赣榆县| 临高县|