电子产业一站式赋能平台

PCB联盟网

搜索
查看: 66|回复: 0
收起左侧

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

[复制链接]

568

主题

568

帖子

4221

积分

四级会员

Rank: 4

积分
4221
发表于 2025-4-14 08:00:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师
  J6 b8 }% g+ H8 l' q6 k* N6 _关注我,一起变得更加优秀!
0 ^7 v- d" ]( g6 [前一段时间,我们分享了嵌入式工业网关的设计思路,很多工控行业的工程师对其兴趣比较大,具体可以点击以下链接进行回顾:6 h! w0 T/ @8 Y
朋友想自研一款嵌入式工业网关,分享一下我的设计思路!/ m, W  o% J( E& N: l3 j; x& W
工业网关主要用于采集工业现场设备的数据,并且把这些设备数据传输到指定的云端网络服务器,网关也可以自动运行预设的设备控制逻辑。; V5 G4 k' i. @( G! M+ i" n. Q4 Y

wdrr2uw3m3i640240305.jpg

wdrr2uw3m3i640240305.jpg
, ]5 }3 t6 R$ `3 U
对于设备端数据采集,比较常用的传输协议是Modbus,嵌入式Linux设备一般采用libmodbus通信库提供的API接口,来实现Modbus-RTU或Modbus-TCP通信
" j; u$ O6 s6 H* B0 U# i) v以下是基于RK3506J开发平台,移植 libmodbus 通信库的具体过程。
9 r) A% s9 r( W" r" @$ G6 e2 d, @虚拟机系统:Ubuntu22.04 LTS嵌入式开发平台:OK3506J-SLinux内核:Linux Kernel 6.1.99交叉编译工具链:arm-linux-gcc
1 y+ S2 L; x) p' \7 w- D5 c1、先根据开发平台配套的资料文档,搭建好交叉编译环境,我使用VSCode+CMake进行工程框架构建,基本的工程框架搭建后,如下图所示。
4 N9 {1 Y, l4 e  g

mqefxh4kqcl640240405.png

mqefxh4kqcl640240405.png
  E! }6 ?% C! n/ e5 N
2、访问libmodbus的官网,链接如下:https://libmodbus.org/6 {( k$ _2 p7 O, x: R; g4 V% m$ ?

hyewi0dvnli640240505.png

hyewi0dvnli640240505.png
% m; n# L' d+ w- ?
3、点击右上角的github链接,下载3.1.10版本的libmodbus库,然后上传到Ubuntu22.04指定目录下进行解压,解压出来的文件如下图所示。) m0 {& ?+ K$ M: n3 ^

zrz3i4voocw640240606.png

zrz3i4voocw640240606.png
( S# h# H9 p' u. A% B
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源码配置成功后,如下图所示。
    . y% d( c0 a: }

    a5dltqhfcgi640240706.png

    a5dltqhfcgi640240706.png
    7 }: s4 a& S9 T0 Q+ k7 ^
    5、在libmodbus源码目录下,执行 make && make install 命令,对源码进行编译和安装,编译安装成功后,在install目录下会生成Modbus相关的头文件和库文件,如下图所示。! n/ M0 V: l+ t# O* m" f

    nqsq2nq5fll640240806.png

    nqsq2nq5fll640240806.png
    4 s5 [0 O- c: Y# Q2 M! U3 s
    6、把include目录和lib目录都添加到CMake工程里面,然后在main.c函数里面编写一个测试例程,具体代码如下图所示。
      J% h! g6 {) O4 G2 ^

    drborap1dzl640240906.png

    drborap1dzl640240906.png
    4 u3 [0 r1 ?9 ?1 G9 ~
    7、编译上述示例代码,编译成功后把可执行文件OpenGateway拷贝到开发板,同时把lib目录下的libmodbus.so.5.1.0文件,也拷贝到开发板的/usr/lib目录下,并创建对应的软链接,如下图所示。
    9 w! Q, _% ]4 S5 t8 g% C3 U

    w2rmxjrxjb0640241006.png

    w2rmxjrxjb0640241006.png
    ( Y4 l7 E0 C! d7 Q% A! y$ W1 N2 s/ R
    8、使用 Modbus-Slave 软件工具,模拟一个Modbus-RTU从机,OK3506J-S开发平台每隔1秒轮询读取Modbus从机的数据,并在终端打印出来,如下图所示。* Z  y% F) F( y0 \) |

    kkkemqitiha640241106.jpg

    kkkemqitiha640241106.jpg
    $ N+ h. ?% {: N+ g6 v" k; k/ k5 c
    通过USB转RS485工具,OK3506J-S开发板与电脑进行通信。8 }. x1 m! y& {5 ]$ g

    cylr4xznah2640241206.jpg

    cylr4xznah2640241206.jpg
    ) j. G* N5 p" ]& g' y
    8、下一节,我们将继续移植另一个重要的通信模块,MQTT通信库,欢迎继续关注!
      _+ e4 Q4 ^. ?工程源码链接,或点击【阅读原文】https://gitee.com/embediot/open-gateway.git$ s: W; F! C: y2 D6 n+ @# Y+ P* k
    -END-
    , m3 A$ e6 q" k- D8 q% I往期推荐:点击图片即可跳转阅读
    & [2 f- k* L- w' P! b

    swp2d3pos4k640241306.jpg

    swp2d3pos4k640241306.jpg

    / W0 k1 u* S* P" l! f9 Y7 h嵌入式软硬件开发,面对学不完的新技术,咋办?6 ^, }5 Z3 [( c0 P, n5 ~8 G

    wnqdcq4vyny640241406.jpg

    wnqdcq4vyny640241406.jpg

    , c7 P! v% i3 |. C$ H) ^/ J最近在画图,电源稳定性对嵌入式硬件设备来说,实在是太重要了!
    8 X) H0 c8 X& c' w- I7 r

    tunydo0rgia640241506.jpg

    tunydo0rgia640241506.jpg
    1 W! D# o/ W8 E8 v/ Z) J& V( p% H
    告别深夜的方便面,嵌入式工程师如何改写生存法则?' [' r- r" x% t5 V. {
    我是老温,一名热爱学习的嵌入式工程师0 B" |$ E. K. j, }4 T
    关注我,一起变得更加优秀!
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表