三菱FX PLC學習之數值運算指令(上)
吳翠萍
發(fā)布于2020-10-15 15:44
55
2
標簽:三菱PLC,三菱FX PLC
【點擊領取】三菱案例 | 西門子案例 | 電工手冊 | 工具箱 軟件
【點擊獲取】三菱PLC例程117個|西門子PLC例程777個
【點擊下載】2020新電工仿真軟件
所謂數值運算,就是通過加減乘除來實現(xiàn)數值的變換。在PLC中,數值運算的指令不算難,難的是怎樣理解PLC對這些數值的定義與處理方式。所以,我將這部分知識分為上下兩篇文章來述說。
在學習數值指令之前,我們得先了解這些數值有哪些特點。
在數學中,數的分類有很多,那在PLC中,數值的分類是不是也有很多的?在學習之前,看到數值運算指令,我頓時瑟瑟發(fā)抖,不會在PLC中也要學習數學吧!
后來才發(fā)現(xiàn),是我杯弓蛇影了,PLC中的數值,除了我之前所說的各種進制數外,其實也不過是有整數與小數之分、整數與負數之分而已。這讓我松了一口氣。那么,我們正式開始這次的學習分享吧!
一、PLC的正數和負數
在數學中,負數和正數的區(qū)別,在于前面的正負號,例如-5和 5,而PLC中是不是也是這樣的呢?并不是的。
PLC中,正負之分是通過高位(b15或b31)的值來判定的。高位為0表示正數,高位為1表示負數。
例如數據寄存器D0中高位b15=0,表示D0的值為正數;若b15=1,那么D0的值就為負數。
另外,除了高位用于區(qū)分正負之外,其他位(b14…b0或b30…b0)的值也有區(qū)別,這主要是體現(xiàn)在負數的表示中。在說明這一點之前,我們先來了解一下什么是原碼、反碼和補碼。
在數字電路中,數碼有原碼、反碼和補碼之分,這樣可以使得數值運算變得更為簡單。結合符號位(高位),所謂原碼,是指數值本身,例如十進制數 11、-5用二進制數表示的原碼分別為01011、10101,此時高位的“0”、“1”為符號位。
在數字電路中規(guī)定,正數的原碼=反碼=補碼,也就是正數的原碼、反碼和補碼都是其本身,如上圖所示的 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中還對兩個數作出特別的規(guī)定,如圖所示的K0和K-32768,特別是B1000 0000 0000 0000不是表示負零。
知道了PLC中對正負數的定義,我們繼續(xù)往下看它是怎么定義整數和小數的。
二、PLC的定點數與浮點數
在PLC中,也可以根據小數點位置的不同,將數值分為整數和小數。其中整數就屬于定點數,那么,所謂定點數具體指的又是什么呢?
1、定點數
所謂定點,是指小數點是固定的,要么在高位的左邊、要么在低位的右邊。
如上圖所示,若將小數點至于數值高位的左邊,該數值就為純小數,所謂純小數,就是指整數部分為零的數,例如0.12、0.07等;若將小數點至于數值低位的右邊,該數值就為整數,沒有小數部分,例如7、8、9等。一般都是采用整數的定點數表示,所以在談及定點數時,很多時候都默認是整數。
結合上文所提的符號位,即帶符號的二進制整數稱為BIN數。大家細心點也可以發(fā)現(xiàn),編程手冊中經常出現(xiàn)“BIN”這個詞,沒錯,它代表的就是二進制整數,而且?guī)в蟹枴?/span>
所以,在之后談及BIN運算指令時,要注意其數值的正負。
2、浮點數
所謂浮點數,其實就是小數,“浮點”表示小數點是浮動的,隨著小數點位置的不同,數值的大小也會有所不同。在了解浮點數之前,我們先來了解一個概念:科學計數法。
(1)科學計數法
科學記數法是一種記數的方法。就是把一個數表示成a×10n的形式。如下圖所示,其中底數10是固定不變的,變的是a和n,所以要用科學計數法去表示一個數,只需知道a和n即可。
類似的,在PLC中,浮點數就是用科學計數法表示的,又因為它由兩部分構成(a與10n),所以浮點數都是用32位表示,即占用兩個字元件。其中又分為十進制浮點數和二進制浮點數。
(2)十進制浮點數
根據上文所提,浮點數用兩個連續(xù)編號的數據寄存器(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中的規(guī)定。
在PLC中,十進制浮點數是不能直接用來運算的,而是用二進制浮點數進行運算的,但它可以和二進制浮點數相互轉換,可用來進行數據監(jiān)視。這就像是計算機系統(tǒng),計算機中處理數據是基于二進制數的,但我們查看的時候看到的是十進制數,這是因為計算機把二進制數轉換為十進制數以便我們查看。
(3)二進制浮點數
二進制浮點數在PLC中的表示比較復雜,如上圖所示,同樣是用兩個連續(xù)編號的數據寄存器表示,其高位(b31)仍然表示符號位,這個符號位表示的該浮點數本身的正負,而不是指數的正負。從上圖可以看出,指數N占有8位,即b30~b23,而基數a占有23位,即b22~b0。它們的取值如下圖所示,其中b0~b30的值為0或1。
雖然二進制浮點數的表示方式比較復雜,但是能不能完全理解它,都不妨礙我們對浮點數的理解,對數值運算指令的運用。所以,不理解二進制浮點數的表方法,問題不大,能理解二進制浮點數本身就行。
例如在三菱PLC FX3U中想輸入浮點數3.14,直接輸入“E3.14”就行,但在三菱PLC FX2N中不能直接輸入浮點數,想輸入浮點數,就得先輸入整數,再運用相應指令運算或轉化。
知道了這些數值的相關定義和處理方式,那么我們在下篇文章就可以繼續(xù)分享數值運算的相關指令啦!
后,這次的學習分享就到這里吧!
注:本文章內容都是基于三菱FX PLC 2N所寫
選自《三菱FX系列PLC功能指令詳解》第五章第27~28課時
(技成培訓網原創(chuàng),作者:楊思慧,未經授權不得轉載,違者必究?。?/strong>

技成培訓
微信公眾號:jcpeixun
|

技成電工課堂
微信公眾號:jcdgkt
|

技成PLC課堂
微信公眾號:jc-plc
|