您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>通信技術(shù)>

modbus浮點(diǎn)數(shù)如何處理

2018年02月08日 09:49 電子發(fā)燒友整理 作者: 用戶評論(0

Modbus 協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。

此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。

modbus浮點(diǎn)數(shù)處理方式

浮點(diǎn)數(shù)保存的字節(jié)格式如下:

modbus浮點(diǎn)數(shù)如何處理

這里S 代表符號(hào)位,1是負(fù),0是正E

偏移127的冪,二進(jìn)制階碼=(EEEEEEEE)-127。

M 24位的尾數(shù)保存在23位中,只存儲(chǔ)23位,最高位固定為1。

此方法用最較少的位數(shù)實(shí)現(xiàn)了較高的有效位數(shù),提高了精度。零是一個(gè)特定值,冪是0 尾數(shù)也是0。

浮點(diǎn)數(shù)-12.5作為一個(gè)十六進(jìn)制數(shù)0xC1480000保存在存儲(chǔ)區(qū)中,

這個(gè)值如下:

modbus浮點(diǎn)數(shù)如何處理

浮點(diǎn)數(shù)和十六進(jìn)制等效保存值之間的轉(zhuǎn)換相當(dāng)簡單。下面的例子說明上面的值-12.5如何轉(zhuǎn)換。

浮點(diǎn)保存值不是一個(gè)直接的格式,要轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù),位必須按上面的浮點(diǎn)數(shù)保存格式表所列的那樣分開,例如:

modbus浮點(diǎn)數(shù)如何處理

從這個(gè)例子可以得到下面的信息

符號(hào)位是1 表示一個(gè)負(fù)數(shù)

冪是二進(jìn)制10000010或十進(jìn)制130,130減去127是3,就是實(shí)際的冪。

尾數(shù)是后面的二進(jìn)制數(shù)10010000000000000000000

在尾數(shù)的左邊有一個(gè)省略的小數(shù)點(diǎn)和1,這個(gè)1在浮點(diǎn)數(shù)的保存中經(jīng)常省略,加上一個(gè)1和小數(shù)點(diǎn)到尾數(shù)的開頭,得到尾數(shù)值如下:

1.10010000000000000000000

接著,根據(jù)指數(shù)調(diào)整尾數(shù)。一個(gè)負(fù)的指數(shù)向左移動(dòng)小數(shù)點(diǎn)。一個(gè)正的指數(shù)向右移動(dòng)小數(shù)點(diǎn)。因?yàn)橹笖?shù)是3,尾數(shù)調(diào)整如下:

1100.10000000000000000000

結(jié)果是一個(gè)二進(jìn)制浮點(diǎn)數(shù),小數(shù)點(diǎn)左邊的二進(jìn)制數(shù)代表所處位置的2的冪,例如:

1100表示(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。

小數(shù)點(diǎn)的右邊也代表所處位置的2的冪,只是冪是負(fù)的。例如:

.100.。。表示(1*2^(-1))+(0*2^(-2))+(0*2^(-2))。。。=0.5。

這些值的和是12.5。因?yàn)樵O(shè)置的符號(hào)位表示這數(shù)是負(fù)的,因此十六進(jìn)制值0xC1480000表示-12.5。

非常好我支持^.^

(86) 26%

不好我反對

(245) 74%

( 發(fā)表人:李建兵 )

      發(fā)表評論

      用戶評論
      評價(jià):好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?