일관성 있고 호환되는 G코드 관행으로 CNC 효율 높이기
G코드 프로그램 간의 일관성 정도는 CNC 공작기계 생산성에 긍정적이든 부정적이든 영향을 미칩니다. 이는 프로그램 내 다양한 공구 명령들, 특정 기계 유형에 대한 여러 프로그램들, 심지어 다른 기계 유형 간 프로그램들에도 해당됩니다.
일관성은 셋업 담당자와 운영자가 프로그래밍 방법에 쉽게 익숙해지도록 합니다. 프로그래밍 구조의 불일치를 발견하면 실수를 감지할 수 있습니다. 반면 불일관은 CNC 사용자들을 혼란스럽게 만듭니다. 프로그램이 어떻게 동작하는지 파악하느라 추가 시간을 쓰게 되고, 프로그램이 뭘 하는지 이해 못 해 실수할 수도 있습니다. 프로그램 흐름을 아는 사람이 모르는 사람보다 더 생산적입니다.
여러 공구를 쓰는 모든 프로그램을 구성하는 네 가지 구조와 일관성 관련 권장사항:
- 프로그램 시작 구조: 유사 기계용 모든 프로그램을 같은 명령으로 시작하십시오. CNC 워드 값은 프로그램마다 달라지지만 구조는 같아야 합니다.
- 공구 시작 구조: 모든 프로그램의 모든 공구를 같은 명령으로 시작하십시오. 역시 값은 달라져도 구조는 일관되게.
- 공구 종료 구조: 모든 프로그램의 모든 공구를 같은 명령으로 끝내십시오.
- 프로그램 종료 구조: 주어진 기계용 모든 프로그램을 같은 명령으로 끝내십시오.
CAM 시스템은 이 규칙들을 어기는 것으로 악명 높습니다. 필요한 모든 워드와 명령이 프로그램에 들어있지만, 순서가 뒤죽박죽인 경향이 있습니다. 대부분 CAM 시스템은 G코드 출력을 커스터마이즈할 수 있게 하지만, 많은 사용자가 이 중요한 시스템 설정 작업을 무시합니다. CAM 시스템이 돌아가는 프로그램을 만들어내면 G코드 출력 손질을 멈춥니다. 다시 말하지만, 구조가 더 일관될수록 CNC 사용자가 더 쉽습니다.
호환성도 생산성에 영향을 줍니다. 다른 제조사의 유사 기계들 간에는 유사 기능에 대한 프로그래밍 명령에 사소한 차이가 있기 마련입니다. 같은 부품을 이런 유사 기계들에서 돌릴 때, 운영자는 매우 비슷하지만 별도의 프로그램을 각 기계마다 유지해야 합니다. 수정 없이 같은 프로그램을 모든 유사 기계에서 돌릴 수 있게 하면 필요한 프로그램 수를 획기적으로 줄일 수 있고, 이는 프로그램 생성과 유지보수 시간을 없애줍니다.
주요 차이는 주로 M코드 번호와 관련 있습니다. 예컨대 한 터닝 센터는 저속 스핀들 레인지 선택에 M41, 고속에 M42를 쓰지만, 다른 기계는 M23, M25를 쓸 수 있습니다. M코드 번호가 유일한 차이라면, FANUC CNC의 사용자 정의 M코드로 쉽게 해결돼 같은 프로그램을 두 기계에서 돌릴 수 있습니다.
여기선 과정을 자세히 설명하지 않겠지만, 요지는 CNC가 특정 M코드(예: M41)를 보면 다른 M코드(예: M23)를 실행하는 프로그램을 수행하도록 파라미터를 설정하는 것입니다. 이렇게 하면 M23을 저속 선택에 쓰는 기계를 M41이 들어간 프로그램으로 돌릴 수 있게 됩니다.
다른 프로그래밍 차이는 명령 구조와 관련돼 더 어려울 수 있지만 불가능하진 않습니다. 한 기계는 원호 명령에 방향 벡터(I, J, K)를 요구하지만 다른 기계는 R워드를 허용할 수 있습니다. 한 기계는 표준 공작물 좌표계 오프셋(G54~G59)을 쓰지만 다른 기계는 확장 옵션(G54.1과 P워드)을 쓸 수 있습니다.
다시 세부 사항은 생략합니다. 일반적으로 커스텀 매크로로 기계 플래그를 영구 공통 변수에 설정해 프로그램이 어느 기계에서 돌아가는지 판단하게 합니다. 프로그램 내 로직이나, 더 나은 건 별도 커스텀 매크로 프로그램에서 기계 플래그를 보고 적절한 명령을 실행합니다.
위에서 언급한 공작물 좌표계 오프셋 관련 명령들입니다. 영구 공통 변수 #510을 키로 써서 어느 기계인지 판단합니다. #510이 1.0이면 기계 A(G54), 2.0이면 기계 B(G54.1 P1).
- .
- IF[#510 EQ 1.0] GOTO 10 (기계 A)
- G54.1 P1 (기계 B)
- GOTO 15 (다른 쪽 건너뛰기)
- N10 G54
- N15…
- .
이런 명령들은 별도 프로그램, 예컨대 G54로 호출되는 사용자 정의 G코드 프로그램에 넣어 메인 가공 프로그램에 안 들어가게 하는 게 더 나을 수 있습니다.
이런 방식과 약간의 아이디어로 기계 간 거의 모든 프로그래밍 차이를 극복할 수 있습니다. 관련 기계와 프로그램이 많을수록 유지보수해야 할 프로그램 수를 더 많이 줄일 수 있습니다.