MSM : 陣列的使用

MSM 語言 支援 陣列(Array)的用法,宣告陣列 的方式與 一般 變數(符號)相似,可使用 ezASD 提供的介面,如下圖所示:

MSM 語言 加入陣列的操作方式

  1. 按下 “+“,新增 變數(或陣列)
  2. 輸入 變數(或陣列)的 名稱
  3. 點此 選擇 資料型態,包含 物件 與 陣列
  4. 選擇 資料型態
  5. 輸入 陣列大小,必須為 正整數,設1為 變數,大於1為 陣列
  6. 按下 OK
  7. 按下 新增 即完成

關於 斷電保持 的設定:

  •   勾選“,則配置在 DH 區,可斷電保持無法設定 初始值 [註 1]
  • 不勾選 ” “,則配置在 DV 區,不斷電保持可以設定 初始值

[註 1] 初始值 表示每次程式執行(Run)時,資料會先回復成 設定的值,若勾選 斷電保持,則以當時 DH 內容為準,保持斷電前最後的值.


陣列 語法格式如下:

陣列名稱[索引值]

  • 名稱:就是前面2宣告的 陣列名稱
  • 索引值:必須為 正整數 或 暫存器 AR0 ~ AR5

索引值由 0 開始編排,例如 上面宣告的陣列”Array_1″的 5 個 元素 分別是:

Array_1[0],Array_1[1],Array_1[2],Array_1[3],Array_1[4]

* 注意 索引值 若超出 陣列宣告的大小,存取時 可能造成不可預期的錯誤,請務必小心使用


陣列 範例1,作為多軸路徑命令:

 

  SELECT X_Y_Z_AXIS   ; 假設已設定為 PATH 模式

 

  MOVL POS[0],100000  ; X Axis CMD
  MOVL POS[1],200000  ; Y Axis CMD
  MOVL POS[2],300000  ; Z Axis CMD

  PABS @POS[0]        ; 執行3軸 絕對路徑命令                       


陣列 範例2,計算陣列 Array_1 所有元素的平均值:

 

     LACCL  0        ; ACC 初值 = 0
     MOVW   @AR0,5   ; 迴圈次數 = 5
     MOVW   @AR1,0   ; 索引初值 = 0
Loop:
     ADDL     @Array_1[AR1] ; 累加陣列內容

     REG_ADDW @AR1,1        ; 索引值 +1
     LOOP     $Loop,AR0     ; 迴圈 5 次

 

     DIVF     5.0           ; 除以 個數 = 5.0
     SACCF    @Avg_Value    ; 得到平均值(浮點數)


 

 

發表迴響