嵌入式 C 中的 Modbus RTU 实现

Modbus RTU Implementation in embedded C

我的问题很奇怪,所以我很抱歉。

我将在一个名为 "DiGi Module Connect Me 9210" 的电子设备中实现 Modbus RTU Master。我将从该设备向 PIC 请求一些数据,如节点和温度等数据以及一些其他数据。我只想在我的设备中实施 FC 04/03/16。

Digi 模块是一种电子设备,因此为此我将创建 C# GUI 以通过 DiGi 模块使用 GUI 从 PIC 请求数据,因为 Digi 将使用 Modbus RTU 协议与 PIC 连接。在 Digi 中获取数据后,我们将使用 REST API 将数据发送到云端。

从 GUI 到 DIgI,我将使用 TCP/IP,从 DIGI 到 PIC,我将使用 Modbus RTU,在 Cloud 和 DiGi 之间,我将使用 REST API。

我想在 C# 中删除我的数据,所以我将通过 DIGI 从 GUI 向 PIC 发送请求(因此我的 DIGI 将成为 GUI 和 PIC 之间的桥梁)以配置节点或从 PIC 获取节点数据。我必须使用 80 个请求或其他方式一次性读取近 9999 个寄存器,以从 3X/4X 寄存器获取数据。现在问题来了。

☺如何在设备或系统中实现Modbus RTU?

☺ 因为我可能想从 3X 寄存器中读取所有运行时数据,所以如何通过 GUI 读取所有 9999 寄存器?

☺ 我如何才能 write/Read 一次拍摄所有 4X 寄存器。?

我们也在实施分页技术,这意味着第 0 页将有 9999 个寄存器,然后第 1 页将有 9999 个寄存器。因此,如果我想读取温度,我必须转到第 0 页并读取寄存器,如果我想读取速度值,我必须转到第 1 页并检查所有寄存器。?

GUI 看起来有点像

用户将添加节点编号,然后添加温度并提交请求。

libmodbus 图书馆可以帮助你。我已经在 digi 模块中实现了这个库,你只需要将你的寄存器放在循环中并复制寄存器以在 rtu 中转换它。