计数器与定时器类似,该指令是用来访问计数器存储区的函数。在用户CPU的存储器中,为计数器保留有存储区。此存储区中为每个计数器地址保留一个16bit字。梯形图指令集支持256个计数器。
计数器是对RLO的上升沿计数的,它由计数器字和状态位组成。计数器字中的0~9位以二进制代码形式存储当前的计数值,或者用0~11位以BCD码形式存储当前的计数值。当设置某个计数器时,计数值移至计数器字。计数值的范围为0~999。S7有3种计数器,分别是加计数器、减计数器和双向计数器。
计数器指令有梯形图指令和简化指令(见附录)两种形式,图4-15所示是梯形图形式的指令。指令中Cno.是计数器号,CU、CD分别是加计数输入和减计数输入。PV是计数器初始值,如设置计数初值为120,用BCD码形式可写为C#120。S是计数预置输入端,R是计数器复位端,Q表示计数状态,CV和CV_BCD是当前计数值的整数表示和BCD码表示。
下面以双向计数器说明计数器的使用。
图4-14 断开延时定时器的时序
如果输入端S有上升沿,S_CUD(双向计数器)预置为PV的输入值。如果输入端R为“1”,则计数器复位,并将计数值设置为0。如果输入端CU的信号状态从“0”切换为“1”,并且计数器的值小于“999”,则计数器的值增1。如果输入端CD有上升沿,并且计数器的值大于“0”,则计数器的值减1。
图4-15 加、减、双向计数器的梯形图指令
如果两个计数器输入都有上升沿,则执行两个指令,而计数值保持不变。(www.xing528.com)
如果已设置计数器,并且输入端CU/CD的RLO=1,即使没有从上升沿到下降沿或下降沿到上升沿的切换,计数器也会在下一个扫描周期进行相应的计数。
如果计数值大于等于“0”,则输出端Q的信号状态为“1”。图4-16所示是双向计数器的使用方法。
图4-16 双向计数器的使用
如果I0.2从“0”变为“1”,则计数器预设为MW10的值。如果I0.0的信号状态从“0”变为“1”,则计数器C10的值将增加1,除非C10的值等于999。如果I0.1从“0”改变为“1”,则C10减少1,除非C10的值为“0”。如果C10不等于0,则Q4.0为“1”。
在CPU经过完全复位后是否运行时间计数器也被复位?
注意:在CPU经过完全复位后是否运行时间计数器也被复位?
使用S7-300时,带硬件时钟(内置的“实时时钟”)和带软件时钟的CPU之间有区别。对于那些无后备电池的软件时钟的CPU,运行时间计数器在CPU被完全复位后其最后值被删除。而对于那些有后备电池的硬件时钟的CPU,运行时间计数器的最后值在CPU被完全复位后被保留下来。同样,CPU318和所有的S7-400 CPU的运行时间计数器在CPU被完全复位后其最后值被保留。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。