Modbus 通訊在工業(yè)現(xiàn)場應(yīng)用非常廣泛,當(dāng)然也會有多技術(shù)難點,本文主要講解基于通訊的數(shù)據(jù)處理,不講通訊的基礎(chǔ)知識,你過你連Modbus通訊的報文都不知道是什么,那可以不用往下看了。
通訊讀取普通的數(shù)據(jù)可能大家都會處理,如果遇到浮點數(shù)的數(shù)據(jù)類型,那就需要一定的處理才能使用。
一、Modbus RTU中的浮點數(shù)處理
這位同學(xué)在通訊中遇到一個浮點數(shù)的問題,搞了好久沒有處理好。
在我的追問下,得知是和一個溫度儀表通訊,采集儀表的02和03地址數(shù)據(jù),這個數(shù)據(jù)是一個32位的數(shù)據(jù),從表格里面我獲取到一個重要詳細,這個數(shù)據(jù)是以大端模式進行排布的。
浮點數(shù)的大端模式存儲遵循IEEE標(biāo)準(zhǔn)格式,高位字節(jié)存儲在內(nèi)存低地址,低位字節(jié)存儲在內(nèi)存高地址。而三菱PLC中浮點數(shù)是以端的類型排布的,因此,需要把數(shù)據(jù)的高16位和低16位交換處理。
如下圖,浮點數(shù)數(shù)據(jù)保存在D0~D3這4個寄存器,我們要先把D0和D1通過SWAP和ADD指令進行合并,然后保存到D100這個32位浮點數(shù)數(shù)據(jù)的高位寄存器(D101);然后把D2和D3通用的方法合并到D100(地位寄存器)。最后通過一條浮點數(shù)傳送指令傳送到D102,就能得到最終的數(shù)據(jù)。
二、Modbus ASCII中的浮點數(shù)處理
Modbus有2種類型的報文,RTU比較簡單處理,如果得到的數(shù)據(jù)是字符類型的浮點數(shù),比如和智能相機通訊,對方測量到某物體長度位5.2534mm,把這個數(shù)據(jù)通過ASCII碼發(fā)送過來時,需要對照ASCII表(下圖只是ASCII表中一部分),5對應(yīng) H35,小數(shù)點.對應(yīng)H2E,2對應(yīng)H32,3對應(yīng)H33,4對應(yīng)H34,也就是這個浮點數(shù)轉(zhuǎn)換成字符應(yīng)該是 35 2E 32 35 33 34。
假如這個字符串給到了PLC的D0~D5這6個寄存器,下面用PLC用MOV指令模擬數(shù)據(jù)給如
數(shù)據(jù)的排布由于是8位的數(shù)據(jù)類型,需要兩兩合并成一個16位的寄存器,使用SWAP指令把第2、第4、第6個寄存器轉(zhuǎn)移到高位,再加上上一個寄存器,就能合并成16位數(shù)據(jù),結(jié)果保存到D10、D11、D12,最后通過一條字符串轉(zhuǎn)浮點數(shù)的指令DEVAL,把數(shù)據(jù)轉(zhuǎn)換成浮點數(shù)保存到D20(由于三菱軟件浮點數(shù)只顯示3位,所以最后一位看不到,但是真實數(shù)據(jù)是有的,你用于其他計算或者顯示到觸摸屏,都會運算最后一位小數(shù)的)
相信通過以上內(nèi)容,大家以后都能應(yīng)對浮點數(shù)轉(zhuǎn)換的問題了。
-
MODBUS
+關(guān)注
關(guān)注
28文章
2283瀏覽量
81473 -
通訊
+關(guān)注
關(guān)注
9文章
935瀏覽量
36174 -
浮點數(shù)
+關(guān)注
關(guān)注
0文章
62瀏覽量
16284 -
RTU
+關(guān)注
關(guān)注
0文章
446瀏覽量
30142
原文標(biāo)題:通訊中浮點數(shù)數(shù)據(jù)的處理
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
labview數(shù)據(jù)類型與PLC 數(shù)據(jù)類型之間的轉(zhuǎn)換(來自于寫入浮點數(shù)到匯川 PLC中的數(shù)據(jù)轉(zhuǎn)換關(guān)鍵的修改)
labview和單片機通訊浮點數(shù)如何處理?
定點數(shù)和浮點數(shù)的區(qū)別是什么
浮點數(shù)在單片機數(shù)據(jù)采集監(jiān)控系統(tǒng)中的應(yīng)用
浮點數(shù)的表示方法

浮點數(shù)常用的編碼方法

浮點數(shù)在內(nèi)存中的存儲

如何在FPGA中正確處理浮點數(shù)運算
談一談浮點數(shù)的精度問題

什么是浮點數(shù)
西門子PLC浮點數(shù)程序案例分享

評論