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

引言:

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

正文:

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

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

0252c03761227d77b00f3b8a10af3b5e.png

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指令的用法:

4fac0fdbb951b80e6f5d070637def95f.png

JL指令的应用举例1

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

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

1ebc2a3af12605e31489b6f54d31a35d.png

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。

f0e8f6b73b74af92b8587152eacac326.png

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

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

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

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

f13e023e42878c76906dd2a6e9f7e5a5.png

JL指令的应用举例2

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

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

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部