在S7-CPU中使用嵌套程序的注意事项

作者:老电工时间:2020-04-01 14:42:38

在S7-CPU中使用嵌套程序的注意事项

回答:S7-CPU支持嵌套程序,但对于不同的CPU类型,在使用时需要注意一些问题。

1. 不同的CPU类型,支持的嵌套程序深度不同,用户可在CPU的技术数据中查到此参数,以6ES7315-2AG10-0AB0为例。

S7-CPU中使用嵌套程序的注意事项

图1:CPU的嵌套深度参数

2. 用户按照以下方式使用嵌套功能:

a) 在某个优先级组织块中调用多个嵌套FC/FB。

例如,在OB1 (优先级为1)调用FC1,FC1中调用FC2,FC2中调用FC3,等等,一直到FC7,与OB1共8层深度。如果在FC7 中又调用了FC8 ,此时会导致CPU 停机,在CPU在线信息界面中可查看到此情况,如图2所示。用户也可在OB35(优先级为12)调用FC11,FC11中调用FC12,FC12中调用FC13,等等,一直到FC17。

S7-CPU中使用嵌套程序的注意事项

图2:嵌套调用

b) 在某个优先级中调用某个FC,此FC多次调用自身。

例如,在OB1 (优先级为1)调用FC1,FC1中仍然调用FC1,用户在FC1 的程序中必须编程累计FC1被调用的次数,如果达到了7次,则需要从FC1 中跳出调用(此方法即为软件行业广泛应用的递归编程方法)。

如果在FC1 调用自身次数超出了CPU允许的嵌套深度,此时会导致CPU停机。

3、当用户在使用嵌套功能时,可能出现几种错误:

a) The nesting depth of block calls (U-Stack) is too high(嵌套深度太高)。

例如:

1、用户在某个优先级(如OB1)中调用嵌套程序深度超出所使用CPU支持深度,如第2节(a) 部分所描述。

2、用户在某个优先级(如OB1)中调用嵌套程序深度超出所使用CPU支持深度,如第2节(b) 部分所描述。

此时CPU将报16#4575错,如图3:

S7-CPU中使用嵌套程序的注意事项

图3:同步错误嵌套1

b) The nesting depth of synchronous errors is too high(同步错误嵌套深度太高)。例如:

1、用户在OB1中使用L DB1.DBB0 语句(CPU中并未下载DB1),

2、此时CPU出现编程错误,将调用OB121。

3、如果用户在下载的OB121中又使用了L DB1.DBB0 指令,将导致CPU停机。

本站仅提供信息发布平台,文章仅代表作者个人观点。

猜你喜欢

首页 > plc > 西门子plc