Apr 15, 2023 메시지를 남겨주세요

CNC 매크로 프로그램에 대해 이야기해 봅시다

 

간단히 말해서 매크로는 수식을 사용하여 부품을 처리하는 것입니다. 예를 들어, 타원, 매크로가 없으면 곡선 위의 점을 한 점씩 계산한 다음 천천히 직선으로 근사해야 합니다. 평활도가 높은 공작물이라면 많은 점을 계산해야 하는데 매크로를 적용한 후 타원 공식을 시스템에 입력한 다음 Z 좌표를 주고 매번 양을 더하면 매크로는 자동으로 X 좌표를 계산하고 절단을 수행합니다. 실제로 프로그램에서 매크로의 주요 기능은 계산입니다.

그림

01

매크로 프로그램 정보

매크로 프로그램이란

우리는 프로그래밍을 할 때 특정 기능을 완성할 수 있는 일련의 명령어를 서브루틴처럼 메모리에 저장하고 일반 명령어로 호출하게 됩니다. 그것을 사용할 때 저장된 기능을 실행하기 위해 이 일반적인 명령만 내리면 됩니다. 이 일련의 명령을 사용자 매크로 프로그램 본체 또는 간단히 매크로 프로그램이라고 합니다.

이 일반 명령을 사용자 매크로 호출 명령이라고 합니다. 프로그래밍할 때 프로그래머는 매크로 프로그램이 아닌 매크로 명령어만 기억하면 됩니다.

매크로 프로그래밍은 언제 사용됩니까?

1) 수동 프로그래밍 처리 공식 곡선(간단한 계산, 빠른 입력)

2) 일반 절단 경로(절단 모듈로)

3) 프로그램 간 제어(프로그램 스케줄링)

4) 공구 관리(공구 마모)

5) 자동 측정(기계 내 프로브)

매크로 프로그램과 일반 프로그램의 차이점

1) 매크로 프로그램 본체에서는 변수를 사용할 수 있고 변수에 값을 할당할 수 있으며 변수 간에 계산을 수행할 수 있으며 프로그램을 건너뛸 수 있습니다.

2) 일반 프로그램에서는 상수만 지정할 수 있으며 상수 간의 연산은 할 수 없습니다. 프로그램은 순차적으로만 실행될 수 있고 점프할 수 없으므로 기능이 고정되어 변경할 수 없습니다.

3) 매크로 기능은 사용자가 CNC 공작 기계의 성능을 향상시키기 위한 특수 기능으로 유사한 공작물 가공에서 매크로 프로그램을 능숙하게 사용하면 절반의 노력으로 두 배의 결과를 얻을 수 있습니다.

02

매크로 프로그램의 변수 및 형식

매크로 프로그램의 특징

매크로 프로그램은 변수를 사용할 수 있으며 변수는 해당 작업을 수행하는 데 사용할 수 있습니다. 실제 변수 값은 매크로 프로그램 명령에 의해 변수에 할당될 수 있습니다.

세 가지 유형의 변수

CNC 시스템의 변수 표시 형식은 "#" 뒤에 1~4자리 숫자가 붙고 세 가지 유형의 변수가 있습니다.

(1) 로컬 변수: #1~#33은 매크로 프로그램에서 로컬로 사용되는 변수로 독립 변수 전송에 사용됩니다.


(2) 공통 변수: 사용자가 자유롭게 사용할 수 있으며 메인 프로그램에서 호출하는 각 서브루틴 및 각 매크로 프로그램에 공통으로 사용됩니다. #100~#149는 전원을 끄면 모든 변수 값이 지워지고 #500~#509는 전원을 끄면 변수 값을 저장할 수 있습니다.


(3) 시스템 변수 : 4자리로 정의되며, 공작기계 프로세서와 관련된 교환 파라미터, 공작기계 상태 획득 등 공작기계 프로세서 또는 NC 메모리에 포함된 읽기 전용 또는 읽기/쓰기 정보를 얻을 수 있다. 매개변수, 처리 매개변수와 같은 시스템 정보.

매크로 프로그램의 간단한 호출 형식

매크로 프로그램의 간단한 호출은 메인 프로그램에서 단일 블록으로 매크로 프로그램을 호출할 수 있음을 의미합니다.

호출 형식:

G65 P(매크로 프로그램 번호) L(반복 횟수)(변수 할당).

그 중: G65—매크로 프로그램 호출 명령;

P(매크로 프로그램 번호) - 호출할 매크로 프로그램의 코드.

L (반복 횟수) - 매크로 프로그램의 반복 실행 횟수, 반복 횟수가 1인 경우 생략할 수 있습니다.

(변수 할당) - 매크로 프로그램에서 사용되는 변수에 값을 할당합니다.

매크로 프로그램과 서브루틴 사이의 동일한 점은 하나의 매크로 프로그램이 다른 매크로 프로그램에 의해 최대 4번 호출될 수 있다는 것입니다.

매크로 프로그램 작성 형식

매크로 프로그램의 쓰기 형식은 서브루틴의 쓰기 형식과 동일합니다. 형식은 다음과 같습니다.

0-(0001-8999은 매크로 프로그램 번호입니다.)

N10 명령

N-M99

위의 매크로 프로그램의 내용에서 일반적으로 사용되는 프로그래밍 명령 외에도 변수, 산술 연산 명령 및 기타 제어 명령을 사용할 수 있습니다. 변수 값은 매크로 프로그램 호출 명령에서 할당됩니다.

03

FANUC 시스템 매크로 프로그램 적용

(1) 매크로 프로그램 그루빙

그림

1) WHILE 문

G00 X52 Z2;

#2=-14;

z 방향으로 공구의 시작점입니다(공구 폭이 4mm이므로 시작점은 Z-14에 설정됨)

WHILE [#2 GE -30] DO2;

z 방향의 제약 조건입니다. z가 -30와 같을 때 z 방향은 더 이상 움직이지 않습니다.

G00 Z〔#2〕;

z 방향의 현재 위치

#2=#2-2;

z 방향으로 이동하는 단계, 매번 2mm씩 이동

#1=52;

x 방향으로 나이프의 시작점입니다.

WHILE [#1 GE 20] DO1;

X 방향의 구속조건, 직경이 20일 때 더 이상 절단되지 않습니다.

G01 X〔#1〕F0.2;

x 방향 절입 깊이

G00 X〔#1 더하기 1〕;

x 방향의 상대 후퇴량

#1=#1-1;

x 방향의 스텝 거리(매회 1mm 절단)

끝1;

G00 X52;

끝2;

완전한 프로그램:

O1234;

G40 G97 G99;

T0101;

S1000 M3;

G00 X52 Z2;

#2=-14;

WHILE〔#2GE-30〕DO2; 끝1;

G00 Z〔#2〕;

#2=#2-2;

#1=52

WHILE〔#1GE20〕DO1;

G01X〔#1〕F0.2;

G00X〔#1 더하기 1〕;

#1=#1-1;

G00 X52;

끝2;

G00 X150 Z150;

M30;

2) IF 문

G00 X52 Z-2;

#1=-14;

공구의 z방향 시작점입니다(공구의 폭은 4mm)

N2 #1=#1-2;

z 방향의 이동 단계입니다.

#2=52;

x 방향에서 공구의 시작점입니다.

N1#2=#2-1;

x 방향의 스텝 거리(각각 절단 깊이 1mm)

G01 X〔#2〕F0.2;

X 방향의 현재 위치

G00 X〔#2 더하기 1〕;

X 방향의 상대 후퇴량

IF [#2 GE 21] GOTO1;

x 방향의 구속(x 값을 20으로 깎으면 다음 절차가 수행되며 반환되지 않음)

G00 X52;

X가 위치 52로 후퇴

G00 Z〔#1〕;

Z 방향의 현재 위치

IF [#1 GE -30] GOTO2;

Z 방향의 제약 조건, z가 -30와 같을 때 z 방향은 움직이지 않습니다.

완전한 프로그램:

O1234;

G40G97G99;

T0101;

S1000M3;

G00 X52 Z-2;

#1=-14;

N2 #1=#1-2;

#2=52;

N1#2=#2-1;

G01 X〔#2〕F0.2;

G00 X〔#2 더하기 1〕;

IF〔#2GE21〕GOTO1;

G00X52;

G00Z〔#1〕;

IF[#1GE-30]GOTO2;

G00X200;

Z200;

M5;

M30;

(2) 타원 프로그래밍

1) 타원 WHILE 문의 표준 형식:

#1=a;

a: 도구의 시작점은 타원의 축 Z에 대해 mm의 양의 방향에 있습니다.

WHILE [#1 GE b] DO1;

b: 타원 처리의 끝점은 타원의 축 Z에 대해 음의 방향 b mm에 있습니다(완전한 반 타원이 처리되면 a와 b는 동일한 값과 다른 부호를 가진 두 값입니다)

#2= c*SQRT[1-#1*#1/d*d];

c: 타원의 반단축

d: 타원의 반장축(타원 공식에 따라 #2 계산, 반장축은 d, 반단축은 c, #2는 X 값, #1은 Z 값 , SQRT는 제곱근을 의미함)

G01 X〔±2*#2 더하기 e〕Z〔#1±f〕;

e: 공작물 좌표계에 대한 타원의 X축 오프셋(직경 값)

f: 공작물 좌표계에 대한 타원의 Z축 오프셋

#1=#1-1; 보폭(1mm씩 이동)

끝1;

참고: 오목한 타원을 돌릴 때 X 뒤의 괄호 안의 "±"는 "-"로 간주됩니다. 볼록한 타원을 돌릴 때 X 뒤의 괄호 안의 "±"는 "더하기"로 간주합니다.

타원의 X축이 양의 방향으로 이동하면 Z 뒤 괄호 안의 "±"는 "플러스"를 취합니다. 타원의 X축이 음의 방향으로 이동할 때 Z 뒤 괄호 안의 "±"는 "-"를 취함

2) 생략형 IF 문의 표준 형식

#1=a;

a: 도구의 시작점은 타원의 축 Z에 대해 mm의 양의 방향에 있습니다.

N1#2=b*SQRT〔1-#1*#1/c*c〕;

b: 타원의 반 단축 c: 타원의 반 장축(타원 공식 X/c 더하기 Y/b=1에 따라, SQRT는 제곱근을 의미함)

G01X〔±2*#2 더하기 d〕Z〔#1±e〕F0.2; d: 좌표 영점에 대한 타원의 X축 오프셋(직경 값) e: 영점 평면에 대한 타원의 Z축 오프셋

#1=#1-1;

보폭(1mm씩 이동)

IF [#1 GE -f] GOTO1

f: 타원 처리 종료

 

참고: 오목한 타원을 돌릴 때 X 뒤의 괄호 안의 "±"는 "-"로 간주됩니다. 볼록한 타원을 돌릴 때 X 뒤의 괄호 안의 "±"는 "더하기"로 간주합니다. 타원의 X축이 양의 방향으로 벗어나면 Z 뒤 괄호 안의 "±"는 "플러스"를 취합니다. 타원의 X축이 음의 방향으로 빗나가면 Z 뒤 괄호 안의 "±"는 "-"를 취한다.

그림

WHILE 문

#1=20;

WHILE〔#1GE-20〕DO1;

#2=10*SQRT〔1-#1*#1/400〕;

G01X〔-2*#2 더하기 50〕Z〔#1-25〕;

#1=#1-1;

끝1;

IF 문

#1=20;

N1#2=10*SQRT〔1-#1*#1/400〕;

G01X〔-2*#2 + 50〕Z〔#1-25〕F0.2;

#1=#1-1;

IF[#1GE-20]GOTO1;

완전한 프로그램

O1234;

G40G97G99;

T0101;

S1000 M3;

G00 X50 Z2;

G73 U5 R5;

G73 P10 Q20 U0.5 F0.2;

N10 G0 G42 Z-5;

#1=20;

WHILE〔#1GE-20〕DO1;

#2=10*SQRT〔1-#1*#1/400〕;

G01X〔-2*#2 + 50〕Z〔#1-25〕F0.2;

#1=#1-1;

끝1;

G00 X50;

N20 G00 G40 Z2;

G70 P10 Q20;

G00 X200;

Z200;

M5;

M30;

IF 문의 전체 형식이 생략됩니다(주기가 추가되는 한 IF 문의 경우에도 마찬가지임). FANUC-0i 시스템에서 매크로 프로그램은 G73에만 추가할 수 있습니다.

(3) 포물선 처리

1) 포물선 WHILE 문의 표준 형식:

#1=a;

a: 도구의 시작점은 포물선 축 Z 방향으로 mm입니다.

WHILE [#1 GE -b] DO1;

b: 타원의 z 방향 가공 길이

#2=SQRT〔-#1*5/3〕;

(포물선 공식 Z=-3/5*X*X에 따라 X의 값 #2를 찾으십시오. 여기서 SQRT는 제곱근을 의미합니다.)

G01 X〔±2*#2 더하기 c〕Z〔#1〕;

c: 공작물 좌표계에 대한 포물선 X축의 오프셋(직경 값), "±"

"플러스"를 취하면 볼록하고 "-"를 취하면 오목합니다.

#1=#1-1; 보폭(1mm씩 이동)

끝1;

2) 포물선 IF 문의 표준 형식

#1=a;

a: 도구의 시작점은 포물선 축 Z 방향으로 mm입니다.

N1 #2=SQRT〔-#1*5/3〕;

(포물선 공식 Z=-3/5*X*X에 따라 X의 값 #2를 찾으십시오. 여기서 SQRT는 제곱근을 의미합니다.)

G01 X〔±2*#2 더하기 b〕Z〔#1〕;

b: 좌표 영점에 대한 포물선 X 방향 축의 오프셋(직경 값)입니다. "±"가 "플러스"를 취하면 볼록, "-"를 취하면 오목

#1=#1-1;

(Z 방향의 스텝 거리, 각 이동은 1mm)

IF〔#1 GE -c〕GOTO1; c: 타원의 z 방향 처리 길이

포물선 IF

다른 형태의 문장

#1=a;

N1 #2=SQRT〔( 플러스 )#1*5/3〕;

"더하기" 기호는 생략 가능

G01 X〔2*#2 더하기 b〕Z〔-#1〕;

#1=#1 더하기 1;

IF [#1 LE c] GOTO1;

포물선이 Z의 양의 방향에 있다고 가정하면 Z〔-#1〕을 사용합니다. 포물선을 음의 방향으로 대칭으로 만들기 위해

그림

WHILE 문

#1=0;

WHILE [#1 GE -15] DO1;

#2=SQRT〔-#1*5/3〕;

G01 X〔2*#2 더하기 30〕Z〔#1〕;

#1=#1-1;

끝1;

IF 문

#1=0;

N1 #2=SQRT〔-#1*5/3〕;

G01X〔2*#2 더하기 30〕Z〔#1〕;

#1=#1-1;

IF [#1 GE -15] GOTO1;

완전한 프로그램

O1234;

G40 G97 G99;

T0101;

S1000 M3;

G00 X42 Z1;

G73 U5 R5;

G73 P10 Q20 U0.5 F0.2;

N10 G00 G42 Z0;

#1=0;

WHILE [#1 GE -15] DO1;

#2=SQRT〔-#1*5/3〕;

G01 X〔2*#2 더하기 30〕Z〔#1〕;

#1=#1-1;

끝1;

G00 X42;

N20 G00 G40 Z2;

G70 P10 Q20;

G00 X200;

Z200;

M5;

M30;

(4) WHILE문과 IF문의 차이점

1) 두 진술의 방향이 다르다

WHILE 문은 거꾸로 반환합니다.

예: WHILE〔#1 GE 20〕DO1;

G01 X〔#1〕F0.2;

공작 기계가 #1=20 문장을 실행할 때 계속 실행된다고 가정합니다. #1=#1-1 실행 후 #1의 값은 19가 되어 더 이상 제약 조건을 만족하지 못하므로 리턴하지 않는다. (X 방향으로 20으로 자른다)

G00 X〔#1 더하기 1);

#1=#1-1;

끝1;

2) IF 문이 앞으로 돌아갑니다.

예: N1 #2=#2-1;

G01X〔#2〕F0.2; 공작 기계가 이 문장을 실행할 때 #2=20라고 가정하면 IF〔#2 GE 20〕GOTO1까지 계속 실행됩니다. 조건이 여전히 만족되면 계속해서 N1# 2=#2-1로 돌아갑니다. 현재 X 값은 19가 되어 더 이상 제약 조건을 충족하지 않고 다른 실행

G01X〔#2〕F0.2; 마지막으로 다음 프로그램을 실행합니다. (X 방향은 19로 잘렸습니다.)

G00X〔#2 + 1);

IF [#2 GE 20] GOTO1;

3) 위의 그루빙 프로그램에서 알 수 있듯이 WHILE문에 비해 IF문의 워드수가 훨씬 적다.

4) 리턴 방향이 다르기 때문에 WHILE 문은 한 문장 덜 읽고 IF 문은 한 문장 더 읽어서 처리한다.

04

SIEMENS 시스템(선반) 매크로 프로그램 적용

참고: 매크로 프로그램은 변수로 프로그래밍되며 Siemens 시스템의 변수 번호는 R로 표시됩니다.

예를 들어 일반적인 프로그래밍 방법으로 작성: G01X-10

매크로 프로그램은 다음과 같이 표현할 수 있습니다.

R1=-10

G01 X=R1

조건부 이전:

IF GOTOB: 뒤로 점프

IF GOTOF: 앞으로 점프

공통 프로그래밍으로 작성

GO1X100

변수는 다음과 같이 표현할 수 있습니다.

R1=0

AA: R1=R1 + 1

G01X=R1

R1이면<100 GOTOB AA

R1은 독립변수로 초기값은 0이고, R1=R1에 1을 더하면 독립변수의 증분값이 1이라는 의미이며, 프로그램이 매번 이 줄을 지날 때마다 R1은 1씩 증가, R1은<100 is a conditional expression, IF R1<100 GOTOB AA This line means that if the argument R1<100, the program jumps backward to the mark: AA

R1이 100보다 크거나 같으면 프로그램이 중단됩니다.

매크로 프로그램은 G90 및 G91 모드 모두에서 사용할 수 있지만 그 의미는 다릅니다.

R1=0, G90R1=R1 + 1, G1X=R1, 이 프로그램의 두 번째 패스 후 X 값은 2입니다.

R1=0, G91R1=R1 + 1, G1X=R1, 프로그램의 두 번째 통과 후 X 값은 3입니다. 설명: 첫 번째 통과 후 R1의 값은 1입니다. 프로그램의 패스이고 R1의 값은 두 번째 패스 2이지만 G91 모드에서는 이전 것을 기준으로 합니다.

(1) 홈 가공

그림

T1

TC

T1D1

G0G40X100Z100

M03S1000

G0X54Z2

시작점에 빠르게 도달

Z-10

R1=3

블레이드 너비를 3mm로 정의

R2=-10-R1-0.2

도구의 시작점은 -10이며 블레이드의 왼쪽은 도구를 설정할 때 사용됩니다.

공구 세팅이므로 블레이드 너비를 빼야 합니다. 0.2는 정삭 여유입니다.

G1Z=R2F0.1

공구가 Z축의 시작점에 도달합니다.

AA:R2=R2-2.5

R3=50

그루브의 X축이 포인트에 도달합니다.

BB: R3=R3-2

각 나이프의 절단 깊이를 2mm로 정의

G1X=R3

X=R3 플러스 1

02mm 절입 깊이마다 한쪽에서 .5mm 칩 제거

IF R3>30 + 0.4 GOTOB BB

Define the groove depth as 10mm, if R3>30mm, 프로그램은 마크 BB까지 뒤로 점프하고 0.4는 정삭 여유입니다.

G0X50

공구가 X축의 시작점에 도달합니다.

G1Z=R2

IF R2>{{0}} + 0.2 GOTOB AA

홈 너비를 20mm로 정의하고 0.2는 정삭 여유

G0X50

G01Z-13

마무리 손질

X30

Z-16

G0X50

Z-30

G01X30

Z-16

G0X50

철회하다

G0X100

Z100

M05

M30

(2) 타원

1) 기본 형식

R1=0

0의 초기값으로 변수 R1을 정의합니다.

AA:R2=b×SQRT(1-R1×R1/a×a)

타원 방정식에 따르면 a는 타원의 장반경, b는 타원의 단축, SQRT는 제곱근 기호입니다.

G1X=±2×R2 + XZ=R1-Z

타원의 위치와 모양을 설정하고 2는 볼록, -2은 오목, X, Z는 공작물 축과 타원 축(직경 시스템) 사이의 거리입니다.

R1=R1-1

처리 단계 설정

IF R1>=n ​​GOTOB AA

변수 R1

2) 프로그래밍 예:

그림

T1D1

G0G40X100Z100

M3S1000

G0X52Z2

Z-20

CYCLE95 ( )

G42S1500

OO:

R1=20

AA:R2=5×SQRT(1-R1×R1/400)

G1X=-2×R2 + 50 Z=R1-40

R1=R1-2

IF R1>=-20 GOTOB AA

PP:X42

G0G40X100Z100

M05

M09

M30

(3) 포물선

1) 기본 형식:

R1=0

변수 R1의 초기값을 0로 설정

AA: R2=SQRT(-R1×n)

포물선의 기본 형식에 따라 구합니다. 여기서 SQRT는 제곱근 기호이고 n은 계수입니다.

G01X=2×R2 더하기 n

Z=R1

처리 경로에 2를 더하면 볼록, n은 X축 시작점의 값입니다.

R1=R1-1

가변 증분 값은 1mm입니다.

IF R1>-30 GOTOB AA

If the variable R1>-30, 프로그램이 AA 표시로 뒤로 이동합니다.

2) 프로그래밍 예:

그림

T1

TC

T1D1

G0G40X100Z100

M03S1000

G0X52Z2

CYCLE95 ( )

G0G42

OO:

R1=0

AA:R2=SQRT(-R1×5/3)

G01X=2×R2 + 30 Z=R1

R1=R1-2

IF R1>-60 GOTOB AA

PP: X52

G0X100Z100

M05

M30

문의 보내기

whatsapp

skype

이메일

문의