NC program 뜻 G코드 M코드 차이와 공구보정 좌표지령 정리
NC program은 CNC 장비를 움직이기 위한 실제 가공 명령 데이터입니다. 현장에서는 흔히 NC 코드, G코드라고 함께 부르지만, 정확히 보면 NC program 안에 G코드와 M코드가 함께 들어가는 구조입니다. 밀링, 머시닝센터, 드릴링, 보링, 탭 가공처럼 자동 절삭이 필요한 작업은 모두 이 프로그램을 통해 장비가 움직입니다.
처음 접하면 코드가 복잡해 보이지만 구조는 의외로 단순합니다. 공구를 어디로 움직일지 정하는 것이 G코드이고, 주축 회전, 절삭유, 공구교환, 프로그램 종료처럼 장비 동작을 제어하는 것이 M코드입니다. 이 둘만 제대로 구분해도 NC 프로그램 읽기가 훨씬 쉬워집니다.
NC program 뜻
NC 가공장비는 수동 밀링처럼 사람이 직접 핸들을 돌려 가공하는 방식이 아니라, 컴퓨터 수치제어 방식으로 공구의 이동과 절삭 조건을 자동으로 실행하는 장비입니다. 여기서 장비에 입력하는 디지털 가공 데이터를 NC program이라고 합니다.
프로그램 안에는 좌표, 이송속도, 주축 회전수, 공구 번호, 보정값, 절삭유 ON/OFF, 공구교환, 종료 명령까지 모두 포함됩니다. 즉 NC program은 단순한 코드 한 줄이 아니라 장비가 가공을 처음부터 끝까지 수행하기 위한 전체 작업 지시서에 가깝습니다.
G코드 역할
G코드는 NC 공작기계의 움직임과 준비 기능을 지시하는 코드 체계입니다. 공구이송, 절삭가공, 원호 이동, 좌표계 선택, 공구보정, 평면 선택 같은 동작이 여기에 포함됩니다. 보통 영문자 G 뒤에 두 자리 숫자를 붙여 사용하며, 코드 조합에 따라 장비가 어떤 방식으로 움직일지 결정됩니다.
참고 : CNC 프로그램과 NC코드 G코드 M코드 이해하기
가장 자주 보는 예시는 G00과 G01입니다. G00은 급속이송이고, G01은 직선 절삭입니다.
현장에서 이 둘을 혼동하면 공구가 빠르게만 이동해야 하는 구간에서 절삭을 하거나, 반대로 절삭해야 할 구간을 공회전처럼 읽는 경우가 생길 수 있어 초반에 꼭 익혀두는 편이 좋습니다.
| G코드 | 기능 | 의미 | 현장 해석 |
|---|---|---|---|
| G00 | 급속이송 | 가공 없이 빠르게 이동 | 시작 위치나 안전 위치로 이동할 때 사용 |
| G01 | 직선보간 | 직선 경로 절삭 | 실제 가공할 때 가장 자주 사용 |
| G02 | 원호보간 CW | 시계방향 원호 이동 | 라운드, 곡선 외곽 가공에 사용 |
| G03 | 원호보간 CCW | 반시계방향 원호 이동 | 반대 방향 곡선 가공에 사용 |
| G17 | XY 평면 선택 | XY 기준 가공 | 일반 밀링에서 가장 많이 사용 |
| G18 | ZX 평면 선택 | ZX 기준 가공 | 선반 또는 특수 가공에서 사용 |
| G19 | YZ 평면 선택 | YZ 기준 가공 | 특정 축 조합 가공 시 사용 |
| G21 | 밀리미터 단위 | mm 기준 입력 | 국내 장비에서 자주 사용 |
| G40 | 직경보정 취소 | 공구 반경 보정 해제 | 보정 종료 전 안전 위치 확인 필요 |
| G41 | 좌측 보정 | 공구 직경 좌측 보정 | 하향절삭 쪽으로 많이 설명 |
| G42 | 우측 보정 | 공구 직경 우측 보정 | 상향절삭 쪽으로 많이 설명 |
| G43 | 길이보정 + | 공구 길이 보정 적용 | 툴 길이 오차 보정에 필수 |
| G49 | 길이보정 취소 | 공구 길이 보정 해제 | 종료 직전 안전 위치 확인 필요 |
| G54~G59 | 공작물 좌표계 | 작업 원점 선택 | 지그별 원점 관리에 사용 |
| G90 | 절대지령 | 원점 기준 절대좌표 | 프로그램 해석이 직관적 |
| G91 | 증분지령 | 현재 위치 기준 상대좌표 | 반복 이동이나 패턴 이동에 유리 |
M코드 기능
M코드는 보조 기능을 담당합니다. 공구가 어디로 움직일지를 정하는 것은 G코드지만, 장비를 실제로 가동시키는 스핀들, 절삭유, 공구교환, 프로그램 종료 같은 동작은 M코드가 맡습니다. 그래서 G코드만 알아서는 실제 NC 프로그램을 완전히 읽을 수 없고, M코드까지 함께 봐야 전체 작업 순서가 보입니다.
예를 들어 M03은 주축 정회전, M05는 주축 정지, M08은 절삭유 ON, M09는 절삭유 OFF, M06은 공구교환입니다. 프로그램을 보다 보면 G코드와 M코드가 섞여 나오는데, 이 조합이 바로 실제 장비 동작 순서를 만들어냅니다.
| M코드 | 기능 | 의미 | 현장 해석 |
|---|---|---|---|
| M00 | 프로그램 정지 | 완전 일시정지 | 작업자 확인이 필요한 구간 |
| M01 | 옵셔널 스톱 | 선택 정지 | 옵션 스위치 설정 시 정지 |
| M03 | 주축 정회전 | 스핀들 시계 방향 회전 | 밀링 기본 회전 명령 |
| M04 | 주축 역회전 | 스핀들 반시계 방향 회전 | 특정 공정에서 사용 |
| M05 | 주축 정지 | 스핀들 멈춤 | 공구교환 전후에 자주 등장 |
| M06 | 공구교환 | ATC 공구 변경 | T코드와 함께 자주 사용 |
| M08 | 절삭유 ON | 냉각수 시작 | 절삭열과 칩 배출 관리 |
| M09 | 절삭유 OFF | 냉각수 정지 | 가공 종료 시 사용 |
| M30 | 프로그램 종료 | 종료 후 리셋 | 마지막 줄에서 가장 자주 확인 |
공구 보정
기준공구와 실제 사용공구 사이에는 직경 차이와 길이 차이가 생깁니다. 이 차이를 그대로 두면 프로그램 좌표는 맞아도 실제 절삭 위치가 달라집니다. 그래서 필요한 것이 공구보정입니다.
공구직경 보정은 공구 중심이 아니라 실제 가공 형상을 기준으로 일정 거리 떨어져 움직이게 하는 기능입니다. 공구길이 보정은 툴 길이 오차를 흡수해 Z축 깊이를 정확하게 맞추는 기능입니다. 이 기능을 제대로 쓰지 않으면 외곽 치수, 홈 폭, 바닥 깊이에서 오차가 바로 나타납니다.
| 구분 | 코드 | 설명 |
|---|---|---|
| 공구 직경 | G40 | 공구 직경 보정 취소 |
| 공구 직경 | G41 | 공구 직경 좌측 보정 |
| 공구 직경 | G42 | 공구 직경 우측 보정 |
| 공구 길이 | G43 | 공구 길이 보정량 증가(+) |
| 공구 길이 | G44 | 공구 길이 보정량 감소(-) |
| 공구 길이 | G49 | 공구 길이 보정 취소 |
여기서 많이 헷갈리는 부분이 G41과 G42입니다. 단순히 왼쪽, 오른쪽으로 외우기보다 공구 진행 방향을 기준으로 공구 중심이 어느 쪽에 놓이는지로 이해하는 편이 훨씬 정확합니다.
그리고 G40, G49로 보정을 취소할 때는 무조건 안전 위치를 먼저 확보한 뒤 해제하는 습관이 좋습니다. 저라면 이 구간은 코드 검토 때 가장 먼저 확인합니다.
G41은 공작물 기준으로 공구가 왼쪽에 위치하는 보정이고, G42는 오른쪽에 위치하는 보정입니다. 외곽 가공에서는 절삭 방향과 공구 회전 방향까지 함께 봐야 하향절삭인지 상향절삭인지 정확히 판단할 수 있습니다. 일반적으로 상향절삭은 하향절삭보다 부하, 소음, 진동이 크게 나오는 편이라 가공 조건에 따라 차이가 체감됩니다.
지령 방식
좌표를 지정하는 방식은 크게 절대지령과 증분지령으로 나뉩니다. 이 개념이 잡히지 않으면 같은 X20 Y10 코드라도 장비 움직임을 전혀 다르게 해석하게 됩니다.
절대지령방식 G90은 프로그램 원점을 기준으로 움직일 좌표를 지정하는 방식입니다. 말 그대로 원점을 기준으로 하는 절대값입니다. 반대로 증분지령방식 G91은 현재 공구 위치를 기준으로 다음 이동량을 지정하는 상대값 방식입니다. 그리고 일부 프로그램은 한 블록 안에서 두 방식을 섞어 쓰는 혼합 방식도 사용합니다.
처음 프로그램을 읽을 때는 저는 항상 G90인지 G91인지부터 먼저 확인합니다. 이 한 줄만 놓쳐도 좌표는 맞아 보이는데 장비는 완전히 다른 곳으로 움직일 수 있기 때문입니다.
절대지령 예시
절대지령은 프로그램 원점 기준으로 각 좌표를 직접 지정합니다. 좌표를 하나씩 읽기 쉬워서 초보자가 해석하기 편하고, 도면 치수와 연결하기도 쉽습니다.
① → ② G90 G00 X10 Y30
② → ③ G90 G00 X30 Y40
③ → ④ G90 G00 X50 Y30
④ → ① G90 G00 X20 Y10
증분지령 예시
증분지령은 현재 공구 위치를 기준으로 다음 이동량을 지정합니다. 반복 이동, 패턴 가공, 상대 이동 계산에서 장점이 있지만, 현재 위치를 잘못 읽으면 그 뒤 전부 틀어질 수 있어 주의가 필요합니다.
① → ② G91 G00 X-10 Y20
② → ③ G91 G00 X20 Y10
③ → ④ G91 G00 X20 Y-10
④ → ① G91 G00 X-30 Y-20
NC 프로그램 예시
아래 예시는 밀링 외곽 가공에서 자주 보는 기본 구조입니다.
실제 장비와 포스트 프로세서에 따라 형식은 달라질 수 있지만, 전체 구성은 대부분 비슷합니다.
O1001
G21 G17 G90 G40 G49 G80
G54
T01 M06
S2500 M03
G00 X0 Y0
G43 H01 Z50.
M08
G00 Z5.
G01 Z-2.0 F120
G01 X60.0 F300
G02 X80.0 Y20.0 I0 J20.0
G01 Y60.0
G01 X20.0
G03 X0 Y40.0 I0 J-20.0
G00 Z50.
M09
M05
G28 G91 Z0
G90
M30
이 프로그램을 읽는 요령은 어렵지 않습니다. 앞부분의 G21 G17 G90은 단위, 평면, 좌표방식을 정리하는 준비 코드입니다. 그 다음 G54로 작업 원점을 불러오고, T01 M06으로 공구를 교환합니다.
S2500 M03으로 주축을 돌리고, G43 H01로 길이보정을 적용한 뒤, G01·G02·G03으로 실제 절삭을 수행합니다. 마지막에는 M09, M05, M30으로 절삭유 정지, 주축 정지, 프로그램 종료를 처리합니다.
가공 단계 구분
가공 프로그램은 한 개만 준비하는 것이 아니라 황삭, 중삭, 정삭으로 따로 분리해 관리하는 경우가 많습니다.
황삭은 재료 제거량이 많아 이송과 절입 조건이 거칠고, 정삭은 치수와 면 품질이 중요하므로 더 보수적으로 조건을 잡습니다.
| 구분 | 목적 | 특징 | 체크할 것 |
|---|---|---|---|
| 황삭 | 재료 대량 제거 | 이송량과 절입량이 큼 | 공구 부하, 칩 배출, 진동 |
| 중삭 | 형상 정리 | 황삭과 정삭의 중간 조건 | 잔삭 제거, 치수 안정 |
| 정삭 | 최종 치수와 면 품질 확보 | 절입량이 작고 조건이 섬세함 | 표면조도, 최종 공차, 버 |
실제로는 황삭용과 정삭용을 한 프로그램 안에서 공구별로 나누기도 하지만, 작업 관리나 수정 편의성을 생각하면 분리해 두는 편이 훨씬 낫습니다.
특히 불량 분석이나 재가공 상황에서는 어느 단계에서 문제가 났는지 바로 파악하기 쉬워집니다.
실수 많은 부분
- G90과 G91 혼동으로 좌표가 전부 틀어지는 경우
- G40, G49 취소 시점을 잘못 잡아 공작물과 간섭하는 경우
- G41, G42 방향을 반대로 적용해 외곽이 커지거나 작아지는 경우
- M03, M04를 잘못 써 스핀들 회전 방향이 반대로 도는 경우
- G54~G59 원점 선택을 잘못해 지그 다른 위치로 이동하는 경우
- G80 해제 누락으로 다음 구간에서 고정사이클이 이어지는 경우
이런 부분은 CAM에서 자동 생성한 코드라도 그대로 발생합니다. 그래서 수동 프로그램을 짜지 않더라도 G코드와 M코드 구조는 꼭 읽을 줄 아는 편이 좋습니다. 실제로는 코드 전체를 외우는 것보다 준비 코드, 보정 코드, 좌표 방식, 종료 코드를 먼저 읽는 습관이 더 중요합니다.
NC program 정리
NC program은 CNC 장비가 자동으로 가공하기 위해 입력하는 디지털 제어 데이터입니다. 그 안에서 G코드는 공구 이동과 절삭 경로를 담당하고, M코드는 주축, 절삭유, 공구교환, 종료 같은 장비 기능을 담당합니다.
기본만 정리해도 프로그램 읽기가 훨씬 쉬워집니다. G00과 G01의 차이, G41과 G42 보정 방향, G90과 G91 좌표 방식, 그리고 M03·M05·M06·M08·M09·M30 정도만 정확히 이해해도 현장에서 자주 보는 NC 코드는 충분히 해석할 수 있습니다.
NC program과 G코드는 같은 말인가요?
현장에서는 비슷하게 부르기도 하지만 정확히는 다릅니다. NC program은 전체 가공 프로그램이고, 그 안에 G코드와 M코드가 함께 들어갑니다.
G41과 G42는 어떻게 구분하나요?
공구 진행 방향을 기준으로 공구 중심이 왼쪽에 놓이면 G41, 오른쪽에 놓이면 G42입니다. 단순히 화면 방향이 아니라 진행 방향 기준으로 판단해야 정확합니다.
절대지령 G90과 증분지령 G91 차이는 무엇인가요?
G90은 프로그램 원점 기준의 절대좌표 방식이고, G91은 현재 위치 기준의 상대좌표 방식입니다. 같은 X값이라도 움직임 결과가 달라집니다.
M03과 M05는 어떤 명령인가요?
M03은 주축 정회전, M05는 주축 정지입니다. NC 프로그램에서 가장 자주 확인하는 기본 M코드입니다.
공구보정을 취소할 때 왜 안전 위치로 먼저 이동하나요?
G40이나 G49를 바로 해제하면 공구 중심 위치가 바뀌면서 공작물과 간섭할 수 있기 때문입니다. 그래서 안전 위치 확보 후 보정을 취소하는 편이 좋습니다.