初学SCL,写了一个非常简单的FOR循环,如下:
FUNCTION FC4 :VOID
VAR_INPUT
in2:INT;
END_VAR
VAR_OUTPUT
out2:INT;
END_VAR
VAR_TEMP
temp2:INT;
END_VAR
BEGIN
FOR temp2:=1 TO 5 BY 1 DO
out2:=in2+out2;
END_FOR;
END_FUNCTION
编译和执行都没问题,问题是我的想法是应该只循环五次,结果执行的时候只要IN2有大于0的值,程序结果就是out2不断的往上涨,不断的在循环。不理解为什么。IN2等于0的时候out2值不变,不过应该只是在不停的加0罢了
另外声明,我没有高级语言编程的相关知识,请问有没有好的基础教材推荐的,跟SCL相近的,谢谢
图片说明:
最佳答案
1、5次循环的部分程序没问题
2、导致你的数据不断往上增加的原因
1、FC4放置在OB中循环执行,所以每个周期都会+5,建议在FOR循环执行前增加循环启动条件的判断(if语句),以保证只在需要执行时进行循环累加
2、根据你的实际需要,判断是否需要对OUT2进行清零,如果要进行清零建议将OUT2定义输入输出类型
提问者对于答案的评价:
谢谢解惑,同时还给出了解决的建议,所以采纳为最佳的,谢谢。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc244083.html