编程|S7-200子程序调用与返回指令

建立子程序是通过编程软件来完成的 。 可用编程软件“编辑”菜单中的“插入”选项选择子程序”以建立或插入一个新的子程序同时在指令树窗口可以看到新建的子程序图标默认的程序名是SBRN编号N从0开始按递增顺序生成(N取值范围0~63CPU226XM是0-127)也可以在图标上直接更改子程序的程序名把它变为更能描述该子程序功能的名字在指令树窗口双击子程序的图标就可以进入子程序并对它进行编辑 。
子程序调用和返回
CALL子程序调用指令在使能输入有效时主程序把程序控制权交给子程序 。 子程序的调用可以带参数也可以不带参数 。 它在梯形图中以指令盒的形式编程 。 指令格式: CALL SBR_0
CRET子程序条件返回指令在使能输入有效时结束子程序的执行返回主程序中(指向子程序调用的下一条指令) 。 梯形图中以线圈的形式编程指令不带参数 。 在STL中为CRET 。
子程序调用使用说明如下:
①CRET多用于子程序的内部由判断条件决定是否结束子程序调用RET用于子程序的结束 。 用 Micro/Win32编程时编程人员不需要手工输入RET指令而是由软件自动加在每个子程序结尾 。
②如果在子程序的内部又对另一个程序执行调用指令则这种调用称为子程序的嵌套 , 子程序嵌套的深度最多为8级 。
③当一个子程序被调用时系统自动保存当前的逻辑堆栈数据并把栈顶置1堆栈中的其他位置设为0子程序占有控制权 。 子程序执行结束通过返回指令自动恢复原来的逻辑堆栈值调用程序又重新取得控制权
④累加器可在调用程序和被调用子程序之间自由传递所以累加器的值在子程序调用时既不保存也不恢复
带参数的子程序调用
子程序中可以有参变量带参数的子程序调用扩大了子程序的使用范围增加了调用的灵活性 。 子程序的调用过程如果存在数据的传递则在调用指令中应包含相应的参数 。 子程序的参数在子程序的局部变量表中加以定义 。 参数包含的信息有地址、变量名(符号)、变量类型和数据类型 。 子程序最多可以传递16个参数 。
局部变量表中的变量类型区定义的变量如下:
①传入子程序参数IN 。 IN可以是直接寻址数据(如:VB10)、间接寻址数据(如AC1)、常数(如:16#1234)或地址(如:VB100) 。
②传入/传出子程序参数 IN/OUT 。 调用子程序时将指定参数位置的值传到子程序子序返回时从子程序得到的结果被返回到指定参数的地址 。 参数可采用直接寻址和间接寻程址但常数和地址不允许作为输入/输出参数 。
③传出子程序参数OUT 。 将从子程序来的结果返回到指定参数的位置 。 输出参数可以采用直接寻址和间接寻址但不可以是常数或地址 。
④暂时变量TEMP 。 只能在子程序内部暂时存储数据不能用来传递参数 。 在带参数调用子程序指令中参数必须按照一定顺序排列输入参数(IN)在最前面其次是输入/输出参数( IN/OUT)最后是输出参数(OUT) 。
局部变量表使用局部变量存储器在局部变量表中加入一个参数时系统自动给该参数分配局部变量存储空间 。 当给子程序传递值时参数放在子程序的局部变量存储器中 。 局部变量表的最左列是每个被传递的参数的局部变量存储器地址 。 当子程序调用时输入参数值被拷贝到子程序的局部变量存储器 。 当子程序完成时从局部变量存储器区拷贝输出参数值到指定的输出参数地址 。
参数子程序调用格式:CALL.子程序名参数1参数2...参数n 。 在主程序中设置角度值通过调用子程序把参数值传递
到子程序中 , 执行完子程序后把计算的结果再传递到主程序中 。
【编程|S7-200子程序调用与返回指令】
推荐阅读
- 细胞|Sci Adv:重编程干细胞可有效治疗乳腺癌细胞向脑部转移
- 编程|又双叒叕出新动作啦!国科大推出可编程硅基光量子计算芯片
- 细胞|金刚狼战士:美军研发细胞“重新编程”技术,是自愈速度的5倍
- 极客|赋能4-16岁全阶段课程 极客晨星加码中国优质编程教育
- 乐睿童|没有人天生喜欢编程,兴趣也需要培养!
- UG数控编程|机械厂老板硬塞新学徒给老师傅,老师傅怒怼:让我带,我马上辞职
- 东西儿童教育|娃究竟要不要学编程?别急,报班前先看看这篇!
- Python|Python之父退休后太无聊加入微软 Python已成为第二受欢迎编程语言
- 编程|罗永浩点赞WPS超级会员功能:转化PDF是神操作
- 编程|
