赫煥麗,熊安勝
(咸寧職業技術學院,湖北 咸寧 437100)
三菱FX系列PLC功能指令-條件跳轉指令用來選擇執行指定的程序段,跳過暫時不需要執行的程序段.在程序編制中,經常也會遇到一些邏輯功能相同的程序段需要反復被運行,為了簡化程序結構,可以編寫成子程序,然后在主程序中根據需要反復調用.現就在實際中關于條件跳轉指令和子程序指令的應用和注意事項,總結如下.
跳轉指令可用來選擇執行指定的程序段,跳過暫時不需要執行的程序段.條件跳轉指令CJ的助記符、操作數等指令屬性如表1所示.

表1
如圖1所示,當X0接通時,則由“CJP0”指令跳到標號為P0的指令處開始執行,跳過了程序的一部分,減少了掃描周期.如果X0斷開,跳轉不會執行,則程序按原順序執行.

圖1 跳轉指令的使用

圖2 程序跳轉指令
如圖2所示,X0是手動/自動運行的選擇開關.X1、X2分別是電機M1和M2在手動操作方式下的啟動按鈕(點動控制),X3是自動運行方式下兩電機的啟動按鈕.Y1、Y2分別是控制電機M1啟動和M2啟動的輸出信號.
當X0常開觸點接通時,執行“CJP0”指令,跳到標號為P0處執行手動操作程序.此時分別按下X1和X2,可點動M1和M2進行機床調整;而當X0常閉觸點接通時,不執行“CJP0”指令,順序執行自動運行程序.此時按下啟動按鈕X3電機M1先啟動,5s后電機M2自行啟動運行,按下停止按鈕可同時停止兩臺機床.然后執行“CJP1”指令,跳過自動程序直接轉到標號P1處結束.X0的常開/常閉觸點起聯鎖作用,使手動操作和自動運行兩個程序只能選擇其中之一.
子程序調用指令CALL、返回指令SRET的助記符、操作數等指令屬性如表2所示.

表2
如圖3所示.當X0常開觸點接通時,執行“CALL P1”,即程序轉到標號P1處,執行子程序.當執行到子程序的最后一句“SRET”時,程序返回到主程序,從步序號4開始繼續往下執行.當X0常開觸點斷開時,標號為P1的子程序不能被調用執行.

圖3 子程序指令使用說明

圖4 兩種工作方式電動機控制程序
某電機要求有連續運行和手動調整兩種工作方式,用子程序設計的梯形圖控制程序如圖4所示.當工作方式開關X0的常開觸點接通時,運行標號為P2的子程序,此時為手動調整狀態;當X0常開觸點斷開時,運行標號為P1的子程序,此時電機為連續運行狀態.
在圖2和圖4中,由于手動程序和自動程序不能同時執行,所以程序中的線圈Y0不能視為雙線圈.
某車間要對生產流水線進行過程控制.動態采集20個現場數據(16位),存放在D0~D19中.每隔半小時找出其中的最大值,將其與標準值(放入D30中)進行比較,如果大于標準值點亮紅燈(Y0);每隔1小時計算他們的平均值,并與標準平均值(放入D40中)進行比較,若大于標準平均值紅燈(Y1)閃爍報警.
本控制在這里編程時不涉及到20個現場數據的動態采集過程.假定這20個數據已經采集到位,只對其比較、計算控制進行編程.
選擇X0作為控制裝置的啟停開關作為輸入信號,兩個紅燈地址分別為Y0和Y1作為輸出信號.
根據控制要求,編制出PLC的梯形圖程序如圖5所示.程序中,當通過開關輸入使X0=1后,C0、C1同時對M8014(1min時鐘脈沖)計數.C0每計滿半小時,執行一次子程序P0,即比較20個現場數據的大小.C1每計滿1小時執行一次子程序P1,即計算20個數據的平均值.在子程序P0中,先將20個數據中的第一個數送到D20中,賦變址寄存器Z的初值為1.再用循環指令將剩下的19個數據(因此循環次數應等于19)逐一與D20進行比較,若有比D20數據大的,就直接送往D20覆蓋原數據,然后地址變量Z加1.等全部比較完畢,20個數據中的最大值就一定存放在D20中.再用觸點比較指令將最大值(存放在D20中)與標準值(存放在D30中)對比,若大于標準值就把Y0接通.在子程序P1中,先將D23、D22清0,地址變量Z也清0,再用循環指令對20個數據逐一相加,并將所求之和存放到 D23(高16位)、D22(低16位)中,因此循環次數為20.接下來用32位操作的除法指令將所求的總和除以數據的個數20,得到平均值放到D24中.最后用觸點比較指令與標準平均值(存放在D40)對照,若大于標準平均值就使Y1閃爍報警.

圖5 數組運算的梯形圖程序
(1)條件跳轉指令CJ(P)的操作數為指針標號P0~P127,P用于分支和跳轉程序.
(2)標號P放置在左母線的左邊,在一個程序中一個標號只能出現一次,若出現兩次或兩次以上,程序報錯.
(3)若跳轉條件滿足,則執行跳轉指令,程序跳到以標號P為入口的程序段中執行,否則不執行跳轉指令,按順序執行下一條指令.
(4)P63是END所在的步序,在程序中不需要設置P63.指針標號允許用變址寄存器修改.CJ和CJ(P)都占三個程序步,指針標號占一步.
(5)若用M8000常開觸點作為跳轉條件,則CJ變成無條件跳轉指令.
(6)不在同一個指針標號的程序段中出現的同一個線圈不看作雙線圈.
(7)在跳轉執行期間,即使被跳過程序的驅動條件改變,但其線圈(或結果)仍保持跳轉前的狀態,因為跳轉期間根本沒有執行這段程序.
(8)處于被跳過的程序段中的Y、M、S由于該段程序不執行,故即使驅動它們的工作條件發生了變化,它們的狀態也依然保持跳轉前的狀態不變.同理,T、C如果被跳過,則跳轉期間它們的當前值被鎖定,當跳轉中止、程序繼續執行時,定時計數接著進行.
(9)如果在跳轉開始時定時器和計數器已在工作,則在跳轉執行期間它們將停止工作,到跳轉條件不滿足后又繼續工作.但對于正在工作的定時器T192~T199和高速計數器C235~C255,不管有無跳轉仍連續工作.
(10)若積算定時器和計數器的復位(RST)指令在跳轉區外,即使它們的線圈被跳轉,但對它們的復位仍然有效.
(1)主程序在前,子程序在后,即子程序要放在FEND指令之后.不同位置的“CALL”指令可以調用相同標號的子程序,但同一標號的指針只能使用一次.
(2)轉移標號不能重復,也不可與跳轉指令CJ的標號重復.(3)子程序必須寫在FEND和END之間,否則出錯.
(4)子程序可以調用下一級子程序,稱為子程序嵌套,FX2N系列的PLC最多可以有5級子程序嵌套.
通過以上實例,三菱FX系列PLC條件跳轉指令和子程序指令在實際應用中可以用來選擇執行指定的程序段,或者要反復被運行程序段.我們在實際使用的過程中一定要注意他們的使用注意事項,以免使用中出現錯誤.
[1]郭艷萍,陳冰.電氣控制與PLC應用[M].北京:人民郵電出版社,2010.
[2]黃中玉,于寧波.PLC應用技術[M].北京:人民郵電出版社,2009.
[3]岳慶來.變頻器、可編程序控制器及觸摸屏綜合應用技術[M].北京:機械工業出版社,2009.