在工业自动化控制系统中,人机界面(HMI)与可编程逻辑控制器(PLC)的通讯是最基础也是最关键的技术环节之一。这次我在一个设备改造项目中,遇到了一个典型的通讯需求:需要通过昆仑通态MCGS触摸屏监控和操作三菱FX3U PLC,同时还要保留PLC编程口与电脑的连接功能,以便工程师可以随时进行程序下载和在线监控。
这个需求看似简单,但在实际实施过程中有几个技术难点需要特别注意:
虽然本文重点讲解程序实现,但正确的硬件连接是通讯成功的基础。本项目使用的核心硬件包括:
重要提示:在选择485BD板时,务必确认与PLC型号完全匹配。FX3U系列有多个子型号,不同型号的扩展板可能不兼容。
正确的接线方式对485通讯至关重要。以下是推荐的连接方式:
code复制触摸屏(485+) ---- 485BD板(RDA)
触摸屏(485-) ---- 485BD板(RDB)
触摸屏(SG) ----- 485BD板(SG)
注意事项:485通讯必须使用双绞线,且最好带有屏蔽层。接线时注意极性,+对+,-对-。通讯距离超过50米时,建议增加终端电阻(通常120Ω)。
三菱FX3U PLC通过特殊寄存器设置485通讯参数。以下是核心参数配置代码:
ladder复制// 设置通讯参数
MOV K9600 D8120 // 波特率9600bps
MOV K0 D8121 // 站号设置为0(单机通讯)
MOV K1 D8129 // 超时时间100ms
SET M8122 // 启动发送标志
参数详解:
D8120:通讯波特率设置寄存器
D8121:站号设置寄存器
D8129:通讯超时设置
ladder复制// 数据发送处理
LD M8000 // 运行监控常开触点
MOV K100 D100 // 示例数据存入D100
LD M8122 // 发送标志
MOV D100 D1200 // 数据传送到发送缓冲区
关键点说明:
ladder复制// 数据接收处理
LD M8123 // 接收完成标志
MOV D1300 D200 // 接收数据转存
关键点说明:
打开MCGS组态软件,新建工程
在"设备窗口"中添加设备:
设备属性设置:
经验分享:MCGS软件中默认可能没有三菱FX系列的驱动,需要先安装对应的设备驱动包。安装后记得重启软件。
xml复制<object class="NumericEdit" name="温度设定值">
<property name="Value">!GetDeviceValue("FX3U_485", "D100")</property>
<event name="OnLostFocus">
!SetDeviceValue("FX3U_485", "D100", This.Value)
</event>
</object>
代码解析:
!GetDeviceValue函数用于从PLC读取数据
!SetDeviceValue函数用于向PLC写入数据
xml复制<object class="Lamp" name="运行指示灯">
<property name="ColorOn">#00FF00</property>
<property name="ColorOff">#808080</property>
<property name="State">
!GetDeviceValue("FX3U_485", "M0")
</property>
</object>
应用技巧:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯完全不通 | 接线错误 | 检查485+/-是否接反,SG线是否连接 |
| 通讯时断时续 | 干扰严重 | 使用屏蔽双绞线,确保屏蔽层单端接地 |
| 能收不能发 | 波特率不匹配 | 检查两端的波特率、校验方式设置 |
| 数据错误 | 站号冲突 | 检查站号设置,确保唯一性 |
| 触摸屏无响应 | 地址映射错误 | 核对PLC和触摸屏的寄存器地址 |
避坑指南:调试时建议先使用最简单的数据交换(如一个开关量和一个数值量),确认基本通讯正常后再扩展复杂功能。同时注意保存各个阶段的工程备份。
合理设置刷新周期:
数据分组读取:
使用心跳包机制:
分页设计:
动态加载:
缓存策略:
在实际项目中,这套方案已经稳定运行超过6个月,期间经历了夏季高温和高湿环境的考验。最大的收获是认识到485通讯的稳定性很大程度上取决于硬件连接的可靠性,因此在施工阶段就要特别重视接线质量。另外,建议在PLC程序中添加通讯状态监测逻辑,当通讯异常时能够自动切换到安全模式。