【飞凌嵌入式FCU1501试用】轻量级物联网网关实战

文章目录

引言

前面的帖子已经介绍了飞凌嵌入式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-TCPModbus-RTU 协议。这里我们使用 Modbus TCP 模式。

启动并配置 TCP 服务器

  1. 打开 OpenModSim,默认启动后即为 Modbus TCP 服务器模式,监听 502 端口(Modbus 标准端口)。
  2. 如需修改端口,在菜单栏找到连接设置,配置监听端口即可。

添加寄存器数据

OpenModSim 支持模拟多种 Modbus 数据区域:

  • 线圈(Coils)0x01 读取、0x05 写入单个、0x0F 写入多个
  • 保持寄存器(Holding Registers)0x03 读取、0x06 写入单个、0x10 写入多个

操作步骤

  1. 在 OpenModSim 主界面中,找到**保持寄存器(Holding Register)**区域。

  2. 右键或双击表格,添加寄存器数据。例如:

    • 地址 0(即 PLC 地址 40001):填入数值 493(代表 49.3%RH)
    • 地址 1(即 PLC 地址 40002):填入数值 285(代表 28.5°C)
  3. OpenModSim 还支持仿真功能,可以让寄存器值自动变化:

    • 随机:数值随机变化
    • 递增/递减:从下限到上限循环变化

这对于测试 Neuron 的动态数据采集非常有用。


配置 Neuron(Modbus 客户端)

Neuron 作为 Modbus 客户端时,会主动向 OpenModSim 发起 TCP 连接请求并采集数据。

添加南向设备

  1. 登录 Neuron Web 界面,进入 配置 → 南向设备
  2. 点击 添加设备 ,填写以下信息:
    • 名称 :自定义,如 modbus-client-test
    • 插件 :选择 Modbus TCP(标准版即可)

配置设备连接参数

点击创建后进入设备配置页面,关键参数如下:

配置项 设置值 说明
连接模式 Client Neuron 作为主动方
IP 地址 运行 OpenModSim 的 PC 的 IP 例如 192.168.1.100
端口号 502 Modbus TCP 默认端口
指令发送间隔 100 ms 可根据需要调整
连接超时时间 3000 ms 默认即可

点击 提交 保存配置,设备卡片状态应变为 "运行中"

添加组和点位

完成设备配置后,需要添加**组(Group)点位(Tag)**来定义要采集的数据。

  1. 在南向设备页面,点击设备卡片进入组列表页
  2. 点击 创建 ,设置组名称(如 group1)和采集间隔(如 1000ms)。
  3. 点击组名称进入点位列表页,添加点位:
点位名称 地址格式 数据类型 说明
humidity 1!40001 INT16 湿度值(对应寄存器 0)
temperature 1!40002 INT16 温度值(对应寄存器 1)

地址格式说明1!40001 中,1 是从站地址(Slave ID),40001 是 PLC 地址格式(对应寄存器 0)。Neuron 支持多种地址格式,详见官方文档。


验证通信

检查连接状态

配置完成后,回到南向设备列表,查看设备卡片的 "连接状态"

  • 如果显示 "已连接",说明 Neuron 已成功连接到 OpenModSim。
  • 如果显示 "未连接" ,请检查:
    • OpenModSim 是否正在运行
    • IP 地址和端口号是否正确
    • 防火墙是否放行了 502 端口

查看实时数据

  1. 进入 Neuron Web 界面的 监控 → 数据监控
  2. 选择对应的设备与组,即可看到实时采集到的温湿度数值。
  3. 如果数值与 OpenModSim 中设置的一致,说明通信成功!

在 OpenModSim 中查看通信日志

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


常见问题排查

问题现象 可能原因 解决方法
连接状态显示"未连接" IP/端口配置错误 检查 Neuron 中填写的 IP 和端口是否与 OpenModSim 一致
数据读取为 0 或异常 寄存器地址不匹配 确认 Neuron 点位地址与 OpenModSim 中设置的寄存器地址对应
通信超时 防火墙拦截 关闭防火墙或放行 502 端口
OpenModSim 无响应 从站地址(Slave ID)不匹配 确认 Neuron 地址格式中的 1 与 OpenModSim 的 Unit ID 一致

总结

通过 Neuron(客户端模式)+ OpenModSim(服务器模式) 的组合,我们可以在没有真实硬件的情况下,快速搭建一套完整的 Modbus TCP 通信测试环境:

  1. OpenModSim 作为轻量级开源 Modbus 从站模拟器,可以灵活配置寄存器数据并模拟动态变化。
  2. Neuron 作为 Modbus 客户端,主动采集数据,验证点位配置的正确性。
  3. 整个流程无需任何物理设备,全部在 PC 上完成,极大提升了开发和测试效率。

这套方案尤其适合以下场景:

  • 设备未到位时的提前开发与调试
  • Modbus 通信协议的学习与验证
  • 系统集成前的互联互通测试

希望本文能帮助你快速上手 Neuron + OpenModSim 的测试组合。如果有任何问题,欢迎在评论区交流讨论!