IIo工業(yè)樹莓派如何解析MODBUS中的浮點(diǎn)型數(shù)據(jù)
前言
工業(yè)樹莓派支持MODBUS TCP/RTU通訊協(xié)議,因此,在使用Modbus協(xié)議的溫濕度傳感器、電子天平、PLC等設(shè)備場景中應(yīng)用十分廣泛。當(dāng)工業(yè)樹莓派作為MODBUS TCP/RTU主站時(shí),最多可以連接30個(gè)從站設(shè)備,由此可見,工業(yè)樹莓派具有較好的可擴(kuò)展性。
HongKe Technology
虹
/
科
/
方
/
案
01
面 臨 的 挑 戰(zhàn)
MODBUS從站設(shè)備有16位整型數(shù)據(jù),但應(yīng)用更多的是32位浮點(diǎn)型數(shù)據(jù),這是因?yàn)?2位浮點(diǎn)型數(shù)據(jù)能夠在通訊過程中的控制更加精準(zhǔn),這類常應(yīng)用于如電子天平的體重?cái)?shù)據(jù)、溫濕度傳感器的溫度/濕度數(shù)據(jù)、電機(jī)的轉(zhuǎn)速等場景。
但在這個(gè)過程中會(huì)面臨數(shù)據(jù)解析的問題:浮點(diǎn)型數(shù)據(jù)的應(yīng)用需要遵循IEE745的數(shù)據(jù)轉(zhuǎn)換規(guī)則,以實(shí)現(xiàn)與整型數(shù)據(jù)的轉(zhuǎn)換和利用。
寄存器只能存放16位數(shù)據(jù),所以浮點(diǎn)型數(shù)據(jù)會(huì)被拆分成兩個(gè)數(shù)據(jù)部分,分別存放在相鄰的兩個(gè)寄存器中,具體如下:
1. 在進(jìn)行數(shù)據(jù)讀取的時(shí)候,需要把兩個(gè)寄存器數(shù)據(jù)通過數(shù)據(jù)解析還原成浮點(diǎn)型數(shù)據(jù)(如圖1中所示);
2. 在進(jìn)行數(shù)據(jù)寫入的時(shí)候,要通過數(shù)據(jù)解析把一個(gè)浮點(diǎn)型數(shù)據(jù)拆分成兩個(gè)十六進(jìn)制分別寫入到相應(yīng)的寄存器內(nèi)(如圖2中所示)。
圖1.寄存器數(shù)據(jù)合并成浮點(diǎn)型數(shù)據(jù)
圖2. 浮點(diǎn)型數(shù)據(jù)寫入到寄存器
02
解 決 方 案
針對(duì)此類問題,虹科提供一種解析方法,具體如下:
1、讀取兩個(gè)寄存器數(shù)據(jù),通過位操作把兩個(gè)寄存器數(shù)據(jù)合并成浮點(diǎn)型數(shù)據(jù)。
2、寫入一個(gè)浮點(diǎn)型數(shù)據(jù),通過位運(yùn)算把32位浮點(diǎn)型數(shù)據(jù)拆分成兩個(gè)16位整型數(shù)據(jù),分別寫入到兩個(gè)寄存器中。
03
總 結(jié)
工業(yè)樹莓派采用Debian系統(tǒng),開源性較高,可以通過C/C++、Java、C#、Python等方式進(jìn)行編程。關(guān)于浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換成16進(jìn)制整型數(shù)據(jù)并進(jìn)行數(shù)據(jù)解析可以使用的方法有很多,以上僅為其中一種數(shù)據(jù)解析方法,這種解析方法存在誤差,誤差范圍為±0.01,可以適用于對(duì)浮點(diǎn)型數(shù)據(jù)精度要求不是特別高的情況。針對(duì)以上場景,如有其他解析方法,歡迎添加工程師微信進(jìn)行交流。
04
方 案 簡 介
虹科工業(yè)樹莓派產(chǎn)品具有實(shí)時(shí)Raspbian系統(tǒng),內(nèi)置Broadco多核處理器具備諸如圖像處理類復(fù)雜任務(wù)處理能力。
此外,它小巧靈活,功耗低,支持用Python/Java/C/C++/C#、Node-RED可視化編程工具進(jìn)行開發(fā),還能實(shí)現(xiàn)CPDESYS軟PLC功能,在數(shù)據(jù)采集和小型控制等場景可幫助用戶快速創(chuàng)建應(yīng)用,實(shí)現(xiàn)工業(yè)物聯(lián)網(wǎng)和數(shù)字化生產(chǎn)。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7006瀏覽量
88954
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論