• 正文
  • 相关推荐
申请入驻 产业图谱

嵌入式Linux工业网关设计,离不开这个关键核心通信模块

04/14 11:50
312
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

我是老温,一名热爱学习的嵌入式工程师关注我,一起变得更加优秀!

前一段时间,我们分享了嵌入式工业网关的设计思路,很多工控行业的工程师对其兴趣比较大,具体可以点击以下链接进行回顾:

朋友想自研一款嵌入式工业网关,分享一下我的设计思路!

工业网关主要用于采集工业现场设备的数据,并且把这些设备数据传输到指定的云端网络服务器,网关也可以自动运行预设的设备控制逻辑。

对于设备端数据采集,比较常用的传输协议是Modbus,嵌入式Linux设备一般采用libmodbus通信库提供的API接口,来实现Modbus-RTU或Modbus-TCP通信
以下是基于RK3506J开发平台,移植 libmodbus 通信库的具体过程。

虚拟机系统:Ubuntu22.04 LTS嵌入式开发平台:OK3506J-SLinux内核:Linux Kernel 6.1.99交叉编译工具链:arm-linux-gcc

1、先根据开发平台配套的资料文档,搭建好交叉编译环境,我使用VSCode+CMake进行工程框架构建,基本的工程框架搭建后,如下图所示。

2、访问libmodbus的官网,链接如下:https://libmodbus.org/

3、点击右上角的github链接,下载3.1.10版本的libmodbus库,然后上传到Ubuntu22.04指定目录下进行解压,解压出来的文件如下图所示。

4、在libmodbus源码目录下,创建一个install目录用来存放编译后的库文件,最后执行./configure脚本对源码进行配置。

mkdir install./configure --host=arm-linux-gnueabihf             --enable-static             --prefix=/opt/work/ok3506j/third_party_libs/libmodbus-3.1.10/install/             CC=arm-linux-gcc

源码配置成功后,如下图所示。

5、在libmodbus源码目录下,执行 make && make install 命令,对源码进行编译和安装,编译安装成功后,在install目录下会生成Modbus相关的头文件和库文件,如下图所示。

6、把include目录和lib目录都添加到CMake工程里面,然后在main.c函数里面编写一个测试例程,具体代码如下图所示。

7、编译上述示例代码,编译成功后把可执行文件OpenGateway拷贝到开发板,同时把lib目录下的libmodbus.so.5.1.0文件,也拷贝到开发板的/usr/lib目录下,并创建对应的软链接,如下图所示。

8、使用 Modbus-Slave 软件工具,模拟一个Modbus-RTU从机,OK3506J-S开发平台每隔1秒轮询读取Modbus从机的数据,并在终端打印出来,如下图所示。

通过USB转RS485工具,OK3506J-S开发板与电脑进行通信。

8、下一节,我们将继续移植另一个重要的通信模块,MQTT通信库,欢迎继续关注!

工程源码链接,或点击【阅读原文】https://gitee.com/embediot/open-gateway.git

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录