3. 数据采集技术选型:PLC数据采集、RFID数据采集、条码/二维码扫描、传感器数据采集、CNC/机器人数据采集

数据采集技术选型,说白了就是给MES系统装「眼睛」和「耳朵」。

你想想看,MES再聪明,没有实时数据也是白搭。我做了十几年项目,见过太多「数据孤岛」的惨案——设备在跑,系统在等,中间隔着一道墙。

今天咱们就把五种主流采集技术掰开揉碎讲清楚。每种技术都有它的脾气,选对了事半功倍,选错了...嗯,后面全是坑。

核心原则:没有最好的技术,只有最合适的场景。选型前先问三个问题——数据实时性要求多高?现场环境多恶劣?预算有多少?

数据采集技术选型全景图 MES数据采集 PLC数据采集 OPC UA / Modbus TCP RFID数据采集 UHF / HF / LF 条码/二维码 1D / 2D / DPM 传感器数据采集 4-20mA / IO-Link CNC/机器人 MTConnect / FOCAS 实时性:★★★★★ 实时性:★★★★ 实时性:★★★ 实时性:★★★★★ 实时性:★★★★ 成本:低 成本:中高 成本:低 成本:中 成本:高 适用:产线设备 适用:物流跟踪 适用:物料追溯 适用:环境监测 适用:加工中心

3.1 PLC数据采集

PLC是工厂里最「老实」的设备。它不停地在跑逻辑,数据就在寄存器里躺着。我个人的习惯是,只要设备有PLC接口,优先走PLC采集。

主流协议对比:

协议 传输方式 实时性 典型场景
OPC UA 以太网 高(<10ms) 跨平台、跨厂商集成
Modbus TCP 以太网 中(10-50ms) 中小型设备、成本敏感
Profinet 以太网 极高(<1ms) 西门子生态、高速产线
EtherNet/IP 以太网 高(<5ms) 罗克韦尔、AB PLC

我的经验:OPC UA是未来的方向。它自带安全加密,还支持信息模型。我在一个汽车零部件项目里,用OPC UA同时接了西门子和三菱的PLC,省了不少集成时间。

代码示例:Modbus TCP 读取PLC寄存器

// 使用 libmodbus 库读取 PLC 保持寄存器
#include <modbus/modbus.h>

int main() {
    modbus_t *ctx;
    uint16_t tab_reg[32];
    
    // 连接 PLC(IP: 192.168.1.100, 端口: 502)
    ctx = modbus_new_tcp("192.168.1.100", 502);
    modbus_connect(ctx);
    
    // 读取从地址0开始的10个寄存器
    int rc = modbus_read_registers(ctx, 0, 10, tab_reg);
    if (rc == -1) {
        fprintf(stderr, "读取失败: %s\n", modbus_strerror(errno));
    }
    
    // 处理数据...
    modbus_close(ctx);
    modbus_free(ctx);
    return 0;
}

注意:PLC采集最怕「轮询风暴」。我曾经见过一个项目,上位机每10ms轮询一次所有寄存器,结果PLC的CPU占用率飙到90%,产线直接停摆。建议轮询间隔不低于100ms,或者用订阅模式。

3.2 RFID数据采集

RFID这东西,说白了就是「无线标签」。它不需要像条码那样对准扫描,只要进入读写器范围就能识别。我在物流仓储项目里用得最多。

频段选型指南:

  • 低频(LF, 125kHz):读取距离近(<10cm),不怕金属干扰。适合刀具管理、工装夹具识别。
  • 高频(HF, 13.56MHz):读取距离10-30cm,支持防碰撞。适合托盘跟踪、工单绑定。
  • 超高频(UHF, 860-960MHz):读取距离可达10米,批量读取能力强。适合仓库出入库、整车追踪。

避坑指南:我曾经在一个金属加工车间部署UHF RFID,结果标签贴在金属托盘上完全读不到。后来换成抗金属标签,成本翻了一倍。所以,选型前一定要做现场测试。

RFID数据采集流程:

// RFID 读写器数据采集伪代码
function collectRFIDData(readerIP, antennaPort) {
    // 1. 连接读写器
    reader = connectToReader(readerIP, 5084); // 常用端口
    
    // 2. 配置天线功率(单位:dBm)
    reader.setAntennaPower(antennaPort, 30); // 30dBm ≈ 1W
    
    // 3. 开始盘点
    tags = reader.inventory(antennaPort, duration=2000); // 2秒盘点
    
    // 4. 解析标签数据
    for each tag in tags {
        epc = tag.getEPC();        // 96位或128位EPC码
        rssi = tag.getRSSI();      // 信号强度
        timestamp = getCurrentTime();
        
        // 5. 写入MES数据库
        insertToMES(epc, rssi, timestamp);
    }
}

3.3 条码/二维码扫描

条码和二维码,是MES系统里最「亲民」的数据采集方式。成本低、部署快,工人培训十分钟就能上手。但别小看它,选错了扫描器,效率能差三倍。

扫描器类型对比:

类型 读取速度 适用场景 价格区间
激光扫描枪 中(100次/秒) 一维条码、近距离 ¥200-800
影像式扫描器 快(200次/秒) 二维码、破损条码 ¥500-2000
固定式读码器 极快(500次/秒) 流水线自动扫描 ¥2000-8000
工业级DPM读码器 快(300次/秒) 金属表面直接打码 ¥5000-15000

关键指标:条码扫描的「首次读取率」比「读取速度」更重要。首次读取率低于99%的扫描器,在高速产线上就是灾难——你想想看,每100个工件就有1个需要人工干预,产线效率直接崩了。

3.4 传感器数据采集

传感器是MES的「神经末梢」。温度、压力、振动、流量...这些物理量最终都要变成数字信号。我个人习惯把传感器采集分成两类:模拟量采集和数字量采集。

模拟量采集(4-20mA / 0-10V):

  • 4-20mA电流环:抗干扰能力强,适合远距离传输(>100米)
  • 0-10V电压信号:接线简单,适合短距离(<30米)
  • 需要模拟量输入模块(AI模块)进行AD转换

数字量采集(IO-Link / RS485):

  • IO-Link:点对点通信,能读取传感器参数和诊断信息
  • RS485/Modbus RTU:总线式采集,一根线挂几十个传感器
  • 支持热插拔,维护方便

我的经验:能走数字量就别走模拟量。IO-Link虽然贵一点,但能读到传感器的「健康状态」——比如镜头脏了、光源衰减了,系统提前报警,而不是等数据不准了才发现。

3.5 CNC/机器人数据采集

CNC和机器人,是工厂里最「金贵」的设备。它们的数据采集难度也最大——因为厂商都想建自己的生态壁垒。

主流CNC采集方案:

品牌 采集协议 可采集数据 难度
发那科(Fanuc) FOCAS2 / Ethernet 主轴负载、进给率、刀具寿命、报警代码
西门子(Siemens) Sinumerik / OPC UA NC程序状态、轴位置、加工时间 低(OPC UA)
三菱(Mitsubishi) EZSocket / SLMP 主轴转速、切削负载、程序号
海德汉(Heidenhain) DNC / RemoTools SDK 轴坐标、进给速度、刀具数据

机器人采集(以发那科机器人为例):

// 使用 FOCAS2 协议读取机器人状态
// 需要安装 FOCAS2 库

#include "Fwlib32.h"

int main() {
    unsigned short handle;
    short ret;
    
    // 连接机器人控制器(IP: 192.168.1.50, 端口: 8193)
    ret = cnc_allclibhndl3("192.168.1.50", 8193, 10, &handle);
    if (ret != EW_OK) {
        printf("连接失败,错误码: %d\n", ret);
        return -1;
    }
    
    // 读取主轴负载
    ODBSPEED speed_data;
    ret = cnc_acts(handle, &speed_data);
    if (ret == EW_OK) {
        printf("主轴转速: %d RPM\n", speed_data.data);
        printf("主轴负载: %d %%\n", speed_data.load);
    }
    
    // 读取报警信息
    ODBALARM alarm_data;
    short alarm_num;
    ret = cnc_alarm2(handle, 0, &alarm_num, &alarm_data);
    
    cnc_freehndl(handle);
    return 0;
}

重要提醒:CNC和机器人的采集,一定要走「只读」模式。我见过有人用写指令去修改CNC参数,结果把机床搞停了,产线停了4小时。记住:MES只管「看」,别「动手」。

3.6 选型决策矩阵

最后,我整理了一个选型决策矩阵。你拿着这个表去跟客户聊,基本不会跑偏。

场景 推荐技术 备选方案 一句话建议
产线设备状态监控 PLC采集(OPC UA) Modbus TCP 有PLC就走PLC,别绕弯子
物料/在制品跟踪 RFID(UHF) 二维码扫描 批量读取选RFID,单件追溯选条码
工位作业确认 条码/二维码扫描 RFID(HF) 成本敏感选条码,环境脏污选RFID
环境参数监测 传感器(IO-Link) 4-20mA模拟量 预算够就上IO-Link,省心
加工中心/机器人 CNC专用协议 OPC UA(如支持) 优先用厂商原生协议,稳定

总结一句话:数据采集没有银弹。PLC采集是「万金油」,RFID适合「批量场景」,条码是「低成本之王」,传感器是「细节担当」,CNC/机器人采集是「硬骨头但必须啃」。

选型时记住:先看设备支持什么,再看现场环境,最后看预算。顺序别搞反了。


专注资料整理