当前位置: 主页 > PLC控制

新手请教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呀,不知道什么原因,是不是我的语法有问题,为了方便前辈解答,我把程序复制下来。。。。详细见截图,非常非常感谢。。。。。
FUNCTioNFC6: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;

FORTEMP:=1TO6BY1DO
IF"SHUJU".CUNZHUN[TEMP]+50>AAAND"SHUJU".CUNZHUN[TEMP]-50<AATHEN
DD:=TEMP;
EXIT;
END_IF;
END_FOR;
CC:=DD;

END_FUNCTION

问题补充:
@RENHQ,你的MW100赋值是1990吗?我的DB块从1开始的详细见截图,为啥我监控输出是1呢?

图片说明:

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

最佳答案

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

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

图片说明:

新手请教SCL新手请教SCL

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

  • 关注微信

猜你喜欢

微信公众号