三菱FX系列PLC功能指令
杭州菱設自動化三菱FX系列PLC功能指令-程序流程指令
程 序 流 程
00 CJ 條件跳轉
01 CALL 子程序調用
02 SRET 子程序返回
03 IRET 中斷返回
04 EI 開中斷
05 DI 關中斷
06 FEND 主程序結束
07 WDT 監視定時器刷新
08 FOR 循環的起點與次數
09 NEXT 循環的終點
條件跳轉指令CJ(P)
條件跳轉指令CJ(P)的編號為FNC00,操作數為指針標號P0~P127,其中P63為END所在步序,不需標記。指針標號允許用變址寄存器修改。CJ和CJP都占3個程序步,指針標號占1步。
如圖1所示,當X20接通時,則由CJ P9指令跳到標號為P9的指令處開始執行,跳過了程序的一部分,減少了掃描周期。如果X20斷開,跳轉不會執行,則程序按原順序執行。

圖1 跳轉指令的使用
使用跳轉指令時應注意:
1)CJP指令表示為脈沖執行方式;
2)在一個程序中一個標號只能出現一次,否則將出錯;
3)在跳轉執行期間,即使被跳過程序的驅動條件改變,但其線圈(或結果)仍保持跳轉前的狀態,因為跳轉期間根本沒有執行這段程序。
4)如果在跳轉開始時定時器和計數器已在工作,則在跳轉執行期間它們將停止工作,到跳轉條件不滿足后又繼續工作。但對于正在工作的定時器T192~T199和高速計數器C235~C255不管有無跳轉仍連續工作。
5)若積算定時器和計數器的復位(RST)指令在跳轉區外,即使它們的線圈被跳轉,但對它們的復位仍然有效。
子程序調用指令CALL
子程序調用指令CAL,子程序調用指令CAL的編號為FNC01。操作數為P0~P127,此指令占用3個程序步。
子程序返回指令SRET,子程序返回指令SRET的編號為FNC02。無操作數,占用1個程序步。
如圖2所示,如果X0接通,則轉到標號P10處去執行子程序。當執行SRET指令時,返回到CALL指令的下一步執行。

圖2 子程序調用與返回指令的使用
使用子程序調用與返回指令時應注意:
1)轉移標號不能重復,也不可與跳轉指令的標號重復;
2)子程序可以嵌套調用,*多可5級嵌套。
中斷返回指令IRET
中斷允許指令EI
中斷禁止DI
與中斷有關的三條功能指令是:中斷返回指令IRET,編號為FNCO3;中斷允許指令EI,編號為FNCO4;中斷禁止DI,編號為FNC05。它們均無操作數,占用1個程序步。
PLC通常處于禁止中斷狀態,由EI和DI指令組成允許中斷范圍。在執行到該區間,如有中斷源產生中斷,CPU將暫停主程序執行轉而執行中斷服務程序。當遇到IRET時返回斷點繼續執行主程序。如圖3所示,允許中斷范圍中若中斷源X0有一個下降沿,則轉入I000為標號的中斷服務程序,但X0可否引起中斷還受M8050控制,當X20有效時則M8050控制X0無法中斷。

圖3 中斷指令的使用
使用中斷相關指令時應注意:
1)中斷的優先級排隊如下,如果多個中斷依次發生,則以發生先后為序,即發生越早級別越高,如果多個中斷源同時發出信號,則中斷指針號越小優先級越高;
2)當M8050~M8058為ON時,禁止執行相應I0□□~I8□□的中斷,M8059為ON時則禁止所有計數器中斷;
3)無需中斷禁止時,可只用EI指令,不必用DI指令;
4)執行一個中斷服務程序時,如果在中斷服務程序中有EI和DI,可實現二級中斷嵌套,否則禁止其它中斷。
主程序結束指令FEND
主程序結束指令FEND的編號為FNC06,無操作數,占用1個程序步。FEND表示主程序結束,當執行到FEND時,PLC進行輸入/輸出處理,監視定時器刷新,完成后返回啟始步。
使用FEND指令時應注意:
1)子程序和中斷服務程序應放在FEND之后;
2)子程序和中斷服務程序必須寫在FEND和END之間,否則出錯。
監視定時器指令WDT(P)
監視定時器指令WDT(P)編號為FNC07,沒有操作數,占有1個程序步。WDT指令的功能是對PLC的監視定時器進行刷新。
FX系列PLC的監視定時器缺省值為200ms(可用D8000來設定),正常情況下PLC掃描周期小于此定時時間。如果由于有外界干擾或程序本身的原因使掃描周期大于監視定時器的設定值,使PLC的CPU出錯燈亮并停止工作,可通過在適當位置加WDT指令復位監視定時器,以使程序能繼續執行到END。
如圖4所示,利用一個WDT指令將一個240ms的程序一分為二,使它們都小于200ms,則不再會出現報警停機。

圖4 監控定時器指令的使用
使用WDT指令時應注意:
1)如果在后續的FOR-NEXT循環中,執行時間可能超過監控定時器的定時時間,可將WDT插入循環程序中。
2)當與條件跳轉指令CJ對應的指針標號在CJ指令之前時(即程序往回跳)就有可能連續反復跳步使它們之間的程序反復執行,使執行時間超過監控時間,可在CJ指令與對應標號之間插入WDT指令。
循環區起點指令FOR
循環結束指令NEXT
循環指令共有兩條:循環區起點指令FOR,編號為FNC08,占3個程序步;循環結束指令NEXT,編號為FNC09,占用1個程序步,無操作數。
在程序運行時,位于FOR~NEXT間的程序反復執行n次(由操作數決定)后再繼續執行后續程序。循環的次數n=1~32767。如果N=-32767~0之間,則當作n=1處理。
如圖5所示為一個二重嵌套循環,外層執行5次。如果D0Z中的數為6,則外層A每執行一次則內層B將執行6次。

圖5 循環指令的使用
使用循環指令時應注意:
1)FOR和NEXT必須成對使