新手请教SCL

在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呢?

图片说明:

新手请教SCL    新手请教SCL    新手请教SCL    新手请教SCL    新手请教SCL   

最佳答案

我用你的程序测试的没问题啊~
看截图
你DB块定义的数组是从0开始还是从1开始的,是不是从0开始的,如果是从0开始的话,会有你说的这种情况发生
不过看你监控的是从1开始的啊
补充:
是的,我通过修改mw100里面的值测试的
如果小于900输出是0
1000输出1
2000输出2
1990我也测试了,也是2

你先把其他程序删除了,单独试这一个程序试试,我单独测试的

图片说明:

新手请教SCL  

提问者对于答案的评价:
谢谢你了,按你的方法,重新建个新程序,就好了,非常感谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc139547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月1日 上午2:15
下一篇 2017年6月1日 上午2:16

相关推荐