设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子PLC语句表编程:跳转指令
返回列表
发新帖
[西门子]
西门子PLC语句表编程:跳转指令
[复制链接]
76731
|
0
|
2024-4-28 08:26:01
|
显示全部楼层
|
阅读模式
正常情况下,程序的执行顺序是自上而下,逐条扫描执行的。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位和第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的状态与"算术运算"的结果的关系如下:
3、 分支跳转指令JL
在语句表的指令集中,还有一条特殊的跳转指令,它能够实现向多路分支跳转的功能,它就是分支跳转指令JL,其执行流程如下图所示。
JL指令根据累加器1(ACCU1)的低字节中的数值大小来决定程序"沿着"哪一条分支执行。由于一个字节的数值范围为0~255,因此,JL指令最多可管理多达256条分支的程序。
JL指令一般要与无条件跳转指令JU配合使用,其指令的格式如下:
文章来源:综合网络,侵权联删,谢谢。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
PLC发烧友
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』