在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

libmodbus源碼框架分析

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

11.2libmodbus源碼框架分析

libmodbus作為一個(gè)優(yōu)秀且免費(fèi)開源的跨平臺(tái)支持RTU 和 TCP模式的Modbus開發(fā)庫,非常值得大家借鑒和學(xué)習(xí)。本章對(duì)libmodbus源代碼進(jìn)行閱讀和分析。

11.2.1核心函數(shù)

以Modbus RTU協(xié)議為例,主設(shè)備、從設(shè)備初始化后:

①主設(shè)備就可以啟動(dòng)請(qǐng)求,即“發(fā)送消息”給從設(shè)備。

②從設(shè)備接收到請(qǐng)求后構(gòu)造數(shù)據(jù),啟動(dòng)響應(yīng)即“發(fā)送回復(fù)”。

③主機(jī)收到響應(yīng)后,會(huì)“檢查響應(yīng)”。

如下圖所示:

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

分析“l(fā)ibmodbus-3.1.10 estsunit-test-client.c”、“l(fā)ibmodbus-3.1.10 estsunit-test-server.c”,可以得到下面核心函數(shù)的使用過程:

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

11.2.2框架與數(shù)據(jù)結(jié)構(gòu)

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

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

②Modbus核心層:向上提供接口函數(shù),向下調(diào)用底層代碼構(gòu)造數(shù)據(jù)包并發(fā)送、接收數(shù)據(jù)包并解析。

③后端(數(shù)據(jù)傳輸):進(jìn)行硬件相關(guān)的數(shù)據(jù)封包與發(fā)送、接收與解包。

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

對(duì)于核心層、后端,抽象出了如下結(jié)構(gòu)體:

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

核心層modbus_t結(jié)構(gòu)體的成員含義如下:

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

后端modbus_backend_t結(jié)構(gòu)體的成員含義如下:

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    641

    瀏覽量

    29213
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40130
  • RTU
    RTU
    +關(guān)注

    關(guān)注

    0

    文章

    413

    瀏覽量

    28679
  • LibModbus
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    7258

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

文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    第6章_libmodbus使用

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

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

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

    【米爾-瑞米派兼容樹莓派擴(kuò)展模塊-試用體驗(yàn)】安裝libmodbus

    上篇測試了串口的通信,本篇安裝開源modbus庫協(xié)議,為后續(xù)的項(xiàng)目做準(zhǔn)備。 1、源碼下載: git clone https://github.com/stephane/libmodbus
    發(fā)表于 04-23 23:24

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

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

    libmodbus使用ubuntu系統(tǒng)

    libmodbus使用ubuntu系統(tǒng)使用libmodbusarm-linux使用libmodbus解壓安裝移植編譯modbus從機(jī)模擬ubuntu系統(tǒng)使用libmodbusubuntu系統(tǒng)可以直接
    發(fā)表于 11-04 07:57

    基于select操作的libmodbus

    libmodbus庫從軟件包里啟用, libmodbus是基于select操作的,依賴于文件系統(tǒng)和libc,需要在rt-thread中開啟對(duì)應(yīng)的支持。一開始以為作為主站時(shí),有函數(shù)可以自動(dòng)的指定讀取
    發(fā)表于 01-11 08:13

    OpenHarmony Camera源碼分析

    captureInfoVideo是video相關(guān)的信息參數(shù)。三、總結(jié)本文首先對(duì)相機(jī)預(yù)覽、拍照和錄像功能的應(yīng)用層進(jìn)行了代碼分析,其次對(duì)框架層的流程進(jìn)行了梳理,最后再對(duì)框架源碼進(jìn)行
    發(fā)表于 09-06 11:21

    淺析基于serialX串口驅(qū)動(dòng)移植libmodbus

    example” rtu 樣例程序。使用命令 pkgs --update 下載 libmodbus 源碼libmodbus源碼文件數(shù)量比 freemodbus 少很多了。看起來
    發(fā)表于 02-15 11:07

    【悟空派H3開發(fā)板免費(fèi)體驗(yàn)】4、安裝libmodbus

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

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

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

    嵌入式linux libmodbus的移植

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

    libmodbus之嵌入式Linux使用及測試

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

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

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

    存放OpenHarmony驅(qū)動(dòng)子系統(tǒng)源碼信息的HDF驅(qū)動(dòng)框架

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

    SSM框架源碼解析與理解

    SSM框架(Spring + Spring MVC + MyBatis)是一種在Java開發(fā)中常用的輕量級(jí)企業(yè)級(jí)應(yīng)用框架。它通過整合Spring、Spring MVC和MyBatis三個(gè)框架,實(shí)現(xiàn)了
    的頭像 發(fā)表于 12-17 09:20 ?258次閱讀
    主站蜘蛛池模板: 天天摸天天舔天天操| 波多野结衣一级特黄毛片| 把小嫩嫩曰出白浆| 老师叫我下面含着精子去上课| 色综合天天网| 99色在线视频| 看视频免费网址| 熟妇毛片| 91九色成人| 19xxxxxxxxx日本69| 日韩高清性爽一级毛片免费| 夜夜综合网| 亚洲区| 日韩欧美视频一区| 天天射天天色天天干| 亚洲一区二区三区免费在线观看| 日本视频www| 日日躁夜夜躁狠狠天天| 欧美视频免费一区二区三区| 男女免费网站| 久久国产乱子伦精品免费午夜| 中文字幕第15页| 国产高清在线视频| 欧美亚洲综合另类成人| 色视频免费看| 日夜操在线视频| 亚洲午夜久久久久久噜噜噜| 国产成人在线播放视频| 91大神视频在线播放| 欧美精品国产第一区二区| 美女屁屁免费视频网站| 亚洲成人国产| 亚色综合| 超刺激gay腐文h文| 爱爱视频天天看| 色香欲亚洲天天综合网| 狠狠色婷婷狠狠狠亚洲综合| 男人操女人视频免费| 美女视频黄免费| 深夜网站免费| 另类免费视频|