간단히 말해서 매크로는 수식을 사용하여 부품을 처리하는 것입니다. 예를 들어, 타원, 매크로가 없으면 곡선 위의 점을 한 점씩 계산한 다음 천천히 직선으로 근사해야 합니다. 평활도가 높은 공작물이라면 많은 점을 계산해야 하는데 매크로를 적용한 후 타원 공식을 시스템에 입력한 다음 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




