• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

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

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

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

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

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

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

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

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

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

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

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

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 命令,對(duì)源碼進(jìn)行編譯和安裝,編譯安裝成功后,在install目錄下會(huì)生成Modbus相關(guān)的頭文件和庫文件,如下圖所示。

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

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

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

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

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

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

相關(guān)推薦