1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 關于PID算法程序參數理解的疑問 [打印本頁]

作者: sinjin    時間: 2020-6-7 13:19
標題: 關于PID算法程序參數理解的疑問
最近在看PID相關文檔時,一直想不明白一個問題,希望論壇的朋友幫幫忙。

使用PID算法計算出來的結果,與控制量怎么聯系起來?
比如我用PWM控制無刷電機,目前是控制在1萬轉,引用PID算法計算出來一個變量PID_output,控制PWM的占空比用PWM_value寫入單片機寄存器,這兩個變量怎么關聯起來呢?

我看別人的程序是這樣的
if (PID_output > PWM_max)
     PWM_value = PWM_max;
else if (PID_output < 0)
     PWM_value = 0;
else
     PWM_value = PID_output;

為什么PWM_value = PID_output呢,我不理解是因為PWM_value是有范圍的,比如0~1024,而PID_output 可能很大或很小,與PID參數和目標值1萬轉等有關,那計算結果PID_output可能會一直是很大的值或負數,遠遠超出PWM_value的范圍。


作者: yzwzfyz    時間: 2020-6-8 10:50
PID算法計算出來一個變量PID_output,不是一個定值,它是會變的。
PID的穩態輸出,原則是,當設定值與目標值(采樣)一樣時,保持當前的輸出值不變。
否則就將輸出,反向增減。
PID的算法,與歷史采樣記錄都相關。你的程序中提到的,不屬于PID計算方式。
作者: 權威人物    時間: 2020-6-8 16:23
你所復制出來的是計算過后的結果,不是PID計算的過程,PID_output是會變動的,你這個計算后限制PID_output輸出的最大值和最小值。
if (PID_output > PWM_max)//限制上限
     PWM_value = PWM_max;
else if (PID_output < 0)//限制下限
     PWM_value = 0;
else
     PWM_value = PID_output;//容許范圍內才能賦值給PWM
作者: lichaooo    時間: 2020-6-10 13:12
除了 PWM_value的值有范圍限制之外,積分部分的值因為每次計算后都會保存,它的取值范圍也應該和 PWM_value的取值范圍相同,這樣就不會出現你說的情況了。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1