前一段时间看到一个关于做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