三菱PLC高速计数器的环形计数应用
环形计数是位置控制中的常见需求,常用于旋转工作台、卷取机或需要在有限范围内重复计数的场景。普通计数器在达到设定值后会停止或复位,而环形计数器要求在达到上限后自动回到下限,或在达到下限时自动回到上限,形成闭环逻辑。本指南将详细说明如何在三菱 PLC 中实现这一功能。
硬件接线与基础配置
1. 确认输入信号类型
首先查看编码器或传感器的输出信号。常用的有 A/B 相脉冲或 CW/CCW 脉冲。选择对应的硬件端口。FX3U 系列推荐使用 X0 和 X1 作为高速计数输入端子,因为它们支持 100kHz 的计数频率。如果是两相正交信号,需连接 A 相到 X0,B 相到 X1。确保公共端 COM 连接正确,NPN 型传感器接 0V,PNP 型接 24V。
2. 设置特殊寄存器
高速计数器的工作模式由特殊辅助继电器决定。以 FX 系列为例,写入 M82xx 来改变计数方向。例如,若使用 C251 计数器,置位 M8251 可将其设为减计数模式。若需要保持加计数,则复位 M8251。同时,检查 D8140 寄存器,它存储了当前的高速计数值。注意,直接访问高速计数器的数据寄存器有时会有延迟,建议在中断程序中读取或使用 DHSCS 指令进行精准比较。
环形计数逻辑设计
核心在于处理“溢出”和“回绕”。当计数值超过物理行程的最大值时,不能直接报错停机,而应根据工艺要求跳转到行程的最小值。反之亦然。这涉及逻辑判断而非单纯的硬件特性。
逻辑流程图
下图展示了环形计数的决策路径:
计算公式
为了将脉冲数转换为实际物理位置,需应用以下换算关系:
设 $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 的梯形图程序段中完成,或者通过数学指令 DIV 和 ADD 实现。
程序编写实操步骤
使用 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 指令的目标值是否为常数 |
| 周期性丢脉冲 | 扫描周期过长 | 缩短 主程序扫描周期,使用中断方式 |
| 复位后数值不跳变 | 自锁未解除 | 清除 输出继电器状态,防止自保持 |
| 高速计数不稳定 | 干扰过大 | 加装 屏蔽线,良好接地,远离变频器 |
如果上述措施无效,尝试更换低速模式测试(降低频率),以区分是硬件噪声问题还是逻辑处理瓶颈。确保电源线与控制线分开走线槽,避免电磁感应引入误差信号。对于长距离传输,强烈建议使用差分信号的电缆或光耦隔离器。

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