嵌入式Linux工業(yè)網(wǎng)關設計,離不開這個關鍵核心通信模塊

04/14 11:50
347
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

我是老溫,一名熱愛學習的嵌入式工程師。關注我,一起變得更加優(yōu)秀!

前一段時間,我們分享了嵌入式工業(yè)網(wǎng)關的設計思路,很多工控行業(yè)的工程師對其興趣比較大,具體可以點擊以下鏈接進行回顧:

朋友想自研一款嵌入式工業(yè)網(wǎng)關,分享一下我的設計思路!

工業(yè)網(wǎng)關主要用于采集工業(yè)現(xiàn)場設備的數(shù)據(jù),并且把這些設備數(shù)據(jù)傳輸到指定的云端網(wǎng)絡服務器,網(wǎng)關也可以自動運行預設的設備控制邏輯。

對于設備端數(shù)據(jù)采集,比較常用的傳輸協(xié)議是Modbus,嵌入式Linux設備一般采用libmodbus通信庫提供的API接口,來實現(xiàn)Modbus-RTU或Modbus-TCP通信
以下是基于RK3506J開發(fā)平臺,移植 libmodbus 通信庫的具體過程。

虛擬機系統(tǒng):Ubuntu22.04 LTS嵌入式開發(fā)平臺:OK3506J-SLinux內(nèi)核:Linux Kernel 6.1.99交叉編譯工具鏈:arm-linux-gcc

1、先根據(jù)開發(fā)平臺配套的資料文檔,搭建好交叉編譯環(huán)境,我使用VSCode+CMake進行工程框架構(gòu)建,基本的工程框架搭建后,如下圖所示。

2、訪問libmodbus的官網(wǎng),鏈接如下:https://libmodbus.org/

3、點擊右上角的github鏈接,下載3.1.10版本的libmodbus庫,然后上傳到Ubuntu22.04指定目錄下進行解壓,解壓出來的文件如下圖所示。

4、在libmodbus源碼目錄下,創(chuàng)建一個install目錄用來存放編譯后的庫文件,最后執(zhí)行./configure腳本對源碼進行配置。

mkdir?install./configure --host=arm-linux-gnueabihf ? ? ? ? ? ? --enable-static ? ? ? ? ? ? --prefix=/opt/work/ok3506j/third_party_libs/libmodbus-3.1.10/install/ ? ? ? ? ? ? CC=arm-linux-gcc

源碼配置成功后,如下圖所示。

5、在libmodbus源碼目錄下,執(zhí)行 make && make install 命令,對源碼進行編譯和安裝,編譯安裝成功后,在install目錄下會生成Modbus相關的頭文件和庫文件,如下圖所示。

6、把include目錄和lib目錄都添加到CMake工程里面,然后在main.c函數(shù)里面編寫一個測試例程,具體代碼如下圖所示。

7、編譯上述示例代碼,編譯成功后把可執(zhí)行文件OpenGateway拷貝到開發(fā)板,同時把lib目錄下的libmodbus.so.5.1.0文件,也拷貝到開發(fā)板的/usr/lib目錄下,并創(chuàng)建對應的軟鏈接,如下圖所示。

8、使用 Modbus-Slave 軟件工具,模擬一個Modbus-RTU從機,OK3506J-S開發(fā)平臺每隔1秒輪詢讀取Modbus從機的數(shù)據(jù),并在終端打印出來,如下圖所示。

通過USB轉(zhuǎn)RS485工具,OK3506J-S開發(fā)板與電腦進行通信。

8、下一節(jié),我們將繼續(xù)移植另一個重要的通信模塊,MQTT通信庫,歡迎繼續(xù)關注!

工程源碼鏈接,或點擊【閱讀原文】https://gitee.com/embediot/open-gateway.git

相關推薦