오늘날 많은 CNC 기술자는 매크로 프로그램을 이해하지 못합니다. 그들은 자동 프로그래밍 소프트웨어를 사용하면 매크로 프로그램을 배울 필요가 없다고 생각합니다. 실제로 매크로 프로그램의 기능은 매우 강력합니다. 예를 들어 일부 일괄 및 반복 프로그램을 작성하려면 매크로 프로그램을 사용할 때 몇 가지 데이터만 변경하면 됩니다. 많은 수의 반복 프로그래밍이 필요하지 않아 작업을 크게 단순화하고 작업 효율성을 크게 향상시킬 수 있습니다.
매크로 프로그램은 변수를 사용하여 산술 연산, 논리 연산 및 함수의 혼합 연산을 수행하고 루프 문, 분기 문 및 서브루틴 호출 문을 제공할 수도 있습니다.
일반적으로 매크로 프로그램은 그래픽은 같지만 크기가 다른 일련의 부품을 프로그래밍하는 데 적합합니다. 프로세스 경로는 같지만 위치 매개변수가 다른 일련의 부품을 프로그래밍하는 데 적합합니다. 보간 명령 없이 포물선, 타원, 쌍곡선 및 기타 곡선의 프로그래밍에 적합합니다.
01
변수의 표현과 사용
1. 변수 표현
#I(I=1,2,3,…) 또는 #[
예: #5, #109, #501, #[#1 더하기 #2-12]
두 번째, 변수 사용
1. 주소 단어 뒤에 변수 번호 또는 수식 지정
체재:
여기서 "I"는 변수 번호를 나타냅니다.
예: F#103, #103=15인 경우 F15
Z-#110, #110=250인 경우 Z-250
X[#24 더하기 #18*COS[#1]]
2. 변수 번호는 변수로 대체 가능
예: #[#30], #30=3인 경우 #3이 됩니다.
3. 변수는 주소 O, N, I를 사용할 수 없습니다.
예: 다음 메서드가 허용됩니다.
O#1;
I#2 6.00×100.0;
N#3 Z200.0;
4. 변수 번호에 해당하는 변수는 각 주소에 대해 특정 값 범위를 가집니다.
예: #30=1100인 경우 M#30은 허용되지 않습니다.
5. #0은 빈 변수이며 정의된 변수 값이 없는 변수도 빈 변수입니다.
6. 변수 값 정의:
프로그램을 정의할 때 소수점을 생략할 수 있습니다. 예: #123=149
02
변수 유형
WeChat에 사진 추가: mvm9987이 CNC 튜토리얼을 보냅니다.
1. 지역 변수 #1~#33
매크로 프로그램에서 로컬로 사용되는 변수로 그 연산 결과는 다른 프로그램에서 사용할 수 없습니다.
예: A 매크로 프로그램 B 매크로 프로그램
...
#10=20 X#10은 X20을 의미하지 않습니다.
...
전원이 꺼지면 지워지고 매크로 프로그램이 호출되면 변수 값이 채워집니다.
2. 공용 변수 #100~#199, #500~#999
각 사용자 매크로 프로그램의 공통 변수는 모든 프로그램 호출에서 동일한 연산 결과를 가집니다.
예: 위 예에서 10번을 100번으로 변경하면
X#100은 X20을 의미합니다.
#100~#149 전원을 끄면 비어 있음
#500~#531 영구 변수(전원을 꺼도 손실되지 않음)
3. 시스템 변수
값이 시스템 상태에 따라 달라지는 고정 목적 변수
예: #2001은 1번 공구 보정의 X축 보정 값입니다.
#5221 값은 X축 G54 공작물 원점 오프셋 값입니다.
입력 시 소수점을 반드시 입력하여야 하며, 소수점 생략 시 단위는 μm 입니다.
03
작동 지침
표현식의 오른쪽은 상수, 변수, 함수, 표현식이 될 수 있습니다.
수식에서 #j와 #k도 상수가 될 수 있습니다.
표현식의 오른쪽은 변수 번호, 표현식
4. 기능
그림
1) 각도는도 단위입니다.
예: 90도와 30분은 90.5도
2) ATAN 함수 뒤의 두 변 길이는 "/"로 구분해야 합니다.
예: #{{0}}ATAN[1]/[-1], #1은 35.0입니다.
3) 스테이트먼트 내 주소는 ROUND로 사용하며, 각 주소의 최소 설정 단위에 따라 반올림
예: #1=1.2345, #2=2.3456 설정, 설정 단위는 1μm
G91 X-#1; X-1.235
X-#2 F300; X-2.346
X[#1 더하기 #2]; X3.580
반환되지 않으며 다음으로 대체되어야 합니다.
X[ROUND[#1] + ROUND[#2]];
4) 반올림 후 절대값이 원래 값보다 크면 반올림, 그렇지 않으면 내림
예: #1=1.2인 경우 #2=-1.2
#{0}}FUP[#1]인 경우 #3=2.0
#{0}}FIX[#1]인 경우 #3=1.0
#{0}}FUP[#2]인 경우 #3=-2.0
#{0}}FIX[#2]인 경우 #3=-1.0
5) 함수 명령 시 처음 두 글자만 쓸 수 있다.
예: ROUND→RO
FIX→FI
6) 우선순위
기능 → 곱셈과 나눗셈(*, 1, AND) → 덧셈과 뺄셈( 더하기 , -, OR, XOR)
예: #1=#2 더하기 #3*SIN[#4];
7) 괄호는 대괄호로 최대 5회까지이며 괄호는 주석문에 사용한다.
예: #1=SIN[[[#2 더하기 #3]*#4 더하기 #5]*#6]; (3가지 가중치)
04
분기 및 루프 명령어
1. 무조건 편입
형식: GOTO n;
블록 n으로 무조건 분기
n: 블록 번호(1-99999)
n은 변수 또는 표현식으로 대체될 수도 있습니다.
goto10;
GOTO #10;
2. 조건부 편입
만약에 [
만약
만족하지 않으면 다음 블록을 실행합니다.
만약에 [
만약
IF[#1EQ #2] THEN #3=0;
조건식:
그림
#j 및 #k는 다음으로 대체할 수도 있습니다.
예: IF[#1 GT 10] GOTO 100;
…
N100 G00 G91 X10;
예: 1에서 10까지의 합 구하기
O9500;
#1=0
#2=1
N1 IF [#2 GT10] GOTO 2
#1=#1 더하기 #2;
#2=#2 더하기 1;
고토 1
N2 M30
3. 주기
형식: WHILE[
…
…
…
ENDm
1. 조건이 만족되면 DOm을 ENDm까지 실행한 후 DOm의 프로그램 세그먼트에서 실행
만족하지 않으면 ENDm 이후 프로그램 세그먼트 실행
2. WHILE 문을 생략하고 DOm...ENDm만 있으면 DOm에서 ENDm까지 무한 루프가 형성됩니다.
3. 중첩
4. EQ NE, 비어 있음 및 "0"은 다릅니다.
다른 곳에서는 null이 "0"와 동일합니다.
예: 1에서 10까지의 합 구하기
O0001;
#1=0;
#2=1;
WHILE [#2LE10] DO1;
#1=#1 더하기 #2;
#2=#2 더하기 #1;
끝1;
M30;




