200SMART常用指令(三)
8)程序控制指令
程序控制指令包含循環指令、跳轉指令、順序控制指令及看門狗復位指令和停止指令
循環指令(FOR....NEXT)
是對程序執行期間的循環操作,通常來說,程序的掃描是整個程序從頭至尾的過程,而為了解決重復執行相同功能的程序段,尤其需要大量的相同功能的計算或邏輯運算時,這時我們可以使用循環指令
循環指令的執行次數并非無限制的,它受CPU的掃描時間影響;循環次數越多,掃描時間就會越長,而200SMART長的掃描時間是500MS,當超過這個時間后CPU則會報錯,報看門狗出錯并停止運行CPU;所以循環次數的掃描時間不能超過500MS
循環指令由FOR及NEXT組成,在實際應用需要配套一起使用;FOR....NEXT指令中間的程序稱為循環體,CPU每次掃描到此處時會循環執行的程序。
FOR....NEXT可循環嵌套,多嵌套8層。每次重新執行該指令時,CPU會自動復位各參數,在使用過程中無需對參數進行清零的操作
INIT:循環的起始值;FINAL:需要執行循環的總次數;當INDX的值大于FINAL的值時,循環結束,循環指令不再執行,設置結束次數時不能大于起始值。INDX端只能使用16位的存儲空間
跳轉指令(JMP....LBL)
跳轉指令的使用可提高編程的靈活性,使主機可以針對不同條件的判斷執行對應的程序。比如在一段程序中,正常是從頭至尾都會執行掃描,但使用跳轉指令后,PLC不會對JMP...LBL之間的程序執行,當跳轉指令不滿足時PLC則會繼續掃描該段程序
跳轉指令JMP及跳轉指令標簽LBL指令一起組成,使用時也需要一起配套出現;在使用的過程種,跳轉指令的數字需要和標簽指令的數字對應一致
在執行跳轉指令執行之前,JMP...LBL之間的程序如果正在運行,接著此時跳轉指令滿足跳過該段程序后,只是不再掃描而不是不執行,所以該程序段會保持在跳轉指令執行之前的結果。
標簽號可命名為常數也可以是漢字,
跳轉指令在使用中有以下幾點需要注意:
1、跳轉指令及標簽指令需要配合一起使用,且只能在同一POU內使用
2、執行跳轉后,被跳轉的程序段不再掃描,其對應一些元件的狀態會保持在跳轉前的狀態
3、對于計數器而言,計數器會停止工作但當前值會保持在跳轉前的計數不會被丟失
4、對于定時器而言,因不同的分辨率刷新方式也不一樣,在跳轉期間,1MS和10MS的定時器會繼續定時;到設定值后,定時器的相關觸點也會發生變化;直到32767后才會停止。在跳轉期間,100MS的定時器和計數器是一樣的
5、跳轉指令只能在本POU中跳轉,不能從主程序跳轉到子程序或子程序到另一子程序中
6、跳轉指令可以由下往上跳,但要注意避免出現看門狗出錯
順控指令
順控指令在SMART PLC的梯形圖程序下有三種狀態:需要執行的狀態步SCR;用于轉移狀態步的SCRT;表示對上一狀態步結束的SCRE
順控指令主要用于具有明顯動作的設計(如單機設備),這種情況下使用順控指令編程能使程序結構清晰明了;順控指令在使用的過程需要配合狀態繼電器(S)使用
在使用順控指令設計程序時,根據程序執行的動作順序可分為單流程控制結構、選擇性流程控制、并行分支流程控制結構三種
單流程結構:當順序功能圖只有一個通道時稱為單流程結構,主要特點為從初始狀態開始,每個狀態后面只有一個轉移,每個轉移后面只有一個狀態(如下圖所示)
順序功能流程圖一般有:狀態、轉移條件及狀態的動作三部分組成
選擇性分支結構:當單流程向分支轉移時,根據轉轉條件是否成立只能向其中一個流程進行轉移,是一種多選一的過程結構。
并行性分支結構:當單流程向多個流程轉移時,多個分支的轉移條件均相同,只要轉移條件成立,則同時激活各個分支流程
順控指令的使用注意有幾點:
1、SCR段程序段是否執行,取決于狀態繼電器S是否為ON
2、順控指令只能狀態繼電器S有用,不能用其他內部存儲器,空間大小和位存儲器M一樣,為32個字節大小
3、不能把同一個S狀態位用于不同的POU中,比如在主程序中用了就不能在子程序中使用。
4、順控程序中不支持多線圈輸出
5、狀態編號可不按順序編排使用
6、不同的SCR段中,不得使用跳轉指令,但如果在同一個SCR段中可使用跳轉指令
7、狀態轉移后,使用過的狀態繼電器會自動復位
停止指令(STOP)
可以使用該指令對CPU進行停止運行的操作
STOP指令可將CPU從run模式切換到STOP模式來終止程序的執行,比如I/O出現錯誤時(SM5.0會為ON)可把PLC切換到STOP模式
看門狗復位指令(WDR)
看門狗復位指令的使用可使程序的掃描時間延長500MS。如循環次數的掃描時間過長導致CPU報錯并停機,且會發出非致命錯誤掃描看門狗超時的代碼(001AH) 而如果在適當位置使用看門狗指令(WDR)的話能延長掃描時間防止報錯停機
每次執行 WDR 指令時,掃描看門狗超時時間都會復位為 500 毫秒。
但是,主掃描的大持續時間為 5 秒。如果當前掃描持續時間達到 5 秒,CPU 會無條件地切換為 STOP 模式。
GET_ERROR(獲取非致命錯誤代碼)
獲取非致命錯誤代碼指令將 CPU 的當前非致命錯誤代碼存儲在分配給 ECODE 的位置。而 CPU 中的非致命錯誤代碼將在存儲后清除。用于CPU報錯顯示的情況下可使用該指令