文章目录

三菱PLC高速计数器的环形计数应用

发布于 2026-03-29 19:31:19 · 浏览 8 次 · 评论 0 条

三菱PLC高速计数器的环形计数应用

环形计数是位置控制中的常见需求,常用于旋转工作台、卷取机或需要在有限范围内重复计数的场景。普通计数器在达到设定值后会停止或复位,而环形计数器要求在达到上限后自动回到下限,或在达到下限时自动回到上限,形成闭环逻辑。本指南将详细说明如何在三菱 PLC 中实现这一功能。


硬件接线与基础配置

1. 确认输入信号类型
首先查看编码器或传感器的输出信号。常用的有 A/B 相脉冲或 CW/CCW 脉冲。选择对应的硬件端口。FX3U 系列推荐使用 X0X1 作为高速计数输入端子,因为它们支持 100kHz 的计数频率。如果是两相正交信号,需连接 A 相到 X0,B 相到 X1。确保公共端 COM 连接正确,NPN 型传感器接 0V,PNP 型接 24V

2. 设置特殊寄存器
高速计数器的工作模式由特殊辅助继电器决定。以 FX 系列为例,写入 M82xx 来改变计数方向。例如,若使用 C251 计数器,置位 M8251 可将其设为减计数模式。若需要保持加计数,则复位 M8251。同时,检查 D8140 寄存器,它存储了当前的高速计数值。注意,直接访问高速计数器的数据寄存器有时会有延迟,建议在中断程序中读取或使用 DHSCS 指令进行精准比较。


环形计数逻辑设计

核心在于处理“溢出”和“回绕”。当计数值超过物理行程的最大值时,不能直接报错停机,而应根据工艺要求跳转到行程的最小值。反之亦然。这涉及逻辑判断而非单纯的硬件特性。

逻辑流程图

下图展示了环形计数的决策路径:

graph TD A["读取当前计数器数值"] --> B["判断数值范围"] B -- "大于最大设定值" --> C["重置为最小起始值"] B -- "小于最小设定值" --> D["重置为最大终点值"] B -- "处于正常区间" --> E["保持原数值"] C --> F["触发边界报警信号"] D --> F E --> G["输出当前位置信号"] F --> G

计算公式

为了将脉冲数转换为实际物理位置,需应用以下换算关系:

设 $C$ 为高速计数器当前值,$P_{pulse}$ 为每单位长度的脉冲数,$Offset$ 为机械零点偏移量。实际物理位置 $Pos$ 的计算公式如下:

$$Pos = (C - Offset) / P_{pulse}$$

在环形应用中,需先对 $C$ 进行模运算处理。假设最大值为 $Max$,最小值为 $Min$,则修正后的值 $C'$ 应满足:

$$Max \geq C' \geq Min$$

当 $C > Max$ 时,执行 $C' = C - (Max - Min + 1)$。
当 $C < Min$ 时,执行 $C' = C + (Max - Min + 1)$。

此计算通常在 PLC 的梯形图程序段中完成,或者通过数学指令 DIVADD 实现。


程序编写实操步骤

使用 GX Works2 或 GX Developer 软件进行编程。以下为基于 LAD(梯形图)的具体操作步骤。

1. 初始化中断程序
创建一个指针编号的中断服务程序,用于实时响应高速计数器变化。对于 FX 系列,使用 EI 开启中断。在中断程序内,读取 D8140 的值存入临时寄存器 D100。不要在中断中做复杂的数学运算,以免影响中断响应速度。

2. 设置上下限阈值
定义两个常数值分别代表行程的上限和下限。假设上限为 5000,下限为 -5000。将这些值写入数据寄存器 D200(上限)和 D201(下限)。

3. 编写比较逻辑
在主程序中,插入比较指令。

  • 调用 CMP 指令或触点 >= / <=
  • 判断 D100 是否大于 D200。如果成立,执行 MOV 指令,将 D201 的值复制D100
  • 判断 D100 是否小于 D201。如果成立,执行 MOV 指令,将 D200 的值复制D100

4. 添加滤波保护
为了防止机械振动导致瞬间误触发边界,增加时间滤波。创建一个定时器 T0,当检测到超限时,启动 T0。只有当 T0 计时完成(如 100ms),才允许执行复位跳转动作。

5. 映射物理输出
建立一个转换函数块或子程序。将内部逻辑值 D100 转换为模拟量或伺服指令所需的数值。如果需要驱动伺服,发送 PLSR 指令前的目标位置值需基于这个环形修正后的值。

以下是关键指令列表的参考格式,请在梯形图中对应插入:

LD     X0           // 读取外部复位信号
ANI    M0           // 互锁
OUT    S0           // 设置状态初始
// 环形判断逻辑
LD     >     D100    D200  // 当前值 > 上限
ZRST   D100   D100          // 准备写回
MOV    D201   D100   // 上限触发,归零到下界
LD     <     D100    D201  // 当前值 < 下限
MOV    D200   D100   // 下限触发,跳至上界

参数对照表

为了方便维护,建议将所有相关地址记录在文档中。下表列出了常用的高速计数器及其对应寄存器,确保在实际项目中准确匹配型号。

计数器编号 功能描述 当前值寄存器 方向控制位 适用机型
C235 单相计数 (10kHz) D8140 M8235 FX1N/FX2N
C251 双相计数 (100kHz) D8251 M8251 FX3U
C254 双相计数 (300kHz) D8254 M8254 FX5U
C255 三组计数 (100kHz) D8255 M8255 FX3U

请注意,不同系列的 PLC 寄存器分配可能不同。务必查阅具体型号的编程手册。例如,Q 系列的高性能 CPU 使用的是模块专用寄存器,而非上述的 D 寄存器。


调试与验证方法

程序下载至 PLC 后,必须进行动态测试。按照以下步骤逐一验证功能。

1. 空载运行测试
断开电机负载,仅连接编码器。手动旋转编码器轴。观察监控画面上的 D100 数值变化。缓慢转动超过上限设定值,确认数值是否瞬间跳变至下限值。记录跳动发生的精确脉冲点,校准阈值参数。

2. 边界稳定性测试
在接近上限和下限的位置停留并保持。观察数值是否会出现震荡。如果发现数值在临界值附近来回跳动,说明没有加入足够的时间滤波或滞后区。此时调整 T0 定时器的时间,或修改比较指令中的死区范围,例如上限改为 Max - 50,下限改为 Min + 50

3. 断电记忆功能
关闭 PLC 电源并重新上电。检查高速计数器是否恢复到了断电前的数值。这需要配合掉电保持电池或超级电容。对于 Q/L 系列,需在属性设置中勾选 “断电保持”选项。如果未配置,计数器会从零开始,导致首周运动定位不准。

4. 负载联动测试
接通驱动器使能信号。让设备运行完整一圈。观察伺服报警是否有 “过冲” 或 “原点丢失”。如果出现定位偏差,检查机械传动比设置是否正确。确保 Pos 计算公式中的 $P_{pulse}$ 与实际电机分辨率一致。


常见问题排查

在实施过程中,可能会遇到计数不准确或逻辑不响应的情况。参考下表进行快速诊断。

故障现象 可能原因 解决方法
计数方向反了 相位线接错 交换 A 相与 B 相输入线
到达限位不停机 比较指令错误 检查 CMP 指令的目标值是否为常数
周期性丢脉冲 扫描周期过长 缩短 主程序扫描周期,使用中断方式
复位后数值不跳变 自锁未解除 清除 输出继电器状态,防止自保持
高速计数不稳定 干扰过大 加装 屏蔽线,良好接地,远离变频器

如果上述措施无效,尝试更换低速模式测试(降低频率),以区分是硬件噪声问题还是逻辑处理瓶颈。确保电源线与控制线分开走线槽,避免电磁感应引入误差信号。对于长距离传输,强烈建议使用差分信号的电缆或光耦隔离器。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文