.NET/C# 团队、要国产开源、开箱即用的 Web 配置采集网关、支持多协议多转发——ThingsGateway 很合适(8.0分);追求极致性能、资源受限或 ARM,选 Neuron;要灵活低代码做流程,选 Node-RED。
01 软件定位与适用场景
ThingsGateway是什么:由.NET China组织维护的国产开源工业边缘采集网关,基于.NET 6/7/8开发,内置20+工业协议驱动(Modbus/OPC UA/西门子S7/三菱MC/欧姆龙Fins/AB Ethernet/IP/DLT645电表等),支持变量采集、协议转换、数据转发(MQTT/数据库/HTTP/OPC UA Server)、边缘计算(表达式/报警/过滤)。Web化配置界面,开箱即用,适合做设备统一采集、协议转换和上位机解耦。是国产开源里少有的"能直接上生产"的采集网关。
核心设计哲学:①"设备统一采集"——一个网关采集所有品牌的PLC/仪表/传感器,不用每个设备写一套采集程序;②"协议转换"——把Modbus/西门子/三菱等私有协议转换成标准的MQTT/OPC UA/数据库,上位机不用关心底层协议;③"上位机解耦"——采集层与业务层分离,ThingsGateway负责采集和转发,上位机/数据库/云平台只负责消费数据,互不影响;④"配置即代码"——所有配置都是JSON文件,可以版本管理、批量导入导出、自动化部署。
- 设备统一采集(多品牌PLC/仪表/传感器,一个网关搞定)
- 协议转换(Modbus/西门子/三菱转MQTT/OPC UA/数据库)
- 上位机解耦(采集层与业务层分离,互不影响)
- 边缘计算(数据预处理/过滤/报警/表达式计算)
- 数据转发(多目标同时转发:MQTT+数据库+HTTP)
- 国产替代(替代KEPServerEX等收费采集软件)
- .NET技术栈团队(C#开发者可以自己写驱动插件)
- 中小规模部署(<500设备,<2000变量)
- 超大规模部署(>1000设备,>5000变量)——用Neuron或自研
- 需要复杂业务逻辑(流程编排/条件分支/数据清洗)——用Node-RED
- 嵌入式/资源受限环境(<256MB内存)——用Neuron(C语言,<50MB)
- 需要官方SLA支持的核心系统——开源版无官方支持,用企业版或KEPServerEX
- 非Windows环境且驱动未验证——虽然.NET跨平台,但驱动主要在Windows验证
- 需要完整BI/报表功能——ThingsGateway是采集层,不是展示层,配合Grafana使用
- 需要实时控制(毫秒级闭环控制)——ThingsGateway是采集网关,不是实时控制器
- 协议极其小众(ThingsGateway没有的驱动)——需要自己写驱动,评估开发成本
02 丁丁的实战体验
用了多久:18个月(2025年4月开始,从ThingsGateway 3.x升级到4.x,经历了大版本重构)
用在哪些项目:
- 30台冲床监控:30台冲床,三菱Q系列(MC协议)+西门子S7-1511(S7协议),共600变量,ThingsGateway做统一采集,转发MQTT给TDengine和Grafana
- 能源管理:20台电表(Modbus RTU转TCP),ThingsGateway做Modbus采集和协议转换,转发MySQL做能耗分析
- 条码追溯:PLC(三菱)+RFID读写器(私有TCP协议,自己写的驱动),ThingsGateway做统一采集,双写本地SQLite+MQTT云端
整体感受:ThingsGateway是国产开源里少有的"开箱即用"的采集网关。Web配置界面友好,非技术人员也能上手配置设备和变量。协议驱动丰富(20+),常见的Modbus/OPC UA/西门子/三菱/欧姆龙都有,不用自己写驱动。变量管理清晰(分组/类型/读写权限/缩放/表达式),转发目标多(MQTT/数据库/HTTP/OPC UA Server)。.NET技术栈对C#开发者友好,可以自己写驱动插件(我就写了一个RFID驱动)。社区活跃(.NET China组织维护,Gitee Star 5000+),作者响应快,QQ群里问问题基本当天有回复。
但也有明显短板:Modbus地址配置混乱(新手容易读错数据)、部分小众驱动稳定性参差不齐、大量变量需要手动优化批量读取、MQTT断点续传不完善(需要自己做兜底)、驱动开发文档少(需要看源码)。我的经验是:ThingsGateway适合做"采集层",不适合做"业务层"——采集和转发用ThingsGateway,复杂业务逻辑用Node-RED或微服务,展示用Grafana,这样分层架构既享受ThingsGateway的采集能力,又避免了它的灵活性不足。
👍 优点
- 国产开源里少有的"开箱即用"采集网关,Web配置界面友好,非技术人员也能上手
- 协议驱动丰富——Modbus/OPC UA/西门子S7/三菱MC/欧姆龙Fins/AB/DLT645等20+协议
- .NET技术栈,C#开发者可以自己写驱动插件,扩展性强
- 变量管理清晰——变量分组/类型/读写权限/缩放变换/表达式计算一应俱全
- 转发目标多——MQTT/数据库(SQLite/MySQL/PostgreSQL)/HTTP/OPC UA Server/WebSocket
- 边缘计算能力——变量表达式/报警规则/数据过滤/死区设置/变化上传
- 社区活跃(.NET China组织维护),Gitee Star 5000+,问题响应快
👎 缺点
- Modbus地址配置混乱——功能码/地址偏移/字节序/寄存器类型组合太多,初期经常读错
- 驱动稳定性参差不齐——部分小众协议驱动有bug,生产环境需要充分测试
- 大量变量采集性能瓶颈——1000+变量时采集周期变长,需要优化批量读取
- MQTT转发断点续传不完善——网络中断后数据可能丢失,缓存机制需手动配置
- 驱动插件开发文档少——自己写驱动时找不到完整文档,需要看源码和示例
- 跨平台支持有限——虽然.NET Core跨平台,但驱动主要在Windows验证,Linux需测试
- 社区规模相比Node-RED/Neuron较小,教程和案例不够多
03 核心功能演示
# 常用协议驱动
Modbus RTU/TCP # 最常用,仪表/变频器/PLC
OPC UA Client # 西门子1500/倍福/基恩士
OPC UA Server # 把采集数据作为OPC UA暴露
西门子S7 (S7Net) # S7-1200/1500/300/400/200Smart
三菱MC # Q/L/R系列PLC
欧姆龙Fins # CP/CJ/CS/NJ系列
AB Ethernet/IP # 罗克韦尔PLC
DLT645 # 电表/水表/气表
三菱Melsec # FX系列(编程口)
Profinet # 部分支持
自定义驱动 # .NET插件,自己写 # 变量属性
变量名: 冲床001_运行状态
地址: DB1.DBX0.0 (西门子) / 40001 (Modbus)
数据类型: Bool/Int16/UInt16/Int32/Float/Double/String
读写权限: 只读 / 读写
采集周期: 100ms / 1s / 5s / 自定义
表达式: x / 10 (缩放) / x > 100 ? 1 : 0 (判断)
死区: 0.5 (变化超过0.5才上传)
分组: 一车间 / 二车间 / 公用工程
# 批量导入
Excel模板: 变量名/地址/类型/周期/表达式
一次导入1000+变量,不用手动加 # 转发目标
MQTT: 阿里云/华为云/EMQX/自建
- Topic前缀: /factory/press/
- QoS: 0/1/2
- 离线缓存: 内存/磁盘,可配大小
- 变化上传/定时上传
数据库: SQLite/MySQL/PostgreSQL/SQL Server
- 自动建表
- 批量写入(性能优化)
- 存储过程支持
HTTP REST API: POST/GET
- 请求头/请求体模板
- 变量插值
- 失败重试
OPC UA Server: 把变量作为OPC UA节点
- 其他OPC UA Client直接订阅
- 安全策略支持 # 变量表达式
四则运算: x * 0.1 + 100
数学函数: Math.Round(x, 2) / Math.Abs(x)
条件判断: x > 100 ? 1 : 0
多变量: var1 + var2 * 0.5
# 报警规则
条件: 大于/小于/等于/不等于/变化
级别: 紧急/重要/一般
延时: 持续N秒才报警(防抖)
报警恢复: 自动恢复/手动确认
通知: MQTT/HTTP/邮件
# 数据过滤
死区: 变化超过阈值才上传/报警
变化上传: 只有变化时才转发(省带宽)
采样降频: 1秒采集,5秒上传
数据清洗: 异常值过滤(表达式实现) 04 5个真实踩坑(每个都花了时间和钱)
05 性能实测数据(冲床监控项目,4核8G服务器)
- 服务器:4核8G,Windows Server 2019,.NET 8 Runtime,ThingsGateway 4.x
- 设备:30台冲床(15台三菱Q系列MC协议 + 15台西门子S7-1511),每台20变量
- 采集配置:所有设备开启批量读取(Modbus最大100寄存器,S7最大50变量),1秒采集周期
- 转发配置:MQTT转发到同机EMQX(1000点/秒)+ SQLite本地存储(变化上传)
- 测试时长:连续运行30天,取平均值和峰值
- 结论:4核8G服务器跑ThingsGateway+600变量+MQTT转发完全无压力,CPU<15%,内存200-400MB。如果变量超过2000或设备超过50,建议升级到8核16G或分多实例部署。
06 vs Neuron / Node-RED 深度对比(10个维度)
| 对比维度 | ThingsGateway | Neuron | Node-RED | 胜出 |
|---|---|---|---|---|
| 定位 | 国产开源边缘采集网关 | 高性能边缘工业协议网关 | 低代码流程编排工具 | 各有侧重 |
| 开发语言 | C#/.NET | C语言 | Node.js/JavaScript | 看技术栈 |
| 协议数量 | 20+(较全) | 30+(最多) | 3000+节点(最广) | Node-RED |
| Web配置 | 友好(开箱即用) | 一般(需配置文件) | 友好(流编程) | ThingsGateway |
| 采集性能 | 中(.NET开销) | 极高(C语言) | 低(单线程) | Neuron |
| 资源占用 | 中(150-400MB) | 低(<50MB) | 中(100-300MB) | Neuron |
| 灵活性 | 中(配置为主) | 低(配置为主) | 极高(流编程) | Node-RED |
| 国产支持 | 极强(国产协议全) | 中(EMQ旗下) | 弱(国外项目) | ThingsGateway |
| 开源协议 | Apache 2.0 | Apache 2.0(企业版收费) | Apache 2.0 | 平手 |
| 社区规模 | 中(Gitee 5000+) | 中(GitHub 5000+) | 极大(GitHub 20000+) | Node-RED |
📊 对比总结
ThingsGateway胜出的维度(3项):Web配置友好度、国产协议支持、.NET技术栈适配
Neuron胜出的维度(3项):采集性能、资源占用、嵌入式适配
Node-RED胜出的维度(3项):灵活性、协议/节点生态、社区规模
丁丁的结论:这三者不是替代关系,而是互补关系,可以组合使用:ThingsGateway做设备采集层(多协议采集+协议转换),Node-RED做业务流程层(数据清洗+逻辑编排+报警通知),Grafana做展示层(可视化大屏+仪表盘)。如果资源受限(嵌入式),用Neuron替代ThingsGateway;如果需要极致灵活性,用Node-RED替代ThingsGateway(但采集稳定性和管理性会下降)。不要用一个工具打天下,分层架构才是最佳实践。
07 选型建议(什么场景选什么)
- 国产开源需求(替代KEPServerEX等收费软件)
- .NET技术栈团队(C#开发者可自己写驱动)
- 需要Web化配置(非技术人员也能上手)
- 多协议采集(Modbus/西门子/三菱/欧姆龙等)
- 中小规模部署(<500设备,<2000变量)
- 需要协议转换(私有协议转MQTT/OPC UA/数据库)
- Windows环境部署(驱动兼容性最好)
- 需要边缘计算(表达式/报警/过滤)
- 超大规模部署(>1000设备,>5000变量)
- 资源受限环境(嵌入式/ARM/<256MB内存)
- 需要极致采集性能(C语言,毫秒级响应)
- EMQ技术栈(配合EMQX/EMQX Enterprise)
- 需要容器化部署(Docker/K8s友好)
- 需要企业版支持(NeuronEX有官方SLA)
- 需要多实例集群管理(NeuronEX支持)
- Linux环境部署(Neuron Linux优化更好)
- 需要灵活流程编排(条件分支/循环/数据清洗)
- 低代码开发(非程序员也能写流程)
- 复杂业务逻辑(ThingsGateway做不了的逻辑)
- 需要快速原型验证(拖拽式,几分钟搭一个流程)
- 需要丰富的节点生态(3000+节点,什么都有)
- 需要HTTP API/WebSocket/REST等互联网协议
- 需要与AI/LLM集成(Node-RED有AI节点)
- 团队有JavaScript/Node.js开发能力
08 部署要点(6步上手指南)
安装ThingsGateway
Windows:下载Release压缩包,解压后运行ThingsGateway.exe,自动安装为Windows服务(管理员权限运行install.bat)。Linux:Docker部署(docker run -d --name=thingsgateway -p 5000:5000 -v /path/to/config:/app/config thingsgateway/thingsgateway),或下载linux-x64二进制包直接运行。默认Web管理端口5000,默认账号admin/123456(首次登录强制改密码)。生产环境建议Windows服务部署(驱动兼容性最好)
基础配置
Web管理界面(http://localhost:5000)登录后:①系统配置→修改管理员密码、配置日志级别(生产环境建议Info,调试用Debug);②插件管理→确认需要的驱动插件已启用(Modbus/OPC UA/S7Net等),不需要的插件可以禁用减少内存占用;③备份配置→系统配置→导出配置,定期备份(配置文件是JSON格式,存在config目录下);④配置开机自启——Windows服务自动自启,Linux用systemd配置自启([Unit] Description=ThingsGateway [Service] ExecStart=/path/to/ThingsGateway [Install] WantedBy=multi-user.target)
配置采集设备
①设备管理→添加设备→选择驱动插件(如Modbus TCP/S7Net/OPC UA Client);②配置设备连接参数——IP地址、端口、从站地址(Modbus)、机架/槽号(S7)、超时时间(建议3000ms)、重试次数(建议3次);③测试连接——点"测试连接"按钮,确认能连上设备;④添加变量——手动添加或Excel批量导入(变量名/地址/数据类型/读写权限/采集周期/表达式);⑤开启批量读取——设备配置里开启"批量读取",设置最大批量长度(Modbus建议100,OPC UA建议50);⑥查看实时数据——变量管理→实时数据,确认数据采集正确
配置转发目标
ThingsGateway支持多种转发目标,按需配置:①MQTT转发——转发管理→添加MQTT客户端→配置broker地址/端口/用户名/密码/Topic前缀/QoS级别(建议1)/开启离线缓存(缓存大小建议100000);②数据库转发——添加数据库客户端→选择数据库类型(SQLite/MySQL/PostgreSQL/SQL Server)→配置连接字符串→配置写入表结构(ThingsGateway自动建表);③HTTP转发——添加HTTP客户端→配置API地址/请求方法/请求头/请求体模板(支持变量插值);④OPC UA Server——ThingsGateway内置OPC UA Server,可以把采集到的变量作为OPC UA节点暴露给其他系统;⑤配置转发变量——选择哪些变量需要转发,设置转发周期(变化上传或定时上传)
边缘计算与报警
①变量表达式——变量配置里设置"表达式",支持四则运算/数学函数/条件判断,如电压缩放"x / 10"、状态判断"x > 100 ? 1 : 0";②报警规则——报警管理→添加报警规则→选择变量→设置报警条件(大于/小于/等于/变化)→设置报警级别(紧急/重要/一般)→设置报警延时(避免抖动误报);③死区设置——变量配置里设置"死区",只有变化超过死区才上传/报警,避免模拟量微小波动导致频繁上传;④变化上传——转发配置里选择"变化上传"(只有变量变化时才转发),比"定时上传"节省带宽和存储;⑤报警通知——报警可以通过MQTT/HTTP/邮件通知,配置报警转发规则
生产部署与运维
①性能监控——Web界面→系统监控,查看CPU/内存/磁盘使用率、每个设备的采集周期/成功率/耗时、转发统计,发现异常及时处理;②日志管理——日志级别生产环境设为Info(不要设Debug,会产生大量日志),日志文件按天轮转,保留7天;③备份恢复——定期导出配置文件(JSON格式),需要恢复时导入配置即可;配置文件存在config目录,也可以直接备份整个config目录;④升级——大版本升级前先备份配置,下载新版本解压后把config目录复制过去,启动后检查配置是否兼容(ThingsGateway配置向后兼容,但大版本可能有变化);⑤高可用——关键场景可以部署双实例(主备),用VIP或负载均衡切换,但ThingsGateway本身没有内置集群功能,需要自己做主备切换
09 用到ThingsGateway的真实方案
常见问题 FAQ(工程师最常问)
Q:ThingsGateway 是什么?
A:国产开源工业边缘采集网关,基于 .NET,提供 Web 界面配置采集 PLC/设备数据,再转发到 MQTT、数据库、HTTP 等。
Q:ThingsGateway 免费吗?
A:开源,Apache 2.0,可免费商用,源码在 Gitee。
Q:ThingsGateway 支持哪些协议?
A:20 多种,Modbus、OPC UA、西门子 S7、三菱 MC、欧姆龙 Fins、AB、DLT645 等,可自己写驱动插件扩展。
Q:ThingsGateway 和 Neuron 怎么选?
A:.NET 技术栈、要友好 Web 界面、自己写 C# 插件,选 ThingsGateway;追求极致性能、资源受限、ARM,选 Neuron。
Q:ThingsGateway 能把数据转发到哪?
A:MQTT、SQLite/MySQL/PostgreSQL、HTTP、OPC UA Server、WebSocket 等,支持变化上传和数据处理。
Q:ThingsGateway 支持边缘计算吗?
A:支持变量表达式、报警规则、数据过滤、死区设置、变化上传等,可在网关侧做基础处理。
Q:ThingsGateway 如何部署?
A:支持 Windows/Linux/Docker,提供 Web 配置界面,部署后浏览器访问配置,适合不熟悉 Linux 的工程师快速上手。
Q:不会 C# 能用好 ThingsGateway 吗?
A:可以,常用协议和转发靠 Web 配置即可,无需写代码;只有定制特殊驱动或复杂逻辑时才需要 C# 开发。
需要ThingsGateway部署/驱动开发/性能优化咨询?
丁丁有18个月ThingsGateway实战经验,3个项目验证,写过自定义驱动。可以帮你做设备采集方案设计、驱动开发、性能优化、MQTT可靠转发全流程服务。
联系丁丁咨询 →