3. 数据采集技术选型:PLC数据采集、RFID数据采集、条码/二维码扫描、传感器数据采集、CNC/机器人数据采集
数据采集技术选型,说白了就是给MES系统装「眼睛」和「耳朵」。
你想想看,MES再聪明,没有实时数据也是白搭。我做了十几年项目,见过太多「数据孤岛」的惨案——设备在跑,系统在等,中间隔着一道墙。
今天咱们就把五种主流采集技术掰开揉碎讲清楚。每种技术都有它的脾气,选对了事半功倍,选错了...嗯,后面全是坑。
核心原则:没有最好的技术,只有最合适的场景。选型前先问三个问题——数据实时性要求多高?现场环境多恶劣?预算有多少?
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/机器人采集是「硬骨头但必须啃」。
选型时记住:先看设备支持什么,再看现场环境,最后看预算。顺序别搞反了。