條件結束(END)指令:執行條件成立(左側(ce) 邏輯值為(wei) 1)時,終止當前掃描周期,結束主程序,返回主程序起點。END指令可以在主程序中使用,但不能在子程序或中斷服務程序中使用。END指令見表3-11。
停止指令
停止(STOP)指令:執行條件成立(左側(ce) 邏輯值為(wei) 1)時,停止執行用戶程序時CPU狀態由 RUN轉到 STOP。STP指令見表3-12。
如果STOP指令在中斷程序中執行,那麽(me) 該中斷立即終止,並且忽略所有掛起的中斷,繼續掃描程序剩餘(yu) 部分,完成當前周期的剩餘(yu) 動作,包括主用戶程序的執行,並在當前掃描的最後,完成從(cong) RUN 到 STOP模式的轉變。
看門狗複位指令
看門狗複位(WDR)指令允許S7-200CPU的看門狗定時器被重新觸發,這樣可以在不引起看門狗錯誤的情況下,增加此掃描所允許的時間。WDR指令見表3-13。

跳轉指令
跳轉(JMP)指令:把程序的執行跳轉到指定的標號,執行跳轉後,邏輯堆棧頂總為(wei) 1;
標號(LBL)指令:標記跳轉目的地的位置;
操作數 n:0~255。
JMP指令見表3-14,JMP指令梯形圖示例如圖 3-16所示。

JMP指令可以在主程序、子程序或者中斷服務程序中使用。跳轉和與(yu) 之相應的標號指令必須位於(yu) 同一程序代碼(無論是主程序、子程序還是中斷服務程序)。不能從(cong) 主程序跳到子程序或中斷程序,同樣也不能從(cong) 子程序或中斷程序中跳出。可以在順序控製(SCR)程序段中使用JMP指令,但相應的標號指令必須在同一個(ge) 順序控製程序段中。
子程序指令
S7-200PLC的指令係統具有簡單、方便、靈活的子程序調用功能。與(yu) 子程序有關(guan) 的操作有:建立子程序、子程序的調用和返回。
1.建立子程序
建立子程序是通過編程軟件來完成的。可用編程軟件“編輯”菜單中的“插入”選項,選擇“子程序”,以建立或插入一個(ge) 新的子程序,同時,在指令樹窗口可以看到新建的子程序圖標,默認的程序名是SBR_N,編號N從(cong) O開始按遞增順序生成,也可以在圖標上直接更改子程序的程序名,把它變為(wei) 更能描述該子程序功能的名字。在指令樹窗口雙擊子程序的圖標就可進入子程序,並能對它進行編輯。S7-200CPU221、CPU222、CPU 224最大支持64個(ge) (0~63)子程序;S7_200CPU 224XP.CPU 226最大支持128個(ge) (0~127)子程序。
2.子程序調用
(1)子程序調用(CALL)指令在使能輸入有效時,主程序把程序控製權交給子程序。子程序的調用可以帶參數,也可以不帶參數。它在梯形圖中以指令盒的形式編程。CALL指令見表3-15。
(2)子程序條件返回(CRET)指令在使能輸入有效時,結束子程序的執行,返回主程序中(此子程序調用的下一條指令)。梯形圖中以線圈的形式編程,指令不帶參數。

使用說明:
(1)CRET指令多用於(yu) 子程序的內(nei) 部,由判斷條件決(jue) 定是否結束子程序調用;RET指令用於(yu) 子程序的結束。用MicroWIN32編程時,不需要手工輸入RET指令,而是由軟件自動加在每個(ge) 子程序結尾。
(2)子程序嵌套如果在子程序的內(nei) 部又對另一子程序執行調用指令,則這種調用稱為(wei) 子程序的嵌套。子程序的嵌套深度最多為(wei) 8級。
(3)當一個(ge) 子程序被調用時,係統自動保存當前的堆棧數據,並把棧頂置為(wei) 1,堆棧中的其他置為(wei) 0,子程序占有控製權。子程序執行結束,通過返回指令自動恢複原來的邏輯堆棧值,調用程序又重新取得控製權。
(4)累加器可在調用程序和被調用子程序之間自由傳(chuan) 遞,所以累加器的值在子程序調用時既不保存也不恢複。
3.帶參數的子程序調用
子程序中可以有參變量,帶參數的子程序調用擴大了子程序的使用範圍,增加了調用的靈活性。子程序的調用過程如果存在數據的傳(chuan) 遞,則在調用指令中應包含相應的參數。
1)子程序參數
子程序最多可以傳(chuan) 遞16個(ge) 參數。參數在子程序的局部變量表中加以定義(yi) 。參數包含下列信息:變量名、變量類型和數據類型。
(1)變量名變量名最多用8個(ge) 字符表示,第一個(ge) 字符不能是數字。
(2)變量類型變量類型是按變量對應數據的傳(chuan) 遞方向來劃分的,可以是傳(chuan) 入子程序(IN)、傳(chuan) 入/傳(chuan) 出子程序(IN/OUT)、傳(chuan) 出子程序(OUT)和暫時變量(TEMP)四種類型。四種變量類型的參數在變量表中的位置必須按以下先後順序:
①IN類型傳(chuan) 入子程序參數。所接的參數可以是直接尋址數據(如VBI00)、間接尋址數據(如AC1)、立即數(如16#2344)和數據的地址值(如&VBI06)
②IN/OUT類型:傳(chuan) 入/傳(chuan) 出子程序參數。調用時將指定參數位置的值傳(chuan) 到子程序,返回時從(cong) 子程序得到的結果值被返回到同一地址。參數可以采用直接和間接尋址,但立即數(如16#1234)和地址值(如&VBl00)不能作為(wei) 參數。
③OUT類型:傳(chuan) 出子程序參數。它將從(cong) 子程序返回的結果值送到指定的參數位置。輸出參數可以采用直接和間接尋址,但不能是立即數或地址編號。
④TEMP類型:暫時變量類型。在子程序內(nei) 部暫時存儲(chu) 數據,不能用來與(yu) 主程序傳(chuan) 遞參數數據。
(3)數據類型局部變量表中還要對數據類型進行聲明。數據類型包括:能流,布爾型,字節、字和雙字型,整數、雙整數型以及實型。
①能流:僅(jin) 允許對位輸入操作,是位邏輯運算的結果。在局部變量表中,布爾能流輸入處於(yu) 所有類型的最前麵。
②布爾型:布爾型用於(yu) 單獨的位輸入和輸出。
③字節、字和雙字型:這三種類型分別聲明一個(ge) 1字節、2字節和4字節的無符號輸入或輸出參數。
④整數、雙整數型:這兩(liang) 種類型分別聲明一個(ge) 2字節或4字節的有符號輸入或輸出參數。
⑤實型:該類型聲明一個(ge) IEEE標準的32位浮點參數。
2)參數子程序調用的規則
常數參數必須聲明數據類型。例如,把值為(wei) 223344的無符號雙字作為(wei) 參數傳(chuan) 遞時,必須用DW#223344來指明。如果缺少常數參數的這一描述,常數可能會(hui) 被當作不同類型使用。
輸入或輸出參數沒有自動數據類型轉換功能。例如,局部變量表中聲明一個(ge) 參數為(wei) 實型,而在調用時使用一個(ge) 雙字,則子程序中的值就是雙字。參數在調用時必須按照一定的順序排列,先是輸入參數,然後是輸入輸出參數,最後是輸出參數。
3)變量表使用
按照子程序指令的調用順序,參數值分配給局部變量存儲(chu) 器,起始地址是L0.0。使用編程軟件時,地址分配是自動的。在局部變量表中要加入一個(ge) 參數,右擊要加入的變量類型區可以得到一個(ge) 選擇菜單,選擇“插入”,然後選擇“下一行”即可。局部變量表使用局部變量存儲(chu) 器。當在局部變量表中加入一個(ge) 參數時,係統自動給各參數分配局部變量存儲(chu) 空間。參數子程序調用指令格式:CALL子程序,參數 I,參數2,.,參數n.局部變量分配見表3-16,帶參數調用子程序示例如圖3-18所示。