电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

556

主题

556

帖子

3836

积分

四级会员

Rank: 4

积分
3836
发表于 前天 08:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师
$ |( S& U" X  u2 y0 j关注我,一起变得更加优秀!
: G" {8 L6 P4 J, g+ O6 f前一段时间,我们分享了嵌入式工业网关的设计思路,很多工控行业的工程师对其兴趣比较大,具体可以点击以下链接进行回顾:
& s5 A: {2 R; n% M: U朋友想自研一款嵌入式工业网关,分享一下我的设计思路!: C* ?2 G( L; \6 J& g& j
工业网关主要用于采集工业现场设备的数据,并且把这些设备数据传输到指定的云端网络服务器,网关也可以自动运行预设的设备控制逻辑。7 t( Z+ w- |/ |

wdrr2uw3m3i640240305.jpg

wdrr2uw3m3i640240305.jpg
# i9 a$ I  f! p! u, E& k
对于设备端数据采集,比较常用的传输协议是Modbus,嵌入式Linux设备一般采用libmodbus通信库提供的API接口,来实现Modbus-RTU或Modbus-TCP通信
/ S8 X) ]# [- B' r$ t以下是基于RK3506J开发平台,移植 libmodbus 通信库的具体过程。) I: W# ^& N9 E  P. A/ q  }
虚拟机系统:Ubuntu22.04 LTS嵌入式开发平台:OK3506J-SLinux内核:Linux Kernel 6.1.99交叉编译工具链:arm-linux-gcc9 z  k% v: s4 t) e/ L
1、先根据开发平台配套的资料文档,搭建好交叉编译环境,我使用VSCode+CMake进行工程框架构建,基本的工程框架搭建后,如下图所示。
& c+ U4 D$ M/ x' Z5 y5 H

mqefxh4kqcl640240405.png

mqefxh4kqcl640240405.png
* c- H9 ]6 i) g8 r
2、访问libmodbus的官网,链接如下:https://libmodbus.org/
0 X& J4 n" i' {. V8 h

hyewi0dvnli640240505.png

hyewi0dvnli640240505.png

  @9 B; k9 r  W3、点击右上角的github链接,下载3.1.10版本的libmodbus库,然后上传到Ubuntu22.04指定目录下进行解压,解压出来的文件如下图所示。5 T( @0 i5 u. H

zrz3i4voocw640240606.png

zrz3i4voocw640240606.png

3 H; U8 J* [+ V4、在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源码配置成功后,如下图所示。
    3 Z' E/ `' z. G8 A, e7 h

    a5dltqhfcgi640240706.png

    a5dltqhfcgi640240706.png
    / ^7 g- i6 D+ |
    5、在libmodbus源码目录下,执行 make && make install 命令,对源码进行编译和安装,编译安装成功后,在install目录下会生成Modbus相关的头文件和库文件,如下图所示。4 P$ [. W: a7 ?- l6 b

    nqsq2nq5fll640240806.png

    nqsq2nq5fll640240806.png

    ' ^/ l# m( L) H) Q+ R6、把include目录和lib目录都添加到CMake工程里面,然后在main.c函数里面编写一个测试例程,具体代码如下图所示。  C8 |& U* f- f" |

    drborap1dzl640240906.png

    drborap1dzl640240906.png

    / a$ [+ d* d& f; y# g$ o7、编译上述示例代码,编译成功后把可执行文件OpenGateway拷贝到开发板,同时把lib目录下的libmodbus.so.5.1.0文件,也拷贝到开发板的/usr/lib目录下,并创建对应的软链接,如下图所示。% ?( `8 h6 e3 w3 Y+ d. j/ y

    w2rmxjrxjb0640241006.png

    w2rmxjrxjb0640241006.png
    - X# t7 x$ _. `
    8、使用 Modbus-Slave 软件工具,模拟一个Modbus-RTU从机,OK3506J-S开发平台每隔1秒轮询读取Modbus从机的数据,并在终端打印出来,如下图所示。# `* h3 x& u# D; k8 }

    kkkemqitiha640241106.jpg

    kkkemqitiha640241106.jpg

    $ B& `' g) h% r* ]% w+ t通过USB转RS485工具,OK3506J-S开发板与电脑进行通信。7 l1 }2 K. [; S& I, j2 K3 p" N6 p

    cylr4xznah2640241206.jpg

    cylr4xznah2640241206.jpg

    4 A* L4 `8 I- E# }8、下一节,我们将继续移植另一个重要的通信模块,MQTT通信库,欢迎继续关注!; z0 t9 W) _1 f- z5 v& A
    工程源码链接,或点击【阅读原文】https://gitee.com/embediot/open-gateway.git7 b: I9 O: y6 g
    -END-3 f* C- t' ^7 n, _" Q
    往期推荐:点击图片即可跳转阅读6 B3 B1 i0 K$ ]# D8 e% G

    swp2d3pos4k640241306.jpg

    swp2d3pos4k640241306.jpg

    9 N5 U: n: J  w  O$ ?8 T嵌入式软硬件开发,面对学不完的新技术,咋办?
    0 e! g: S; ^9 E( l/ a$ _4 f

    wnqdcq4vyny640241406.jpg

    wnqdcq4vyny640241406.jpg
    ! R) g% G4 X6 N# b! `; _) T
    最近在画图,电源稳定性对嵌入式硬件设备来说,实在是太重要了!1 X9 q; i' e7 E

    tunydo0rgia640241506.jpg

    tunydo0rgia640241506.jpg

    2 T3 M# A' q$ [* Q% C5 [告别深夜的方便面,嵌入式工程师如何改写生存法则?
      J7 ?4 X) ~2 z我是老温,一名热爱学习的嵌入式工程师
    $ ^( P% U$ p8 z6 f4 V2 G关注我,一起变得更加优秀!
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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