跳至正文

物联网工业采集场景|开源项目栈 + 落地架构

核心需求:PLC、仪表、变频器、传感器采集(Modbus、OPC UA、BACnet、Profinet 等),边缘本地预处理、断点续传、协议转换,上云 / 本地平台展示。

物联网

一、核心组件选型(优先级从高到低)

1. 边缘采集网关(现场侧,重中之重)

✅ Neuron(EMQ)【首选】

仓库:https://github.com/emqx/neuron

  • 支持协议:Modbus RTU/TCP、OPC UA Server/Client、BACnet、DL/T645、FINS (欧姆龙)、S7 (西门子)
  • 特性:轻量,ARM/x86 通用;原生把各类工业协议转为 MQTT;支持点位批量配置、数据订阅、定时采集、异常过滤;支持断点缓存。
  • 搭配:Neuron → EMQX MQTT 消息总线

✅ EdgeX Foundry(Linux 基金会)

仓库:https://github.com/edgexfoundry

  • 微服务模块化,扩展性极强,适合复杂大型工厂边缘项目
  • 优势:数据过滤、规则处理、本地告警、设备管理;第三方驱动丰富
  • 缺点:资源占用更高,配置复杂度高于 Neuron;小型网关不推荐

✅ IoTDC(国产轻量工业网关)

纯 Go 开发,国内开发者维护,大量国产仪表适配,中文文档友好,适合中小型产线。

✅ Open62541

https://github.com/open62541/open62541 C 语言 OPC UA 协议栈,如果你需要自研采集程序,自己写 OPC UA 客户端 / 服务端必备库。

✅ libmodbus

Modbus 标准开源库,自研 Modbus 采集程序基础依赖。

2. MQTT 消息枢纽(边缘 / 云端)

EMQX

https://github.com/emqx/emqx 工业采集标准搭配:Neuron 采集数据输出 MQTT,接入 EMQX;支持消息持久化、离线缓存、消息转发(数据库、Kafka、上层平台)

不要用 Mosquitto 做工业大规模采集,高并发、规则引擎能力差距很大。

3. 物联网上层平台(数据存储、组态、告警、大屏)

方案 1:JetLinks 社区版【大型工厂推荐】

https://github.com/jetlinks/jetlinks-community 国产工业 IoT 平台,原生适配工业采集,协议插件化,支持设备模型、点位管理、规则引擎、组态大屏、数据权限、多厂区管理。支持对接 Neuron/EMQX。

方案 2:ThingsPanel【中小型项目、快速上线】

https://github.com/ThingsPanel/ThingsPanel Go+Vue,部署简单,资源占用低,中文界面;支持 MQTT 接入、自定义点位、组态仪表盘、告警。适合产线监控、小型车间。

方案 3:ThingsBoard

海外成熟平台,可视化能力强;缺点:中文支持一般,复杂工业设备模型配置不如 JetLinks 顺手。

4. 时序数据库(工业时序数据存储)

  • Apache IoTDB:工业场景最优,针对传感器、测点时序优化,高压缩、快速聚合查询,和工业 IoT 生态适配好
  • InfluxDB:社区版无集群,小型场景可用

5. 可视化备选

Grafana:搭配 IoTDB/InfluxDB,自定义图表,适合技术人员自用监控;缺点无设备管理、告警规则、权限体系,不能单独做业务平台。

二、两套可直接落地标准架构

🟢 方案 A|中小型产线(推荐新手、项目落地)

架构链路:现场设备 → Neuron → EMQX → ThingsPanel + Apache IoTDB

  1. Neuron:连接 PLC/Modbus 仪表,配置采集点位,转 MQTT
  2. EMQX:接收边缘数据,消息转发、缓存
  3. ThingsPanel:设备管理、组态画面、告警、用户权限
  4. IoTDB:存储历史采集数据

优势:部署简单、资源消耗低、中文文档、ARM 工业网关完美运行。

🔵 方案 B|大型工厂、多车间、复杂业务系统

架构链路:现场设备 → Neuron → EMQX → JetLinks + Apache IoTDB JetLinks 提供完善的设备模型、数据转发、API 对接 MES/ERP 系统,适合需要对接工厂业务系统场景。

⚫ 方案 C|自研采集程序(深度定制场景)

设备 → Open62541 /libmodbus(自研采集服务) → EMQX → 自研业务平台 / IoTDB 适合公司有开发团队,需要完全自主可控,不使用成品网关软件。

三、避坑提醒(工业采集特有问题)

  1. 不要直接让平台直连 PLC PLC 一般在内网,不对外开放;必须边缘网关做协议采集,隔离内网,避免安全风险。
  2. 工业网络不稳定,一定要开启消息断点缓存:Neuron 本地缓存 + EMQX 持久化
  3. Modbus 注意轮询频率,不要设置过快,容易把老旧仪表轮询卡死
  4. 区分:Neuron 只做协议采集转换,不做复杂业务逻辑;业务、告警、组态交给上层平台

四、最简测试环境部署顺序(本地电脑模拟)

  1. 安装 EMQX
  2. 运行 Neuron,添加 Modbus 模拟器,配置采集点位
  3. Neuron 对接 EMQX MQTT
  4. 部署 ThingsPanel/JetLinks,接入 EMQX,订阅主题
  5. 安装 IoTDB,配置数据持久存储
  6. 搭建组态画面查看实时数据

Docker Compose 一键部署:Neuron + EMQX + ThingsPanel + Apache IoTDB

适用:工业采集测试环境,x86 / ARM64 工业网关均可运行 新建文件夹 industrial-iot,创建 docker-compose.yml

version: "3.8"

services:
  # MQTT消息服务器
  emqx:
    image: emqx/emqx:5.8.4
    container_name: emqx
    restart: always
    ports:
      - "1883:1883"    # MQTT TCP
      - "8083:8083"    # MQTT WebSocket
      - "18083:18083"  # EMQX管理后台
    environment:
      EMQX_ALLOW_ANONYMOUS: "true"
    volumes:
      - emqx_data:/opt/emqx/data

  # 工业协议采集网关 Neuron
  neuron:
    image: emqx/neuron:2.6.0
    container_name: neuron
    restart: always
    ports:
      - "7001:7001"    # Neuron Web管理界面
    volumes:
      - neuron_data:/opt/neuron/persistence
    depends_on:
      - emqx
    extra_hosts:
      - "host.docker.internal:host-gateway"

  # ThingsPanel 物联网平台
  thingspanel:
    image: thingspanel/thingspanel:latest
    container_name: thingspanel
    restart: always
    ports:
      - "8080:8080"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - tp_data:/app/data
    depends_on:
      - emqx

  # Apache IoTDB 时序数据库
  iotdb:
    image: apache/iotdb:1.3.2-standalone
    container_name: iotdb
    restart: always
    ports:
      - "6667:6667"
      - "9090:9090"
    environment:
      TZ: Asia/Shanghai
    volumes:
      - iotdb_data:/iotdb/data
      - iotdb_logs:/iotdb/logs

volumes:
  emqx_data:
  neuron_data:
  tp_data:
  iotdb_data:
  iotdb_logs:

启动命令

docker-compose up -d

各组件访问地址

  1. Neuron(采集网关) 地址:http://localhost:7001 默认账号:admin / 密码:0000
  2. EMQX 控制台 地址:http://localhost:18083 默认账号:admin / 密码:public
  3. ThingsPanel 平台 地址:http://localhost:8080 默认账号:admin@thingspanel.io/ 密码:123456
  4. Apache IoTDB 连接端口:6667 默认用户名 / 密码:root /root

标准连通步骤(照着操作即可打通采集链路)

1. Neuron 配置

1)新建 南向驱动:Modbus TCP / Modbus RTU(对接 PLC / 仪表) 2)新建 北向应用 → MQTT,连接地址 emqx:1883 3)创建点位组,把南向采集点位转发到北向 MQTT

Neuron 默认上报主题示例:neuron/{设备组}/{点位}

2. ThingsPanel 接入 EMQX

  1. 平台内创建 MQTT 接入服务
  2. MQTT 服务器地址:emqx:1883
  3. 订阅 Neuron 上报主题,自动解析测点数据

模拟调试小技巧

本地没有 PLC,可以使用 Modbus 模拟器:

  • Windows:CAS Modbus Scanner
  • Linux / 容器:modbus-sim docker 镜像,用来测试 Neuron 采集

常用停止 / 重启命令

# 停止服务
docker-compose down

# 重启
docker-compose restart

# 查看日志
docker-compose logs -f neuron

补充说明

  1. ARM 网关(树莓派、飞腾、瑞芯微)镜像全部兼容,无需修改配置
  2. 生产环境务必:关闭 MQTT 匿名访问、设置账号密码、启用 TLS 加密
  3. 如果不需要 IoTDB,可以直接在 compose 里删掉 iotdb 服务节省资源
👀 阅读量:89
标签:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

分享
扫码分享

扫码分享本文

//这里粘贴百度统计完整script代码