s7-300/400的计数器具有输出端q、现行计数值输出端cv(二进制)、现行计数值的bcd码输出端cv—bcd三个输出端。输出端q可以作为计数器的状态指示信号使用,当计数器的现行计数值为“0”时,q=“0”;当现行计数值大于0时,q=“1”。通过现行计数值输出端cv(或cv- bcd)可以获得计数器的当前计数值。
在程序中同一计数器编号既可以作为触点使用,也可以作为现行值数据使用,它决定于程序中使用的指令形式。在逻辑运算指令中使用计数器编号,采用的是计数器的触点:在数据运算指令中使用计数器编号,为现行值计数值。
s7-300/400的定时指令包括如下几种;
(l)计数器控制指令
fr:计数器启动信号;
l:装载计数值,或将现行计数值以二进制的形式读入到累加器l中:
lc:将现行计数值以bcd码的形式读入到累加器l中:
r:计数器复位;
s:设定计数器的预置值:
(2)定时器类型选择指令
cu:加计数;
cd:减计数。
加计数器非常容易理解,减计数器也不难,简述如下:
减计数器(down counter)方框指令的cd是减计数脉冲输入端,其余各输入、输出端的功能与图中的加计数器的相同。在设置输入i1.6的上升沿,用pv指定的值被送入c1。在减计数输入信号i1.5的上升沿,如果计数值大于0,计数值减1。复位输入i1.7为1时,计数器被复位,计数器位和计数值被清零。计数值大于0时计数器的输出q为1;计数值为0时,q亦为0。如果在设置计数器时减计数输入信号cd为1,即使cd没有变化,下一扫描周期也会计数。
图中标有sc的线圈用来预置计数器的值。i1.6的触点由断开变为接通时,预置值5被送入计数器c1。标有cd的线圈为减计数线圈(down counter coil),在i1.5的上升沿,如果计数值大于0,计数值减1。计数值非0时,c1的常开触点闭合,为0时c1的常开触点断开。复位输入i1.7为1状态时,c1被复位,计数器位和计数值被清零。
为了在计数器计完预置值指定的脉冲数后进行某种操作,最简单的方法是首先将预置值送入减计数器,计数值减为0时,其常闭触点闭合,用它来完成要做的工作。
以上各指令的应用以及梯形图编程、指令表编程的方法如图所示。指令表程序中的bld用于编程器的图形显示,nop为“空操作指令”,它在转换格式时由编程软件自动生成,无功能含义。