您现在的位置是:首页 > PLC技术 > PLC技术
S7-200系列PLC的子程序指令
来源:艾特贸易2017-06-04
简介子程序在结构化程序设计中是一种方便有效的工具。与子程序相关的操作有:建立子程序、子程序的调用和返回等。 1 .建立子程序 可用编程软件 Edit 菜单的 Insert 选项,选择 Subrouti
子程序在结构化程序设计中是一种方便有效的工具。与子程序相关的操作有:建立子程序、子程序的调用和返回等。 1.建立子程序 可用编程软件Edit菜单的Insert选项,选择Subroutine,以建立或插入一个新的子程序,同时在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR_N,编号N从0开始按递增顺序生成,可以在图标上直接更改子程序的程序名。在指令树窗口双击子程序的图标就可对它进行编辑。 2.子程序调用 主程序可以用子程序调用指令来调用一个子程序。子程序执行结束必须返回主程序。 (1)子程序调用和返回指令 1)子程序调用指令( CALL):使能输入有效时,将程序控制权交给子程序SBR_N。调用子程序时可以带参数也可以不带参数。在LAD中用功能框的形式编程,如图5-47a所示,功能框名为子程序名SBR_N。 指令格式:CALL SBR_ N 例:CALL SBR_0 影响允许输出ENO正常工作的出错条件为SM4.3(运行时间),0008(子程序嵌套超界)。 2)子程序条件返回指令(CRET):使能输入有效时,结束子程序的执行,返回主程序中此子程序调用指令的下一条指令。LAD中以线圈的形式编程,如图5-47b所示,指令不带参数。 在STL中指令格式:CRET (条件返回) 例:LD I0.1 CRET (条件返回) 图5-47 子程序调用和返回指令 a)子程序调用b)子程序条件返回 (2)注意事项 1)在主程序中可以嵌套调用子程序(在子程序中还可调用子程序),最多嵌套8层。在中断服务程序中,不能嵌套调用子程序。 2)当有一个子程序被调用时,系统会保存当前的逻辑堆栈,置栈顶值为1,堆栈的其他值为0,把控制交给被调用的子程序。当子程序完成之后,恢复逻辑堆栈,把控制权交还给调用程序。 3)因为累加器可在主程序和子程序之间传递,所以在子程序调用时,累加器的值既不保存也不恢复。 3.带参数调用子程序 子程序的调用过程如果存在数据的传递,则调用指令中应包含相应的参数。 (1)子程序参数子程序最多可以传递16个参数。参数在子程序的局部变量表中加以定义。参数包含下列信息:变量名、变量类型和数据类型。 1)变量类型。变量类型是按变量对应数据的传递方向来划分的,可以是传人子程序(IN)类型、传人和传出子程序(IN/OUT)类型、传出子程序(OUT)类型、暂时(TEMP)类型4种类型。4种变量类型的参数在变量表中的位置必须按以下先后顺序。 IN类型:传人子程序参数。所接的参数可以是:直接寻址数据(如VB100)、间接寻址数据(如* AC1)、立即数(如16 #2344)、数据的地址值(如&VB106)。 IN/OUT类型:传人/传出子程序参数。调用时将指定参数位置的值传到子程序,返回时从子程序得到的结果被返回到同一地址。参数可采用直接和间接寻址,但立即数和地址编号不能作为参数。 OUT类型:传出子程序参数。将从子程序返回的结果送到指定的参数位置。输出参数可以采用直接和间接寻址,但不能是立即数或地址编号。 TEMP类型:暂时变量类型。在子程序内部暂时存储,不能用来与主程序传递参数的数据。 2)数据类型。局部变量表中还要对数据类型进行声明。数据类型可以是:“能流”、布尔型、字节型、字型双字型、整数型、双整型和实型。 “能流”:仅允许对位输入操作,是位逻辑运算的结果。在局部变量表中布尔能流输入处于所有类型的最前面。 布尔型:布尔类型用于单独的位输入和输出。 字节、字和双字型:这3种类型分别声明一个1B、2B和4B的无符号输入或输出参数。 整数、双整数型:这2种类型分别声明一个2B或4B的有符号输入或输出参数。 实型:该类型声明一个IEEE标准的32位浮点参数。 (2)参数子程序调用的规则 常数参数必须声明数据类型。例如,把值为223344的元符号双字作为参数传递时,必须用DW#223344来指明。如果缺少常数参数的这一描述,常数可能会被当作别的类型使用。 输入或输出参数没有自动数据类型转换功能。例如,局部变量表中声明一个参数为实型,而在调用时使用一个双字,则子程序中的值就是双字。 参数在调用时必须按照一定的顺序排列,先是输人参数,然后是输入/输出参数,最后是输出参数。 (3)变量表使用 在局部变量表中要加入一个参数,右击要加入的变量类型区可得到一个选择菜单,选择“插入”,然后选择“下一行”即可。局部变量表使用局部变量存储器。当在局部变量表中要加入一个参数时,系统自动给各参数分配局部变量存储空间。 使能流输出ENO为0的出错条件:SM4.3(运行时间),0008(子程序嵌套超界)。 STL程序中,参数子程序调用指令格式:CALL N,Var1,Var2,...,Varm(其中N为子程序号,Var1~Varm为参数) 例:CALL SBR0, I0.2,VB20, VD30 4.子程序和子程序返回指令程序举例 含调用指令的主程序如图5-48所示。
图5-48 主程序段 被调用的SBR_0子程序如图5-49所示。
图5-49 子程序段
点击排行
