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 使用 GLNOP 以外的字母,並且一個字母僅能使用一次。引數指定II可使用字母 ABC 各 1 次以及 IJK 至多 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


  • 位址 GLNOP 不可被用來指定引數。
  • 不需被指定的位址可省略不寫。對應至被省略位址的巨集內區域變數,將被設為未定義。
  • 位址的書寫不需照英文字母的順序,僅需遵照位址的書寫格式。但是若使用位址 IJK 則仍需按照字母順序書寫。


例如:

B_A_D_ … J_K_        正確

B_A_D_ … J_I_        不正確


引數指定 II

引數指定 II 可使用位址 ABC 各 1 次以及 IJK 至多 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 模式,往後的程式行將不執行持續有效呼叫。


多層次呼叫

G65G66 指令皆可在該次呼叫中使用另一 G65G66 指令來執行多層次呼叫,至多 4 層,但不包含副程式呼叫(M98)。


限制

 在 G66 程式行中不可呼叫巨集程式。

 G66 必須在引數前給定。

 除了在有包含軸向移動指令的程式行外,不可呼叫巨集。

 巨集內區域變數(引數)僅能在 G66 程式行設定。