打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
西门子PLC语句表编程:跳转指令

正常情况下,程序的执行顺序是自上而下,逐条扫描执行的。STL指令集中有一类跳转指令,可以中断程序的这种线性执行流,跳转到指定的位置继续执行。

一、 跳转标签

跳转的'目标'地址由'标签'来指定,该标签称之为'跳转标签'。跳转标签最多4个字符,且第一个字符必须为字母。跳转标签后必须带有冒号':' ,且在行中必须位于程序语句之前。

二、 跳转指令

跳转指令根据'跳转'的机理,首先可分为'无条件跳转'和'条件跳转',除此之外,还有一个特殊的跳转指令,可实现分支跳转。

1、 无条件跳转指令JU

程序在执行时,遇到JU指令,无条件的跳转到其'标签'所指示的代码行继续执行。跳转指令和跳转目标必须在同一个块内。

需要注意的是:理论上,JU指令允许向前跳,也允许向后跳。向后跳属于常规用法,一般没什么问题。但向前跳,容易形成死循环,因此,一般不建议使用JU命令向前跳。

2、 有条件跳转指令

顾名思义,与无条件跳转不同,有条件跳转指令中断原程序逻辑流,发生跳转是需要条件的,根据跳转条件的不同,它们又有不同的分类。

(1) 由RLO的状态决定是否跳转

对于'JC'指令,当逻辑运算结果(RLO)为'1'时,'跳转'生效,中断当前的线性扫描,跳转到'跳转标签'所标识的行继续执行。同样,可以选择向前跳,也可以向后跳。

'JCN'指令与'JC'指令相反,当'RLO'为'1'的时候,'跳转'生效。

另外:当条件不满足,不执行跳转的时候,该指令会将RLO置'1',然后继续执行下面的指令。

(2) 带BR位,由RLO状态决定是否跳转

对于'JCB'指令,其与'JC'指令一样,当RLO为1时,'跳转'生效,中断当前的线性扫描,跳转到'跳转标签'所标识的指令行继续执行。而与'JC'指令不同的是,'JCB'指令会'额外'的做一项工作:将RLO的状态复制到BR(二进制结果位)中。

同样,'JNB'指令,其触发跳转的条件为RLO=0,且也会将RLO状态复制到BR中。

(3) 由'状态寄存器'的'BR'位决定跳转与否

(4) 由'状态寄存器'的'OV'、'OS'位决定跳转与否

状态字的第4位和第5位分别为'溢出位OV'和'溢出状态保持位OS'。当算术运算或浮点数比较指令执行时出现错误(如溢出、非法操作和不规范的格式等)时,OV位会被置1,同时OS位也被置1。而如果后面同类指令执行结果正确,则OV位会被清0,但OS位仍然保持为1。只有JOS指令、块调用指令和块结束指令才能复位OS位。

一般用于检查算术运算指令结果是否有溢出,若有溢出,可用JO、JOS指令进行跳转,以做相应的错误处理。

(5) 由条件码1(CC1)和条件码0(CC0)决定是否跳转

状态字的第7位(CC1)和第6位(CC0)分别为条件码1和条件码0。这两位综合起来用于表示在累加器1(ACCU1)中产生的算术运算或逻辑运算的结果与'0'的大小关系、比较指令的执行结果或移位指令的移出位的结果。

CC1和CC0的状态与'算术运算'的结果的关系如下:

在'跳转指令'中,有一类指令根据算术运算的结果来决定逻辑流是否跳转,本质上,是在执行完算术运算后,根据CC1和CC0的不同状态,来决定相应的跳转指令是否具备跳转条件,如下表所示:

3、 分支跳转指令JL

在语句表的指令集中,还有一条特殊的跳转指令,它能够实现向多路分支跳转的功能,它就是分支跳转指令JL,其执行流程如下图所示。

JL指令根据累加器1(ACCU1)的低字节中的数值大小来决定程序'沿着'哪一条分支执行。由于一个字节的数值范围为0~255,因此,JL指令最多可管理多达256条分支的程序。

JL指令一般要与无条件跳转指令JU配合使用,其指令的格式如下:

详见《PLC语句表编程:“跳转指令”特辑》

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
S7-300/400的状态指令S7-300/400的状态指令
西门子PLC学习笔记十三-(算术运算指令与控制指令)
S7-1200 1500 指令说明及示例---( JMPN ):若 RLO = 0则跳转
西门子PLC控制器技术之八:梯形图位指令
怎样理解状态字(status word)?
SIEMENS S7-300 PLC
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服