MSM 語言 支援 陣列(Array)的用法,宣告陣列 的方式與 一般 變數(符號)相似,可使用 ezASD 提供的介面,如下圖所示:
- 按下 “+“,新增 變數(或陣列)
- 輸入 變數(或陣列)的 名稱
- 點此 選擇 資料型態,包含 物件 與 陣列
- 選擇 資料型態
- 輸入 陣列大小,必須為 正整數,設1為 變數,大於1為 陣列
- 按下 OK
- 按下 新增 即完成
關於 斷電保持 的設定:
- 勾選 “√“,則配置在 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 ; 得到平均值(浮點數)