看到一個(gè)網(wǎng)友的問題,西門子200PLC采用MODBUS RTU協(xié)議采集多功能儀表的數(shù)據(jù),接收的數(shù)據(jù)均是32位的單精度浮點(diǎn)數(shù),我怎么在PLC程序里面實(shí)現(xiàn)單精度浮點(diǎn)數(shù)與十進(jìn)制之間的轉(zhuǎn)換?且問題的配圖如下:
問題配圖結(jié)合圖片看了你的問題,其實(shí)你的問題就是你接收的到的32位數(shù)據(jù)是450F9000,而且你知道這個(gè)數(shù)據(jù)其實(shí)是單精度浮點(diǎn)數(shù),轉(zhuǎn)換為10進(jìn)制的結(jié)果是2297,你想知道在西門子200PLC中如何實(shí)現(xiàn)這個(gè)轉(zhuǎn)換工程?來說一下解題思路吧:1:你不知道西門子200PLC中如何實(shí)現(xiàn)這個(gè)轉(zhuǎn)換,可能的原因是你對(duì)16#450F9000如何轉(zhuǎn)換為2297可能也有點(diǎn)不理解?2:你不知道西門子200PLC中應(yīng)該用什么樣的指令來實(shí)現(xiàn)這個(gè)轉(zhuǎn)換工程!16#450F9000如何轉(zhuǎn)換為2297?來先看一下計(jì)算器中的轉(zhuǎn)換吧:
在計(jì)算器中先研究一下數(shù)據(jù)這是我電腦win10系統(tǒng)中的計(jì)算器切換到程序員模式,可以看到16進(jìn)制的450F 9000轉(zhuǎn)換為十進(jìn)制數(shù)是1158647808,和你的2297是不一樣的!--但是我在BIN就是二進(jìn)制這里畫了紅線,我想說的是你如果對(duì)西門子PLC中32位浮點(diǎn)數(shù)的數(shù)據(jù)格式有清楚的理解的話,你根據(jù)這段二進(jìn)制值就可以推算出這個(gè)實(shí)數(shù)的值是多少,因?yàn)槲?控制研究控)在之前的問答和文章中有說過這個(gè)知識(shí)點(diǎn),所以這里我就不再多說了!---但是我自己計(jì)算了一下結(jié)果就是2297!
這個(gè)圖片就是我計(jì)算的過程PLC程序中如何將16進(jìn)制的450F9000轉(zhuǎn)換為十進(jìn)制數(shù)?其實(shí)西門子PLC中的ROUND指令就是用來取整的將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)的,西門子300和200PLC中都有這個(gè)指令,所以我都測(cè)試了一下!先看一下西門子300PLC執(zhí)行的結(jié)果:
STEP7項(xiàng)目中做的程序監(jiān)控圖這個(gè)圖片是我在step7項(xiàng)目中建立的一個(gè)300CPU項(xiàng)目的簡(jiǎn)單程序,可以看到我把16#450F9000這串?dāng)?shù)據(jù)認(rèn)為是雙正式,通過DI_R指令轉(zhuǎn)換的結(jié)果存儲(chǔ)到MD10中得到的實(shí)數(shù)值是1.15865e+009,這是一個(gè)雙整數(shù)轉(zhuǎn)實(shí)數(shù)的指令,但是如題目所說開始的16#450F9000它本身就是浮點(diǎn)數(shù)格式,因此這里視為雙整數(shù)是不對(duì)的!而我又用round指令,將16#450F9000這個(gè)數(shù)據(jù)轉(zhuǎn)換為整數(shù),可以看到MD20的結(jié)果就是2297,這個(gè)結(jié)果才是對(duì)的。這里就是已經(jīng)認(rèn)定16#450F9000這串?dāng)?shù)據(jù)代表的是32位實(shí)數(shù),因此結(jié)果正確!再看一下西門子200PLC中的執(zhí)行結(jié)果:
西門子200程序模擬運(yùn)行截圖這個(gè)圖片是我在西門子200的非官方模擬器中做的測(cè)試程序,可以看到和西門子300PLC的程序是很相似的,指令都是一樣的DI_R雙整數(shù)轉(zhuǎn)實(shí)數(shù),和ROUND取整指令!也可以看到他們執(zhí)行的結(jié)果都是一樣的,最重要的是通過round指令就可以實(shí)現(xiàn)將32位浮點(diǎn)數(shù)16#450F9000轉(zhuǎn)換為整數(shù)2297,也就是10進(jìn)制的2297!
審核編輯:湯梓紅
-
plc
+關(guān)注
關(guān)注
5028文章
13599瀏覽量
470908 -
西門子
+關(guān)注
關(guān)注
98文章
3113瀏覽量
117503 -
MODBUS
+關(guān)注
關(guān)注
28文章
1950瀏覽量
78675 -
程序
+關(guān)注
關(guān)注
117文章
3817瀏覽量
82180 -
浮點(diǎn)數(shù)
+關(guān)注
關(guān)注
0文章
61瀏覽量
16052
原文標(biāo)題:西門子PLC讀取的儀表數(shù)據(jù)(浮點(diǎn)數(shù))如何轉(zhuǎn)換為整數(shù)
文章出處:【微信號(hào):PLC與自控設(shè)備,微信公眾號(hào):PLC與自控設(shè)備】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
labview寫入浮點(diǎn)數(shù)到匯川 PLC中的數(shù)據(jù)轉(zhuǎn)換關(guān)鍵
請(qǐng)問怎么將IEEE 754(32位十六進(jìn)制)轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù)?
浮點(diǎn)數(shù)和整數(shù)解析
對(duì)浮點(diǎn)數(shù)的運(yùn)算怎么轉(zhuǎn)換成整數(shù)運(yùn)算?
modbus 如何讀取浮點(diǎn)數(shù)
浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)

python整數(shù)與浮點(diǎn)數(shù)分解
西門子PLC的基本數(shù)據(jù)類型及其使用
什么是浮點(diǎn)數(shù)
解析python整數(shù)浮點(diǎn)數(shù)不同進(jìn)制整數(shù)
西門子PLC 64位浮點(diǎn)數(shù)轉(zhuǎn)32位浮點(diǎn)數(shù)程序分享
西門子S7-1200PLC數(shù)據(jù)處理指令:浮點(diǎn)數(shù)轉(zhuǎn)整數(shù)指令
西門子PLC浮點(diǎn)數(shù)程序案例分享

modbus浮點(diǎn)數(shù)怎么讀取
西門子TIA Portal如何比較兩個(gè)浮點(diǎn)數(shù)相等

評(píng)論