计数器是一条 PLC 指令,当一位从 0 到 1(“假”到“真”)转换时,它会递增(向上计数)或递减(向下计数)整数值。
计数器指令分为三种基本类型:
- 向上计数器,
- 递减计数器,以及
- 加/减计数器。
“向上”和“向下”计数器指令都有用于触发计数的单个输入,而“向上/向下”计数器有两个触发输入:一个使计数器递增,一个使计数器递减。
PLC计数器指令
为了说明计数器指令的使用,我们将分析一个基于 PLC 的系统,该系统旨在对通过传送带的物体进行计数:
在该系统中,连续(不间断)的光束使光传感器关闭其输出触点,为离散通道 IN4 供电。
当传送带上的物体中断从光源到传感器的光束时,传感器的触点打开,中断输入 IN4 的电源。
连接到激活离散输入 IN5 的按钮开关在按下时将用作计数值的手动“重置”。
连接到离散输出通道之一的指示灯将作为对象计数值何时超过某个预设限制的指示器。
现在我们将分析一个简单的梯形图程序,该程序旨在每次光束中断时递增计数器指令:
这个特定的计数器指令 (CTU) 是一个递增计数器,这意味着它会随着输入到其“CU”输入的每个关闭到打开的转换输入而“向上”计数。
当光束连续时,常闭虚拟触点(IN 传感器对象)通常保持在“打开”状态,因为传感器在光束连续时保持离散输入通道通电。
当光束被传送带上经过的物体打断时,输入通道断电,导致虚拟接触 IN 传感器物体“关闭”并将虚拟电源发送到计数器指令的“CU”输入。
当物体的前缘破坏光束时,计数器就会增加。 计数器指令盒的第二个输入(“R”)是复位输入,每当按下复位按钮时,都会从触点 IN 开关复位接收虚拟电源。 如果该输入被激活,计数器立即将其当前值 (CV) 重置为零。
状态指示在此梯形图程序中显示,计数器的预设值 (PV) 为 25,计数器的当前值 (CV) 为 0,以蓝色突出显示。
预设值是在系统投入使用之前编程到计数器指令中的东西,它作为激活计数器输出(Q)的阈值,在这种情况下打开计数指示灯(OUT计数达到线圈)。
根据 IEC 61131-3 编程标准,只要当前值等于或大于预设值,该计数器输出就应激活(如果 CV ≥ PV,则 Q 激活)。
这是传送带上三十个物体经过传感器后同一程序的状态。
可以看到,计数器的当前值已增加到 30,超过预设值并激活离散量输出:
如果我们不关心保持超过 25 个物体的准确总数,而只是希望程序指示 25 个物体何时经过。
我们还可以使用预设为 25 值的递减计数器指令,当计数达到零时,该指令会打开输出线圈:
此处,激活时,“加载”输入会导致计数器的当前值等于预设值 (25)。
随着每个传感器脉冲的接收,计数器指令递减。 当它达到零时,Q 输出激活。
该对象计数系统的任一版本都存在一个潜在问题,即 PLC 无法区分传送带上的正向运动和反向运动。
例如,如果传送带方向发生逆转,当物体在传送带上退回时,传感器将继续对之前(向前)经过的物体进行计数。
这将是一个问题,因为系统会“认为”沿着传送带传递的物体比实际多(表明产量更大)。
解决此问题的一种方法是使用既可以递增(向上计数)又可以递减(向下计数)的可逆计数器,并为该计数器配备两个能够确定行进方向的光束传感器。
如果两束光束彼此平行,并且比沿传送带通过的最窄物体的宽度更近,我们将有足够的信息来确定物体行进的方向:
这称为正交信号定时,因为两个脉冲波形的相位相差大约 90 度(四分之一周期)。
我们可以使用这两个相移信号来递增或递减向上/向下计数器指令,具体取决于哪个脉冲超前和哪个脉冲滞后。
此处显示了设计用于解释正交脉冲信号的梯形图 PLC 程序,该程序利用了负过渡触点以及标准触点:
仅当传感器 A 已处于断电状态(即光束 A 在 B 之前中断)时,计数器才会在传感器 B 断电时递增(向上计数)。
仅当传感器 B 已处于断电状态(即光束 B 在 A 之前中断)时,计数器才会在传感器 A 断电时递减(递减计数)。
请注意,向上/向下计数器有一个“复位”(R) 输入和一个“加载”输入(“LD”) 以强制当前值。
激活复位输入会强制计数器的当前值 (CV) 为零,就像我们在“向上”计数器指令中看到的那样。
然后激活负载输入将计数器的当前值强制为预设值(PV),就像我们在“向下”计数器指令中看到的那样。
对于向上/向下计数器,有两个 Q 输出:QU(输出向上)指示当前值何时等于或大于预设值,QD(输出向下)指示当前值何时 值等于或小于零。
请注意显示的每个计数器的当前值 (CV) 如何与其自己的标签名称相关联,在本例中是计数的部件。
计数器当前值 (CV) 的整数是 PLC 内存中的一个变量,就像 IN 传感器 A 和 IN 开关复位等布尔值一样,并且可以与标签名称或符号地址相关联。
这允许 PLC 程序中的其他指令从该内存位置读取(有时还写入!)值。