首页 理论教育 程序流程指令与子程序控制

程序流程指令与子程序控制

时间:2023-06-15 理论教育 版权反馈
【摘要】:程序流程指令控制梯形图程序执行的顺序。程序流程指令的功能见表4-21。若跳转指令为假,则程序忽略JMP指令,继续执行下一条指令。SBR指令用在子程序的开始,RET指令用于结束子程序。在一个程序文件中可嵌套多达8个子程序。在程序调试和系统故障检测时用这一指令可获得或查明具体原因条件。图4-34 SUS指令应用举例5.主控程序成对使用MCR指令可创建一程序区域。4)在MCR区域启动计时器或计数器时,当MCR指令起作用时,这些指令会被复位。

程序流程指令与子程序控制

程序流程指令控制梯形图程序执行的顺序。合理的使用这些指令,可提高程序的执行效率和可读性,也有利于程序的故障检测。程序流程指令的功能见表4-21。

表4-21 程序流程指令的功能

978-7-111-47412-8-Chapter04-100.jpg

1.程序跳转(JMP、LBL)

JMP指令是输出指令,LBL指令是输入指令,这两条指令要成对使用,JMP指令使处理器在执行梯形图程序时跳过一些梯级,程序跳转到指定的标号处执行,LBL指令用于指定标号。若跳转指令为真,则处理器从JMP梯级跳到LBL梯级继续执行程序,而且既可以向前跳,也可以向后跳。若跳转指令为假,则程序忽略JMP指令,继续执行下一条指令。向后跳转到一个标号省略了某段程序,故而缩短了扫描时间;向前跳转可使处理器反复执行一段程序,直到其逻辑完成为止。JMP和LBL指令标号的设置范围为0~999。

图4-30所示梯形图中,当I:0/7使能,程序便跳过第2行,直接执行第3行。当I:0/7断开,程序不跳转,继续执行第2行。当I:0/7使能时,第2条指令不能被扫描,因此输出点O:0/1保持OFF状态。

2.跳转到子程序(JSR、SBR、RET)

在梯形图程序中,经常把一些具有某种功能的程序块做成子程序,这样可以使程序更加清晰,并且节省存储空间。JSR指令是输出指令,参数“SBR文件号”是指要跳转的子程序号。当程序跳转到子程序后,对子程序执行一次扫描,然后返回到断点处,继续执行跳转指令的下一条梯级。SBR指令用在子程序的开始,RET指令用于结束子程序。

JSR指令应用如图4-31所示。当I:0.0/7有效时,程序在该处设置断点,并跳转到3号子程序文件,顺序执行3号子程序中的程序代码。当扫描到RET指令时,表示该子程序结束,跳出子程序并返回原断点继续执行。

978-7-111-47412-8-Chapter04-101.jpg

图4-30 跳转指令应用举例

978-7-111-47412-8-Chapter04-102.jpg

图4-31 JSR指令应用举例

3号子程序应用如图4-32所示。

978-7-111-47412-8-Chapter04-103.jpg

图4-32 子程序应用举例

新建子程序的方法为:

1)打开RSLogix 500编程界面。

2)鼠标右键单击左边目录中的“Program Files”。

3)在弹出的菜单中单击“New”。

4)弹出“Create Program File”对话框。填入欲创建的子程序号(3~255),单击“OK”即可。

在使用JSR指令时,应注意:

1)每个子程序必须有唯一的文件号。

2)除了子程序文件的第一个SBR指令外,主程序不能跳转到子程序中任何其他的地方。(www.xing528.com)

3)可以嵌套多达8个子程序文件。

在一个程序文件中可嵌套多达8个子程序。也就是说,只要子程序不超过7级,便可让处理器从主程序跳向一个子程序,然后再从一个子程序跳转到另一个子程序。处理器返回路径与此相反,在RET指令处,处理器自动返回到先前JSR指令后的下一条指令,并且在返回主程序之前一直遵循此执行过程。

3.暂停(TND)

当TND指令梯级条件为真时,处理器停止扫描程序的其余部分并更新I/O,然后从主程序的第一条指令处重新开始扫描程序,如图4-33所示。

在调试程序或查找程序故障时,可插入TND指令,它只允许程序运行到它所在的程序为止。在程序中逐步移动此指令,可以调试一段新的程序。

978-7-111-47412-8-Chapter04-104.jpg

图4-33 TND指令应用举例

4.中断(SUS)

当SUS指令执行时,它使处理器进入挂起模式并且在状态文件的字S:7中存储挂起ID,所有输出被停止使能。在程序调试和系统故障检测时用这一指令可获得或查明具体原因条件。

当编程该指令时输入挂起ID,编号范围是-32768~32767。

例如,图4-34a所示梯形图,当I:0/3为ON时,执行SUS指令,它使处理器挂起,程序中断执行。打开状态文件(见图4-34b),可看到S:7的值为234,中断文件号为2(主文件)。

978-7-111-47412-8-Chapter04-105.jpg

图4-34 SUS指令应用举例

5.主控程序(MCR)

成对使用MCR指令可创建一程序区域。它可关断该区域内所有非保持型输出。MCR指令在其前面的梯级条件为假时起作用。当开始的MCR梯级条件为假时,无论每个梯级各自的输入条件怎样,MCR都复位所有非保持型输出指令。当开始的MCR梯级条件为真时,每个梯级根据各自的输入条件执行MCR区域(好像MCR不存在一样)。

例如,当I:0/3使能时,好像MCR指令不存在,程序继续执行下一步。当I:0/3断开时,无论I:0/2是否使能,O:0/1都无效。MCR指令应用举例如图4-35所示。

当用MCR指令编程时,应注意:

1)一定要成对使用MCR指令,必须用无条件MCR指令结束程序区。

2)不能在一个MCR区内嵌套另一个MCR区。

3)不要从其他程序跳转到MCR区内。如果MCR区条件为假,跳转到此区会使此区被激活。

4)在MCR区域启动计时器或计数器时,当MCR指令起作用时,这些指令会被复位。

978-7-111-47412-8-Chapter04-106.jpg

图4-35 MCR指令应用举例

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈