EzASD-行列式清單程序

如底下表格,可讓使用者用類似G Code填寫函式編號和參數的方式編寫程序流程,並可指定啟動的啟始Pr項目,甚至單步執行或依程序流程自動逐步執行。

除了系統提供的LABEL/JUMP/IF/END_IF/LOOP/END_LOOP等內建函式外,使用者可在EzASD中規劃自訂的函式名稱/實作/和接收的參數。

(如底下的回原點/延遲/單軸增量/…)

而程序空間的大小(比如底下總共有20個Pr項目可使用) 也一樣可在軟體中依需求規劃。

底下就以這個例子開始介紹 EzASD如何規劃這一切。

image

[啟動函列式功能]

 

首先,使用者得透過底下方式啟動行列式功能,讓系統自動產生相關的全域符號和程序單元(稍後會解釋自動產生哪些全域符號和程序單元)。

 

image

[程序空間配置]

如底下,雙擊Pr_para可配置整個程序空間。

程序空間大小由參數欄位空間大小和總共可編寫多少條程序(Pr程序)來決定。

Pr程序會搭配一個函式編號Mapping表(已自動命名指定為Pr_tbl)/一個Pr物件(Pr_obj)/一個Pr運作迴圈(Pr_pr)

和一個指定各種Pr服務(含run/stop/onestep…)觸發條件的背景PLC程序單元(Pr_work)。

image

[自動配置產生的全域符號和程序單元]

當啟動[行列式功能時],系統會自動產生如下的相關全域符號和程序單元(內容):<如下圖>

  • Pr_para: 此表格即依Pr程序空間所配置的表格。
  • Pr_obj: 提供Pr相關服務(Run/Stop/OneStep…)的物件。
  • Pr_tbl:  函式編號Mapping表,可從”可選用的函式清單”中所定義實做的函式挑選指定函式編號。
  • Pr_Run/Pr_Stop/PrSuspend/PrOneStep: 在Pr_work中所指定的各個Pr服務的觸發條件符號。
  • Pr_InitPrIdxrunVal:該符號可設定每當Pr-Stop後,接著執行的PrRun/PrOneStep所啟始的Pr項目,而PrInitPrIdxRun即為觸發條件符號。
  • Pr_pr程序單元:提供Pr運作迴圈的程序單元,已被系統在Pr_work中利用1stScan自動在Task_3觸發執行。
  • Pr_work:指定Pr服務的相關觸發條件設定

 

image

 

 

[Pr函式]

Pr函式分成 [系統內建函式] [使用者函式] )。

系統內建函式如LABEL/JUMP/IF/END_IF/LOOP/END_LOOP等等 都是一個函式,並已指定內建的函式編號。

[使用者函式] 得先在”可選用的函式清單”中新增函式後,

 

image

再到”函式編號Mapping表”去指定每個函式編號對應的函式(如下)。 該函式編號即編寫Pr程序時所指定的函式編號。

image

[程序參數設定]

使用者可透過底下[程序參數設定]按鈕編寫該Pr函式要提供給使用者的參數,並指定位置和型態。

而函式內,可利用這些參數變數來取得使用者填寫的參數數值。

image

 

專案編譯後,可在輸出面板的”結果顯示”中看到實際的位址配置資訊和函式清單(如下)。

其中粉紅底的為INT資料型態的參數,綠底的為DINT資料型態的參數,而Real48則為淺藍底。

“Fn”所填寫的就是函式編號(比如底下1代表單軸增量),後面的ParaW1,ParaW2….就是得根據函式編號將各個參數寫到正確的位置(比如底下單軸增量的dwTacc就是得寫到ParaW3的位置,而ParaW3的位址針對Pr#01而言就是DH2082)。

另外可從CurrentPr的位址(WORD)來監看目前運行的Pr編號。以底下而言就是DH2049這個位址。

 

image

 

若要使用HMI的DopSoft行列式清單來操作,相同的資料型態得限制在同個垂直block空間內。使用者除了各別使用程序裡的[程序參數設定]來調整參數位置外,也可使用”參數位置保留配置”這個功能。

該功能可自動計算所有函式每種資料型態所需的最小空間,使用者可根據此數值去設定所要保留的空間(如下,INT保留3個Word的空間,所以DINT型態的參數從ParaW4開始自動配置)。

image

 

 

經過編譯下載後,可透過底下”編輯內容”編寫Pr程序,並存檔/開檔/上載/下載。

image

 

 

 

此外,該專案產生的Image檔,可透過AsdToolKit打開該Image後,編寫該程序內容。

 

image

發表迴響