文章目录
- 引言
- [下载安装 Neuron](#下载安装 Neuron)
- [Neuron(客户端模式) + OpenModSim Modbus TCP 通信测试实战](#Neuron(客户端模式) + OpenModSim Modbus TCP 通信测试实战)
- 总结
引言
前面的帖子已经介绍了飞凌嵌入式FCU1501工业网关,今天给它配置上软件使得它成为一个真正的物联网网关。
Neuron 是一个为工业物联网(IIoT)设计的轻量级、开源边缘协议网关软件。它解决了工业场景中一个核心难题:如何让使用不同通信协议的各类工业设备(如PLC、传感器)能够互相"对话",并将数据统一上传到云平台。
你可以把它理解为一个强大的 "工业语言翻译官" 。它通过以下核心能力来实现这一目标:
-
协议转换:核心功能。能将Modbus、OPC
UA、西门子S7等数十种工业协议统一转换成标准的MQTT消息,使数据能够无缝上传到云端或与其他系统集成。
-
多设备接入:支持同时连接和管理成百上千台不同品牌的设备,实现一站式数据采集。
-
超轻量部署:完全由C语言开发,资源占用极低,可原生或容器化地运行在X86、ARM等各种边缘硬件上。
-
开放与灵活:基于LGPL许可开源,并提供了Web界面进行可视化配置管理,方便用户操作和二次开发。
下载安装 Neuron
我这里使用的是Neuron 2.x,它3.x之后的版本已经转向商业化闭源了。
访问其Github仓库:https://github.com/emqx/neuron。下载neuron-2.15.0-linux-armhf.tar.gz这个版本,它是针对32位ARM的。
在开发板上解压这个文件后,需要先修改配置文件运行外部IP访问Neuron。编辑 Neuron 配置文件(位于 /root/neuron/config/neuron.json):
bash
vi /root/neuron/config/neuron.json
找到 "ip" 字段,将其值改为 "0.0.0.0":
css
{
"ip": "0.0.0.0",
"port": 7000,
"disable_auth": 0
}
然后,进入neuron目录,使用./neuron -d命令启动Neuron。此时用浏览器访问开发板的7000端口,就可以看到Neuron的登录界面了,使用admin/000登录界面后就可以修改Neuron的配置了。


Neuron(客户端模式) + OpenModSim Modbus TCP 通信测试实战
在工业物联网的开发测试过程中,经常遇到设备还没到位、但软件调试不能等的尴尬局面。这时候,一个趁手的Modbus 从站模拟器就能派上大用场。
下面就使用 Neuron (作为 Modbus 客户端)和 OpenModSim(作为 Modbus 服务器/从站模拟器),搭建一套完整的 Modbus TCP 通信测试环境。
下载安装 OpenModSim
OpenModSim 是一个开源项目,GitHub 地址为:https://github.com/sanny32/OpenModSim
在 Releases 页面 下载对应平台的安装包:
- Windows:选择 NSIS 安装包(Qt5 或 Qt6 均可)
- Linux:选择 DEB(Ubuntu)、RPM(Fedora/RHEL)或 Arch Linux 包
- macOS:选择 DMG 包(Apple Silicon)
注意 :确保 Neuron 和 OpenModSim 运行在同一局域网内,且 IP 地址可以互相访问。
配置 OpenModSim(Modbus 服务器)
OpenModSim 是一款 Modbus 从站(服务器)模拟工具,支持 Modbus-TCP 和 Modbus-RTU 协议。这里我们使用 Modbus TCP 模式。
启动并配置 TCP 服务器
- 打开 OpenModSim,默认启动后即为 Modbus TCP 服务器模式,监听 502 端口(Modbus 标准端口)。
- 如需修改端口,在菜单栏找到连接设置,配置监听端口即可。
添加寄存器数据
OpenModSim 支持模拟多种 Modbus 数据区域:
- 线圈(Coils) :
0x01读取、0x05写入单个、0x0F写入多个 - 保持寄存器(Holding Registers) :
0x03读取、0x06写入单个、0x10写入多个
操作步骤:
-
在 OpenModSim 主界面中,找到**保持寄存器(Holding Register)**区域。
-
右键或双击表格,添加寄存器数据。例如:
- 地址
0(即 PLC 地址 40001):填入数值493(代表 49.3%RH) - 地址
1(即 PLC 地址 40002):填入数值285(代表 28.5°C)
- 地址
-
OpenModSim 还支持仿真功能,可以让寄存器值自动变化:
- 随机:数值随机变化
- 递增/递减:从下限到上限循环变化
这对于测试 Neuron 的动态数据采集非常有用。
配置 Neuron(Modbus 客户端)
Neuron 作为 Modbus 客户端时,会主动向 OpenModSim 发起 TCP 连接请求并采集数据。
添加南向设备
- 登录 Neuron Web 界面,进入 配置 → 南向设备。
- 点击 添加设备 ,填写以下信息:
- 名称 :自定义,如
modbus-client-test - 插件 :选择
Modbus TCP(标准版即可)
- 名称 :自定义,如
配置设备连接参数
点击创建后进入设备配置页面,关键参数如下:
| 配置项 | 设置值 | 说明 |
|---|---|---|
| 连接模式 | Client |
Neuron 作为主动方 |
| IP 地址 | 运行 OpenModSim 的 PC 的 IP | 例如 192.168.1.100 |
| 端口号 | 502 |
Modbus TCP 默认端口 |
| 指令发送间隔 | 100 ms |
可根据需要调整 |
| 连接超时时间 | 3000 ms |
默认即可 |
点击 提交 保存配置,设备卡片状态应变为 "运行中"。
添加组和点位
完成设备配置后,需要添加**组(Group)和点位(Tag)**来定义要采集的数据。
- 在南向设备页面,点击设备卡片进入组列表页。
- 点击 创建 ,设置组名称(如
group1)和采集间隔(如 1000ms)。 - 点击组名称进入点位列表页,添加点位:
| 点位名称 | 地址格式 | 数据类型 | 说明 |
|---|---|---|---|
humidity |
1!40001 |
INT16 | 湿度值(对应寄存器 0) |
temperature |
1!40002 |
INT16 | 温度值(对应寄存器 1) |
地址格式说明 :
1!40001中,1是从站地址(Slave ID),40001是 PLC 地址格式(对应寄存器 0)。Neuron 支持多种地址格式,详见官方文档。
验证通信
检查连接状态
配置完成后,回到南向设备列表,查看设备卡片的 "连接状态" 。
- 如果显示 "已连接",说明 Neuron 已成功连接到 OpenModSim。
- 如果显示 "未连接" ,请检查:
- OpenModSim 是否正在运行
- IP 地址和端口号是否正确
- 防火墙是否放行了 502 端口
查看实时数据
- 进入 Neuron Web 界面的 监控 → 数据监控。
- 选择对应的设备与组,即可看到实时采集到的温湿度数值。
- 如果数值与 OpenModSim 中设置的一致,说明通信成功!

在 OpenModSim 中查看通信日志
OpenModSim 提供了清晰的 通信日志 ,可以显示哪些客户端连接了,这对于排查通信问题非常有帮助。它还痛了流量视图,可以清楚地看到进出的数据都是什么情况,方便调试。

常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 连接状态显示"未连接" | IP/端口配置错误 | 检查 Neuron 中填写的 IP 和端口是否与 OpenModSim 一致 |
| 数据读取为 0 或异常 | 寄存器地址不匹配 | 确认 Neuron 点位地址与 OpenModSim 中设置的寄存器地址对应 |
| 通信超时 | 防火墙拦截 | 关闭防火墙或放行 502 端口 |
| OpenModSim 无响应 | 从站地址(Slave ID)不匹配 | 确认 Neuron 地址格式中的 1 与 OpenModSim 的 Unit ID 一致 |
总结
通过 Neuron(客户端模式)+ OpenModSim(服务器模式) 的组合,我们可以在没有真实硬件的情况下,快速搭建一套完整的 Modbus TCP 通信测试环境:
- OpenModSim 作为轻量级开源 Modbus 从站模拟器,可以灵活配置寄存器数据并模拟动态变化。
- Neuron 作为 Modbus 客户端,主动采集数据,验证点位配置的正确性。
- 整个流程无需任何物理设备,全部在 PC 上完成,极大提升了开发和测试效率。
这套方案尤其适合以下场景:
- 设备未到位时的提前开发与调试
- Modbus 通信协议的学习与验证
- 系统集成前的互联互通测试
希望本文能帮助你快速上手 Neuron + OpenModSim 的测试组合。如果有任何问题,欢迎在评论区交流讨论!