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