第11章 libmodbus剖析與編程
11.1libmodbus開(kāi)發(fā)庫(kù)
11.1.1 功能概要
libmodbus是一個(gè)免費(fèi)的跨平臺(tái)Modbus庫(kù),支持RTU和TCP,遵循LGPL V2.1+協(xié)議,兼容Linux、Mac OS X、FreeBSD、QNX和Windows等操作系統(tǒng)。它可通過(guò)串口或TCP網(wǎng)絡(luò)與符合Modbus協(xié)議的設(shè)備發(fā)送/接收數(shù)據(jù),方便開(kāi)發(fā)者構(gòu)建應(yīng)用程序或?qū)odbus通信集成到設(shè)備中。
作為開(kāi)源軟件,還可以從GitHub網(wǎng)站獲取最新版本的代碼。
11.1.2 源碼獲取
libmodbus的源碼不斷更新,本教程選擇版本v3.1.10。
如下圖下載:

本源碼也放在網(wǎng)盤(pán)中如下目錄里:

解壓后,簡(jiǎn)單查看源代碼根目錄的構(gòu)成:
①doc目錄:libmodbus庫(kù)的各API接口說(shuō)明文檔。
②m4目錄:存放GNU m4文件,在這里對(duì)理解代碼沒(méi)有意義,可忽略。
③src目錄:全部libmodbus源文件。
④tests目錄:包含自帶的測(cè)試代碼,其他文件對(duì)理解源代碼關(guān)系不大,可以暫時(shí)忽略。
圖6-1 解壓libmodbus源代碼:

進(jìn)一步展開(kāi)src代碼目錄,如圖6-3所示:
圖6-2 libmodbus源碼構(gòu)成:

各文件作用如下:
①win32:定義在Windows下使用Visual Studio編譯時(shí)的項(xiàng)目文件和工程文件以及相關(guān)配置選項(xiàng)等。其中,modbus-9.sln默認(rèn)使用Visual Studio 2008。
②Makefile.am:Makefile.am是Linux下AutoTool編譯時(shí)讀取相關(guān)編譯參數(shù)的配置文件,用于生成Makefile文件,因?yàn)橛糜贚inux下開(kāi)發(fā),所以在這里暫時(shí)忽略。
③modbus.c:核心文件,實(shí)現(xiàn)Modbus協(xié)議層,定義共通的Modbus消息發(fā)送和接收函數(shù)各功能碼對(duì)應(yīng)的函數(shù)。
modbus.h:libmodbus對(duì)外暴露的接口API頭文件。
④modbus-data.c:數(shù)據(jù)處理的共通函數(shù),包括大小端相關(guān)的字節(jié)、位交換等函數(shù)。
⑤modbus-private.h:libmodbus內(nèi)部使用的數(shù)據(jù)結(jié)構(gòu)和函數(shù)定義。
⑥modbus-rtu.c:通信層實(shí)現(xiàn),RTU模式相關(guān)的函數(shù)定義,主要是串口的設(shè)置、連接及消息的發(fā)送和接收等。
modbus-rtu.h:RTU模式對(duì)外提供的各API定義。
modbus-rtu-private.h:RTU模式的私有定義。
⑦modbus-tcp.c:通信層實(shí)現(xiàn),TCP模式下相關(guān)的函數(shù)定義,主要包括TCP/IP網(wǎng)絡(luò)的設(shè)置連接、消息的發(fā)送和接收等。
modbus-tcp.h:定義TCP模式對(duì)外提供的各API定義。
modbus-tcp-private.h:TCP模式的私有定義。
⑧modbus-version.h.in:版本定義文件。
11.1.3 libmodbus與應(yīng)用程序的關(guān)系
libmodbus是一個(gè)免費(fèi)的跨平臺(tái)支持RTU和TCP的Modbus開(kāi)發(fā)庫(kù),借助于libmodbus發(fā)庫(kù)能夠非常方便地建立自己的應(yīng)用程序或者將Modbus通信協(xié)議嵌入單體設(shè)備libmodbus開(kāi)發(fā)庫(kù)與應(yīng)用程序的基本關(guān)系如圖6-4所示。
圖6-3 應(yīng)用程序與libmodbus的關(guān)系:

在對(duì)libmodbus的接口及代碼框架簡(jiǎn)單了解之后,不妨再深入細(xì)節(jié)一探究竟,看看libmodbus都實(shí)現(xiàn)了哪些基礎(chǔ)功能,以及源代碼中對(duì)Modbus各功能碼和消息頓是如何包裝的。具體內(nèi)容請(qǐng)參看下一章。
-
MODBUS
+關(guān)注
關(guān)注
28文章
2492瀏覽量
83605 -
LibModbus
+關(guān)注
關(guān)注
0文章
10瀏覽量
7644 -
開(kāi)發(fā)庫(kù)
+關(guān)注
關(guān)注
0文章
7瀏覽量
4943
發(fā)布評(píng)論請(qǐng)先 登錄
第6章_libmodbus使用
【米爾-瑞薩RZ/G2UL開(kāi)發(fā)板】3.libmodbus移植使用
【米爾-全志T113-i開(kāi)發(fā)板試用】移植libmodbus庫(kù)到米爾-全志T113-i開(kāi)發(fā)板
【龍芯2K0300蜂鳥(niǎo)板試用】+4.libmodbus移植
【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】移植libmodbus庫(kù)到Omni3576開(kāi)發(fā)板
libmodbus使用ubuntu系統(tǒng)
基于select操作的libmodbus庫(kù)
Modbus實(shí)際項(xiàng)目—libmodbus驅(qū)動(dòng)庫(kù)的使用
【飛凌i.MX9352開(kāi)發(fā)板試用】 + libmodbus移植 測(cè)試 485接口
【悟空派H3開(kāi)發(fā)板免費(fèi)體驗(yàn)】4、安裝libmodbus庫(kù)
libmodbus之嵌入式Linux使用及測(cè)試
移植libmodbus庫(kù)到米爾-全志T113-i開(kāi)發(fā)板
libmodbus源碼框架分析
簡(jiǎn)單認(rèn)識(shí)libmodbus開(kāi)發(fā)庫(kù)
評(píng)論