1. 项目概述与背景
在工业自动化控制系统中,PLC与触摸屏的通讯是最基础也是最关键的环节之一。最近我在一个设备改造项目中,成功实现了昆仑通态MCGS触摸屏与三菱FX3U PLC通过485BD扩展板的通讯方案,同时保留了PLC编程口与电脑的连接功能。这个方案特别适合那些既需要HMI操作又需要频繁调试PLC程序的场景。
这个案例的核心价值在于:
- 通过485总线实现了触摸屏与PLC的稳定通讯
- 编程口仍然可以连接电脑进行程序下载和在线监控
- 成本低廉,仅需一块485BD扩展板
- 通讯速率满足大多数工业场景需求
2. 硬件准备与连接
2.1 所需硬件清单
虽然本文重点讲解程序实现,但正确的硬件连接是基础。项目所需硬件包括:
- 三菱FX3U PLC主机(建议FX3U-32MT/ES-A以上型号)
- FX3U-485BD通讯扩展板(型号:FX3U-485BD)
- 昆仑通态触摸屏(推荐TPC7062KX)
- RS485通讯线(建议使用双绞屏蔽线)
- 编程电缆(USB-SC09或USB-FX)
2.2 硬件连接要点
-
485BD板安装:
- 关闭PLC电源
- 将485BD板插入PLC左侧的扩展槽
- 确保板卡完全插入并锁紧固定螺丝
-
接线规范:
- 触摸屏485+ → 485BD板的SDA端子
- 触摸屏485- → 485BD板的SDB端子
- 必须连接信号地(SG端子)
- 建议使用终端电阻(120Ω)匹配阻抗
注意:485通讯线必须采用双绞屏蔽线,屏蔽层单端接地。长距离通讯时(超过50米),建议增加485中继器。
- 编程口连接:
- 电脑通过USB-SC09电缆连接PLC的编程口
- 这个连接与485通讯互不干扰,可以同时工作
3. PLC端程序开发
3.1 通讯参数设置
三菱FX系列PLC通过特殊寄存器设置通讯参数。以下是关键寄存器配置:
ladder复制// 通讯参数设置
MOV K9600 D8120 // 波特率9600bps
MOV K0 D8121 // 站号设置为0(主站)
MOV K1 D8129 // 超时时间100ms
SET M8122 // 启动发送功能
寄存器说明:
- D8120:波特率设置
- K9600=9600bps, K19200=19200bps, K38400=38400bps
- D8121:站号设置(0-31)
- 单机通讯设为0即可
- D8129:超时时间(单位:100ms)
- K1=100ms, K2=200ms等
- M8122:发送请求标志
3.2 数据收发程序
数据发送示例:
ladder复制// 数据发送程序
LD M8000 // PLC运行常开触点
MOV K100 D100 // 示例数据存入D100
LD M8122 // 发送请求标志
MOV D100 D1200 // 数据传送到发送缓冲区
数据接收处理:
ladder复制// 数据接收程序
LD M8123 // 接收完成标志
MOV D1300 D200 // 接收数据转存到D200
RST M8123 // 清除接收标志
关键标志说明:
- M8123:接收完成标志(自动置位)
- D1200-D1299:发送数据缓冲区
- D1300-D1399:接收数据缓冲区
3.3 程序优化技巧
-
数据校验:
建议在数据包中加入校验和,提高通讯可靠性。例如:ladder复制// 计算校验和示例 LD M8000 ADD D100 D101 D102 // D100+D101存入D102 MOV D102 D1200 // 发送数据和校验值 -
错误处理:
ladder复制// 通讯超时处理 LD M8129 // 超时标志 OUT Y0 // 报警输出 RST M8122 // 停止发送 -
数据打包:
对于批量数据传输,可以使用MOV指令配合变址寄存器Z:ladder复制LD M8000 MOV K10 Z // 设置传输数量 MOV D100Z D1200Z // 批量传输数据
4. 触摸屏端配置
4.1 MCGS设备配置
- 在MCGS组态软件中,打开设备窗口
- 添加新设备 → 选择"三菱_FX系列编程口"
- 设置设备属性:
- 设备名称:FX3U_485(自定义)
- 通讯方式:RS485
- 波特率:9600(与PLC一致)
- 站号:0(与PLC一致)
- 数据位:7
- 停止位:1
- 校验方式:偶校验
4.2 数据交互实现
数值显示控件:
xml复制<NumericDisplay name="温度显示">
<Property name="Value">!GetDeviceValue("FX3U_485", "D100")</Property>
<Property name="Format">#0.0℃</Property>
</NumericDisplay>
按钮控制示例:
xml复制<Button name="启动按钮">
<Event name="OnClick">
!SetDeviceValue("FX3U_485", "M0", 1)
</Event>
</Button>
数据记录功能:
xml复制<DataLog name="温度记录">
<Property name="Source">!GetDeviceValue("FX3U_485", "D100")</Property>
<Property name="Interval">1000</Property> <!-- 1秒记录一次 -->
</DataLog>
4.3 界面设计建议
-
页面布局:
- 主页面显示关键参数(温度、压力等)
- 设置页面放置参数调整控件
- 历史数据页面显示趋势图
-
报警功能:
xml复制<Alarm name="温度过高"> <Condition>!GetDeviceValue("FX3U_485", "D100") > 100</Condition> <Action>PlaySound("alarm.wav")</Action> </Alarm> -
权限管理:
- 设置不同级别的操作权限
- 关键参数修改需要密码验证
5. 调试与问题排查
5.1 常见问题及解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时 | 波特率设置不一致 | 检查PLC和触摸屏的波特率设置 |
| 数据错误 | 校验方式不匹配 | 统一设置为偶校验或无校验 |
| 偶尔丢包 | 线路干扰 | 使用屏蔽线,确保良好接地 |
| 无法通讯 | 站号冲突 | 检查所有设备的站号设置 |
| 触摸屏无响应 | 设备地址错误 | 确认寄存器地址是否正确 |
5.2 调试步骤
-
硬件检查:
- 确认485BD板安装牢固
- 检查接线是否正确(A对A,B对B)
- 测量终端电阻(约120Ω)
-
PLC程序调试:
- 使用GX Works2的在线监控功能
- 观察M8122/M8123标志位状态
- 查看D1200-D1399缓冲区数据
-
触摸屏调试:
- 使用MCGS的模拟运行功能
- 查看通讯状态指示灯
- 启用调试日志记录
5.3 性能优化建议
-
通讯速率选择:
- 短距离(<50m):可使用38400bps
- 长距离:建议9600bps或19200bps
-
数据更新策略:
- 关键数据:实时更新(100-500ms)
- 次要数据:周期更新(1-5s)
- 历史数据:定时存储(1-10分钟)
-
网络负载控制:
- 避免同时读写大量数据
- 采用分时轮询机制
- 重要数据优先传输
6. 项目扩展与应用
6.1 多设备组网方案
通过485总线可以扩展连接多个设备:
- 设置不同的站号(D8121)
- 采用主从通讯模式
- 增加485中继器扩展距离
6.2 与上位机系统集成
-
通过OPC服务器:
- 安装MCGS OPC服务器
- 配置OPC项对应PLC寄存器
- 上位机通过OPC客户端访问数据
-
数据库存储:
xml复制<SQLQuery name="数据存储"> <Property name="ConnectionString">DSN=myDB;UID=user;PWD=pass;</Property> <Property name="CommandText"> INSERT INTO history VALUES(!GetDeviceValue("FX3U_485","D100"), NOW()) </Property> </SQLQuery>
6.3 安全防护措施
-
通讯加密:
- 在应用层实现简单加密算法
- 关键数据增加校验码
-
操作审计:
- 记录所有参数修改操作
- 保存操作员信息和时间戳
-
故障自恢复:
- 通讯中断自动重连
- 关键参数掉电保存
在实际项目中,这个方案已经稳定运行超过6个月,期间经历了夏季高温和冬季低温的考验,通讯稳定性令人满意。最大的收获是验证了485通讯在工业环境中的可靠性,同时也积累了丰富的调试经验。