G코드 마스터하기: CNC 기계의 언어

프로그래밍은 자동화와 새 기술이 프로그래밍 작업을 대체하는 듯해도, 모든 유형의 CNC 가공에 필수적인 기술입니다. 모든 머시니스트는 여전히 자신의 프로그램과 공구가 어떻게 작동하는지 이해할 필요가 있습니다. CNC 프로그래밍과 그 가장 일반적인 언어인 G코드를 처음 접하든, 수년간 직접 코드를 짜왔든, CNC 코드는 여전히 낯선 언어처럼 느껴질 수 있습니다. 더 안 좋은 건, 모든 기계가 이해해야 할 각기 다른 방언을 말한다는 점입니다. 그들이 무슨 말을 하는지 이해하시나요? 고품질 제품을 생산하는 프로그램을 효율적으로 이해하고 작성하는 데 필요한 G코드 프로그래밍 기초를 소개합니다.
G코드란 무엇인가?
G코드는 기계가 어디로 어떻게 움직일지 지시하는 CNC용 프로그래밍 언어입니다. 대부분의 기계는 G코드의 다른 '방언'을 구사하므로, 코드는 유형, 제조사, 모델에 따라 다릅니다. 각 기계에는 해당 기계의 특정 기능에 대한 코드를 보여주는 지침서가 함께 제공됩니다.
G코드는 '기하학적 코드(geometric code)'를 의미하며, 다음과 같은 영숫자 패턴의 변형을 따릅니다:
N## G## X## Y## Z## F## S## T## M##
N: 행 번호
G: 동작
X: 수평 위치
Y: 수직 위치
Z: 깊이
F: 이송 속도
S: 스핀들 속도
T: 공구 선택
M: 기타 기능
I 및 J: 원호의 증분 중심점
R: 원호 반경
영숫자 코드가 G코드 프로그래밍에 쓰이는 이유는 다음과 같은 간단한 방법이기 때문입니다:
- 동작과 기능 정의 (G##)
- 위치 선언 (X## Y## Z##)
- 값 설정 (F## 및/또는 S##)
- 항목 선택 (T##)
- 무언가 켜고 끄기 (M##), 예: 쿨런트, 스핀들, 인덱싱 모션, 축 잠금 등
예를 들어,
G01 X1 Y1 F20 T01 M03 S500
은 일반적으로 주어진 XY 위치로 이송 이동(G01)을 하며 이송 속도 20으로 이동함을 나타냅니다. 공구 1을 사용하고 스핀들 속도는 500입니다. 기타 기능(M코드)은 기계마다 다르므로, 특정 기계의 지침서를 참조해 M코드 의미를 알아야 합니다.
기계 동작
기계가 할 수 있는 모든 건 세 가지 기본 동작 유형에 기반합니다:
- 급속 이동(Rapid move): 가능한 한 빠르게 XYZ 위치로 선형 이동
- 이송 이동(Feed move): 정의된 이송 속도로 XYZ 위치로 선형 이동
- 원호 이동(Circular move): 정의된 이송 속도로 원호 이동
모든 G코드는 기계에 이 기본 동작의 어떤 변형을 수행할지, 어떻게 수행할지 지시합니다.
X와 Y는 수평/수직 위치를 위한 데카르트 좌표이고, Z는 기계의 깊이를 나타냅니다. 이 영숫자는 동작/기능 명령(G) 뒤에 따라 위치를 선언합니다.
다음으로 F는 이송 속도(이송 이동 또는 원호 이동용)를 결정하고, S는 스핀들 속도를 결정합니다. T는 공구 선택용입니다. 프로그래밍에 쓰이는 다른 영숫자로는 I, J, R이 있는데, 원호 중심과 반경과 관련됩니다.
기타 코드(M코드)
프로그램 행에는 기계에 동작 수행 방법을 지시하는 M코드도 포함될 수 있습니다. 기계 간 동일함이 보장되진 않지만, 몇 가지 일반적 표준 M코드는:
- M00: 프로그램 정지
- M01: 선택적 프로그램 정지
- M02: 프로그램 끝
- M03: 스핀들 시계 방향 회전
- M04: 스핀들 반시계 방향 회전
- M05: 스핀들 정지
- M06: 공구 교환
- M08: 플러드 쿨런트 켜기
- M09: 플러드 쿨런트 끄기
- M30: 프로그램 끝/시작점으로 복귀
- M41: 스핀들 저단 기어 범위
- M42: 스핀들 고단 기어 범위
양태(Modality)
불을 끄기 전까지 켜져 있는 것처럼, G코드 기능(양태를 지원하는 컨트롤러에서)은 다른 코드로 비활성화될 때까지 활성 상태를 유지합니다. 즉, 한 번에 하나의 기능만 활성화될 수 있습니다. 기능을 비활성화하려면 새 기능을 선택하면 됩니다.

예를 들어, 코드가 X1 Y1에서 급속 선형 이동(G00 X1 Y1)으로 시작한다고 합시다. 다음 기능도 급속 선형 이동이라면 G00을 다시 쓸 필요 없습니다. 다음 줄에 새 위치(예: X2 Y2)만 있으면 됩니다. 양태 조건(modal condition)이 같기 때문입니다. 그다음 선형 이송(G01)으로 기능을 바꾸려면, 다음 줄에 G01을 프로그래밍해 급속 이동을 비활성화하고 선형 이송을 활성화하면 됩니다.
한 번 조건이 설정되면, 꺼지거나 다른 조건이 덮어쓸 때까지 활성 상태를 유지합니다.
고정 사이클(Canned Cycles)
고정 사이클은 일반적인 작업을 완료하는 데 필요한 모든 동작을 하나의 코드에 통합한 양태 조건의 일종입니다.

예를 들어 G81은 기본 드릴링 기능 코드인 경우가 많습니다. 기본 드릴링의 경우 공구는 1) 구멍 위치의 시작점으로 이동, 2) 클리어런스 평면으로 급속 이동, 3) 깊이까지 이송, 4) 급속 복귀를 해야 합니다. 프로그램에서 4줄 코드가 필요하고, 새 드릴 위치마다 반복해야 합니다! 고정 사이클 G81을 쓰면 활성화 후 구멍 위치만 지정하면 됩니다. 고정 사이클인 G81이 여러 동작을 하나의 코드에 통합해 코드 양을 크게 줄여줍니다.

G코드에는 펙 드릴링(peck drilling), 카운터 보링(counter boring), 탭핑(tapping)용 다른 일반적 고정 사이클도 있습니다.
양태 코드 그룹(Modal Code Groups)
양태 코드 그룹은 한 줄에 여러 코드를 허용하지만, 각 그룹에서 하나의 코드만 한 줄에 올 수 있습니다. 그룹 내 코드들이 서로 덮어쓰기 때문입니다.
G코드의 양태 그룹은:
- 그룹 1 (동작): G00, G01, G02, G03, G80, G81, G82, G84, G85, G86, G87, G88, G89
- 그룹 2 (평면 선택 – XY, YZ, ZX): G17, G18, G19
- 그룹 3 (절대/증분 모드): G90, G91
- 그룹 5 (이송 속도 모드): G93, G94
- 그룹 6 (단위 – 인치/밀리미터): G20, G21
- 그룹 7 (커터 반경 보정 – CRC): G40, G41, G42
- 그룹 8 (공구 길이 보정 – TLO): G43, G49
- 그룹 10 (고정 사이클 복귀 모드): G98, G99
- 그룹 12 (작업 좌표계 선택 – WCSS): G54, G55, G56, G57, G58, G59

포스트프로세서
포스트프로세서는 컴퓨터 화면의 툴패스 계산 이미지를 기계 제어용 언어로 번역하는 번역기입니다. 본인 기계와 가까운 샘플 프로그램을 찾아 프로그램을 수정해 본인 기계에 정확히 맞게 만들면 포스트프로세서를 만들 수 있습니다.
G코드 프로그래밍 팁
- 일부 기계와 컨트롤러는 공백을 무시합니다. G01 X1 Y1 Z1과 G01 X1Y1Z1이 같은 뜻일 수 있습니다.
- Z축은 위 방향이 양수입니다. Z1은 공구를 올리고, Z-1은 공구를 내립니다.
- 본인 기계의 G코드 방언이 선행 영(leading zero) 필수 여부를 정합니다(G01 vs G1).
- 방언은 소수점 필수 여부도 정합니다(예: G01 X1. Y1. Z0.5).
- 기계 매뉴얼에 딸린 샘플 프로그램을 큰 프로그램 시도 전에 실행해 보는 게 좋습니다. 샘플 프로그램이 안 도는 경우가 많아 이슈를 기록하고 자체 벤치마크를 설정해야 합니다.
G코드 시작하기
G코드로 기계 프로그래밍을 시작할 준비 되셨나요? 본인 기계의 고유 코딩 차트 검토로 시작하세요. 모든 기계는 조금씩 다릅니다. 하스(Haas)의 기능 코드가 아닐람(Anilam)의 같은 기능 코드와 다를 수 있습니다. 본인 기계가 원하는 작업을 수행하는 데 쓰는 코드가 무엇인지 알아야 합니다.
프로그램은 보통 초기화 코드(%)로 시작하고, 프로그램 번호가 옵니다. 그다음 안전 코드 줄, 공구 교환 줄이 옵니다. 적절한 공구를 기계에 장착하고 속도를 설정합니다. 프로그램의 대부분은 기계 이동과 위치 지정입니다.
행 번호를 쓴다면 최소 5 단위로 증가시켜 라벨링하는 게 좋습니다. 나중에 코드 줄을 추가해야 할 때 줄 번호가 여전히 순서대로 유지됩니다.
G코드 프로그래밍을 마치면, 보통 기계가 다음 번을 위해 준비되도록 정지하고 리셋하는 일련의 기능으로 프로그램을 끝냅니다.
올바르게 사용하면 G코드는 CNC 머시니스트에게 귀중한 도구로, 기계 역량을 최대한 활용하게 합니다. Fusion 360 같은 통합 CAD/CAM 솔루션이 CNC 코딩 과정을 지속적으로 간소화해, G코드로 직접 부품을 프로그래밍할 필요가 없습니다. G코드 프로그래밍으로 고품질 부품 생산이 그 어느 때보다 빨라졌습니다.
