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

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

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

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