狀態流程圖

一、狀態流程圖(SFC)解說:

1.在經過這麼多的程式設計的練習,各位應該可以發現,幾乎所有程式的設計,都是由不同的狀態所組合而成的。如果所有的狀態是依一定的順序來逐步進行的,則稱之為順序控制。若狀態的變化需依條件而改變,則為條件控制(第四章都已介紹過)。不管是順序控制或條件控制,其實也都是由狀態所組合成的,所以使用狀態設計法來設計題目,最為恰當。但是如果狀態之間的變化愈驅複雜,則使用狀態設計法所設計出來的程式,閱讀起來就愈不容易,偵錯的工作也就不容易進行了。例如簡易紅綠燈控制,若以狀態設計法來設計,則階梯圖如圖6-1。像這樣的階梯圖,在此時你可能還看得懂,但過了一段時間後,你有把握能馬上說明它嗎?

2.為了改善這個缺失,另外提出一種較新的技巧--狀態流程圖設計法。它是狀態設計法的延伸,是將狀態設計法所分出析出來的各種狀態,各定義成一步驟(STEP),而步驟之間的關係則使用流程圖來說明。因為流程圖很容易閱讀,偵錯也很容易,所以有愈來愈多的程式設計師,都採用這種方法來設計程式。 若以流程圖來說明各狀態間的關係,則如圖6-2所示:圖中將各狀態所須產生的動作以階梯圖的方式畫在旁邊,這樣子是不是比較容易看得懂呢? 

(1)從一個狀態要跳到另一個狀態是由原狀態的跳躍條件來決定,它一般是畫在狀態盒的下方。像上面的例子中,狀態S0要跳到狀態S1,則由T0的A接點來決定,也就是當狀態S0執行時,GL1及RL2動作,且T0開始計時,計時到時,T0的A接點ON,所以狀態S0執行結束,並順勢往下跳到狀態S1執行。

(2)當由一狀態跳到另一個狀態後,原有的狀態中的計時器、內部電驛、及使用OUT命令驅動的輸出元件都將被復歸,而計數器及使用字元指令驅動的輸出元件將維持原狀。以上題為例,當狀態由S0跳到S1時,GL1、RL2及T0都將復歸,而緊接著執行狀態S1的動作,即YL1、RL2動作,而T1開始計時。

(3)將狀態流程圖與一般階梯圖做比較,可以發現狀態流程圖具有下列優點:

A.可直接看出各狀態的變化流程,不像階梯圖要仔細的分析電路。

B.狀態間可依某些條件來決定它的流向。

C.在執行完某一狀態後,其原有的動作可以選擇自動復歸或繼續保持(依使用的指令而定)。

D.同一內部元件可在不同的狀態中重覆出現(但在同一狀態中不能出現兩次以上),不像階梯圖只能出現一次。

3.使用步進階梯圖來輸入程式:使用一般階梯圖來設計程式時,在階梯圖畫好之後必須將階梯圖轉化為程式,鍵入到PLC中去執行。同樣的使用狀態流程圖的方式,也必須轉換成程式後才鍵入到PLC中。但對於初學者來說,要將狀態流程圖直接轉換成程式,可能有點困難,我們可以先將狀態流程圖轉換成一種叫步進階梯圖的圖形,再轉換成程式以鍵入PLC中。步進階梯圖是以階梯圖的型式來表示狀態流程的,以上題為例,它們的對照圖如圖6-3。

 步進階梯圖重點說明:

(1)步進階梯圖中的STEP(FUN 08)指令,是代表一狀態動作的啟始指標,它的後面根著一個以內部電驛為主的編號,做為不同狀態的識別。例如STEP 3000。

(2)SNXT(FUN 09)指令,有一點類似GO TO的意思。它是用來做為狀態之間跳躍的指令,其後也跟著一個以內部電驛的編號,這個編號就是它要GOTO的目標。所以SNXT 3001就是跳到狀態3001的意思。至於它前面的接點是為跳躍條件,當條件動作時,SNXT即執行跳躍動作。

(3)在STEP與SNXT間的所有動作即是這一狀態所需做的動作。

(4)在步進階梯圖中,將每一種狀態另稱為步,這就是步進階梯圖名稱的由來。

 

二、狀態流程圖、步進階梯圖及程式指令的關係:學習PLC到現在為止,都是以書寫器將程式指令一一鍵入的,所以不管是使用一般階梯圖或改良後的步進階梯圖或狀態流程圖,最終都需將它轉換成程式指令,才能為PLC所接受。這在較大的電路設計來說,錯誤的機率將會增高,為了改善這個缺失,某些機種的製造廠商,研發了一些應用軟體,只要將這些應用軟體安裝到電腦中,即可在應用軟體內直接繪狀態流程圖、步進階梯圖或直接鍵入指令。除了輸入的方便性之外,一般軟體也都提供監督功能,以便PLC執行時,能將各種狀態執行的結果傳回電腦螢幕,便於設計者偵錯用。不管你是使用前述的那一種方法,最後都需要使用傳輸線將程式傳入PLC中才能執行。應用軟體在接受了一種輸入法後後,可以自動轉換成其它兩種輸入法。這三種輸入方式的交叉運用是非常重要的。依筆者的經驗,狀態流程圖適合程式設計階段及整體流程的偵錯使用。而步進階梯圖適合做各步動作的偵錯。至於指令鍵入法,筆者都是用來做程式輸入及修改使用。為了設計容易起見,我們採用如下方法來設計程式:

1.在設計初,以SFC來紙上作業,做設計規劃。

2.將SFC轉換為步進階梯圖,並寫出程式指令。

3.以書寫器或軟體將指令鍵入。

4.RUN之後使用步進階梯圖來偵錯(如果機種沒提供SFC軟體偵錯功能)。

三、狀態流程的種類

1.單一順序流程

2.選擇分歧、合流流程

3.並進分歧、合流流程

4.跳躍流程

5.狀態流程實例