Copyright: ISaGRAF V3.4


 程式管理

程式管理視窗顯示這個應用的程式 (亦稱為模組或程式單元)，且將可用的命令群聚成功能表，使用者可用這些命令來制定案件架構、執行編輯器、編譯及除錯。在發展應用時，程式管理視窗是ISaGRAF工作平台的核心。要開啟程式管理視窗可於案件管理員下執行 "開啟" 命令。

案件元件

編輯程式

執行應用程式碼產生工具

其他的ISaGRAF工具

增加工具功能表的命令

模擬及除錯


案件元件

案件元件稱為程式，程式是控制流程執行的一部份。全域變數 (譬如I/O變數) 能夠給這個應用中的任何程式使用，區域變數僅能給一個程式使用。各程式以樹狀體系（hierarchy tree）表示，且分為幾個不同的邏輯區域（logical section）。這個視窗顯示所有的程式及它們的關係。"頂層" 程式列於樹狀體系的最左邊。

頂層程式

函數與功能方塊

副程式

SFC子程式和FC副程式

程式與副程式間的連結：

程式設計語言


頂層程式

頂層程式列於樹狀體系的最左邊，在前三個區域的頂層程式永遠都是執行的，於執行週期 (run time cycle，或稱為掃描週期) 中，它們以下面的順序執行：

•	(讀取輸入點)

•	執行開始區內的頂層程式

•	執行順序區內的頂層程式

•	執行結束區內的頂層程式

•	(更新輸出點)

在 "開始" 區或 "結束" 區的程式是週期反覆執行的，與時間無關。在 "順序" 區的程式則是順序執行的，其中計時器變數可用來區別不同的基本操作。"開始" 區中的主程式在每一執行循環的開始都會被執行一次，"結束" 區中的主程式在每一執行循環的結尾都會被執行一次，"順序" 區的主程式則依據SFC或FC的規則執行，且必須用SFC或FC語言來撰寫，而週期區的程式則不能用SFC或FC語言撰寫。所有的程式皆可以擁有一個或多個副程式。


函數與功能方塊

"函數" 區的程式能被這個案件中的任何區的任何程式所呼叫。所謂函數是指將一些輸入值經過運算後產生一個輸出值。函數運算僅使用到暫時性的變數，當從一個呼叫到另一個呼叫時，這些變數即會消失，這意味著函數不應呼叫功能方塊。"函數" 區的程式不能以SFC或FC語言來撰寫。

不像函數，"功能方塊" 使用到隱藏的靜態資料來處理輸入值，這些資料在每一次不同的呼叫時，系統會自動複製一份。"功能方塊" 區的程式能夠被同一案件中的任何區的任何程式所呼叫。功能方塊區的程式不能以SFC或FC語言來撰寫。


副程式

副程式是函數的一種，但是只提供給一個父程式 (SFC、FC或其他語言) 來呼叫，其他的程式無法呼叫它，每一個區的程式都可以有一到多個副程式，除了SFC和FC語言外，都可以用來撰寫副程式。


SFC子和FC副程式
SFC子程式和FC副程式

SFC子程式是一種與父程式並行執行的程式，他的父程式可以執行它或刪除它。父程式與子程式都必須以SFC語言來撰寫。

當父程式執行SFC子程式時，他放一個SFC執行權杖 (token) 進入子程式的每個初始步驟。當刪除SFC子程式時，將清除子程式所有存在的執行權杖。

順序區中的任何FC程式皆可控制其他的FC副程式。在FC副程式執行期間，FC父程式會暫停 (等待)。FC父程式和它的任何一個FC副程式同時執行是不可能的。


程式與副程式間的連結：

副程式與子程式在其樹狀體系中以一條連結線來表示和父程式的連結關係，SFC程式與SFC子程式間的連結線則在尾端多一個箭頭，這樣的連結表示是平行執行的。


程式設計語言

每一個程式只能以一種語言撰寫，每當開新程式時得選一種語言來撰寫，並且往後都不能更改成其他種的語言，但是，FBD和LD的元件可以混合運用在同一個程式中。ISaGRAF提供的圖形式語言有：SFC (順序式功能圖，Sequential Function Chart)，FC (流程圖，Flow Chart)，FBD (功能方塊圖，Functional Block Diagram) 與LD (階梯圖，Ladder Diagram)，文字式語言有：ST (結構化文字，Structured Text) 與IL (指令集，Instruction List)。SFC和FC語言是被保留給順序處理區中的主程式與子程式的。於程式管理視窗中，每一個程式名稱旁邊都有個顯示其語法的圖示。各種語言的表示符號如下：

 SFC	順序式功能圖

 FC	流程圖

 FBD	功能方塊圖

 LD	階梯圖

 ST	結構化文字

 IL	指令集


編輯程式

"檔案" 功能表集合了創造、更新與變更程式的所有命令，他亦可以開啟應用程式所用到的適當編輯器。

產生新的程式

輸入每個程式的註解

編輯程式內容

編輯日記檔

變數字典

函數、副程式與功能方塊的參數

於樹狀體系中移動程式

複製程式

刪除程式

"工具" 功能表還包含了其它命令：

輸入程式庫中的函數或功能方塊

輸出函數或功能方塊到程式庫中


產生新的程式

"檔案" 功能表下的 "開新程式" 命令允許使用者在程式的任何區域中創造頂層程式、子程式或副程式。視窗內的名稱方框是用來輸入新程式的名字，必須遵守下列的命名規則﹕

•	程式名最長不可超過8個字

•	程式名的第一個字必須為英文字母

•	第一個字後面的字可以是英文字母、數字或底線 '_'

•	程式的名稱不分大小寫

接下來，選擇一種語言來撰寫新程式﹕

SFC	順序式功能圖

FC	流程圖

FBD	功能方塊圖 (可以包含LD)

LD	階梯圖 (指使用Quick LD編輯器)

ST	結構化文字

IL	指令集

最後，幫程式選擇一種執行模式﹕

開始	"開始" 區的頂層程式

順序	"順序" 區的頂層程式

結束	"結束" 區的頂層程式

函數	"函數" 區程式

功能方塊	"功能方塊" 區程式

...的子程式	一個已存在程式的SFC (或FC) 子程式或副程式

選擇上述前五項的其中一項後，程式將被放在開始、結束、順序、函數或功能方塊區的最上層，如果選取了最後一個選項則新的程式將會是一個SFC子程式，一個FC副程式或副程式。記住，一個順序區最上層的程式必須以SFC或FC語言撰寫，且SFC和FC語言是不能在週期區中使用的或當此區的副程式。


輸入每個程式的註解

ISaGRAF允許使用者將案件的每個程式附上一段文字說明，這段註解文字以較小的字形顯示於程式名稱旁邊。使用 "檔案 / 程式註解文字" 命令來輸入或更改所選擇程式的註解。


編輯程式內容

這個命令允許使用者修改程式內容，不同的語言會有不同的編輯器。每個程式是在一個單獨的視窗中編輯，因此可以同時打開多個程式編輯視窗。除了使用功能表來打開程式編輯器，也可以使用方向鍵，移動反白區至所欲編輯的程式，按下ENTER鍵時便可編輯此程式，使用者也可將滑鼠游標指到此程式名稱上雙按滑鼠左鍵，來打開編輯視窗。


編輯日記檔

日記檔是伴隨著每一個程式產生的，它是個文字檔，內容記錄了對程式所做過的所有修改。日誌檔是可編輯的，可以在任何時間自由的修改或列印。當離開一個做過修改的程式編輯視窗時，會有一個可輸入摘記的視窗自動開啟，這裡所輸入的摘記會加上正確的日期及時間被插入到日誌檔中。


變數字典

"檔案 / 字典" 命令會開啟字典編輯器，你可以在裡面宣告案件所用到的變數。變數可以是全域的變數 (可以被案件裡的所有程式所認知) 或被選取程式的區域變數。字典編輯器亦可以用來宣告定義字，定義字等於是一種化名，可以用來取代一個名稱，或取代程式原始碼中的一個表示式。


函數、副程式與功能方塊的參數

"檔案 / 參數" 命令允許使用者對所選取的副程式、函數或功能方塊做呼叫及回傳參數的定義，這個命令對 "開始" 或 "結束" 區的主程式或SFC程式是沒有作用的。

副程式、函數或功能方塊可以有多達32個參數 (輸入加上輸出)，函數及副程式會有一個輸出參數 (且僅能有一個)，它的名稱必須與函數或副程式名稱一樣，這是為了ST語言撰寫上的方便。

視窗的左上部分顯示出參數，順序為﹕前面是呼叫參數﹐後面是回傳參數。視窗的下半部分顯示所選參數的詳細敘述，ISaGRAF中的任何資料型態都可以使用在參數上。回傳參數必須位於輸入參數之後。參數名稱必須遵守如下的命名規則﹕

•	名稱長度不能超過16個字

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

•	其後的字元可以是英文字母、數字或底線符號

•	參數名稱不分大小寫

"插入" 命令是用來在所選取的參數之前插入一個新的參數，"刪除" 命令是用來刪除所選取的參數，"排列" 命令會自動地將參數做排序，因此返回參數會被放在最後面。


於樹狀體系中移動程式

"檔案" 功能表下的 "更名 / 搬移" 命令用來改變程式的名稱，或是將程式搬移到結構樹中的另一個區域，但是已經存在的程式其語言是無法改變的。當執行這項命令時，會出現一個與開新程式一樣的視窗，而各個欄位的內定值為被選取程式之前的屬性，程式的名稱是可以更改的，而選取另一個區域或父程式就可以將程式搬移到結構樹中的不同位置。

"檔案" 功能表下的 "排列程式" 指令是用來調動同一區下或同一個父程式下程式的順序。如果所選取的程式是位於最上層，則此命令針對所選取區域的頂層程式做排序，如果所選擇的程式是位於較低的層，則此指令是針對所選取並擁有同一個父程式的副程式或子程式做排序。當 "排列程式" 的對話視窗開啟後，選取你想要移動的程式，然後按 "向上" 或 "向下" 鍵來移動程式到你想要的位置。


複製程式

想要複製一個程式，首先選取欲複製的程式，然後執行 "檔案 / 複製" 命令。執行這項命令時，會出現一個與開新程式一樣的視窗，而其中各個欄位的內定值就是被選取程式之前的屬性。輸入目的地程式的名稱及其位於程式結構樹中的位置，假如欲複製的目的地已存在，將會被覆蓋掉。程式定義的所有區域變數及定義字會隨之複製過去，目的程式與被複製的程式必須用相同的語言撰寫。按下 "確定" 鍵來複製程式。

"檔案" 功能表中的 "複製到其他案件" 命令將選取的程式複製到另一個案件中，且程式名稱不變。所選取程式底下的SFC子程式與副程式會一併複製，所選取欲複製的程式及其子、副程式的名稱皆不可出現在目標案件中，程式無法經由此指令而將之覆蓋掉。所有經程式宣告的區域變數及定義字將會隨著程式複製過去。


刪除程式

想要刪除一個程式，首先選取欲刪除的程式，然後執行 "檔案 / 刪除" 命令。一個程式如果擁有副程式或子程式時，此程式是無法被刪除的，必須先刪除程式下層的副程式或子程式。所有經程式宣告的變數及定義字將會隨著程式一起被刪除。


輸入程式庫中的函數或功能方塊

"工具 / 從程式庫輸入" 命令用來複製程式庫中以IEC語法撰寫的函數或功能方塊到開啟案件的 "函數" 或 "功能方塊" 區中，所有經程式宣告的區域變數及定義字將會隨著輸入的函數複製過去。當一個函數確定從程式庫中被輸入到案件後，藉由執行 "檔案" 功能表中的 "更名 / 搬移" 命令，此函數可被放置在樹狀程式中的任何區域中的任何位置。為了避免名稱衝突，輸入至案件中的函數或功能方塊必須更改名稱，但不要忘了，回傳參數名稱也要一起更改。


輸出函數或功能方塊到程式庫中

"工具 / 輸出到程式庫" 命令是將存在於 "函數" 或 "功能方塊" 區的程式輸送到程式庫中，所有經程式宣告的區域變數及定義字將會一起複製過去。輸出的函數應在程式庫管理員中被重新編譯 (驗證)，以保證此函數能在程式庫環境中使用。程式庫中的函數是不能使用全域變數的。


執行應用程式碼產生工具

"製作" 功能表命令用來執行應用碼產生器，以及輸入產生應用碼時的選項與附加資料，參考 "使用應用程式碼產生器" 章節，以得到更多的說明。

製作應用程式碼

驗證選取的程式

模擬變更

應用程式執行期選項

編譯選項

定義資源


製作應用程式碼

"製作" 命令用來產生應用程式碼，執行這項命令之前，目的碼的選項必須設定正確。在產生目的碼之前，任何程式都會經過語法的驗證，ISaGRAF只會針對未編譯過的程式加以編譯。


驗證選取的程式

"驗證" 命令允許使用者驗證所選取的程式，對於一個已驗證過且沒有語法錯誤的程式，在產生應用程式碼時不會再重新編譯一次，除非它的程式內容或相關的定義字與變數改變了，才會再重新編譯。


模擬變更

"更新" 命令模擬各程式已被更改過了，因此下一次編譯時所有的程式皆會被重新編譯。


應用程式執行期選項

這個命令會開啟一個對話盒，從這個對話盒裡可以輸入應用程式執行時期的參數，它包括程式的執行週期、執行期錯誤管理、開始模式及可回復變數的設定。參考 "使用應程式碼產生器" 章節可得到更多的說明。


編譯選項

這個命令用來設定應用程式碼產生器的選項，可產生最佳的目的碼。參考 "使用應程式碼產生器" 章節可得到更多的說明。


變更歷史

這個命令會開啟顯示變更歷史的對話盒。參考 "案件管理" 章節可得到更多的說明。


定義資源

"資源" 是使用者定義的資料 (例如一個檔案)，用來和目的碼結合﹐因此它是可以跟目的碼一起下載的。參考 "使用應用程式碼產生器" 章節可得到更多有關資源定義檔案格式的說明。


其他的ISaGRAF工具

"案件" 功能表集合了被選取案件可執行的ISaGRAF工具，參考對應的章節可得到更多的說明。

I/O變數連結

執行交互查詢編輯器

輸入案件描述

列印完整文件

變更歷史


I/O變數連結

"I/O連結" 命令開啟ISaGRAF I/O變數連結編輯器，這個工具建立所宣告的I/O變數與硬體 I/O板的關係。


執行交互查詢編輯器

"交互查詢" 命令允許使用者對案件的交互查詢做統計、檢視或將其列印出來。交互查詢列出在整個案件中於程式原始碼裡面所有出現過的變數，這項功能對蒐尋變數或資源來說是非常有用的，它也能列出在原始碼中所有出現過的全域變數。


輸入案件描述

"案件描述" 命令用來編輯案件的文字描述，由這個文件可以識別案件的內容，這個案件說明檔亦能用來加註案件生命週期的任何註記。案件描述會顯示在案件管理視窗內。


列印完整文件

"列印案件文件" 指令准許使用者對一所選物件去建立和列印一份完整的文件。任何關於此專案的資訊 (程式、變數、參數...) 都可放入這專案文件內。為了能作到這件事，使用者要建立起這份文件的內容表。


增加工具功能表的命令

ISaGRAF提供在 "工具" 功能表內加入其他命令的方法，在 "\ISAWIN\COM\ISA.MNU" 文字檔中，使用者可以加入自己命令，你總共可以加入十個命令，註解可以加在 ";" 之後，每一個命令以兩行文字列表示，如下面的語法所示：

M=menu_string

C=command_line

"menu_string" 是顯示在 "工具" 功能表的文字字串，"command_line" 是任何MS-DOS或Windows可執行的命令，你可以在字串的後面加上引數。在 "command_line" 中可以使用 "%A" 字串來代替開啟中的案件名，使用 "%P" 字串代替所選取的程式名稱。下面的例子執行 "記事本" 來編輯所選的程式 (使用ST或IL程式)：

M=Edit with Notepad

C=Notepad.exe \isawin\apl\%A\%P.lsf


模擬及除錯

"除錯" 功能表下的命令用來執行ISaGRAF圖形除錯器，有模擬與真實連線兩種模式。

模擬

真實環境的除錯

準備ISaGRAF工作空間

連結設定

序列埠連結設定

乙太網路連結設定


模擬

"模擬" 命令開啟模擬模式下的除錯器，在此模式下，會出現一個叫模擬器的視窗。當沒有目標硬體時，可以使用這項命令來測試你的應用程式。啟動模擬器時會關閉程式管理視窗，在除錯器與模擬視窗兩者皆被開啟之後，程式管理視窗將被重新開啟。如果應用程式碼還沒產生，您將無法啟動模擬器，若子視窗 (編輯器﹑應用碼產生器﹑I/O連結...) 尚未關閉，也無法啟動模擬器，必須將他們都關閉才可以使用這項命令。這項命令也可以從ISaGRAF編輯器的功能表下來執行。


真實環境的除錯

"除錯" 命令開啟除錯器主視窗，並關閉程式管理視窗，然後，當除錯器與目標硬體應用程式之間的通訊建立後，程式管理視窗將立刻被重新開啟。如果應用碼還沒產生，您將無法啟動除錯器，若子視窗 (編輯器﹑應用碼產生器﹑I/O連結...) 尚未關閉，也無法啟動模擬器，必須將他們都關閉才可以使用這項命令。這項命令也可以從ISaGRAF編輯器的功能表來執行。


連結設定

"連結設定" 命令能讓使用者設定PC主機與目標硬體ISaGRAF系統 (如PLC) 間通訊連結的參數。

"目標硬體Slave 編號" 用來識別ISaGRAF的目標硬體系統或程式，範圍從1到225之間，可查閱供應商提供的目標硬體技術手冊，以得到它的編號設定。

"通訊埠" 用來識別ISaGRAF工作平台與目標硬體之間的通訊媒介，它可以是 "序列埠" 或 "Ethernet"，Ethernet (乙太網路) 使用 "Winsock" 1.1版的TCP/IP通訊。

"失敗時間" 是目標硬體系統在接收到除錯器命令後可以接受的最大回應時間，且以毫秒為單位。"重試次數" 欄位是指當偵測到通訊錯誤時重複執行同一項通訊命令的次數。


序列埠連結設定

當選擇序列埠 (COM1..4) 後，點取 "設定" 按鈕來設定其他的序列通訊參數。

鮑率 (baud rate)、同位元 (parity) 與格式 (format) 可以在這裡設定，當 "流量控制" (flow control) 中選取了 "hardware" 選項後，則ISaGRAF工作平台將控制CTS與DSR線作硬體的通訊交握。


乙太網路連結設定

當選擇 "Ethernet" 當作通訊埠，點取 "設定" 按鈕來進入 "網路位址" (internet address) 及 "埠號碼" (port number) 的設定畫面。

這些欄位使用Socket介面的標準模式。ISaGRAF工作平台使用 "WINSOCK.DLL" 1.1版的程式庫來作TCP/IP通訊，此檔必須確定已安裝在硬碟中。若沒有特別的指定，則 "1100" 將是內定的埠號碼。


準備ISaGRAF工作空間

"除錯 / 工作空間" 命令讓你能夠定義工作空間的初始文件集，這些文件可以是程式、焦點圖形、以及變數集，先前ISaGRAF版本的圖形及時間圖集亦列於案件文件集中。當模擬或線上監視時，這些定義的文件將自動開啟。

上述之對話框左邊顯示已存在的案件文件，右邊顯示初始工作空間選取的文件。使用 ">>" 及 "<<" 按鈕來搬移文件至另一邊。每一個案件都可以擁有自己的初始工作空間。