递归在一定程度上可以代替循环,在特定的场景情况下会比for循环更好理清楚,比如汉诺塔;在C语言中比较常见,在PLC中较为少见,所以专门做了个测试。
场景: 1到 n的等差数列的计算,也就是1+2+3+....n;
方法:可以用for,可以用公式n*(n+1)/2, 但是此处的目的是测试递归,所以以上不用;
定义变量
上程序
2.1SCL
2.2 STL
以上拿的是22,因为拿23 会导致PLC 死机;但是此处不是因为循环时间,因为目前cycleTime 还是非常小的;所以判断是次数。
为了验证,把上面的-1 改为减2,拿44 测试通过,45 PLC 会挂掉:
结论:
PLC 支持递归调用,但是受次数限制,目前测试结果是22层;(使用1513和1516测试,结果一致)
补充一点:
不知道这个24 算不算嵌套深度;