三菱fx系列plc有基本邏輯指令20或27條、步進(jìn)指令2條、功能指令100多條(不同系列有所不同)。本節(jié)以fx2n為例,介紹其基本邏輯指令和步進(jìn)指令及其應(yīng)用。
一、三菱fx系列plc的基本邏輯指令
三菱fx2n的共有27條基本邏輯指令,其中包含了有些子系列plc的20條基本邏輯指令。
1.取指令與輸出指令(ld/ldi/ldp/ldf/out)
(1)ld(取指令) 一個常開觸點與左母線連接的指令,每一個以常開觸點開始的邏輯行都用此指令。
(2)ldi(取反指令) 一個常閉觸點與左母線連接指令,每一個以常閉觸點開始的邏輯行都用此指令。
(3)ldp(取上升沿指令) 與左母線連接的常開觸點的上升沿檢測指令,僅在指定位元件的上升沿(由off→on)時接通一個掃描周期。
(4)ldf(取下降沿指令) 與左母線連接的常閉觸點的下降沿檢測指令。
(5)out(輸出指令) 對線圈進(jìn)行驅(qū)動的指令,也稱為輸出指令。
取指令與輸出指令的使用如圖1所示。
圖1 取指令與輸出指令的使用
取指令與輸出指令的使用說明:
1)ld、ldi指令既可用于輸入左母線相連的觸點,也可與anb、orb指令配合實現(xiàn)塊邏輯運算;
2)ldp、ldf指令僅在對應(yīng)元件有效時維持一個掃描周期的接通。圖3-15中,當(dāng)m1有一個下降沿時,則y3只有一個掃描周期為on。
3)ld、ldi、ldp、ldf指令的目標(biāo)元件為x 、y 、m 、t、c、s;
4)out指令可以連續(xù)使用若干次(相當(dāng)于線圈并聯(lián)),對于定時器和計數(shù)器,在out指令之后應(yīng)設(shè)置常數(shù)k或數(shù)據(jù)寄存器。
5)out指令目標(biāo)元件為y、m、t、c和s,但不能用于x。
2.觸點串聯(lián)指令(and/ani/andp/andf)
(1)and(與指令) 一個常開觸點串聯(lián)連接指令,完成邏輯“與”運算。
(2)ani(與反指令) 一個常閉觸點串聯(lián)連接指令,完成邏輯“與非”運算。
(3)andp 上升沿檢測串聯(lián)連接指令。
(4)andf 下降沿檢測串聯(lián)連接指令。
觸點串聯(lián)指令的使用如圖2所示。
圖2 觸點串聯(lián)指令的使用
觸點串聯(lián)指令的使用的使用說明:
1)and、ani、andp、andf都指是單個觸點串聯(lián)連接的指令,串聯(lián)次數(shù)沒有限制,可反復(fù)使用。
2)and、ani、andp、andf的目標(biāo)元元件為x、y、m、t、c和s。
3)圖3-16中out m101指令之后通過t1的觸點去驅(qū)動y4稱為連續(xù)輸出。
3.觸點并聯(lián)指令(or/ori/orp/orf)
(1)or(或指令) 用于單個常開觸點的并聯(lián),實現(xiàn)邏輯“或”運算。
(2)ori(或非指令) 用于單個常閉觸點的并聯(lián),實現(xiàn)邏輯“或非”運算。
(3)orp 上升沿檢測并聯(lián)連接指令。
(4)orf 下降沿檢測并聯(lián)連接指令。
觸點并聯(lián)指令的使用如圖3所示。
圖3 觸點并聯(lián)指令的使用
觸點并聯(lián)指令的使用說明:
1)or、ori、orp、orf指令都是指單個觸點的并聯(lián),并聯(lián)觸點的左端接到ld、ldi、ldp或lpf處(例圖4-4的左母線),右端與前一條指令對應(yīng)觸點的右端相連。觸點并聯(lián)指令連續(xù)使用的次數(shù)不限;
2)or、ori、orp、orf指令的目標(biāo)元件為x、y、m、t、c、s。
4.塊操作指令(orb / anb)
(1)orb(塊或指令) 用于兩個或兩個以上的觸點串聯(lián)連接的電路之間的并聯(lián)。orb指令的使用如圖4所示。
圖4 orb指令的使用
orb指令的使用說明:
1)幾個串聯(lián)電路塊并聯(lián)連接時,每個串聯(lián)電路塊開始時應(yīng)該用ld或ldi指令;
2)有多個電路塊并聯(lián)回路,如對每個電路塊使用orb指令,則并聯(lián)的電路塊數(shù)量沒有限制;
3)orb指令也可以連續(xù)使用,但這種程序?qū)懛ú煌扑]使用,ld或ldi指令的使用次數(shù)不得超過8次,也就是orb只能連續(xù)使用8次以下。
(2)anb(塊與指令) 用于兩個或兩個以上觸點并聯(lián)連接的電路之間的串聯(lián)。anb指令的使用說明如圖5所示。
圖5 anb指令的使用
anb指令的使用說明:
1)并聯(lián)電路塊串聯(lián)連接時,并聯(lián)電路塊的開始均用ld或ldi指令;
2)多個并聯(lián)回路塊連接按順序和前面的回路串聯(lián)時,anb指令的使用次數(shù)沒有限制。也可連續(xù)使用anb,但與orb一樣,使用次數(shù)在8次以下
5.置位與復(fù)位指令(set/rst)
(1)set(置位指令) 它的作用是使被操作的目標(biāo)元件置位并保持。
(2)rst(復(fù)位指令) 使被操作的目標(biāo)元件復(fù)位并保持清零狀態(tài)。
set、rst指令的使用如圖6所示。當(dāng)x0常開接通時,y0變?yōu)閛n狀態(tài)并一直保持該狀態(tài),即使x0斷開y0的on狀態(tài)仍維持不變;只有當(dāng)x1的常開閉合時,y0才變?yōu)閛ff狀態(tài)并保持,即使x1常開斷開,y0也仍為off狀態(tài)。
圖6 置位與復(fù)位指令的使用
set 、rst指令的使用說明:
1)set指令的目標(biāo)元件為y、m、s,rst指令的目標(biāo)元件為y、m、s、t、c、d、v 、z。rst指令常被用來對d、z、v的內(nèi)容清零,還用來復(fù)位積算定時器和計數(shù)器。
2)對于同一目標(biāo)元件,set、rst可多次使用,順序也可隨意,但最后執(zhí)行者有效。
6.微分指令(pls/plf)
(1)pls(上升沿微分指令) 在輸入信號上升沿產(chǎn)生一個掃描周期的脈沖輸出。
(2)plf(下降沿微分指令) 在輸入信號下降沿產(chǎn)生一個掃描周期的脈沖輸出。
微分指令的使用如圖7所示,利用微分指令檢測到信號的邊沿,通過置位和復(fù)位命令控制y0的狀態(tài)。
圖7 微分指令的使用
pls、plf指令的使用說明:
1)pls、plf指令的目標(biāo)元件為y和m;
2)使用pls時,僅在驅(qū)動輸入為on后的一個掃描周期內(nèi)目標(biāo)元件on,如圖7所示,m0僅在x0的常開觸點由斷到通時的一個掃描周期內(nèi)為on;使用plf指令時只是利用輸入信號的下降沿驅(qū)動,其它與pls相同。
7.主控指令(mc/mcr)
(1)mc(主控指令) 用于公共串聯(lián)觸點的連接。執(zhí)行mc后,左母線移到mc觸點的后面。
(2)mcr(主控復(fù)位指令) 它是mc指令的復(fù)位指令,即利用mcr指令恢復(fù)原左母線的位置。
在編程時常會出現(xiàn)這樣的情況,多個線圈同時受一個或一組觸點控制,如果在每個線圈的控制電路中都串入同樣的觸點,將占用很多存儲單元,使用主控指令就可以解決這一問題。mc、mcr指令的使用如圖8所示,利用mc n0 m100實現(xiàn)左母線右移,使y0、y1都在x0的控制之下,其中n0表示嵌套等級,在無嵌套結(jié)構(gòu)中n0的使用次數(shù)無限制;利用mcr n0恢復(fù)到原左母線狀態(tài)。如果x0斷開則會跳過mc、mcr之間的指令向下執(zhí)行。
圖8 主控指令的使用
mc、mcr指令的使用說明:
1)mc、mcr指令的目標(biāo)元件為y和m,但不能用特殊輔助繼電器。mc占3個程序步,mcr占2個程序步;
2)主控觸點在梯形圖中與一般觸點垂直(如圖8中的m100)。主控觸點是與左母線相連的常開觸點,是控制一組電路的總開關(guān)。與主控觸點相連的觸點必須用ld或ldi指令。
3)mc指令的輸入觸點斷開時,在mc和mcr之內(nèi)的積算定時器、計數(shù)器、用復(fù)位/置位指令驅(qū)動的元件保持其之前的狀態(tài)不變。非積算定時器和計數(shù)器,用out指令驅(qū)動的元件將復(fù)位,如圖3-22中當(dāng)x0斷開,y0和y1即變?yōu)閛ff。
4)在一個mc指令區(qū)內(nèi)若再使用mc指令稱為嵌套。嵌套級數(shù)最多為8級,編號按n0→n1→n2→n3→n4→n5→n6→n7順序增大,每級的返回用對應(yīng)的mcr指令,從編號大的嵌套級開始復(fù)位。
8.堆棧指令(mps/mrd/mpp)
堆棧指令是fx系列中新增的基本指令,用于多重輸出電路,為編程帶來便利。在fx系列plc中有11個存儲單元,它們專門用來存儲程序運算的中間結(jié)果,被稱為棧存儲器。
(1)mps(進(jìn)棧指令) 將運算結(jié)果送入棧存儲器的第一段,同時將先前送入的數(shù)據(jù)依次移到棧的下一段。
(2)mrd(讀棧指令) 將棧存儲器的第一段數(shù)據(jù)(最后進(jìn)棧的數(shù)據(jù))讀出且該數(shù)據(jù)繼續(xù)保存在棧存儲器的第一段,棧內(nèi)的數(shù)據(jù)不發(fā)生移動。
(3)mpp(出棧指令) 將棧存儲器的第一段數(shù)據(jù)(最后進(jìn)棧的數(shù)據(jù))讀出且該數(shù)據(jù)從棧中消失,同時將棧中其它數(shù)據(jù)依次上移。
堆棧指令的使用如圖9所示,其中圖9a為一層棧,進(jìn)棧后的信息可無限使用,最后一次使用mpp指令彈出信號;圖9b為二層棧,它用了二個棧單元。
圖9 堆棧指令的使用
a) 一層棧 b) 二層棧
堆棧指令的使用說明:
1)堆棧指令沒有目標(biāo)元件;
2)mps和mpp必須配對使用;
3)由于棧存儲單元只有11個,所以棧的層次最多11層。
9.邏輯反、空操作與結(jié)束指令(inv/nop/end)
(1)inv(反指令) 執(zhí)行該指令后將原來的運算結(jié)果取反。反指令的使用如圖10所示,如果x0斷開,則y0為on,否則y0為off。使用時應(yīng)注意inv不能象指令表的ld、ldi、ldp、ldf那樣與母線連接,也不能象指令表中的or、ori、orp、orf指令那樣單獨使用。
圖10 反指令的使用
(2)nop(空操作指令) 不執(zhí)行操作,但占一個程序步。執(zhí)行nop時并不做任何事,有時可用nop指令短接某些觸點或用nop指令將不要的指令覆蓋。當(dāng)plc執(zhí)行了清除用戶存儲器操作后,用戶存儲器的內(nèi)容全部變?yōu)榭詹僮髦噶睢?br>
(3)end(結(jié)束指令) 表示程序結(jié)束。若程序的最后不寫end指令,則plc不管實際用戶程序多長,都從用戶程序存儲器的第一步執(zhí)行到最后一步;若有end指令,當(dāng)掃描到end時,則結(jié)束執(zhí)行程序,這樣可以縮短掃描周期。在程序調(diào)試時,可在程序中插入若干end指令,將程序劃分若干段,在確定前面程序段無誤后,依次刪除end指令,直至調(diào)試結(jié)束。
二、三菱fx系列plc的步進(jìn)指令
1.步進(jìn)指令(stl/ret)
步進(jìn)指令是專為順序控制而設(shè)計的指令。在工業(yè)控制領(lǐng)域許多的控制過程都可用順序控制的方式來實現(xiàn),使用步進(jìn)指令實現(xiàn)順序控制既方便實現(xiàn)又便于閱讀修改。
fx2n中有兩條步進(jìn)指令:stl(步進(jìn)觸點指令)和ret(步進(jìn)返回指令)。
stl和ret指令只有與狀態(tài)器s配合才能具有步進(jìn)功能。如stl s200表示狀態(tài)常開觸點,稱為stl觸點,它在梯形圖中的符號為,它沒有常閉觸點。我們用每個狀態(tài)器s記錄一個工步,例stl s200有效(為on),則進(jìn)入s200表示的一步(類似于本步的總開關(guān)),開始執(zhí)行本階段該做的工作,并判斷進(jìn)入下一步的條件是否滿足。一旦結(jié)束本步信號為on,則關(guān)斷s200進(jìn)入下一步,如s201步。ret指令是用來復(fù)位stl指令的。執(zhí)行ret后將重回母線,退出步進(jìn)狀態(tài)。
2.狀態(tài)轉(zhuǎn)移圖
一個順序控制過程可分為若干個階段,也稱為步或狀態(tài),每個狀態(tài)都有不同的動作。當(dāng)相鄰兩狀態(tài)之間的轉(zhuǎn)換條件得到滿足時,就將實現(xiàn)轉(zhuǎn)換,即由上一個狀態(tài)轉(zhuǎn)換到下一個狀態(tài)執(zhí)行。我們常用狀態(tài)轉(zhuǎn)移圖(功能表圖)描述這種順序控制過程。如圖3-25所示,用狀態(tài)器s記錄每個狀態(tài),x為轉(zhuǎn)換條件。如當(dāng)x1為on時,則系統(tǒng)由s20狀態(tài)轉(zhuǎn)為s21狀態(tài)。
圖11 狀態(tài)轉(zhuǎn)移圖與步進(jìn)指令
狀態(tài)轉(zhuǎn)移圖中的每一步包含三個內(nèi)容:本步驅(qū)動的內(nèi)容,轉(zhuǎn)移條件及指令的轉(zhuǎn)換目標(biāo)。如圖11中s20步驅(qū)動y0,當(dāng)x1有效為on時,則系統(tǒng)由s20狀態(tài)轉(zhuǎn)為s21狀態(tài),x1即為轉(zhuǎn)換條件,轉(zhuǎn)換的目標(biāo)為s21步。
3.步進(jìn)指令的使用說明
1)stl觸點是與左側(cè)母線相連的常開觸點,某stl觸點接通,則對應(yīng)的狀態(tài)為活動步;
2)與stl觸點相連的觸點應(yīng)用ld或ldi指令,只有執(zhí)行完ret后才返回左側(cè)母線;
3)stl觸點可直接驅(qū)動或通過別的觸點驅(qū)動y、m、s、t等元件的線圈;
4)由于plc只執(zhí)行活動步對應(yīng)的電路塊,所以使用stl指令時允許雙線圈輸出(順控程序在不同的步可多次驅(qū)動同一線圈);
5) stl觸點驅(qū)動的電路塊中不能使用mc和mcr指令,但可以用cj指令;
6)在中斷程序和子程序內(nèi),不能使用stl指令。