三菱FX PLC學習之數(shù)值運算指令(下)
吳翠萍
發(fā)布于2020-10-16 15:33
14
2
標簽:三菱PLC,三菱FX PLC
【點擊領取】三菱案例 | 西門子案例 | 電工手冊 | 工具箱 軟件
【點擊獲取】三菱PLC例程117個|西門子PLC例程777個
【點擊下載】2020新電工仿真軟件
在上篇文章中,我們知道了如何在PLC中區(qū)分數(shù)值的正負,并知道了什么是整點數(shù)和浮點數(shù)。那么,這次我們接著學習PLC的各種數(shù)值運算指令。
所謂數(shù)值運算,就是通過加減乘除來實現(xiàn)數(shù)值的變換。然,在三菱FX PLC 2N中,這些個加減乘除具體又是怎樣實現(xiàn)的呢?
一、BIN數(shù)的四則運算指令
BIN數(shù),即帶符號的二進制整數(shù),它的四則運算指令包括加、減、乘、除指令。
(1)ADD(加)指令、SUB(減)指令
從編程手冊的截圖中,可以看到,ADD指令和SUB指令都有脈沖執(zhí)行型和連續(xù)執(zhí)行型兩種,且都可用于16位和32位。當然,它們的適用軟元件為字軟元件。
加、減指令都有兩個源操作數(shù)(S1·)、(S2·)和一個目的操作數(shù)(D·),它們在梯形圖中的形式如下圖所示。在ADD指令中,其代表的含義為(S1) (S2)=(D),將S1中的數(shù)值加上S2中的數(shù)值,然后把和存放到D中。同理,在SUB指令中,其代表的含義為(S1)-(S2)=(D),將S1中的數(shù)值減去S2中的數(shù)值,然后把差存放到D中。
看過上篇文章的都知道,BIN數(shù)是帶有符號的,所以它們在運算的過程中,也要考慮到符號的影響。加、減指令在執(zhí)行后要影響到三個標志位,如下圖所示。
M8022這個進位標志位,看過我系列文章的人可能還有點印象,其實我在寫到移位指令就提到過它。不記得的可以回顧一下移位指令的內容。
小學生都知道,兩個數(shù)相加減會涉及到借位和進位的問題,例如十進制數(shù)運算7 8=15,其中的1就是進位,15-7=8中的1被借位。同理,PLC的BIN數(shù)四則運算也要考慮進位和借位問題,當兩個數(shù)相加,它們的和大于(D)所能保存的大值后,M8022狀態(tài)為ON。同理,兩個數(shù)相減,它們的差小于(D)所能保存的小值后,M8021狀態(tài)為ON。
所謂(D)所能保存的大值或小值,是指這些參與運算的字軟元件所能保存的數(shù)值限值,包括符號位在內。例如上圖的例子,(D0)=K32767,執(zhí)行指令ADD D0 K1 D10后,和為K32768,一個16位的字元件,所能保存的大正整數(shù)為K32767(包括符號位),所以D10超出大值,此時進位標志位M8022為ON,另外,從圖中可以看到,D10的值變?yōu)?,所以此時M8020也為ON。同理,減法的溢出也是大同小異,我在此就不再舉例,大家感興趣的,可以用軟件編程驗算一下結果。
ADD指令和SUB指令比較簡單,實際運用不用我多說大家也知道,反正哪里需要加減,哪里就會出現(xiàn)它們。但要注意的一點是,PLC每掃描一個周期,這些指令就執(zhí)行一次,此時,重復執(zhí)行加、減運算可能不是我們需要的,所以應該選擇脈沖執(zhí)行型指令ADDP、SUBP或邊沿觸發(fā)型驅動條件。
(2)MUL(乘)指令、DIV(除)指令
從編程手冊的截圖中,可以看到,MUL指令和DIV指令也有脈沖執(zhí)行型和連續(xù)執(zhí)行型兩種,且都可用于16位和32位,但終址D只有在16位運算時才可以用V、Z字元件。
和加、減指令一樣,乘、除指令都有兩個源操作數(shù)(S1·)、(S2·)和一個目的操作數(shù)(D·),它們在梯形圖中的形式如下圖所示。不一樣的地方在于乘法指令和除法指令的目的操作數(shù),在用于16位運算時目的操作數(shù)占兩個字元件D、D 1,用于32位運算時目的操作數(shù)占四個字元件D、D 1、D 2、D 3。這是很顯然的,因為乘法所得的積往往比因數(shù)大很多,若此時僅用一個字元件(16位運算時)保存結果是不夠的。另外,除法運算在無法整除的時候,就會有余數(shù),所以就要用多一個字元件來保存余數(shù)(16位運算時)。
在MUL指令中,這些操作數(shù)代表的含義為(S1)×(S2)=(D 1,D),將S1中的數(shù)值乘以S2中的數(shù)值,然后把積存放到D 1,D兩個連續(xù)字元件中。同理,在DIV指令中,其代表的含義為(S1)÷(S2)=(D)…(D 1),將S1中的數(shù)值除以S2中的數(shù)值,然后把商存放到D中,把余數(shù)存放到D 1中。其梯形圖形式如下圖所示,16位和32位所占用的字元件有所不同。
MUL指令和DIV指令也比較簡單,實際運用也不用我多說。和加、減指令一樣,PLC每掃描一個周期,這些指令就執(zhí)行一次,此時,重復執(zhí)行乘、除運算可能不是我們需要的,所以應該選擇脈沖執(zhí)行型指令MULP、DIVP或邊沿觸發(fā)型驅動條件。
除法運算的除數(shù)是不能為零的,PLC中也一樣,若除數(shù)為0,錯誤標志位M8067=ON。
知道了BIN數(shù)的四則運算指令后,我們接著來看加1、減1指令。
二、加1指令INC和減1指令DEC
加1、減1,顧名思義,是指該指令執(zhí)行一次,數(shù)值加1或減1,。INC指令和DEC指令只有目的操作數(shù)(D·),其梯形圖形式如下圖所示。
INC指令和DEC指令在執(zhí)行的過程中不會影響到標志位M8020、M8021、M8022。當采用連續(xù)執(zhí)行型時,顯然,D會不斷地進行加1或減1操作,此時若超出其限值會怎樣呢?其實,INC指令和DEC指令是一個單位累加(累減)環(huán)形計數(shù)器,如下圖所示。
在執(zhí)行INC指令時,若當前值為-1,加1 后其值就變?yōu)?,再加1就變?yōu)?;若當前值為32767(H7FFF),加1后變?yōu)?32768(H8000)。同理,在執(zhí)行DEC指令時,若當前值為1,減1 后其值就變?yōu)?,再減1就變?yōu)?1;若當前值為-32768(H8000),減1后變?yōu)?2767(H7FFF)。
談及INC指令,我就會想到一道題:求1 2 3 …… 99的和。這道題用INC指令顯然可以很簡單的實現(xiàn)計算,如下圖所示。這是我隨手編的一段程序,結合INC指令和ADD指令就可以算出1 2 3 …… 99=4950。當然,這只是隨手編的,大家也可以嘗試一下其他方法。
INC指令和DEC指令
經(jīng)常和變址尋址配合應用在累加或累減及檢索等程序中。例如把D0~的D100的數(shù)值相加等,在這里我就不編程序啦。
知道了四則運算指令和加1、減1指令后,我們繼續(xù)來學習一個比較繞的指令:求補碼指令NEG。
三、求補碼指令NEG
NEG指令和INC指令、DEC指令一樣,只有一個操作數(shù),驅動條件成立時,將D的數(shù)值求補碼,然后將結果送回到D中去。
上篇文章提到,在PLC中,正數(shù)(符號位為0)直接用其原碼表示,而(符號位為1)負數(shù)就用其補碼表示。而NEG指令是直接對數(shù)值進行求反加1(包括符號位),不管當前值是正數(shù)還是負數(shù),所以,其求出來的結果,和定義上的補碼有所出入。
例如-3在寄存器中用補碼表示(HFFFD),用NEG指令求補后,結果為 3(H0003);再如 6在寄存器中用原碼表示(H0006),用NEG指令求補后,結果為-6的補碼(HFFFA)。
顯然,NEG指令其實是求相反數(shù)的指令,當然,這是基于負數(shù)本就是用補碼表示的前提下的。
學到這里,已經(jīng)有7個指令了,為了不那么累,這次的分享學習就先到這里吧!
注:本文章內容都是基于三菱FX PLC 2N所寫
選自《三菱FX系列PLC功能指令詳解》第五章第29~38課時
技成培訓網(wǎng)原創(chuàng),作者:楊思慧,未經(jīng)授權不得轉載,違者必究~

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

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

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