工业设备数据采集方式

工业设备数据采集方式全集

一、串口通信采集(近距离直连,老旧设备标配)

核心:有线点对点/总线,物理串口直连

类型 说明 距离 速率 场景
RS232 点对点 15m 115.2Kbps 工控机直连
RS485 总线组网 1200m 10Mbps 工业主流,抗干扰
RS422 全双工高速 1200m 10Mbps 强抗干扰场景
TTL 板级通信 <1m 可变 嵌入式传感器/单片机

帧结构示例

1
2
3
4
┌──────────┬──────────┬───────────┬──────────┐
│ 地址(1B) │ 功能码(1B)│ 数据(N B) │ CRC16(2B)│
└──────────┴──────────┴───────────┴──────────┘
Modbus RTU示例: 01 03 00 00 00 0A C4 0B

二、工业现场总线采集(PLC/仪表原生协议)

核心:设备专用总线,工控底层直采

协议 说明 厂商
Modbus RTU/ASCII 全行业通用串口总线 通用
Profibus DP/PA 西门子系设备主流 西门子
CAN/CANopen 运动 control、机器人、车载工控 通用
CC-Link 三菱日系设备专用 三菱
DeviceNet 罗克韦尔AB系总线 AB
HART 4-20mA叠加数字信号 智能仪表

CAN帧结构

1
2
3
┌───────────────────────────────────────────────────┐
SOF(1b) │ ID(11b/29b) │ RTR │ IDE │ r0 │ DLC(4b) │ Data(0-8B) │ CRC(15b) │ ACK │ EOF │
└───────────────────────────────────────────────────┘

三、以太网 & 工业以太网采集

核心:网线组网,分主动通信采集和被动二层采集(MAC帧)

3.1 主动通信采集(与设备建立连接)

协议 说明 特点
Modbus TCP 以太网版Modbus 全网通用
Profinet 西门子工业以太网 实时性强
EtherNet/IP AB工业以太网 兼容标准TCP
EtherCAT 超高速实时 机器人/伺服专用
TCP/IP Socket 自定义协议 灵活通用

3.2 被动MAC帧采集(二层链路层,零侵入)

定义:抓取原始以太网MAC帧,不依赖IP/上层协议

实现方式

  • 交换机端口镜像(SPAN)
  • 网络TAP分路器
  • 网卡混杂模式

场景:旁路解析工业协议、设备监控、无配置零侵入采集

MAC帧结构

1
2
3
4
5
6
7
8
9
10
11
12
┌───────────┬───────────┬───────────┬──────────┬──────┬──────────┬───────┐
│ 前导码(7B)│ SFD(1B) │ 目的MAC(6B)│源MAC(6B) │类型 │ 数据 │FCS(4B)│
│ │ │ │ │(2B) │(46-1500B)│ │
└───────────┴───────────┴───────────┴──────────┴──────┴──────────┴───────┘

类型字段:
- 0x0800: IPv4
- 0x0806: ARP
- 0x86DD: IPv6
- 0x8892: Profinet
- 0x88A4: EtherCAT
- 0x88CC: LLDP

四、物联网协议采集(边云传输,含MQTT)

核心:设备/网关→云端,轻量跨网传输

协议 说明 特点
MQTT 工业IoT首选 发布订阅,断网续传
OPC UA/DA 工业跨品牌统一采集 标准化
HTTP/HTTPS 简易数据上报 REST API
CoAP 低功耗传感器专用 轻量UDP
AMQP 企业级高可靠消息 RabbitMQ

MQTT报文结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌────────────┬────────────┬─────────────┐
│ 固定头部 │ 可变头部 │ 有效载荷 │
│ (1-5 bytes)│ (可选) │ (可选) │
└────────────┴────────────┴─────────────┘

PUBLISH报文:
┌───────────────────────────────────────┐
│ Packet Type(3) │ Flags │ Remaining Len │
├───────────────────────────────────────┤
│ Topic Length │ Topic String │
├───────────────────────────────────────┤
│ Packet ID (QoS>0) │
├───────────────────────────────────────┤
│ Payload (应用数据) │
└───────────────────────────────────────┘

MQTT QoS级别

  • QoS 0: 最多一次(fire and forget)
  • QoS 1: 至少一次(需确认)
  • QoS 2: 恰好一次(四步握手)

五、无线通信采集(免布线,远程/移动设备)

核心:无物理线缆,适配复杂场景

技术 距离 速率 功耗 场景
LoRa/LoRaWAN 15km 50Kbps 极低 广域传感器组网
NB-IoT 全网覆盖 250Kbps 极低 运营商物联网
4G/5G 全网覆盖 100Mbps+ 户外远程设备
WiFi 100m 1Gbps 车间智能设备
BLE蓝牙 30m 2Mbps 近距离设备
ZigBee 100m 250Kbps 自组网传感器

六、硬件IO直连采集(无协议,底层信号采集)

核心:采集纯电信号,传感器/继电器通用

类型 信号 说明
AI模拟量 4-20mA, 0-10V 温度/压力/液位传感器
DI开关量 0/1电平 限位开关/继电器状态
AO模拟量 4-20mA, 0-10V 控制输出
DO开关量 0/1电平 设备启停控制

GPIO模式

1
2
3
4
5
6
7
8
9
10
输入模式:
- 浮空输入
- 上拉输入
- 下拉输入
- 模拟输入

输出模式:
- 推挽输出
- 开漏输出
- 复用功能

七、行业专用规约采集(垂直领域标配)

规约 行业 说明
IEC 60870-5-104 电力 远动通信规约,TCP传输
IEC 61850 电力 智能变电站,GOOSE/SV/MMS
DL/T 645-2007 能源 电表抄表规约
CJ/T 188-2018 市政 水表/气表/热表
BACnet 楼宇 智能建筑自动化
S7Comm 工控 西门子PLC专用

DL/T 645 帧结构

1
2
3
4
┌──────┬──────┬──────────┬──────────┬──────────┬──────┬──────┐
│ 起始 │ 地址 │ 控制码 │ 数据长度 │ 数据域 │ 校验 │ 结束 │
68H │ 6B │ 1B1B │ N B │ CS16H
└──────┴──────┴──────────┴──────────┴──────────┴──────┴──────┘

八、旁路/离线补充采集(兜底方案)

方式 说明 场景
USB采集 工控机直连采集卡 便携设备
本地存储导出 SD卡/U盘 离线设备补采
视觉采集 摄像头AI识别 设备计数/质检
边缘网关协议转换 多协议归一 485→MQTT转换

九、技术参数速查表

采集方式 典型速率 最大距离 抗干扰 适用场景
RS232 115.2Kbps 15m 工控机直连
RS485 10Mbps 1200m 总线组网
RS422 10Mbps 1200m 全双工高速
CAN 1Mbps 40m@1M/1km@50K 极强 运动 control
Modbus RTU 115.2Kbps 1200m 通用仪表
Modbus TCP 100Mbps+ 网线100m 以太网设备
EtherCAT 100Mbps 节点间100m 机器人伺服
LoRa 50Kbps 15km 广域传感器
NB-IoT 250Kbps 全网覆盖 低功耗上报

十、ElectroPeri(待开源)项目采集能力架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
┌─────────────────────────────────────────────────────────────┐
│ ElectroPeri 采集架构 │
├─────────────────────────────────────────────────────────────┤
│ P1 工业核心接口 │
│ ├── Serial (串口) → RS232/RS485/RS422/TTL │
│ ├── USB → USB设备枚举与通信 │
│ ├── HID → 扫码枪/RFID读写器/工控键盘 │
│ ├── Bluetooth → BLE传感器/蓝牙打印机 │
│ ├── Network (TCP/UDP) → Modbus TCP/自定义Socket │
│ └── Web APIs → Web Serial/WebUSB/WebHID/WebBT │
├─────────────────────────────────────────────────────────────┤
│ P2 系统能力 │
│ ├── System → 系统信息采集 │
│ ├── Storage → 存储设备状态 │
│ ├── Process → 进程监控 │
│ └── Media → 音视频设备 │
├─────────────────────────────────────────────────────────────┤
│ P4 嵌入式扩展 │
│ ├── GPIO → 开关量/中断采集 │
│ ├── I2C → 传感器总线 │
│ ├── SPI → 高速外设 │
│ └── 1-Wire → 温度传感器(DS18B20) │
├─────────────────────────────────────────────────────────────┤
│ 工具箱协议支持 │
│ ├── MQTT → 发布订阅IoT协议 │
│ ├── WebSocket → 实时双向通信 │
│ └── HTTP Request → REST API采集 │
└─────────────────────────────────────────────────────────────┘

十一、待扩展采集能力

11.1 MAC帧采集(二层链路层)

实现方案:libpcap/npcap + Node.js绑定

1
2
3
4
5
6
7
8
9
// 技术栈
- Windows: Npcap (https://npcap.com)
- Linux: libpcap
- Node.js: cap / node-pcap

// 核心能力
- 原始以太网帧捕获
- 工业协议解析(Profinet/EtherCAT
- 零侵入旁路监控

11.2 Modbus协议栈

1
2
3
4
5
6
7
8
9
10
11
12
13
// 建议库
- modbus-serial (npm) - RTU over Serial/TCP
- jsmodbus - 纯JS实现

// 功能码支持
- 01: 读线圈 (Read Coils)
- 02: 读离散输入 (Read Discrete Inputs)
- 03: 读保持寄存器 (Read Holding Registers)
- 04: 读输入寄存器 (Read Input Registers)
- 05: 写单线圈 (Write Single Coil)
- 06: 写单寄存器 (Write Single Register)
- 15: 写多线圈 (Write Multiple Coils)
- 16: 写多寄存器 (Write Multiple Registers)

11.3 CAN总线

1
2
3
4
5
6
7
8
9
10
// 场景:机器人、AGV、车载工控

// 硬件接口
- USB-CAN适配器
- SocketCAN (Linux原生)

// 协议
- CAN 2.0A/B
- CANopen
- J1939 (商用车)

11.4 OPC UA客户端

1
2
3
4
5
6
7
8
// 建议库
- node-opcua (npm)

// 能力
- 节点浏览
- 订阅监控
- 方法调用
- 历史数据读取

11.5 行业规约

1
2
3
4
5
6
7
8
9
// 电力
- IEC 60870-5-104
- IEC 61850 (GOOSE/SV/MMS)

// 能源计量
- DL/T 645-2007 (电表)
- CJ/T 188-2018 (水气热表)

// 实现:字节流解析 + CRC校验

十二、异常处理与容错

12.1 串口异常

异常 原因 处理
帧错误 波特率不匹配 校验配置
校验错误 线路干扰 重发机制
超时 设备无响应/断线 自动重连
缓冲区溢出 数据过快 流控制

12.2 网络异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// TCP断线重连(指数退避)
const reconnect = () => {
const delay = Math.min(1000 * Math.pow(2, retryCount), 30000)
setTimeout(() => client.connect(), delay)
}

// MQTT遗嘱消息
const will = {
topic: 'device/status',
payload: JSON.stringify({ status: 'offline' }),
qos: 1,
retain: true
}

// 心跳检测
setInterval(() => {
if (!lastHeartbeatTime || Date.now() - lastHeartbeatTime > timeout) {
reconnect()
}
}, heartbeatInterval)

12.3 数据校验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// CRC16校验
const crc16 = (buffer: Buffer): number => {
let crc = 0xFFFF
for (let i = 0; i < buffer.length; i++) {
crc ^= buffer[i]
for (let j = 0; j < 8; j++) {
crc = crc & 0x0001 ? (crc >> 1) ^ 0xA001 : crc >> 1
}
}
return crc
}

// LRC校验
const lrc = (buffer: Buffer): number => {
let sum = 0
for (let i = 0; i < buffer.length; i++) {
sum += buffer[i]
}
return ((~sum + 1) & 0xFF)
}

十三、安全加固

层面 措施 说明
传输加密 TLS/SSL MQTTS, HTTPS
认证 用户名密码/证书 双向认证
访问控制 白名单IP 防火墙隔离
数据安全 敏感数据加密 AES-256
审计日志 操作记录 异常告警
固件安全 签名验证 防篡改

十四、性能优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 1. 缓冲区管理
const BUFFER_SIZE = 4096 // 串口缓冲
const POOL_SIZE = 10 // 连接池

// 2. 并发控制
const MAX_CONCURRENT = 50 // 最大并发采集
const QUEUE_SIZE = 100 // 任务队列

// 3. 数据压缩
// 上报数据gzip压缩,减少带宽

// 4. 边缘计算
// 本地预处理,减少云端压力

// 5. 批量读取
// 合并多个寄存器读取请求

// 6. 缓存策略
// 静态数据缓存,减少重复请求

十五、工业落地最优组合

场景 方案
老旧串口设备 RS485(Modbus RTU) + 网关 + MQTT
以太网产线 Modbus TCP 主动采集 + MAC帧旁路监控
零侵入不改配置 MAC帧采集(交换机镜像)全网被动解析
无线传感器 LoRa/NB-IoT + MQTT上云
PLC集中采集 OPC UA 统一接口
楼宇自控 BACnet + 边缘网关

十六、核心归类速查

需求 归类
串口 第一类:串口通信采集
MQTT 第四类:物联网协议采集
MAC帧采集 第三类 3.2:以太网被动二层采集
Modbus 第二类(RTU) / 第三类(TCP)
CAN 第二类:工业现场总线
GPIO 第六类:硬件IO直连采集
OPC UA 第四类:物联网协议采集
LoRa/NB-IoT 第五类:无线通信采集

十七、参考标准

标准号 名称
GB/T 19582 Modbus协议规范
IEC 61158 工业通信网络现场总线
IEC 61784 工业网络行规
IEEE 802.3 以太网标准
ISO 11898 CAN总线标准
OASIS MQTT MQTT协议规范
OPC UA Spec OPC统一架构规范

工业设备数据采集方式
https://cszy.top/20260415-工业设备数据采集方式/
作者
csorz
发布于
2026年4月15日
许可协议