| 作者 | 主题 |
|---|---|
|
pkh2006 奇侠
经验值:6243 发帖数:872 精华帖:11 |
楼主
主题:S7-1200/S7-1500 在V14 SCL中的新功能:递归
递归,就是在运行的过程中调用自己。 构成递归需具备的条件: 1. 子问题须与原始问题为同样的事,且更为简单; 2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。 典型的递归:阶乘、斐波那契数列、汉诺塔、排序 以上来自百度百科。 -------------------------------------------------分隔符--------------------------------------------------------------- 在V14的SCL中,S7-1200 (V3.0及其以上)/S7-1500(不包括S7-300/S7-400)的FC/FB开始支持,调用深度限值为24级,且不支持多重背景。(在之前的版本包括STEP7只是LAD/STL支持递归。) 个人认为用FC,配合RETURN做比较简单,类似于高级语言的编程,这个FB的递归,很难想象如何使用,等待高手的解惑。
但是对于S7-1200,嵌套深度: 16(从程序循环 OB 或启动 OB 开始); 6(从任意中断事件 OB 开始) 所以S7-1200递归的调用深度也只有16级。 举个简单的阶乘例子: S7-1200的DINT/UDINT最大只支持12!,所以整数阶乘程序只能计算到12!
还有需要注意的: 1. 更改调用环境监视也只能监视到跳出条件,看不到中间过程。 2. 修改该块引脚下载,需要停止CPU,CPU认为修改块过多。
|