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

已锁定

看雪001

  • 帖子

    2074
  • 精华

    72
  • 被关注

    202

论坛等级:至圣

注册时间:2012-04-25

钻石 钻石 如何晋级?

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

31401

15

2017-11-06 09:38:19

star star star star star
展开查看
引用自找答案,问题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,期待完善 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有7539条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。