第11章 libmodbus剖析與編程
11.1libmodbus開發(fā)庫
11.1.1 功能概要
libmodbus是一個(gè)免費(fèi)的跨平臺(tái)Modbus庫,支持RTU和TCP,遵循LGPL V2.1+協(xié)議,兼容Linux、Mac OS X、FreeBSD、QNX和Windows等操作系統(tǒng)。它可通過串口或TCP網(wǎng)絡(luò)與符合Modbus協(xié)議的設(shè)備發(fā)送/接收數(shù)據(jù),方便開發(fā)者構(gòu)建應(yīng)用程序或?qū)odbus通信集成到設(shè)備中。
作為開源軟件,還可以從GitHub網(wǎng)站獲取最新版本的代碼。
11.1.2 源碼獲取
libmodbus的源碼不斷更新,本教程選擇版本v3.1.10。
如下圖下載:
本源碼也放在網(wǎng)盤中如下目錄里:
解壓后,簡單查看源代碼根目錄的構(gòu)成:
②m4目錄:存放GNU m4文件,在這里對(duì)理解代碼沒有意義,可忽略。
③src目錄:全部libmodbus源文件。
④tests目錄:包含自帶的測(cè)試代碼,其他文件對(duì)理解源代碼關(guān)系不大,可以暫時(shí)忽略。
圖6-1 解壓libmodbus源代碼:
進(jìn)一步展開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下開發(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開發(fā)庫,借助于libmodbus發(fā)庫能夠非常方便地建立自己的應(yīng)用程序或者將Modbus通信協(xié)議嵌入單體設(shè)備libmodbus開發(fā)庫與應(yīng)用程序的基本關(guān)系如圖6-4所示。
圖6-3 應(yīng)用程序與libmodbus的關(guān)系:
在對(duì)libmodbus的接口及代碼框架簡單了解之后,不妨再深入細(xì)節(jié)一探究竟,看看libmodbus都實(shí)現(xiàn)了哪些基礎(chǔ)功能,以及源代碼中對(duì)Modbus各功能碼和消息頓是如何包裝的。具體內(nèi)容請(qǐng)參看下一章。
-
MODBUS
+關(guān)注
關(guān)注
28文章
1805瀏覽量
76996 -
LibModbus
+關(guān)注
關(guān)注
0文章
8瀏覽量
7258 -
開發(fā)庫
+關(guān)注
關(guān)注
0文章
7瀏覽量
4860
原文標(biāo)題:libmodbus開發(fā)庫 - RZ MPU工業(yè)控制教程連載(37)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論