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