200Smart 子程序 跳转指令

我在子程序中使用跳转指令JMP,配合LBL和有条件END,编译后无错误,下载SR20时报编译错误,将子程序中的相关指令删除后,正常下载。

查阅手册描述如图;

官网描述
链接
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/programming/Subroutine.html

问题补充:
使用的软件版本是V2.4,
我发的两张图,系统手册中说明子程序可以使用JMP指令,官网说子程序不能使用跳转,而我实际使用时,子程序中使用跳转指令编译无错误,下载就报错,这是为什么

图片说明:

200Smart 子程序 跳转指令    200Smart 子程序 跳转指令   

最佳答案

1、两张图说的意思是:
跳转指令和其跳转到的标号都必须在同一个块内,不能跨块。这里的块指的是主程序或子程序,或者中断程序。
在主程序中可以使用跳转指令,以及标号指令,主程序的跳转指令只能跳转到主程序自己内部的标号处,不能跳转一本体块外面,也不能跳转到被它调用的子程序内部。
在子程序、中断程序中也可以使用跳转指令,以及标号指令,子程序的跳转指令只能跳转到子程序本体内部的标号处,不能跳转另外一个子程序序内,也不能跳转到主程序。
2、关于你说的问题,我做了一下在线测试。
模拟方法是
第一种情况:
   按第1条,在同一块内跳转,跳转的目标标号也存在时,编译、下载、运行都是没有问题的。
第二种情况:
   按第1条,在同一块内跳转,故意将跳转的目标标号删除,编译即没有警告也没有错误,但当调出下载界面后,没点击”下载“按钮也不报错,点击"下载"后会弹出提示,如附图所示,不让下载。
第三种情况:
    JMP 指令在 子程序中,故意将要跳转的目标标号放在了主程序中,同样编译即没有警告也没有错误,但当调出下载界面后,没点击”下载“按钮也不报错,点击"下载"后会弹出提示,如附图所示,不让下载。
对于第二三种情况希望,西门子改进其编译系统。
3、基于上面的测试,看看你是属于哪一种情况,估计不是第二种就是第三种。即要么跳转指令与标号不在同一个块中,要么在同一块中跳转指令指定的标号不存在。
测试的程序我就不附了。

图片说明:

200Smart 子程序 跳转指令  

提问者对于答案的评价:
感谢您,同时也感谢 小苗子。
经过反复测试和排查,发现问题在END指令上。

我最初的问题描述如下:
****我在子程序中使用跳转指令JMP,配合LBL和有条件END,编译后无错误,下载SR20时报编译错误,将子程序中的相关指令删除后,正常下载。***

子程序中不能使用END指令,问题是Micro Win在编译时没有报错!!!

最佳答案作者回复:
谢谢,分享,共同提高

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc346653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午11:03
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论