PLC与扫码器USB接口的通信配置
1. 硬件准备与接口确认
确认 所使用的 PLC 型号是否支持 USB 主机功能或 USB 虚拟串口通信。许多传统工业 PLC 的 USB 口仅用于编程和调试,不支持直接连接外设读取数据。检查 扫码器的说明书,确认其 USB 接口支持的工作模式,通常包括“键盘仿真模式”、“RS232 模拟模式”和"USB 虚拟串口模式”。对于自动化产线,必须选择“USB 虚拟串口模式”,因为该模式允许程序直接读取原始数据流,而非模拟键盘输入导致的数据混杂。
准备 以下工具和设备:
- 支持 USB 主机功能的可编程控制器(如配备 USB 扩展口的型号)。
- 可配置为 USB CDC(Communication Device Class)协议的条码扫描器。
- 标准的 USB Type-A 数据线。
- 用于修改扫码器参数的配置头或蓝牙适配模块(如果扫码器支持无线配置)。
- 安装了扫码器配置软件的计算机。
2. 扫码器参数初始化配置
在连接 PLC 之前,必须先在电脑上完成扫码器的底层协议设置。直接连接而未配置的扫码器可能默认为键盘模式,这将导致 PLC 无法解析数据。
安装 官方提供的扫码器配置工具。以常见的斑马(Zebra)或霍尼韦尔(Honeywell)为例,运行 配置软件并连接 电脑 USB 接口识别设备。
进入 串口通信参数设置菜单。找到 Protocol 或 Interface Mode 选项,修改 为 USB Virtual COM 或 CDC Serial。此设置至关重要,它将使系统识别出一个新的 COM 端口号,而不是仅仅作为输入设备。
设定 传输波特率与数据格式。PLC 与扫码器之间需要约定一致的语言规则。推荐 使用 9600 或 115200 波特率,数据位设为 8,停止位设为 1,校验位设为 None。以下是关键参数的对照表:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| 工作模式 | USB Virtual COM | 模拟串口以便 PLC 读取 |
| 波特率 | 9600 / 115200 | 必须与 PLC 接收端匹配 |
| 数据位 | 8 bits | 标准异步通信配置 |
| 校验位 | None (无) | 减少传输干扰 |
| 后缀符 | CR LF | 标记数据结束位置 |
保存 配置并扫描 一个测试条码验证。此时电脑端的“设备管理器”中应新增一个“ Ports (COM & LPT)"下的新 COM 口,例如 COM3。记录 该端口号,后续 PLC 程序中需调用此地址。
3. 驱动程序与端口映射
部分扫码器内置了专用芯片,操作系统可能需要手动加载驱动才能将其识别为标准串口设备。
打开 操作系统的“设备管理器”。插入 已配置好的扫码器到控制柜的 USB 接口。观察设备列表变化,若出现黄色感叹号,安装 对应的 CDC 驱动包。
锁定 COM 端口编号。Windows 系统可能会在不同次插入时分配不同的端口号(如从 COM3 变为 COM4),这会导致 PLC 程序报错。右键点击 对应的 COM 端口属性,进入“端口设置”的高级选项卡。
修改 COM 端口号设置为固定值。确保该数值不被其他设备占用,建议设置为 COM10 以上的大数值以避免冲突。应用 更改后拔掉再重插扫码器,确认 COM 号保持一致。
4. PLC 通讯程序编写逻辑
根据具体 PLC 品牌,调用串口库指令进行数据接收。这里以通用的串行通信逻辑为例,说明如何在梯形图或结构化文本中处理扫码数据。
定义 数据存储区域。需要创建字节数组来暂存接收到的字符。指定 长度为 50 字节的缓冲区,足够存储绝大多数条码信息(含前后缀)。
启用 串口接收中断。不要使用轮询方式读取,那样会占用 CPU 资源并可能导致数据丢失。配置 通讯指令触发条件为“收到数据”中断信号。
处理 前缀与后缀。扫码器通常会发出一个回车换行符(CR LF)表示条码结束。PLC 程序需要判断这个特定字符。若读到 0x0D (CR),则视为一帧数据结束。
$$ \text{Data\_End} = \text{Buffer}[i] == 0x0D $$
当检测到结束符时,执行 字符串清理操作。将前导的空格或无效字符剔除,并将有效条码字符串存入固定的寄存器(如 MW100 至 MW120)。
示例代码片段 (ST 语言风格):
IF Comm_Status = 'RECEIVE_COMPLETE' THEN
String_Length := Get_Byte_Count();
IF String_Length < Max_Buffer THEN
MOVE_BUFFER(Input_Buf, Output_String);
Comm_Flag := TRUE; // 标记有新数据
END_IF;
END_IF;
5. 联调与故障排查
完成软件编写后,进入 现场联机测试阶段。首先断开 PLC 与工控机的网络,防止干扰,单独验证 USB 链路稳定性。
观察 监控变量中的接收状态位。正常工作时,每当一次扫码动作发生,接收标志位应从 FALSE 跳变至 TRUE,随后自动复位。若标志位一直不亮,检查 扫码器指示灯是否为绿色常亮或闪烁,排除物理连接松动。
分析 乱码问题。如果 PLC 收到的数据呈现为乱码(如不可见符号),核对 上位机串口助手看到的十六进制数据。重点比对 PLC 接收端设定的波特率与扫码器实际发送波特率是否完全一致。常见错误是设置了 9600 但扫码器仍停留在 115200。
排除 数据截断。如果发现长条码被切断或遗漏,增加 PLC 缓冲区大小。USB 传输存在微小延迟,过小的缓冲区可能导致高频率连续扫码时丢包。建议缓冲区预留 1.5 倍于最大预期长度。
解决 重复读取。某些配置下,一次扫码可能触发多次中断。在 PLC 逻辑中添加自锁回路或使用 上升沿检测 指令,确保每个数据包只处理一次。
6. 数据安全与异常处理机制
在自动化系统中,不仅要能读取数据,还要确保 数据的完整性与流程的正确性。
添加 校验和计算。虽然现代扫码器自带校验,但在写入数据库前,PLC 应再次比对 CRC 校验值。编写 算法遍历读取的字节数组,计算累加和并与末尾附加的校验字节比对。
建立 超时报警。若 Comm_Timeout 超过预设值(如 500ms)仍未收到结束符,判定 为传输错误或扫码失败,点亮 蜂鸣器并停止 流水线以防误判。
记录 日志文件。通过以太网或 SD 卡模块,保存 每次成功的条码数据及时间戳。这对于后续的质量追溯至关重要。
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无法识别 USB 设备 | 驱动未安装 | 安装 CDC 驱动程序 |
| 读取为空数据 | 端口号错误 | 核对设备管理器 COM 号 |
| 频繁断连 | 供电不足 | 更换带独立供电的 USB Hub |
| 数据乱码 | 波特率不匹配 | 统一双方波特率设置 |
7. 扩展配置与高级功能
对于复杂的应用场景,可以进一步开启 批量上传或过滤功能。
筛选 无效条码。有些产品包装上可能有多个条码。利用扫码器的内部编辑功能,设置 正则表达式规则,仅当包含特定前缀(如 SN:)时才发送给 PLC。这样可以大幅减少 PLC 程序的过滤压力。
切换 触发模式。将扫码器设置为“持续扫描模式”还是“按下触发模式”。在自动化传送带上,推荐 使用“光感应触发”,即物体挡住光束时自动唤醒,避免空扫浪费资源。
集成 数据库查询。PLC 获取条码后,可通过以太网请求上位机服务器查询库存信息。此时 USB 通信仅作为第一道数据采集入口,后续逻辑由更高层级系统处理。
8. 最终验收步骤
在完成所有配置与调试后,执行 标准化的验收流程以确保系统长期稳定运行。
模拟 高频扫码测试。使用快速扫描枪连续触发 100 次,验证 数据包是否全部正确录入且无遗漏。
压力 测试断电恢复。在传输过程中突然切断 电源,重新上电后检查 PLC 是否能自动重新识别 USB 设备并恢复通讯,无需人工干预。
归档 当前配置。将扫码器的配置文件备份到本地硬盘,并打印 出当前的端口号、波特率等关键参数贴于设备旁。一旦硬件更换,可直接导入配置,缩短停机时间。
确认 标签纸路径。确保扫码窗口前方无遮挡物,且光线充足。调整支架角度,使激光线垂直于条码表面,这是保证成功率的物理基础。

暂无评论,快来抢沙发吧!