0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

增量式PID算法在c代碼部分的實現(xiàn)過程

嵌入式應(yīng)用開發(fā) ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-06-16 11:27 ? 次閱讀

stm32控制器下經(jīng)常會用到對溫度控制,適度控制,轉(zhuǎn)速控制等需要自動控制相關(guān)的操作,因此在使用中需要不斷提高對自動控制 原理部分的學(xué)習(xí),一個好的自動控制系統(tǒng)包含三個 主要因素:穩(wěn),快,準(zhǔn)。穩(wěn)即系統(tǒng)的穩(wěn)定性,快即系統(tǒng)的快速性,準(zhǔn)即控制的準(zhǔn)確性。

在自動控制中比例增益,積分時間,微分時間三個主要變量。下面就這三個變量進(jìn)行動態(tài)展示。

動圖

如上圖所示,假設(shè)在單位階躍響應(yīng)下,比例控制幅值,kp越大值越高相關(guān)的,積分時間控制精確度,數(shù)值越大波形超調(diào)量越大,微分時間控制波形的平緩程度。

下面貼出增量式PID算法在c代碼部分的實現(xiàn)過程。

//實現(xiàn)增量式PID算法 

#include "stdio.h" 
void pid_init();//PID參數(shù)初始化 
float pid_realise(float speed);//實現(xiàn)PID算法   

struct {
    float set_speed;//設(shè)定速度 
    float actual_speed;//實際速度
    float error;//偏差  
    float error_next;//上一個偏差  
    float error_last;//上上一個偏差 
    float kp,ki,kd;//定義比例,積分,微分參數(shù)  
     
}pid;


int main()
{
    pid_init();
    int count = 0;
    while(count<400)//進(jìn)行400次 PID 運算,使初始值從0開始接近200.0   
    {
        float speed = pid_realise(200.0);//設(shè)定值設(shè)定為200.0  
        printf("%f\n",speed);//輸出每一次PID 運算后的結(jié)果  
        count++;
    }
}


void pid_init()
{
    pid.set_speed = 0.0;
    pid.actual_speed = 0.0;
    pid.error = 0.0;
    pid.error_next = 0.0;
    pid.error_last = 0.0;
    //可調(diào)節(jié)PID 參數(shù)。使跟蹤曲線慢慢接近階躍函數(shù)200.0 // 
    pid.kp = 0.2;
    pid.ki = 0.01;
    pid.kd = 0.2;
}


float pid_realise(float speed)//實現(xiàn)pid  
{
    pid.set_speed = speed;//設(shè)置目標(biāo)速度  
    pid.error = pid.set_speed - pid.actual_speed;
    float increment_speed;//增量
     
    increment_speed = pid.kp*(pid.error-pid.error_next)+pid.ki*pid.error+\
    pid.kd*(pid.error-2*pid.error_next+pid.error_last);//增量計算公式  
    
    pid.actual_speed+= increment_speed;
    pid.error_last = pid.error_next;//下一次迭代  
    pid.error_next = pid.error;
    return pid.actual_speed; 
    
}

運行數(shù)據(jù)得到圖標(biāo)如下 :

poYBAGKqov2ALrgkAABTRApyEyM634.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16423

    瀏覽量

    178880
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10918

    瀏覽量

    356895
  • PID
    PID
    +關(guān)注

    關(guān)注

    35

    文章

    1473

    瀏覽量

    85677
收藏 人收藏

    評論

    相關(guān)推薦

    淺析位置PID增量PID算法

    位置PID增量PID算法通常依據(jù)控制器輸出與執(zhí)行機(jī)構(gòu)的對應(yīng)關(guān)系,將基本數(shù)字
    發(fā)表于 01-15 18:35

    教你用C語言實現(xiàn)位置PID增量PID

    控制器”,拿控制電機(jī)來說,參考下面模型:下面引用一段網(wǎng)上經(jīng)典的話:工業(yè)應(yīng)用中PID及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無愧的萬能算法
    發(fā)表于 05-30 08:00

    收藏干貨 PID算法實現(xiàn)

    ,是當(dāng)之無愧的萬能算法,如果能夠熟練掌握PID算法的設(shè)計與實現(xiàn)過程,對于一般的研發(fā)人員來講,應(yīng)該是足夠應(yīng)對一般研發(fā)問題了,而難能可貴的是,
    發(fā)表于 06-22 11:37

    STM32如何去實現(xiàn)增量PID算法

    盡快進(jìn)入狀態(tài)。特地分享一些自己如何實現(xiàn)過程。首先說說增量PID的公式,這個關(guān)系到MCU算法
    發(fā)表于 09-13 06:54

    PID算法增量算法

    這里的PID是指控制類的比例-積分-微分算法,而不是進(jìn)程ID號。PID算法,不管是原理上,還是代碼上都比較簡單。主要運用在電機(jī)控制、開關(guān)電源
    發(fā)表于 09-13 06:06

    如何實現(xiàn)增量PID

    雖然PID不是什么牛逼的東西,但是真心希望以后剛剛接觸這塊的人能盡快進(jìn)入狀態(tài)。特地分享一些自己如何實現(xiàn)過程。首先說說增量
    發(fā)表于 09-13 08:19

    增量PID的stm32實現(xiàn)及其整定過程 

    源:增量PID的stm32實現(xiàn),整定過程  首先說說增量
    發(fā)表于 09-13 07:35

    使用C語言進(jìn)行PID算法實現(xiàn)

    前文對PID算法離散化和增量PID算法原理進(jìn)行來探索,之后又使用Matlab進(jìn)行了仿真實驗,對
    發(fā)表于 09-15 09:20

    如何去實現(xiàn)基于stm32的PID算法增量程序呢

    PID算法可分為哪幾類?PID算法的參數(shù)有哪些呢?如何去實現(xiàn)基于stm32的PID
    發(fā)表于 12-02 07:48

    增量PID控制算法

    增量PID控制算法-2011,有需要的下來看看。
    發(fā)表于 04-01 14:54 ?30次下載

    位置型PIDC語言代碼實現(xiàn)過程詳細(xì)資料概述

    上一節(jié)中已經(jīng)抽象出了位置性 PID增量PID 的數(shù)學(xué)表達(dá)式,這一節(jié),重 點講解 C 語言代碼
    發(fā)表于 07-16 08:00 ?8次下載

    在三菱FX2NPLC上實現(xiàn)增量PID算法的控制

    實際系統(tǒng)中,PLC控制模擬量可采用PLC自帶的PID過程控制模塊,但對要求比較高的場合采用改進(jìn)的PID控制算法,就必須由用戶自己編制
    的頭像 發(fā)表于 12-31 08:11 ?1.3w次閱讀
    在三菱FX2NPLC上<b class='flag-5'>實現(xiàn)</b>了<b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>算法</b>的控制

    如何使用免疫粒子群優(yōu)化算法實現(xiàn)增量PID控制

    基于粒子群優(yōu)化算法的收斂速度快簡單易實現(xiàn)的特點和免疫算法的免疫記憶、免疫自我調(diào)節(jié)和多峰值收斂的特點,本文設(shè)計出免疫粒子群算法,并將其應(yīng)用于PID
    發(fā)表于 11-01 15:41 ?7次下載
    如何使用免疫粒子群優(yōu)化<b class='flag-5'>算法</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>增量</b><b class='flag-5'>式</b>的<b class='flag-5'>PID</b>控制

    使用單片機(jī)和Arduino實現(xiàn)增量PID位置PID算法PID庫免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)和Arduino實現(xiàn)增量PID位置PID
    發(fā)表于 05-28 16:30 ?69次下載
    使用單片機(jī)和Arduino<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b>位置<b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>算法</b>和<b class='flag-5'>PID</b>庫免費下載

    PID控制算法C語言實現(xiàn)

    PID算法C實現(xiàn)1、PID算法簡介1.1、各個環(huán)節(jié)的作用2、位置型
    發(fā)表于 01-13 13:39 ?45次下載
    <b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>的<b class='flag-5'>C</b>語言<b class='flag-5'>實現(xiàn)</b>