浔之漫智控技术(上海)有限公司
西门子模块代理商
西门子断路器总代理商-杭州

浔之漫智控技术(上海)有限公司 

本公司销售西门子自动化产品,全新原装,****,价格优势

西门子PLC,西门子触摸屏,西门子数控系统,西门子软启动,西门子以太网

西门子电机,西门子变频器,西门子直流调速器,西门子电线电缆

我公司大量现货供应,价格优势,品质保证,德国原装进口

3bd033d55d55fddc5578cc0a98a3f0c - 副本 - 副本.jpg

7.18 子例程

7.18.1 CALL (子例程)和 RET (有条件返回)

要添加新子例程,请选择“ “ 编辑 ”(Edit) 功能区,然后选择“ “ 插入对象 ”(Insert Object) 和“ “ 子例

程 程 ”(Subroutine) 命令。 STEP 7-Micro/WIN SMART 自动在每个子例程中添加一个无条件

返回。 还可以在子例程中添加有条件返回 CRET 指令。

在主程序中,可以嵌套调用子例程(在子例程中调用子例程),*大嵌套深度为八。

在中断例程中,可嵌套的子例程深度为四。

说明

允许递归调用(子例程调用自己),但在子程序中进行递归调用时应慎重。

3954966275.jpg

3955914576.jpg

带调用 参数调用子例程

子例程可选择使用传递参数。这些参数在子例程的变量表中定义。必须为每个参数分配局

部符号名称(*多 23 个字符)、变量类型和数据类型。一个子例程*多可以传递十六个

参数。变量表中的 VAR_Type 类型字段定义变量是传入子例程 (IN)、传入和传出子例程

(IN_OUT),还是传出子例程 (OUT)。

要添加新参数行,请将光标置于要添加变量类型 IN、IN_OUT、OUT 或 TEMP 的

Var_Type 字段上。单击鼠标右键打开选择菜单。选择“插入”(Insert) 选项,然后选择“下一

行”(Row Below) 选项。所选类型的另一个参数行将出现在当前条目下方。

可在变量表中分配临时 (TEMP) 参数来存储只在子例程执行过程中有效的数据。局部

TEMP 数据不会作为调用参数进行传递。也可在主例程和中断例程中分配 TEMP 参数,

但只有子例程可以使用 IN、IN_OUT 和 OUT 调用参数。

3957311648.jpg

调用参数允许的数据类型

● 能流:布尔能流仅允许用于位(布尔)输入。此声明将输入参数分配给基于位逻辑指

令组合的能流结果。能流输入与 EN 输入相似,都与位逻辑(例如,LAD 触点)相连

接,而不连接到直接/间接地址分配。必须在变量表的*上一行(或多行)指定布尔能

流输入,然后再指定任何非布尔数据类型。只有输入参数可以这样使用。下例中的使

能输入 (EN) 和 IN1 输入使用能流逻辑。

● BOOL:此数据类型用于单个位输入和输出。下例中的 IN3 是分配给直接地址的布尔

输入。

● BYTE、WORD、DWORD:这些数据类型分别标识 1、2 或 4 字节的无符号输入或输

出参数。

● INT、DINT:这些数据类型分别标识 2 或 4 字节有符号输入或输出参数。

● REAL:此数据类型标识单精度(4 字节)IEEE 浮点值。

● STRING:此数据类型用作指向字符串的四字节指针。

3958989824.jpg

上面提供了两个 STL 示例。STL 程序员可使用**组只能显示在 STL 编辑器中的简化

STL 指令。这是因为用作 LAD/FBD 能流输入的 BOOL 参数不保存到 L 存储器。

第二组编译器生成的 STL 指令可显示在 LAD、FBD 和 STL 编辑器中,因为程序编译器

使用 L 存储器来保存在 LAD/FBD 中指定为能流输入的 BOOL 输入参数的状态。

地址参数(例如,IN4 (&VB100))传入子例程作为 DWORD(无符号双字)值。对于调

用例程中常数值前面有常数描述符的参数,必须为其指定常数参数类型。例如:要传送值

为 12,345 的无符号双字常数作为参数,必须将常数参数指定为 DW#12345。如果参数中

遗漏了对于常数的说明,则可将该常数认定为不同类型。

系统不对输入或输出参数自动执行数据类型转换。例如,如果变量表指定参数的数据类型

为 REAL,但在调用例程中,为该参数指定双字 (DWORD) 数据类型,则子例程中的参数

值将是双字数据类型。

值传递到子例程后,存储在子例程的局部存储器中。变量表的*左列显示各传递参数的局

部存储器地址。调用子例程时,输入参数值将复制到子例程的局部存储器中。子例程执行

完成时,从子例程的局部存储器将输出参数值复制到指定输出参数地址。

数据元素大小和类型用参数的编码表示。参数值到子例程中的局部存储器的分配如下所

述:

● 参数值按照带参数的调用子例程指令指定的顺序分配给局部存储器,起始地址是 L

0.0。

● 一至八个连续位参数值分配给从 Lx.0 到 Lx.7 的单个字节。

● 字节、字和双字值分配给以字节为边界的局部存储器(LBx、LWx 或 LDx)。

在带参数的子例程调用指令中,必须按照一定的顺序排列参数,输入参数在*前面,其次

是输入/输出参数,然后是输出参数。

如果使用 STL 编程,则 CALL 指令的格式是:

CALL 子例程编号, 参数 1, 参数 2, ... , 参数 16

3960990289.jpg

展开全文
优质商家推荐 拨打电话