不用浮點實現pid PID專題及C語言的實現

2021-10-17 05:26:09 字數 812 閱讀 4670

注意:任何演算法使用程式表示,都得將演算法離散化,以下的演算法公式及**都是將連續函式離散化後的表示結果。

問題一:位置式pid與增量式pid差別?

位置式pid將誤差累加,增量式pid與當前及前兩派誤差有關。

問題二:位置式pid計算公式是什麼?

問題三:增量式pid計算公式是什麼?

由問題二的位置式的pid計算公式可知,u(k)和u(k-1)的計算公式。將二者做差,即得到增量式pid的計算公式。

問題四:位置式pid實現c語言**?

typedef structpid;

結構體pid的初始化:

pid pid = ;

float pid_loc(float setvalue,    float actualvalue, pid *pid)    //由於計算結果是屬於增量,那麼計算後,該pidinc需要疊加到原pwm的占空比上面,具體是加還是減看具體情況。

問題六:為什麼在使用增量式pid的時候,反饋的調節現象是正反饋?

增量式的pid,在實際的應用上,需要根據具體的情況判斷是加還是減,弄錯了就成為了正反饋。

問題七:實際應用中,pid三個引數該如何確定?

先調p值,p從小往大了調,調到臨界振盪,取臨界振盪的70%

再調i值,i值從大往小了調,調到消除穩定誤差。

d值,視情況來調。預設為零。

[1] 何俊龍,杜封.微縮智慧型車路徑跟蹤的增量式pid控制[j].天津職業技術師範大學學報.2018,28(2):5-9

C語言中不用巨集實現變長引數函式的原理及實現

一 前言 我們通常編寫的函式都是引數固定的,多了少了都會有錯,但是有時候我們是不能確定預先需要多少個引數的,而變長引數函式恰恰就能解決我們的問題。在unix中,提供了變長引數函式的編寫方法,主要是通過va list物件實現,定義在檔案 stdarg.h 中,變長引數函式的編寫有乙個固定的模板,模板很...

C語言的浮點型別及資料的相互轉化

c語言中有float 和double 兩種不同的 浮點型別,分別對應 ieee 電氣電子工程師學會 754單精度格式和雙精度格式,相應的十進位制有效數字分別為 7 位和 17位左右。在各種資料相互轉化時,滿足 1 當int轉化為 float 時不會發生溢位,但有效數字可能被捨去 int 的32位都用...

c語言雜湊表電子辭典 C語言實現的雜湊表實現程式

下面我們一起來看乙個c語言實現的雜湊表實現程式了,這個程式沒有過多的說明只是乙個例子,大家有興趣可以進入看看或測試一下。為了鞏固一下鍊錶知識,自己實現的乙個雜湊表,在gcc 4.4.7下編譯通過 hash.h 如下 複製 author maben date 2014 12 23 ifndef has...