您的位置:控制工程论坛网论坛 » 西门子社区 » S7-1200/S7-1500 在V14 SCL中的新功能:递归

martion

martion   |   当前状态:在线

总积分:5074  2024年可用积分:0

注册时间: 2013-07-25

最后登录时间: 2019-12-19

空间 发短消息加为好友

S7-1200/S7-1500 在V14 SCL中的新功能:递归

martion  发表于 2017/2/3 9:57:22      1944 查看 3 回复  [上一主题]  [下一主题]

手机阅读

递归,就是在运行的过程中调用自己。


构成递归需具备的条件:

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认为修改块过多。


1楼 0 0 回复
  • jijun

    jijun   |   当前状态:在线

    总积分:5844  2024年可用积分:2

    注册时间: 2007-09-24

    最后登录时间: 2023-08-18

    空间 发短消息加为好友

    jijun   发表于 2017/2/4 10:29:50

    过年了来论坛的少了,点个赞先

    2楼 回复本楼

    引用 jijun 2017/2/4 10:29:50 发表于2楼的内容

  • bonbo

    bonbo   |   当前状态:在线

    总积分:4881  2024年可用积分:0

    注册时间: 2013-06-20

    最后登录时间: 2023-08-10

    空间 发短消息加为好友

    bonbo   发表于 2017/2/5 8:58:45

    一直没有看懂这个功能,到大神这里学习下。

    3楼 回复本楼

    引用 bonbo 2017/2/5 8:58:45 发表于3楼的内容

  • luck

    luck   |   当前状态:在线

    总积分:4492  2024年可用积分:0

    注册时间: 2013-06-20

    最后登录时间: 2023-08-14

    空间 发短消息加为好友

    luck   发表于 2017/2/6 9:58:29

    在以前学C语言的时候,接触过递归这种功能,重温一下。

    4楼 回复本楼

    引用 luck 2017/2/6 9:58:29 发表于4楼的内容

总共 , 当前 /