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

(图片摘自《现代电气控制及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. 工作流程(计数过程)
- 第一级计数 :I0.0每来一个脉冲,C20 的当前值(CV)加1。
- 第一次进位 :当 C20 从 999 加到 1000(计满)时,C20 的常开触点闭合一个扫描周期。
- 这个闭合的触点作为进位脉冲 ,使 C21 的当前值(CV)加1。此时,总计脉冲数 = 1000 * 1 = 1000。
- 第二级计数与第二次进位 :C21 累计 C20 送来的进位脉冲。当 C21 计满100次(即收到第100个来自C20的进位脉冲)时,C21 的常开触点闭合。
- 这个闭合的触点作为进位脉冲,使 C22 的当前值(CV)加1。此时,总计脉冲数 = 1000 * 100 = 100,000。
- 最终触发: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
- 优点:用多个小容量计数器实现了超大范围的计数,成本低,编程简单。
- 注意要点:
- 复位设计必须完善:必须包含公共复位和各级的自复位逻辑。
- 扫描周期的影响:进位和复位动作存在一个扫描周期的延迟,在要求极高速度的应用中需考虑。
- 设定值选择:各级设定值的乘积等于目标值,可以灵活分配。通常让最后一级的设定值较小,便于最终状态的判断和输出控制。
通过这种级联扩展方法,理论上可以通过串联足够多的计数器,实现任意大的计数范围,完美突破了单个计数器的计数上限限制。