Copyright: ISaGRAF V3.4


 使用圖形除錯器

ISaGRAF包含一個完整的圖形及符號除錯器。於程式管理員視窗中的 "除錯" 命令執行除錯器來控制應用程式下載到目標硬體PLC中，這樣的模式下，除錯器與目標硬體系統間透過硬體連結來做通訊。程式管理員視窗中的 "模擬" 命令立即執行除錯器及一個完整的目標硬體模擬器，它讓使用者可以測試他的應用程式，而不需等待目標硬體的I/O系統完成。除錯視窗包含控制整個應用的命令。

除錯器視窗

控制應用程式

選項

"寫入" 命令

線上變更

DDE動態交換

當除錯器開始時，且目標硬體PLC與工作平台的應用程式相同，會立即開啟程式管理視窗 (於除錯模式下)，這個視窗中的命令可以用來開啟其他的ISaGRAF視窗 (圖形與文字編輯器、字典、變數集、I/O連結_)。所有於除錯期間開啟的視窗都是運作於 "除錯模式" 下，也就是無法做編修。顯示的程式元件 (步驟，轉移條件，變數_) 將顯示他們現在執行中的狀態或值，於元件上面雙按滑鼠左鍵將可改變目標硬體應用程式的狀態或值。

當處於模擬模式下的除錯器，與ISaGRAF目標硬體系統之間的通訊將停止，除錯器僅與模擬器視窗通訊。因為這個模式下目標硬體系統不存在，所以除錯器功能表的 "下載"、"停止" 或 "啟動" 等命令將不再可用。


除錯器視窗

除錯器視窗僅包含關於整個應用程式狀態的訊息，但可連結到其他的ISaGRAF視窗，創造出一個完整的交互作用除錯系統。偵測到的執行期錯誤將顯示於除錯視窗的底部區域。"選項" 功能表的命令可以用來隱藏、顯示或清除錯誤列表。

控制面板 (位於除錯器功能表下方) 顯示目標硬體系統的全部狀態及執行期的資訊。可能的目標硬體狀態如下：

登入：	除錯器與目標硬體系統建立通訊。

斷線：	除錯器與目標硬體系統無法連線。確定連結線及通訊參數正確。

沒有應用程式：	連線成功，但是目標硬體系統目前沒有ISaGRAF應用程式存在。下載一個應用程式。

應用程式動作中：	連線成功且目標硬體系統中存在一個動作中的應用程式，除錯器現在正建立與這個應用的通訊 (假如與工作平台是同一個的話)。

執行中：	目標硬體應用處於 "即時" 模式中。

停止：	目標硬體應用處於 "單步" 模式中。

中斷點：	目標硬體應用處於 "單步" 模式中 (因為碰到中斷點)。

致命的錯誤：	目標硬體應用失敗 (因為嚴重錯誤發生)。

執行期時間的資訊如下：

允許：	程式設定的時間

現在：	完成上一次執行週期的確實時間

最大：	從應用程式開始所發生的最大週期時間

溢位：	現在時間大於允許時間發生的次數

所有的時間以毫秒為單位，當除錯器處於模擬模式下，時間值將不會顯示。


控制應用程式

"檔案" 及 "控制" 功能表包含安裝命令與ISaGRAF目標硬體系統上目前所編輯的ISaGRAF應用程式的控制。

注意：	於模擬下，其中某些命令無法使用，因為應用程式由模擬器處理，會自動由ISaGRAF工作平台所安裝。

停止目標硬體應用程式

啟動目標硬體應用程式

下載應用程式

顯示版本號碼

線上變更

即時模式

單步模式

執行一個週期

週期時間

移除所有中斷點

解除I/O變數


停止目標硬體應用程式

"檔案 / 停止應用程式" 命令停止目前執行於ISaGRAF目標硬體系統中的應用程式。


啟動目標硬體應用程式

"檔案 / 開始應用程式" 命令執行存在於目標硬體系統中的應用程式。當應用程式下載後，它會自動執行，所以並不需要使用 "開始" 命令，"開始" 命令一般則用於 "停止" 命令之後。

注意：	在下載新應用程式之前，目標硬體中的應用程式必須停止 (不動作)。


下載應用程式

"檔案 / 下載應用程式" 命令用於下載應用程式碼到目標硬體系統內。使用者需根據目標硬體系統處理器及應用程式選項來選擇所要下載的碼型態。


顯示版本號碼

"檔案 / 版本號碼" 命令用於顯示完整的工作平台及目標硬體應用程式的識別號碼。工作平台方面的應用程式是目前ISaGRAF工作平台所開啟的應用，而目標硬體方面的應用程式則是執行於目標硬體 PLC中的應用程式。後面是所顯示的項目：

版本：	應用程式碼的版本，這個號碼是由碼產生器所計算出來的。

日期：	顯示碼建立時的日期及時間。

CRC：	符號表內容的檢查加總，由碼產生器所計算出來的，這個值視字典變數內容而定。

注意：	"版本號碼" 命令於模擬模式下也是可使用的，但於真實除錯模式下，若目標硬體PLC並未連結上，則這個命令無法使用。


線上變更

"檔案 / 更新應用程式" 命令讓使用者完成應用程式的 "線上變更"，這個命令於這章稍後會做詳細的說明。當除錯器處於模擬模式中，這個命令無法使用。


即時模式

"控制 / 即時模式" 命令於沒有應用程式執行時無法使用。這個命令設定目標硬體應用程式於 "即時" 模式下：正常模式，也就是由程式所用到的週期時間來觸發執行週期。


單步模式

"控制 / 單步模式" 命令於沒有應用程式執行時無法使用。這個命令設定目標硬體應用程式於 "單步" 模式下：於此模式下，會根據使用者於除錯功能表下 "執行下一個週期" 命令來執行一個週期。


執行一個週期

當目標硬體於單步模式下，"控制 / 執行下一個週期" 命令執行一個週期。


週期時間

"控制 / 改變週期時間" 命令讓使用者可以變更程式的週期時間，這個時間就是於除錯器控制列視窗中的 "允許" 欄位值。變更週期時間之前應該先設定 "單步" 模式。週期時間以毫秒單位的整數值來輸入。


移除所有中斷點

"控制 / 清除所有中斷點" 命令移除整個應用程式目前所有已設定的中斷點。當除錯器視窗關閉時，已存在的中斷點並不會自動移除。


解除I/O變數

"控制 / 解開所有IO變數" 命令解除應用程式目前鎖住的所有I/O變數。當I/O變數被鎖住後，輸入或輸出狀態改變並不會連結到對應的I/O設備上，依附到這個I/O上的變數仍然能由應用程式或除錯器所寫入。當除錯器視窗關閉時，目前被鎖住的I/O變數並不會自動解開。


選項

"選項" 功能表包含控制顯示於除錯器視窗訊息的選項。

通訊參數

顯示選項


通訊參數

當除錯器執行時，可以調整通訊時間參數，但僅有通訊失敗時間能夠在這裡設定，其他的通訊參數 (鮑率，同位元_) 必須從程式管理視窗的 "除錯" 功能表設定。

"通訊失敗時間" 是目標硬體系統開始回答一個工作平台要求的預留時間，"週期更新時間" 是由除錯器為了更新開啟視窗中的資料所送出 "讀取" 要求所需求的時間。

所有顯示及輸入的時間值皆為毫秒單位的整數值。當處於模擬模式下的除錯器，不能設定通訊時間參數。


顯示選項

"顯示週期時間" 選項讓使用者顯示或隱藏除錯器控制列中的週期時間值。當這個選項被設定，所有的週期時間元件 (允許，現在，最大，溢位) 將顯示及更新，取消這個選項將降低除錯器通訊負擔。

當 "顯示錯誤" 選項被設定，偵測到的執行期錯誤將列於除錯器視窗的底部區域。當取消這個選項，錯誤列表則會關閉，且會降低除錯器顯示及通訊的負荷。"選項 / 清除錯誤訊息" 命令清除目前顯示於除錯器視窗中的執行期錯誤列表。

"選項 / 視窗最小化" 命令縮小除錯器視窗，以一個總是位頂端的小面板來顯示，這個面板僅包含應用程式狀態及最常用到的圖形按鍵命令。


�寫入 命令
"寫入" 命令

ISaGRAF符號除錯器提供許多命令去改變應用程式元件的值或狀態。當除錯器視窗開啟時，於元件名稱上或編輯視窗中的圖形上雙按滑鼠左鍵來改變元件的值。

變數

SFC物件


變數

於下列視窗中的變數名稱上雙按滑鼠左鍵改變它的狀態：

•	字典

•	變數列表或時間圖

•	LD或FBD程式

•	I/O連結

下述的命令提供於除錯對話盒中：

•	寫入變數成新的值

•	鎖住變數 (僅用於I/O變數)

•	解開變數 (僅用於鎖住的I/O變數)

•	開始或停止計時器變數 (設定自動更新模式)

符號值用於代表布林假及真值，乃是定義於字典中指定的布林變數的字串。類比值用於 "寫入" 命令時必須根據字典的變數定義輸入整數或實數格式值，字串用於 "寫入" 訊息命令時不能比字典定義的訊息變數容量還長。


SFC物件

欲於應用程式除錯時，觀測SFC程式的控制操作，可使用程式管理員視窗下的 "檔案" 功能表下的命令，在此之前你必須先從程式列中選擇一個SFC程式。下述是可利用的命令：

開始SFC程式：	啟動所選的程式 (藉由於每個初始步驟內放入SFC權杖記號 (token) )

刪除SFC程式：	刪除所選的程式 (藉由移除所有存在的權杖記號)

暫停SFC程式：	暫停所選程式的執行

重置SFC程式：	重新開始暫停的程式

對子程式而言，這些命令可對應到 "GSTART"，"GKILL"，"GFREEZE" 及 "GRST" 等函數。

當應用程式除錯時，於SFC編輯視窗中，在所代表的SFC步驟圖形上雙按滑鼠左鍵，可看到一個控制操作對話盒，於除錯對話盒中可看到如下的命令：

•	於步驟動作時設立中斷點

•	於步驟不動作時設立中斷點

•	清除所有加入到此步驟的中斷點

注意：	動作與非動作的中斷點不能加到相同的步驟中。

當應用程式除錯時，於SFC編輯視窗中，在所代表的SFC轉換條件圖形上雙按滑鼠左鍵，可看到一個控制操作對話盒，於除錯對話盒中可看到如下的命令：

•	加入中斷點於轉換條件上

•	清除加入於轉換條件上的中斷點

•	手動清除轉換條件 (移除或加入權杖記號)

有條件清除：於轉換條件之後的步驟上產生一個權杖記號，存在於前面步驟的權杖記號將被移除。無條件清除：於轉移條件之後的步驟上產生一個權杖記號，存在於前面步驟的權杖記號不會被移除。


線上變更

"線上變更" 讓使用者於程式執行時變更應用程式，它有時對於化學程序是必須的，因為任何的中斷可能造成產品或安全性的破壞。這個功能使用上必須非常小心，因為ISaGRAF不可能偵測到所有線上變更所產生的衝突。

應用碼序列

變數

輸入及輸出

執行期操作程序

記憶體需求

限制

操作


應用碼序列

ISaGRAF提供許多從除錯器進入變數、程式或I/O板的可能性，這裡所提的 "線上變更" 僅應用於碼序列的變更。碼的序列是一個完整的ST，IL，LD或FBD指令列的集合，對於 "開始" 與 "結束" 區的程式而言，碼的序列就是這些程式全部的指令集合，對於SFC程式而言，碼的序列就是一個步驟或轉移條件的第二層程式。"線上變更" 就是取代一個或多個碼的序列，而不需停止PLC的執行。因為控制SFC權杖記號是非常危險的，所以無法更動SFC結構，也就是無法加入、更改編號或移除步驟、轉移條件或SFC程式。


變數

變數的資料庫是應用程式相當有秩序的部分，它能在任何時間被其他程序 (對多工的PLC而言) 所讀寫，亦可以從除錯器更改變數的值，因此ISaGRAF不允許使用者線上加入、更名或移除變數。你可以在應用程式的第一個版本中保留 "未使用" 的內部或I/O變數，如此可以在以後變更時直接使用它們。

下面是ISaGRAF目標硬體資料庫中各種變數的樣式，限制將作用在它們上面：

- 宣告的變數

為ISaGRAF字典所宣告的變數，線上變更時不能改變它們，也不能更改它們的名稱。建議額外宣告一些未使用的變數，以便往後需要變更時使用它們。

- 功能方塊樣例

每一個以 "C" 或IEC撰寫的功能方塊樣例相當於ISaGRAF目標硬體即時資料庫的資料。當功能方塊樣例加入或移除之後，線上變更即不可行了，所以最好使用字典中宣告的功能方塊樣例，來撰寫於ST程式中，而不要於Quick LD或FBD圖中加入方塊 (因為系統會自動宣告新的樣例)。另外，於ISaGRAF程式庫中變更任何有用的功能方塊也將導致線上變更不可行。

- 步驟

每一個SFC步驟相當於一塊儲存SFC步驟動態屬性 (執行時間及旗標) 的資料，加入或移除SFC步驟將改變應用程式資料庫，也就無法做線上變更。

- 編譯器所配置的隱藏變數

ISaGRAF編譯器產生 "隱藏" 暫時變數，以解決複雜的表示式，改變表示式可能導致不同的隱藏變數，且將導致無法做線上變更。為避免此種情況，你可以於ISA.INI檔中加入一些元件，以便強迫每個程式皆配置最小量的暫時變數 (即使有些暫時變數於第一個版本中沒有使用到)。如下所示：

[DEBUG]

MNTVboo=8	; for booleans

MNTVana=4	; for integers and reals

MNTVtmr=4	; for timers

MNTVmsg=2	; for messages

當如此設定ISA.INI檔時，假如應用程式編譯後產生較多的暫時變數，編譯器會輸出警告訊息。


輸入及輸出

因為ISaGRAF I/O系統是非常開放的，所需的變動可以由OEM使用硬體的特定元件來實行。ISaGEAF系統不允許使用者線上加入、連結或移除I/O變數，或變更I/O板的描述，變更I/O板參數或鎖住I/O接點等操作則可以利用標準的OEM元件及 "OPERATE" 函數來達成。


執行期操作程序

變更執行期的應用程式需做下述的操作：

•	變更工作平台上的應用程式原始碼

•	產生新的應用程式碼

•	使用 "更新" 命令取代 "下載" 命令，下載新的應用程式碼

•	於PLC執行期間使用 "真實更新" 命令切換舊的應用程式成為新的。

上述的程序保證目標硬體 PLC可以有一個完整且可信賴的執行中的應用程式，且讓使用者以非常安全且有效的方法控制樣本操作的時間，它亦能讓使用者可以經常性的變更案件。不管程序的處理過程，"線上變更" 本質上與 "停止、開始及下載" 命令集是一樣的，唯一不同的是變數狀態仍能保存，且切換時間非常短 (通常是1或2個週期時間)。於切換時，沒有一個變數被更動，且所有的內部、輸入及輸出變數都能在應用程式變更前後保持相同的值。切換時，不會執行任何動作，且SFC權杖記號不會被移動。


記憶體需求

為了支援 "線上變更" 的能力，目標硬體PLC必須有足夠的剩餘記憶體空間來儲存變更版本的應用程式碼。於切換動作時，兩種版本的應用程式碼都必須存放於PLC記憶體中。


限制

如前所述，僅允許碼序列變更，變數定義、應用程式參數及I/O連結不能被變更。當下載變更版本的應用程式，ISaGRAF為了偵測任何不安全的改變，會對變更與執行中的應用程式加以比較，假如切換會有危險或不可能，則會發生下載錯誤。ISaGRAF會執行安全性保護，比較符號表檢查加總碼，所以任何變數、程式或SFC元件名稱被改變都會偵測到。當切換動作發生時，假如步驟處於動作中，它的非儲存 (N) 行為將會遺失。


操作

欲更新執行中的應用程式碼，必須實行下述的操作：

•	在改變執行的應用程式時，強烈建議將目前的案件製作一份不同案件名稱的複製，然後在複製的案件上做變更。

•	在編輯任何程式之前，使用者應該檢查編輯工具的 "更新日記" 選項是否設定，以方便日後程式的維護。

•	當一個或多個序列被變更時 (沒有更動到SFC結構及程式樹狀體系)，在下載之前，新的應用程式必須在工作平台上產生。

•	從新的案件內使用除錯器，使用者必須連結到目標硬體PLC。假如應用程式名稱被更改過，則無法進入目標硬體的資料庫中。使用者必須執行 "檔案 / 更新應用程式" 命令。

•	選擇 "稍後更新" 選項，下載變更的應用程式。於傳輸期間這個動作會稍微減慢PLC的執行。

•	當下載完成，使用者可以執行 "檔案 / 真實更新" 命令，於最適當的瞬間做切換，切換動作大約1或2個週期時間。

•	當切換正確執行時，將會顯示變更後的應用程式名稱，假如沒有，則執行的應用程式依然為舊的應用程式。


DDE動態交換

ISaGRAF除錯器包含一個DDE (Dynamic Data Exchange，動態資料交換) 伺服器。為了動態地顯示變數的現值於非ISaGRAF應用程式中，可以於ISaGRAF除錯器與其他應用程式之間設立一個advise迴圈。

僅有 "advise" 及 "poke" 服務為ISaGRAF除錯器的DDE伺服器所支援，你也可以使用 "request" 服務，但是只有已建立於advise迴圈的變數才可以，其他的DDE服務 (如 "execute" ) 則無法使用。當變數建立advise迴圈之後，變數值會在每次更動時更新client應用程式的值。任何型態的變數都能檢測。動態連結的識別名稱如下：

Service名稱：	"ISaGRAF"

CM名稱：	ISaGRAF的案件名稱

Item名稱：	變數名稱

假如變數為區域變數，它的名稱必須加上父程式名稱 (包含於括弧內)，如下之語法：

變數名稱(程式名稱)

ISaGRAF DDE伺服器僅用於目前除錯器所連結的ISaGRAF應用程式上。ISaGRAF伺服器最多只可以連結256個變數。不管是執行於真實模式或模擬模式下的ISaGRAF除錯器，都可以使用DDE伺服器。伺服器的更新週期得視除錯器與ISaGRAF目標硬體系統或模擬器之間的通訊時間而定。