數據的處理,經常需要進行比較,在PLC中也是如此。而我這次所分享的,就是三菱FX PLC 2N的各種比較指令。那么,廢話不多說,我們直接進入主題吧。
一、CMP指令
CMP指令是所有比較指令中最為常用的指令,也是功能指令中的常用指令之一,其在編程手冊中的說明如下圖所示。
CMP指令的理解也很簡單,就是S1、S2兩個數的相互比較,根據我們多年的數學學習經驗,顯然,比較結果可能有三種:S1>S2;S1=S2;S1<S2。雖然有三種結果,但它們不可能同時出現,又由于PLC不可能直接開口告訴我們結果,所以它就用了三個連續編號的位元件對三種結果加以區分,其中D·是三個連續位元件的首址。也就是說,終址D占用了3個點,且它的適用軟元件為位元件(Y、M、S)。
另外,源址S1、S2均為字元件,畢竟要存數據,且源址S1、S2與終址D都可用于變址尋址。從上圖的指令梯形圖可以看到,當驅動條件X0=ON時,S1、S2相互比較,若S1>S2,則D=ON;若S1=S2,則D+1=ON;若S1<S2,則D+2=ON。
如執行指令CMP D0 K10 M0表示:將數據寄存器D0中的內容與常數K10進行比較,若D0的內容(D0)>K10,M0接通;若D0的內容(D0)=K10,M1接通,若D0的內容(D0)<K10,M2接通。
顯然,在CMP指令中,終址雖然只給出了首址D,但是D+1、D+2兩個拖油瓶也被指令占用,不能再用于其他地方。
指令被執行后,即使驅動條件斷開,保存結果的D、D+1、D+2仍然保持當前狀態,不會自動復位。想要它們復位,可以應用復位指令RST或批量復位指令ZRST。
二、ZCP指令
ZCP指令也是比較指令,但它是區間比較指令,比CMP指令略顯麻煩。
從ZCP指令和CMP指令的梯形圖中,可以看到,ZCP指令比CMP指令多了一個源址S·,這個S·就是ZCP指令的主角,它到底有什么含義呢?我們接著往下看。
ZCP指令是區間比較指令,所謂區間,就是一個數據范圍。例如我們考試,將成績劃分為3個區間:0-59分為不及格,60-80分為良好,81-100分為優秀。ZCP指令也將數據劃分為3個區間,分界點分別為S1、S2,而S就是被用于比較的主角,例如我們每個人所考的成績。終址D的含義類似于CMP指令中的D,也是用于反饋比較結果,占用3點:D、D+1、D+2。
類似于CMP指令,在ZCP指令中,當驅動條件成立時,將源址S數據分別與源址S1、S2數據進行比較,若比較結果S<S1,則D接通;若S1≤S≤S2,則D+1接通;若S>S2,則D+2接通。
例如執行指令ZCP K60 D0 K100 M0表示:若數據寄存器D0的內容(D0)<K60,則M0接通,若K60≤(D0)≤K100,則M1接通;若(D0)>K100,則M2接通。
源址S1與S2除了可以是常數外,還可以是各種字元件,但在這里要注意的一點是:ZCP指令在正常執行的情況下,S1<S2,也就是說,S1所存的數據應小于S2所存的數據,若S1>S2,PLC就會把S2作為S1處理。例如在ZCP D10 D11 D12 Y0中,D10內存的數據為K10,D11所存的數據為K8,此時若D12所存的數據為K8或K9,D12都是M0接通。
和CMP指令一樣,執行ZCP指令后,若驅動條件斷開,終址D、D+1、D+2的狀態依然保持不變,可以用復位指令RST或批量復位指令ZRST對它們復位。
無論是CMP指令還是ZCP指令,它們都是字元件數據的比較,且比較結果用終址相對應的3個位元件接通來區分。除此之外,三菱FX PLC 2N中還有觸點比較指令,什么是觸點比較指令?它們與CMP指令和ZCP指令又有什么區別呢?接下來我們繼續走進觸點比較指令的世界。
三、觸點比較指令
觸點只有兩種狀態(ON或OFF),在梯形圖中,所用到的觸點都是位元件的觸點,如X、Y、M等,常常作為驅動條件使用。
類似的,觸點比較指令等同于一個常開觸點,且這個常開觸點的狀態(ON或OFF)由指令的兩個源址S1、S2的數據比較結果所決定。結合上文的CMP指令和ZCP指令,可以發現,觸點比較指令所等同的常開觸點的作用其實和CMP指令和ZCP指令的終址位元件的作用一樣。
既然觸點比較指令等同于一個常開觸點,那么它就可以像一般觸點那樣,和其他觸點相串或相并,或者作為驅動條件單獨使用。根據應用方式的不同,可以將觸點比較指令分為起始觸點比較指令、串接觸點比較指令、并接觸點比較指令三種。
1、起始觸點比較指令
所謂“起始”,是指這指令與母線相連接,以“LD”開頭,其用法類似于“LD(取)”指令。起始觸點比較指令一共有6個,如下圖所示。
從上圖可見,起始觸點比較指令有6個是因為兩個源址S1、S2的比較結果可以分為6種情況。其中S1≠S2不能直接輸入“≠”符號,而是輸入“<>”,同樣的,大于等于符號“≥”應用“>=”符號表示,小于等于符號“≤”應用“<=”符號表示。
在編程時直接輸入對應助記符即可,例如輸入“LD= D1 D2”,其梯形圖如下圖所示。另外,大家從下圖可以發現,輸入“LD= D1 D2”后回車,“LD”兩個字母不會顯示。
2、串接觸點比較指令
串接觸點比較指令和起始觸點比較指令的區別只在于,串接觸點比較指令以“AND”開頭,而起始觸點比較指令以“LD”開頭。
所謂“串接”,是指串接觸點比較指令只能與其他觸點串聯使用,不能直接與母線相連。類似于起始觸點比較指令,也有6種形式,如下圖所示。
其功能號為232~238,但沒有235,這在其觸點比較指令中也是類似的,從224~230,卻沒有227,別問我為什么,因為我也不知道~
串接觸點比較指令的編程類似于起始觸點比較指令,在輸入完畢后“AND”字母不會顯示。那么問題來了,若是只看梯形圖,我們怎么知道這是起始的還是串接的呢?
其實,在用觸點比較指令與其他觸點串接時,也是可以用起始觸點比較指令的,不相信的話大家可以用編程軟件試試,親測有效。但串接觸點比較指令不能用作起始觸點比較指令,也就是不能與母線相連。
3、并接觸點比較指令
所謂“并接”,就是并接觸點比較指令在編寫完畢后,直接與其他觸點并接,所以該指令必須在有其他觸點與之并接的情況下才能編寫。
如上圖所示,若上一行對應位置沒有觸點,則并接觸點比較指令不能正常使用。同樣的,并接觸點比較指令也有6個,且其功能號也不連續,簡直是奇了怪。
并接觸點比較指令在編寫完畢后,字母“OR”同樣不顯示,且串接觸點比較指令可以用起始觸點比較指令替代使用,只不過在編寫時多兩步豎線輸入。
至此,這次的學習分享內容我覺得是這么多次以來最簡單的一次了,簡單易懂,且用法都是大同小異。所以,在此我也不啰嗦什么,希望這次的分享能對大家有所幫助!
注:本文章內容都是基于三菱FX PLC 2N所寫