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