가공준비기능
preparatory function
머시닝센터, CNC, 선반 등 공작기계에 가공을 하기 위해 가공 사전에 가공명령어들을 프로그래밍하는 것으로 흔히 G 코드라고 한다.[1] CNC 가공의 핵심적인 요소 중 하나로 대체적인 명령어는 전세계적으로 통일되어 있으나, 기계의 특성이나 공작기계의 생산회사(정확히는 콘트롤러의 생산회사)에 따라 약간의 차이가 있다.
명령어는 한 개의 블록 단위로 구성되며 구성요소는
N(블록 넘버)
T(공구 지정)
S(주축 회전과 관련된 기능),
G(가공지령)
F(가공 속도 제어 기능)
M(보조 기능)
등이 있다.T(공구 지정)
S(주축 회전과 관련된 기능),
G(가공지령)
F(가공 속도 제어 기능)
M(보조 기능)
이 중 G기능이 가장 중요하며 G와 F를 제외한 나머지들은 공작기계가 점점 발달함에 따라 조금씩 추가된 것들이다(특히 M). 그래서 가공준비기능을 G코드라고 통상적으로 부르는 것이다.
블록의 형태는 N, (T, S,) G, F, M의 형식을 주로 취한다.
1. N
블록에 넘버를 부여한다. 보통은 생략되나 사이클을 사용할 경우 N10, N90 처럼 특정 블럭을 지정해야 할 때는 생략할 수 없다. 기종에 따라 자동으로 넘버가 부여되는 경우도 있다.
2. T
공구와 옵셋을 지정한다. ATC(Auto Tool Changer)나 터닝센터의 공구대(Tool post)가 부착된 기계에만 있다. 사용자가 필요에 따라 임의 장착한 공구를 호출하거나 수납할 때 사용되는 명령으로 각각의 공구에 번호를 부여하여 필요한 공구를 사용하게끔 하는 기능.
3. S
주축의 회전을 제어하는 기능으로 주축의 회전 수 지정, 주축의 최대 회전 수 지정, 주축의 일정가공 속도 지정)의 3가지의 용도로 주로 사용된다.
4. G
실질적인 가공지령을 하는 명령어로 G00부터 G99까지의 명령어가 있다.[2] 하지만 실질적으로 사용되는 것은 20~30가지로 그 구성은 대부분 동일하나 가공용도, 기종이나 제작회사에 따라 조금씩의 차이가 있다. 가공준비기능의 핵심을 담당하며 관련 자격증 준비자들을 좌절로 빠뜨리는 주범이기도 하다.
중요한 G 코드의 명령어들은 다음과 같다.
G00 - 급속이송, 위치결정이라고도 한다. 가공과 가공사이 공구를 빠르게 이송시키는 역할을 한다.
G01 - 직선보간, 일직선을 가공할 때 사용하는 명령어
G02 - 시계방향의 원호 가공
G03 - 반시계방향의 원호 가공
G04 - 휴지(dwell) 이송 일시 정지 기능
G17 - X-Y평면 설정(머시닝센터)
G18 - X-Z평면 설정(머시닝센터)
G19 - Y-Z평면 설정(머시닝센터)
G28 - 기계 원점으로 복귀
G30 - 제2 원점(공구 교환 지점)으로 복귀
G40 - 공구 경보정 취소
G41 - 공구 좌측 경보정
G42 - 공구 우측 경보정
G43 - 공구 길이 보정+
G44 - 공구 길이 보정-
G49 - 공구 길이 보정 취소
G50 - 주축 최대 회전수 제어/공작물 좌표계 설정(선반) S 명령어가 반드시 따라와야 한다.
G54 - 공작물 좌표계 1번 선택
G55 - 공작물 좌표계 2번 선택
G56 - 공작물 좌표계 3번 선택
G57 - 공작물 좌표계 4번 선택
G70 - 정삭 사이클(선반) 사이클 과정이 될 N을 반드시 지정해야 한다
G71 - 내, 외경 황삭 사이클(선반) N지정 필요
G73 - 고속 심공 드릴 사이클
G74 - 왼나사 태핑 사이클
G76 - 나사 사이클(선반),정밀 보링 사이클(머시닝센터)
G80 - 사이클 취소
G81 - 드릴 사이클(머시닝센터)
G82 - 카운터 보링 사이클(머시닝센터)
G84 - 태핑 사이클(머시닝센터), 암나사를 내기 위한 사이클
G90 - 내, 외경 황삭 사이클(선반), 절대 좌표 지령(머시닝센터)
G91 - 증분 지령/상대 좌표 지령
G92 - 나사 절삭 사이클(선반)/공작물 좌표계 설정(머시닝센터)
G94 - 단면 절삭 사이클(선반)/분당 이송 지령(머시닝센터)
G96 - 스핀들 주속 일정 제어(선반)
G97 - 스핀들 회전수 일정 제어(주속 일정 제어 취소)
G98 - 분당 일정 속도 이송 지령
G99 - 회전당 일정 속도 이송 지령
G01 - 직선보간, 일직선을 가공할 때 사용하는 명령어
G02 - 시계방향의 원호 가공
G03 - 반시계방향의 원호 가공
G04 - 휴지(dwell) 이송 일시 정지 기능
G17 - X-Y평면 설정(머시닝센터)
G18 - X-Z평면 설정(머시닝센터)
G19 - Y-Z평면 설정(머시닝센터)
G28 - 기계 원점으로 복귀
G30 - 제2 원점(공구 교환 지점)으로 복귀
G40 - 공구 경보정 취소
G41 - 공구 좌측 경보정
G42 - 공구 우측 경보정
G43 - 공구 길이 보정+
G44 - 공구 길이 보정-
G49 - 공구 길이 보정 취소
G50 - 주축 최대 회전수 제어/공작물 좌표계 설정(선반) S 명령어가 반드시 따라와야 한다.
G54 - 공작물 좌표계 1번 선택
G55 - 공작물 좌표계 2번 선택
G56 - 공작물 좌표계 3번 선택
G57 - 공작물 좌표계 4번 선택
G70 - 정삭 사이클(선반) 사이클 과정이 될 N을 반드시 지정해야 한다
G71 - 내, 외경 황삭 사이클(선반) N지정 필요
G73 - 고속 심공 드릴 사이클
G74 - 왼나사 태핑 사이클
G76 - 나사 사이클(선반),정밀 보링 사이클(머시닝센터)
G80 - 사이클 취소
G81 - 드릴 사이클(머시닝센터)
G82 - 카운터 보링 사이클(머시닝센터)
G84 - 태핑 사이클(머시닝센터), 암나사를 내기 위한 사이클
G90 - 내, 외경 황삭 사이클(선반), 절대 좌표 지령(머시닝센터)
G91 - 증분 지령/상대 좌표 지령
G92 - 나사 절삭 사이클(선반)/공작물 좌표계 설정(머시닝센터)
G94 - 단면 절삭 사이클(선반)/분당 이송 지령(머시닝센터)
G96 - 스핀들 주속 일정 제어(선반)
G97 - 스핀들 회전수 일정 제어(주속 일정 제어 취소)
G98 - 분당 일정 속도 이송 지령
G99 - 회전당 일정 속도 이송 지령
5. F
이송 속도를 제어하는 기능. G01, G02, G03 등 가공(보간) 명령 이후 반드시 한 번 이상은 지령되어야 하며 한 번 속도가 지령되면 다음 보간 명령에는 별도의 F 명령이 있지 않은 한 맨 마지막에 입력된 가공 이송 속도를 따라간다.
CNC선반의 경우 공작물은 회전하고 공구는 이송되므로 공작물의 회전에 따라 F의 단위가 변화한다. 공작물이 일정한 회전수를 가지는 G97에서는 통상 mm/rev(G99)을 사용하고[3] 공작물의 직경 방향 거리(통상 X축)에 따라 회전수가 변화하는 G96[4] 에서는 mm/rev(G99)나 m/min(G98)를 프로그램에 따라 사용한다.머시닝센터는 가공시 공작물은 가만히 고정되어 있고 공구가 회전과 이송을 모두 담당하기 때문에 mm/min를 대부분 사용한다. 다만 암나사 작업 등 예외는 있다.
예)
G97 S120 M03 = 주축을 120 RPM 으로 정회전시킨다.
G99 G01 Z10. F0.2(선반)= 현재 위치로부터 Z10 .지점까지 1회전당 0.2밀리미터의 이송속도로 절삭한다.
예2)
G50 S2000= 주축의 RPM이 2000을 넘지 않도록 한계를 설정한다.
G96 S1200 M03= 주축을 공구의 위치에 따라 1200mm/min의 절삭속도를 유지하도록 정회전시킨다.
G98 G01 X10. Z10. F0.2(선반) = 현재 위치로부터 X10. Z10. 지점까지 분당 0.2미터의 속도로 절삭한다.
G97 S120 M03 = 주축을 120 RPM 으로 정회전시킨다.
G99 G01 Z10. F0.2(선반)= 현재 위치로부터 Z10 .지점까지 1회전당 0.2밀리미터의 이송속도로 절삭한다.
예2)
G50 S2000= 주축의 RPM이 2000을 넘지 않도록 한계를 설정한다.
G96 S1200 M03= 주축을 공구의 위치에 따라 1200mm/min의 절삭속도를 유지하도록 정회전시킨다.
G98 G01 X10. Z10. F0.2(선반) = 현재 위치로부터 X10. Z10. 지점까지 분당 0.2미터의 속도로 절삭한다.
예3)
G98 G02 X10. Y10. R10. F200(머시닝센터) 현재 위치에서 X10. Y10.의 지점까지 1분에 200밀리미터의 이송속도로 시계방향으로 10.의 반지름을 가진 원호를 그리며 절삭한다.
G98 G02 X10. Y10. R10. F200(머시닝센터) 현재 위치에서 X10. Y10.의 지점까지 1분에 200밀리미터의 이송속도로 시계방향으로 10.의 반지름을 가진 원호를 그리며 절삭한다.
6. M
보조 기능, 공작기계에 보조적으로 붙어있던 장치들이 점점 자동화, 프로그램화 되면서 부가적으로 들어간 기능들이다. 초반에는 그 수가 적었지만 공작기계가 점점 발달하면서 G기능 못지않게 중요성이 부각된 기능들로 대체적으로 다음과 같이 구성되어 있다.
M코드 의경우 공작기계회사, 시스템회사마다 추가,삭제,옵션으로 넣는경우가있으며(파라메타조작) 코드가 공작기계회사,시스템회사마다 다른경우가 있다. 아래는 공통적으로 사용하는 M코드 목록.M00 프로그램 정지.
M01 프로그램 일시 정지.
M02 프로그램 종료.
M03 주축 정회전
M04 주축 역회전
M05 주축 정지
M06 공구 교환(머시닝센터) 호출할 공구 번호 T가 필요하다.
M08 절삭유 ON
M09 절삭유 OFF
M16 공구 수납(머시닝센터) 현재 사용중인 공구를 툴 매거진에 수납한다.
M30 프로그램 종료 후 프로그램 맨 선두로 되돌린다.
M98 보조 프로그램 호출
M99 보조 프로그램 종료
그외 M기능은 기계 제조사에서 별도로 지정한 기능이 있을수 있는데 그 예로 국내 H사 머시닝센터의 경우 M200 을사용하면 공구 길이 보정을 자동으로 실행한다.[5]M01 프로그램 일시 정지.
M02 프로그램 종료.
M03 주축 정회전
M04 주축 역회전
M05 주축 정지
M06 공구 교환(머시닝센터) 호출할 공구 번호 T가 필요하다.
M08 절삭유 ON
M09 절삭유 OFF
M16 공구 수납(머시닝센터) 현재 사용중인 공구를 툴 매거진에 수납한다.
M30 프로그램 종료 후 프로그램 맨 선두로 되돌린다.
M98 보조 프로그램 호출
M99 보조 프로그램 종료
7. CAM
과거에는 저 명령어들을 일일히 외워 많게는 수백, 수천줄에 달하는 명령어를 직접 입력하여 가공 프로그램을 작성해야 했으나 기술의 발달로 CAD에서 알아서 G코드를 추출해 주는 프로그램들이 속속히 등장했는데 이것을 CAM(Computer Aided Manufacturing)[6] 이라고 한다. 그러나 CAM만으로는 기계가 알아서 움직여 주는 것은 또 아니며, 최적화의 문제도 있기 때문에 때문에 현재의 산업 현장에서는 과거 공작기계의 모든 부분을 전담하던 오퍼레이터가 CAM만을 전문으로 추출하는 CAD 직원과 CAM이 실질적으로 기계에 사용될 수 있도록 기계를 세팅하는 세팅맨으로 점점 분화되고 있는 추세이다.
8. CNC밀링/머시닝센터 NC 프로그램 예시
G40 G80 G49 G90; (경보정 취소, 반복사이클 취소, 길이보정 취소, 절대좌표 지령)
G91 G28 Z0.; (Z축 원점복귀)
G30 (G91)X0.Y0.Z0..(공구 교환지점으로 이송)
M06 T01; (현재 공구를 1번공구로 교환, CNC밀링은 ATC[7] 가 없으므로 오류발생)
G90 G54 G00 X10. Y10. M03 S3000; (G54좌표계 절대좌표 x10,y10 으로 이동하면서 3000RPM으로 주축회전)
G43 Z50. H01 M08; (길이보정 1번을 적용시켜 Z좌표50으로 이동. 절삭유분사)
G04 P3000; (3초간 대기)
G98 G83 Z-22. Q3. R2. F500; (Z2.까지 급속이송 내려간 후 팩드릴링 사이클로 1회3mm 분당500mm로 z-22.까지 가공. 가공후 초기점 복귀)
G80 M09; (반복사이클 취소, 절삭유급유 정지)
G91 G30 Z0.; (공구 교환지점으로 이송)
M06 T02; (2번공구 교환)
G90 G54 G00 X10. Y10. M03 S800; (G54좌표계 절대좌표 x10,y10 으로 이동하면서 800RPM으로 주축회전)
G43 Z50. H02 M08; (길이보정 2번을 적용시켜 Z좌표50으로 이동. 절삭유분사)
G04 P3000; (3초간 대기)
G98 G84 Z-20. R2. F1200; (Z2.까지 급속이송 내려간 후 태핑 사이클로 분당1200mm로 z-20.까지 가공. 가공후 초기점 복귀)
G80 M09; (반복사이클 취소, 절삭유급유 정지)
M05; (주축정지)
G91 G28 Z0.; (Z원점복귀)
G91 G28 x0. y0.;(x,y 원점복귀)
M30; (프로그램 종료)
어느정도 경험이 있다면 드릴(1번공구)직경이 6.8mm / 2번공구가 M8x1.25 탭 이라는 것을 짐작할수 있다.
[1] 3D 프린터의 제어 코드 또한 G코드라고 부른다.[2] 최신 기계는 3자리 수 이상의 G코드가 있기도 한다.[3] 최초 작성자의 견해이며, G97과 G99를 꼭 쌍으로 쓰라는 법은 없다[4] 공작물의 직경이 달라질 때 같은 회전수를 가지고 있다면 직경에 따른 원주의 변화로 같은 가공값을 기대하기 힘들기 때문에 G96을 사용한다. G96을 사용하면 공작물의 직경이 작아질수록 회전수가 빨라진다. 단 이렇게 되면 공구가 X0. 즉 공작물의 중심에 가까워질수록 회전수가 기하급수적으로 빨라지기 때문에 반드시 G50(주축 최고 회전수 지정)을 지정하여 그 이상 회전하지 않도록 해야 한다. [5] 테이블에 이를위한 센서가 장착되어 있다.[6] 물론 CAM이 이것만을 의미하는 것은 아니지만 가장 많이 사용되는 것은 이것이다. [7] 자동공구교환장치