資料介紹
上一節(jié)中已經(jīng)抽象出了位置性 PID 和增量型 PID 的數(shù)學(xué)表達式,這一節(jié),重 點講解 C 語言代碼的實現(xiàn)過程,算法的 C 語言實現(xiàn)過程具有一般性,通過 PID 算法的 C 語言實現(xiàn),可以以此類推,設(shè)計其它算法的 C 語言實現(xiàn)。
?
第一步:定義 PID 變量結(jié)構(gòu)體,代碼如下:
struct _pid{ float SetSpeed; //定義設(shè)定值 float ActualSpeed; //定義實際值 float err; //定義偏差值 float err_last; //定義上一個偏差值 float Kp,Ki,Kd; //定義比例、積分、微分系數(shù) float voltage; //定義電壓值(控制執(zhí)行器的變量) float integral; //定義積分值 }pid;
控制算法中所需要用到的參數(shù)在一個結(jié)構(gòu)體中統(tǒng)一定義,方便后面的使用。
第二部:初始化變量,代碼如下:
void PID_init(){ printf(“PID_init begin \n”); pid.SetSpeed=0.0; pid.ActualSpeed=0.0; pid.err=0.0; pid.err_last=0.0; pid.voltage=0.0; pid.integral=0.0; pid.Kp=0.2; pid.Ki=0.015; pid.Kd=0.2; printf(“PID_init end \n”); }
統(tǒng)一初始化變量,尤其是 Kp,Ki,Kd 三個參數(shù),調(diào)試過程當中,對于要求的控制 效果,可以通過調(diào)節(jié)這三個量直接進行調(diào)節(jié)。
第三步:編寫控制算法,代碼如下:
float PID_realize(float speed){ pid.SetSpeed=speed; pid.err=pid.SetSpeed-pid.ActualSpeed;
PID 控制----C 語言講解
pid.integral+=pid.err; pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pi d.err_last); pid.err_last=pid.err; pid.ActualSpeed=pid.voltage*1.0; return pid.ActualSpeed; }
注意:這里用了最基本的算法實現(xiàn)形式,沒有考慮死區(qū)問題,沒有設(shè)定上下限, 只是對公式的一種直接的實現(xiàn),后面的介紹當中還會逐漸的對此改進。
到此為止,PID 的基本實現(xiàn)部分就初步完成了。下面是測試代碼:
int main(){ printf(“System begin \n”); PID_init(); int count=0; while(count《1000) { float speed=PID_realize(200.0); printf(“%f\n”,speed); count++; } return 0; }
- 使用MATLAB的實驗源代碼C語言實現(xiàn)AM調(diào)制的詳細資料合集免費下載 2次下載
- 使用C語言實現(xiàn)51單片機中的PID算法代碼免費下載
- 如何使用C語言實現(xiàn)軟復(fù)位詳細資料說明
- C語言教程之Makefile基礎(chǔ)的詳細資料說明 10次下載
- C語言程序設(shè)計教程之C語言基礎(chǔ)的詳細資料概述 66次下載
- C語言入門教程之堆棧的詳細資料概述 12次下載
- C語言編譯器MINGW的使用說明詳細資料概述 15次下載
- C語言教程之如何選擇結(jié)構(gòu)程序設(shè)計的詳細資料概述 3次下載
- C語言常用的預(yù)處理命令和循環(huán)左移右移函數(shù)的詳細資料概述 71次下載
- levitator的ino和pid源代碼詳細資料免費下載 3次下載
- C++語言入門教程之C++語言程序設(shè)計函數(shù)的詳細資料概述免費下載 23次下載
- C++語言入門教程之C++語言程序設(shè)計數(shù)組的詳細資料概述免費下載 9次下載
- 實現(xiàn)TFT LCD的測試C語言函數(shù)詳細資料免費下載 11次下載
- PID程序算法的詳細資料概述免費下載 36次下載
- 單片機C語言程序設(shè)計的20例基礎(chǔ)程序設(shè)計詳細資料概述 86次下載
- 位置式PID與增量式PID的區(qū)別 3463次閱讀
- 位置式PID和增量式PID的C語言實現(xiàn) P、I、D各個參數(shù)的作用 1174次閱讀
- 如何通過C語言和梯形圖實現(xiàn)PID控制算法 897次閱讀
- PID控制算法代碼 PID控制算法的原理 2334次閱讀
- C 語言的頭文件路徑位置問題 5709次閱讀
- SPI總線驅(qū)動的C語言源代碼詳細概述 6997次閱讀
- C語言變量的存儲類別有哪些詳細資料介紹 4583次閱讀
- 使用C語言實現(xiàn)萬年歷星期速算法的源代碼免費下載 2990次閱讀
- 庫卡機器人模擬量輸入輸出編程的詳細資料概述 6623次閱讀
- 開關(guān)電源的正激變換器基本工作原理及元器件如何選擇等詳細資料概述 1.3w次閱讀
- PLC常用基本環(huán)節(jié)梯形圖和詳細文字說明詳細資料概述 8957次閱讀
- 變壓器保護的基本要求,保護配置和運行規(guī)定的詳細資料概述 8474次閱讀
- 位置式PID算法的C語言代碼 1.2w次閱讀
- 詳細剖析C語言編譯過程 4932次閱讀
- c語言實現(xiàn)des加密算法詳細過程 3.5w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機大棚環(huán)境控制器仿真程序
- 1.10 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多