陜西西門子S7-200SMARTPLC模塊代理經(jīng)銷商

西門子S7-200 PLC的子程序指令
S7-200系列PLC的指令系統(tǒng)具有簡(jiǎn)單、方便和靈活的子程序調(diào)用功能。與子程序有關(guān)的操作有子程序建立、子程序調(diào)用和返回。
1.子程序建立指令(SBR)
建立子程序是通過編程軟件來完成的??捎镁幊誊浖?ldquo;編輯”菜單中的“插入”選項(xiàng),選擇“子程序”,以建立或插入一個(gè)新的子程序,同時(shí),在指令樹窗口可以看到新建的子程序圖標(biāo),默認(rèn)的程序名為SBR_N,編號(hào)N從0開始按遞增順序生成,也可以在圖標(biāo)上直接更改子程序的程序名,把它變?yōu)楦苊枋鲈撟映绦蚬δ艿拿?。在指令樹窗口雙擊子程序的圖標(biāo)就可以進(jìn)入子程序,并對(duì)它進(jìn)行編輯。表7.13所示為子程序調(diào)用指令格式。
表7.13 子程序調(diào)用指令格式

2.子程序調(diào)用
(1)子程序調(diào)用指令( CALL)
在使能輸入有效時(shí),主程序把程序控制權(quán)交給子程序。子程序的調(diào)用可以帶參數(shù)。它在梯形圖中以指令盒的形式編程。指令格式參見表7.13。
(2)子程序條件返回指令(CRET)
在使能輸入有效時(shí),結(jié)束子程序的執(zhí)行,返回主程序中(此子程序調(diào)用的下一條指令)。梯形圖中以線圈的形式編程,指令不帶參數(shù),指令格式參見表7.13。
圖7.20所示為子程序調(diào)用指令的應(yīng)用舉例。
圖7.21所示為子程序返回指令的應(yīng)用舉例。

圖7.20 子程序調(diào)用指令的應(yīng)用

圖7.21 子程序返回指令的應(yīng)用
必須指出的是,STEP7-Micro/Win32沒有子程序無條件返回指令,但它會(huì)自動(dòng)加一無條件返回指令到每一個(gè)子程序的結(jié)尾。
當(dāng)子程序結(jié)束時(shí),程序執(zhí)行應(yīng)返回原調(diào)用指令(CALL)的下一條指令。子程序可以嵌套,嵌套層數(shù)可達(dá)8層。不禁止自調(diào)用(子程序調(diào)用自己),但使用時(shí)應(yīng)特別小心。
當(dāng)一個(gè)子程序被調(diào)用時(shí),整個(gè)邏輯堆棧另存別處,然后棧頂置1,其余棧位置0,程序執(zhí)行轉(zhuǎn)到被調(diào)用的子程序。子程序執(zhí)行完畢,邏輯堆?;謴?fù)原調(diào)用點(diǎn)的值,程序執(zhí)行返回到主調(diào)用程序。因?yàn)檎{(diào)用子程序后,棧頂總為1,所以跟隨SBR指令后的輸出線圈或功能框可直接接到梯形圖左邊母線上,在指令表中,跟在SBR后的Load指令可省略。
累加器值可在主、子程序間自由傳遞,調(diào)用子程序時(shí)無需對(duì)累加器作存儲(chǔ)及重裝操作。
FOR指令和NEXT指令必須成對(duì)使用,FOR標(biāo)記循環(huán)的開始,NEXT標(biāo)記循環(huán)的結(jié)束。FOR標(biāo)記在FOR和NEXT標(biāo)記之間執(zhí)行指令,必須給FOR指令當(dāng)前循環(huán)計(jì)數(shù)(INDX)、初值(INIT)和終值(FINAL)。
NEXT指令標(biāo)記循環(huán)的結(jié)束,并且置棧頂值為1。
例如,給定初值(INIT)為1,終值(FINAL)為10,那么隨著當(dāng)前計(jì)數(shù)值(INDX)從1增加到10,FOR與NEXT之間的指令被執(zhí)行10次。
如果初值大于終值,那么循環(huán)體不被執(zhí)行。每執(zhí)行一次循環(huán)體,當(dāng)前計(jì)數(shù)值增加1,并且將其結(jié)果同終值作比較,如果大于終值,那么終止循環(huán)。
WDR稱為看門狗復(fù)位指令,也稱為警戒時(shí)鐘刷新指令。它可以把警戒時(shí)鐘刷新,即延長(zhǎng)掃描周期,從而有效地避免看門狗超時(shí)錯(cuò)誤。WDR指令在梯形圖中以線圈形式編程,無操作數(shù)。
表7.12所示為看門狗指令形式。
圖7.18所示為WDR指令的應(yīng)用舉例。

圖7.18 WDR指令的應(yīng)用
表7.12 看門狗指令形式

使用警戒時(shí)鐘刷新指令(WDR)時(shí)應(yīng)當(dāng)非常小心,若在FOR、NEXT循環(huán)中寫入WDR指令,則可能使一次掃描的時(shí)間拖得很長(zhǎng)。而在一次掃描結(jié)束之前,下面的處理是被禁止的:
1)通信(自由口通信除外)。
2) I/O刷新(直接I/O除外)。
3)強(qiáng)制刷新。
4)特殊標(biāo)志位刷新(SM0,SM5~SM29均不可刷新)。
5)運(yùn)行時(shí)間診斷。
6)掃描時(shí)間超過25s時(shí),使10ms、100ms定時(shí)器不能正確計(jì)時(shí)。
7)不處理中斷程序中的STOP指令。
表7.11所示為停止指令形式。
表7.11 停止指令形式

停止指令( STOP)有效時(shí),可以使主機(jī)CPU的工作方式由RUN切換到STOP,從而立即中止用戶程序的執(zhí)行。STOP指令在梯形圖中以線圈形式編程。
STOP指令可以用在主程序、子程序和中斷服務(wù)程序中。如果在中斷服務(wù)程序中執(zhí)行STOP指令,則中斷處理立即中止,并忽略所有掛起的中斷。繼續(xù)掃描程序的剩余部分,在本次掃描周期結(jié)束后,完成將主機(jī)從RUN到STOP的切換。
STOP:停止指令,執(zhí)行條件成立(左側(cè)邏輯值為1)時(shí)停止執(zhí)行用戶程序,令CPU狀態(tài)由RUN轉(zhuǎn)到STOP。
操作數(shù):無。
STOP指令和END指令通常在程序中用來對(duì)突發(fā)緊急事件進(jìn)行處理,以避免實(shí)際生產(chǎn)中的重大損失。
圖7.16所示為END指令的應(yīng)用舉例。
圖7.17所示為STOP指令的應(yīng)用舉例。

圖7.16 END指令的應(yīng)用

圖7.17 STOP指令的應(yīng)用
陜西西門子S7-200SMARTPLC模塊代理經(jīng)銷商