您现在所在的是:

三菱Mitsubishi

回帖:5个,阅读:2985 [上一页] [1] [下一页]
1453
yuyinliu168
文章数:139
年度积分:50
历史总积分:1453
注册时间:2009/12/19
发站内信
发表于:2010/6/2 18:49:53
#0楼
各位高人 本人请问当程序调用子程序的时候  子程序中指令是否会对主程序产生影响

本人学习调用子程序仿真时候发现这样的问题 请指教
例子:---x0------call p0
       ----x1------set m0
----------------------fend
p0 -----x2------rst m0
   -----------------sret

当X1动作 SET MO 后 调用P0 X2动作 发现MO没有被 复位   请问调用子程序时候是否像跳转指令那样 处于被跳过指令程序段中的Y,M,S,即使梯形图中涉及的工作条件发生变化 他们的工作状态还保持跳转前的状态


请赐教 谢谢
38028
cvlsam 版主
文章数:12478
年度积分:639
历史总积分:38028
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2010/6/2 20:00:48
#1楼
以下是引用yuyinliu168在2010-6-2 18:49:53的发言:
各位高人 本人请问当程序调用子程序的时候  子程序中指令是否会对主程序产生影响

本人学习调用子程序仿真时候发现这样的问题 请指教
例子:---x0------call p0
        ----x1------set m0
----------------------fend
p0 -----x2------rst m0
    -----------------sret

当X1动作 SET MO 后 调用P0 X2动作 发现MO没有被 复位   请问调用子程序时候是否像跳转指令那样 处于被跳过指令程序段中的Y,M,S,即使梯形图中涉及的工作条件发生变化 他们的工作状态还保持跳转前的状态


请赐教 谢谢


不清楚您如何模拟的,为何我无法模拟出您的问题?

因此,我特地录下屏幕状态,供您参考。而对于子程序来说,其存在限制,具体限制可以参考FX3U编程手册(即使您不使用FX3U,也建议参考FX3U的手册,除了清晰以外,其很多内容都值得参考,子程序限制在FX3U的第195页).

附件:
[本地下载]

Good Luck
1453
yuyinliu168
文章数:139
年度积分:50
历史总积分:1453
注册时间:2009/12/19
发站内信
发表于:2010/6/2 20:38:19
#2楼
您好 谢谢您的回答和录像 我是X1一直动作 按动X2而无法复位M0  您是点动 请问为什么呢  RST不是比SET更优先呢   还有我之前也测试一个程序
---X0---CALL P0
----X1----SET M0
----------FEND
P0  ----X2----RST M0
            -----SET M1
   -----X3-----CALL P1
P1 -----X4-----RST M1
--------------------SRET
-------------------SRET  得出这样的结果  调用P0 P1  X2一直动作 复位M0 和置位M1 然后按X4却能把M1复位   为什么这里X2一直动作X4却能够复位M1  而X1一直动作X2却不能复位M0需要X1断开后 才能复位M0  呢  

请指教 谢谢
1453
yuyinliu168
文章数:139
年度积分:50
历史总积分:1453
注册时间:2009/12/19
发站内信
发表于:2010/6/2 20:39:15
#3楼
您好 谢谢您的回答和录像 我是X1一直动作 按动X2而无法复位M0  您是点动 请问为什么呢  RST不是比SET更优先呢   还有我之前也测试一个程序
---X0---CALL P0
----X1----SET M0
----------FEND
P0  ----X2----RST M0
            -----SET M1
   -----X3-----CALL P1
P1 -----X4-----RST M1
--------------------SRET
-------------------SRET  得出这样的结果  调用P0 P1  X2一直动作 复位M0 和置位M1 然后按X4却能把M1复位   为什么这里X2一直动作X4却能够复位M1  而X1一直动作X2却不能复位M0需要X1断开后 才能复位M0  呢  

请指教 谢谢
750
xitonghua
文章数:47
年度积分:50
历史总积分:750
注册时间:2010/5/6
发站内信
发表于:2010/6/2 21:18:17
#4楼
附件

调试之后,一切正常,可以复位,call指令与cj的不同点在于,cj指令实行时,cj指令后没的程序是不能实行的,而call指令实行时,每个扫描周期所有的主程序都是实行的,sret是返回指令,就好比在主程序中加入了一些程序!
希望我的解释能帮到你!
750
xitonghua
文章数:47
年度积分:50
历史总积分:750
注册时间:2010/5/6
发站内信
发表于:2010/6/2 21:22:46
#5楼
以下是引用yuyinliu168在2010-6-2 20:38:19的发言:
您好 谢谢您的回答和录像 我是X1一直动作 按动X2而无法复位M0  您是点动 请问为什么呢  RST不是比SET更优先呢   还有我之前也测试一个程序
---X0---CALL P0
----X1----SET M0
----------FEND
P0  ----X2----RST M0
             -----SET M1
    -----X3-----CALL P1
P1 -----X4-----RST M1
--------------------SRET
-------------------SRET  得出这样的结果  调用P0 P1  X2一直动作 复位M0 和置位M1 然后按X4却能把M1复位   为什么这里X2一直动作X4却能够复位M1  而X1一直动作X2却不能复位M0需要X1断开后 才能复位M0  呢  

请指教 谢谢


当程序中出现两个m0时,以最后的一个驱动m0为准,而你的最后一个m0是由x1置位的,当第一个调用复位就无效了!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004