差分输出伺服反馈编码器与 PLC 的连接方案
差分输出(A+/A-、B+/B-、Z+/Z-)的伺服反馈编码器,核心优势是抗干扰能力强,适配高速 / 长距离信号传输,与 PLC 连接的关键是匹配 PLC 的高速计数模块 / 差分信号接口,按 “信号类型适配→硬件接线→参数配置→程序读取” 四步实现稳定通讯。以下是适配主流 PLC(三菱、西门子、罗克韦尔)的完整方案。
一、核心前提:接口与信号适配
1. 差分编码器信号定义(通用)
伺服反馈编码器的差分信号为互补型(一对信号线传输一个通道),核心引脚如下:
| 编码器引脚 | 信号类型 | 功能说明 |
|---|---|---|
| A+/A- | 差分输入 | 增量脉冲 A 相(正 / 反) |
| B+/B- | 差分输入 | 增量脉冲 B 相(正 / 反,判断方向) |
| Z+/Z- | 差分输入 | 零位脉冲(每转 1 个,复位位置) |
| Vcc/Vdd | 电源正 | 编码器供电(常见 DC5V,需匹配 PLC 模块) |
| GND | 电源负 | 电源地 / 信号地(必须共地) |
2. PLC 接口选型(关键)
普通 PLC 的 DI 口(晶体管 / 继电器)无法直接接收差分信号,需选专用模块:
| PLC 品牌 | 推荐模块(差分信号兼容) | 最高计数频率 | 适配场景 |
|---|---|---|---|
| 三菱 | FX5-40SSC-S、QD77MS/MH、FX3U-4HSX-ADP | 200kHz~1MHz | 伺服定位 / 高速计数 |
| 西门子 | S7-1200/1500 + SM1226/1526、ET200SP 高速计数模块 | 1MHz | 中高端工控场景 |
| 罗克韦尔 | CompactLogix + 1769-HSC、Micro800 + 2085-HSC | 500kHz | 北美标准工控 |
| 欧姆龙 | CJ2M-MD211、NX-HSC3200 | 800kHz | 小型 / 中型系统 |
二、硬件接线(通用规范 + 品牌示例)
1. 通用接线规则
2. 分品牌接线示例
示例 1:三菱 FX5U + FX5-40SSC-S 模块(最常用)
| 伺服编码器(差分) | FX5-40SSC-S 模块端子 | 信号说明 |
|---|---|---|
| A+ | CN1-1(CHA+) | A 相正 |
| A- | CN1-2(CHA-) | A 相负 |
| B+ | CN1-3(CHB+) | B 相正 |
| B- | CN1-4(CHB-) | B 相负 |
| Z+ | CN1-5(CHZ+) | Z 相正 |
| Z- | CN1-6(CHZ-) | Z 相负 |
| DC5V | CN1-10(VCC) | 电源正 |
| GND | CN1-11(GND) | 电源地 |
示例 2:西门子 S7-1200 + SM1226 模块
| 伺服编码器(差分) | SM1226 模块端子 | 信号说明 |
|---|---|---|
| A+ | I0.0+ | A 相正 |
| A- | I0.0- | A 相负 |
| B+ | I0.1+ | B 相正 |
| B- | I0.1- | B 相负 |
| Z+ | I0.2+ | Z 相正 |
| Z- | I0.2- | Z 相负 |
| DC5V | L+(模块 5V) | 电源正 |
| GND | M(模块地) | 电源地 |
3. 线缆选型要求
三、PLC 参数配置(核心步骤)
1. 三菱 FX5U + FX5-40SSC-S 配置(GX Works3)
2. 西门子 S7-1200 配置(TIA Portal)
四、PLC 程序读取编码器数据(示例)
1. 三菱 FX5U 梯形图(读取位置 / 速度)
ladder
// 1. 读取轴1当前位置值(32位)→D100/D101 LD M8000 DRDSP K1 K0 D100 // K1=轴1,K0=读取当前位置 // 2. 读取轴1当前速度(差分编码器高速计算)→D200 LD M8000 MOV K1, D0 MOV K210, D1 // 速度寄存器地址 BMOV D0, D200, K3 // 读取模块内置速度值 // 3. Z相清零触发 LD X0.0 // Z相信号输入 RST D100 // 位置值清零
2. 西门子 S7-1200 ST 语言(读取正交计数)
st
// 定义变量 VAR HSC1_CurrentValue: DINT; // 当前计数值 HSC1_Speed: REAL; // 计算速度 Encoder_PPR: INT := 2500; // 编码器线数 SampleTime: REAL := 0.1; // 采样周期100ms END_VAR // 读取高速计数器当前值 HSC1_CurrentValue := "HSC1".CV; // 计算转速(r/min)= (当前值-上一周期值)×60/(编码器线数×采样周期) HSC1_Speed := (REAL(HSC1_CurrentValue - "HSC1_LastValue") * 60) / (REAL(Encoder_PPR) * SampleTime); "HSC1_LastValue" := HSC1_CurrentValue; // 存储上一周期值
五、关键注意事项
1. 信号电平匹配
2. 方向判断
3. 抗干扰强化
六、常见故障排查
| 故障现象 | 可能原因 | 解决方法 |
|---|---|---|
| 计数为 0 / 不变化 | 1. 接线错(A+/A - 接反);2. 模块未启用差分模式;3. 编码器无供电 | 1. 核对接线表;2. 重新配置模块参数;3. 测量编码器 Vcc 电压(应为 5V) |
| 计数跳变 / 丢脉冲 | 1. 屏蔽层未接地;2. 滤波参数过大;3. 线缆靠近干扰源 | 1. 屏蔽层单端接地;2. 禁用低速滤波;3. 重新布线远离变频器 |
| 方向判断错误 | 1. A/B 相接反;2. 计数方向参数错误 | 1. 调换 A+/A - 与 B+/B - 接线;2. 参数中勾选 “反向计数” |
| Z 相清零无效 | 1. Z 相接线错;2. 未启用 Z 相触发功能 | 1. 核对 Z+/- 接线;2. 在模块参数中启用 “Z 相复位” |
七、总结
差分输出伺服编码器与 PLC 连接的核心是:
按此方案连接后,高速运行(如 3000r/min)时计数精度可达 ±1 脉冲,满足伺服定位、速度反馈等工业场景需求。

