女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

libmodbus源碼框架分析

瑞薩MCU小百科 ? 來源:瑞薩MCU小百科 ? 2024-11-21 13:47 ? 次閱讀

11.2libmodbus源碼框架分析

libmodbus作為一個優秀且免費開源的跨平臺支持RTU 和 TCP模式的Modbus開發庫,非常值得大家借鑒和學習。本章對libmodbus源代碼進行閱讀和分析。

11.2.1核心函數

以Modbus RTU協議為例,主設備、從設備初始化后:

①主設備就可以啟動請求,即“發送消息”給從設備。

②從設備接收到請求后構造數據,啟動響應即“發送回復”。

③主機收到響應后,會“檢查響應”。

如下圖所示:

e06cd046-a307-11ef-93f3-92fbcf53809c.png

分析“libmodbus-3.1.10 estsunit-test-client.c”、“libmodbus-3.1.10 estsunit-test-server.c”,可以得到下面核心函數的使用過程:

e0747896-a307-11ef-93f3-92fbcf53809c.png

11.2.2框架與數據結構

站在APP開發的角度來說,使用上一節里介紹的libmodbus函數即可。但是,數據的傳輸必定涉及到底層數據傳輸。所以,從數據的收發過程,可以把使用libmodbus的源碼分為3層:

①APP:它知道要做什么,主設備要讀寫哪些寄存,從設備提供、接收什么數據。

②Modbus核心層:向上提供接口函數,向下調用底層代碼構造數據包并發送、接收數據包并解析。

③后端(數據傳輸):進行硬件相關的數據封包與發送、接收與解包。

e097e894-a307-11ef-93f3-92fbcf53809c.png

對于核心層、后端,抽象出了如下結構體:

e0a2cb74-a307-11ef-93f3-92fbcf53809c.png

核心層modbus_t結構體的成員含義如下:

e0b54696-a307-11ef-93f3-92fbcf53809c.png

后端modbus_backend_t結構體的成員含義如下:

成員 含義
unsigned int backend_type; 后端類型,是RTU還是TCP
unsigned int header_length; 頭部長度,比如RTU數據包前面需要有1字節的設備地址,頭部長度就是1
unsigned intchecksum_length; 校驗碼長度,RTU的校驗碼是2字節
unsigned int max_adu_length; ADU(數據包)最大長度
set_slave 設置從站地址
build_request_basis 設置RTU請求包的基本數據,這些數據的格式是一樣的,比如req[0]是從設備地址,req[1]是功能碼,req[2]和req[3]是寄存器地址,req[4]和req[5]是寄存器數量
build_response_basis 設置RTU回應包的基本數據,這些數據的格式是一樣的,比如req[0]是從設備地址,req[1]是功能碼
prepare_response_tid 生產傳輸標識TID,在TCP中使用
send_msg_pre 發送消息前的準備工作,對于RTU是填充CRC檢驗碼,對于TCP是填充頭部的Length
send 發送數據包
receive 接收數據包
recv 接收原始數據,receive會調用recv得到原始數據然后解析出數據包
check_integrity 檢查數據包的完整性
pre_check_confirmation 檢查響應數據包是否有效時,先執行pre_check_confirmation做一些簡單的檢查
connect 硬件相關的連接,對于RTU就是打開串口、設置串口波特率等;對于TCP則是連接對端
is_connected 判斷是否已經連接
close 關閉連接
flush 清空接收到的、未處理的數據
select 阻塞一段時間以等待數據
free 釋放分配的modbus_t等結構體

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 源碼
    +關注

    關注

    8

    文章

    668

    瀏覽量

    30142
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40603
  • RTU
    RTU
    +關注

    關注

    0

    文章

    432

    瀏覽量

    29270
  • LibModbus
    +關注

    關注

    0

    文章

    10

    瀏覽量

    7403

原文標題:libmodbus源碼框架分析 - RZ MPU工業控制教程連載(38)

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    第6章_libmodbus使用

    libmodbus是一個免費的跨平臺支持RTU和TCP的Modbus庫,遵循LGPL V2.1+協議。libmodbus支持Linux、Mac Os X、FreeBSD、QNX和Windows等
    的頭像 發表于 06-29 14:36 ?3834次閱讀
    第6章_<b class='flag-5'>libmodbus</b>使用

    【米爾-瑞薩RZ/G2UL開發板】3.libmodbus移植使用

    的工具集。 實現步驟 新建文件,拉取libmodbus源碼,地址如下: https://github.com/stephane/libmodbus 在這個目錄下新建一個文件夾用于存放
    發表于 02-02 23:49

    【米爾-瑞米派兼容樹莓派擴展模塊-試用體驗】安裝libmodbus

    上篇測試了串口的通信,本篇安裝開源modbus庫協議,為后續的項目做準備。 1、源碼下載: git clone https://github.com/stephane/libmodbus
    發表于 04-23 23:24

    《HarmonyOS 2.0源碼框架分析》直播答疑

    :鴻蒙的編譯框架是怎樣的;如何利用整個編譯框架實現簡單的 MCU 平臺移植,如STM32 ?回答:鴻蒙OS的源碼框架較復雜,本身涉及到移植的部分主要有2大塊:一塊是kernel內,一塊
    發表于 12-10 22:28

    libmodbus使用ubuntu系統

    libmodbus使用ubuntu系統使用libmodbusarm-linux使用libmodbus解壓安裝移植編譯modbus從機模擬ubuntu系統使用libmodbusubuntu系統可以直接
    發表于 11-04 07:57

    基于select操作的libmodbus

    libmodbus庫從軟件包里啟用, libmodbus是基于select操作的,依賴于文件系統和libc,需要在rt-thread中開啟對應的支持。一開始以為作為主站時,有函數可以自動的指定讀取
    發表于 01-11 08:13

    OpenHarmony Camera源碼分析

    captureInfoVideo是video相關的信息參數。三、總結本文首先對相機預覽、拍照和錄像功能的應用層進行了代碼分析,其次對框架層的流程進行了梳理,最后再對框架源碼進行
    發表于 09-06 11:21

    淺析基于serialX串口驅動移植libmodbus

    example” rtu 樣例程序。使用命令 pkgs --update 下載 libmodbus 源碼。libmodbus源碼文件數量比 freemodbus 少很多了??雌饋?/div>
    發表于 02-15 11:07

    【悟空派H3開發板免費體驗】4、安裝libmodbus

    做的項目需要和stm32進行串口通信,隨選用Modbus_RTU協議。以下為wukunpi安裝libmodbus庫的步驟。 下載源碼 可以直接下載附件 *附件
    發表于 10-25 01:29

    uboot源碼分析,思路還算清晰

    uboot源碼分析,思路還算清晰
    發表于 10-24 15:25 ?19次下載
    uboot<b class='flag-5'>源碼</b><b class='flag-5'>分析</b>,思路還算清晰

    嵌入式linux libmodbus的移植

    Modbus是一個工業通信系統,由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。其系統結構既包括硬件、亦包括軟件。它可應用于各種數據采集和過程監控。具體是啥,百度吧源碼下載
    發表于 11-01 16:57 ?9次下載
    嵌入式linux <b class='flag-5'>libmodbus</b>的移植

    libmodbus之嵌入式Linux使用及測試

    libmodbus使用ubuntu系統使用libmodbusarm-linux使用libmodbus解壓安裝移植編譯modbus從機模擬ubuntu系統使用libmodbusubuntu系統可以直接
    發表于 11-01 16:57 ?16次下載
    <b class='flag-5'>libmodbus</b>之嵌入式Linux使用及測試

    基于STM32移植UCGUI圖形界面框架(3.9.0源碼版本)

    基于STM32移植UCGUI圖形界面框架(3.9.0源碼版本)
    發表于 11-30 16:06 ?0次下載
    基于STM32移植UCGUI圖形界面<b class='flag-5'>框架</b>(3.9.0<b class='flag-5'>源碼</b>版本)

    存放OpenHarmony驅動子系統源碼信息的HDF驅動框架

    簡介 該倉主要存放OpenHarmony驅動子系統核心源碼信息(包括驅動框架、配置管理、配置解析、驅動通用框架模型、硬件通用平臺能力接口等),旨在為開發者提供更精準、更高效的開發環境,力求做到一次開發,多系統部署。 圖1 驅動
    發表于 04-13 11:13 ?8次下載
    存放OpenHarmony驅動子系統<b class='flag-5'>源碼</b>信息的HDF驅動<b class='flag-5'>框架</b>

    SSM框架源碼解析與理解

    SSM框架(Spring + Spring MVC + MyBatis)是一種在Java開發中常用的輕量級企業級應用框架。它通過整合Spring、Spring MVC和MyBatis三個框架,實現了
    的頭像 發表于 12-17 09:20 ?855次閱讀