PID控制时的参数改变问题

分享到:
404
下一篇 >

菜鸟:

各位大侠,我在使用PID功能进行温度控制时,遇到需要实时改变PID的参数的问题。比如说,在温度的上升段,为了获得快速的升温速度,就需要大的加热功率,这时比例系数P就需要调得比较大。而在保温段,比例系数P就需要调低一些,否则温度的上下波动就会比较大。为了解决这个问题,我模仿日本岛电温控器的思路,开了四路PID控制盒,各自有不同的PID参数,分别负责不同的温度段的控制。这样虽然也能解决问题,但稍显繁琐。那么有没有办法利用程序的办法在线实时自动修改PID参数呢?

侠客:

1、记录你的温度控制阶段。

2、根据不同的阶段直接把你需要的pid参数赋值给pid功能块,(如果是用向导生成的pid功能,那么参数都是在v区的,直接修改v区的地址的值就行了。)

菜鸟:

谢谢1楼的奇侠老师,我按照你说的办法编写了一个简单的实验程序,通过分别接通I1.0和I1.1的确可以修改PID的参数,程序如下:

网络1

LD SM0.0

CALL PID0_INIT:SBR1, VW3000, VD960, AQW0

网络2

LD I1.0

MOVR 1.0, VD12

MOVR 10.0, VD20

MOVR 0.0, VD24

网络3

LD I1.1

MOVR 2.0, VD12

MOVR 20.0, VD20

MOVR 1.0, VD24

但有一点我还是不明白,当我切换I1.0和I1.1时,为什么可以在状态表区看到VD12(P参数)、VD20(I参数)、VD24(D参数)按照要求变化,而在数据块区,这些参数仍然是使用PID向导建立PID控制盒时输入的数据,没有变化,这是为什么,PID参数真的被改变了吗?

侠客:

你从哪看的?200的数据块区不能online。

你只有从状态表或程序状态监控看到的才是PLC中的实际数据。

你总不能让PLC的输入点状态改变你PC中的PLC程序文件吧

游民:

楼主的数据块是停机状态看的吧,如果想把数据块**保留,则需要启用数据**写入指令。

个人认为没有必要。

侠客:

200的数据块与300完全是两回事。300的数据块中的变量的值是可以用程序改写的。和200的V区差不多。

200的数据块只是用来给指定的地址赋初始值。在CPU运行用户程序时,200的数据块中的初始值是不变的。

菜鸟:

可能我没有说清楚,我用的PLC是224XP,切换I1.0和I1.1时,为什么可以在状态表区看到VD12(P参数)、VD20(I参数)、VD24(D参数)按照要求变化,而在数据块区,这些参数仍然是使用PID向导建立PID控制盒时输入的数据,没有变化,这是为什么,PID参数真的被改变了吗。因为我要用来实际控制现场的加热电源的,事关重大,必须搞清楚PID参数究竟被改变了没有?还请各位老师赐教。


你可能感兴趣: 工控菜鸟园 自动化系统 SIMATIC S7-200 PID PLC
无觅相关文章插件,快速提升流量