modbus浮點數如何處理
Modbus 協議是應用于電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網絡(例如以太網)和其它設備之間可以通信。它已經成為一通用工業標準。有了它,不同廠商生產的控制設備可以連成工業網絡,進行集中監控。
此協議定義了一個控制器能認識使用的消息結構,而不管它們是經過何種網絡進行通信的。它描述了一控制器請求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內容的公共格式。
modbus浮點數處理方式
浮點數保存的字節格式如下:
這里S 代表符號位,1是負,0是正E
偏移127的冪,二進制階碼=(EEEEEEEE)-127。
M 24位的尾數保存在23位中,只存儲23位,最高位固定為1。
此方法用最較少的位數實現了較高的有效位數,提高了精度。零是一個特定值,冪是0 尾數也是0。
浮點數-12.5作為一個十六進制數0xC1480000保存在存儲區中,
這個值如下:
浮點數和十六進制等效保存值之間的轉換相當簡單。下面的例子說明上面的值-12.5如何轉換。
浮點保存值不是一個直接的格式,要轉換為一個浮點數,位必須按上面的浮點數保存格式表所列的那樣分開,例如:
從這個例子可以得到下面的信息:
符號位是1 表示一個負數
冪是二進制10000010或十進制130,130減去127是3,就是實際的冪。
尾數是后面的二進制數10010000000000000000000
在尾數的左邊有一個省略的小數點和1,這個1在浮點數的保存中經常省略,加上一個1和小數點到尾數的開頭,得到尾數值如下:
1.10010000000000000000000
接著,根據指數調整尾數。一個負的指數向左移動小數點。一個正的指數向右移動小數點。因為指數是3,尾數調整如下:
1100.10000000000000000000
結果是一個二進制浮點數,小數點左邊的二進制數代表所處位置的2的冪,例如:
1100表示(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。
小數點的右邊也代表所處位置的2的冪,只是冪是負的。例如:
.100.。。表示(1*2^(-1))+(0*2^(-2))+(0*2^(-2))。。。=0.5。
這些值的和是12.5。因為設置的符號位表示這數是負的,因此十六進制值0xC1480000表示-12.5。
非常好我支持^.^
(86) 26%
不好我反對
(245) 74%
相關閱讀:
- [電子說] EtherCAT從站轉modbus RTU協議轉換網關用modbus slave測試的方法 2023-10-24
- [電子說] DLT698轉modbus協議網關把電能數據接到wincc的方法 2023-10-24
- [電子說] 軟啟動器與PLC通過ModbusRTU轉Profinet網關連接的配置案例 2023-10-24
- [電子說] Modbus485轉profinet網關連接伺服主軸驅動器與PLC的具體應用 2023-10-24
- [電子說] 通過MODBUS轉PROFINET(PROFINET轉MODBUS)網關連接EP1C系列通用伺服驅動器 2023-10-24
- [電子說] 軟啟動器與PLC通過ModbusRTU轉Profinet網關連接的配置案例 2023-10-24
- [電子說] Modbus485轉profinet網關連接伺服主軸驅動器與PLC的具體應用 2023-10-24
- [電子說] CRT-通用3-6軸MF系列多功能運動控制系統示教編輯案例 2023-10-21
( 發表人:李建兵 )