zichen8716
我行,我行,我行行行!!!
级别: 家园常客
精华主题: 0
发帖数量: 266 个
工控威望: 527 点
下载积分: 4363 分
在线时间: 59(小时)
注册时间: 2010-03-25
最后登录: 2022-12-28
查看zichen8716的 主题 / 回贴
楼主  发表于: 2011-04-13 12:51
 程序如下:                

                    M0
            ——|↓|————————[ ZRST M10 M20 ]
                    M0
            ——|     |————————[ CALL P0 ]
            ————————————————————[ FEND ]
P0                M8000     
            ——|       |————————[  SET M11 ]
                   M11     
            ——| ↑  |————————[  SET M12 ]
          
            ————————————————————[ SRET ]
            ————————————————————[ END]


现在的问题是第一次按M0,M11 M12可以同时被置位,第二次按下是只能M11置位,M12时钟为低电平。到底是什么问题

子程序P0,修改为
                     M11     
            ——| ↑  |————————[  SET M12 ]
                 M8000     
            ——|       |————————[  SET M11 ]
M11 M12可以同时被置位,哪位高手给解释一下到底是怎么回事。
失败并不意味你浪费了时间和生命。失败表明你有理由重新开始
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5200 个
工控威望: 7423 点
下载积分: 158799 分
在线时间: 3161(小时)
注册时间: 2007-11-21
最后登录: 2024-11-22
查看sjm213的 主题 / 回贴
1楼  发表于: 2011-04-13 22:46
第一段:
第一次按下M0时M11/M12被置位,因为执行了P0程序;松开M0时M11/M12被复位,这是没有问题的,因为主程序在一直运行。
但要注意此时子程序P0没有被调用,其中的程序不被执行。
第二次按下M0时,再次调用P0程序,首先M11就被置位了,所以程序执行到M12的时候,M11的状态是从第一次松开M0前的ON状态切换到了之后按下M0时的ON状态,中间没有ON--OFF--ON的变化,也就谈不上上升沿之类,所以M12无法被置位。
第二段:
直接把子程序被调用时的程序放到主程序中去分析即可。
本帖最近评分记录:
  • 下载积分:+4(zichen8716) 热心助人