6.2.6 巨集呼叫
呼叫巨集的指令為 G65。
- 巨集呼叫與副程式呼叫的差別
巨集呼叫(G65)與副程式呼叫(M98)的差別如下所述:
- 可使用 G65 指令來指定引數(欲傳送給巨集的資料),但 M98 指令無法做到。
- 使用 G65 指令會改變巨集內區域變數的層級。
1. 簡單呼叫(G65)
使用 G65 時,由位址 P 給定的巨集將被呼叫,資料(引數)可被傳送至該巨集。
G65 Pp Ll <指定引數>;
P : 欲呼叫的巨集程式編號
l : 重複次數
引數: 欲傳送至巨集的資料
簡單呼叫(G65)
說明:
呼叫
• 在 G65 後以 P 碼指定欲呼叫的巨集編號。
• 當需要重複執行時,以 L 碼給定 1~9999 的數字,當 L 未被指定時,將預設為 1 次。
• 藉由使用引數可指定數值給對應的巨集內區域變數。
引數指定
提供兩種類型的引數指定方式,引數指定 I 使用 G、L、N、O、P 以外的字母,並且一個字母僅能使用一次。引數指定II可使用字母 A、B、C 各 1 次以及 I、J、K 至多 10 次。引數指定的類型將由所使用的字母決定。
引數指定 I
引數指定的方式為以英文字母(位址)指定,如下表所示:
位址 |
變數編號 |
位址 |
變數編號 |
位址 |
變數編號 |
||
A B C D E F H |
#1 #2 #3 #7 #8 #9 #11 |
I J K M Q R S |
#4 #5 #6 #13 #17 #18 #19 |
T U V W X Y Z |
#20 #21 #22 #23 #24 #25 #26 |
- 位址 G、L、N、O、P 不可被用來指定引數。
- 不需被指定的位址可省略不寫。對應至被省略位址的巨集內區域變數,將被設為未定義。
- 位址的書寫不需照英文字母的順序,僅需遵照位址的書寫格式。但是若使用位址 I、J、K 則仍需按照字母順序書寫。
例如:
B_A_D_ … J_K_ 正確
B_A_D_ … J_I_ 不正確
引數指定 II
引數指定 II 可使用位址 A、B、C 各 1 次以及 I、J、K 至多 10 次,其係被用來傳送如三度空間座標值的數值作為引數。
位址 |
變數編號 |
位址 |
變數編號 |
位址 |
變數編號 |
||
A B C I1 J1 K1 I2 J2 K2 I3 J3 |
#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 |
K3 I4 J4 K4 I5 J5 K5 I6 J6 K6 I7 |
#12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 |
J7 K7 I8 J8 K8 I9 J9 K9 I10 J10 K10 |
#23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 |
引數指定 I 和 II 的混合使用
控制器內部會自動辨識引數指定類型 I 和 II。如果引數指定類型 I 和 II 同時被使用,則採用較後被指定的引數指定類型。
引數指定 I 和 II 的混合使用
2. 持續有效呼叫(G66)
持續有效呼叫的指令為 G66,將在軸向移動指令的程式行執行後呼叫由 G66 定義的巨集,此狀態將持續至使用 G67 指令取消為止。
G66 Pp Ll <指定引數>;
P : 欲呼叫的巨集程式編號
l : 重複次數(預設為 1 次)
引數 : 欲傳送至巨集的資料
持續有效呼叫(G66)
說明:
呼叫
• 在 G66 後以 P 碼指定持續有效呼叫的程式編號。
• 當需要重複執行時,以 L 碼給定 1~9999 的數字。
• 如同 G65 簡單呼叫,利用引數來指定要被傳送至巨集的資料。
取消
使用 G67 指令可退出 G66 模式,往後的程式行將不執行持續有效呼叫。
多層次呼叫
G65 和 G66 指令皆可在該次呼叫中使用另一 G65 或 G66 指令來執行多層次呼叫,至多 4 層,但不包含副程式呼叫(M98)。
限制
• 在 G66 程式行中不可呼叫巨集程式。
• G66 必須在引數前給定。
• 除了在有包含軸向移動指令的程式行外,不可呼叫巨集。
• 巨集內區域變數(引數)僅能在 G66 程式行設定。