1. 项目背景与核心价值
三菱FX3U系列PLC和威纶通(Weinview)触摸屏在工业自动化领域堪称黄金搭档。作为从业十余年的电气工程师,我经手过数十个采用这种组合方案的项目,从简单的产线控制到复杂的智能制造系统都有涉及。这种组合之所以广受欢迎,关键在于FX3U的稳定性和威纶通触摸屏的友好人机界面形成了完美互补。
在实际工程中,很多新手工程师会遇到通讯配置困难、画面切换卡顿、数据采集不实时等问题。这个项目编程之旅就是要带大家避开这些坑,通过一个完整的物料分拣系统案例,展示从硬件选型到最终调试的全流程。不同于官方手册的标准化说明,我会重点分享那些"手册上不会写"的实战经验——比如如何用一条巧妙的指令同时解决触摸屏响应速度和PLC扫描周期的矛盾。
2. 硬件配置与通讯搭建
2.1 硬件选型要点
FX3U-48MT/ES-A是我们的主力PLC,48点配置足够应对大多数中小型项目。关键是要注意ES后缀代表的是基本单元,如果需要扩展模块,一定要核对电源容量。我曾遇到过一个项目因为加了4个扩展模块导致电源报警,最后不得不更换更大容量的电源模块。
威纶通这边推荐MT8071iE这款经典型号。选择时要注意:
- 屏幕尺寸与安装环境匹配(潮湿环境要选IP65防护等级)
- 通讯口数量要预留余量(至少保留一个备用口)
- 存储容量考虑历史数据存储需求
2.2 通讯配置实战
RS485通讯是最经济可靠的选择,接线时注意:
plaintext复制PLC侧 触摸屏侧
RDA —— S+
RDB —— S-
SG —— GND
重要提示:一定要在两端加上终端电阻(通常为120Ω),我曾因为忽略这点导致通讯时断时续,排查了整整两天。
通讯参数设置表格:
| 参数 | PLC设置 | 触摸屏设置 | 注意事项 |
|---|---|---|---|
| 波特率 | 19200 | 19200 | 必须完全一致 |
| 数据位 | 7 | 7 | 三菱默认是7位 |
| 停止位 | 1 | 1 | |
| 校验方式 | 偶校验 | 偶校验 | 建议用偶校验更稳定 |
3. PLC程序架构设计
3.1 标准化编程框架
采用模块化编程结构,每个功能块对应一个子程序:
- P0:主流程控制
- P1:报警处理
- P2:数据采集
- P3:通讯处理
关键技巧是使用D区寄存器作为全局变量,建议这样分配:
- D0-D99:触摸屏交互区
- D100-D199:设备状态区
- D200-D299:工艺参数区
3.2 特殊功能实现
物料分拣系统的核心是高速计数功能,FX3U的内置高速计数器(C235-C255)完全够用。这里分享一个光电传感器计数的经典程序:
ladder复制LD X0 // 光电传感器输入
OUT C235 // 触发高速计数器
MOV K100 D200 // 设定分拣数量
<= C235 D200 // 比较计数
OUT Y0 // 达到数量时触发分拣
实测发现:当计数频率超过10kHz时,建议在传感器信号线外加磁环,能有效防止误计数。
4. 触摸屏画面开发
4.1 画面层级设计
采用三级画面结构:
- 主监控画面(设备状态总览)
- 操作画面(手动控制区)
- 参数设置画面(工艺参数调整)
画面切换的黄金法则:每个画面控件数量不超过20个,响应时间控制在300ms以内。可以通过预加载机制实现——在登录时就预先加载二级画面到缓存。
4.2 数据绑定技巧
威纶通与FX3U的数据交互主要有两种方式:
- 直接地址绑定(适合实时数据)
- 设置方法:控件属性→地址→输入"D100"这样的PLC地址
- 脚本定时读取(适合大数据量)
vb复制Sub Timer1_Tick() Dim val As Integer val = ReadDevice("D200") Label1.Text = val.ToString() End Sub
实测对比:
- 直接绑定方式响应快(约50ms)但占用通讯资源
- 脚本方式可控制读取频率但延迟较大(约200ms)
5. 联合调试与故障排查
5.1 系统联调步骤
- 先单独测试PLC程序(用强制功能验证逻辑)
- 单独测试触摸屏基本操作
- 逐步开放通讯功能测试:
- 先测试位元件(如M0控制Y0)
- 再测试字元件(如D100数值显示)
- 最后测试批量数据(如配方下载)
5.2 典型故障处理表
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 触摸屏显示"通讯超时" | 1. 波特率设置不一致 | 检查两边通讯参数 |
| 2. 终端电阻未接 | 在末端设备加120Ω电阻 | |
| PLC数据不更新 | 1. 地址映射错误 | 核对触摸屏地址与PLC程序一致 |
| 2. 扫描周期过长 | 优化PLC程序结构 | |
| 画面切换卡顿 | 1. 画面元素过多 | 分页显示或简化画面 |
| 2. 历史数据存储过频 | 调整存储间隔为5-10秒 |
6. 性能优化进阶技巧
6.1 PLC程序优化
- 使用MOV指令批量传输数据比单个传送快3倍:
ladder复制MOVP K100 D0
MOVP K101 D1
→ 优化为:
BMOVP K100 D0 K2
- 定时器分配技巧:T0-T199是100ms定时器,T200-T255是10ms定时器,高速应用要优先使用后者。
6.2 触摸屏优化
-
图片加载优化:
- 将多个小图标合并成一张大图(雪碧图技术)
- 使用PNG-8格式比BMP节省50%空间
-
数据采集策略:
vb复制' 不好的做法:直接连续读取
For i = 0 To 99
data(i) = ReadDevice("D" & (100+i))
Next
' 优化做法:批量读取
Dim buf(99) As Integer
ReadDeviceBlock "D100", buf, 100
7. 项目实战:智能分拣系统
7.1 系统需求
实现功能:
- 通过光电传感器计数
- 触摸屏设定分拣数量
- 达到数量后触发气缸分拣
- 实时显示当前计数和状态
7.2 关键程序段
PLC部分:
ladder复制LD M8000 // 运行监控
MOV D100 D200 // 将设定值传送到比较区
>= C235 D200 // 计数比较
SET Y0 // 触发分拣
RST C235 // 复位计数器
触摸屏部分:
- 创建数值输入框绑定D100
- 创建数值显示框绑定C235
- 添加状态指示灯绑定Y0
7.3 调试记录
遇到的问题:分拣动作后计数器偶尔不能及时复位
解决方法:在气缸动作到位信号(X1)后加入10ms延时再复位计数器
ladder复制LD X1 // 气缸到位信号
OUT T200 K1 // 10ms定时器
LD T200
RST C235 // 延时复位
这个项目最让我有成就感的是最后实现的"一键调试"功能——在触摸屏上集成所有关键参数的快捷设置,包括计数补偿值、动作延时等,让现场调试时间从原来的2小时缩短到15分钟。这背后其实是用了一个巧妙的间接寻址技巧,把常用的20个参数集中存放在D500-D519,通过一个索引寄存器Z来快速定位。