工业设备数据采集方式全集 一、串口通信采集(近距离直连,老旧设备标配) 核心 :有线点对点/总线,物理串口直连
类型
说明
距离
速率
场景
RS232
点对点
15m
115.2Kbps
工控机直连
RS485
总线组网
1200m
10Mbps
工业主流,抗干扰
RS422
全双工高速
1200m
10Mbps
强抗干扰场景
TTL
板级通信
<1m
可变
嵌入式传感器/单片机
帧结构示例 :
1 2 3 4 ┌──────────┬──────────┬───────────┬──────────┐ │ 地址(1 B) │ 功能码(1 B)│ 数据(N B) │ CRC16 (2 B)│ └──────────┴──────────┴───────────┴──────────┘ Modbus RTU示例: 01 03 00 00 00 0 A C4 0 B
二、工业现场总线采集(PLC/仪表原生协议) 核心 :设备专用总线,工控底层直采
协议
说明
厂商
Modbus RTU/ASCII
全行业通用串口总线
通用
Profibus DP/PA
西门子系设备主流
西门子
CAN/CANopen
运动 control、机器人、车载工控
通用
CC-Link
三菱日系设备专用
三菱
DeviceNet
罗克韦尔AB系总线
AB
HART
4-20mA叠加数字信号
智能仪表
CAN帧结构 :
1 2 3 ┌───────────────────────────────────────────────────┐ │ SOF (1 b) │ ID (11 b/29 b) │ RTR │ IDE │ r0 │ DLC (4 b) │ Data (0 -8 B) │ CRC (15 b) │ 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 ┌───────────┬───────────┬───────────┬──────────┬──────┬──────────┬───────┐ │ 前导码(7 B)│ SFD (1 B) │ 目的MAC (6 B)│源MAC (6 B) │类型 │ 数据 │FCS (4 B)│ │ │ │ │ │(2 B) │(46 -1500 B)│ │ └───────────┴───────────┴───────────┴──────────┴──────┴──────────┴───────┘ 类型字段: - 0 x0800: IPv4 - 0 x0806: ARP - 0 x86DD: IPv6 - 0 x8892: Profinet - 0 x88A4: EtherCAT - 0 x88CC: 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 │ 1B │ 1B │ N B │ CS │ 16H │ └──────┴──────┴──────────┴──────────┴──────────┴──────┴──────┘
八、旁路/离线补充采集(兜底方案)
方式
说明
场景
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 : - 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 - 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 (水气热表)
十二、异常处理与容错 12.1 串口异常
异常
原因
处理
帧错误
波特率不匹配
校验配置
校验错误
线路干扰
重发机制
超时
设备无响应/断线
自动重连
缓冲区溢出
数据过快
流控制
12.2 网络异常 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 const reconnect = ( ) => { const delay = Math .min (1000 * Math .pow (2 , retryCount), 30000 ) setTimeout (() => client.connect (), delay) }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 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 }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 const BUFFER_SIZE = 4096 const POOL_SIZE = 10 const MAX_CONCURRENT = 50 const QUEUE_SIZE = 100
十五、工业落地最优组合
场景
方案
老旧串口设备
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统一架构规范