28. 计数器的扩展

14 阅读5分钟
  1. 计数器的扩展

核心目的是解决一个实际问题:单个PLC计数器的最大计数值(通常为32,767)无法满足更大的计数需求时,如何通过多个计数器“接力”计数,从而实现超大范围的计数。


image.png

(图片摘自《现代电气控制及PLC应用技术》(王永华))

一、扩展目标与基本原理

  • 目标:统计输入点 I0.0的上升沿脉冲数量,当计数值达到 200,000 次时,驱动输出 Q0.0。
  • 限制:单个计数器最大只能计到 32,767,远小于 200,000。
  • 解决方案(扩展原理):采用 计数器级联(串联) 的方式。将一个大任务分解为多级小任务,每一级计数器计满一个较小的数后,向下一级计数器发出一个计数脉冲,相当于完成了一次“进位”。最终的总计数值是 各级计数器设定值的乘积。

类比:就像我们用的机械式里程表(或十进制计数器),个位转10圈(计满10),十位进1;十位转10圈(计满100),百位进1。PLC计数器的扩展是同样的“进位”思想,但进制数可以自定义。


二、电路程序详解

程序使用了三个计数器(C20, C21, C22)进行两级扩展,来实现 1000 * 100 * 2 = 200,000 的计数。

1. 各计数器角色与设定

  • C20:“个位”级计数器。直接对输入信号 I0.0的每个上升沿进行计数。设定值(PV)为 1000。
  • C21:“十位”级计数器。对 C20 的“进位”信号进行计数。设定值(PV)为 100。它计1次,代表 C20 已经计满了1000次。
  • C22:“百位”级计数器或最终触发级。对 C21 的“进位”信号进行计数。设定值(PV)为 2。它计1次,代表 C21 已经计满了100次(即 I0.0脉冲已达 1000 * 100 = 100,000 次)。

2. 工作流程(计数过程)

  1. 第一级计数:I0.0每来一个脉冲,C20 的当前值(CV)加1。
  2. 第一次进位:当 C20 从 999 加到 1000(计满)时,C20 的常开触点闭合一个扫描周期。
    • 这个闭合的触点作为进位脉冲,使 C21 的当前值(CV)加1。此时,总计脉冲数 = 1000 * 1 = 1000。
  1. 第二级计数与第二次进位:C21 累计 C20 送来的进位脉冲。当 C21 计满100次(即收到第100个来自C20的进位脉冲)时,C21 的常开触点闭合。
    • 这个闭合的触点作为进位脉冲,使 C22 的当前值(CV)加1。此时,总计脉冲数 = 1000 * 100 = 100,000。
  1. 最终触发:C22 累计 C21 送来的进位脉冲。当 C22 计满2次时,其常开触点闭合。
    • 这个触点驱动输出线圈 Q0.0,表示总脉冲数已达到 1000 * 100 * 2 = 200,000。

3. 复位逻辑分析(关键设计)

特别强调复位逻辑的设计,这是保证扩展计数器能循环、准确工作的关键。

  • 公共复位:I0.1作为外部复位按钮。当 I0.1接通时,它同时复位 C20, C21, C22,将所有计数器当前值清零,为下一次计数循环做准备。
  • 自动复位(自复位):这是级联计数器的精妙之处。
    • C20的自复位:当 C20 计到1000时,其触点除了触发C21计数外,同时也会在下一个扫描周期接通它自己的复位端(R)。这意味着 C20 在完成“进位”任务后,立即将自己清零,重新从0开始对 I0.0计数。这保证了进位信号的准确性(每1000个脉冲发一个进位脉冲)。
    • C21的自复位:同理,当 C21 计到100时,其触点在触发C22计数的同时,也会在下一个周期复位自己,以便重新开始接收C20的下一个100次进位。
    • C22的复位:由公共复位信号 I0.1负责。当达到目标200,000后,需要人工或外部逻辑复位,以开始新一轮计数。

自复位的意义:防止计数器溢出,并确保每一级计数器始终在一个固定的、较小的循环(1000, 100, 2)内工作,使得级联关系清晰、可靠。如果不自复位,C20计到1000后会停止,无法继续计数,整个系统就停止了。


四、总结与公式

  • 扩展总容量:级联扩展后的最大计数值 = 计数器1设定值 × 计数器2设定值 × ... × 计数器n设定值。
    • 本例:1000 × 100 × 2 = 200,000
  • 优点:用多个小容量计数器实现了超大范围的计数,成本低,编程简单。
  • 注意要点:
    1. 复位设计必须完善:必须包含公共复位和各级的自复位逻辑。
    2. 扫描周期的影响:进位和复位动作存在一个扫描周期的延迟,在要求极高速度的应用中需考虑。
    3. 设定值选择:各级设定值的乘积等于目标值,可以灵活分配。通常让最后一级的设定值较小,便于最终状态的判断和输出控制。

通过这种级联扩展方法,理论上可以通过串联足够多的计数器,实现任意大的计数范围,完美突破了单个计数器的计数上限限制。