三菱FX3U PLC串口通讯实战:从RS/RS2指令到Modbus RTU读取编码器数据
三菱FX3U PLC串口通讯实战:从RS/RS2指令到Modbus RTU读取编码器数据
在工业自动化领域,PLC与外部设备的通讯是实现复杂控制系统的关键环节。三菱FX3U系列PLC凭借其稳定的性能和丰富的通讯功能,成为众多自动化工程师的首选。本文将聚焦FX3U PLC通过串口与Modbus RTU编码器的通讯实战,从硬件连接到软件编程,手把手带你完成绝对值编码器数据的读取。
1. 硬件连接与通讯基础
1.1 串口通讯硬件选择
FX3U PLC支持多种串口通讯方式,根据实际应用场景选择合适的硬件接口至关重要:
| 接口类型 | 最大距离 | 传输速率 | 连接方式 | 典型应用场景 |
|---|---|---|---|---|
| RS232 | 15米 | 20Kbps | 点对点 | PLC与HMI近距离通讯 |
| RS422 | 1200米 | 10Mbps | 1主多从 | 高速长距离通讯 |
| RS485 | 1200米 | 10Mbps | 多设备总线 | Modbus RTU设备联网 |
对于读取绝对值编码器的场景,RS485两线制是最常用的选择:
PLC端 编码器端 A+ ----------- A+ B- ----------- B-注意:RS485网络需要终端电阻匹配,通常在总线两端各接一个120Ω电阻
1.2 Modbus RTU协议基础
Modbus RTU是工业领域广泛应用的串行通讯协议,其数据帧结构如下:
[设备地址][功能码][数据][CRC校验]常用功能码示例:
- 03H:读取保持寄存器
- 06H:写入单个寄存器
- 10H:写入多个寄存器
2. FX3U串口参数配置
2.1 GX Works2中的通讯设置
在GX Works2中配置串口参数是通讯成功的第一步:
- 打开工程参数设置
- 选择"PLC参数"→"串行通讯设置"
- 根据编码器规格设置以下参数:
通讯协议:无协议通讯 数据长度:8位 奇偶校验:与编码器一致(通常为无校验) 停止位:1位 波特率:与编码器匹配(常见9600/19200/38400)提示:这些参数必须与编码器完全一致,否则无法建立通讯
2.2 特殊寄存器设置
FX3U通过特殊寄存器控制串口行为,关键寄存器如下:
| 寄存器 | 功能描述 | 典型值 |
|---|---|---|
| D8120 | 通讯格式设置 | H0096 (9600bps,8,N,1) |
| D8121 | 站号设置 | K1 (Modbus设备地址) |
| D8129 | 超时设置 | K100 (100ms超时) |
3. RS/RS2指令编程实战
3.1 RS指令基础应用
RS指令是FX3U进行串口通讯的核心指令,基本格式如下:
[RS D100 K8 D200 K10]参数说明:
- D100:发送数据起始地址
- K8:发送字节数
- D200:接收数据存储地址
- K10:接收缓冲区大小
典型应用场景:发送Modbus查询指令并接收响应
LD M8000 MOV H0103 D100 // 设备地址01,功能码03 MOV H0000 D101 // 起始地址高字节 MOV H0000 D102 // 起始地址低字节 MOV H0001 D103 // 寄存器数量高字节 MOV H0002 D104 // 寄存器数量低字节 RS D100 K8 D200 K203.2 RS2指令高级应用
RS2指令相比RS指令支持更大的数据量,适合读取多个寄存器:
[RS2 D100 K16 D200 K32]关键区别:
- 支持最大4096字节的收发
- 需要配合D8400特殊寄存器使用
- 更适合大数据量传输
4. 数据处理与故障排查
4.1 字节序处理技巧
工业设备常使用大端或小端字节序,FX3U提供了专用指令处理:
BTOW指令:将两个字节合并为一个字
[BTOW D10 D20 K2]将D10-D11合并到D20-D21
WTOB指令:将一个字拆分为两个字节
[WTOB D30 D40 K2]将D30-D31拆分到D40-D43
4.2 常见故障排查指南
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无响应 | 接线错误 | 检查A+/B-是否反接 |
| 数据错乱 | 波特率不匹配 | 确认双方波特率一致 |
| CRC错误 | 干扰严重 | 增加终端电阻,检查接地 |
| 部分数据丢失 | 超时设置过短 | 调整D8129超时值 |
调试技巧:
- 使用串口调试助手验证编码器响应
- 逐步增加通讯数据量测试稳定性
- 监控D8120-D8129寄存器状态
5. 完整编码器读取案例
5.1 硬件连接示意图
FX3U-CNV-BD板 │ ├── 120Ω终端电阻 │ └── RS485接线端子 A+ ──── 编码器A+ B- ──── 编码器B- FG ──── 屏蔽接地5.2 完整梯形图程序
// 初始化通讯参数 LD M8002 MOV H0096 D8120 // 9600,8,N,1 MOV K100 D8129 // 100ms超时 // 主程序循环 LD M8000 MOV H0103 D100 // 设备地址01,功能码03 MOV H0000 D101 // 起始地址高字节 MOV H0000 D102 // 起始地址低字节 MOV H0000 D103 // 寄存器数量高字节 MOV H0001 D104 // 寄存器数量低字节 RS D100 K8 D200 K20 // 数据处理 LD M8122 // 接收完成标志 BTOW D202 D300 K1 // 合并角度数据 MOV D300 D500 // 存储最终角度值 RST M8122 // 清除接收标志5.3 数据解析示例
假设收到以下Modbus响应帧:
01 03 02 12 34 CRC解析过程:
- D202 = H12 (高字节)
- D203 = H34 (低字节)
- 合并后D300 = H1234
- 转换为十进制:4660
- 根据编码器分辨率计算实际角度
在实际项目中,这种通讯方式已经成功应用于多个自动化生产线,特别是在需要精确位置反馈的旋转设备上。通过合理设置采样周期和数据滤波,可以获取稳定可靠的编码器数据。
