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可以同时被置位,哪位高手给解释一下到底是怎么回事。
失败并不意味你浪费了时间和生命。失败表明你有理由重新开始
zichen8716
我行,我行,我行行行!!!
级别: 家园常客
精华主题: 0
发帖数量: 266 个
工控威望: 527 点
下载积分: 4363 分
在线时间: 59(小时)
注册时间: 2010-03-25
最后登录: 2022-12-28
查看zichen8716的 主题 / 回贴
1楼  发表于: 2011-04-13 12:56
第二种情况:

程序如下:                

                    M0
            ——|↓|————————[ ZRST M10 M20 ]
                    M0
            ——|     |————————[ CALL P0 ]
            ————————————————————[ FEND ]

P0                M8000      
            ——|       |————————[  SET M11 ]
                   M11      
            ——|    |————————[  SET M12 ]
                              |___________[ INCP D0 ]  
                  
            ————————————————————[ SRET ]
            ————————————————————[ END]
子程序改成这样,M11 M12都可以被置位,但是D0就加一次数,是什么问题



子程序P0,修改为
                    M11      
            ——| ↑  |————————[  SET M12 ]
                                     |___________[ INCP D0 ]  
                 M8000      
            ——|       |————————[  SET M11 ]

子程序改成这样。M11 M12可以同时被置位,D0计数正常,是什么问题
[ 此帖被zichen8716在2011-04-13 13:17重新编辑 ]
失败并不意味你浪费了时间和生命。失败表明你有理由重新开始
jery
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看jery的 主题 / 回贴
2楼  发表于: 2011-04-13 13:51
高手啊~~~~~
小鸡已炖
级别: 探索解密
精华主题: 0
发帖数量: 44 个
工控威望: 163 点
下载积分: 451 分
在线时间: 47(小时)
注册时间: 2011-03-29
最后登录: 2023-09-06
查看小鸡已炖的 主题 / 回贴
3楼  发表于: 2011-04-13 17:31
应该和扫描周期有关系
我是这样理解的
M0第1次通的时候CALL执行了扫描周期P0,所以M11被置位M11上升沿也置位M12
M0断开时M11和M12被复位但CALL P0这个扫描周期还在
就好像下面这个程序:
                    M0
            ——|↑|————————[ CALL P0 ]
            —————————————————[ FEND ]
P0                M8000      
            ——|       |————————[  Y0 ]
          
            ————————————————————[ SRET ]
            ————————————————————[ END]

M0通了Y0会一直接通!
所以你那个程序我觉得你第2次按M0的时候M11会再次置位M11但不会在发脉冲给SET12!
哎反正就是这些问题!我表达能力就这样了不知道你知道我在说什么不?O(∩_∩)O哈哈~
你把后面的子程序调换了就更好理解了!因为扫描时从上扫描下来的!
本帖最近评分记录:
  • 下载积分:+4(zichen8716) 热心助人
    薛璐瑶
    和大家一起进步,向大家学习
    级别: 略有小成
    精华主题: 0
    发帖数量: 163 个
    工控威望: 272 点
    下载积分: 943 分
    在线时间: 41(小时)
    注册时间: 2011-03-31
    最后登录: 2020-09-16
    查看薛璐瑶的 主题 / 回贴
    4楼  发表于: 2011-04-13 18:20
    路过学习一下
    家和
    级别: *
    精华主题: * 篇
    发帖数量: * 个
    工控威望: * 点
    下载积分: * 分
    在线时间: (小时)
    注册时间: *
    最后登录: *
    查看家和的 主题 / 回贴
    5楼  发表于: 2011-04-13 22:05
    路过学一下    顶下楼主
    sjm213
    有小知识,无大学问。
    级别: 论坛版主

    精华主题: 7 篇
    发帖数量: 5212 个
    工控威望: 7436 点
    下载积分: 158993 分
    在线时间: 3172(小时)
    注册时间: 2007-11-21
    最后登录: 2024-12-22
    查看sjm213的 主题 / 回贴
    6楼  发表于: 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) 热心助人
    qiulong216
    级别: 略有小成
    精华主题: 0
    发帖数量: 186 个
    工控威望: 404 点
    下载积分: 433 分
    在线时间: 142(小时)
    注册时间: 2009-02-03
    最后登录: 2024-11-12
    查看qiulong216的 主题 / 回贴
    7楼  发表于: 2011-04-14 00:21
    版主高人!
    zichen8716
    我行,我行,我行行行!!!
    级别: 家园常客
    精华主题: 0
    发帖数量: 266 个
    工控威望: 527 点
    下载积分: 4363 分
    在线时间: 59(小时)
    注册时间: 2010-03-25
    最后登录: 2022-12-28
    查看zichen8716的 主题 / 回贴
    8楼  发表于: 2011-04-14 08:50
    引用
    引用第6楼sjm213于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无法被置位。
    第二段:
    .......




    版主你好,我监控的时候M11确实从ON-OFF了啊
    失败并不意味你浪费了时间和生命。失败表明你有理由重新开始
    zichen8716
    我行,我行,我行行行!!!
    级别: 家园常客
    精华主题: 0
    发帖数量: 266 个
    工控威望: 527 点
    下载积分: 4363 分
    在线时间: 59(小时)
    注册时间: 2010-03-25
    最后登录: 2022-12-28
    查看zichen8716的 主题 / 回贴
    9楼  发表于: 2011-04-14 09:07
    明白了,谢谢版主指点
    失败并不意味你浪费了时间和生命。失败表明你有理由重新开始
    zsh340
    zsh340
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 992 个
    工控威望: 1148 点
    下载积分: 18350 分
    在线时间: 273(小时)
    注册时间: 2009-05-29
    最后登录: 2024-12-22
    查看zsh340的 主题 / 回贴
    10楼  发表于: 2011-04-15 17:18
    顺序问题,CPU本来就是从上至下,从左至右的扫描。
    相互交流。。。。相互学习。。。。使技术更上一层楼。。。。
    aa22284
    级别: 略有小成
    精华主题: 0
    发帖数量: 189 个
    工控威望: 323 点
    下载积分: 1235 分
    在线时间: 79(小时)
    注册时间: 2011-11-05
    最后登录: 2017-05-08
    查看aa22284的 主题 / 回贴
    11楼  发表于: 2011-11-08 22:27
    太難了!!還是看不懂,
    第二次按下M0时,再次调用P0程序,首先M11就被置位了,所以程序执行到M12的时候,M11的状态是从第一次松开M0前的ON状态切换到了之后按下M0时的ON状态,中间没有ON--OFF--ON的变化,也就谈不上上升沿之类,所以M12无法被置位。
    那麼先後順序也因該沒有差別才對,因為是第一次的狀態..............所以還想不透