在工业自动化领域,扫码设备与PLC的稳定通讯一直是产线数据采集的关键环节。传统方案多采用串口直连方式,存在布线复杂、传输距离受限等问题。我们近期在某汽车零部件生产线实施的扫码系统,创新性地采用以太网通讯架构,通过串口转TCP模块实现扫码枪与西门子Smart 200 PLC的高效交互。
这套系统的核心需求可归纳为三点:
主控单元:
扫码设备:
通讯转换模块:
HMI终端:
code复制[扫码枪] ←RS232(3线制)→ [有人模块] ←以太网→ [PLC] ←MPI→ [触摸屏]
IP地址规划:
| 设备 | IP地址 | 子网掩码 | 端口号 |
|---|---|---|---|
| PLC | 192.168.1.10 | 255.255.255.0 | 2000 |
| 有人模块 | 192.168.1.20 | 255.255.255.0 | 2000 |
关键提示:务必设置PLC的IP为静态地址,避免DHCP分配导致通讯中断
通过GD4430配套配置工具设置以下参数:
接线规范:
| 扫码枪引脚 | 有人模块端子 | 线色 |
|---|---|---|
| 2(TX) | RX | 绿线 |
| 3(RX) | TX | 白线 |
| 5(GND) | GND | 黑线 |
常见错误:直连TX-TX/RX-RX会导致通讯失败,必须交叉连接
通过浏览器登录192.168.1.20进行配置:
TCP连接管理块(FB1):
stl复制NET_EXEC:
// 建立TCP连接参数表
MOVB 16#0A, VB2000 // 连接请求标志
MOVD 16#C0A80114, VB2001 // 目标IP(192.168.1.20)
MOVW 2000, VB2005 // 端口号
MOVB 1, VB2007 // 连接ID
"TCP_CONNECT"(REQ:=TRUE,
ID:=1,
INTERFACE:=ETH0,
CONNECT:=P#VB2000.0,
DONE=>M10.0,
BUSY=>M10.1,
ERROR=>M10.2,
STATUS:=MW12);
数据交换块(FB2):
stl复制RCV_CYCLE:
// 接收数据触发
"RCV"(EN:=TRUE,
R_ID:=1,
DATA:=P#VB1999.0,
LEN:=50,
DONE=>M20.0,
BUSY=>M20.1,
ERROR=>M20.2,
RCVD_LEN:=MW22);
// 数据有效性校验
LD SM0.0
LPS
AW= MW22, 0
JMP ERROR_HANDLE
LPP
LD SM0.0
LDB= VB1999, 16#0D // 检测结束符
MOVB 0, VB1999+1 // 清除非标准字符
MOVD &VB1999, &VB3000 // 有效数据转存
数据缓冲区管理:
异常处理机制:
实时数据显示页:
状态监控页:
| 指示灯 | 地址 | 颜色逻辑 |
|---|---|---|
| 通讯正常 | M10.0 | 绿色常亮 |
| 扫码就绪 | M0.0 | 蓝色闪烁 |
| 异常报警 | M20.2 | 红色闪烁+蜂鸣器 |
自动重连机制:
数据持久化:
| 现象 | 原因分析 | 解决方案 |
|---|---|---|
| 数据包不完整 | 有人模块缓存溢出 | 关闭数据缓存模式 |
| 偶尔出现乱码 | 电磁干扰 | 增加磁环+屏蔽线 |
| 触摸屏显示延迟 | 刷新周期设置过长 | 调整画面刷新率为200ms |
| PLC内存溢出 | 数据堆积未清理 | 增加自动清空缓冲区子程序 |
网络参数:
PLC扫描周期:
扫码枪配置:
安装规范:
故障排查流程:
mermaid复制graph TD
A[通讯中断] --> B{PLC指示灯状态}
B -->|RUN灯灭| C[检查PLC供电]
B -->|RUN灯亮| D[ping 有人模块IP]
D -->|不通| E[检查网线连接]
D -->|通| F[重启有人模块]
数据统计技巧:
这套系统经过半年实际运行验证,在满负荷工况下达到:
对于需要更高性能的场景,建议升级到支持PROFINET协议的扫码枪,可进一步提升响应速度至50ms以内。下次将分享如何在此架构上集成视觉检测功能,实现一维码+二维码的混合识别方案。