技成培训网论坛

 找回密码
 立即注册
打印 上一主题 下一主题
开启左侧

[已答复] 请教关于POS0_CTRL和POS0_GOTO指令问题

[复制链接]
跳转到指定楼层
楼主
发表于 2008-10-10 17:56:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式   来自:121.229.122.44

您正在浏览的页面需要登录,为了提高您的阅读体验,请在右上角登录您的账号!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

潘工:

      晚上好!

     向您请教昨晚所说的EM253中的两个指令的问题。

部分程序如下:

EM253控制子程序:

Network1:

LD     SM0.0
=      L60.0      //QS4: 此处的L60.0和下面几处出现的L63.7是什么作用?(我是参考了西门子官网上的《S7-200系统手册-2007.09版本》上的开环运动控制里面“位控模块的示例程序”)
LD     M5.0                        //QS1: 当在串口接收完成中断中复位M5.0,然后再调用此子程序时,接在EM253上的电机不会停止运转。
=      L63.7
LD     L60.0
CALL   POS0_CTRL:SBR6, L63.7, M2.0, VB900, VD902, VD906, V910.0

Network2:

LD     Start_M4:M1.0                   //M1.0是在串口接收完成中断中置位的,然后再调用此子程序,启动电机转动。
S      M4_Running1.0, 1          //Running信号
S      Start_Next_M4:M1.1, 1

Network3:

LD     M4_Running1.0
=      L60.0
LD     Start_Next_M4:M1.1
EU                                 //QS3: 如果使用上升沿检测M1.1, 一旦在串口接收完成中断中置位M1.0,然后调用此子程序,Q1.1将马上置位,电机不动。
=      L63.7
LD     L60.0                       //QS2: 当在串口接收完成中断中复位M0.5,然后再调用此子程序时,接在EM253上的电机也不会停止运转。
CALL   POS0_GOTO:SBR8, L63.7, VD600, VD604, 1, M4_Abort:M0.5, M4_Done1.1, VB920, VD922, VD926

Network4:

LD     M4_Running1.0
A      M4_Done1.1                //到达位置DONE信号
R      M4_Running1.0, 1          //停止脉冲输出
R      Start_M4:M1.0, 1

程序及问题说明:

                 1、此子程序再主程序中将在每个扫描周期中调用。

                 2、当发生一个特定的串口接收完成中断后,中断将调用此子程序,启动电机转动。

                3、问题已在程序注释中说明。分别时QS1~QS4.

        等待潘工的指教,谢谢! ^_^



2
发表于 2008-10-11 16:59:34 | 只看该作者   来自:121.15.55.18

LD     SM0.0
=      L60.0      //QS4:
此处的L60.0和下面几处出现的L63.7是什么作用?

:这是西门子的规定,是为了方便将语句表转换成梯型图, 你也可以直接

LD   SM0.0

CALL  POS0_CTRL:SBR6, M5.0, M2.0, VB900, VD902, VD906, V910.0

只是这样就不能转换成语句表了,不过程序执行是完全可以的。

QS1-QS3的关键还是对于POS0_CTRL是否每个扫描周期被调用,而且每个扫描周期只被调用一次。 你的问题是在主程序中肯定被调用了,而且是调用了一次, 但是接下来在中断中又被调用了,结果就导致了在一个扫描周期当中POS0_CTRL被调用了两次以上!     所以你应该将中断子程序内对POS0_CTRL的删除掉,而仅仅是在中断内触发一个停止位,然后再在主程序内调用。

一定要注意的是:一个完整的扫描周期,包括主程序,子程序,还有在这个过程中系统自动执行的中断子程序。

祝顺利!

 

3
 楼主| 发表于 2008-10-12 20:59:44 | 只看该作者   来自:121.229.122.44

潘工:

    晚上好!

    谢谢您的指点!听您这样一说,我终于可以知道这个问题的原因了。我等下就修改程序,明天测试!

   之前我是通过在I0.2的上升沿中断子程序中先置位 M4_Abort:M0.5,然后再调用POS0_GOTO指令,同时去掉了M1.1的上升沿检测,以此来解决上面的问题。我是想如果我真的用了这样的方法的话,以后程序运行中肯定会出现问题的。

   再次感谢潘工的答复和指教!

   祝生活开心&工作顺利!   ^_^ 

[em27]
此软件“仅限学习交流”,如用于商业用途,请到官方购买正版软件,追究法律责任与“技成培训网”无关!
本站仅提供软件下载,不提供软件安装、破解等指导服务。
您需要登录后才可以回帖 登录 | 立即注册

本版技能点规则

小黑屋|技成培训网论坛   粤ICP备11069432号-1

GMT+8, 2024-6-4 05:45

Powered by jcpeixun X3.3

© 2007-2024 深圳市技成科技有限公司

快速回复 返回顶部 返回列表