在DB块,一共六组数据,分别是1000,2000,3000,4000,5000,6000,如果外部输入的值,在这六组数据偏差内,就认为在位置,比如说第一组数据1000,偏差是50,只要数据大于950小于1050,就认为在1号位置, 同理第二组数据2000的偏差也是正负50,如果外部输入大于1950小于2050就认为在2号位置 ,我用SCL仿真的时候,当外部输入为1990,程序输出是1号位置,实际应该属于2号位置呀,监控SCL,发现从DB块取出第一组数据也是2000,我的第一组数据实际是1000呀,不知道什么原因,是不是我的语法有问题,为了方便前辈解答,我把程序复制下来。。。。详细见截图,非常非常感谢。。。。。
FUNCTION FC6: VOID
VAR_INPUT
AA :INT;
END_VAR
VAR_OUTPUT
CC :INT;
END_VAR
VAR_TEMP
TEMP :INT;
DD :INT;
END_VAR
BEGIN
TEMP:=1;
DD :=0 ;
FOR TEMP:= 1 TO 6 BY 1 DO
IF "SHUJU".CUNZHUN[TEMP]+50>AA AND "SHUJU".CUNZHUN[TEMP]-50<AA THEN
DD:=TEMP;
EXIT;
END_IF;
END_FOR;
CC:=DD;
END_FUNCTION
问题补充:
@RENHQ,你的MW100赋值是1990吗?我的DB块从1开始的详细见截图,为啥我监控输出是1呢?
图片说明:
最佳答案
我用你的程序测试的没问题啊~
看截图
你DB块定义的数组是从0开始还是从1开始的,是不是从0开始的,如果是从0开始的话,会有你说的这种情况发生
不过看你监控的是从1开始的啊
补充:
是的,我通过修改mw100里面的值测试的
如果小于900输出是0
1000输出1
2000输出2
1990我也测试了,也是2
你先把其他程序删除了,单独试这一个程序试试,我单独测试的
图片说明:
提问者对于答案的评价:
谢谢你了,按你的方法,重新建个新程序,就好了,非常感谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc139547.html