回复:PID控制器的输出Mn 能不能为负值?

醉书生

  • 帖子

    718
  • 精华

    25
  • 被关注

    18

论坛等级:侠士

注册时间:2004-06-13

普通 普通 如何晋级?

发布于 2010-12-29 00:47:19

27楼

看的真是纠结!理解有问题,不管加热还是制冷,都是输出一个“热量”(注意不是温度)。要将温度从35度降到30度,并不一定要启动制冷,而是将输出的“热量”降低。
这个问题不应该用2路PID,无谓的将简单问题复杂化。

不管是向导还是自编,PID会输出一个 0-1 的值 PIDx_Output。如果用向导的话,不要PID_INIT 的输出直接接到模拟口,而是将它输出到一个任意不使用的变量去。然后:

网络
ld sm0.0
call SCALE_R2I, PIDx_Output, 0,0, 1.0, -32000, 32000, ac0
这一步是用线性变换库将PID输出[0,1]变换为模拟量量程[-32000,32000],变换结果在ac0中。
movw 0,ac1 // 可以可无,因为多处要mov零值,用寄存器可优化大小和效率

新网络
ldw> ac0, -320 // 死区
aw< ac0, 320 // 防止制冷制热反复交替启动
movw ac1, aqw0
movw ac1, aqw2 // 这两句控制“热量”输出为0
cret

新网络
ldw> ac0, ac1
movw ac0, aqw0 // 大于零时启动制热
movw ac1, aqw2
not
*i -1, ac0
movw ac1, aqw0
movw ac0, aqw2 // 小于零时启动制冷
生命存在的方式只有两种:腐烂或燃烧
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33295条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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