CNC 프로그램과 NC코드 G코드 M코드 이해하기
CNC(Computer Numerical Control) 프로그램은 공작물을 가공하기 위해 공작기계에 명령을 내리는 코드를 생성하는 프로그램입니다. 이때 사용하는 코드가 바로 NC코드(Numerical Control Code)입니다.
노랗목차
그리고 이러한 CNC코드는 기계의 움직임을 제어하고 특정 작업을 수행하는 다양한 명령어들로 구성되는데 그게 G코드와 M코드로 나뉩니다.
NC코드의 구성 요소
우선 NC코드는 크게 G코드와 M코드로 나눌 수 있습니다.
G코드 (G-Code)
G 코드 | 명령어 | 설명 |
---|---|---|
G00 | 위치결정 | 공구를 급속도로 지정한 위치로 이동시킵니다. |
G01 | 직선보간 | 공구를 지정한 직선 경로를 따라 이동시킵니다. |
G02 | 원호보간/헬리컬 보간 (시계방향) | 공구를 시계방향으로 원호 또는 헬리컬 경로를 따라 이동시킵니다. |
G03 | 원호보간/헬리컬 보간 (반시계방향) | 공구를 반시계방향으로 원호 또는 헬리컬 경로를 따라 이동시킵니다. |
G04 | 휴지(드웰)/이그잭트 스톱 | 공구의 이동을 일시적으로 멈춥니다. |
G07.1 | 원통형보간 | 원통형 보간을 수행합니다. |
G08 | 선행제어 | 공구의 이동을 원활하게 하기 위해 선행 제어를 활성화합니다. |
G09 | 이그잭트 스톱 (Exact stop) | 공구의 이동을 즉시 멈춥니다. |
G10 | 데이터 설정 | 기계 설정 데이터를 입력합니다. |
G11 | 데이터 설정 모드 취소 | 데이터 설정 모드를 취소합니다. |
G17 | XY 평면 설정 | XY 평면을 가공 기준 평면으로 설정합니다. |
G18 | ZX 평면 설정 | ZX 평면을 가공 기준 평면으로 설정합니다. |
G19 | YZ 평면 설정 | YZ 평면을 가공 기준 평면으로 설정합니다. |
G20 | 인치 데이터 입력 | 인치 단위로 좌표 데이터를 입력합니다. |
G21 | 메트릭 데이터 입력 | 미터법 단위로 좌표 데이터를 입력합니다. |
G27 | 원점 복귀 검사 | 원점 복귀를 확인합니다. |
G28 | 자동 원점 복귀 | 자동으로 원점으로 복귀합니다. |
G29 | 원점으로 복귀 | 원점으로 복귀합니다. |
G30 | 제2, 3, 4 원점 복귀 | 지정된 두 번째, 세 번째, 네 번째 원점으로 복귀합니다. |
G31 | 스킵 기능 | 지정된 조건이 충족되면 공구 이동을 멈춥니다. |
G40 | 공구경 옵셋 취소 | 공구경 옵셋 보정을 취소합니다. |
G41 | 공구경 옵셋 보정, 왼쪽 | 공구경 보정을 왼쪽으로 설정합니다. |
G42 | 공구경 옵셋 보정, 오른쪽 | 공구경 보정을 오른쪽으로 설정합니다. |
G43 | 공구 길이 옵셋, + | 공구 길이 보정을 더합니다. |
G44 | 공구 길이 옵셋, – | 공구 길이 보정을 뺍니다. |
G49 | 공구 길이 옵셋 보정 취소 | 공구 길이 보정을 취소합니다. |
G52 | 지역 좌표계 설정 | 지역 좌표계를 설정합니다. |
G53 | 기계 좌표계 선택 | 기계 좌표계를 선택합니다. |
G54 | 공작물 좌표계 1 선택 | 첫 번째 공작물 좌표계를 선택합니다. |
G55 | 공작물 좌표계 2 선택 | 두 번째 공작물 좌표계를 선택합니다. |
G56 | 공작물 좌표계 3 선택 | 세 번째 공작물 좌표계를 선택합니다. |
G57 | 공작물 좌표계 4 선택 | 네 번째 공작물 좌표계를 선택합니다. |
G58 | 공작물 좌표계 5 선택 | 다섯 번째 공작물 좌표계를 선택합니다. |
G59 | 공작물 좌표계 6 선택 | 여섯 번째 공작물 좌표계를 선택합니다. |
G61 | Exact stop mode | 공구의 이동을 정밀하게 멈추도록 설정합니다. |
G63 | 탭핑 모드 | 탭핑 작업을 수행하도록 설정합니다. |
G64 | 절삭 모드 (exact stop check mode) | 절삭 작업을 원활하게 수행하도록 설정합니다. |
G65 | 마크로 호출 | 지정된 매크로를 호출합니다. |
G66 | 매크로 모달 호출 | 매크로 모달 호출을 설정합니다. |
G67 | 매크로 모달 호출 취소 | 매크로 모달 호출을 취소합니다. |
G68 | 좌표 회전 | 지정된 각도로 좌표를 회전시킵니다. |
G69 | 좌표 회전 취소 | 좌표 회전을 취소합니다. |
G72.1 | 회전 Copy | 공작물을 회전하여 복사합니다. |
G72.2 | 평행 Copy | 공작물을 평행하게 복사합니다. |
G73 | 고속 심공 싸이클 | 고속으로 깊은 구멍을 드릴링합니다. |
G74 | 역회전 탭 싸이클 | 역회전하여 탭 싸이클을 수행합니다. |
G76 | 파인 보링 싸이클 | 정밀 보링 싸이클을 수행합니다. |
G80 | 홀 가공 고정 싸이클 취소 | 홀 가공 고정 싸이클을 취소합니다. |
G81 | 스폿 드릴링 싸이클 | 스폿 드릴링 싸이클을 수행합니다. |
G82 | 카운터 보링 싸이클 | 카운터 보링 싸이클을 수행합니다. |
G83 | 심공 드릴링 싸이클 | 깊은 구멍 드릴링 싸이클을 수행합니다. |
G84 | 탭핑 싸이클 | 탭핑 싸이클을 수행합니다. |
G85 | 보링 싸이클 | 일반 보링 싸이클을 수행합니다. |
G86 | 보링 싸이클 | 보링 싸이클을 수행하고 스핀들을 멈춥니다. |
G87 | 백 보링 싸이클 | 보링 후 후퇴하는 싸이클을 수행합니다. |
G88 | 보링 싸이클 | 보링 싸이클을 수행하고 일시 정지합니다. |
G89 | 보링 싸이클 | 보링 싸이클을 수행하고 느리게 후퇴합니다. |
G90 | 절대 지령 | 절대 좌표계를 사용합니다. |
G91 | 증분 지령 | 증분 좌표계를 사용합니다. |
G92 | 주축 최고 회전 속도 설정 | 주축의 최대 회전 속도를 설정하고 공작물 좌표계를 변경합니다. |
G92.1 | Work 좌표계 Preset | 현재 위치를 기준으로 공작물 좌표계를 설정합니다. |
G94 | 분당 이송 | 분당 이송 속도를 설정합니다. |
G98 | 초기점 복귀 | 고정 싸이클 완료 후 초기점으로 복귀합니다. |
G99 | R점 복귀 (홀 가공 고정 싸이클) | 고정 싸이클 완료 후 R점으로 복귀합니다. |
G코드는 기계의 동작을 지시하는 명령어로, 주로 공구의 이동과 가공 방법을 지정합니다. 주요 G코드는 다음과 같습니다.
- G00: Rapid positioning (급이송)
공구를 최대 이송 속도로 빠르게 이동시킵니다. 속도를 0%, 25%, 50%, 100%로 조절할 수 있습니다. - G01: Linear interpolation (직선 보간)
공구를 점과 점 사이를 직선으로 이동시킵니다. - G02: Circular interpolation (시계 방향 원호 보간)
공구를 시계 방향으로 원호 운동시킵니다. - G03: Circular interpolation (반시계 방향 원호 보간)
공구를 반시계 방향으로 원호 운동시킵니다. - G04: Dwell (일시정지)
공구의 이동을 일시적으로 정지합니다. 예를 들어,G04 X2.5
는 2.5초 동안 정지합니다. 여기서 X와 U는 초(sec) 단위, P는 밀리초(msec) 단위입니다. - G17: XY Plane selection (XY 평면 선정)
2차원 밀링에서 사용하는 기준 평면입니다. - G18: ZX Plane selection (ZX 평면 선정)
NC선반에서 사용하는 기준 평면입니다. - G19: YZ Plane selection (YZ 평면 선정)
YZ 평면을 기준으로 설정합니다. - G20: Inch input (인치 입력)
- G21: Millimeter input (밀리미터 입력)
- G90: Absolute positioning (절대 좌표)
- G91: Incremental positioning (상대 좌표)
- G92: Work coordinate system setting (작업물 좌표계 설정)
현 위치에서 작업물 좌표계를 지정합니다.
M코드 (M-Code)
M 코드 | 명령어 | 설명 |
---|---|---|
M00 | 프로그램 정지 | 프로그램을 일시 정지합니다. |
M01 | 옵셔널 스톱 | 조작판넬 선택에 따라 프로그램을 일시 정지합니다. |
M02 | 프로그램 종료 | 프로그램을 종료하고 리셋합니다. |
M03 | 주축 정회전 | 주축을 시계 방향으로 회전시킵니다. |
M04 | 주축 역회전 | 주축을 반시계 방향으로 회전시킵니다. |
M05 | 주축 정지 | 주축의 회전을 멈춥니다. |
M06 | 공구 교환 | 자동 공구 교환(ATC) 싸이클을 시작합니다. |
M08 | 절삭유 ON | 절삭유를 토출합니다. |
M09 | 절삭유 OFF | 절삭유 토출을 중지합니다. |
M10 | 4축 클램프 | 분할 가공 시 4축을 클램프합니다. |
M11 | 4축 언클램프 | 분할 가공 시 4축을 언클램프합니다. |
M16 | 공구 매거진 입력 | 스핀들에 있는 공구를 매거진에 입력합니다. |
M17 | 에어 블라스트 ON | 에어 블라스트를 시작합니다. |
M18 | 매거진 원점 복귀 | 매거진을 원점으로 복귀시킵니다. |
M19 | 주축 방향 정지 | 주축을 특정 방향으로 정지시킵니다. |
M20 | 자동 전원 차단 | 자동으로 전원을 차단합니다. |
M23 | 매거진 공구포트 하향 | 매거진 공구포트를 하향시킵니다. |
M27 | 오일 미스트 쿨런트 | 절삭유를 에어로 분사합니다. |
M29 | 리지드 탭 모드 | 리지드 탭 모드를 설정합니다. |
M30 | 프로그램 리와인드 & 리스타트 | 프로그램을 종료하고 처음부터 다시 시작할 수 있도록 리셋합니다. |
M33 | 공구 수납 | 주축 공구를 매거진으로 수납합니다. |
M40 | 주축 기어 중립 위치 | 주축 기어를 중립 위치로 설정합니다. |
M41 | 주축 기어 저속 위치 | 주축 기어를 저속 위치로 설정합니다. |
M42 | 주축 기어 중속 위치 | 주축 기어를 중속 위치로 설정합니다. |
M43 | 주축 기어 고속 위치 | 주축 기어를 고속 위치로 설정합니다. |
M46 | 센서 절환 신호 ON | 주축 쪽의 센서를 선택합니다. |
M47 | 센서 절환 신호 OFF | 테이블 쪽의 센서를 선택합니다. |
M48 | 스핀들 오버라이드 취소 OFF | 스핀들 속도 변화를 허용합니다. |
M49 | 스핀들 오버라이드 취소 ON | 스핀들 속도 변화를 허용하지 않습니다. |
M51 | 에어 브로우 ON | 에어 브로우를 시작합니다. |
M53 | 센서 에어 브로우 ON | 센서 에어 브로우를 시작합니다. |
M55 | 오일 미스트 ON | 오일 미스트를 배출합니다. |
M59 | 에어 브로우 OFF | 에어 브로우를 정지합니다. |
M60 | 파레트 체인지 | 호리젠탈 파레트 체인지를 수행합니다. |
M70 | 워크 카운트 | 작업 개수를 카운트합니다. |
M73 | Y축 미러 이미지 OFF | Y축 미러 이미지를 비활성화합니다. |
M74 | Y축 미러 이미지 ON | Y축 미러 이미지를 활성화합니다. |
M75 | X축 미러 이미지 OFF | X축 미러 이미지를 비활성화합니다. |
M76 | X축 미러 이미지 ON | X축 미러 이미지를 활성화합니다. |
M88 | 스루 스핀들 쿨런트 ON | 스루 스핀들 쿨런트를 시작합니다. |
M89 | 스루 스핀들 쿨런트 OFF | 스루 스핀들 쿨런트를 정지합니다. |
M98 | 서브 프로그램 호출 | 서브 프로그램을 호출합니다. |
M99 | 서브 프로그램 종료 | 서브 프로그램 종료 후 메인 프로그램으로 돌아갑니다. |
M코드는 기계의 보조 기능을 제어하는 명령어로, 주로 기계의 상태를 관리합니다. 주요 M코드는 다음과 같습니다:
- M00: Program stop (일시정지)
작업 상태를 확인하기 위해 작업을 일시정지합니다. - M02: End of program (프로그램 종료)
- M30: Program end and rewind (프로그램 종료 및 리셋)
프로그램 종료 후 처음부터 다시 시작할 수 있도록 리셋합니다. - M03: Spindle on (CW) (스핀들 시계 방향 회전)
- M04: Spindle on (CCW) (스핀들 반시계 방향 회전)
- M05: Spindle stop (스핀들 정지)
- M06: Tool change (공구 교환 명령)
- M08: Coolant on (절삭유 공급)
- M09: Coolant off (절삭유 정지)
공구 코드
공구의 이동 위치와 관련된 코드입니다.
- X, Y, Z: 공구의 다음 이동 위치에 대한 좌표
- I, J, K: 원호 보간에서 현재 위치에 대한 원 중심의 상대 좌표
- T: 교환할 공구가 장착되어 있는 Tool Slot의 번호
- F: 이송 속도를 설정합니다. (단위: mm/min 또는 in/min)
- S: 주축 회전수를 설정합니다. (단위: rpm)
아래는 간단한 NC코드 예시로, 금속판에 직선 절삭을 수행하는 프로그램입니다.
G21 ; 미터 단위 사용
G17 ; XY 평면 선택
G90 ; 절대 좌표계 모드
M06 T01 ; 1번 공구 장착
M03 S1500 ; 스핀들 시계 방향 회전, 속도 1500
G00 X0 Y0 ; 빠른 이동, 시작점으로 이동
G01 Z-5 F100; 직선 절삭, Z축 방향으로 5mm 아래로 이동, 이송 속도 100
G01 X50 Y0 ; X축 방향으로 50mm 이동
G01 X50 Y50; Y축 방향으로 50mm 이동
G01 X0 Y50 ; X축 방향으로 0mm 이동
G01 X0 Y0 ; Y축 방향으로 0mm 이동
G00 Z10 ; Z축 방향으로 10mm 위로 이동
M05 ; 스핀들 정지
M30 ; 프로그램 종료 및 리셋
NC코드는 기계 가공에서 매우 중요한 역할을 합니다.
G코드와 M코드를 사용하여 공구의 이동과 기계 상태를 제어하며, 이를 통해 정밀하고 효율적인 가공이 가능합니다. NC코드는 기계 가공 분야에서 자동화와 정밀도를 높이는 데 필수적인 도구로, CNC 기계의 성능과 생산성을 극대화합니다.