1. 威纶通与三菱PLC条码枪通信方案概述
在工业自动化场景中,条码识别系统与PLC的协同工作已成为产线追溯、物料管理的标配方案。我最近完成的一个项目正是基于威纶通HMI(MT8071iE型号)与三菱FX5U PLC的条码枪集成方案,通过USB接口直接连接霍尼韦尔1900GSR扫码枪,实现了扫码数据自动解析并写入PLC寄存器。这套方案的最大优势在于省去了传统RS232转接模块,硬件成本降低40%以上。
典型应用场景包括:
- 汽车零部件生产线的序列号追溯
- 电子装配工站的物料防错校验
- 包装产线的批次号自动录入
2. 硬件连接与接口配置
2.1 扫码枪硬件选型要点
选择USB接口的扫码枪时需特别注意:
- 必须支持HID键盘仿真模式(实测霍尼韦尔1900GSR、斑马DS2208等型号兼容性最佳)
- 扫描触发方式建议选用手动按键式(避免自动感应模式在工业环境误触发)
- 供电要求:USB接口需提供500mA以上电流(威纶通MT8000系列USB端口输出能力为900mA)
重要提示:部分国产扫码枪的HID协议不标准,会导致威纶通无法识别,建议采购前索取SDK测试
2.2 威纶通硬件接口配置
以MT8071iE为例的具体接线步骤:
- 使用扫码枪原厂USB线缆直接连接HMI的USB Type-B主机端口
- 在威纶通EasyBuilder Pro中启用USB HID设备支持:
- 进入[系统参数]-[外围设备]-勾选"启用USB键盘输入"
- 设置输入缓冲区为128字节(对应最长条码长度)
2.3 三菱PLC通信参数
FX5U的通信配置关键点:
plaintext复制通信协议:MC协议(3E帧)
站号设置:默认HMI为0号站,PLC为1号站
超时时间:建议设为3000ms(产线环境存在电磁干扰时需增大)
3. 威纶通脚本程序开发
3.1 条码数据接收处理
核心脚本(置于HMI的[OnBarcodeScan]事件):
vb复制Sub OnBarcodeScan(ByVal barcode As String)
' 去除回车换行符
Dim cleanCode = Replace(barcode, vbCr, "")
cleanCode = Replace(cleanCode, vbLf, "")
' 长度校验(假设条码标准长度13位)
If Len(cleanCode) <> 13 Then
SetData("LW100", 1) ' 错误标志位
Exit Sub
End If
' ASCII转十进制数值
Dim decValue As Long
For i = 1 To Len(cleanCode)
decValue = decValue * 100 + Asc(Mid(cleanCode, i, 1))
Next
' 写入PLC数据寄存器
SetData("D100", decValue \ 65536) ' 高16位
SetData("D101", decValue Mod 65536) ' 低16位
End Sub
3.2 数据校验与容错机制
实际项目中必须添加的防护措施:
- 前缀/后缀识别:通过InStr函数检查特定标识符(如GS1-128的FNC1字符)
- 校验和验证:对Code128等自带校验码的条码进行算法验证
- 超时重置:5秒未收到完整数据时清空缓冲区(防止半截数据)
4. 三菱PLC解码程序实现
4.1 数据接收处理(ST语言示例)
st复制// 在PLC程序中声明变量
VAR
barcodeHi : WORD := D100; // 条码高16位
barcodeLo : WORD := D101; // 条码低16位
fullCode : DWORD; // 合并后的完整数据
asciiArray : ARRAY[1..13] OF BYTE; // ASCII码存储
END_VAR
// 主处理逻辑
fullCode := DWORD_TO_UDINT(barcodeHi) * 65536 + barcodeLo;
FOR i := 1 TO 13 DO
asciiArray[i] := UDINT_TO_BYTE(fullCode MOD 100);
fullCode := fullCode / 100;
END_FOR;
4.2 常用功能封装
建议将以下功能做成FB块方便复用:
- 条码有效性检查(通过校验位验证)
- 数据比对功能(与预设标准值比较)
- 异常记录(通过PLC的SD卡存储错误日志)
5. 调试与故障排查实录
5.1 典型问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| HMI无法识别扫码枪 | USB驱动未启用 | 检查EasyBuilder的HID设备配置 |
| 数据截断 | 缓冲区大小不足 | 调整HMI的输入缓冲区至256字节 |
| PLC接收数据错乱 | 通信干扰 | 添加MC协议的BCC校验功能 |
| 特殊字符丢失 | 非ASCII字符处理不当 | 修改脚本采用HEX格式传输 |
5.2 通信延迟优化技巧
- 在威纶通脚本中添加数据就绪标志(LW90置1)
- PLC采用中断方式接收(使用FX5U的I/O中断功能)
- 关键数据区采用三菱的锁存寄存器(D1000-D1999)
6. 系统扩展与高级应用
6.1 多枪协同方案
通过USB Hub连接多个扫码枪时:
- 每个枪设置不同的前缀码(如#01、#02)
- 在HMI脚本中通过Left函数区分来源
- 分配不同的PLC数据存储区(D100-D199、D200-D299...)
6.2 与MES系统集成
进阶方案可通过三菱的SLMP协议:
- 将解析后的条码通过Socket通信上传至服务器
- 采用JSON格式封装数据(需PLC安装以太网模块)
- 添加时间戳和工位号等元数据
我在汽车线束项目中的实际应用表明,这套方案的单次扫码处理周期可控制在80ms以内(从扫描到PLC寄存器更新),完全满足节拍时间1s以上的产线需求。对于更高速度要求的场景,建议采用三菱的IQ-R系列PLC配合威纶通的cMT系列HMI,通过EtherCAT通信可将周期缩短至20ms级别。
