现在编程上有一个问题,请教一下各位!
现在想将S7-200模拟量AIW0进过运算得到的值和上位机VD308将行PID的运算,然后再输出给AQW0输出。
现在在处理上有些问题,就是输出口上AQW0一直为+6400,见图2,请教一下为什么?程序上是否有问题,或者大家是否有更优的程序可以参考一下。
详细程序:LD SM0.0
LPS
CALL Scale_I_to_R, AIW0, +32000, +6400, 100.0, 0.0, VD208
ROUND VD208, VD300
AENO
DTI VD300, VW304
LRD
CALL PID0_INIT, VW304, VD308, VW400
LRD
ITD VW400, VD400
LPP
CALL Scale_R_I, VD400, 100.0, 0.0, +32000, +6400, AQW0
梯形图见图1
图片说明:
最佳答案
首先:你的PID回路是如何配置的?如果给定值和过程变量都是0-100,这个PID调用勉强通过(语法没问题)但是控制分辨率为1%,显得太粗了。如果用0-32000的过程变量,则可能是1/32000或者1/4096(12位精度)。
其次:VW400的取值范围,如果你在输出范围设定了0-100,这样写也是语法正常,但是输出的粗糙与输入同理,不再赘述。如果用如果用0-32000的过程变量,则可能是1/32000或者1/2048(11位精度)。
其三:况且R转I的过程中(这语句不知楼主是和用意),误在实数输入位置使用了整数,造成数据非法。子程序将该数字按0.0来处理。
建议:认真阅读手册或搜索前面关于PID应用的帖子。
提问者对于答案的评价:
谢谢,老师的解答,但对11位和12位的精度还是不太清楚。我还需要看看资料。另外我自己重新修改了下程序,您可以再帮我看一看。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc306241.html