LOOP循环时的计数器

前一段时间看到一个关于做16个阀互锁的问题 只准一个输出 做了一个输出计数器的程序 
做了一个小的程序想实现对16个位位的输出个数的统计程序如下
A     M     20.0
      R     C     10
      L     16
NEXT: T     MD    10
      A     M [MD 10]
      CU    C     10
      L     C     10
      T     MD    14
      L     MD    10
      LOOP  NEXT
其中M20.0常为1以使C10在程序开始时置0但是程序在模拟时候发现只能检测出M0.1 M0.3 M0.5 M0.7  M1.1 M1.3 M1.5 M1.7中的任何输出之和即最大检测值为8  同样也可以检测M0.2 M0.4 M 0.6 M1.0  M1.2 M1.4 M1.6 M2.0
也是8  但是比如当其中有  M0.3 M0.4 M0.5 则值为1  也就是说不能有偶数和奇数位同时输入否则不能正常检测   请说明一下计数器为什么不能统计出16

最佳答案

修改程序如下:
   L     0
      T     MD    14
      L     16
NEXT: T     MD    10
      A     M [MD 10]
      JCN   a01
      L     MD    14
      INC   1
      T     MD    14
a01:  L     MD    10
      LOOP  NEXT


补充一下:之前程序的问题并不是由于计数脉冲周期太短的原因,而是因为计数器计数必须是采集到信号的上升沿,由于你的M0.1 M0.3 M0.5 M0.7  M1.1 M1.3 M1.5 M1.7之间刚好经过了一个由0到1的变化,这样计数就是准确的,如果在M0.1和M0.3之间再多一个M0.2为1的信号,那么计数器采集M0.2和M0.3的信号时,由于并没有0到1的变化,这两个为1的信号反而不会被计数。

提问者对于答案的评价:
谢谢解答 希望以后的人少走弯路吧

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐