9.14 SIMATIC 程序控制指令
有条件结束 (END)
有条件结束指令 (END) 可以根据前面的逻辑关系 终止用户主
程序
操作数 无
数据类型 无
注意
可以用在主程序中使用有条件结束语句 但是不能在子程序或中断程序中使用
注意
Micro/WIN 32 自动在主程序结束加上一个无条件结束
暂停 (STOP)
暂停指令 (STOP) 能够引起 CPU 方式发生变化 从 RUN到
STOP 从而可以立即终止程序的执行
操作数 无
如果 STOP 指令在中断程序中执行 那么该中断立即终止 并
且忽略所有挂起的中断 继续扫描程序的剩余部分 在本次扫
描的最后 完成 CPU 从 RUN 到 STOP 的转变
看门狗复位 (WDR)
看门狗复位 (Watchdog Reset) 指令 (WDR) 允许 CPU的看门狗
定时器重新被触发 在没有看门狗错误的情况下 这就可以增
加一次扫描所允许的时间
操作数 无
有关用 WDR 指令复位看门狗定时器的几点考虑
使用 WDR 指令时要小心 因为如果你用循环指令去阻止扫描完成或过度的延迟扫描完成时间 那
么在终止本次扫描之前 下列操作过程将被禁止
l 通讯 (自由端口方式除外)
l I/O 更新 (立即 I/O 除外)
l 强制更新
l SM 位更新 (SM0 SM5 SM29 不能被更新)
l 运行时间诊断
l 由于扫描时间超过 25 秒 10 ms 和 100 ms 定时器将不会正确累计时间
l 在中断程序中的 STOP 指令
注意
如果希望扫描超过 300ms 或者希望中断事件而该中断事件能使扫描时间大于 300ms 那么样最好
WDR 指令来重新触发看门狗定时器
如果将 S7-200 CPU方式开关切到 STOP 位置 则在 1.4 秒里 CPU 转到STOP方式
Stop, End, and WDR Example
SM5.0
.
.
.
M5.6
.
.
.
当发现 I/O 错误时 强迫 CPU
转到 STOP方式
当 M5.6 为 on 时 重新触发看门
狗定时器 WDR 允许增加本次
扫描时间
当 I0.0 是 on时 结束主程序
Network 1
LD SM5.0
STOP
.
.
.
Network 15
LD M5.6
WDR
.
.
.
Network 78
LD I0.0
END
Network 1
Network 15
Network 78
STOP
WDR
END
LAD STL
FBD
.
.
.
I0.0
Network 1
Network 15
Network 78
STOP
WDR
SM5.0
M5.6
ENDI0.0
当发现 I/O 错误时 强迫 CPU
转到STOP方式
当 M5.6 为 on 时 重新触发看门
狗定时器 WDR 允许增加本次
扫描时间
当 I0.0是 on时 结束主程序
图 9-
51 STOP END 和 WDR 指令在 LAD FBD 和 STL 中应用举例
跳转及标号指令
跳转指令 (JMP) 可使程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
转到同一程序中的具体标号 (n)
处 当这种跳转执行时 栈顶的值总是逻辑 1
标号指令 (LBL) 标记跳转目的地的位置 (n)
操作数 n: 常数 0 到 255
数据类型 WORD
跳转和标号指令必须用在主程序 子程序或中断程序中 不能
从主程序跳到子程序或中断程序 同样不能从子程序或中断程
序跳出
跳转及标号指令举例
LAD
SM0.2
.
.
.
/ 如果保存的数据没有丢失 则跳转到LBL4
Network
LDN SM0.2
JMP 4
.
.
.
Network
LBL 4
可以在主程序 子程序或中断程序中使
用跳转和标号指令 JMP 和相应的标
号 LBL 必须总是在同一段程序中 要
麽是主程序或是子程序 要麽是中断程
序
Network 14
Network 33
LBL
JMP
4
STL
4
FBD
JMPSM0.2
4
LBL
4
Network 14
Network 33
.
.
.
.
如果保存的数据没有丢失 则跳转到
LBL4
可以在主程序 子程序或中断程序中使
用跳转和标号指令 JMP 和相应的标
号 LBL 必须总是在同一段程序中 要
麽是主程序或是子程序 要麽是中断程
序
图 9-
52 JMP 和 LBL 指令在 LAD STL 和 FBD 中应用举例
么 么
么 么
LBL
JMP
子程序 子程序返回指令
子程序调用指令 (CALL) 把程序控制权交给子程序 (n) 可以带
参数或不带参数调用子程序 通过选择 Edit>Insert> Subroutine
加入一个子程序
有条件子程序返回指令 (CRET) 根据该指令前面的逻辑关系 决
定是否终止子程序 ( )
操作数 无
数据类型 无
执行完子程序以后 控制程序回到子程序调用指令的下一条指
令
图 9–55 是调用子程序并从子程序返回的举例
使 ENO = 0 的出错条件是 SM4.3 (运行时间) 0008 (最多子
程序嵌套超界)
注意
Micro/WIN32 为每个子程序自动加入返回指令
子程序的嵌套深度最多是 8 层 尽管子程序不禁止递归调用 (自己调用自己) 但使用时要慎重
当有一个子程序被调用时 系统会保存当前的逻辑堆栈 置栈顶值为 1 堆栈的其他值为零 把控
制交给被调用的子程序 当子程序完成之后 恢复逻辑堆栈 把控制权交还给调用程序
因为累加器可在主程序和子程序之间自由传递 所以在子程序调用时 累加器的值既不保存也不恢
复
带参数调用子程序
子程序可能包含要传递的参数 参数在子程序的局部变量表中定义 (见图 9-53) 参数必须有一个符
号名 (最多 8 个字符) 变量类型和数据类型 子程序最多可以传递 16 个参数
局部变量表中的变量类型区定义变量是传到子程序 (IN) 传入和传出子程序 (IN_OUT) 或者传出子
程序 (OUT) 参数类型的特征如下所述
l IN 参数传入子程序 如果参数是直接寻址 (如 VB10) 指定位置的值被传递到子程序
如果参数是间接寻址 (如 *AC1) 指针指定位置的值被传入子程序 如果参数是常数 (如
16#1234) 或者一个地址 (VB100) 常数或地址的值被传入子程序
l IN-OUT: 指定参数位置的值被传到子程序 从子程序的结果值被返回到同样地址 常数
(如 16#1234) 和地址 (如 &VB100) 不允许作为输入/输出参数
l OUT: 从子程序来的结果值被返回到指定参数位置 常数 (如 16#1234) 和地址 (如
&VB100) 不允许作为输出参数
l TEMP:
任何局部存储器都不能用来传递参数 只能在子程序内部暂时存贮数据
要加入一个参数 把光标放到要加入的变量类型区 (IN, IN-OUT
本文档为【程序控制指令】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。