三菱FX PLC學(xué)習(xí)之?dāng)?shù)據(jù)處理指令(下)
吳翠萍
發(fā)布于2020-11-19 16:45
5
2
標(biāo)簽:三菱PLC,三菱FX 入門,三菱FX PLC
【點擊領(lǐng)取】三菱案例 | 西門子案例 | 電工手冊 | 工具箱 軟件
【點擊獲取】三菱PLC例程117個|西門子PLC例程777個
【點擊下載】2020最新電工仿真軟件
本來打算花一篇文章的篇幅來寫數(shù)據(jù)處理指令的,但寫著寫著發(fā)現(xiàn),一篇文章根本寫不完QAQ。
上篇文章結(jié)束得有點突兀,那這里也再不啰嗦,我們直奔主題吧。
01、字交換指令XCH
字交換指令,顧名思義,就是將兩個字軟元件的數(shù)據(jù)相互交換。從編程手冊的截圖可以看到,XCH指令可以用于16位和32位,有脈沖執(zhí)行型和連續(xù)執(zhí)行型。顯然,XCH指令在使用時應(yīng)采用脈沖執(zhí)行型,不然采用連續(xù)執(zhí)行型,PLC每一個掃描周期都執(zhí)行一次,交換來交換去的這是交換了個寂寞。
XCH指令的梯形圖形式也很簡單,有兩個操作數(shù)D1.、D2.,當(dāng)驅(qū)動條件成立時,將終址D1和D2的數(shù)據(jù)相互交換。不知道為什么,這個指令讓我想起了一些狗血小說中的靈魂交換情節(jié),emm……
XCH指令理解起來很簡單,但有一點要注意,那就是當(dāng)兩個操作數(shù)同一個地址時,例如執(zhí)行XCHP D5 D5 后,D5的數(shù)據(jù)又是怎樣變化的呢?這其實是XCH指令的擴展功能:當(dāng)終址D1和D2為同一終址且特殊繼電器M8160置ON時,XCH指令將對該終址軟元件的字節(jié)進行交換。
如下圖所示就是一段程序的示例,D5、D10、D11的初始值分別為(D5)=H1234,(D11,D10)=H12345678。若M8160=OFF,執(zhí)行指令XCHP D5 D5和XDXCHP D10 D10,顯然D5、D10、D11的數(shù)據(jù)均沒變。
當(dāng)M8160=ON,再次執(zhí)行指令XCHP D5 D5和XDXCHP D10 D10,此時D5、D10、D11的數(shù)據(jù)均發(fā)生變化,可以看到,D5的高8位和低8位相互交換,變?yōu)镠3412,而32位的(D11,D10)也變成H34127856。
從32位的指令DXCHP的執(zhí)行情況可以看到,此時D10、D11中交換的依然是各自的高低字節(jié),而不是D10和D11的數(shù)據(jù)相互交換。
如想用XCH指令進行軟元件的字節(jié)交換,就得先把M8160置1,比較麻煩。而SWAP指令卻可以直接對字元件進行字節(jié)交換。
02、高低字節(jié)交換指令SWAP
高低字節(jié)交換指令的功能和XCH的字節(jié)交換功能是一樣的,包括用于32位時也是對各自的高低字節(jié)交換。只不過SWAP指令不需要同時將M8160置1。基于SWAP指令比較簡單,再此我就不再啰嗦,直接給段梯形圖大家看看就行了。
關(guān)于數(shù)據(jù)交換指令的應(yīng)用,我能直接想到的就是數(shù)值的比較與篩選,例如將D0~D100中存有最大數(shù)的寄存器編號找出來,就可以通過XCH指令實現(xiàn),具體程序我也不再舉例了,大家自行嘗試吧!接下來我們看一個新的指令ZRST。
高低字節(jié)交換指令的功能和XCH的字節(jié)交換功能是一樣的,包括用于32位時也是對各自的高低字節(jié)交換。只不過SWAP指令不需要同時將M8160置1。基于SWAP指令比較簡單,再此我就不再啰嗦,直接給段梯形圖大家看看就行了。
關(guān)于數(shù)據(jù)交換指令的應(yīng)用,我能直接想到的就是數(shù)值的比較與篩選,例如將D0~D100中存有最大數(shù)的寄存器編號找出來,就可以通過XCH指令實現(xiàn),具體程序我也不再舉例了,大家自行嘗試吧!接下來我們看一個新的指令ZRST。
03、批次(區(qū)間)復(fù)位指令ZRST
區(qū)間復(fù)位指令ZRST顯然是復(fù)位指令RST的升級版,從編程手冊截圖可以看到,ZRST指令有脈沖執(zhí)行型和連續(xù)執(zhí)行型,只能用于16位,這是顯然的,既然是批次復(fù)位,那32位和16位就沒有區(qū)別了。
其梯形圖形式如上圖所示,當(dāng)驅(qū)動條件成立時,將D1~D2之間的所有軟元件進行復(fù)位,包括將位軟元件置零(=OFF),字軟元件清零(=K0)。這里的復(fù)位,包括了觸點狀態(tài)、線圈狀態(tài)和字元件所存的數(shù)據(jù),所以那些繼電器如Y、M,帶有觸點的字元件如C、T,經(jīng)ZRST指令復(fù)位后,其相應(yīng)的觸點也全部復(fù)位。
另外,從適用軟元件中可以看到,ZRST指令不能用于組合位元件,這用腳指頭想都知道是當(dāng)然的,因為對批次的位元件復(fù)位,和對組合位元件復(fù)位沒有任何區(qū)別。
在使用區(qū)間復(fù)位指令時,必須要注意以下幾點:
1、如截圖所示,D1、D2要為同一類型的軟元件,不能用不同的軟元件,如ZRST D0C1、ZRST M0 D1、ZRST Y0 M10等都是不行的,指令不執(zhí)行且將M8067置ON,如下圖所示。
2、終址D1、D2編號必須為D1≤D2,若D1≥D2,指令ZRSR指令只對D1的數(shù)值復(fù)位,如下圖所示,在執(zhí)行指令FMOV K10 D0 K8后,D0~D7的所存的數(shù)據(jù)均為K10,但執(zhí)行指令ZRST D7 D0后,只有D7被清零,D0~D5的值保持不變。
另外,雖然ZRST指令不能用于32位,但它可以對32位計數(shù)器C200~C234進行批量復(fù)位,但用于32位計數(shù)器時,兩個終址D1、D2就必須都是32位計數(shù)器,不允許D1是32位計數(shù)器,而D2是16位計數(shù)器,例如ZRST C200 C0 是不行的。
04、“ON”位數(shù)求和指令SUM
眾所周知,SUM這個單詞本身就是求和的意思,所以SUM指令,顯然也是一種求和指令。如編程手冊截圖所示,其適用軟元件為字元件,因為只要字元件才有多個二進制位。結(jié)合該指令的梯形圖形式,當(dāng)驅(qū)動條件成立時,對源址S中狀態(tài)為1的二進制位進行統(tǒng)計求和,并將求和結(jié)果傳送到終址D中。
如上圖所示,(D0)=0000 1111 1111 1111,指令指令SUM D0 D10后,計算D0中的“1”共有12位,所以此時D10的值為K12。
SUM指令會影響到零標(biāo)志位M8020,即當(dāng)源址S的數(shù)據(jù)為K0時,執(zhí)行SUM指令后,M8020會被置ON,如下圖所示。
SUM指令還可以用于32位,此時統(tǒng)計的就是源址S、S 1兩個軟元件中的“1”的總數(shù)了,然后將結(jié)果傳送到終址D中,而D 1的數(shù)據(jù)保持為K0,所以使用DSUM指令時,注意終址D 1也被占用,即使它不保存結(jié)果。知道了ON位數(shù)求和指令SUM后,我們繼續(xù)看一個類似的指令BON。
05、ON位判斷指令BON
BON指令的作用是判斷軟元件的某一個二進制位是否為“1”。從編程手冊截圖可以看到,BON指令的源址S為字軟元件,終址D為位軟元件,可用于16位和32位,而n的取值范圍根據(jù)位數(shù)(16位或32位)會有所不同。當(dāng)源址S為組合位元件時,此時n就為對應(yīng)編號的位元件,當(dāng)源址為字軟元件時,n就為字元件中對應(yīng)的二進制位。
結(jié)合該指令的梯形圖形式,當(dāng)驅(qū)動條件成立時,對源址S的第n位狀態(tài)進行判斷,若該位狀態(tài)為1,終址D=ON,若該位狀態(tài)為0時,終址D=OFF。例如執(zhí)行指令BON D0 D10 K15,如下圖所示,若(D0)=H8000,其二進制位b15的值恰好為“1”,此時M0=ON。
顯然,BON指令可用于判斷一個數(shù)的正負,即判斷數(shù)值的最高位(符號位)是1還是0,若為1,該數(shù)就為負數(shù),若為0,則該數(shù)為負數(shù)。
綜上,這次所分享的指令基本比較簡單,為了熟練運用這些指令,大家可以試著用它們編寫一下有趣的程序喲。
注:本文章內(nèi)容都是基于三菱FX PLC 2N所寫
選自《三菱FX系列PLC功能指令詳解》第五章第21、39~53課時
(技成培訓(xùn)原創(chuàng),作者:楊思慧,未經(jīng)授權(quán)不得轉(zhuǎn)載,違者必究)

技成培訓(xùn)
微信公眾號:jcpeixun
|

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

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