西門子PLC讀取的儀表數據(浮點數)如何轉換為整數

2021-01-08 控制研究控

看到一個網友的問題,西門子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取整指令!

也可以看到他們執行的結果都是一樣的,最重要的是通過round指令就可以實現將32位浮點數16#450F9000轉換為整數2297,也就是10進位的2297!

所以說這個問題應該是很簡單的,就一個round指令就可以實現浮點數取整的功能,其實這個在模擬量轉換中經常用到的,應該說是一個常見指令,做工控的朋友都應該了解!

相關焦點

  • 三菱PLC浮點運算應用指令
    浮點運算應用指令能實現浮點數的轉換、比較、四則運算、開方運算、三角函數等功能,浮點運算應用指令大都為32位指令。一、二進位浮點比較與區間比較指令本文引用地址:http://www.eepw.com.cn/article/201612/331348.htm二進位浮點比較ECMP指令比較源操作數S1與源操作數S2內的32位二進位浮點數,根據大小一致比較結果,對應輸出驅動目的操作數D指定軟元件開始的連續3個位軟元件的狀態,二、二進位浮點數與十進位浮點數轉換指令二進位浮點數轉換為十進位浮點數
  • 西門子PLC編程軟體
    西門子plc編程軟體是一款專為西門子設備而專門開發的plc編程軟體。西門子編程軟體中文版的主要為了幫助用戶使用西門子的設備,機械設備需要進行特定的程序才能夠進行工作,這款軟體就是讓你的設備按你的想法去工作。太平洋下載中心為您提供西門子plc編程軟體官方下載。
  • 今天學Python第三課常用的數據類型有三種字符串,整數,浮點數
    比如上一關的print(1314)這就是我們常見的數據類型第二種:整數, 英文為integer, 簡稱int。 Python的整數和我們現實數學中定義的一樣:整數是正整數、零和負整數的統稱。說白了,就是沒有小數點的數字。
  • MSSQL數據類型-浮點數據類型 (real、float、decimal、numeric)
    浮點數據類型包括real型、float型、decimal型和numeric型。浮點數據類型用於存儲十進位小數。在SQL Server 中浮點數值的數據採用上捨入(Round up)的方式進行存儲,所謂上捨入也就是,要捨入的小數部分不論其大小,只要是一個非零的數,就要在該數字的最低有效位上加1,並進行必要的進位。由於浮點數據為近似值,所以並非數據類型範圍內的所有數據都能精確地表示。real型數據的存儲大小為4個字節,可精確到小數點後第7位數字。
  • 同是PLC中國的與外國的有何不同
    西門子的PLC抗幹擾能力強,可靠性高西門子公司生產的plc業界算知名度最高的品牌之一。因為西門子一直在工業科技領域佔領了一定的地位,所有旗下生產的產品,相對來說都是值得信賴的。西門子的plc在我國的應用也相當廣泛,在冶金、化工、印刷生產線等領域都有應用。
  • 基於PROFIBUS總線技術的自控系統和智能儀表在水處理行業中的應用
    現場PLC控制站與儀表、專用控制設備之間通過標準工業現場總線(Profibus-DP/PA)進行數據通信,現場控制站通過西門子SCALANCEX408-2交換機與lOOMbit/s冗餘光纖以太環網相連,完成與中控室監控計算機之間的通信。  變配電室現場控制站的I/O點數為:DI=208點,DO=72點,AI=0點,AO=0點。其硬體組態配置如圖4所示。
  • 西門子 PLC 幾種常見的連接口和通訊協議
    -3V至-15V」,信號「0」為「3至15V」),易損壞接口電路的晶片,又因為與TTL電平(0~「2.0V」)不兼容故需使用電平轉換電路方能與TTL電路連接。功能與USB比較接近,隨著USB埠的越來越普遍,將會出現更多的把USB轉換成RS-232或其它接口的轉換裝置。通過USB接口可連接更多的RS-232設備,不僅可獲得更高的傳輸速度,實現真正的即插即用,同時解決了USB接口不能遠距離傳輸的缺點(USB通訊距離在5米內)。
  • PLC實現溫度數據採集升級的應用方案
    某懸掛式工件熱處理調質線,產品質量極不穩定,引起客戶的抱怨,責丞工藝、設備技術人查找問題所在,拿出解決方案,分析原因可能由於淬火槽內淬火液的溫度高低不均,如何能夠測出工件在淬火液中的溫度分布情況?這是解決問題的關鍵。傳統的方法是傳感器加儀表,若同時測工件周圍六點的淬火液溫度,需要六塊儀表,在淬火液中高溫工件四周溫度的變化劇烈、複雜,如何觀察記錄呢?
  • 西門子1500高速脈衝採集功能和應用及數據的處理
    舉例說明西門子S7-1500高速脈衝採集功能和應用,包括數據的處理。高速計數模塊的組態和應用 下面舉例子,來說明西門子S71500系列PLC高速脈衝採集的用法。 如圖所示的扭矩轉速傳感器,轉速碼盤數為60,扭矩-50N.m-50 N.m對應5K-15K脈衝。
  • 浮點運算為什麼不準?大數運算中也更有優勢
    浮點運算一直非常玄學。任何一個學過小數點運算的擁有小學數學水平的人,都應該知道 1.0-0.9=0.1。
  • 16進位數轉換成10進位整數的VC++程序
    二進位數據很少直接用在Visual C++++程序中,因為C++通常被視作高級語言。然而,對於要在兩類不同設備間傳輸信息的通信網絡而言,二進位數或十六進位數的傳輸過程比十進位數更為簡單。
  • 51單片機整數二一十進位轉換的快速算法
    關鍵詞 89C5l 單片機二一十進位轉換快速算法 89C5l系列單片機歷經20多年的發展,仍然長盛不衰,在工業控制及儀器儀表中得到廣泛應用;用於89C5l單片機軟體開發的Keil C51編譯系統也日臻成熟,成為89C5l系列單片機軟體開發的優先選擇。
  • PHP丨PHP基礎知識之數據類型之間相互轉換
    昨天剛講完PHP基礎知識數據類型,今天就來講講PHP數據類型的轉換。轉換變量或者值的類型,轉換成其他數據類型的方法主要分為兩大類:自動轉換和強制轉換。註:字符串、數字參與運算,字符串先轉換成數字;轉換後的數字從字符串開始的數值開始,不帶小數點則為int,否則為false;字符串"abcsd"直接轉換成0;整型轉化為浮點型,由於浮點型的精度範圍大於整型
  • Cortex―M0單片機二-十進位整數轉換的快速算法
    1 傳統的實現方法 要實現快速運算,很自然地想到經典的雙字節二進位整數轉換成3位元組BCD碼整數的子程序。其採用的算法是預先將一個3位元組隊列的內容清除為0,然後依次將需要變換成BCD碼的二進位整數的每位依次左移至CY位,再把3位元組隊列中的數據帶進位自身相加,並對相加的結果進行十進位調整。通過16次移位完成運算,結果為壓縮格式的3位元組BCD編碼。
  • 如何正確讀取燃氣表止數
    燃氣表止數,就是燃氣表到抄表日所得讀數。指針式燃氣表和水錶相似,個位指針順時轉10圈,十位指針逆時針進一位。十位指針逆時針轉10圈,百位指針進一位。 燃氣用量的計算一般各燃氣公司抄表員每一月或二月抄一次表,並基本固定在同一天。
  • 如何通過PLC調試手搖輪,手動控制步進電機?
    一、動作描述:系統的框架如下圖一臺3U的plc,控制了3臺步進電機,分別控制了X、Y、Z這3個軸,PLC接了一個手搖輪,可以手動控制這3個軸,手搖輪的第一個旋鈕可以選擇控制不同的軸,第二個懸念可以選擇速度的倍率
  • MATLAB數據進位轉換
    MATLAB中,數據的運算、讀取和存儲過程有時會涉及到進位的轉換。不了解進位轉換方法的話會非常惱火。1、單個數據轉換比如我們想知道一個十進位數的二進位表示,來看具體的位置1還是0.這時可以用dec2bin函數。
  • 大數據開發基礎:Java基礎數據類型
    首先,Java八種數據類型,其實可以整合為四大數據類型,分別是:整型(byte、short、int、long)、浮點型(float、double)、字節型(char)、布爾型(boolean)。Java基礎數據類型
  • 比拼浮點運算速度 超算排行榜是這樣「算」出來的
    江蘇理工學院計算機工程學院副院長範洪輝副教授告訴記者,浮點是指小數點位置不固定的數,它們執行的算術運算會消耗大量計算資源並可能產生誤差,所以單位時間內浮點運算的次數,是衡量超算性能的基準程式之一。常州信息職業技術學院軟體與大數據學院錢銀中博士表示,計算機只能存儲和處理整數,通過整數乘以某個基數的整數次冪,是計算機表示實數尤其是小數的方法。「浮點運算在運算數大小變化範圍很大的場合可以實現很高的計算精度,是科學研究中的典型運算。
  • 羅克韋爾與西門子大型PLC通訊方案評析
    1 引 言 由於不同公司的自動化控制產品各有其應用特點和編程特點,尤其某些公司的plc編程軟體中還內置了很多適合不同應用的專用模塊,甚至有些公司的plc產品開始針對某些行業的應用特點