CNC 프로그램과 NC코드 G코드 M코드 이해하기

CNC는 컴퓨터로 공작기계를 제어하는 방식이고, NC코드는 그 기계가 읽는 명령 프로그램입니다. G코드는 이동·좌표·보정·가공 모드를, M코드는 주축·절삭유·공구교환 같은 보조 동작을 지정합니다. 같은 코드라도 밀링과 선반, 제어기와 기계 제작사에 따라 의미가 달라질 수 있습니다.

처음에는 G00, G01 같은 번호를 외우게 되지만, 실제로 코드를 읽을 때 더 중요한 것은 지금 어떤 모드가 유지되고 있는가입니다.

그래서 저라면 한 줄씩 번역하기 전에 단위, 좌표 기준, 공구 보정, 이송 모드부터 확인할거 같은데요 일단 앞줄에서 설정한 값이 다음 줄에도 남아 있으면 같은 X50도 전혀 다른 이동이 될 수 있기 때문인데요.

CNC 프로그램과 NC코드 G코드 M코드 개념을 소개하는 디크리노랗 이미지
CNC·NC 프로그램 개념 소개용 이미지입니다. 특정 기종의 조작 화면이나 작업 절차를 나타내지는 않습니다.

아래에서는 밀링·머시닝센터의 일반적인 ISO 계열 표기를 중심으로 설명하고, 기종에 따라 달라지는 명령은 따로 표시했습니다.

코드 예제는 경로 학습용이며 공구·소재·고정구·오프셋이 정의된 실기계용 가공 프로그램이 아니며 시뮬레이터는 브라우저 안에서만 작동하며 장비와 연결되지 않습니다.

CNC·NC코드·CAM 차이와 프로그램 한 줄 읽기

CAD에서 형상을 만들고 CAM에서 공구와 가공 전략을 정한 뒤, 포스트프로세서가 대상 기계와 제어기에 맞는 NC코드를 출력하는 흐름을 생각하면 이해하기 쉽습니다. N

C 프로그램은 사람이 직접 작성하거나 수정할 수도 있으므로 CAM 사용이 항상 필수인 것은 아닙니다.

구분하는 일확인할 내용
CAD제품 형상과 치수 정의모델 단위·공차·가공 기준
CAM공구경로와 가공 조건 계획공구·소재·가공 여유·접근/이탈
포스트프로세서기계·제어기에 맞는 NC 프로그램 출력축 구성·코드 형식·보정·사이클
NC코드실행할 명령과 조건을 텍스트로 표현G/M·좌표·F/S/T·프로그램 흐름
CNC 제어기코드를 해석하고 기계 동작 제어설정·오프셋·인터록·기종별 기능

툴패스 생성 단계는 NX CAM Background Generate 사용법|NX 2606 백그라운드 툴패스 계산과 Generate in Background에서 이어서 볼 수 있습니다. CAM 화면에서 경로가 정상으로 보이더라도 포스트프로세서가 다른 장비용이면 출력된 NC 동작은 달라질 수 있습니다.

NC코드는 G·M·주소값을 함께 읽습니다

N120 G01 X50.0 Y20.0 F300
표기의미예제 해석
N120블록 번호·순서 표기선택적으로 사용하는 줄 식별자
G01직선보간 이동 모드설정한 이송으로 직선 이동
X50.0 Y20.0좌표 주소와 값G90이면 목표 좌표, G91이면 이동량
F300이송 지령값G21·G94 가정에서는 300mm/min
NC코드 한 블록 구성G21·G90·G94를 가정한 예입니다. F 단위와 좌표 해석은 앞서 설정한 모드에 따라 달라집니다.N120 G01 X50.0 Y20.0 F300N120 → 블록 번호G01 → 직선 이동 모드X50.0 Y20.0 → 좌표 또는 이동량F300 → 이송 지령값G코드에는 이동 외에도 좌표·보정·단위 설정이 포함됩니다.
G21·G90·G94를 가정한 예입니다. F 단위와 좌표 해석은 앞서 설정한 모드에 따라 달라집니다.

X·Y·Z·I·J·K·F·S·T·H·D 주소의 차이

주소주요 의미헷갈리기 쉬운 점
X·Y·Z선택 좌표계의 위치 또는 증분량기계 구성에 따라 공구 또는 테이블이 실제 이동
I·J·K원호 중심 지정 등에 사용하는 주소증분/절대 중심 모드는 제어기별 확인. G90/G91과 별도일 수 있음
R원호 반지름 또는 사이클 복귀면 등같은 주소라도 사용 명령에 따라 의미 변화
F이송 지령값G94 분당, G95 회전당, G93 역시간 등
S주축 속도 관련 지령값정회전수 모드에서는 rpm. 주속 일정 모드에서는 절삭속도 의미
T공구 선택·호출 번호물리적 매거진 포켓 번호와 항상 같지는 않음
H공구 길이 보정 번호 등T번호와 같게 운용해도 자동 동일이라고 가정하지 않음
D공구경·반경 보정 번호 등값의 반경/직경 해석과 보정 방식 확인
P·Q·L시간·프로그램·반복·절입 조건 등뜻과 단위가 명령마다 달라짐

“공구 코드”라는 표현으로 X·F·S를 한꺼번에 부르기보다, 주소 문자와 그 값으로 구분하면 더 정확합니다. 예를 들어 F100이 항상 100mm/min인 것도 아니고, S1500이 모든 운전 모드에서 1,500rpm을 뜻하는 것도 아닙니다.

G코드 종류와 기능|이동·좌표·보정·가공 사이클

G코드 표는 명령을 찾는 출발점입니다. 범용으로 통하는 부분과 제어기 옵션인 부분을 구분해야 하며, 특히 선반 코드를 밀링 표에 그대로 대입하면 안 됩니다. 각 명령의 적용 범위를 함께 확인할 수 있도록 기능별로 정리했습니다.

기본 이동·단위·평면

G코드주요 기능범위와 확인사항
G00급이송·위치결정절삭 이송이 아닌 위치 이동. 실제 경로가 단일 직선이라는 보장은 없음
G01직선보간공구를 지정한 직선 경로를 따라 이동시킵니다.
G02원호보간/헬리컬 보간 (시계방향)공구를 시계방향으로 원호 또는 헬리컬 경로를 따라 이동시킵니다.
G03원호보간/헬리컬 보간 (반시계방향)공구를 반시계방향으로 원호 또는 헬리컬 경로를 따라 이동시킵니다.
G04드웰지정 시간 대기. G09 정위치 정지와 다르며 P/X 시간 단위는 매뉴얼 확인
G07.1원통형보간원통형 보간을 수행합니다. · 지원 기종·옵션·형식 확인
G08선행제어공구의 이동을 원활하게 하기 위해 선행 제어를 활성화합니다. · 지원 기종·옵션·형식 확인
G09정위치 정지 확인해당 블록 끝에서 정지/위치 확인. 비상정지 명령이 아님
G17XY 평면 설정XY 평면을 가공 기준 평면으로 설정합니다.
G18ZX 평면 설정ZX 평면을 가공 기준 평면으로 설정합니다.
G19YZ 평면 설정YZ 평면을 가공 기준 평면으로 설정합니다.
G20인치 입력좌표·관련 조건의 인치 단위 모드
G21미터법 입력일반적인 밀링 좌표 입력은 mm. 미터(m) 단위라는 뜻이 아님

좌표·복귀·공구 보정

G코드주요 기능범위와 확인사항
G10데이터 설정기계 설정 데이터를 입력합니다. · 지원 기종·옵션·형식 확인
G11데이터 설정 모드 취소데이터 설정 모드를 취소합니다. · 지원 기종·옵션·형식 확인
G27원점 복귀 검사원점 복귀를 확인합니다. · 지원 기종·옵션·형식 확인
G28기준점 복귀중간점을 경유할 수 있음. 공작물 원점으로 단순 직선 복귀하는 명령이 아님
G29기준점에서 복귀G28 등의 기준점 복귀와 연계. 지원 여부·경유점 해석 확인 · 지원 기종·옵션·형식 확인
G30제2, 3, 4 원점 복귀지정된 두 번째, 세 번째, 네 번째 원점으로 복귀합니다. · 지원 기종·옵션·형식 확인
G31스킵 신호 이동이동 중 입력 신호로 스킵. 프로브·신호 설정과 함께 검토
G40공구경 옵셋 취소공구경 옵셋 보정을 취소합니다.
G41공구경 보정 좌측진행 방향 기준 좌측. 화면의 절대 왼쪽이라는 뜻이 아님
G42공구경 보정 우측진행 방향 기준 우측. 보정 진입·이탈 거리와 D값 확인
G43공구 길이 옵셋, +공구 길이 보정을 더합니다.
G44공구 길이 옵셋, –공구 길이 보정을 뺍니다.
G49공구 길이 옵셋 보정 취소공구 길이 보정을 취소합니다.
G52지역 좌표계 설정지역 좌표계를 설정합니다.
G53기계 좌표 지정일반적으로 해당 블록에 적용하는 비모달 명령. 공작물 좌표와 구분
G54공작물 좌표계 1 선택첫 번째 공작물 좌표계를 선택합니다.
G55공작물 좌표계 2 선택두 번째 공작물 좌표계를 선택합니다.
G56공작물 좌표계 3 선택세 번째 공작물 좌표계를 선택합니다.
G57공작물 좌표계 4 선택네 번째 공작물 좌표계를 선택합니다.
G58공작물 좌표계 5 선택다섯 번째 공작물 좌표계를 선택합니다.
G59공작물 좌표계 6 선택여섯 번째 공작물 좌표계를 선택합니다.
G90절대 지령밀링 가정. 선택 공작물 좌표계의 목표점 지정
G91증분 지령밀링 가정. 현재 위치에서의 이동량 지정
G92제어기별 좌표 설정·다른 기능밀링 좌표 이동값 설정, 일부 선반 나사 사이클 등. 최고 회전수 제한 코드로 공통 정의할 수 없음 · 지원 기종·옵션·형식 확인
G92.1G92 관련 리셋 등LinuxCNC에서는 G92 오프셋 해제·초기화. 다른 제어기는 매뉴얼 확인 · 지원 기종·옵션·형식 확인

사이클·매크로·가공 모드

G코드주요 기능범위와 확인사항
G61정위치 정지 모드블록 접속부 정지 확인을 유지하는 모드. 상세 동작은 제어기별 확인
G63탭핑 모드탭핑 작업을 수행하도록 설정합니다. · 지원 기종·옵션·형식 확인
G64연속 경로·절삭 모드 계열G61 해제/연속 경로 계열로 쓰임. Exact stop check와 동일 명령으로 보지 않음
G65마크로 호출지정된 매크로를 호출합니다. · 지원 기종·옵션·형식 확인
G66매크로 모달 호출매크로 모달 호출을 설정합니다. · 지원 기종·옵션·형식 확인
G67매크로 모달 호출 취소매크로 모달 호출을 취소합니다. · 지원 기종·옵션·형식 확인
G68좌표 회전지정된 각도로 좌표를 회전시킵니다. · 지원 기종·옵션·형식 확인
G69좌표 회전 취소좌표 회전을 취소합니다. · 지원 기종·옵션·형식 확인
G72.1회전 반복·복사 기능 계열지원 제어기에서 경로/패턴을 반복. 공작물 자체를 회전시키는 뜻으로 단정하지 않음 · 지원 기종·옵션·형식 확인
G72.2평행 반복·복사 기능 계열지원 제어기의 반복 경로 기능. 형식·파라미터 확인 · 지원 기종·옵션·형식 확인
G73고속 펙 드릴링 사이클부분 후퇴를 포함한 반복 드릴링 계열. G83과 후퇴 방식 차이 확인
G74역회전 탭 싸이클역회전하여 탭 싸이클을 수행합니다. · 지원 기종·옵션·형식 확인
G76파인 보링 싸이클정밀 보링 싸이클을 수행합니다. · 지원 기종·옵션·형식 확인
G80홀 가공 고정 싸이클 취소홀 가공 고정 싸이클을 취소합니다.
G81기본 드릴링 사이클드릴링 등 기본 홀 사이클. 스폿 드릴 전용으로 한정하지 않음
G82바닥 드웰 드릴링 계열구멍 바닥에서 대기하는 사이클. 스폿·카운터보링 등에 활용
G83심공 드릴링 싸이클깊은 구멍 드릴링 싸이클을 수행합니다.
G84탭핑 싸이클탭핑 싸이클을 수행합니다.
G85보링 싸이클일반 보링 싸이클을 수행합니다.
G86보링 싸이클보링 싸이클을 수행하고 스핀들을 멈춥니다.
G87백 보링 계열지원 제어기에서 구멍 안쪽/뒷면 가공. 주축 방향·편심 이동 등 절차 확인 · 지원 기종·옵션·형식 확인
G88정지·수동 개입 보링 계열지원 기종의 드웰·주축 정지·수동 후퇴 동작 확인 · 지원 기종·옵션·형식 확인
G89드웰 포함 보링 계열바닥 대기 후 이송 후퇴 등 지원 동작 확인
G94분당 이송분당 이송 속도를 설정합니다.
G98고정 사이클 초기점 복귀밀링 고정 사이클 기준. 선반에서는 분당 이송 의미인 기종도 있음
G99고정 사이클 R면 복귀밀링 고정 사이클 기준. 선반에서는 회전당 이송 의미인 기종도 있음

예를 들어 Haas 선반의 G90·G92·G94는 각각 선삭 사이클·나사 사이클·단면 가공 사이클로 쓰이며, 밀링에서 설명하는 절대 지령·좌표 이동·분당 이송과 다릅니다. 숫자가 같다고 프로그램을 옮겨 실행하지 않는 이유가 여기에 있습니다.

모달 명령과 비모달 명령

모달 명령은 다른 명령으로 바꿀 때까지 유지됩니다. G01 뒤의 줄에 X나 Y만 있어도 직선보간이 이어지는 방식입니다. 비모달 명령은 일반적으로 해당 블록에서만 적용됩니다. 다만 모달 그룹과 해제 규칙은 제어기 문서를 기준으로 확인해야 합니다.

G90 G01 X50 F300
Y20          (G01 유지: Y20으로 직선 이동)
G00 Z10      (이동 모드가 급이송으로 변경)

G00에서 여러 축을 동시에 지정하면 실제 급이송 경로는 제어 방식에 따라 달라질 수 있습니다. 그래서 화면에 직선이 그려졌다는 사실만으로 고정구를 피한다고 판단하지 않습니다. 이 글의 시뮬레이터는 급이송을 시작점과 끝점 사이 직선으로 단순화합니다.

M코드 종류와 기계별로 달라지는 기능

CNC 가공 장비와 주축을 표현한 개념 이미지
가공 개념 이미지입니다. 실제 공구·소재·절삭 조건이나 안전한 작업 상태를 판정하는 자료로 사용하지 않습니다.

M코드는 주축 회전, 절삭유 공급, 공구교환, 프로그램 흐름 같은 보조 동작을 담당합니다. 기계 제작사가 PLC와 주변 장치를 연결하는 방식에 영향을 받으므로 G코드보다도 기종별 차이를 놓치기 쉽습니다.

M코드일반적인 기능주의할 해석
M00프로그램 정지작업 확인 후 재개하는 정지. 비상정지와 구분
M01선택 정지옵셔널 스톱 선택 조건에 따라 정지
M02프로그램 종료종료 후 상태는 제어기 확인
M03주축 정회전장비에서 정의한 정회전 방향
M04주축 역회전장비에서 정의한 역회전 방향
M05주축 정지축 이송 전체를 비상정지하는 명령은 아님
M06공구교환T 호출과 ATC 절차는 기종별 확인
M08절삭유 공급해당 장비에서 지정한 공급 계통
M09절삭유 정지정지되는 계통 범위 확인
M19주축 오리엔테이션지정 방향 정지; 각도 지정 형식은 기종별
M30프로그램 종료·리셋자동으로 다시 가공을 시작한다는 의미는 아님
M98서브프로그램 호출호출 번호·반복 형식은 제어기별 확인
M99복귀 또는 반복 흐름호출 위치와 메인/서브 문맥에 따라 반복 가능

제작사·옵션 확인이 필요한 M코드 일람

코드확인 가능한 기능 예 / 확인 방법적용 범위
M104축 브레이크 체결Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M114축 브레이크 해제Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M16공구교환 계열Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M17해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M18해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M20해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M23선택 사용자 M기능/M-FinHaas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M27해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M29M-Fin 연계 출력 릴레이Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M33칩 컨베이어 정지Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M40해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M41저속 기어 오버라이드Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M42고속 기어 오버라이드Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M43해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M46조건에 따른 줄 분기Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M47해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M48프로그램과 팔레트 적합성 확인Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M49해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M51선택 사용자 M출력Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M53선택 사용자 M출력Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M55선택 사용자 M출력Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M59출력 릴레이 설정Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M60해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M70워크홀딩 클램프Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M73공구 에어 블라스트 ONHaas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M74공구 에어 블라스트 OFFHaas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M75G35/G136 기준점 설정Haas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M76해당 장비의 M코드 표로 확인공통 기능을 확정하지 않음. 제작사·기종·옵션 필요
M88주축 관통 절삭유 ONHaas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음
M89주축 관통 절삭유 OFFHaas 밀링 안내의 예시; 다른 기종에 공통 적용하지 않음

자동 전원 차단, 매거진 공구포트 하향, 공구 수납, 오일 미스트, 센서 전환, 워크 카운트, X/Y 미러 이미지, 팔레트 교환 같은 기능은 실제로 사용되지만, 위 번호에 고정된 보편적 의미로 묶을 수는 없습니다. 예를 들어 어떤 장비의 M29가 리지드 탭 준비라 해도 다른 기계에서 같은 동작을 보장하지 않습니다.

ADVERTISEMENT

NC코드 예제와 공구경로 시뮬레이터

시뮬레이터에서 예제 불러오기 → 코드 수정 → 코드 해석 → 다음 블록 또는 단계 재생 순서로 확인하세요. 좌표값을 바꾸면 XY 경로와 XZ 높이 변화가 함께 표시됩니다.

코드 수정 후에는 이전 결과를 지워 새 코드와 이전 경로가 섞이지 않도록 했습니다.

NC코드 학습용 경로 시뮬레이터

초기 위치 X0 Y0 Z10mm · 공작물 좌표 원점 고정 · XY 원호 · I/J는 시작점 기준 증분입니다. 화면은 공구 기준점의 경로를 보여줍니다. 공구 형상·소재 제거·충돌·기계 동작은 검증하지 않습니다.

코드 해석을 누르면 위치와 모달 상태가 표시됩니다.

회색: 전체 경로 · 파란 실선: 진행한 이송 · 주황 점선: 진행한 급이송 · 원형 점: 현재 위치. 축 단위는 mm입니다. G00도 직선으로 단순 표시하며 실제 급이송 궤적과 다를 수 있습니다.

시뮬레이터가 해석하는 범위

구분지원 내용제한
이동G00·G01·G02·G03, X/Y/ZG00은 직선 근사. 실제 기계 축 동역학 미반영
평면·단위G17, G20·G21XY 원호만 지원. 출력 좌표와 길이는 mm로 통일
좌표 모드G90·G91공작물 원점 고정. G54·G53·G92 오프셋은 미지원
원호시작점 기준 I/J, G91.1 선언R·G90.1·K·G18/G19는 오류. 반지름 불일치 검사
이송G94·F분당 이송만 지원. G93·G95는 오류
상태 표시S·T, M03/04/05·M06·M08/09주축·선택 공구·절삭유 표시만 제공; 물리 동작 없음
초기화 표기G40·G49·G80보정/사이클 비활성 전제. G80은 이동 모드도 비워 다음 이동을 명시하도록 함
프로그램N·O, M02·M30, 괄호·세미콜론 주석서브프로그램·매크로·조건분기 미지원. 종료 뒤 코드는 실행하지 않음

G코드 표에 있는 모든 명령을 이 도구가 실행하는 것은 아닙니다. 지원하지 않는 명령은 자동으로 건너뛰지 않고 오류로 알립니다.

입력은 최대 800줄·60,000자, 각 축 표시 범위는 ±100,000mm이며 이는 학습 도구의 범위입니다. 원호 반지름 검사는 0.001mm와 반지름의 0.001% 중 큰 값을 사용하는 내부 기준으로, 실제 제어기 허용차가 아닙니다.

예제 1. 50×50mm 사각 경로를 절대좌표로 읽기

(EDUCATIONAL PATH ONLY)
G21 G17 G90 G94
G40 G49 G80
T1 M06
S1500 M03
G00 Z10
G00 X0 Y0
G01 Z-5 F100
G01 X50 Y0 F300
Y50
X0
Y0
G00 Z10
M05
M30
블록뜻좌표 해석
G21 G17 G90 G94mm·XY·절대좌표·분당 이송예제의 해석 기준
T1 M06 / S1500 M03공구교환·주축 상태 표기T1·S1500은 설명용 값
G00 Z10 / G00 X0 Y0초기 높이·평면 시작점10mm가 실제 고정구에 안전하다는 뜻은 아님
G01 Z-5 F100Z=-5까지 이송Z10에서 시작하면 이동량은 −15mm
X50 Y0 → Y50 → X0 → Y0한 변 50mm 사각 경로G01이 유지되어 좌표만 있는 줄도 이동
G00 Z10 / M05 / M30상승·주축 정지·종료재생은 블록별이며 실제 시간과 다름

Z-5는 “항상 현재 위치에서 5mm 아래”라는 뜻이 아닙니다. G90에서는 선택 원점 기준 Z=-5이고 G91에서는 현재 위치에서 −5mm 이동입니다.

이 차이는 가공 깊이를 잘못 읽는 대표적인 원인입니다. F100·F300·S1500도 경로 설명용이며 소재·공구에 맞춘 권장 절삭조건이 아닙니다.

예제 2. 같은 사각형을 증분좌표로 표현하기

(SAME SQUARE IN INCREMENTAL MODE)
G21 G17 G90 G94
G00 Z10
G00 X0 Y0
G01 Z-5 F100
G91
G01 X50 F300
Y50
X-50
Y-50
G90
G00 Z10
M30

오른쪽 50, 위쪽 50, 왼쪽 50, 아래쪽 50을 각각 X50·Y50·X-50·Y-50으로 지정합니다.

마지막에는 G90으로 되돌린 뒤 Z10으로 이동합니다. G91을 그대로 둔 채 Z10을 쓰면 Z=-5에서 Z=5까지 10mm 올라가므로 절대좌표 복귀와 결과가 달라집니다.

절대좌표와 증분좌표 비교초기점 X0 Y0에서 50mm 사각형을 그리는 두 표현입니다. 경로는 같고 각 줄의 좌표 의미가 다릅니다.G90과 G91: 같은 경로, 다른 숫자 의미(0,0)(50,0)(50,50)(0,50)G90 목표 좌표X50 → Y50 → X0 → Y0G91 이동량X50 → Y50 → X-50 → Y-50G91에서 X0은 X=0으로 복귀가 아니라 X 이동량 0입니다.
초기점 X0 Y0에서 50mm 사각형을 그리는 두 표현입니다. 경로는 같고 각 줄의 좌표 의미가 다릅니다.

예제 3. G02·G03 원호와 I·J 계산

(XY ARCS - I J RELATIVE TO START)
G21 G17 G90 G94
G00 X0 Y0
G01 Z0 F100
G02 X40 Y0 I20 J0 F300
G03 X80 Y0 I20 J0
G00 Z10
M30

첫 원호의 시작점은 (0,0), 끝점은 (40,0), 중심은 (20,0)입니다.

따라서 시작점에서 중심까지의 X 차이는 +20, Y 차이는 0이므로 I20 J0입니다. 다음 원호는 시작점 (40,0)에서 중심 (60,0)까지이므로 다시 I20 J0을 씁니다. I20이 고정된 절대 중심 X20이라는 의미는 아닙니다.

이 화면은 +Z에서 XY 평면을 내려다본 기준입니다. G02는 시계방향, G03은 반시계방향으로 표시합니다.

다른 평면·좌표 방향에서는 화면상 인상만 보고 회전 방향을 판단하지 말고 선택 평면의 양의 수직축 기준을 확인해야 합니다.

예제 4. XY 원호를 돌면서 Z도 바꾸는 헬리컬

(ONE FULL XY HELIX - RADIUS 10)
G21 G17 G90 G94
G00 X10 Y0
G01 Z0 F100
G03 X10 Y0 Z-2 I-10 J0 F200
G00 Z10
M30

시작점 X10 Y0에서 I-10 J0을 지정하면 중심은 X0 Y0, 반지름은 10mm입니다.

XY 끝점을 시작점과 같게 두고 Z를 0에서 −2로 바꾸면 한 바퀴 회전하면서 2mm 내려가는 교육용 헬리컬 경로가 됩니다. 원호의 XY 길이는 2πr, 3차원 경로 길이는 √[(2πr)²+ΔZ²]로 약 62.864mm입니다. 실제 제어기의 전원(360°) 원호·헬리컬 지원 형식은 별도 확인합니다.

예제 5. 인치 단위를 mm로 바꿔 확인하기

(ONE INCH SQUARE - DISPLAY IN MM)
G20 G17 G90 G94
G00 Z0.4
G00 X0 Y0
G01 Z0 F4
G01 X1 Y0 F12
Y1
X0
Y0
G00 Z0.4
M30

G20에서 X1은 1mm가 아니라 25.4mm입니다. F12를 G94와 함께 사용하면 12in/min, 즉 304.8mm/min입니다. 시뮬레이터는 결과를 mm로 환산해 보여주며, 단위를 변경한 뒤에는 새 F를 지정하도록 검사합니다.

설계·제조·품질팀이 실제 프로그램에서 확인할 것

코드 문법이 맞다는 것과 가공품이 도면에 맞게 나온다는 것은 다릅니다.

설계자는 기준·공차·가공 접근성을, 제조 담당자는 공구·고정구·오프셋·순서를, 품질 담당자는 검사 기준과 프로그램 개정 이력을 연결해서 봐야 합니다.

분야핵심 질문남길 정보
설계가공 기준과 검사 기준이 같은가? 공구 접근이 가능한가?도면 개정·기준면·공차·표면 요구
CAM·제조출력 포스트와 실제 기계가 일치하는가?기계·제어기·포스트 버전·공구 목록
셋업공작물 원점과 H/D 보정이 맞는가?셋업시트·공구 실측·오프셋 승인값
검증소재·척·바이스·홀더·스트로크가 반영됐는가?시뮬레이션 범위·간섭 결과·미검증 항목
품질프로그램 변경이 제품 특성에 영향을 주는가?초품 검사·치수 추세·부적합·변경 승인
양산올바른 개정이 설비에 올라가 있는가?파일명·버전·배포 경로·작업 이력

좌표 기준이 헷갈린다면 직각좌표계·원통좌표계·구좌표계 변환 공식과 계산방법|CAD·CAM·CMM 설계 실무에서 좌표계 개념을 함께 확인해보세요. 공구 측정값과 보정 연결은 NX 2606 공구측정 사이클 설정|Renishaw·Blum-Novotest 프로브와 포스트프로세서 검증의 내용과도 이어집니다.

공구 중심 경로와 완성품 윤곽은 다릅니다

50×50mm 사각 경로를 그렸다고 완성품이 반드시 50×50mm가 되는 것은 아닙니다.

공구 반경만큼 안쪽 또는 바깥쪽에서 재료가 제거되고, CAM에서 이미 공구 중심 경로를 계산했는지 제어기의 G41/G42로 보정하는지에 따라 결과가 달라지며 보정을 중복 적용하면 경로가 예상과 어긋납니다.

이송·회전수 계산은 공구와 소재 조건을 함께 봅니다

밀링의 단순 계산 관계
주축 회전수 n(rpm) = 1000 × 절삭속도 Vc(m/min) / [π × 공구 지름 D(mm)]
테이블 이송 Vf(mm/min) = 날당 이송 fz(mm/tooth) × 날 수 z × n(rpm)

가정: D=10mm, Vc=100m/min, fz=0.03mm/tooth, 날 수=4
n ≈ 3,183rpm, Vf ≈ 382mm/min

위 값은 공식 설명용 가정입니다. 실제 절삭조건은 소재·공구 재질·코팅·돌출·절입량·냉각·설비 강성에 맞는 공구사 자료와 검증 절차를 따릅니다.

F만 낮추는 것으로 모든 진동이나 치수 문제를 해결할 수는 없습니다.

자주 만나는 오류와 점검 순서

증상먼저 볼 것다음 확인
한 줄만 수정했는데 경로가 크게 바뀜G90/G91·G20/G21·모달 이동이전 줄에서 유지된 모드
원호 오류·반지름 불일치끝점과 I/J·선택 평면중심의 절대/증분 방식·R 형식
공구가 예상보다 깊게 내려감공작물 원점·Z 해석·H 보정공구 길이·셋업 기준·잔여 오프셋
G28에서 예상 외 이동중간점과 좌표 모드제어기의 복귀 동작·고정구 간섭
가공 크기가 공구경만큼 다름CAM/제어기 반경 보정 방식D값·진입/이탈·공구 마모
다른 기계에서 M코드 동작이 다름제작사 M코드 표·PLC·옵션장비용 포스트와 프로그램 승인 상태
시뮬레이션 정상인데 실물 불량시뮬레이션 범위클램핑·열변위·공구 마모·절삭 부하

실기계 적용은 대상 장비용 매뉴얼과 승인된 셋업을 기준으로 진행합니다.

그래픽 검증, 간섭 확인, 제작사 절차에 따른 시험 운전과 초품 검사를 거쳐야 하며, 브라우저 경로 그림이 정상이라는 이유로 실행 적합성을 판단하지 않습니다.

참고 : CNC 프로그램의 주요 G코드 및 M코드 사용방법 2탄

CNC·NC코드·G코드·M코드 자주 묻는 질문

NC코드와 CNC는 같은 뜻인가요?

CNC는 컴퓨터 수치제어 방식 또는 그 장비를 가리키고, NC코드는 제어기가 해석할 프로그램입니다. CAM은 경로를 계획하고 포스트프로세서는 기계에 맞게 프로그램을 출력합니다.

G코드와 M코드 차이는 무엇인가요?

G코드는 이동뿐 아니라 단위·좌표·보정·가공 모드를 지정합니다. M코드는 주축·절삭유·공구교환·정지 같은 보조 기능과 프로그램 흐름에 사용됩니다.

NC코드에서 X Y Z는 무엇을 뜻하나요?

선택한 좌표계의 위치 또는 현재점에서의 증분량을 나타냅니다. 실제로 공구가 움직이는지 테이블이 움직이는지는 기계 구성에 따라 다릅니다.

F와 S는 각각 무엇인가요?

F는 이송 관련 지령, S는 주축 속도 관련 지령입니다. G94·G21이면 F는 mm/min이지만 다른 이송 모드에서는 해석이 달라집니다. S 역시 주속 일정 모드인지 확인해야 합니다.

G00과 G01은 어떻게 다른가요?

G00은 급이송 위치결정, G01은 설정한 이송으로 직선 이동하는 명령입니다. G01이 반드시 절삭 중이라는 뜻은 아니며 G00의 실제 궤적은 기종에 따라 직선이 아닐 수 있습니다.

G02와 G03은 언제 사용하나요?

선택한 평면의 원호 이동에 사용합니다. G02는 시계방향, G03은 반시계방향입니다. 헬리컬은 해당 제어기의 지원 방식까지 확인해야 합니다.

M03과 M05는 무슨 뜻인가요?

일반적으로 M03은 주축 정회전 지령, M05는 주축 정지입니다. 화면에서 보이는 회전 방향과 정회전 정의를 혼동하지 않습니다.

T코드는 공구 포켓 번호인가요?

T는 공구 선택·호출 번호로 이해하는 것이 좋습니다. 랜덤 포켓 관리 등에서는 실제 매거진 포켓 위치와 공구 번호가 같지 않을 수 있습니다.

NC코드를 처음 배울 때 무엇부터 봐야 하나요?

단위·좌표 모드·선택 평면을 먼저 확인한 뒤 이동 명령, F/S/T, 보정과 종료 순서로 읽으면 좋습니다. 이 글의 절대/증분 예제를 비교하면 좌표 차이를 확인할 수 있습니다.

예제 코드는 어떤 순서로 읽으면 쉬운가요?

초기 모드, 공구·주축 상태, 시작 위치, 이송 경로, 상승·정지·종료 순서로 읽습니다. Z의 목표 위치와 실제 이동량은 구분해서 계산합니다.

M30이면 처음부터 자동 반복하나요?

일반적으로 종료와 리셋을 뜻하며 자동 재가공 시작과 같은 의미가 아닙니다. 반복 운전은 해당 장비의 프로그램 흐름과 운전 설정을 확인해야 합니다.

이 시뮬레이터로 충돌이나 소재 제거도 확인되나요?

확인되지 않습니다. 지원 코드의 공구 기준점 이동과 상태를 보여주는 학습 도구입니다. 소재·홀더·치구·기계 축 구조·보정이 반영된 검증은 별도 CAM/기계 시뮬레이션이 필요합니다.

코드 해석에서 오류가 나면 실제 기계에서도 오류인가요?

반드시 그렇지는 않습니다. 이 도구가 지원하지 않는 정상 코드도 있습니다. 반대로 여기서 경로가 보여도 실제 제어기의 문법·설정·장비 조건까지 적합하다는 의미는 아닙니다.

공식 매뉴얼 확인

코드 기능은 제어기와 기계 매뉴얼을 우선합니다. 확인일은 2026년 10월 12일이며 아래 문서는 서로 다른 제어기의 예시입니다. 하나의 공통 명령 사양으로 합쳐 적용하지 않습니다.

ADVERTISEMENT

DecreYellow

제품디자인과 3D CAD 설계 실무를 기반으로 IT, 윈도우 오류 해결, CAD 소프트웨어, 디자이너 세금, 프리랜서·개인사업자 실무 정보를 정리하고 있습니다. 단순한 이론 설명보다 실제 업무와 블로그 운영, 프로그램 사용 경험을 바탕으로 초보자도 이해하기 쉽게 문제 원인과 해결 방법을 풀어내는 것을 목표로 합니다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다