Copyright: ISaGRAF V3.4


 使用SFC編輯器

SFC語言是用來描述循序式的程序 (sequential process) 操作，它使用簡單的圖形來表示不同的程序步驟與轉移條件。ISaGRAF提供SFC圖形編輯器來撰寫SFC程式，SFC是IEC1131-3標準的核心語言，它的步驟 (step) 行為及轉移條件 (transition) 內的邏輯條件則使用其他的語言來描述。ISaGRAF的SFC圖形編輯器允許使用者編輯完整的SFC程式，包含了圖形及文字編輯能力，也就是可以編輯SFC流程，也可以針對流程內的步驟及轉移條件做各別的定義。

SFC語言主題

SFC流程圖形輸入

編輯存在的流程圖

輸入第二層程式

插入變數名稱

於步驟中輸入脈衝行為 (Pulse action) 區塊

於步驟中插入非儲存行為 (Non stored action) 區塊

新的P0及P1行為修飾語

布林行為

SFC行為

以ST語言來設計轉移條件

以Qucik LD語言來設計轉移條件

"工具" 功能表的命令

使用SFC倉庫

呼叫ISaGRAF其他工具

程式的參數

"檔案" 功能表中其它的命令

程式日記 (program diary) 的更新

從字典中挑選變數


SFC語言主題

SFC語言是用來表示順序式的程序，它將流程區分為多個定義好的連續步驟，各個步驟以轉移條件分開。參考ISaGRAF語言參考手冊，可得到更詳細的說明。

發散與收斂

跳躍至步驟

巨集步驟

SFC元件以有方向性的線來連結彼此，內定的方向是由上到下。基本的SFC語言圖形元件為：

初始步驟

步驟

轉移條件

跳躍至步驟

巨集步驟

巨集開始步驟

巨集結束步驟

SFC在設計程式時分為兩個不同的層次：第一層 (Level 1) 列出流程圖形、步驟及轉移條件的參考號碼以及步驟與轉移條件的註解，第二層 (Level 2) 表示步驟 (使用ST或IL語言) 的行為或轉移條件的條件，行為或條件可以呼叫其他語言 (FBD、LD、ST或IL) 寫的副程式。下面是第一層與第二層的例子：

步驟的第二層程式可以於文字編輯器中輸入，包含以ST或IL語言寫的行為方塊，而轉移條件的第二層程式除了可用ST與IL語言外，也可以使用Quick LD語言來撰寫。


發散與收斂

發散與收斂是用來表示步驟與轉移條件間的多連結，單發散或單收斂表示不同副流程間的不同走向。

雙發散表示平行程序。


跳躍至步驟

SFC編輯器僅允許由上到下的連結，跳躍 (jump) 至步驟可用來表示與上面步驟的連結。下面是兩個相等表示法：

跳躍至轉移條件是不合法的。


巨集步驟

巨集步驟 (marco step) 是另外單獨造出的步驟及轉移條件的單一表示方式，巨集步驟開始於開始步驟 (beginning step)，結束於結束步驟 (ending step)。

巨集的內容須另外造於相同的SFC程式內，巨集步驟的參考號碼得與巨集開始步驟的參考號碼相同，巨集內容內也可以包含另一巨集。


SFC流程圖形輸入

要畫出一個SFC流程圖，使用者只要使用它所提供的流程圖元件即可，各元件之間SFC會自動以水平線或垂直線連接它們。要插入一個流程元件，先選擇編輯器工具列上的圖示，在你要插入的位置按滑鼠左鍵即可。欲插入SFC元件至圖形中，使用者必須移動選擇區至適當的位置，然後選擇編輯工具列上的元件型態，則符號將被插入至現在的位置。下面的元件亦可使用鍵盤來輸入：

插入初始步驟

插入步驟

插入轉移條件

插入跳躍至步驟

 	插入OR 發散或收斂  / 加入分支

 	插入AND 發散或收斂 / 加入分支

插入巨集步驟

 	插入巨集步驟本體的開始或結束步驟

( " [image] " 符號表示使用SHIFT組合鍵)

編輯輔助格點顯示出可編輯的位置，使用者可選擇顯示或隱藏它。輔助格點在SFC流程元件初始佈局時相當有用。使用 "選項 / 外觀" 命令來顯示或隱藏輔助格點。

ISaGRAF SFC編輯器總是顯示目前編輯的位置。被選取的位置會被標示成灰色。你可以用小方格的右下角來自由地放大縮小編輯位置，並可改變編輯位置X/Y維度的比例關係。


   	製造發散或收斂元件

發散及收斂元件總是從左畫到右。要畫出一個發散及收斂元件，它的左轉角必須放置在流程圖的區域中，繪圖的型態 (單或雙) 由選擇工具列上的按鈕來設定。


   	加入發散分支

每一個輔助分支的開始與停止位置可以使用工具列上的按鈕，放置在發散及收斂線上，在插入新分支之前，發散或收斂的左轉角必須已存在，右轉角將會與主要的左轉角有相同的型態 (單或雙) ，在主要的左轉角尚未加入之前，右轉角無法被放置。


插入巨集步驟

這個按鈕用來於主流程內插入巨集步驟，巨集步驟的本體必須另外造於相同SFC程式的某處。


 	巨集步驟的本體

巨集步驟必須另外定義於相同SFC程式主流程內，它開始於開始步驟，結束於結束步驟，且於主流程內的巨集步驟與它的開始步驟，兩者的參考號碼必須一樣。


編輯存在的流程圖

你可使用滑鼠或鍵盤的箭頭 (方向) 鍵在SFC流程圖中選取一個長方形的區間。所有被選取的區間會標示成灰色。然後，"編輯" 功能表的命令將會作用在此區間上：

  	剪下 / 複製 / 刪除 / 貼上命令

移動元件

重編步驟與轉移條件的參考號碼

直接跳至步驟或轉移條件

尋找與取代字串


 	剪下 / 複製 / 刪除 / 貼上命令

當工具列上的 "箭頭" 按鈕被選擇時，可從 "編輯" 功能表利用如下的命令：

剪下	將選擇區間搬移到SFC剪貼簿

複製	將選擇區間複製到SFC剪貼簿

清除	清除 (刪除) 選擇區間

貼上	在目前的位置插入SFC剪貼簿的內容

"編輯 / 貼上" 命令複製SFC剪貼簿的內容到螢幕上，複製與貼上命令可適用在SFC流程圖與步驟 / 轉移條件的第二層程式上，他亦可以複製一個程式的流程圖到另一個SFC程式內。選擇貼上的命令後，將會把SFC剪貼簿的內容插入在你目前所選取的位置之前。


移動元件

當SFC流程圖中的元件被選取後，你就可以用滑鼠左鍵拖曳它們，將它們移到SFC流程圖中的另一個位置上。當你拖曳這個選取區域時，被選取元件的初始位置會被畫上斑馬線記號。

元件欲移往的目的區域必須是空白的，它不會做插入的動作。


重編步驟與轉移條件的參考號碼

在SFC流程圖裡，每一個步驟與轉移條件都有一個邏輯號碼，"編輯 / 重新編號" 命令允許使用者將所有的步驟及轉移條件自動編排成連續的號碼。當步驟的號碼改變後，所有跳躍至此步驟的編號會自動更新 (這項功能亦會應用到巨集步驟與它的開始步驟號碼上)。


直接跳至步驟或轉移條件

"編輯 / 跳至" 命令允許使用者進入已存在的步驟或轉移條件，螢幕會自動捲動至欲編輯的步驟或轉移條件位置處。


尋找與取代字串

"編輯 / 尋找取代" 命令能用來尋找或取代程式內 (所有的步驟及轉移條件) 的文字字串，尋找 / 取代對話框能用來輸入欲尋找的文字字串，並且會直接開啟含有此文字字串的第二層程式。


輸入第二層程式

欲輸入第二層的程式，使用者必須於步驟或轉移條件符號上雙按滑鼠左鍵，第二層程式將出現於SFC視窗的右邊。SFC流程圖與第二層程式之間的分隔線可以自由的移動。

你可以一次打開一個或兩個第二層程式區。下面的命令可以從鍵盤、滑鼠或 "編輯" 功能表下達：

鍵盤	滑鼠	"編輯" 功能表

開啟於上次內定視窗	Enter	雙按左鍵	編輯第二層

開啟於分離視窗	Ctrl+Enter	Ctrl + 雙按左鍵	編輯第二層於分離視窗

當同時使用兩個第二層編輯視窗，它們之間的分隔線可以自由移動。位於第二層標題欄右邊的按鈕可用來關閉此視窗。

第二層程式的內定語言為ST (Structured Text，結構化文字)，轉移條件的第二層程式也可以用Quick LD編輯器來輸入。使用第二層視窗標題列的 "ST/LD" 按鈕可以改變撰寫的語言，這個命令僅有當第二層視窗內容是空的時候才有效。

第二層視窗的頂端會出現單行編輯框，可用來輸入簡短的描述文字，這些文字為SFC符號的註解。這些文字可用於 "跳至_" 等命令，或列印時當作SFC步驟及轉換條件的文件。

當第二層視窗開啟時，"選項 / 更新" 命令可隨時更新變更的第二層程式至SFC主流程圖內。

插入變數名稱

於步驟中輸入脈衝行為 (Pulse action) 區塊

於步驟中插入非儲存行為 (Non stored action) 區塊

 	新的P0及P1行為修飾語

布林行為

SFC行為

以ST語言來設計轉移條件

以Qucik LD語言來設計轉移條件


插入變數名稱

當使用文字語言來設計程式時，按這個按鈕來選擇已於字典中宣告的變數，它會將所選的變數名稱插入到游標所在的位置。當使用Quick LD語言來設計程式時，按這個按鈕來將選擇的變數依附到接點或功能方塊的I/O參數上。


於步驟中輸入脈衝行為 (Pulse action) 區塊

當設計步驟的第二層程式時，使用這個按鈕於游標處插入脈衝行為區塊。下面是脈衝行為區塊的格式：

Action (P) :

ST statement;

...

End_Action;

當步驟處於執行中，脈衝行為內的指令僅於開始時執行一次。參考ISaGRAF語言參考手冊，可得到關於SFC程式更詳細的說明。


於步驟中插入非儲存行為 (Non stored action) 區塊

當設計步驟的第二層程式時，使用這個按鈕於游標處插入非儲存行為區塊。下面是非儲存行為區塊的格式：

Action (N) :

ST statement;

...

End_Action;

當步驟處於執行中，非儲存行為內的指令會在每個PLC週期皆執行一次。參考ISaGRAF語言參考手冊，可得到關於SFC程式更詳細的說明。


 	新的P0及P1行為修飾語

ISaGRAF支援新的P0及P1行為修飾語，於撰寫步驟的第二層程式時，按這些按鈕將P0或P1行為區塊文字插入到游標所在的位置。文字方塊格式如下：

Action (P0) :	Action (P1) :

ST statement;	ST statement;

...	...

End_Action;	End_Action;

P1行為指示當步驟變成執行時，方塊內的指令才執行一次 (跟脈衝行為一樣)，P0行為指示當步驟變成非執行時，方塊內的指令才執行一次。參考ISaGRAF語言參考部分，以得到SFC程式設定的詳細說明。


布林行為

另有一些語法可應用在布林變數上，這些行為會根據步驟的執行狀態套用在內部或輸出屬性的布林變數上。下面是基本的布林行為的語法：

<boolean_variable> (N);	指定變數值為步驟執行狀態

<boolean_variable>;	同上述指令相同效果

/ <boolean_variable>;	指定變數值為步驟執行狀態的反相

當步驟變成執行中時，另一些語法可用來設定或重置布林變數。下面是設定與重置的布林行為語法：

<boolean_variable> (S);	當步驟執行狀態變成真 (TRUE) 時，設定變數為真 (TURE)

<boolean_variable> (R);	當步驟執行狀態變成真 (TRUE) 時，重置變數為假 (FALSE)


SFC行為

另有一些語法可用來控制SFC子程式的執行。一個SFC行為是指根據步驟的執行狀態來開始或停止SFC子程式流程。可以有N (非儲存)，S (設定)，或R (重置) 等行為。下面是基本的SFC行為的語法：

<child_program> (N);	當步驟狀態變成執行時，開始子程式流程；當步驟狀態變成非執行時，停止子程式流程

<child_program>;	與上述的行為一樣

<child_program> (S);	當步驟狀態變成執行時，開始子程式流程

<child_program> (R);	當步驟狀態變作執行時，停止子程式流程

SFC行為中的子程式必須是已經由ISaGRAF程式管理員所產生的SFC子程式。


以ST語言來設計轉移條件

轉移條件的第二層是一個布林表示式，欲以ST語言來撰寫，只要根據ST語法來輸入布林條件式。你可以在表示式的結尾加上分號，也可以不加。


以Qucik LD語言來設計轉移條件

你也可以用Quick LD編輯器來輸入轉移條件第二層的條件。這樣的方法僅可以有一個導軌 (rung) 及一個輸出線圈 (coil) 。輸出線圈不需要連結轉移條件名稱。下面是以Quick LD撰寫的轉移條件條件：

當以Quick LD來撰寫時，使用鍵盤上的方向鍵來移動游標至所要的位置上，然後使用下面的快捷鍵插入符號：

F2：	插入接點於所選的符號之後 / 導軌初始化

F3：	插入接點於所選的符號之前

F4：	插入一個與所選符號平行的接點

F6：	插入功能方塊於所選的符號之後

F7：	插入功能方塊於所選的符號之前

F8：	插入一個與所選符號平行的功能方塊

你亦能點選第二層視窗底端的功能鍵列，來代替鍵盤上的功能鍵。

當游標位於接點或功能方塊的輸出入參數上，按ENTER鍵來選擇所要連結的變數或輸入常數值。當游標位於功能方塊上，按ENTER鍵來選擇功能方塊的型態，你亦可以在符號上雙按滑鼠左鍵，也可達到相同的效果。

當游標位於接點上時，使用空白鍵來改變接點的屬性 (直接、反相或脈衝偵測)。參考本手冊的 "使用Quick LD編輯器" 章節，可得到關於Quick LD能力的詳細說明。


呼叫其他ISaGRAF工具

驗證 (編譯) 程式

 	模擬或除錯

編輯變數字典


驗證 (編譯) 程式

"檔案 / 驗證" 命令會執行一個叫 "ISaGRAF碼產生器" (Code generator) 的程式去驗證程式語法。如果是SFC語言，則第一層與第二層都會被驗證。當語法驗證完畢後，"碼產生器" 視窗必須關閉以便繼續程式上的工作。如果沒有語法上的錯誤，而且應用中又只有一個程式，則應用碼便會被產生出來。"選項 / 編譯選項" 命令是被用來設置 (set) 參數的編譯及最佳化時使用。參考 "如何使用碼產生器" 一章，您將會得到進一步有關編譯及碼產生器的訊息。


 	模擬或除錯

"檔案 / 模擬" 以及 "檔案 / 除錯" 命令可以在模擬模式或真實連接模式中執行ISaGRAF圖形除錯器，且於除錯模式時，再將SFC程式開啟。於除錯模式時，你無法修改程式內容。


編輯變數字典

"檔案 / 字典" 命令是用來編輯目前應用程式所用到的變數，它也可用來編輯使用者自訂的定義字。"區域" 宣告或定義字只適用於目前編輯的程式中。


程式的參數

當編輯的程式為函數、功能方塊或副程式時，則 "檔案 / 參數" 命令被用來定義呼叫及回傳的參數。當程式為SFC或為開始、結束區中的程式時，這個命令無效。

副程式、函數或功能方塊最高可以有32個參數 (包含輸入及輸出)。函數或副程式通常只有一個回傳參數，而且這個參數必須與函數名稱相同，以便符合ST語言的撰寫法則。下列對話框是被用來描述副程式的參數：

在視窗左上方的位置列出所有的參數且以呼叫模式的順序來排列。前面是 "呼叫參數"，再來為 "回傳參數"。在視窗的下半部顯示被選取參數的詳細描述，參數可以是任何一個ISaGRAF的資料形態。"回傳參數" 必須位於 "呼叫參數" 之後。參數名稱必須符合下列規則：

•	名稱不能超過16個字元

•	第一個字元必須是英文字母

•	第一個字元以後的字元可以是字母、數字或底線字元

•	名稱不分大小寫

"插入" 命令是用來在選取的參數之前插入新參數。"刪除" 命令是用來刪除選取的參數。"排序" 命令是用來自動重排列 (排序) 參數，所以 "回傳參數" 皆會放置於列尾。


"檔案" 功能表中其它的命令

下列命令可用於所有程式編輯器內的 "檔案" 功能表中：

打開其它的程式

程式列印


打開其它的程式

"檔案 / 開啟" 命令允許使用者關閉目前編輯的程式，且開啟目前案件中相同語言的程式。這個功能不能用來編輯以另一種語言撰寫的程式。被選取的程式會替換目前在編輯視窗中編輯的程式。


程式列印

"檔案 / 列印" 命令用來輸出程式至印表機。這個命令會自動執行ISaGRAF文件產生器來列印正在編輯的程式和相關的區域變數。

於圖形語言程式中 (SFC、FBD及Quick LD)，您可用 "編輯 / 複製圖形" 命令去拷貝在剪貼簿中以metafile格式所繪的圖形，以便於去剪貼於其他的應用中，例如文書編輯器 "Word"。如果是SFC程式，僅有第一階的圖形 (流程圖，數字編號以及第一層註解) 會拷貝到metafile檔中。


更新程式日記 (program diary)

可以用 "檔案 / 日記" 命令將附帶於編輯程式的日記檔以手動方式輸入。每一次程式編譯時，這個日記檔會自動加上語法檢查輸出訊息。編譯輸出完成後會有一個時間 / 日期的蓋印。

如果程式編輯器 "選項" 功能表下的 "更新日記" 模式中被選取，則每次程式被儲存至硬碟時會出現下列對話框。

假如 "確定" 按鍵被按下，則所輸入的文字註解便會加上時間 / 日期而儲存至日記檔的末端。這個特色對於維護程式非常有用，因為它提供了程式生命週期的協助。


從字典中挑選變數

 當編輯文字式程式 (ST或IL) 時，"編輯 / 插入變數" 允許選取一個已宣告的變數名稱，插入到游標所在的位置。當編輯LD或FBD程式時，線圈、I/O參數或FBD變數方塊必須依附上變數。在兩種情況下，將開啟下列的對話框，以便選取已宣告的變數：

"範圍" 列示盒是用來選擇全域或區域變數。列示盒的右邊可以選擇資料型態。在型態選擇欄的旁邊有一些小的圖示 (icon) 為選擇資料型態的快捷按鈕：

布林 (Boolean) 型態

整數 / 實數 (Integer / Real) 型態

計時器 (Timer) 型態

訊息 (Message) 型態

欲選擇變數，只要在名單上點選即可。它的名稱以及註解便會出現在名單正上方。然後按 "確定" 按鈕確認您的選擇，如此便完成了程序。當然，您亦可以直接將變數名稱輸入欄位中。


"工具" 功能表的命令

工具功能表的命令如下所示，使用者可以使用它們來顯示訊息在SFC視窗底部的小文字列中：

顯示編譯輸出	在輸出視窗中顯示最後編譯產生的錯誤訊息

尋找圖形內容	在圖形中尋找指定的圖形內容，並且將它們列在輸出視窗中

隱藏輸出列	關閉輸出列表視窗

當錯誤訊息或尋找的圖形內容被顯示在輸出視窗中時，使用者可以直接用滑鼠左鍵在任何一行上按兩下，然後在訊息的相關位置做設定。


使用SFC倉庫

ISaGRAF SFC編輯器管理一個SFC倉庫：收集SFC構造，且可以插入於任何SFC圖形中。SFC倉庫元件可以選擇將步驟及轉移條件的第二層程式放入。使用下列的 "工具" 功能表命令：

複製至SFC倉庫	複製所選的元件至SFC倉庫中

從SFC倉庫貼上	貼上SFC倉庫元件於目前選擇區上

當複製至SFC倉庫時 (譬如：產生新的SFC倉庫元件)，你可以選擇要求一併放入所選SFC符號之第二層程式。