도면 한 장이 현장에 들어가면 프로그래밍 방식에 왜 의견이 갈리는가
같은 부품 도면이 현장에 전달되면 흔히 세 가지 처리 방식이 나타난다. 숙련공은 기계 패널에서 G 코드 몇 줄을 직접 작성하고, 프로그래머는 CAM 소프트웨어로 공구 경로를 생성해 포스트프로세서로 출력하며, 또 누군가는 기존 프로그램을 받아 포스트프로세서를 먼저 수정한 뒤 기계에 투입한다. 의견이 갈리는 근본 원인은 'CNC 프로그래밍 언어'가 하나의 언어가 아니라 계층화된 도구 체인이기 때문이다. 최하층은 기계가 실행하는 G 코드, 중간층은 매크로 프로그램과 파라미터화 논리, 상층은 CAM의 공구 경로와 포스트프로세서 설정이다. 각 층이 해결하는 문제가 다르므로, 층을 잘못 선택하면 간단한 작업을 복잡하게 만들거나 복잡한 작업을 위험하게 만든다.
판단 논리는 세 가지 차원으로 진행할 수 있다. 부품 복잡도는 CAM 개입 필요 여부를 결정하고, 배치 수량과 변형 수는 매크로 프로그램이나 파라미터화 템플릿 투자 가치를 결정하며, 유지보수성은 코드를 누구에게 보여줄지, 즉 당번 작업자인지 아니면 석 달 후 인수인계받을 사람인지를 결정한다. 이 글은 이 흐름에 따라 층별로 풀어보며, 구체적인 부품에서 '수기 작성이냐 소프트웨어냐'를 두루뭉술하게 말하는 대신 실무에 적용 가능한 선택을 할 수 있도록 돕는다.
G 코드: 공작기계가 실제로 실행하는 저수준 언어
전단에서 CAM, 매크로 프로그램, 수기 작성 중 무엇을 쓰든 최종적으로 기계 컨트롤러에 전달되는 것은 G 코드 한 토막이다. 이는 여러 프로그램 블록으로 구성되며, 각 블록은 일반적으로 준비 기능(G 명령), 보조 기능(M 명령), 좌표어(X/Y/Z 등), 이송(F), 주축 회전수(S) 등의 필드를 포함한다. 컨트롤러는 블록 순서대로 해석하여 서보 축, 주축, 냉각, 공구 교환 등의 동작을 구동한다. 이 층을 이해하는 것은 현장 문제 해결의 공용어를 습득하는 것과 같다.
좌표계와 운동 명령: 위치 결정의 기준
G 코드의 좌표는 저절로 생기는 것이 아니라 기계 좌표계, 공작물 좌표계, 공구 길이 보정이 함께 정의한다. 급속 위치 결정, 직선 보간, 원호 보간은 각각 다른 운동 방식에 해당하며, 원호는 평면 선택과 반지름 또는 원심 파라미터가 필요하다. 공작물 영점을 잘못 설정하거나 보정 번호를 잘못 호출하면 공구 경로 전체가 어긋난다. 이런 문제는 시뮬레이션에서 드러나지 않을 수 있지만, 첫 제품에서 과절삭이나 충돌로 바로 나타난다.
이송, 주축, 보조 기능: 절삭 조건의 매개체
이송 속도, 주축 회전수, 절삭유 개폐, 공구 교환, 프로그램 정지 등은 각각 F, S, M 명령으로 제어된다. 이들은 절삭이 안정적인지를 결정한다. 이송과 회전수가 맞지 않으면 가벼우면 표면 품질 저하와 공구 마모 가속, 심하면 날 파손이나 채터링이 발생한다. M 명령은 프로그램 종료, 주축 정지 등 안전 동작도 담당하므로, 순서를 잘못 쓰면 기계가 잘못된 상태에서 계속 운동할 수 있다.

엔지니어에게 G 코드를 읽을 줄 아는 가치는 세 가지다. 현장 알람 시 프로그램 블록 문제인지 기계 상태 문제인지 빠르게 판단하고, CAM을 다시 돌리지 않고도 안전 높이, 후퇴 경로 또는 일시 정지 지점을 미세 조정하며, 기계 투입 전에 드라이런, 단일 블록 실행으로 핵심 구간을 검증하는 것이다. 이런 동작은 시뮬레이션을 대체하지 않지만 마지막 한 걸음에서 값비싼 실수를 막을 수 있다. 구체적인 가공 능력 경계를 확인해야 할 때는 CNC 가공 능력을 참고할 수 있다.
매크로 프로그램과 파라미터화 프로그래밍: 언제 쓸 가치가 있는가
매크로 프로그램(변수 프로그래밍)은 치수, 반복 횟수, 공구 보정 논리를 값으로 할당 가능한 변수로 작성하며, 모든 좌표 블록을 고정해 쓰지 않는다. 이것이 해결하는 핵심 문제는 같은 종류의 부품이 반복 등장하지만 치수나 특징 수가 변하는 경우다. 전형적인 시나리오는 세 가지다. 시리즈 부품(같은 구조, 다른 길이/구멍 지름), 고정 사이클(드릴 배열, 포켓 층별 가공), 패밀리 부품(플랜지, 커넥터, 브래킷).
매크로 프로그램을 쓸 가치가 있는지 판단하려면 체크리스트를 훑어보면 된다.
1) 배치가 충분히 크거나 변형이 충분히 많아 한 번 작성으로 여러 번 호출을 커버할 수 있는가?
2) 부품이 기하학적 논리를 공유하고 파라미터만 다른가?
3) 현장 작업자가 변수를 읽고, 파라미터를 수정하고, 첫 제품 검증을 할 능력이 있는가?
4) 버전 관리가 있어 '한 곳 수정, 여러 곳 오류'를 피할 수 있는가?
수기 G 코드와 비교하면 매크로 프로그램은 초기 투자가 더 크지만, 가독성과 유지보수성은 명명과 주석에 달려 있다. 변수명을 #1, #2 같은 날번호로 쓰면 석 달 후에는 작성자도 다시 추론해야 한다. 의미 있는 주석과 그룹화를 써야 후임자가 감히 수정할 수 있다. 오류 위험도 파라미터 경계에 집중된다. 변수 할당 오류, 반복 조건 반대로 쓰기는 종종 알람이 아니라 바로 과절삭이나 충돌로 이어진다. 따라서 매크로 프로그램을 투입하기 전에 시뮬레이션이나 드라이런에서 파라미터 조합을 검증한 뒤 첫 제품 시험 절삭에 들어가는 것이 좋다. 배치가 작고 변형이 적으면 수기 작성이나 CAM 직접 출력이 보통 더 간편하다.
CAM 프로그래밍과 포스트프로세서: 공구 경로에서 기계까지 마지막 단계
CAM은 '어떻게 공구가 움직일지'를 해결하고, 포스트프로세서는 '기계가 알아들을 수 있는지'를 해결한다. 많은 현장 문제는 공구 경로 계산 오류가 아니라, 포스트프로세서가 공구 경로를 대상 시스템이 인식하지 못하는 명령 형식으로 번역해서 발생한다. CAM은 중립 공구 경로 데이터를 출력하고, 포스트프로세서가 이를 특정 CNC 시스템이 실행 가능한 G 코드로 변환한다. 기계 교체, 시스템 교체, 컨트롤러 버전 업그레이드 모두 원래 작동하던 프로그램에 알람이나 동작 이상을 일으킬 수 있다.
포스트프로세서는 한 번 설정하면 영구 유효한 것이 아니다
포스트프로세서 파일은 보통 기계의 운동 구조, 제어 시스템, 상용 사이클 형식에 묶여 있다. 같은 기계에 주축 부속을 교체하거나 4축을 추가하거나 제어 시스템 소프트웨어를 업그레이드하면, 기존 원호 출력 방식, 공구 교환 명령, 냉각 명령을 다시 확인해야 할 수 있다. 포스트프로세서 변경을 버전 관리에 포함하고, 각 수정에 대응하는 기계와 시스템을 기록하여 '지난번엔 됐는데 이번엔 안 되는데 원인을 못 찾는' 상황을 피하는 것이 좋다.
시뮬레이션과 첫 제품 시험 절삭은 생략할 수 없다
소프트웨어 시뮬레이션은 공구 경로 충돌, 과절삭, 공회전을 발견할 수 있지만 첫 제품 시험 절삭을 완전히 대체할 수는 없다. 시뮬레이션의 지그 모델, 소재 여유량, 실제 클램핑 상태는 종종 차이가 있다. 안전한 방법은 먼저 시뮬레이션으로 공구 경로 논리를 확인하고, 단일 블록, 이송 감소 또는 공구 상승 드라이런으로 핵심 동작을 검증한 뒤, 마지막에 정상 절삭에 들어가는 것이다. 첫 제품 확인 후 배치 실행하면 충돌과 배치 폐기 위험을 크게 줄일 수 있다.

부품 구조가 복잡하고 다축 연동이나 높은 표면 품질이 필요하면 프로그래밍과 포스트프로세서의 능력 경계가 제조 가능성에 직접 영향을 미친다. CNC 가공 능력과 함께 밀링, 선삭의 적용 범위를 이해한 뒤, 어떤 특징에 공구 경로 전략 조정이나 공정 분할이 필요한지 판단할 수 있다.
선삭, 밀링, 다축: 프로그래밍 언어의 차이점
선삭과 밀링은 G 코드 체계를 공유하지만 명령의 중심이 다르다. 선반은 G71/G70 등 복합 사이클을 핵심으로 하며, 프로그래밍 논리는 회전체 윤곽과 단면을 중심으로 전개되고, X축은 보통 반지름이 아니라 지름을 나타내므로 수동 수정 시 매우 쉽게 오류가 난다. 밀링은 G41/G42 공구 반지름 보정과 G43 길이 보정에 의존하며, 서브프로그램과 좌표계 회전을 함께 사용하여 평면 윤곽과 포켓을 처리한다.
부품이 4축, 5축 연동으로 넘어가면 차이는 더 이상 '명령 작성법'이 아니라 공구 축 벡터와 포스트프로세서 능력이다. 다축 공구 경로는 CAM이 공구 끝점과 공구 축 방향을 계산해야 하며, 포스트프로세서는 RTCP(공구 끝점 추종) 또는 회전축 각도를 정확히 출력해야 한다. 포스트프로세서가 특정 기계 운동 구조에 맞춰 맞춤 제작되지 않으면 시뮬레이션은 통과해도 실제 절삭에서 과절삭이나 충돌이 발생할 수 있다. 따라서 복잡한 곡면, 임펠러, 이형 캐비티류 부품은 거의 모두 수기 코드가 아니라 소프트웨어 프로그래밍에 의존한다.
- 선삭: 복합 사이클, 지름 프로그래밍, 나사 및 홈 파기 사이클이 고빈도 명령이다.
- 3축 밀링: 반지름 보정, 서브프로그램, 좌표계 변환이 프로그래밍 효율을 결정한다.
- 다축: 공구축 제어와 포스트프로세서 맞춤화가 성패의 관건이며, 수동 프로그래밍은 사실상 불가능합니다.
흔한 프로그래밍 고장과 점검 논리
프로그램 폭주, 치수 초과, 공작기계 알람이 발생하면 현장에서는 흔히 공구 경로를 먼저 의심합니다. 하지만 경험상 문제의 근원은 CAM이 생성한 궤적 자체가 아니라 포스트프로세서 변환, 공작기계 파라미터 또는 클램핑 상태에 있는 경우가 많습니다. 계층별 점검은 공구 경로를 반복 재계산하며 시간을 낭비하는 일을 피할 수 있습니다.
계층별 점검 순서
- 공구 경로 계층: 여유량, 진입/진출, 과절삭/미절삭이 코드 오류가 아니라 전략 설정에서 비롯된 것인지 확인합니다.
- 포스트프로세서 계층: 원호 출력 형식, 좌표 모드, 공구 교환 및 주축 명령이 현재 시스템과 일치하는지 확인합니다.
- 공작기계 파라미터 계층: 공구 보정, 공작물 좌표계, 이송 배율 및 주축 상태를 대조하여 조작 패널의 잘못된 설정을 배제합니다.
- 클램핑 계층: 기준면, 클램핑 변형 및 공구의 실제 돌출 길이를 점검하여 물리적 편차를 배제합니다.
| 현상 | 우선 의심 계층 | 빠른 검증 |
|---|---|---|
| 국부 과절삭 | 공구 경로 / 포스트프로세서 | 공회전 또는 시뮬레이션으로 여유량 설정 비교 |
| 전체 치수 드리프트 | 공작기계 파라미터 / 클램핑 | 기준과 공구 보정값 재측정 |
| 공구 교환 시 충돌 | 포스트프로세서 / 공작기계 파라미터 | 공구 교환 지점과 안전 높이 확인 |
| 시스템 알람 | 포스트프로세서 | 원호 및 좌표 명령 형식 대조 |
점검 시에는 먼저 변수를 고정합니다. 한 번에 한 계층만 변경하고, 변경 후 첫 제품 검증을 수행합니다. 공작기계를 바꾼 뒤 코드에서 오류가 나면 공구 경로보다 포스트프로세서를 우선 의심하고, 다시 출력하여 시뮬레이션하는 것이 코드를 한 줄씩 수정하는 것보다 일반적으로 더 신뢰할 수 있습니다.
흔한 질문(FAQ)
다음 질문은 프로그래머, 공정 엔지니어 및 구매 담당자가 CNC 프로그래밍 방안을 검토할 때 가장 자주 제기하는 의문입니다. 답변은 판단 논리만 제공하며, 구체적인 공차, 인증 또는 납기를 약속하지 않습니다.
수기 G 코드와 CAM 프로그래밍, 도대체 어떻게 선택해야 할까요?
부품 복잡도와 배치 수량을 보면 됩니다. 단순 회전체, 단품 수정 조립, 현장 임시 공구 변경은 수기가 더 빠릅니다. 곡면, 다면, 다축 또는 반복迭代가 필요한 부품은 CAM의 공구 경로 생성과 시뮬레이션이 더 통제 가능합니다. 대부분의 작업장은 둘을 혼용합니다. CAM으로 본체 프로그램을 만들고, 현장에서 수기로 미세 조정합니다.
포스트프로세서는 직접 작성해야 하나요?
반드시 그렇지는 않습니다. 일반적인 시스템에는 보통 기성 포스트프로세서를 사용할 수 있지만, 시스템을 바꾸거나 공작기계를 바꾸거나 특수 사이클을 사용할 때는 수정하거나 심지어 다시 작성해야 하는 경우가 많습니다. 포스트프로세서를 검증이 필요한 자산으로 취급할 것을 권장합니다. 먼저 공회전 또는 시뮬레이션에서 확인한 뒤 첫 제품 시험 절삭에 들어갑니다.
매크로 프로그램은 배우기 어렵나요? 투자할 가치가 있나요?
기본 변수와 조건 판단은 어렵지 않지만, 유지보수와 인수인계가 어렵습니다. 시리즈 부품, 패밀리 부품, 고정 사이클은 효과가 뚜렷합니다. 단품이나 변형이 적은 작업은 매크로 프로그램이 오히려 디버깅 비용을 증가시킵니다. 판단 기준은 배치 수량, 변형 수 및 작업자 숙련도입니다.
프로그래밍 오류로 폐기되었다면 책임은 어떻게 계산하나요?
계약과 프로세스 약정에 따라 다릅니다. 안전한 방법은 프로그래밍, 검토, 첫 제품 확인 각 단계의 책임을 명확히 하고 프로그램 버전과 시험 절삭 기록을 보존하는 것입니다. 양산 투입 전 첫 제품 확인을 하면 일반적으로 전체 배치 폐기 위험을 크게 줄일 수 있습니다.
공작기계를 바꾼 후 기존 코드를 바로 사용할 수 있나요?
일반적으로 바로沿用할 수 없습니다. 제어 시스템,行程, 공구 매거진 및 좌표 정의가 다르므로 포스트프로세서를 다시 처리하고 검증해야 합니다. 시스템이 같더라도 먼저 공회전, 다음 첫 제품 시험 절삭으로 확인한 후 양산할 것을 권장합니다.
Key takeaways
- G 코드는 공작기계가 직접 실행하는 저수준 언어이며, CAM은 이를 생성하는 도구일 뿐이다. G 코드를 이해하면 현장 문제 해결에 도움이 된다.
- 단순 부품, 금형 수정, 단품 재작업에는 수기 작성이나 매크로 프로그램이 적합하고, 복잡한 곡면과 다공정 부품에는 CAM 프로그래밍이 더 적합하다.
- 포스트프로세서는 CAM 공구 경로가 안전하게 기계에 투입될 수 있는지를 결정하며, 기계나 시스템을 교체할 때는 포스트프로세서를 반드시 재검증해야 한다.
- 매크로 프로그램은 파라미터화된 시리즈 부품과 고정 사이클에 적합하지만, 가독성과 유지보수 비용을 저울질해야 한다.
- 프로그래밍 문제는 종종 치수 초과, 과절삭 또는 알람으로 나타나므로, 문제 해결 시 공구 경로, 포스트프로세서, 기계 파라미터 중 어디에 문제가 있는지 먼저 구분해야 한다.




