60
1 副程式及巨集指令 副程式:儲存於控制器之程式,可由任一工件程式呼叫。 針對重覆性程式及複雜形狀程式提供適當有用之 工具。 巨集指令:可執行數學運算、邏輯控制與分支及重複等功 能。

副程式及巨集指令 - mdl.phvs.tn.edu.twmdl.phvs.tn.edu.tw/wp/jamou/wp-content/uploads/2013/05/cnc_12.pdf · 1 副程式及巨集指令 副程式:儲存於控制器之程式,可由任一工件程式呼叫。

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

1

副程式及巨集指令

副程式:儲存於控制器之程式,可由任一工件程式呼叫。

針對重覆性程式及複雜形狀程式提供適當有用之

工具。

巨集指令:可執行數學運算、邏輯控制與分支及重複等功

能。

2

副程式

呼叫副程式指令格式: M98 Pp Hh Ll;

其中,p:指定副城市之程式號碼

h:指定副程式中開始執行之程式序號

l:副程式重覆執行次數

例:

M98 P1000 呼叫副程式 O1000,重覆執行次數 1次

M98 P2100 L3 呼叫副程式 O2100,重覆執行次數 3次

3

副程式

結束副程式指令格式: M99 Pp Ll;

其中,p:副程式結束後,返回呼叫程式之程式序號

l:變更副程式重覆執行次數

例:

M98 副程式結束,返回呼叫副程式的呼叫指令下一

單節

M98 P100 副程式結束,返回呼叫副程式的 N100 程式序號

單節

4

5

Example

6

副程式:

O1201; 副程式開始

N05 G01 Z-10 F80; 進給至切削深度

N10 G91 X10; 增量模式,X 軸正向進給10mm

N15 Y40; Y 軸正向進給40mm

N20 X-10; X 軸負向進給10mm

N25 Y-40; Y 軸負向進給40mm

N30 G90 G00 Z5.0; 絕對模式,快速定位至 Z5.0mm

M99; 副程式結束

7

主程式:

O5555; 程式編號

N40 G92 X100.0 Y50.0 Z50.0 設定程式零點座標

N50 G90 G80; 工件主程式開始,安全機能

N55 T01 M06; 刀具交換

N60 G00 X15. Y15. S500 M03; 快速定位至 (15, 15),主軸正轉

N65 Z5.0; 快速定位至 Z5

M98 P1201; 呼叫副程式O1201切削槽穴 AN70 X55. Y15.; 快速定位至 (55, 15)M98 P1201; 呼叫副程式O1201切削槽穴 BN75 X55. Y85.; 快速定位至 (55, 85)

M98 P1201; 呼叫副程式O1201切削槽穴 C

N80 X15. Y85.; 快速定位至 (15, 85)

8

M98 P1201; 呼叫副程式O1201切削槽穴 D

N85 X0.0 Y0.0 M05; 快速定位至 (0, 0) 主軸停止

N90 M02; 程式結束

9

巨集指令

巨集指令:可視為具有將數值傳給變數、執行加工

指令、可作控制與分支即可作數學與邏

輯計算之副程式。

優點:具有可變參數的重覆切削型式加工較為方便。對於加工可用數學公式表示的複雜工件形狀,在編寫程式時較為方便。

減少程式編寫時間及錯誤發生,可增加程式設計者之生產力。降低程式大小。

10

巨集呼叫及返回指令

巨集呼叫指令

G65 Pp Aa Bb Cc ……

其中,P:巨集程式

p:巨集程式編號

A,B,C….:巨集程式變數位址

a,b,c……:指定給相對於A,B,C….變數的數值

巨集返回指令

M99 或 G86

11

變數定義

CNC 控制器的變數可分為三種類型:

程式變數

介面輸入及輸出變數

診斷變數

12

程式變數

格式:FANUC : #19

Mitsubishi: D105

用途:

在巨集指令呼叫時作為位址自變數。

在副程式及巨集程式中當作變數

13

14

巨集程式中變數之使用方法

直接使用變數值:X#1

使用變數的補數:X-#2

定義變數:#3=#5

變數計算定義:#3=#1+#2-1.5

15

介面輸入及輸出變數FANUC輸入變數:#1000~#1015, #1032輸出變數:#1100~#1115, #1132

16

17

18

19

操作指令1. 變數定義 #i = #j

2. 數學運算

加 #i = #j + #k

減 #i = #j - #k

乘 #i = #j * #k

除 #i = #j / #k

3. 邏輯運算

邏輯 OR(和)函數 #i = #j OR #k

邏輯 AND(乘)函數 #i = #j AND #k

邏輯互斥 OR 函數 #i = #j XOR #k

4. 函數

20

正弦函數(SIN) #i = #j * SIN [#k]

餘弦函數(COS) #i = #j * COS [#k]

正切函數(TAN) #i = #j * TAN [#k]

反正切函數(ATAN) #i = #j * ATAN [#k]

平方根(SQRT) #i = SQRT [#j]

絕對值(ABS) #i = ABS [#j]

BCD 轉換 BIN #i = BIN [#j]

BIN 轉換 BCD #i = BCD [#j]

四捨五入(ROUND) #i = ROUND [#j]

小數點以下捨去(FIX) #i = FIX [#j]

小數點以下進位(FUP) #i = FUP [#j]

21

控制指令

分支(跳躍)

IF (條件式) GOTO n..Nn

其中,n 為程式序號,在 IF…GOTO 指令與 Nn 指定序號敘述間的敘述為分支範圍。

22

控制指令

分支(跳躍)

條件式:

Di 等於 Dj (Di) EQ (Dj)Di 不等於 Dj (Di) NE (Dj)Di 大於 Dj (Di) GT (Dj)Di 小於 Dj (Di) LT (Dj)Di 等於或大於 Dj (Di) GE (Dj)Di 等於或小於 Dj (Di) LE (Dj)

23

控制指令

重覆指令WHILE (條件式) DO m...END m

其中,m=1,2 或 3,WHILE 指令敘述及 END m 需成對使用;且 WHILE (條件式)不可省略。

24

25

26

面銑循環巨集指令程式

變數位址變 數 定 義X #24 沿 X 方向銑削的增量距離Y #25 沿 X 方向銑削的增量距離Z #26 切削深度J #5 Y 軸起始單步值F #9 進給率

G65 P1202 Xx Yy Zz Jj Ff

27

28

O1202;

N05 #31=FUP [#25/#5/2];

N10 #5=#25/#31/2;

N15 #32=1.0;

N20 G01 Z#26 F#9;

N25 IF [#32 GT #31] GOTO 60;

N30 G91 X#24;

N35 Y#5;

N40 X-#24;

N45 Y#5;

N50 #32=#32+1.0;

N55 GOTO 25;

面銑巨集程式編號

決定重複次數

計算新的單步前進值

設定 #32=1初始值

進給至欲切削的深度

#32 大於 #31 時跳至 N60 執行

增量座標系統,朝正X方向進變數內的

朝正Y方向進給單步前進值

朝負X方向進給 #24 變數內的值

朝正Y方向進給單步前進值

#32 值增量 1

非條件跳至 N25 執行

29

N60 X#24;

N65 G90;

N70 M99;

朝正 X 方向進給 #24 變數內的值

絕對座標系統

巨集程式執行完畢返回主程式

30

Example:在一 200x120 高度為 20mm 的工件上,利用直徑 20mm之端銑刀銑削一平面,XY 平面的零點定在工件之左前角。01203;

N5 G90 G80 G70 G40;

N10 T01 M06;

N15 G00 G54 X-12. Y6.;

N20 G43 H01 Z5. S500 M03;

N25 G65 P1202 X232. Y120.

Z-2. J18. F100;

N30 G00 Z10.;

N35 ;

安全機能

交換刀具 T01

設定工作零點,快速定位至面銑循

環起始點

刀具長度補正,快速定位Z5,主軸

正轉 500 RPM

呼叫面銑巨集程式

快速退回至Z10

31

矩形槽穴巨集指令程式變數位址 變 數 定 義

X #24 槽穴中心至邊界減刀具半徑值後 X 軸向距離Y #25 槽穴中心至邊界減刀具半徑值後的 Y 軸向距離Z #26 切削深度I #4 X 軸向單步進給量A #1 精切削預留量F #9 進給率

G65 P1024 Xx Yy Zz Ii Aa Ff

32

33

O1204;

N05 #24=#24-#1;

N10 #25=#25-#1;

N15 #31=FUP [#24/#4];

N20 #4=#24/#31;

N25 #32=#4*#25/#24;

N30 G01 Z#26 F#9;

N35 #33=1;

N40 IF [#33 GT #31] GOTO 80

N45 G91 G01 X#4 Y#32

N50 X[-2*#4*#33]

N55 Y[-2*#32*#33]

矩形槽穴巨集程式編號

從X 變數中得到X 軸的精銑邊界

從Y 變數中得到Y 軸的精銑邊界

決定切削次數

決定 X 軸向單步進給量

決定 Y 軸向單步進給量

進給至切削深度

設定變數 #33=1

分支指令

增量模式,在X,Y 方向進給切削至單步進

給位置

沿 X 負方向切削

沿 Y 負方向切削

34

N60 X[2*#4*#33]

N65 Y[2*#32*#33]

N70 #33=#33+1

N75 GOTO 40

N80 G01 X#1 Y#1

N85 X[-2*[#4*(#33-1]+#1]

N90 Y[-2*[#32*(#33-1] +#1]

N95 X[2*[#4*[#33-1] +#1]

N100 Y[2*[#2*[#33-1] +#1]

N105 X-[#4*[#33-1] +#1]

Y-[#32*[#33-1] +#1]

N110 M99;

沿 X 正方向切削

沿 Y 正方向切削

變數 #33 遞增 1

非條件跳至 N40

X, Y 方向同時作精銑切削進給量

沿 X 負方向切削

沿 Y 負方向切削

沿 X 正方向切削

沿 Y 正方向切削

返回槽穴中心

返回主程式

35

Example:選用直徑 8mm 端銑刀,工件零點社在左前角上。

36

X 變數:槽穴中心至邊界減刀具半徑值後的 X 軸向距離。X=40-4=36mm 第一槽穴

X=30-4=26mm 第二槽穴

Y 變數:槽穴中心至邊界減刀具半徑值後的 Y 軸向距離。Y=30-4=26mm 第一槽穴

Y=40-4=36mm 第二槽穴

Z 變數:切削深度Z=-5mm 第一槽穴

Z=-7.5mm 第二槽穴

變數 I:X 軸向單步進給量I=7mm 第一槽穴

I=6mm 第二槽穴

A 變數:精切削預留量 A=1 第一、二槽穴

37

O1205;

N05 G90 G80 G40 G17;

N10 T05 M06;

N15 G00 G54 X60. Y60. S600 M03;

N20 G43 H5 Z10.;

N25 G65 P1204 X32. Y22. Z-10.

I10. F120.0 A1.;

N30 G00 Z10.;

N35 X150. Y60.;

N40 G65 L1204 X22. Y32. Z-15.

I8. F120.0 A1.;

N45 G00 Z10.;

程式編號

安全機能

刀具交換 T05

設定工作零點,快速定位至(60,60),

主軸正轉 600 RPM

刀具長度補正,快速定位至Z10

呼叫矩形槽穴巨集程式切削第一個

槽穴

快速退刀定位至Z10

快速定位至第二槽穴孔中心

呼叫矩形槽穴巨集程式切削第二個

槽穴

快速退刀定位至Z10

38

N50

M30;

39

等多邊形巨集指令程式

RsinYyRcosXx

值之決定是依據:

1. 多邊形之邊數

2. 頂點的順序數值

呼叫格式:

G65 P1206 Xx Yy Zz Rr Ss Dd Ff

40

變數位址 變 數 定 義X #24 多邊形 X 軸中心座標Y #25 多邊形 Y 軸中心座標Z #26 切削深度R #18 基圓半徑S #19 多邊形的邊數D #7 刀具半徑F #9 進給率

41

42

O1206;

G90;

#30=360.0/#19;

#18=#18-#7;

#31=1.0;

G00 X#24 Y#25;

G01 Z#26 F#9;

X [#24+#18];

WHILE [#31 LE #19] D01;

#32=#30*#31;

#33=#24+#18*COS [#32];

#13=#25+#18*SIN [#32];

G01 X#33 Y#13;

多邊形巨集程式編號

設定 G90

定義變數 #30,每邊的增量角度值

基圓實際半徑值

設定變數 #31 為 1.0

快速定位至多邊形中心

進給至切削深度

銑削至第一個多邊形頂點

重覆終結指令

定義至下一頂點的角度變數 #32

下一頂點的 X 座標

下一頂點的 Y 座標

銑削至下一個多邊形頂點

43

#31=#31+1.0;

END1;

GOTO 1;

N1 G01 X#24 Y#25;

M99;

變數 #31 遞增 1

重覆終結指令

轉至 N1

N1,銑削至多邊形中心

返回主程式

44

Example:基圓半徑 40mm,中心點(120,80)等六邊形之槽

穴,刀具為 10mm 之端銑刀。

O1207;

N05 G90 G80 G40 G17;

N10 T03 M06;

N15 G00 G54 X0.0 Y0.0 S1000

M03;

N20 G43 H3 Z10.;

N25 G65 P1206 X120. Y80.

Z-10. R9. D5. S6 F140;

N30 G65 P1206 X120. Y80.0

Z-10. R18. D5. S6 F140.;

安全機能

刀具交換 T03

工作零點設定,快速定位至 (0, 0)

主軸正轉 1000 RPM

刀具長度補正,快速定位至Z10

呼叫多邊形巨集程式 ( 第一次

呼叫 )

呼叫多邊形巨集程式 ( 第二次

呼叫 )

45

N35 G65 P1206 X120. Y80.

Z-10. R28. D5. S6 F140.;

N40 G65 P1206 X120. Y80.

Z-10. R36. D5. S6 F140.;

N45 G65 P1206 X120. Y80.

Z-10. R40.0 D5. S6 F140.;

N50 G00 Z10.;

N55 G91 G28 Z0.0 M05;

N60 G91 G28 X0.0 Y0.0;

N65 M30;

呼叫多邊形巨集程式 ( 第三次

呼叫 )

呼叫多邊形巨集程式 ( 第四次

呼叫

呼叫多邊形巨集程式 ( 第五次

呼叫 )

快速定位至Z10

主軸返回機械原點

X, Y 軸返回機械原點

程式結束

46

切削橢圓巨集指令程式

sincos

ByAx

sincos

BYyAXx

47

變數定義

變數位址 變 數 定 義A #1 長軸長度B #2 短軸長度I #4 單步進給角度增量R #18 基圓半徑X #24 橢圓 X 軸中心座標Y #25 橢圓 Y 軸中心座標Z #26 切削深度F #9 進給率

G65 P1208 Aa Bb Ii Rr Xx Yy Zz Ff

48

流程圖

49

O1208;

G90;

G00 X#24 Y#25;

G01 Z#26 F#9;

#1=#1-#18;

#2=#2-#18;

#33=FUP [#1/2.0/#18];

#10=#33*1.0;

#3=#1/#33;

#30=1.0;

N10 #31=#30*#3;

#32=#31*#2/#1;

G01 X [#24+#31] F#9;

橢圓巨集程式

設定絕對座標系

快速定位至橢圓中心

進給至切削深度

重新計算長軸有效半徑

重新計算短軸有效半徑

計算槽穴重覆次數

將 #33 轉成實數

計算 X 軸向的單步距離

設定 #30=1.0

累計 X 軸單步距離總量

累計 Y 軸單步距離總量

進給至 X 軸向起始點

50

#5=0.0;

WHILE [#5 LT 360.0] D01;

#6=#31*COS [#5];

#7=#32*SIN [#5];

G01 X [#24+#6] Y [#25+#7];

#5=#5+#4;

END1;

#10=#10-1.0;

IF [#10 LE 0.0] GOTO 20;

#30=#30+1.0;

GOTO 10;

N20 G01 X#24 Y#25;

M99;

設定 #5=0

定義重覆迴圈

計算 X 軸座標

計算 Y 軸座標

進給至插補點

角度增量

迴圈終點單節

#10 遞減 1

分支單節

#30 遞增 1

非條件跳至 N10

進給至橢圓中心

返回主程式

51

Example:橢圓中心(100,60),長軸 40mm,短軸 30mm,刀

具半徑 4mm。

O1209;

N05 G90 G80 G40 G17;

N10 T07 M06;

N15 G00 G54 X100. Y60. S750

M03;

N20 G43 H06 Z10.;

N25 G65 P1208 A40.0 B30. I5.0

R8. X100.0 Y60.0 Z-10. F140;

N30 G00 Z10.;

N35 G91 G28 Z0.0 M05;

安全機能

刀具交換至 T07

工作零點設定,快速定位至(0, 0)

主軸正轉 750 RPM

刀具長度補正,快速定位至Z10

呼叫橢圓巨集程式

快速定位至Z10

主軸返回機械原點

52

N40 G91 G28 X0.0 Y0.0;

N45 M30;

X, Y 軸返回機械原點

程式結束

53

半球體巨集指令程式

sin)(cos)(

rRZzrRXx

其中,

R:半球體半徑

r:球形端銑刀半徑

X:半球體 X 軸中心座標

Y:半球體 Y 軸中心座標

Z:半球體 Z 軸中心座標

54

流程圖

55

變數定義

變數位址 變 數 定 義X #24 半圓球 X 軸中心座標Y #25 半圓球 Y 軸中心座標Z #26 半圓球 Y 軸中心座標A #1 角度 增量R #18 半圓球半徑D #7 球形端銑刀半徑S #19 圓形槽穴切削循環單步進給量F #9 進給率T #20 刀具直徑補正量儲存記憶體編號

( 此記憶體儲存值需保持為零 )

G65 P1210 Xx Yy Zz Aa Rr Ss Ff Tt Dd

56

O1210;

G90 G00 X#24 Y#25;

G01 Z#26 F#9;

#31 =0.0;

N2 #31 =#31+#1;

IF [#31 GE 90.0] GOTO 10;

#32= [#18-#7]*SIN [#31];

#33= [#18-#7]*COS [#31];

G01 Z [#26-#32] F#9;

#27 =FUP [#33/#19];

#19 =#33/#27;

#3 =0.0;

N5 #3=#3+1.0;

半球體巨集程式

絕對模式,快速定位至半球體中心

進給至半球體開始切削的深度

設定 #31=0

角度 增量值

分支指令

決定 X 座標 #32

決定 Y 座標 #33

進給切削至 Z 深度

決定圓切削的重覆次數

決定圓切削的單步距離

設定 #3=0

#4 遞增 1

57

#35 =#19*#3;

G01 X[#24+#4] H#20 F#9

G02 I#4 F#9;

#27=#27-1;

IF [#27 LE 0.0] GOTO 2

GOTO 5

N10 M99;

計算圓半徑值

圓切削指令

#27 遞減 1

分支指令

非條件跳至 N5

返回主程式

58

Example:第一個半球體直徑 60mm,第二個 40mm,球形端

銑刀直徑 6mm。

59

O1211;

N05 G90 G80 G40 G17;

N10 T02 M06;

N15 G00 G54 X60. Y60. S700

M03;

N20 G43 H02 Z10.;

N25 G65 P1210 X60. Y60. Z0.0

R20. D7.5 A3.0 S5. F140 T22;

N30 G00 Z10.;

N35 G65 P1210 X160. Y60. Z0.0

R10. D7.5 A3.0 S4. F140. T22;

N40 G00 Z10.;

安全機能

刀具交換至 T02

工作零點設定,快速定位至

(60,60),主軸正轉 700 RPM

刀具長度補正,快速定位至Z10

呼叫半球體巨集程式銑切第一

個半球體

快速退刀定位至Z10

呼叫半球體巨集程式銑切第二

個半球體

快速退刀定位至Z10

60

N45 G91 G28 Z0.0 M05;

N50 G91 G28 X0.0 Y0.0;

N55 M30;

主軸返回機械原點

X, Y 軸返回機械原點

程式結束