计数器应该说也是每种PLC中都存在的一个指令目录,以西门子PLC来说的话,计数器指令目录下边有,增计数器、减计数器、增减计数器以及高速计数器。
高速计数一般需要特殊的点位或者专用的计数模块来实现高速计数功能,因此并没有增/减计数器这样的计数器常用,因此我就以增计数器在PLC在编程中的使用方法和注意事项来答题吧。
我还是以西门子200Micro/win 软件来说,请看下图:
这个图片上的CTU就是一个增计数器,所谓增计数器就是计数时候是不断的加1加1这样慢慢增大的,CU就是增计数信号的引脚,你要计数的变化量信号要引入这个引脚。下边的R就是复位计数器的计数值,比如最后C255处,M0.0如果接通,那么不管C255的当前值为多少,都会变为0,即C255=0。而下边的PV是一个预设值,这个值的作用是计数器的当前值计数到和PV值相等的时候,计数器的节点信号就接通,如图中网络3处C1的常开触点就会接通。
①图中网络1处C1计数器的当前值是7,所以网络3处C1计数器的节点信号没有接通是off状态。---这里说明,计数器有线圈指令和节点信号,它们的命名必须一致!这样计数器计数到60的时候,网络3处的C1节点才能接通!
②图中网络1和网络2,C1=7,C100=7,他们都是由SM0.5触发的(1s的时钟脉冲信号),但是C100这里没有上升沿P指令,而C1处有上升沿指令,但计数的结果是一样的。---这里说明,计数器指令是不需要配个边沿指令也能准确的计数的!
③图片中可以看到我用了3个计数器指令,C1,C100,C255,其实计数器的编号比如C25,C36,随你高兴怎么起名字,但是在西门子200PLC中计时器的个数是有限制的编号只能在C0-C255这之间,如果你使用C256,则直接出现红色波浪线提示非法!
这里说了计数器编程使用中的3个注意事项了,再来看一个图片:
这个图片上可以看到C255=1了,因为C1第一次等于60的时候,使得网络3处的V0.0接通了一次,V0.0又触发了C255进行了一次计数,就由0变为了1。这里V0.0就变成了一个1分钟的脉冲标记位了,因为SM0.5是1s的脉冲,它触发计数器计数60次就自动复位,这样V0.0就等于60s的脉冲了。这样的时间和计数器配合,来达到自己想要的时钟信号,在PLC编程中是非常常用的编程方法。
在这个图片上看到C1=27,那是第二次计数到27;而网络2处的C100=87的原因是R引脚的复位点是M0.1,我没有让M0.1接通,所以C100就一直在计数。当C100计数到60的时候,它的节点其实也是接通了的,且目前C100=87的时候它的节点还是接通的。---这里就说明了第④个注意事项,计数器的当前值大于等于PV预设值之后,计数器的节点指令就是一直接通的,它会一直计数到32767就没法再继续向上计数了,所以在编程的时候一定要注意对计数器的复位!
这里的32767,我在很多的答题中都反复的说过了,这是16位字长整数在有符号情况下的最大表示值,因此C计数器,它本身就是一个16位的指令,也因此PV处的变量也必须是整形变量,如下图:
这个图片上我要给C2计数器初始化赋值为0的话,就要用字传送指令,因为C2就是一个16位变量。同时C3的PV值关联到VW10,因为PV处也是要求16位变量。---因此计时器和PV引脚都需要是16位的整形变量,可以算是第⑤个注意事项!
就说这么多了,应该能对提问者有所帮助,谢谢!