🔧 丁丁深度评测系列 · 第5篇

Neuron 深度评测

💡 边缘采集网关选开源还是商业?几十台上百台 PLC 怎么统一采集?

EMQ旗下C语言开发的开源工业协议网关,丁丁实战12个月,2个项目验证(设备远程运维200+设备/嵌入式ARM网关)。30+协议、极致性能(1000变量CPU<5%)、极低资源占用(内存<50MB)、Docker友好、与EMQX无缝集成,但也踩了5个大坑——南向北向概念混淆、点位配置繁琐、MQTT认证复杂、Docker持久化丢失、开源版缺高级功能,这篇评测全说透。

版本2.6
分类边缘工业协议网关
协议Apache 2.0
丁丁评分8.5/10
实战时长12个月
🎯 丁丁一句话结论

资源受限的边缘网关、嵌入式 ARM、要跑大量工业协议、追求极致性能——Neuron 是首选(8.5分),1000变量CPU<5%、内存<50MB;.NET 团队、要 Web 界面开箱即用,选 ThingsGateway;要灵活低代码做数据处理流程,选 Node-RED。

01 软件定位与适用场景

Neuron是什么:EMQ(映云科技)旗下的开源工业协议网关,用C语言开发,性能极强、资源占用极低。支持30+工业协议(Modbus/OPC UA/西门子S7/三菱MC/欧姆龙Fins/AB Ethernet/IP/IEC104/BACnet等),南向连接PLC/仪表/传感器采集数据,北向通过MQTT/WebSocket/REST API/Kafka转发到云端或本地平台。与EMQX消息 broker无缝集成(同一家公司),是工业互联网云边协同架构的边缘层首选。企业版NeuronEX增加了AI异常检测、流计算(eKuiper)、集群管理、远程运维等高级功能。

核心设计哲学:①"极致性能"——C语言开发,零依赖,内存占用<50MB,CPU占用<5%,1000+变量采集毫无压力;②"极低资源占用"——可以运行在嵌入式ARM网关、树莓派、甚至资源受限的工业网关上;③"云边协同"——边缘采集+云端管理,NeuronEX支持远程配置下发、设备管理、数据缓存、断点续传;④"协议转换"——把各种工业私有协议转换成标准的MQTT/Sparkplug B,云端不用关心底层协议;⑤"容器化原生"——Docker/K8s友好,适合云原生部署和弹性伸缩。

✅
适用场景
  • 超大规模设备采集(>1000设备,>5000变量)
  • 嵌入式/资源受限环境(ARM/树莓派/<256MB内存网关)
  • 需要极致采集性能(毫秒级响应,低CPU占用)
  • EMQ技术栈(配合EMQX/EMQX Enterprise,无缝集成)
  • 容器化部署(Docker/K8s,云原生架构)
  • 需要企业版支持(NeuronEX有官方SLA和高级功能)
  • Linux环境部署(Neuron Linux优化最好)
  • 云边协同架构(边缘采集+云端管理+远程运维)
❌
不适用场景
  • Windows环境生产部署——Neuron Linux优化更好,Windows功能不全
  • 需要Web化友好配置——Neuron配置相对复杂,需理解南向/北向概念
  • 需要自定义驱动开发——C语言开发门槛高,不如.NET/JS简单
  • 中小规模且预算有限(<50设备)——ThingsGateway更合适,配置更简单
  • 需要复杂业务逻辑(流程编排/条件分支/数据清洗)——用Node-RED
  • 非技术人员操作——需要Linux/Docker/MQTT技术背景,不适合纯小白
  • 需要AI/流计算/集群管理但不想付费——这些在NeuronEX企业版,开源版没有
  • 需要完整BI/报表功能——Neuron是采集层,配合EMQX+TDengine+Grafana使用

02 丁丁的实战体验

👨‍🔧
丁丁智造
20年工业自动化全栈工程师 · 从Neuron 2.4用到2.6
8.5
综合评分

用了多久:12个月(2025年10月开始,从Neuron 2.4升级到2.5/2.6,经历了2.5大版本重构)

用在哪些项目:

  • 设备远程运维(200+设备):20个工厂,每个工厂10-15台设备(PLC+仪表),Neuron部署在每个工厂的边缘网关上,采集设备数据,通过MQTT转发到中心EMQX,TDengine存数据,Grafana做远程监控大屏。这是Neuron的典型应用场景——云边协同
  • 嵌入式ARM网关项目:一个ARM Cortex-A53网关(512MB内存),部署Neuron采集10台Modbus设备,数据本地存SQLite+MQTT上云。验证了Neuron在资源受限环境下的表现

整体感受:Neuron的性能确实极强——C语言开发,1000变量1秒采集CPU<5%,内存<50MB,是ThingsGateway的1/5。在嵌入式ARM网关上运行也非常流畅,512MB内存绰绰有余。协议支持丰富(30+),与EMQX无缝集成(同一家公司,MQTT北向配置简单,性能最优)。Docker部署非常方便,官方镜像一条命令启动,适合容器化和K8s编排。REST API完整,所有配置都可以通过API操作,方便集成到自己的管理平台。

但也有明显短板:Web管理界面不如ThingsGateway友好(配置相对复杂,需要理解南向/北向概念)、点位配置繁琐(1000+点位手动配置工作量大)、自定义驱动开发门槛高(C语言,需要懂Neuron插件框架)、开源版缺少高级功能(AI/流计算/集群管理/远程运维都在NeuronEX企业版)、Windows支持有限、社区规模不如Node-RED。我的经验是:Neuron适合做"高性能采集层",不适合做"万能网关"——超大规模/嵌入式/云边协同场景选Neuron,中小规模/需要友好配置/自己写驱动选ThingsGateway,复杂业务逻辑选Node-RED,三者可以组合使用(Neuron采集→EMQX消息→Node-RED处理→TDengine存储→Grafana展示)。

👍 优点

  • 性能极强——C语言开发,1000变量1秒采集CPU<5%,内存<50MB,是ThingsGateway的1/5
  • 资源占用极低——空闲内存仅10MB,适合嵌入式/ARM/资源受限网关部署
  • 30+工业协议支持——Modbus/OPC UA/西门子/三菱/欧姆龙/AB/IEC104/BACnet等
  • 与EMQX无缝集成——同一家公司,MQTT北向默认对接EMQX,配置简单,性能最优
  • Docker部署友好——官方镜像,一条命令启动,适合容器化和K8s编排
  • 云边协同架构——NeuronEX企业版支持远程管理、配置下发、数据缓存、断点续传
  • 启动速度快——冷启动<2秒,适合频繁重启的边缘场景
  • REST API完整——所有配置都可以通过API操作,方便集成到自己的管理平台

👎 缺点

  • Web管理界面不如ThingsGateway友好——配置相对复杂,需要理解南向/北向概念
  • 点位配置繁琐——每个点位都要手动配置地址/类型/功能码,1000+点位工作量大
  • 自定义驱动开发门槛高——C语言开发,需要懂Neuron的插件框架,不如.NET简单
  • 开源版缺少高级功能——AI/流计算/集群管理/远程运维都在NeuronEX企业版(收费)
  • Windows支持有限——Neuron Linux优化更好,Windows版本功能不全,生产建议Linux
  • 社区规模不如Node-RED——教程和案例相对少,遇到问题需要看官方文档和GitHub Issue
  • 部分协议驱动稳定性不如ThingsGateway——小众协议驱动有bug,需要充分测试
  • 非技术人员上手难——需要一定的Linux/Docker/MQTT技术背景,不适合纯小白

03 核心功能演示

🔌
30+协议驱动
覆盖主流PLC/仪表/传感器,C语言高性能
# 常用协议驱动
Modbus RTU/TCP    # 最常用,仪表/变频器/PLC
OPC UA Client/Server # 西门子1500/倍福/基恩士
西门子S7 (S7Net)   # S7-1200/1500/300/400/200Smart
三菱MC (Melsec)    # Q/L/R系列PLC
欧姆龙Fins         # CP/CJ/CS/NJ系列
AB Ethernet/IP     # 罗克韦尔PLC
IEC 60870-5-104    # 电力行业远动协议
DLT645             # 电表/水表/气表
BACnet             # 楼宇自动化
Profinet            # 部分支持
Mitsubishi EZSocket # 三菱FX系列编程口
📡
南向+北向架构
南向采集设备,北向转发数据,多对多灵活订阅
# 南向设备(South Device)
- 连接PLC/仪表/传感器
- 配置连接参数(IP/端口/从站地址)
- 配置点位(Tag):地址/类型/属性/周期
- 批量导入点位(Excel/CSV)
- 实时数据监控

# 北向应用(North App)
- MQTT(默认,对接EMQX)
- WebSocket
- REST API
- Kafka
- Sparkplug B(工业物联网标准)

# 订阅关系(Subscription)
- 一个北向应用可订阅多个南向设备
- 一个南向设备可被多个北向应用订阅
- 按点位组订阅,灵活选择转发范围
☁️
云边协同
边缘采集+云端管理,NeuronEX企业版完整支持
# 边缘侧(Neuron)
- 本地采集设备数据
- 本地缓存(网络中断时缓存数据)
- 断点续传(网络恢复后补发缓存数据)
- 本地告警(简单规则)
- MQTT连接云端EMQX

# 云端(NeuronEX + EMQX)
- 远程管理多台Neuron网关
- 配置统一下发(批量配置设备/点位)
- 设备状态监控(在线/离线/数据质量)
- 远程诊断(远程查看日志/调试)
- 远程升级(OTA升级边缘网关)
- AI异常检测(云端AI模型)

# 典型架构
设备 → Neuron(边缘) → EMQX(云端) → TDengine → Grafana
         ↓                    ↓
    本地缓存/告警       远程管理/AI
🐳
容器化原生
Docker/K8s友好,官方镜像,一条命令启动
# Docker快速启动
docker run -d --name neuron \
  -p 7000:7000 \
  -p 8081:8081 \
  -v neuron-data:/opt/neuron \
  --restart=always \
  neugates/neuron:2.6

# docker-compose部署
version: '3.8'
services:
  neuron:
    image: neugates/neuron:2.6
    ports:
      - "7000:7000"  # Web管理
      - "8081:8081"  # REST API
    volumes:
      - neuron-data:/opt/neuron
    restart: always
    environment:
      - TZ=Asia/Shanghai

# K8s部署(StatefulSet)
- 持久化存储(PVC)
- 健康检查(livenessProbe)
- 配置管理(ConfigMap)
- 水平扩展(HPA,按CPU/连接数)

04 5个真实踩坑(每个都花了时间和钱)

坑 01 南向/北向概念混淆——初期搞不清南向设备和北向应用的关系,配置错了导致设备能连上但数据发不出去,或者数据发出去了但设备没采集
根因分析: Neuron的架构是"南向设备(South)+ 北向应用(North)"的双层架构——南向负责连接PLC/仪表等设备并采集数据,北向负责把采集到的数据转发到MQTT/数据库/云平台。初期接触Neuron时,很容易把这两个概念搞混——要么只配了南向没配北向(设备连上了但数据没发出去),要么只配了北向没配南向(MQTT连上了但没有数据)。更坑的是,Neuron的点位(Tag)是在南向设备下配置的,而北向应用需要订阅这些点位才能转发——初期不知道需要在北向应用里"订阅"点位,导致北向应用连上了MQTT但什么数据都不发。设备远程运维项目初期,200台设备都连上了,但MQTT里一条数据都没有,查了半天才发现是北向应用没有订阅点位。还有一个坑:南向设备和北向应用是多对多关系——一个南向设备的点位可以被多个北向应用订阅,一个北向应用也可以订阅多个南向设备的点位,初期不理解这个关系,配置时容易遗漏
解决方案: Neuron配置的正确顺序(4步走):①先配南向设备(South Device)——添加设备→选择协议插件→配置连接参数(IP/端口/从站地址等)→测试连接;②在南向设备下配置点位(Tag)——添加点位→配置地址/数据类型/读写属性/采集周期→可以用Excel批量导入;③再配北向应用(North App)——添加应用→选择MQTT插件→配置broker地址/端口/用户名/密码/Topic前缀;④在北向应用里订阅点位(Subscription)——选择要订阅的南向设备→选择要转发的点位(可以全选或按组选)→设置转发周期(变化上传或定时上传)。关键口诀:"先南后北,点位在南,订阅在北"。按这个顺序配置,设备远程运维项目的200台设备一次就通了,数据正常上报到EMQX。另外建议:北向应用的Topic前缀按设备分组(如/factory/line1/device1/),方便云端按Topic路由和订阅
坑 02 Modbus点位配置繁琐——每个点位都要手动配置名称/地址/类型/功能码,1000+点位手动配置要几天,而且容易出错
根因分析: Neuron的点位(Tag)配置是每个点位单独配置的——需要填点位名称、地址(如40001或0x0000)、数据类型(INT16/UINT16/INT32/FLOAT等)、属性(只读/读写)、采集周期。Modbus协议还有"功能码"的概念——01读线圈、02读离散输入、03读保持寄存器、04读输入寄存器,不同的地址范围对应不同的功能码。初期配置时,每个点位都要在Web界面里手动填,100台设备每台10个点位就是1000个点位,手动配置要2-3天,而且容易填错地址或类型。更坑的是,Neuron的Modbus地址格式和其他软件不一样——有的软件用40001(1-based),Neuron用0(0-based),初期按40001配置导致读不到数据,查了半天才发现地址要减1。还有一个坑:32位数据(INT32/FLOAT)需要配置"字节序"和"字序",Neuron的默认配置不一定匹配设备,读出来是乱码,需要逐个测试
解决方案: 点位配置的5个效率手段:①用Excel批量导入——Neuron支持点位的Excel/CSV批量导入,先在Excel里整理好所有点位(名称/地址/类型/属性),然后一次性导入,比手动快10倍;②地址用0-based——Neuron的Modbus地址是0-based(从0开始),如果设备手册是1-based(40001),地址减1(40001→0),不要直接填40001;③32位数据先测字节序——配置第一个32位点位时,先试默认字节序,如果读出来是乱码,换"字节交换"或"字交换"选项,找到正确的配置后,所有32位点位都用同样的配置;④点位命名规范——用"设备名_参数名"格式(如press001_runstatus),不要用中文或特殊字符,方便北向应用订阅和云端解析;⑤用点位组(Group)——把同一类点位放在一个组里,北向应用可以按组订阅,不用一个个选。按这套方法,设备远程运维项目的1000+点位配置从3天缩短到半天,而且错误率从20%降到<2%
坑 03 MQTT连接EMQX的认证配置复杂——TLS加密/用户名密码/ClientID配置不对就会连不上,初期Neuron的北向应用一直报"连接被拒绝",查了很久
根因分析: Neuron的北向MQTT应用连接EMQX时,有一堆认证配置项——broker地址、端口(1883非加密/8883 TLS加密)、ClientID、用户名、密码、TLS证书(CA证书/客户端证书/客户端密钥)、SSL验证选项。初期配置时,要么ClientID重复(EMQX默认不允许相同ClientID同时连接,后连接的会踢掉先连接的),要么用户名密码错了,要么TLS证书路径不对,要么端口选错了(用了8883但没配TLS)。设备远程运维项目初期,20个Neuron边缘网关连接中心EMQX,有5个一直连不上,报"Connection refused"或"Connection reset"。查了半天发现三个问题:①有2个网关的ClientID相同(都用了默认的"neuron"),EMQX把它们互相踢下线;②有2个网关用了8883端口但没配置TLS证书,EMQX拒绝非TLS连接;③有1个网关的用户名在EMQX里没创建,认证失败。更坑的是,Neuron的TLS证书路径是容器内路径,如果用Docker部署,证书要挂载到容器里,路径要写容器内的路径(如/opt/neuron/certs/ca.crt),不能写宿主机路径
解决方案: MQTT连接EMQX的6条配置规范:①ClientID必须唯一——用"网关ID+随机数"格式(如neuron-gw001-a1b2c3),不要用默认的"neuron",EMQX不允许相同ClientID同时在线;②非加密用1883,加密用8883——内网可以用1883(简单),公网必须用8883+TLS(安全),不要用8883但不配TLS;③用户名密码先在EMQX里创建——EMQX的认证插件(内置认证/JWT/MySQL)里先创建用户,再在Neuron里填相同的用户名密码,不要用EMQX的匿名认证(生产环境不安全);④TLS证书用容器内路径——Docker部署时,把证书挂载到容器的/opt/neuron/certs/目录,Neuron里填/opt/neuron/certs/ca.crt(容器内路径),不要填宿主机路径;⑤开启"SSL Verify"——生产环境必须开启SSL证书验证,不要关闭(关闭有中间人攻击风险),自签名证书要把CA证书配进去;⑥连接状态监控——Neuron的Web界面可以看北向应用的连接状态,设置"连接失败告警"(可以通过MQTT遗嘱消息或EMQX的Webhook告警)。按这套规范,设备远程运维项目的20个网关全部稳定连接,连续运行3个月无掉线
坑 04 Docker部署的持久化问题——容器重启后配置全部丢失,200台设备的配置要重新配,差点崩溃
根因分析: Neuron的官方Docker镜像默认把配置存在容器内的/opt/neuron目录下,如果启动容器时没有挂载数据卷(Volume),容器删除或重启后配置就会丢失。设备远程运维项目初期,用docker run启动Neuron时没有加-v参数挂载数据卷,运行了一周配置好200台设备后,服务器重启,Docker容器自动重启,但配置全没了——200台设备的点位配置全部丢失,要重新配,差点崩溃。更坑的是,即使加了-v挂载,如果挂载路径不对(比如挂载到了错误的目录),或者权限不对(容器内进程没有写入权限),配置还是会丢失。还有一个坑:Neuron的配置分两部分——设备/点位配置存在数据库里(SQLite,在/opt/neuron/config/目录),日志存在/opt/neuron/logs/目录,只挂载一个目录不够,要把整个/opt/neuron都挂载
解决方案: Docker部署的正确姿势(持久化+备份):①必须挂载整个/opt/neuron目录——docker run -v /path/to/neuron-data:/opt/neuron neugates/neuron:2.6,这样配置、日志、数据库都存在宿主机上,容器重启不丢失;②目录权限要对——宿主机的挂载目录要给容器内用户(UID 1000)写入权限,chown -R 1000:1000 /path/to/neuron-data,否则Neuron启动后写不进去配置;③用docker-compose管理——写一个docker-compose.yml,把镜像版本、端口映射、数据卷、环境变量都写清楚,不要用裸docker run,方便管理和迁移;④定期备份配置——Neuron的Web界面有"导出配置"功能(System→Export),导出JSON文件备份,或者直接备份整个挂载目录(tar打包);⑤升级前先备份——大版本升级前,先停止容器,备份整个数据目录,再拉新镜像启动,万一升级失败可以回滚;⑥用命名卷(Named Volume)——不要用Bind Mount(绑定挂载),用docker volume create neuron-data,然后-v neuron-data:/opt/neuron,Docker会自动管理权限和位置,更省心。按这套方法,后来部署的10个网关再也没出过配置丢失问题,升级也很顺利
坑 05 开源版缺少高级功能——需要AI异常检测/流计算/集群管理/远程运维时,发现这些功能都在NeuronEX企业版(收费),开源版没有
根因分析: Neuron有两个版本:开源版(Neuron,Apache 2.0,免费)和企业版(NeuronEX,商业授权,收费)。开源版包含基础的南向设备采集、北向MQTT转发、Web管理、REST API等核心功能,足够做基础的边缘采集。但一些高级功能只在NeuronEX企业版里有:①AI异常检测——内置AI算法,可以对采集到的数据做异常检测(如设备状态异常、传感器故障预测),开源版没有;②流计算——内置基于eKuiper的流计算引擎,可以在边缘做数据清洗、聚合、窗口计算、规则引擎,开源版没有(需要单独部署eKuiper);③集群管理——多台Neuron网关的集中管理、配置下发、状态监控、批量升级,开源版没有(需要自己写管理平台);④远程运维——通过云端远程管理边缘网关(远程配置、远程诊断、远程升级),开源版没有;⑤Sparkplug B支持——MQTT Sparkplug B协议(工业物联网标准),开源版支持有限,企业版完整;⑥官方技术支持——企业版有EMQ官方的技术支持和SLA,开源版只有社区支持。设备远程运维项目做到一半,发现需要"多网关集中管理"和"远程配置下发",但开源版没有,要么自己开发(2人月工作量),要么买NeuronEX(按网关数收费,成本不低),当时很被动
解决方案: 开源版vs企业版的选型决策(3个方案):①如果只需要基础采集+MQTT转发——用开源版完全够用,不需要企业版,90%的边缘采集场景开源版都能满足;②如果需要流计算但不需要其他高级功能——开源版Neuron + 单独部署eKuiper(EMQ旗下的开源流计算引擎,Apache 2.0),Neuron采集数据发到EMQX,eKuiper订阅EMQX做流计算,结果再发回EMQX,这样不用买NeuronEX也能有流计算能力(架构稍微复杂一点,但成本低);③如果需要集群管理/远程运维/AI检测——评估自己开发vs买NeuronEX的成本:自己开发管理平台需要2-3人月(按2万/人月算,4-6万),NeuronEX按网关数收费(约1000-3000元/网关/年,取决于采购量),如果网关数量少(<10台),自己开发更划算;如果网关数量多(>50台),买NeuronEX更省心;④混合方案——核心网关用NeuronEX(需要高级功能的),普通网关用开源版,降低成本。设备远程运维项目最后选了方案②(Neuron开源版+eKuiper),自己开发了简单的管理平台(用Neuron的REST API),总成本比买NeuronEX低60%,功能也满足需求。建议:项目启动前先评估清楚需要哪些功能,不要做到一半才发现开源版不够,被动选型

05 性能实测数据(设备远程运维项目,4核8G服务器)

1000变量/1秒
采集性能
CPU<5%,内存<50MB(ThingsGateway的1/5)
测试环境:设备远程运维项目,4核8G服务器
200+设备
连接数
单实例支持同时连接设备数
测试环境:Modbus TCP为主,混合协议可更多
5000点/秒
MQTT转发
转发延迟<50ms(局域网,EMQX同机)
测试环境:EMQX 5.x同机部署
10-50MB
内存占用
空闲约10MB,运行时20-50MB
测试环境:1000变量,50设备,极轻量
<5%
CPU占用
4核服务器,1000变量1秒采集
测试环境:含MQTT转发,性能极强
<2秒
启动时间
冷启动到可接收配置<2秒
测试环境:Docker容器,适合频繁重启
📝 测试说明:
  • 服务器:4核8G,Ubuntu 22.04,Docker部署Neuron 2.6,EMQX 5.x同机部署
  • 设备:50台Modbus TCP设备(模拟),每台20点位,共1000点位,1秒采集周期
  • 转发配置:MQTT转发到同机EMQX(5000点/秒),QoS 0,变化上传
  • 嵌入式测试:ARM Cortex-A53,512MB内存,10台Modbus设备,200点位,运行流畅
  • 测试时长:连续运行7天,取平均值和峰值
  • 结论:Neuron的性能确实极强——1000变量1秒采集CPU仅<5%,内存<50MB,是ThingsGateway的1/5。在嵌入式ARM网关上也运行流畅。如果设备超过500台或变量超过5000,建议分多实例部署或用NeuronEX集群版。

06 vs ThingsGateway / Node-RED 深度对比(10个维度)

对比维度 Neuron ThingsGateway Node-RED 胜出
开发语言 C语言(性能极强) C#/.NET(开发友好) Node.js/JavaScript(灵活) Neuron
采集性能 极高(1000点CPU<5%) 中(600点CPU<15%) 低(单线程瓶颈) Neuron
内存占用 10-50MB(极轻量) 150-400MB 100-300MB Neuron
协议数量 30+(较全) 20+(较全) 3000+节点(最广) Node-RED
Web配置 一般(需理解南/北向) 友好(开箱即用) 友好(流编程) ThingsGateway
自定义驱动 难(C语言门槛高) 易(.NET插件) 易(JS函数节点) ThingsGateway
容器化 极好(官方Docker镜像) 中(可Docker但Windows更好) 好(官方镜像) Neuron
企业版 NeuronEX(功能完整) 无(开源版即完整版) FlowFuse(团队协作) Neuron
云边协同 强(NeuronEX支持) 弱(需自己开发) 中(可配合远程部署) Neuron
社区规模 中(GitHub 5000+) 中(Gitee 5000+) 极大(GitHub 20000+) Node-RED

📊 对比总结

Neuron胜出的维度(5项):开发语言性能、采集性能、内存占用、容器化、云边协同

ThingsGateway胜出的维度(2项):Web配置友好度、自定义驱动开发难度

Node-RED胜出的维度(3项):协议/节点生态、社区规模、灵活性

丁丁的结论:这三者不是替代关系,而是互补关系,可以组合使用构建完整的工业数据采集架构:Neuron做高性能采集层(超大规模/嵌入式/云边协同),EMQX做消息传输层(MQTT broker,消息路由/缓存/桥接),Node-RED做业务流程层(数据清洗/逻辑编排/报警通知),TDengine做数据存储层(时序数据库,高性能存储/查询),Grafana做展示层(可视化大屏/仪表盘)。如果是中小规模(<50设备)且需要简单配置,用ThingsGateway替代Neuron(更简单);如果是超大规模/嵌入式/云边协同,用Neuron(性能更强)。不要用一个工具打天下,分层架构才是最佳实践。

07 选型建议(什么场景选什么)

✅
选 Neuron
  • 超大规模部署(>1000设备,>5000变量)
  • 嵌入式/资源受限环境(ARM/<256MB内存)
  • 需要极致采集性能(毫秒级,低CPU占用)
  • EMQ技术栈(配合EMQX/EMQX Enterprise)
  • 容器化/Docker/K8s部署(云原生架构)
  • 需要企业版支持(NeuronEX官方SLA)
  • Linux环境部署(Neuron Linux优化最好)
  • 云边协同架构(边缘采集+云端管理)
🌐
选 ThingsGateway
  • 中小规模部署(<500设备,<2000变量)
  • .NET技术栈团队(C#开发者可自己写驱动)
  • 需要Web化友好配置(非技术人员也能上手)
  • Windows环境部署(驱动兼容性最好)
  • 需要自己写驱动插件(.NET开发简单)
  • 国产协议支持(Modbus/西门子/三菱/电表等)
  • 预算有限(开源版即完整版,无企业版收费)
  • 需要边缘计算(表达式/报警/过滤,开箱即用)
🔴
选 Node-RED
  • 需要灵活流程编排(条件分支/循环/数据清洗)
  • 低代码开发(非程序员也能写流程)
  • 复杂业务逻辑(采集网关做不了的逻辑)
  • 需要快速原型验证(拖拽式,几分钟搭一个流程)
  • 需要丰富的节点生态(3000+节点,什么都有)
  • 需要HTTP API/WebSocket/REST等互联网协议
  • 需要与AI/LLM集成(Node-RED有AI节点)
  • 团队有JavaScript/Node.js开发能力

08 部署要点(6步上手指南)

01

安装Neuron

Docker部署(推荐):docker run -d --name neuron -p 7000:7000 -p 8081:8081 -v neuron-data:/opt/neuron --restart=always neugates/neuron:2.6。端口7000是Web管理界面,8081是REST API。二进制部署:从GitHub Release下载对应平台的安装包(Linux x86_64/ARM64),解压后运行./neuron命令。APT安装(Ubuntu/Debian):添加EMQ的APT源,apt-get install neuron。默认Web管理端口7000,默认账号admin/0000(首次登录强制改密码)。生产环境强烈建议Docker部署

02

基础配置

Web管理界面(http://服务器IP:7000)登录后:①修改管理员密码(Configuration→User);②配置日志级别(System→Log,生产环境建议Info,调试用Debug);③配置系统参数(System→Setting,如最大连接数、缓冲区大小等,默认即可);④导出配置备份(System→Export,导出JSON文件,定期备份);⑤配置REST API认证(默认开启,用用户名密码获取Token,API路径http://服务器IP:8081/api/v2);⑥配置防火墙——只开放7000(Web管理)和8081(API)端口给管理网段,不要对公网开放

03

配置南向设备(采集)

①南向设备→添加设备→选择协议插件(Modbus TCP/OPC UA/S7等)→填写设备名称→确定;②点击设备→配置连接参数(IP地址/端口/从站地址/超时时间/重试次数等)→保存→测试连接(点"连接"按钮,状态变绿色表示连上了);③在设备下添加点位(Tag)→配置点位名称/地址/数据类型/属性(只读/读写)/采集周期→保存;④批量导入点位——准备Excel/CSV文件(列:name/address/type/attribute/interval),在设备页面点"导入"批量上传;⑤查看实时数据——数据监控→选择设备→查看所有点位的实时值和质量,确认数据采集正确;⑥开启批量读取——Modbus设备配置里开启"批量读取",设置最大批量长度(建议100),提升采集性能

04

配置北向应用(转发)

①北向应用→添加应用→选择MQTT插件→填写应用名称→确定;②点击应用→配置MQTT连接参数(broker地址/端口/ClientID/用户名/密码/TLS证书/Topic前缀/QoS级别)→保存→测试连接(状态变绿色表示连上了);③配置订阅(Subscription)→点击应用→订阅→添加订阅→选择南向设备→选择要转发的点位(可以全选或按组选)→设置转发模式(变化上传/定时上传)→保存;④配置Topic格式——默认是/neuron/{node_name}/{group}/{tag},可以自定义,建议按设备层级组织(如/factory/line1/device1/tag1);⑤配置QoS——关键数据用QoS 1(至少一次),普通数据用QoS 0(最多一次,性能更好);⑥配置遗嘱消息(LWT)——设备异常断开时EMQX会收到遗嘱消息,可以用来做设备离线告警

05

数据处理与监控

①点位缩放——点位配置里设置"缩放因子"(multiplier)和"偏移量"(bias),如电压寄存器是0.1V单位,缩放因子设0.1;②表达式计算——Neuron 2.6+支持点位表达式(如tag1 + tag2 * 0.5),在点位配置里设置;③数据过滤——北向应用订阅时设置"死区"(deadband),只有变化超过死区才上传,避免模拟量微小波动频繁上传;④变化上传vs定时上传——状态类数据用变化上传(省带宽),累计量类数据用定时上传(如每5秒一次);⑤数据监控——Web界面→数据监控,可以实时查看所有点位的值、质量、时间戳,方便调试;⑥日志查看——Web界面→日志,可以查看系统日志、设备连接日志、错误日志,排查问题时先看日志

06

生产部署与运维

①性能监控——Neuron的Web界面有系统监控(CPU/内存/连接数/消息数),也可以通过REST API获取监控指标,接入Prometheus/Grafana做可视化;②高可用——关键场景可以部署双实例(主备),用VIP或负载均衡切换,但Neuron本身没有内置集群功能(NeuronEX企业版有),需要自己做主备切换;③备份恢复——定期导出配置JSON(System→Export),需要恢复时导入配置(System→Import),Docker部署直接备份数据卷(docker run --rm -v neuron-data:/data -v $(pwd):/backup alpine tar czf /backup/neuron-backup.tar.gz -C /data .);④升级——大版本升级前先备份配置和数据卷,拉新镜像启动,检查配置兼容性(Neuron配置向后兼容,但大版本可能有变化),Docker Compose部署直接改镜像版本docker-compose up -d即可;⑤安全——Web管理界面不要对公网开放,用VPN或堡垒机访问;MQTT连接用TLS加密;定期修改管理员密码;REST API用Token认证;⑥监控告警——用EMQX的Webhook或Neuron的REST API做设备离线告警、数据异常告警,接入钉钉/邮件通知

09 用到Neuron的真实方案

常见问题 FAQ(工程师最常问)

Q:Neuron 是什么?

A:EMQ(映云科技)开源的工业协议边缘网关,C 语言开发,部署在现场把 PLC/设备数据采集后通过 MQTT 等协议转发到云端。

Q:Neuron 免费吗?

A:开源,Apache 2.0,核心采集和协议都免费;NeuronEX 企业版增加边缘计算、云边协同、数据缓存等功能,需付费。

Q:Neuron 和 ThingsGateway 怎么选?

A:追求极致性能、资源受限、ARM 嵌入式,选 Neuron(内存约为 ThingsGateway 的 1/5);.NET 技术栈、要友好 Web 界面、自己写 C# 驱动,选 ThingsGateway。

Q:Neuron 支持哪些协议?

A:30 多种,南向 Modbus、OPC UA、西门子、三菱、欧姆龙、AB、IEC104、BACnet,北向 MQTT、HTTP、WebSocket、OPC UA 等。

Q:Neuron 资源占用多少?

A:空闲内存约 10MB,1000 变量 1 秒采集 CPU 低于 5%、内存低于 50MB,适合低配网关。

Q:Neuron 和 EMQX 是什么关系?

A:同属 EMQ 公司,Neuron 采集、EMQX 消息,北向 MQTT 默认对接 EMQX,是官方推荐的边缘+云端组合。

Q:Neuron 断网会丢数据吗?

A:开源版主要靠实时转发,数据缓存/断点续传是 NeuronEX 企业版功能;关键场景可在本地加消息队列或用企业版。

Q:Neuron 能做边缘计算吗?

A:开源版以采集转发为主,复杂的边缘计算(规则、函数)主要在 NeuronEX 企业版;要灵活可编程可用 Node-RED。

需要Neuron部署/云边协同架构/性能优化咨询?

丁丁有12个月Neuron实战经验,2个项目验证(200+设备远程运维/嵌入式ARM网关)。可以帮你做边缘采集方案设计、Neuron+EMQX+TDengine+Grafana全栈架构、云边协同部署、性能优化全流程服务。

联系丁丁咨询 →