技术论坛

自己编写了一个PID,期待完善

作者 主题
至圣

经验值: 19341
发帖数: 2076
精华帖: 72
主题:自己编写了一个PID,期待完善
精华帖精华帖星级5级 推荐帖 推荐帖


只看楼主 只看精华 楼主 2017-11-06 09:38:19
引用自找答案,问题ID:176622

只能用一个CPU,现在smart200库的PID已用完,不够用怎么自己编写PID程序

提问者:ligp99


看雪001 回答道:

PID指令有帮助文档,200smart的“PID回路算法”回答了怎么写PID程序,比大部分书籍都要详细!

还有7人在找答案上回答了该问题,查看全部>

PID的参数难以确定?有没有只管给输入和输出,不用自己设PID参数的?……

一提到PID,真的头大了!就这么简单的三个参数,“一夫当关,万夫莫开”,不知难倒了多少工控人!(反正我是被为难了很久的,呵呵!)

曾经也想过:这个PID指令别人做好了,自己只管使用就好了嘛!其实不懂里面的原理,就是连参数都没法调好的!别人写的程序终究是别人的理解,自己没有理解程序,谈什么“会使用”呢?

网友的提问只是促使我编写PID程序的起因之一,我自己在使用PID向导时也感到了不便:向导独占一个中断,我想在中断中加入另外的子程序也是不可能的;向导中有输入和输出标定,这个函数也不通用 ;向导生成的背景数据占了120字节,不就是多了个自整定吗?多段曲线时一套PID参数咋整呢?……反正是各种不满意,哈哈,何患无辞?

还是要感谢西门子软件提供的帮助文档,非常详细的指引,才使我若有所悟,下面是根据文档写的PID程序:

第一步,当然是先定义接口;然后,第一段先把比例项公式用定义的接口套上去;

比例项也要设置输出范围,200plc自带的PID指令,其输出范围定标在0.00-1.00,我这个参考300plc的PID程序,定标在0.0-100.0;

接下来,做积分项的运算

积分项就是i=i++,或者i=i+1;很多人就是卡在这里,不理解积分怎样用程序来实现;

要假设一种情况:当过程值一直无法到达设定值时,积分项会令输出超限,这时必须“冻结”积分运算,防止积分饱和(就是积分过深,不易反转),这个“冻结”其实很简单,输出超限时就停止积分运算好了。

西门子如何处理这种情况呢?300PID的文档指出了:当输出超限时,积分项=输出-比例项,那么,积分项的范围就是-100.0  -    100.0!我这个程序将积分项范围限制在0-100,如果需要双向调节时,就从外部将SV和PV调换。

积分项的处理是理解PID指令的关键,这段程序我与软件自带的PID做了比较试验,自带PID背景数据从VB600起,我的从VB800起,做相同的设定值、过程值变化,反应大致都相同




大道至简,知易行难
精华帖版主置评: 要想掌握PID,先练习自己写PID。
推荐帖推荐理由: 按照数学模型写程序,有自己的见解,非常好的思路,建议置精。 (推荐人:henry.wang)
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1434341&b_id=64&s_id=0&num=15

侠圣

经验值: 3425
发帖数: 473
精华帖: 1
回复:自己编写了一个PID,期待完善
推荐帖


只看楼主 只看精华 1楼 2017-11-06 10:35:46

精神值得鼓励,想当年学C++时,我还想整个WIN 牛×系统出来呢


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19341
发帖数: 2076
精华帖: 72
回复:自己编写了一个PID,期待完善
推荐帖


只看楼主 只看精华 楼主 2楼 2017-11-06 10:56:06
以下是引用_领域在2017-11-06 10:35:46的发言 >1楼

精神值得鼓励,想当年学C++时,我还想整个WIN 牛×系统出来呢


如果你没有做到,还不如不说。

说到和做到,只是差这么一点点,别人都做到了的事情,你还在说你的“梦”多么伟大,你还在谈所谓的“精神”?


大道至简,知易行难
以下网友喜欢您的帖子:

  
侠圣

经验值: 3425
发帖数: 473
精华帖: 1
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 3楼 2017-11-06 13:16:07
以下是引用看雪001在2017-11-06 10:56:06的发言 >2楼


如果你没有做到,还不如不说。

说到和做到,只是差这么一点点,别人都做到了的事情,你还在说你的“梦”多么伟大,你还在谈所谓的“精神”?

以下是引用_领域在2017-11-06 10:35:46的发言 >1楼:精神值得鼓励,想当...

引用1楼详细内容:

精神值得鼓励,想当年学C++时,我还想整个WIN 牛×系统出来呢

抱歉,可能你误解了,我并没有说你自己做的不好,我也没有试验过,不好评价好坏,所以只能精神上鼓励你。

难道做不到的梦想,连谈的资格都没有吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19341
发帖数: 2076
精华帖: 72
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 楼主 4楼 2017-11-06 14:22:23
以下是引用_领域在2017-11-06 13:16:07的发言 >

抱歉,可能你误解了,我并没有说你自己做的不好,我也没有试验过,不好评价好坏,所以只能精神上鼓励你。

难道做不到的梦想,连谈的资格都没有吗?

好吧,感谢你的坦诚,我的确有点反应过激了!

这个简陋的PID程序,还只是考虑了在自动运行下是怎样的逻辑,手动如何处理?以及如何引入前馈控制?怎样做一个自整定的程序?……我都想有人加入讨论,可以先做程序主干,再来配红花和绿叶——先看看这个主干是不是……直的呢?


大道至简,知易行难
以下网友喜欢您的帖子:

  
侠客

经验值: 992
发帖数: 80
精华帖: 0
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 5楼 2018-02-09 09:09:59

楼主,最近我在做一个32路的PID,不知道能否参考你的程序?你能上传程序看看嘛?如果能,小弟在此谢过


 
以下网友喜欢您的帖子:

  
至圣

经验值: 18406
发帖数: 6291
精华帖: 137
回复:自己编写了一个PID,期待完善
推荐帖


只看楼主 只看精华 6楼 2018-02-10 19:45:45

对于绝大多数人,PLC的PID指令是够用、好用的。PID应用的关键是参数整定,其实了解了PID参数和系统动静态性能的关系,整定参数并不难。

我用汇编语言编写过PID程序,根据PID算法的公式编写PID的程序也不难。但是要考虑好各种细节,达到PLC的PID指令的水平,就不是那么容易了。


追求完美
以下网友喜欢您的帖子:

  
至圣

经验值: 11495
发帖数: 1028
精华帖: 39
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 7楼 2018-02-10 23:54:39
FB41简短的程序还在积分项考虑了梯形积分更精确,还有积分时浮点计算误差。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 19341
发帖数: 2076
精华帖: 72
回复:自己编写了一个PID,期待完善
推荐帖


只看楼主 只看精华 楼主 8楼 2018-02-12 14:35:47
以下是引用Bo Yang在2018-02-09 09:09:59的发言 >5楼

楼主,最近我在做一个32路的PID,不知道能否参考你的程序?你能上传程序看看嘛?如果能,小弟在此谢过


PID公式测试.part01.rar

PID公式测试.part02.rar

(由于上传文件大小受到限制,故采用分卷压缩包上传;大文件是第一卷,小文件是第二卷。)

 (更改设定值,从80——》60——》40——》60,观察过程值及输出值的曲线)

此贴本来是在找答案版块遇到网友的提问触发的思考,只是一个草图笔记;因为我对“参数自整定”的算法尚未有清晰的思考,于是贴出来,本意是想抛砖引玉,不曾想我不但没有引到玉,反而因此上传附件搭进去一块转头(哈哈,开个玩笑啦!)。

5楼网友的关注最终导致了版主的设精操作,是激励,也是鞭策。

现在的“智能化”概念,根底还是“自适应、自整定”控制,但自整定又是以PID为基础发展起来的


大道至简,知易行难
以下网友喜欢您的帖子:

  
jrz
游民

经验值: 136
发帖数: 7
精华帖: 0
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 9楼 2018-03-31 10:06:21

大神,学习啦


 
以下网友喜欢您的帖子:

  
游士

经验值: 281
发帖数: 6
精华帖: 0
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 10楼 2018-04-23 10:03:37

学习了,谢谢楼主


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1451
发帖数: 109
精华帖: 4
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 11楼 2018-04-28 08:22:52

收藏,学习好好研究

感谢楼主


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3886
发帖数: 556
精华帖: 1
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 12楼 2018-04-28 08:53:00

谢谢分享!


精益求精
以下网友喜欢您的帖子:

  
游民

经验值: 83
发帖数: 5
精华帖: 0
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 13楼 2018-05-03 12:58:17

楼主的思路很清晰,看的很清楚,受教了。希望楼主继续研究,程序先收下了,使用后有收获会反馈的。


 
以下网友喜欢您的帖子:

  
游士

经验值: 216
发帖数: 17
精华帖: 0
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 14楼 2018-07-05 17:11:11

精神可嘉,以楼主为楷模。


 
以下网友喜欢您的帖子:

  
新手

经验值: 20
发帖数: 1
精华帖: 0
回复:自己编写了一个PID,期待完善


只看楼主 只看精华 15楼 2018-07-07 08:55:13

可以建一个输出值转占空比的位信号输出库,就可以方便控制固态继电器了。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
自己编写了一个PID,期待完善
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。