赫煥麗,熊安勝
(咸寧職業(yè)技術(shù)學(xué)院,湖北 咸寧 437100)
三菱FX系列PLC功能指令-條件跳轉(zhuǎn)指令用來選擇執(zhí)行指定的程序段,跳過暫時(shí)不需要執(zhí)行的程序段.在程序編制中,經(jīng)常也會(huì)遇到一些邏輯功能相同的程序段需要反復(fù)被運(yùn)行,為了簡(jiǎn)化程序結(jié)構(gòu),可以編寫成子程序,然后在主程序中根據(jù)需要反復(fù)調(diào)用.現(xiàn)就在實(shí)際中關(guān)于條件跳轉(zhuǎn)指令和子程序指令的應(yīng)用和注意事項(xiàng),總結(jié)如下.
跳轉(zhuǎn)指令可用來選擇執(zhí)行指定的程序段,跳過暫時(shí)不需要執(zhí)行的程序段.條件跳轉(zhuǎn)指令CJ的助記符、操作數(shù)等指令屬性如表1所示.
表1
如圖1所示,當(dāng)X0接通時(shí),則由“CJP0”指令跳到標(biāo)號(hào)為P0的指令處開始執(zhí)行,跳過了程序的一部分,減少了掃描周期.如果X0斷開,跳轉(zhuǎn)不會(huì)執(zhí)行,則程序按原順序執(zhí)行.
圖1 跳轉(zhuǎn)指令的使用
圖2 程序跳轉(zhuǎn)指令
如圖2所示,X0是手動(dòng)/自動(dòng)運(yùn)行的選擇開關(guān).X1、X2分別是電機(jī)M1和M2在手動(dòng)操作方式下的啟動(dòng)按鈕(點(diǎn)動(dòng)控制),X3是自動(dòng)運(yùn)行方式下兩電機(jī)的啟動(dòng)按鈕.Y1、Y2分別是控制電機(jī)M1啟動(dòng)和M2啟動(dòng)的輸出信號(hào).
當(dāng)X0常開觸點(diǎn)接通時(shí),執(zhí)行“CJP0”指令,跳到標(biāo)號(hào)為P0處執(zhí)行手動(dòng)操作程序.此時(shí)分別按下X1和X2,可點(diǎn)動(dòng)M1和M2進(jìn)行機(jī)床調(diào)整;而當(dāng)X0常閉觸點(diǎn)接通時(shí),不執(zhí)行“CJP0”指令,順序執(zhí)行自動(dòng)運(yùn)行程序.此時(shí)按下啟動(dòng)按鈕X3電機(jī)M1先啟動(dòng),5s后電機(jī)M2自行啟動(dòng)運(yùn)行,按下停止按鈕可同時(shí)停止兩臺(tái)機(jī)床.然后執(zhí)行“CJP1”指令,跳過自動(dòng)程序直接轉(zhuǎn)到標(biāo)號(hào)P1處結(jié)束.X0的常開/常閉觸點(diǎn)起聯(lián)鎖作用,使手動(dòng)操作和自動(dòng)運(yùn)行兩個(gè)程序只能選擇其中之一.
子程序調(diào)用指令CALL、返回指令SRET的助記符、操作數(shù)等指令屬性如表2所示.
表2
如圖3所示.當(dāng)X0常開觸點(diǎn)接通時(shí),執(zhí)行“CALL P1”,即程序轉(zhuǎn)到標(biāo)號(hào)P1處,執(zhí)行子程序.當(dāng)執(zhí)行到子程序的最后一句“SRET”時(shí),程序返回到主程序,從步序號(hào)4開始繼續(xù)往下執(zhí)行.當(dāng)X0常開觸點(diǎn)斷開時(shí),標(biāo)號(hào)為P1的子程序不能被調(diào)用執(zhí)行.
圖3 子程序指令使用說明
圖4 兩種工作方式電動(dòng)機(jī)控制程序
某電機(jī)要求有連續(xù)運(yùn)行和手動(dòng)調(diào)整兩種工作方式,用子程序設(shè)計(jì)的梯形圖控制程序如圖4所示.當(dāng)工作方式開關(guān)X0的常開觸點(diǎn)接通時(shí),運(yùn)行標(biāo)號(hào)為P2的子程序,此時(shí)為手動(dòng)調(diào)整狀態(tài);當(dāng)X0常開觸點(diǎn)斷開時(shí),運(yùn)行標(biāo)號(hào)為P1的子程序,此時(shí)電機(jī)為連續(xù)運(yùn)行狀態(tài).
在圖2和圖4中,由于手動(dòng)程序和自動(dòng)程序不能同時(shí)執(zhí)行,所以程序中的線圈Y0不能視為雙線圈.
某車間要對(duì)生產(chǎn)流水線進(jìn)行過程控制.動(dòng)態(tài)采集20個(gè)現(xiàn)場(chǎng)數(shù)據(jù)(16位),存放在D0~D19中.每隔半小時(shí)找出其中的最大值,將其與標(biāo)準(zhǔn)值(放入D30中)進(jìn)行比較,如果大于標(biāo)準(zhǔn)值點(diǎn)亮紅燈(Y0);每隔1小時(shí)計(jì)算他們的平均值,并與標(biāo)準(zhǔn)平均值(放入D40中)進(jìn)行比較,若大于標(biāo)準(zhǔn)平均值紅燈(Y1)閃爍報(bào)警.
本控制在這里編程時(shí)不涉及到20個(gè)現(xiàn)場(chǎng)數(shù)據(jù)的動(dòng)態(tài)采集過程.假定這20個(gè)數(shù)據(jù)已經(jīng)采集到位,只對(duì)其比較、計(jì)算控制進(jìn)行編程.
選擇X0作為控制裝置的啟停開關(guān)作為輸入信號(hào),兩個(gè)紅燈地址分別為Y0和Y1作為輸出信號(hào).
根據(jù)控制要求,編制出PLC的梯形圖程序如圖5所示.程序中,當(dāng)通過開關(guān)輸入使X0=1后,C0、C1同時(shí)對(duì)M8014(1min時(shí)鐘脈沖)計(jì)數(shù).C0每計(jì)滿半小時(shí),執(zhí)行一次子程序P0,即比較20個(gè)現(xiàn)場(chǎng)數(shù)據(jù)的大?。瓹1每計(jì)滿1小時(shí)執(zhí)行一次子程序P1,即計(jì)算20個(gè)數(shù)據(jù)的平均值.在子程序P0中,先將20個(gè)數(shù)據(jù)中的第一個(gè)數(shù)送到D20中,賦變址寄存器Z的初值為1.再用循環(huán)指令將剩下的19個(gè)數(shù)據(jù)(因此循環(huán)次數(shù)應(yīng)等于19)逐一與D20進(jìn)行比較,若有比D20數(shù)據(jù)大的,就直接送往D20覆蓋原數(shù)據(jù),然后地址變量Z加1.等全部比較完畢,20個(gè)數(shù)據(jù)中的最大值就一定存放在D20中.再用觸點(diǎn)比較指令將最大值(存放在D20中)與標(biāo)準(zhǔn)值(存放在D30中)對(duì)比,若大于標(biāo)準(zhǔn)值就把Y0接通.在子程序P1中,先將D23、D22清0,地址變量Z也清0,再用循環(huán)指令對(duì)20個(gè)數(shù)據(jù)逐一相加,并將所求之和存放到 D23(高16位)、D22(低16位)中,因此循環(huán)次數(shù)為20.接下來用32位操作的除法指令將所求的總和除以數(shù)據(jù)的個(gè)數(shù)20,得到平均值放到D24中.最后用觸點(diǎn)比較指令與標(biāo)準(zhǔn)平均值(存放在D40)對(duì)照,若大于標(biāo)準(zhǔn)平均值就使Y1閃爍報(bào)警.
圖5 數(shù)組運(yùn)算的梯形圖程序
(1)條件跳轉(zhuǎn)指令CJ(P)的操作數(shù)為指針標(biāo)號(hào)P0~P127,P用于分支和跳轉(zhuǎn)程序.
(2)標(biāo)號(hào)P放置在左母線的左邊,在一個(gè)程序中一個(gè)標(biāo)號(hào)只能出現(xiàn)一次,若出現(xiàn)兩次或兩次以上,程序報(bào)錯(cuò).
(3)若跳轉(zhuǎn)條件滿足,則執(zhí)行跳轉(zhuǎn)指令,程序跳到以標(biāo)號(hào)P為入口的程序段中執(zhí)行,否則不執(zhí)行跳轉(zhuǎn)指令,按順序執(zhí)行下一條指令.
(4)P63是END所在的步序,在程序中不需要設(shè)置P63.指針標(biāo)號(hào)允許用變址寄存器修改.CJ和CJ(P)都占三個(gè)程序步,指針標(biāo)號(hào)占一步.
(5)若用M8000常開觸點(diǎn)作為跳轉(zhuǎn)條件,則CJ變成無條件跳轉(zhuǎn)指令.
(6)不在同一個(gè)指針標(biāo)號(hào)的程序段中出現(xiàn)的同一個(gè)線圈不看作雙線圈.
(7)在跳轉(zhuǎn)執(zhí)行期間,即使被跳過程序的驅(qū)動(dòng)條件改變,但其線圈(或結(jié)果)仍保持跳轉(zhuǎn)前的狀態(tài),因?yàn)樘D(zhuǎn)期間根本沒有執(zhí)行這段程序.
(8)處于被跳過的程序段中的Y、M、S由于該段程序不執(zhí)行,故即使驅(qū)動(dòng)它們的工作條件發(fā)生了變化,它們的狀態(tài)也依然保持跳轉(zhuǎn)前的狀態(tài)不變.同理,T、C如果被跳過,則跳轉(zhuǎn)期間它們的當(dāng)前值被鎖定,當(dāng)跳轉(zhuǎn)中止、程序繼續(xù)執(zhí)行時(shí),定時(shí)計(jì)數(shù)接著進(jìn)行.
(9)如果在跳轉(zhuǎn)開始時(shí)定時(shí)器和計(jì)數(shù)器已在工作,則在跳轉(zhuǎn)執(zhí)行期間它們將停止工作,到跳轉(zhuǎn)條件不滿足后又繼續(xù)工作.但對(duì)于正在工作的定時(shí)器T192~T199和高速計(jì)數(shù)器C235~C255,不管有無跳轉(zhuǎn)仍連續(xù)工作.
(10)若積算定時(shí)器和計(jì)數(shù)器的復(fù)位(RST)指令在跳轉(zhuǎn)區(qū)外,即使它們的線圈被跳轉(zhuǎn),但對(duì)它們的復(fù)位仍然有效.
(1)主程序在前,子程序在后,即子程序要放在FEND指令之后.不同位置的“CALL”指令可以調(diào)用相同標(biāo)號(hào)的子程序,但同一標(biāo)號(hào)的指針只能使用一次.
(2)轉(zhuǎn)移標(biāo)號(hào)不能重復(fù),也不可與跳轉(zhuǎn)指令CJ的標(biāo)號(hào)重復(fù).(3)子程序必須寫在FEND和END之間,否則出錯(cuò).
(4)子程序可以調(diào)用下一級(jí)子程序,稱為子程序嵌套,F(xiàn)X2N系列的PLC最多可以有5級(jí)子程序嵌套.
通過以上實(shí)例,三菱FX系列PLC條件跳轉(zhuǎn)指令和子程序指令在實(shí)際應(yīng)用中可以用來選擇執(zhí)行指定的程序段,或者要反復(fù)被運(yùn)行程序段.我們?cè)趯?shí)際使用的過程中一定要注意他們的使用注意事項(xiàng),以免使用中出現(xiàn)錯(cuò)誤.
[1]郭艷萍,陳冰.電氣控制與PLC應(yīng)用[M].北京:人民郵電出版社,2010.
[2]黃中玉,于寧波.PLC應(yīng)用技術(shù)[M].北京:人民郵電出版社,2009.
[3]岳慶來.變頻器、可編程序控制器及觸摸屏綜合應(yīng)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,2009.
湖北科技學(xué)院學(xué)報(bào)2012年12期