在S7-1200PLC中,程序控制指令主要包含兩部分:一是改變程序執(zhí)行順序的的跳轉(zhuǎn)指令;二是程序運(yùn)行過(guò)程中用于控制的指令;本節(jié)主要分享跳轉(zhuǎn)和標(biāo)簽指令:
1.對(duì)于正常的PLC程序,PLC的程序段是按照從上往下的順序依次執(zhí)行;當(dāng)程序中有跳轉(zhuǎn)指令時(shí),程序可以終止運(yùn)行,直接跳到相對(duì)應(yīng)的標(biāo)簽位置開(kāi)始執(zhí)行;在這個(gè)期間,跳轉(zhuǎn)程序與標(biāo)簽之間的所有程序不被執(zhí)行;
2.跳轉(zhuǎn)指令可以往前跳轉(zhuǎn),也可以往后跳轉(zhuǎn);
3.跳轉(zhuǎn)指令分為3類:第一類就是邏輯結(jié)果跳轉(zhuǎn)指令,第二類就是定義跳轉(zhuǎn)列表的跳轉(zhuǎn)指令(JMP_LIST),第三類是跳轉(zhuǎn)分支指令(SWITCH)指令;
關(guān)鍵點(diǎn):針對(duì)所有的跳轉(zhuǎn)指令均有效
1.跳轉(zhuǎn)指令只能一個(gè)程序塊中跳轉(zhuǎn),不能從一個(gè)程序塊跳轉(zhuǎn)到另外一個(gè)程序塊中;簡(jiǎn)單地說(shuō),就是只能在它自己的FC或FB中跳轉(zhuǎn),不能從FC跳到FB,或是FC1跳轉(zhuǎn)到FC2;或是FB1跳轉(zhuǎn)到FB2等情況;
2.在一個(gè)程序塊里面,跳轉(zhuǎn)的標(biāo)簽名稱具有唯一性,也就是只能使用一次;
3.一個(gè)程序段中,只能設(shè)置一個(gè)跳轉(zhuǎn)標(biāo)簽/跳轉(zhuǎn)線圈;也就是一個(gè)Network中只能有一個(gè)跳轉(zhuǎn)標(biāo)簽;
具體指令的講解及其案例實(shí)現(xiàn)方式見(jiàn)下圖所示;
本節(jié)是在跳轉(zhuǎn)與標(biāo)簽指令(第1節(jié))的基礎(chǔ)上分享的第2節(jié):定義跳轉(zhuǎn)列表指令JMP_LIST;
TIPS:
1.該指令,有多個(gè)條件跳轉(zhuǎn),并繼續(xù)執(zhí)行由 K 參數(shù)的值指定的標(biāo)簽段的程序,跳轉(zhuǎn)標(biāo)簽則可以在指令框的輸出指定;
2.可在指令框中點(diǎn)擊*號(hào),可以增加DEST輸出的數(shù)量;其中,針對(duì)CPU S7-1200 最多可以聲明 32 個(gè)輸出,而 CPU S7-1500 最多可以聲明 256 個(gè)輸出;
3.DEST輸出編號(hào),必須符合標(biāo)簽命名規(guī)則;
4.指令的輸出中只能指定跳轉(zhuǎn)標(biāo)簽,而不能指定指令或操作數(shù);
5.K參數(shù)值將指定輸出編號(hào),因而程序?qū)奶D(zhuǎn)標(biāo)簽處繼續(xù)執(zhí)行。如果 K 參數(shù)值大于可用的輸出編號(hào),則繼續(xù)執(zhí)行塊中下個(gè)程序段中的程序。簡(jiǎn)單地說(shuō),K值就是與DEST管腳一一對(duì)應(yīng);比如K=0,對(duì)應(yīng)DEST0管腳,執(zhí)行DEST0對(duì)應(yīng)的標(biāo)簽段的程序,K=1,對(duì)應(yīng)DEST1管腳,執(zhí)行DEST1對(duì)應(yīng)的標(biāo)簽段的程序;
6.僅在 EN 使能輸入的信號(hào)狀態(tài)為“1”時(shí),才執(zhí)行“定義跳轉(zhuǎn)列表”指令;
具體指令的講解及其案例實(shí)現(xiàn)方式見(jiàn)下圖所示;
本節(jié)是在跳轉(zhuǎn)與標(biāo)簽指令(第2節(jié))的基礎(chǔ)上分享的第3節(jié):跳轉(zhuǎn)分支指令SWITCH;
該指令根據(jù)一個(gè)或多個(gè)比較指令的結(jié)果,定義要執(zhí)行的多個(gè)程序標(biāo)簽處跳轉(zhuǎn),在參數(shù)K中指定要比較的值。
可以從指令框的“???”下拉列表中選擇該指令的數(shù)據(jù)類型。如果選擇了比較指令而尚未定義指令的數(shù)據(jù)類型,“???”下拉列表將僅列出所選比較指令允許的那些數(shù)據(jù)類型。
特點(diǎn):
1.該指令從第一個(gè)比較開(kāi)始執(zhí)行,直至滿足比較條件為止。如果滿足比較條件,則將不考慮后續(xù)比較條件。如果未滿足任何指定的比較條件,將在輸出 ELSE 處執(zhí)行跳轉(zhuǎn)。如果輸出 ELSE 中未定義程序跳轉(zhuǎn),則程序從下一個(gè)程序段繼續(xù)執(zhí)行。
2.可在指令框中增加輸出的數(shù)量。輸出從值“0”開(kāi)始編號(hào),每次新增輸出后以升序繼續(xù)編號(hào)DEST0、DEST1、DEST2等。在指令的輸出中指定跳轉(zhuǎn)標(biāo)簽 (LABEL)。但是不能在該指令的輸出上指定指令或操作數(shù)。
3.輸入將自動(dòng)插入到每個(gè)附加輸出中。如果滿足輸入的比較條件,則將執(zhí)行相應(yīng)輸出處設(shè)定的跳轉(zhuǎn)。
4.輸入引腳可以與K值做等于,大于,小于,大于等于,小于等于,不等于等比較運(yùn)算;
具體指令的講解及其案例實(shí)現(xiàn)方式見(jiàn)下圖所示;
本節(jié)是在跳轉(zhuǎn)與標(biāo)簽指令(第3節(jié))的SWITCH指令的基礎(chǔ)上分享的第4節(jié):返回指令RET;
1.返回指令可以用來(lái)實(shí)現(xiàn)對(duì)程序執(zhí)行的控制,當(dāng)CPU在執(zhí)行代碼塊時(shí),執(zhí)行到RET指令,如果該指令的條件滿足,則CPU退出代碼塊的執(zhí)行,此時(shí)發(fā)奎指令RET后面的程序段不被執(zhí)行。
2.應(yīng)用該指令時(shí),可以與跳轉(zhuǎn)指令一起配合實(shí)現(xiàn)對(duì)程序段的選擇執(zhí)行;例如在每個(gè)程序段中加入RET指令,則執(zhí)行完該標(biāo)簽段到RET指令之間的程序后,可自動(dòng)返回,不繼續(xù)執(zhí)行后續(xù)的程序;
3.程序塊退出時(shí),返回值(操作數(shù))的信號(hào)狀態(tài)與調(diào)用程序塊的使能ENO相對(duì)應(yīng);也就是說(shuō)返回值的信號(hào)是0或是1,將決定FC或FB的ENO狀態(tài);
4.RET 與 JMP 和 JMPN 指令相關(guān)
如果程序段中已包含有“JMP:若 RLO = "1" 則跳轉(zhuǎn)”或“JMPN:若 RLO = "0" 則跳轉(zhuǎn)”指令,則不得使用 RET:返回指令。每個(gè)程序段中只能使用一個(gè)跳轉(zhuǎn)線圈。
具體指令的講解及其案例實(shí)現(xiàn)方式見(jiàn)下圖所示;
審核編輯:湯梓紅
評(píng)論
查看更多