typedef struct PID{ double SetPoint; // Desired Value double Proportion; // Proportional Const double Integral; // Integral Const double Derivative; // Derivative Const double LastError; // Error[-1]
關(guān)于PID比例調(diào)節(jié)作用:是按比例反應(yīng)系統(tǒng)的偏差,系統(tǒng)一旦出現(xiàn)了偏差,比例調(diào)節(jié)立即產(chǎn)生調(diào)節(jié)作用用以減少偏差。比例作用大,可以加快調(diào)節(jié),減少誤差,但是過大的比例,使系統(tǒng)的穩(wěn)定性下降,甚至造成系統(tǒng)的不穩(wěn)定。積分
typedef struct PIDValue{ uint32 Ek_Uint32[3]; //差值保存,給定和反饋的差值 uint8 EkFlag_Uint8[3]; //符號(hào),1則對(duì)應(yīng)的Ek[i]為負(fù)數(shù),0為對(duì)應(yīng)的Ek[i]為正數(shù) uint8 KP_Uint8;uint8 KI_Uint8;uint8 KD_Uint8;uint8
#include #include struct _pid { int pv; /*integer that contains the process value*/ int sp; /*integer that contains the set point*/ float integral; float pgain; float ig
這是從網(wǎng)上找來的一個(gè)比較典型的PID處理程序,在使用單片機(jī)作為控制cpu時(shí),請(qǐng)稍作簡(jiǎn)化,具體的PID參數(shù)必須由具體對(duì)象通過實(shí)驗(yàn)確定。由于單片機(jī)的處理速度和ram資源的限制,一般不采用浮點(diǎn)數(shù)運(yùn)算,而將所有參數(shù)全部用