CNC 프로그램은 주로 G코드 (준비 명령어, Preparatory Codes)와 M코드 (기타 명령어, Miscellaneous Codes)로 구성됩니다. G코드는 공구의 이동, 보간, 좌표계 등을 제어하며, M-code는 스핀들, 쿨런트, 프로그램 흐름 등 기계의 보조 기능을 제어합니다.
대부분의 CNC 기계(특히 Fanuc, Haas, Siemens 등)는 ISO 6983 표준을 기반으로 하며, 제조사에 따라 약간의 차이가 있을 수 있습니다. 아래는 일반적으로 사용되는 명령어를 분류별로 정리한 것입니다. 각 명령어에 간단한 설명과 예시를 추가했습니다.

1. G코드 분류 (준비 명령어)
G코는 모달(Modal: 한 번 지정하면 취소될 때까지 유지)과 논모달(Non-modal: 한 블록만 유효)로 나뉩니다. 그룹으로 분류되며, 같은 그룹 내에서 마지막 명령어가 우선합니다.
이동 관련 명령어 (Motion Group, 그룹 01)
- G00: 급속 이동 (Rapid Traverse). 절삭 없이 빠르게 위치 이동.
- 예시:
G00 X100 Y50 Z10;(X100, Y50, Z10으로 급속 이동) - G01: 직선 보간 (Linear Interpolation). 지정된 이송 속도로 직선 이동.
- 예시:
G01 X200 Y100 F200;(F200 속도로 직선 이동) - G02: 시계 방향 원호 보간 (Circular Interpolation CW).
- 예시:
G02 X100 Y100 I50 J0 F150;(중심偏移 I,J 사용) - G03: 반시계 방향 원호 보간 (Circular Interpolation CCW).
- 예시:
G03 X100 Y100 R50 F150;(반경 R 사용)
평면 선택 (Plane Selection, 그룹 02)
- G17: XY 평면 선택 (밀링 기본).
- G18: XZ 평면 선택 (선반 기본).
- G19: YZ 평면 선택.
- 예시:
G17;(XY 평면으로 원호 보간)
단위 설정 (Units, 그룹 06)
- G20: 인치 단위 (Inch).
- G21: 밀리미터 단위 (mm, 기본).
- 예시:
G21;(mm 단위 설정)
좌표계 및 프로그래밍 모드 (Coordinate System, 그룹 03/12 등)
- G90: 절대 좌표 (Absolute Programming).
- 예시:
G90 X100;(원점부터 X100) - G91: 증분 좌표 (Incremental Programming).
- 예시:
G91 X50;(현재 위치에서 +50) - G54 ~ G59: 작업 좌표계 선택 (Work Offset).
- 예시:
G54;(첫 번째 작업 좌표계 사용)
공구 보정 (Tool Compensation, 그룹 07/08)
- G40: 공구 반경 보정 취소.
- G41: 좌측 공구 반경 보정 (Cutter Compensation Left).
- G42: 우측 공구 반경 보정 (Right).
- 예시:
G41 D01;(D01에 저장된 반경 보정 적용) - G43/G44: 공구 길이 보정 (Tool Length Compensation).
- G49: 공구 길이 보정 취소.
이송 모드 (Feed Mode, 그룹 05)
- G94: 분당 이송 (Feed per Minute).
- G95: 회전당 이송 (Feed per Revolution, 선반常用).
- G93: 역시간 이송 (Inverse Time Feed).
스핀들 속도 제어 (Spindle, 그룹 02 일부)
- G96: 정면 속도 제어 (Constant Surface Speed).
- G97: 정회전 속도 제어 취소 (Constant RPM).
- 예시:
G96 S200;(표면 속도 200m/min 유지)
캔드 사이클 (Canned Cycles, 그룹 09) – 밀링/선반 반복 작업 간소화
- G81: 드릴링 사이클 (Drilling).
- 예시:
G81 Z-10 R2 F100;(Z-10까지 드릴, R은 안전 높이) - G82: 카운터보어링 (Dwell 포함).
- G83: 펙 드릴링 (Chip Breaking).
- G84: 탭핑 (Tapping).
- G76: 나사 절삭 사이클 (선반).
- G80: 캔드 사이클 취소.
기타 유용한 G코드
- G04: 드웰 (Dwell, 정지 시간).
- 예시:
G04 P2;(2초 정지) - G28: 홈 위치 복귀 (Reference Return).
- 예시:
G28 U0 W0;(중간점 통해 홈으로) - G10: 데이터 설정 (Offset 입력).
2. M-code 분류 (기타 명령어)
M-code는 주로 기계 보조 기능을 제어하며, 대부분 논모달입니다.
프로그램 제어
- M00: 프로그램 일시 정지 (Program Stop).
- M01: 선택적 정지 (Optional Stop).
- M02/M30: 프로그램 종료 (End of Program, M30은 테이프 rewind).
- M98: 서브프로그램 호출.
- 예시:
M98 P1000;(O1000 프로그램 호출) - M99: 서브프로그램 종료 및 복귀.
스핀들 제어
- M03: 스핀들 정회전 (CW).
- M04: 스핀들 역회전 (CCW).
- M05: 스핀들 정지.
- 예시:
M03 S2000;(2000 RPM 정회전)
쿨런트 제어
- M07: 미스트 쿨런트 온 (Mist).
- M08: 플러드 쿨런트 온 (Flood).
- M09: 쿨런트 오프.
공구 교환
- M06: 공구 교환 (Tool Change).
- 예시:
M06 T05;(5번 공구로 교환)
기타
- M19: 스핀들 방향 지정 (Oriented Spindle Stop).
- M48/M49: 이송/스핀들 오버라이드 허용/취소.
주의사항
- 모달 명령어: G코드 대부분은 모달이므로, 변경할 때만 다시 지정.
- 예시 프로그램 기본 구조:
O0001 (프로그램 번호)
G21 G17 G40 G49 G80 (초기 설정: mm, XY 평면, 보정 취소)
G90 (절대 좌표)
T01 M06 (1번 공구 교환)
S2000 M03 (스핀들 2000 RPM 정회전)
G00 X0 Y0 Z5 (급속 이동)
G01 Z-10 F100 (절삭 시작)
…
M30 (프로그램 종료)
- 모든 명령어가 모든 기계에서 동일하게 작동하지 않을 수 있습니다. 기계 매뉴얼을 반드시 확인하세요 (Fanuc이 가장 일반적).
- 고급 기능(매크로, 고속 가공 등)은 기계별 옵션입니다.
이 설명은 일반적인 Fanuc/Haas 기반을 기준으로 하며, 실제 프로그래밍 시 CAM 소프트웨어(Fusion 360 등)를 활용하면 편리합니다.