找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1341|回复: 2
打印 上一主题 下一主题
收起左侧

发一段用软件调试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);
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:262 发表于 2022-4-7 14:48 | 只看该作者
很牛的代码 这个是什么开发环境?
回复

使用道具 举报

板凳
ID:191408 发表于 2022-4-7 15:14 | 只看该作者
楼主用的是aardio写的吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表