我用向导生成的PID,在主程序中直接调用。P是5.0,I是10分钟。因为外围没有接线,所以直接用V区代替检测量(VD200:0~1之间),设定值(0~100),手动值(0~1)和输出值(6400~32000)。主程序如下,三个网络。
第一个网络初始化
LD SM0.1
R shoudong:M0.0, 1
MOVR 50.0, shedingzhi:VD206
MOVR 0.5, guocheng_bianliang:VD200
MOVR 0.5, shoudongvalue:VD210
第二个网络将0~1过程变量转换成6400~32000
LD SM0.0
MOVR 25600.0, AC0
AENO
*R guocheng_bianliang:VD200, AC0
AENO
+R 6400.0, AC0
AENO
ROUND AC0, AC0
AENO
MOVW AC0, guochengvalue:VW204
第三个网络直接调用PID
LD SM0.0
CALL PID0_INIT:SBR1, guochengvalue:VW204, shedingzhi:VD206, shoudong:M0.0, shoudongvalue:VD210, shuchu:VW214
然后我运行并用step7软件不断改变过程变量(0~1)进行监控。设定值一直为50.0。在运行过程中我发现当我的过程变量在0.5附近时运算趋势是正确的。可是当我将过程变量改为0.3或更小的时候,输出直接为32000,这个可以理解,因为与设定值的偏差过大,但是这时候我如果再次将过程变量改为0.5的时候,输出立刻为6400最小值。这个我觉得很难理解。假如我将变量改为0.7或以上,以上结果正好相反。大家觉得我这里有什么问题?