当前位置: 首页 > news >正文

Linux | i.MX6ULL Modbus 移植和使用(第二十一章)

01  

什么是 Modbus

第一个要重点理解的是:modbus 是一个“纯数据协议”。说到 modbus 协议,经常和 RS232 和 RS485以及以太网联系到一起。那么 modbus 和 RS485 协议有什么关系么?modbus 是纯粹的数据协议,和RS232、RS485 和网络等协议没有一点关系,如果在串口 RS232 上使用 modbus 协议,modbus 只处理通过串口发送前和串口接收后的数据,串口只是在发送数据前使用 modbus 协议来转换数据,接收数据之后,将数据通过 modbus 协议转换出来。

第二个要重点理解的是:modbus 是一个“通用的纯数据协议”。 modbus 是用于工业现场的总线协议,它不仅仅是在 PLC 或者单片机上可以使用,在任何可以跑代码的电子设备上都可以使用,因为 modbus对硬件没有任何定义。当然,modbus 应用范围主要是在工业控制上。如果每一台工业控制设备,都有一种自定义的协议,那将是很恐怖的,modbus 协议可以用在所有控制设备上,所有的工业控制设备都可以兼容modbus 协议。modbus 的本质是一个通用的纯数据协议,是用来规范工业现场各种控制设备的通信协议,

通过 modbus 协议控制设备,通过网络(RS485 和以太网等)可以和其它设备之间通信,不同厂商生产的设备可以很方便的连成工业网络。

 

---

 

02  

源码下载

可以从 libmodbus 官网 http://libmodbus.org/download/下载 3.1.4 版本。

直接定位:

https://github.com/stephane/libmodbus/releases/tag/v3.1.4

 

 

 

 

03  

 

编译和移植

 

 

交叉编译:arm-linux-gnueabihf

执行编译命令“make”,如下图所示 :

 

 

 

 

 

04  

移植 ARM 测试程序

进入目录/home/ubuntu/modbus/libmodbus-3.1.4/tests/,查看测试程序 random-testserver.c,如下图所示,

已经编译出来了,但是还是需要修改一下源码中的几个参数,重新编译。

 

然后执行命令交叉编译命令

    arm-linux-gnueabihf-gcc -o random-test-server random-test-server.c -L/home/ubuntu/modbus/install/lib-lmodbus -I/home/ubuntu/modbus/install/include/modbus

     

    生成可执行文件 random-test-server,如下图所示。

     

    如下图所示,可执行文件是 arm 架构的。至此,arm 服务端的测试例程“random-test-server”编译完成

     

     

     

    05  

    X86-Linux 的 Modbus 的移植和编译

     

    sudo make install

     

    进入 test 目录,前面我们编译的 arm 下的测试程序是 server,那么 Ubuntu 下运行的就应该是 client客户端,如下图所示。

     

    客户端需要在 tests 目录下的修改 random-test-client.c 文件服务端的 IP 地址,如下图所示,作者的服务端(也就是开发板端)IP“192.168.1.120”。

     

    执行命令:

      gcc -o random-test-client random-test-client.c `pkg-config --libs --cflags libmodbus`

       

      到此 x86 上的测试程序编译完成。

       

       

       

      06  

      测试

      首 先 确保 开 发 板和 虚 拟 机 Ubuntu 可 以 ping 通 , 如图 81.6.1 所 示 ,作 者 虚 拟机 的 IP 为“192.168.1.120”,通过开发板可以 ping 通 Ubuntu。

      arm 开发板执行

        ./random-test-server

        Ubuntu 执行

          ./random-test-client

           

           

           

           

          更多知识,诸位慢慢挖掘吧!!!

          故我在

          点击下方卡片 关注我

          ↓↓↓

           

           

          http://www.dtcms.com/a/390019.html

          相关文章:

        • 几种微前端框架的沙箱策略
        • 黑盒测试:测试用例设计之边界值设计方法(边界值分析法)(上点、离点、内点)健壮性测试、单缺陷假设理论
        • 【题解】P1548 [NOIP 1997 普及组] 棋盘问题
        • scala中for推导式详细讲解
        • React学习 ---- 基础知识学习
        • C语言实现MATLAB中的Fir1带通滤波器
        • 微信小程序开发教程(十七)
        • 9月18日星期四今日早报简报微语报早读
        • SqlSugar 问题记录
        • 记一次宝塔+nginx+php8+thinkphp8多应用下某个应用报错404的问题 - nginx、php日志全无 - 无法追踪
        • Windows Server远程桌面(RDP)安全优化
        • 工具链过于分散会导致哪些问题
        • 【RAG】Youtu-GraphRAG
        • 惠普LaserJet Pro M203dn黑白激光打印机双面卡纸维修一例
        • 专题二 二叉树中的深度优先搜索
        • Git 多人协作(1)
        • 设计模式第三章(迭代器模式)
        • 网络原理(4):HTTP协议 -- HTTP请求 -- 首行(请求方法)
        • 密钥下发服务中心:双重验证 + 实时监控的轻量级密钥管理解决方案
        • 硬件 - RK3588部分(4) - 原理图 - RK806
        • Sass开发【三】
        • 百度之星2025(第二场)
        • Ovis-U1:阿里巴巴推出的统一的多模态理解与生成模型
        • 深入剖析C++智能指针:unique_ptr与shared_ptr的资源管理哲学
        • 创建索引失败,表一直查询不了
        • 知识分享:网线和DB9正确接线方法
        • 【算法笔记】前缀树
        • 让ai完成原神调酒 试做
        • 第十四届蓝桥杯青少组C++选拔赛[2022.11.27]第二部分编程题(2、拼写单词)
        • 私有化部署UE像素流后,通过实时云渲染平台配置网络端口,实现云推流内网及公网访问