找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1972|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

發(fā)一段用軟件調(diào)試pid參數(shù)的代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:44459 發(fā)表于 2022-4-7 12:26 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
最近寫個小程序用到了pid算法,發(fā)現(xiàn)用單片機盲調(diào)pid參數(shù)很難找到合適點,
所以用軟件模擬pid,把采集和設(shè)置的參數(shù)范圍確定,用軟件模擬,可以很清晰的看到計算過程,及時發(fā)現(xiàn)震蕩,縮小收斂次數(shù)。最終效果還不錯。

網(wǎng)上也有一些成品軟件,我還是習(xí)慣看輸出數(shù)據(jù),更精確些,也可以自己定義輸入?yún)?shù)范圍,更靈活些。


源程序如下:
  1. //pid模擬
  2. import console;
  3. import math;
  4. var pid={
  5.   set=0;
  6.   get=0;
  7.   err=0;
  8.   err_next=0;
  9.   err_last=0;
  10.   kp=0.0;
  11.   ki=0.28;
  12.   kd=0.25;
  13. }

  14. calcpid=function(set,get){
  15.         var inc;
  16.         pid.set=set;
  17.         pid.get=get;
  18.         pid.err=pid.set-pid.get;
  19.         inc=pid.kp*(pid.err-pid.err_next)+pid.ki*pid.err + pid.kd*(pid.err - 2 * pid.err_next + pid.err_last);
  20.         pid.err_last=pid.err_next;
  21.         pid.err_next=pid.err;
  22.         return inc;
  23. }
  24. //測試
  25. var x=4096;//初始狀態(tài)
  26. var t=0;
  27. for(i=1;1000;1){
  28.         t=calcpid(2048,x); //調(diào)整到目標(biāo)值
  29.         console.log(x)
  30.         x=x+t;
  31.         if(math.abs(x-2048)<0.0000000001){
  32.                 console.log(i);
  33.                 break;
  34.         }
  35. }


  36. console.pause(true);
復(fù)制代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:262 發(fā)表于 2022-4-7 14:48 | 只看該作者
很牛的代碼 這個是什么開發(fā)環(huán)境?
回復(fù)

使用道具 舉報

板凳
ID:191408 發(fā)表于 2022-4-7 15:14 | 只看該作者
樓主用的是aardio寫的吧
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表