公司新聞
西門子PLC讀取的儀表數據(浮點數)如何轉換為整數
發布時間: 2024-04-07 21:46 更新時間: 2024-12-27 09:10
西門子200PLC采用MODBUS RTU協議采集多功能儀表的數據,接收的數據均是32位的單精度浮點數,我怎么在PLC程序里面實現單精度浮點數與十進制之間的轉換?且問題的配圖如下:問題配圖結合圖片看了你的問題,其實你的問題就是你接收的到的32位數據是450F9000,而且你知道這個數據其實是單精度浮點數,轉換為10進制的結果是2297,你想知道在西門子200PLC中如何實現這個轉換工程?來說一下解題思路吧:1:你不知道西門子200PLC中如何實現這個轉換,可能的原因是你對16#450F9000如何轉換為2297可能也有點不理解?2:你不知道西門子200PLC中應該用什么樣的指令來實現這個轉換工程!16#450F9000如何轉換為2297?來先看一下計算器中的轉換吧:在計算器中先研究一下數據這是我電腦win10系統中的計算器切換到程序員模式,可以看到16進制的450F 9000轉換為十進制數是1158647808,和你的2297是不一樣的!--但是我在BIN就是二進制這里畫了紅線,我想說的是你如果對西門子PLC中32位浮點數的數據格式有清楚的理解的話,你根據這段二進制值就可以推算出這個實數的值是多少,因為我(控制研究控)在之前的問答和文章中有說過這個知識點,所以這里我就不再多說了!---但是我自己計算了一下結果就是2297!這個圖片就是我計算的過程PLC程序中如何將16進制的450F9000轉換為十進制數?其實西門子PLC中的ROUND指令就是用來取整的將浮點數轉換為整數的,西門子300和200PLC中都有這個指令,所以我都測試了一下!先看一下西門子300PLC執行的結果:STEP7項目中做的程序監控圖這個圖片是我在step7項目中建立的一個300CPU項目的簡單程序,可以看到我把16#450F9000這串數據認為是雙正式,通過DI_R指令轉換的結果存儲到MD10中得到的實數值是1.15865e+009,這是一個雙整數轉實數的指令,但是如題目所說開始的16#450F9000它本身就是浮點數格式,因此這里視為雙整數是不對的!而我又用round指令,將16#450F9000這個數據轉換為整數,可以看到MD20的結果就是2297,這個結果才是對的。這里就是已經認定16#450F9000這串數據代表的是32位實數,因此結果正確!再看一下西門子200PLC中的執行結果:西門子200程序模擬運行截圖這個圖片是我在西門子200的非官方模擬器中做的測試程序,可以看到和西門子300PLC的程序是很相似的,指令都是一樣的DI_R雙整數轉實數,和ROUND取整指令!也可以看到他們執行的結果都是一樣的,Zui重要的是通過round指令就可以實現將32位浮點數16#450F9000轉換為整數2297,也就是10進制的2297!
其他新聞
- 西門子1200PLC控制1500PLC進行DP通訊! 2024-12-27
- S7-1500PLC通信原理詳解 2024-12-27
- S7-1200 PLCSIM (仿真)V17及以下版本用法介紹 2024-12-27
- TIA博途如何確定1200 PLC的固件版本 2024-12-27
- STEP 7-MicroWIN SMART V2.8軟件安裝步驟詳解 2024-12-27
- 西門子200smart用中斷實時測出電機轉速 2024-12-27
- 西門子1200PLC通過博圖軟件更新CPU固件詳解 2024-12-27
- 如何使用西門子S71200 OB組織塊 2024-12-27
- 兩個1200 和一個HMI設備組態網絡連接方法 2024-12-27
- 應用實例 | 如何實現多伺服電機同步控制? 2024-12-27
- 兩臺西門子1200PLC進行PN通訊全過程 2024-12-27
- 自動化PLC過程控制與運動控制有何區別? 2024-12-27
- S7-200 SMART如何通過模擬量輸出控制變頻器頻率 2024-12-27
- 西門子PLC的幾種通信方式介紹 2024-12-27
- 西門子SCL編程實例:1200/1500PLC不定長數組選擇排序的運用編程! 2024-12-27
產品分類
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595