
本文档主要介绍基于单板机/工控机的Modbus协议开发案例。
备注:本文适用于SBCTL3588单板机及EPCTL3588工控机系列(由SBCTL3588单板机搭配扩展板与外壳组成),文中所有演示均基于4GByte LPDDR4X + 32GByte eMMC硬件配置的工控机开展。
Windows开发环境:Windows10 64bit、Windows7 64bit
Linux开发环境:VMware16.2.5、Ubuntu22.04.4 64bit
系统版本:Tronlong-Desktop 22.04(类Ubuntu)、Linux-6.1.141、U-Boot 2017.09
sysroot:rk3588-Tronlong-Desktop-22.04-sysroot-[版本号].tar.gz
应用开发交叉编译工具链:aarch64-linux-gnu-gcc(版本为11.4.0,通过网络下载)
为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。

(1)请先参考《应用开发手册》完成应用开发环境搭建。
(2)无特殊说明,默认从eMMC启动系统,使用DEBUG接口作为调试串口,通过路由器与PC机进行网络连接,请确保PC机、Ubuntu系统可正常访问互联网。
本案例演示基于Modbus RTU协议的温湿度数据采集,并在串口终端打印温湿度数据,同时支持将数据保存至CSV文件。程序的运行流程如下:

案例相关资料位于产品资料
“4-软件资料\Demo\platform-demos\modbus_humiture_capture_save\”目录下。
案例bin目录存放可执行文件,src目录存放源码。
本次操作基于EPC-TL3588-BU工控机、温湿度变送器(厂家:中盛科技,型号:ZS-SHT30-1T-1H-5-36V-RS485)进行演示。
请使用杜邦线将温湿度变送器RS-485接口的A、B端子分别连接至RS-485串口的A1、B1端子,硬件连接如下图所示。
备注:如需使用其他RS-485接口进行测试,硬件连接方法类似。

请将本案例bin目录下的可执行程序modbus_humiture_capture_save拷贝至文件系统,并在可执行程序所在目录下,执行如下命令运行程序,查看程序参数说明。
Target# ./modbus_humiture_capture_save -h

参数解析:
<serial_port>:表示RS485对应的串口。
-b:设置波特率(默认为9600)。
-s:设置从站ID(默认为1)。
-h:查看帮助信息。
执行如下命令,采集温湿度变送器的数据。
备注:本次操作RS-485串口的设备节点为"/dev/ttyS9"。若使用其他RS-485串口,请参考《EPC-TL3588工控机使用说明书》修改为对应的设备节点。
Target# ./modbus_humiture_capture_save /dev/ttyS9 -b 9600 -s 1

由以上打印信息可知,当前环境温度为26.7°C,湿度为68.9%。同时,可观察到该温湿度信息每秒刷新一次。
按下"Ctrl + C"即可停止程序运行,并且生成.csv文件。

执行如下命令,查看.csv文件,可以看到程序每秒获取到的温湿度数据。
Target# cat data.csv


将.csv文件拷贝至PC机,可通过Excel表格查看获取温湿度数据。

请将产品资料“4-软件资料\Demo\platform-demos\modbus_humiture_capture_save\”案例源码拷贝至Ubuntu工作目录。进入案例源码目录,执行如下命令,修改Makefile文件,确保"SDK_ROOT_PATH"为sysroot解压路径,用户请根据实际情况修改。如下图所示。
Host# vim Makefile


执行如下命令,配置交叉编译工具链,并执行make命令进行案例编译。编译完成后,将在当前目录下生成可执行文件。
Host# source /home/tronlong/RK3588/environment
Host# make

1.初始化CSV文件。

2.初始化Modbus,创建Modbus RTU通信对象,保存串口和通信参数。

3.读取存放在温湿度变送器的寄存器的温湿度数据信息。

4.解析温湿度信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。