4.11.5.2 M97:內部副程式呼叫


1. M97:內部副程式呼叫 L_


格式:

M97 P_ L_


編輯器程式執行模式下,M97 指令用於呼叫內部副程式 L_ 次。此內部副程式與主程式同在一 CNC 檔中。


此內部副程式是置於主程式後面,並以 "Oxxxx" 為副程式名稱,此 "xxxx" 是四位數字,即為  M97 指令中之 P_ 值;副程式必須以 M99 結尾(由副程式返回)。


範例一:

程式 SAMPLE97.CNC                說明

___________________________________________________________

;SAMPLE OF M97 CALL    ;主程式

G50 X0 Y0 Z0           ;

M03                    ;

M97 P1005 L3           ;呼叫執行副程式 O1005 三次

M97 P2001              ;呼叫執行副程式 O2001

M05                    ;

...                    ...

M02                    ;主程式結束

O1005                  ;副程式 O1005 開始

...                    ...

M99                    ;副程式 O1005 結束

;                      ;

O2001                  ;副程式 O2001 開始

...                    ...

M99                    ;副程式 O2001 結束


範例二:

程式  SAMPLE97.CNC                說明

___________________________________________________________

;SAMPLE OF M97 CALL    ;主程式

G50 X0 Y0 Z0           ;

...                    ...

M97 P1005 L3           ;呼叫執行副程式 O1005 三次

...                    ...

M30                    ;主程式結束

;                      ;

O1005                  ;副程式 O1005 開始

...                    ...

M97 P2001              ;呼叫執行副程式 O2001

...                    ...

M99                    ;副程式 O1005 結束

;                      ;

O2001                  ;副程式 O2001 開始

...                    ...

M99                    ;副程式 O2001 結束


2. M97 函數功能


M97 函數功能,說明如下:

格式:

M97 Pp Qq xxxx #yyyy zzzz

.

.

.

Op

.

.

.

M99


其中,

p:呼叫定義函數的副程式檔名。

q:於 Op 副程式中,用以代入函數輸入值之巨集變數起始編號。

(其後跟隨數字或巨集變數,且只能有此二者,不可再有其它指令值,且至多可設定 10 組數字或巨集變數)

xxxx, zzzz(數字)    :函數 p 之輸入值。

#yyyy(巨集變數之值):函數 p 之輸入值。

Op                                        :p 副程式。


M97 函數功能中,藉由巨集變數將函數輸入值代入定義之函數中以執行運算,函數定義則寫為內部副程式,並以 M97 指令呼叫執行之。


執行此 M97 函數指令時,系統會依序將 xxxx 代入 #q,巨集變數 yyyy 之值代入 #q+1zzzz 代入 #q+2,依此類推,以供 Op 函數進行運算。


程式範例:

原程式寫法:

#30=-146.999

#31=10.000

#71=#31*COSD#30

#72=#31*SIND#30


使用 M97 函數可將程式改寫為:

<寫法一>

M97 P301 Q30 -146.999 10.000

.

.

.

O301

#71=#31*COSD#30

#72=#31*SIND#30

M99


於上例中,M97 指令行將把 #30 設定為 -146.999#31 設定為 10.000,而後再呼叫 O301 副程式。


<寫法二>

(以此寫法示範以巨集變數處理輸入值)

#50=-146.999

M97 P301 Q30 #50 10.000

.

.

.

O301

#71=#31*COSD#30

#72=#31*SIND#30

M99


於上例中,第一行指令將先把 -146.999 設定至 #50 中,而 M97 指令行將把 #30 設定為 #50 之值,即 -146.999#31 設定為 10.000,而後再呼叫 O301 副程式。


註. 可用逗號(,)將輸入值隔開,亦即輸入值間使用空格或逗號(,)隔開皆可,如:

M97 Pp Qq xxxx,#yyyy,zzzz,…………