数值范围_如何理解PLC对数值运算的定义与处理方式?
生活随笔
收集整理的這篇文章主要介紹了
数值范围_如何理解PLC对数值运算的定义与处理方式?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
戳上方藍字?"技成電工課堂”?關注我們哦!所謂數值運算,就是通過加減乘除來實現數值的變換。在PLC中,數值運算的指令不算難,難的是怎樣理解PLC對這些數值的定義與處理方式。所以,我將這部分知識分為上下兩篇文章來述說。在學習數值指令之前,我們得先了解這些數值有哪些特點。在數學中,數的分類有很多,那在PLC中,數值的分類是不是也有很多的?在學習之前,看到數值運算指令,我頓時瑟瑟發抖,不會在PLC中也要學習數學吧!后來才發現,是我杯弓蛇影了,PLC中的數值,除了我之前所說的各種進制數外,其實也不過是有整數與小數之分、整數與負數之分而已。這讓我松了一口氣。那么,我們正式開始這次的學習分享吧!
一、PLC的正數和負數
在數學中,負數和正數的區別,在于前面的正負號,例如-5和+5,而PLC中是不是也是這樣的呢?并不是的。PLC中,正負之分是通過最高位(b15或b31)的值來判定的。最高位為0表示正數,最高位為1表示負數。例如數據寄存器D0中最高位b15=0,表示D0的值為正數;若b15=1,那么D0的值就為負數。另外,除了最高位用于區分正負之外,其他位(b14…b0或b30…b0)的值也有區別,這主要是體現在負數的表示中。在說明這一點之前,我們先來了解一下什么是原碼、反碼和補碼。在數字電路中,數碼有原碼、反碼和補碼之分,這樣可以使得數值運算變得更為簡單。結合符號位(最高位),所謂原碼,是指數值本身,例如十進制數+11、-5用二進制數表示的原碼分別為01011、10101,此時最高位的“0”、“1”為符號位。在數字電路中規定,正數的原碼=反碼=補碼,也就是正數的原碼、反碼和補碼都是其本身,如上圖所示的+11,其反碼和補碼也是01011。而負數就不一樣了,符號位始終保持不變,負數的反碼就是對各數值位分別取反,如上圖所示的-5,反碼就是把1 0101變成1 1010。而負數的補碼等于其反碼加1,如1 1010+1=1 1011。那么,反碼和補碼存在的意義又是什么呢?其實,補碼的作用就是使運算變得更方便快捷,一個數減去另一個數,就等于這個數加上另一個數的相反數的補碼,從而把減法運算轉化為加法運算。如下圖所示,求解11-5,5的相反數為-5,從而把11-5轉化為11+(-5的補碼),并舍去進位,最后得到的結果恰好為6。為什么把減法轉化為加法就可以變得方便呢?這是因為加法的電路可以更為容易設計,這是數字電路的知識,在此我就不再展開闡述,大家感興趣的可以自行了解。類似于數字電路對原碼、反碼和補碼的定義,在PLC中,正數(符號位為0)直接用其原碼表示,而(符號位為1)負數就用其補碼表示。這說明,數據寄存器中的數據若為負數,那它各個數位的值并不代表它本身的值,而是其補碼。例如D0所存的數據為H8003,如下圖所示,其最高位b15=1,為負數,所以這是補碼,不能認為D0的數值大小為-3。由于最高位為符號位,所以PLC中數值的取值范圍也會有所不同,如16位和32位的取值范圍如下圖所示,此時取值范圍顯然不是±65536(16位)。另外,PLC中還對兩個數作出特別的規定,如圖所示的K0和K-32768,特別是B1000 0000 0000 0000不是表示負零。知道了PLC中對正負數的定義,我們繼續往下看它是怎么定義整數和小數的。二、PLC的定點數與浮點數
在PLC中,也可以根據小數點位置的不同,將數值分為整數和小數。其中整數就屬于定點數,那么,所謂定點數具體指的又是什么呢?1、定點數所謂定點,是指小數點是固定的,要么在最高位的左邊、要么在最低位的右邊。如上圖所示,若將小數點至于數值最高位的左邊,該數值就為純小數,所謂純小數,就是指整數部分為零的數,例如0.12、0.07等;若將小數點至于數值最低位的右邊,該數值就為整數,沒有小數部分,例如7、8、9等。一般都是采用整數的定點數表示,所以在談及定點數時,很多時候都默認是整數。結合上文所提的符號位,即帶符號的二進制整數稱為BIN數。大家細心點也可以發現,編程手冊中經常出現“BIN”這個詞,沒錯,它代表的就是二進制整數,而且帶有符號。所以,在之后談及BIN運算指令時,要注意其數值的正負。2、浮點數所謂浮點數,其實就是小數,“浮點”表示小數點是浮動的,隨著小數點位置的不同,數值的大小也會有所不同。在了解浮點數之前,我們先來了解一個概念:科學計數法。(1)科學計數法科學記數法是一種記數的方法。就是把一個數表示成a×10n的形式。如下圖所示,其中底數10是固定不變的,變的是a和n,所以要用科學計數法去表示一個數,只需知道a和n即可。類似的,在PLC中,浮點數就是用科學計數法表示的,又因為它由兩部分構成(a與10n),所以浮點數都是用32位表示,即占用兩個字元件。其中又分為十進制浮點數和二進制浮點數。(2)十進制浮點數根據上文所提,浮點數用兩個連續編號的數據寄存器(Dn+1,Dn)表示。如下圖所示,Dn保存浮點數的基數,Dn+1保存浮點數的指數,且兩個數都帶有符號位。例如(D0)=K666,(D1)=K-2,(D1,D0)就表示了十進制數666×10-2=6.66。在三菱PLC FX2N中,基數和指數的取值范圍各有不同,表示基數的Dn的取值范圍為±1000~9999或0,表示指數的Dn+1的取值范圍為-41~35。另外,十進制浮點數中,最小的數是1175×10-41,最大的數為3402×1035。至于為什么是這樣,我也不甚清楚,反正這是PLC中的規定。在PLC中,十進制浮點數是不能直接用來運算的,而是用二進制浮點數進行運算的,但它可以和二進制浮點數相互轉換,可用來進行數據監視。這就像是計算機系統,計算機中處理數據是基于二進制數的,但我們查看的時候看到的是十進制數,這是因為計算機把二進制數轉換為十進制數以便我們查看。(3)二進制浮點數二進制浮點數在PLC中的表示比較復雜,如上圖所示,同樣是用兩個連續編號的數據寄存器表示,其最高位(b31)仍然表示符號位,這個符號位表示的該浮點數本身的正負,而不是指數的正負。從上圖可以看出,指數N占有8位,即b30~b23,而基數a占有23位,即b22~b0。它們的取值如下圖所示,其中b0~b30的值為0或1。雖然二進制浮點數的表示方式比較復雜,但是能不能完全理解它,都不妨礙我們對浮點數的理解,對數值運算指令的運用。所以,不理解二進制浮點數的表方法,問題不大,能理解二進制浮點數本身就行。例如在三菱PLC FX3U中想輸入浮點數3.14,直接輸入“E3.14”就行,但在三菱PLC FX2N中不能直接輸入浮點數,想輸入浮點數,就得先輸入整數,再運用相應指令運算或轉化。知道了這些數值的相關定義和處理方式,那么我們在下篇文章就可以繼續分享數值運算的相關指令啦!最后,這次的學習分享就到這里吧!注:本文章內容都是基于三菱FX PLC 2N所寫選自《三菱FX系列PLC功能指令詳解》第五章第27~28課時(技成培訓網原創,作者:楊思慧,未經授權不得轉載,違者必究)
如何0基礎學習PLC?
關注回復?“?工控全套?”?
獲取更多工控案例與電氣軟件大全!
你的分享、點贊、在看我都喜歡總結
以上是生活随笔為你收集整理的数值范围_如何理解PLC对数值运算的定义与处理方式?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞鸽快递系统代码_自动售卖机、视觉+重力
- 下一篇: 谷歌历史版本_《地图中的历史》,本书中的