欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2318|回復: 3
收起左側

關于PID算法程序參數理解的疑問

[復制鏈接]
ID:771581 發表于 2020-6-7 13:19 | 顯示全部樓層 |閱讀模式
最近在看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的范圍。

回復

使用道具 舉報

ID:123289 發表于 2020-6-8 10:50 | 顯示全部樓層
PID算法計算出來一個變量PID_output,不是一個定值,它是會變的。
PID的穩態輸出,原則是,當設定值與目標值(采樣)一樣時,保持當前的輸出值不變。
否則就將輸出,反向增減。
PID的算法,與歷史采樣記錄都相關。你的程序中提到的,不屬于PID計算方式。
回復

使用道具 舉報

ID:311846 發表于 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
回復

使用道具 舉報

ID:450608 發表于 2020-6-10 13:12 | 顯示全部樓層
除了 PWM_value的值有范圍限制之外,積分部分的值因為每次計算后都會保存,它的取值范圍也應該和 PWM_value的取值范圍相同,這樣就不會出現你說的情況了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表