重慶西門子S7-200SMART代理經(jīng)銷商
西門子S7-200 PLC跳轉(zhuǎn)指令及應(yīng)用實(shí)例

跳轉(zhuǎn)指令的功能是根據(jù)不同的邏輯條件,有選擇地執(zhí)行不同的程序。利用跳轉(zhuǎn)指令,可使程序結(jié)構(gòu)更加靈活,減少掃描時(shí)間,從而加快了系統(tǒng)的響應(yīng)速度。
跳轉(zhuǎn)指令JMP和LBL必須配合應(yīng)用在同一個(gè)程序塊中,即JMP和LBL可同時(shí)出現(xiàn)在主程序中,或者同時(shí)出現(xiàn)在子程序中,或者同時(shí)出現(xiàn)在中斷程序中。不允許從主程序中跳轉(zhuǎn)到子程序或中斷程序,也不允許從某個(gè)子程序或中斷程序中跳轉(zhuǎn)到主程序或其他的子程序或中斷程序。
執(zhí)行跳轉(zhuǎn)指令需要用兩條指令配合使用,跳轉(zhuǎn)開始指令JMP n和跳轉(zhuǎn)標(biāo)號(hào)指令LBL n,n是標(biāo)號(hào)地址,n的取值范圍是0~255的字型類型。
跳轉(zhuǎn)指令可以使程序流程跳轉(zhuǎn)到具體的標(biāo)號(hào)處。當(dāng)跳轉(zhuǎn)條件滿足時(shí),程序由JMP指令控制跳轉(zhuǎn)到對(duì)應(yīng)的標(biāo)號(hào)地址n處向下執(zhí)行(即跳過了JMP n和LBL n之間的程序);當(dāng)跳轉(zhuǎn)條件不滿足時(shí),順序向下執(zhí)行程序,即執(zhí)行JMP n和LBL n之間的程序,指令的使用
當(dāng)I0.2斷開時(shí)(I0.2=0),能執(zhí)行到程序A和程序C,即輸出Q0.0受I0.3的控制;當(dāng)I0.2接通時(shí)(I0.2=1),能執(zhí)行到程序B和程序C,即輸出Q0.0受I0.4的控制。
從上述分析可以看出,輸入點(diǎn)I0.2為一方式選擇開關(guān),通過它的通斷來完成了一個(gè)2選1的控制。
【例】 某生產(chǎn)線對(duì)產(chǎn)品進(jìn)行加工處理,同時(shí)利用增減計(jì)數(shù)器對(duì)成品進(jìn)行累計(jì),每當(dāng)檢測(cè)到10個(gè)成品時(shí),就要跳過某些控制程序,直接進(jìn)入到小包裝控制程序。每當(dāng)檢測(cè)到40個(gè)成品(4個(gè)小包裝),直接進(jìn)入到大包裝控制程序。相關(guān)的控制程序如圖4-58所示
由圖4-58可以看出,C0計(jì)數(shù)器為增減計(jì)數(shù)器,計(jì)數(shù)范圍0~10,當(dāng)?shù)扔?/span>10時(shí),啟動(dòng)小包裝程序(Q0.0接通),再次掃描到計(jì)數(shù)器C0時(shí)自復(fù)位,從0重新計(jì)數(shù);C1計(jì)數(shù)器為遞增計(jì)數(shù)器,C0為其計(jì)數(shù)脈沖端,計(jì)的是小包裝個(gè)數(shù),計(jì)數(shù)范圍0~4,當(dāng)?shù)扔?/span>4時(shí),啟動(dòng)大包裝程序(Q0.1接通),再次掃描到計(jì)數(shù)器C1時(shí)自復(fù)位,從0重新計(jì)數(shù)。
看門狗指令由看門狗條件、指令助記符WDR構(gòu)成,其指令格式如后面的圖4-56所示。
看門狗指令可以在沒有監(jiān)視程序錯(cuò)誤的條件下增加CPU的掃描時(shí)間。有些程序的執(zhí)行過程(如I/O更新)只有在一個(gè)掃描循環(huán)終止后才能進(jìn)行,如果用戶程序中使用了循環(huán)指令造成阻止掃描完成或過度地延遲掃描完成時(shí)間,而當(dāng)前掃描時(shí)間不能滿足這一要求時(shí),可以考慮使用看門狗復(fù)位指令用以延長(zhǎng)掃描時(shí)間,否則,一些程序的執(zhí)行過程可能會(huì)被禁止。這些程序包括:除自由口通信外的通信;除立即I/O外的I/O刷新;強(qiáng)制刷新;特殊繼電器的刷新;運(yùn)行時(shí)間診斷;中斷程序中的STOP指令。
【例】 END、STOP及WDR指令的應(yīng)用如圖4-56所示。

分析:
①當(dāng)SM5.0(當(dāng)有I/O錯(cuò)誤時(shí)為ON)、SM4.3(當(dāng)運(yùn)行時(shí),發(fā)現(xiàn)編程問題時(shí)為ON)或I0.1(手動(dòng)按鈕)中的任意點(diǎn)接通時(shí),PLC的CPU就會(huì)從RUN狀態(tài)切換到STOP狀態(tài),PLC停止輸出,即所有的輸出顯示燈立即熄滅;這時(shí)PLC的輸入信號(hào)仍然有顯示。
②當(dāng)手動(dòng)接通I0.0(I0.0 =1)時(shí),CPU會(huì)因?yàn)闂l件滿足結(jié)束本次掃描,去進(jìn)行輸出刷新,而不會(huì)執(zhí)行其后的程序,即Q0.0保持I0.0接通前的狀態(tài),而不再受I0.4的控制(如先接通I0.0,再接通I0.4,這時(shí)Q0.0不會(huì)有輸出);當(dāng)斷開I0.1時(shí),END無效,這時(shí)Q0.0就受I0.4的控制。
暫停指令的功能是將PLC主機(jī)CPU的工作方式由RUN切換到STOP方式,CPU在1.4s內(nèi)終止PLC的運(yùn)行。因此,STOP與END指令均能用于處理突發(fā)緊急事件。
STOP指令既可以在主程序中使用,也可以在子程序和中斷程序中使用。如果在中斷程序中執(zhí)行STOP指令,則中斷處理立即結(jié)束,并忽略所有掛起的中斷,返回主程序執(zhí)行到MEND后,將PLC切換到STOP方式。
暫停指令由暫停條件、指令助記符( STOP)構(gòu)成。
結(jié)束指令的功能是結(jié)束主程序,注意它只能在主程序中使用,而不能在子程序或中斷程序中使用。
END是條件結(jié)束指令,由結(jié)束條件、指令助記符(END)構(gòu)成。結(jié)束指令根據(jù)先前邏輯條件終止用戶程序,這樣可利用END指令處理突發(fā)事件。
MEND是無條件結(jié)束指令。MEND指令用于程序的后,無條件終止用戶程序的執(zhí)行,返回到主程序的*條指令。STEP7-Mircro/WIN32軟件自動(dòng)在主程序結(jié)束處添加了無條件結(jié)束語句。在編制主程序時(shí),用戶不用自己再在程序末尾添加條件結(jié)束指令( END)和無條件結(jié)束指令(MEND)。
指令格式如圖4-55所示,由圖可以看出,它有2個(gè)數(shù)據(jù)輸入端及1個(gè)輸出端:

圖4-55 實(shí)數(shù)到ASCII碼轉(zhuǎn)換指令
①IN:實(shí)數(shù)數(shù)據(jù)輸入。
②FMT:轉(zhuǎn)換精度或轉(zhuǎn)換格式(小數(shù)位的表示方式)。
③OUT:連續(xù)3~15個(gè)輸出字節(jié)的首地址。

當(dāng)允許輸入EN有效時(shí),把整數(shù)輸入數(shù)據(jù)IN,根據(jù)FMT的轉(zhuǎn)換精度,轉(zhuǎn)換成始終是8個(gè)字符的ASCII碼,并將結(jié)果送到首地址為OUT的8個(gè)連續(xù)字節(jié)存儲(chǔ)單元。
FMT的定義如下:

在FMT中,高4位SSSS表示OUT為首地址的連續(xù)存儲(chǔ)單元的字節(jié)數(shù),SSSS=3~15。C為小數(shù)點(diǎn)的表示方式:C=0時(shí),用小數(shù)點(diǎn)來分割整數(shù)和小數(shù);C=1時(shí),用逗號(hào)來分割整數(shù)和小數(shù)。nnn表示在首地址為OUT的連續(xù)字節(jié)中小數(shù)的位數(shù),nnn=000~101,小數(shù)部分的對(duì)位方式為右對(duì)齊。
【例】 指令:RTA VD0,VB10,2#0110 0010。表明在FMT精度控制字中在SSSS=0110(6個(gè)字節(jié)),C=0,nnn=010(小數(shù)兩位),用小數(shù)點(diǎn)進(jìn)行格式化處理的數(shù)據(jù)格式,在OUT中的表示方式如表4-21所示。
表4-21 經(jīng)RTA轉(zhuǎn)換后的數(shù)據(jù)格式
指令格式如圖4-54所示,由圖可以看出,它有2個(gè)數(shù)據(jù)輸入端及1個(gè)輸出端:
圖4-54 雙整數(shù)到ASCII碼轉(zhuǎn)換指令
①IN:雙整數(shù)數(shù)據(jù)輸入。
②FMT:轉(zhuǎn)換精度或轉(zhuǎn)換格式(與ITA指令*相同)。
③OUT:連續(xù)12個(gè)輸出字節(jié)的首地址,數(shù)據(jù)類型為字節(jié)。
當(dāng)允許輸入EN有效時(shí),把雙整數(shù)輸入數(shù)據(jù)IN,根據(jù)FMT的轉(zhuǎn)換精度,轉(zhuǎn)換成始終是8個(gè)字符的ASCII碼,并將結(jié)果送到首地址為OUT的12個(gè)連續(xù)字節(jié)存儲(chǔ)單元。

【例】 指令:DTA VD0,VB10,4。表明在FMT精度控制字中C=0,nnn=100時(shí),用小數(shù)點(diǎn)進(jìn)行格式化處理的數(shù)據(jù)格式,在OUT中的表示方式見表4-20。
表4-20 DTA轉(zhuǎn)換后的數(shù)據(jù)格式

重慶西門子S7-200SMART代理經(jīng)銷商