标题: 发一段用软件调试pid参数的代码 [打印本页]

作者: lxm_991    时间: 2022-4-7 12:26
标题: 发一段用软件调试pid参数的代码
最近写个小程序用到了pid算法,发现用单片机盲调pid参数很难找到合适点,
所以用软件模拟pid,把采集和设置的参数范围确定,用软件模拟,可以很清晰的看到计算过程,及时发现震荡,缩小收敛次数。最终效果还不错。

网上也有一些成品软件,我还是习惯看输出数据,更精确些,也可以自己定义输入参数范围,更灵活些。


源程序如下:
  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;//初始状态
  26. var t=0;
  27. for(i=1;1000;1){
  28.         t=calcpid(2048,x); //调整到目标值
  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);
复制代码


作者: heicad    时间: 2022-4-7 14:48
很牛的代码 这个是什么开发环境?
作者: zhlzhang    时间: 2022-4-7 15:14
楼主用的是aardio写的吧




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1