引言:

昨天测试一个PDF文档中的STL程序,照着录入后,竟然在程序保存的时候就出错了,不能保存!研究了一下发现是JL指令的使用造成的,所以今天写篇文章来聊一下,STEP7项目STL编程中的JL 跳转指令。

正文:

在STEP7软件STL语言编程中,跳转指令是属于逻辑控制指令的,除了LOOP循环指令外,其他的逻辑控制指令都是跳转指令。跳转指令基本可以分为4类,而这个JL指令是比较特殊的一个,所以今天来讲一下。

先来看一下JL指令引起的错误吧:

FC1中因为JL指令保存时候提示有错误

首先说一句,这个程序是不严谨的,这里只用来说明报错问题,大家不要纠结!图中有JC指令和JL指令,为何我说不能保存的错误是JL指令造成的呢?

先来说一下这个JC指令,这个指令是根据上一条指令产生的逻辑运算结果(RLO)来判断是否跳转的,整数比较指令(>=I)条件成立的时候就会使状态字的RLO=1进而去激活JC跳转指令。

再来说一下JL指令,JL指令就是跳转到标号指令,但是JC指令也是跳转到标号指令(循环跳转指令的标号标签大家可以视为是一样的,其实我个人更习惯叫标签,但是今天这个编程手册上写的标号)。

那么JC和JL有何不同呢?最大的不同就是JL跳转指令其实是有一个跳转列表的,或者说叫跳转目标列表!这个目标列表最大允许包含256个条目,意思是可以跳转到0-255个标号(标签)处。

之前图片上的错误是“跳转分配器:可能丢失的跳转目标之前存在非法语句。”我在STEP7的帮助文件中搜索“跳转分配器”没有搜索到结果,但是我在一些相关的资料上介绍JL指令的时候也有提到“跳转分配器”这个词,而且我把JL指令比如修改成JU无条件跳转指令就没有再报错了,我就不上传图片了。--基于这2点,我才说程序不能保存是因为JL指令造成的,我后续的说明中大家会了解,这里确实是JL指令用法错误!大家可以把这个当作一个经验,以后如果遇到同样的“跳转分配器”错误造成程序不能保存,应该首先去查看一下JL指令是不是不该用,或者说用错了。

错误的原因分析完了,还是来看一下这个JL指令的用法:

JL指令的应用举例1

这是我在OB1中写的一段程序,上部分程序最终是为了控制MB0的,下部分就是JL跳转指令和JU配合使用时候,相当于JU指令处产生了一个清单,MB0的值控制访问这个清单中的哪个项目。

下边来看一下该程序的运行监控图:

JL指令的应用举例1的监控图1

这个图片中可以看出MW20=111时,MB0=0,程序跳转到boy0处,把20传递给了MD4。其他的数值也都好理解,我就不再复述了,来说一下MW20=0的时候,也就是程序刚刚下载到CPU中后,为何MB0=3 ? 原因是MW20=0的时候,程序上半部分没有一处跳转都顺序执行下来,最后是把3装入了MB0中,故MB0=3就使得JU程序跳转到boy3处,MD4=50。

JL指令的应用举例1的监控图2

这个图片MW20=333和444继而跳转到对应的标号处。程序看明白后,就再来强调一些知识点,帮助文件强调“跳转目标指令列表必须包含JU指令”,这里再次强调了列表,所以JL指令可以换一种说法,就是JL指令是跳转到与之配合的JU指令列表的一种跳转指令,应该说这样描述才更完整!

同时可以看出JL指令是不受任何状态字或者位的控制的。JL跳转指令和LOOP指令一样,都只能在一个块里边跳转,且跳转的标号(标签)比如boy3,西门子规定只能是4个字符,且首字符必须是字母,还区分大小写!--这是一些常规的要求。

用法和一些规定说完后,为了加深大家的印象,再来看一个程序:

JL指令的应用举例2

这个程序是我把之前程序的上半部分删除,MB0也不用了,直接用L 2把2装入了ACCU1中,可以看到MD4=40, 就表示程序执行了boy2这个标签行的程序。我用断点调试的方法,监测程序也是直接从L 2这行跳转到JU boy2这行程序的。所以说,MB0也不是必须,但是如果没有MB0,那么此时ACCU1-L中的值,就是将要跳转到的清单的条目号。不过,为了调试时候更直观,这里还是建议使用一个变量来存储ACCU1-L中的值。

至此,程序不能保存报错的原因解释了,JL配合JU使用的方法和一些规定也解释了,相信本文能让大家对JL指令有一些更深入的认识,能够帮到小伙伴们是我的荣幸,感谢阅读!

如果觉得本文对您有用,请关注+收藏。如果有问题,请关注+留言,我会第一时间回复,谢谢!

西门子stl语言指令_STEP7项目的JL跳转指令你会用吗?相关推荐

  1. 16.控制转移指令(条件跳转指令、比较条件跳转指令、多条件分支跳转指令、无条件跳转指令)

    目录 1.控制转移指令 1.1 条件跳转指令 1.2 比较条件跳转指令 1.3 多条件分支跳转指令 1.4 无条件跳转指令 1.控制转移指令 控制转移指令分为如下图所示的5种,其中比较指令在算术指令中 ...

  2. STM32--汇编语言:子程呼叫与无条件跳转指令B、BL、BX和BLX

    1.B:无条件转移 B指令是最简单的跳转指令.一旦遇到一个B指令,ARM处理器将立即跳转到给定的目标地址,从那里继续执行.注意,存储在跳转指令中的实际值是相对当前PC值的一个偏移量,而不是绝对地址,它 ...

  3. ARMv8体系结构基础05:比较和跳转指令

    目录 1 比较与测试指令详解 1.1 CMP指令 1.1.1 概述 1.1.2 指令编码分析 1.2 CMN指令 1.2.1 概述 1.2.2 指令编码分析 1.3 TST指令 1.3.1 概述 1. ...

  4. ARM汇编之跳转指令

    ARM汇编语言之跳转指令 前言 ARM架构在当今主流的芯片中无论是MCU还是SOC都占有很大的市场,因此基于ARM架构的汇编语言对于嵌入式软件开发人员而言,其实也是一项必须掌握的基本功. " ...

  5. 19|RISC-V指令精讲(四):跳转指令实现与调试

    19|RISC-V指令精讲(四):跳转指令实现与调试 你好,我是LMOS. 前面我们学习了无条件跳转指令,但是在一些代码实现里,我们必须根据条件的判断状态进行跳转.比如高级语言中的if-else 语句 ...

  6. jsp基础语法【05】_跳转指令

    跳转的作用: 使用跳转指令可以将一个用户的请求,从一个页面传递到另外一个页面. 例如:用户登录QQ空间,如果用户名和密码正确的话就会跳转到空间首页,否则就会跳转到失败页. 跳转指令的语法: 不传递参数 ...

  7. 汇编跳转指令B、BL、BX、BLX 和 BXJ的区别

    已针对原链接错误翻译并更正                                                    跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程 ...

  8. ARM 指令集跳转指令

    一.跳转指令 跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转: Ⅰ.使用专门的跳转指令. Ⅱ.直接向程序计数器PC 写入跳转地址值. 通过向程序计数器PC 写入跳转地 ...

  9. arm64汇编b带条件跳转指令和bl跳转带返回ret指令

    文章目录 ret返回指令 B 跳转指令 BL 带返回的跳转指令 B指令可以接上后缀,用来和cmp比较后待条件的跳转 ret返回指令 cpu遇到ret之后,会把lr赋值给pc,这样cpu执行了pc里的地 ...

最新文章

  1. Consumer is not subscribed to any topics
  2. POJ 2566 Bound Found
  3. 编辑器的合并用不了_Excel多工作簿合并为一个工作簿,10秒搞定,这才是最高效的方式...
  4. OpenCASCADE绘制测试线束:拓扑命令之基本拓扑
  5. 图灵原版计算机科学系列,图灵原版计算科学系列
  6. 每次创建maven都要重新设置set,如何将本地maven设置为默认的maven
  7. 长路漫漫,唯剑作伴--Automatic Reference Counting
  8. LeetCode刷题(18)
  9. Java中的会话管理– HttpServlet,Cookie,URL重写
  10. Erlang进程堆垃圾回收机制
  11. securecrt批量登录linux,SecureCRT批量配置使用会话key
  12. 如何重置HDX卡的固件(firmware)
  13. 托马斯微积分和微积分学教程_为什么微积分很重要
  14. CRUD了3 年从8K涨到30K,谁知道这4个月我到底经历了什么?
  15. CreatePipe()函数
  16. 软考高级 真题 2010年下半年 信息系统项目管理师 综合知识
  17. C++描述 1113. 红与黑
  18. 运行app时找不到so的原因
  19. 飞塔防火墙密码忘记重置方法
  20. IDEA配置优化,idea配置大全

热门文章

  1. 使用Go开发gRPC
  2. centos7 redis5.0以前版本 集群部署示例 - 第一篇
  3. leetcode 446. Arithmetic Slices II - Subsequence | 446. 等差数列划分 II - 子序列(动态规划)
  4. C语言 2048小游戏
  5. HTTP系列之:HTTP缓存
  6. java安全编码指南之:Thread API调用规则
  7. cxf和spring结合出现问题
  8. golang学习笔记01
  9. 03.elasticsearch_index操作
  10. 01.elasticsearch请求使用的基本语法