三菱 QD77 模块读取编码器速度的完整实现方案
三菱 QD77 系列(QD77MS/QD77MH)是定位专用模块,支持通过编码器(增量 / 绝对)采集位置的同时,实时计算并读取转速,核心分为 “模块参数配置”“速度计算逻辑”“PLC 程序读取” 三步,以下是适配工业场景的详细操作指南。
一、核心前提:硬件与参数基础
1. 硬件适配
| 组件 | 要求说明 |
|---|---|
| QD77 模块 | QD77MS(最多 16 轴)/QD77MH(最多 4 轴),支持增量编码器(A/B 相)、绝对编码器 |
| 编码器 | 增量型:A/B/Z 相(推荐线数 1000P/R 以上);绝对型:SSI / 串行通讯型 |
| 接线 | 编码器信号接入模块的 CN2 端子(A/B 相→CH1/CH2,电源→DC5V/DC12V,需匹配编码器供电) |
| PLC 主机 | Q 系列 CPU(Q03UDV/Q04UDV 等),需与 QD77 模块通过 CC-link IE 或背板总线通讯 |
2. 关键参数定义
二、第一步:QD77 模块参数配置(GX Works2/GX Works3)
参数配置是读取速度的核心前提,需通过 GX Works 软件对模块进行初始化设置:
1. 模块基本配置
2. 速度计算参数配置
三、第二步:速度计算原理与公式
QD77 模块读取速度的核心是 “通过单位时间内的脉冲数计算转速”,分两种场景:
1. 读取模块内置速度值(推荐,无需手动计算)
QD77 模块自带 “速度监视寄存器”,可直接读取已换算的转速值,公式由模块自动完成:示例:编码器 1000P/R,采样周期 0.1s(100ms),采样脉冲数 = 100 → 转速 = (100×60)/(1000×0.1)=60 r/min。
2. 手动计算(无内置寄存器时)
若需自定义计算逻辑,PLC 读取模块的 “当前位置值”,通过相邻采样周期的位置差计算:
四、第三步:PLC 程序读取速度(GX Works 梯形图 / ST 语言)
QD77 模块的速度值存储在模块专用缓冲寄存器(BMOV) 或CPU 共享数据区(SWnDn),以下是两种读取方式:
方式 1:读取模块内置速度寄存器(最简)
QD77MS/MH 的速度值默认存储在模块的固定缓冲寄存器(BR),以 1 轴为例:
| 模块 BR 地址 | 含义 | 数据类型 | 单位 |
|---|---|---|---|
| BR200 | 轴 1 当前速度(带符号) | 32 位整数 | pulse/s |
| BR210 | 轴 1 当前转速(已换算) | 32 位整数 | 0.1 r/min |
梯形图程序(读取轴 1 转速,换算为 r/min)
ladder
// 1. 读取模块BR210的转速值(0.1 r/min)到PLC寄存器D100 LD M8000 MOV K3, D0 // 模块插槽号(Slot3) MOV K210, D1 // 模块BR地址(210) MOV K1, D2 // 读取字数(32位=2字,此处设1表示读取低字,或设2读取双字) BMOV D0, D100, K3 // 触发模块数据读取(QD77专用BMOV指令) // 2. 换算为实际转速(r/min):D100×0.1 → D102(浮点数) LD M8000 MOV D100, D101 DIVR D101, 10.0, D102
方式 2:手动计算速度(自定义采样周期)
若需更灵活的采样周期,读取位置值后手动计算,步骤如下:
1. 读取当前位置值
ladder
// 读取轴1当前位置(BR100,32位)到D200/D201 LD M8000 MOV K3, D0 MOV K100, D1 MOV K2, D2 BMOV D0, D200, K3
2. 计算位置差(采样周期 100ms,T37 计时)
ladder
// 采样周期触发(100ms) LD M8000 TON T37, K10 // 100ms计时 // 计时到,计算位置差 LD T37 MOV D200, D210 // 上一周期位置→D210 MOV D200-D210, D220 // 位置差→D220(脉冲数) RST T37 // 复位定时器
3. 换算为转速(r/min)
ladder
// 公式:转速 = (D220×60)/(编码器线数×0.1) LD M8000 MOV D220, D230 MULR D230, 60.0, D232 DIVR D232, (1000×0.1), D234 // 编码器线数=1000,采样周期=0.1s // D234即为最终转速(r/min)
方式 3:ST 语言程序(更简洁,适配 Q 系列高端 CPU)
st
// 定义变量 VAR ModuleSlot: INT := 3; // 模块插槽号 SpeedBR: INT := 210; // 速度寄存器地址 RawSpeed: DINT := 0; // 原始速度值(0.1 r/min) ActualSpeed: REAL := 0.0; // 实际转速(r/min) END_VAR // 读取模块速度值 BMOV(Src:=ModuleSlot, Dest:=RawSpeed, N:=2); // 读取32位速度值 // 换算为实际转速 ActualSpeed := REAL(RawSpeed) / 10.0;
五、关键配置与注意事项
1. 数据类型与单位匹配
2. 采样周期优化
3. 编码器方向与滤波
4. 故障排查
| 故障现象 | 可能原因 | 解决方法 |
|---|---|---|
| 速度值为 0 | 1. 编码器接线松动;2. 模块参数中编码器类型 / 线数设置错误;3. 采样周期为 0 | 1. 检查 A/B 相接线;2. 重新核对编码器参数;3. 配置有效采样周期 |
| 速度值波动过大 | 1. 采样周期过短;2. 编码器安装偏心;3. 未启用滤波 | 1. 增大采样周期;2. 调整编码器安装精度;3. 启用模块低通滤波 |
| 速度值与实际不符 | 1. 编码器线数设置错误;2. 单位换算公式错误 | 1. 核对编码器铭牌线数;2. 重新推导换算公式(重点检查采样周期单位) |
六、扩展应用:读取线速度
若需将转速转换为 “mm/s”(如输送带线速度),增加换算步骤:示例:滚轮直径 100mm,转速 60r/min → 线速度 = 60×3.14×100/60=314 mm/s。
PLC 程序实现:
ladder
LD M8000 MULR D234, 3.14159, D300 // 转速×π MULR D300, 100.0, D302 // ×滚轮直径 DIVR D302, 60.0, D304 // ÷60 → 线速度(mm/s)
总结
三菱 QD77 模块读取编码器速度的核心是:


