G70 G71 G72 선반 황삭 및 정삭 사이클 완벽 가이드
Fanuc, Siemens, Mitsubishi CNC 제어반에서 G70, G71, G72 복합 황삭 및 정삭 canned cycle을 올바르게 프로그래밍하는 핵심 규칙. 주요 시스템 파라미터 조정 및 충돌 방지, 돌발 에러 알람 분석 해결 가이드.
서론
CNC 선반 가공 중 공작물이 clamp나 vise jaw에 견고하게 고정되지 않은 채 G71 사이클의 급격한 방향 전환과 절삭 부하를 받으면, 소재가 spindle에서 이탈하여 공구와 장비에 영구적인 손상을 초래하는 치명적인 충돌 사고로 이어진다. 황삭 사이클을 실행하기 전에 cycle start point를 피삭재의 pocket 내부나 황삭 여유 경계선에 너무 가깝게 배치하는 설계 오류는 공구를 기계적 한계점 이하로 급이송하게 만들어 turret, chuck, clamp 또는 vise jaw와 격렬한 hard collision을 유발한다. 이러한 물리적 충돌은 장비에 가해지는 순간적인 부하로 인해 즉각적인 servo overload alarm code를 발생시키며, 고가의 carbide insert를 완전히 박살 내고 가공 중인 소재를 재생 불가능한 scrap part로 만들어 생산 라인을 마비시킨다. 자동화 라인의 생산성과 가동률을 확보하고 불량률을 극도로 낮추기 위해, 프로그래머는 황삭 진입 전 공구의 시작 위치가 실제 raw material 경계선 외곽의 안전한 retract clearance plane에 도달했는지 확인해야 한다.
기술 요약
| 기술 속성 | 사양 세부 정보 |
|---|---|
| Command Codes | G70 (Finishing cycle), G71 (Longitudinal Roughing cycle), G72 (Transverse Roughing cycle) |
| Modal Group | 선반 황삭 및 정삭 canned cycle (Non-modal 그룹 00 / 1회 실행) |
| Supported Brands | Fanuc, Siemens, Mitsubishi |
| Critical Parameters | Parameter No. 5146 (Fanuc: unmonotonous 형상 편차), MD20360 (Siemens: 평면 G-code 유지 우선순위), Parameter #8051 (Mitsubishi: 전체 절삭 깊이) |
| Main Constraint | 윤곽 프로파일의 첫 번째 이송 block (P block)은 반드시 선형 명령 (G00/G01)이어야 하며, 윤곽 시작 부분에서의 원호 보간 (G02/G03)은 엄격히 금지됩니다. Siemens 제어 장치에서는 MDA mode에서 cycle을 호출하는 것이 금지됩니다 (Alarm 14011). |
핵심 요약
- 공간적 위치 설정: 공구 시작 좌표를 미가공 소재 경계 외곽의 안전한 위치에 지정하여 확실한 clearance retract plane을 설정하십시오.
- 단조성 제한: Type I 윤곽 경로가 일정한 증가 또는 감소 방향으로만 이송되도록 설계하여 non-monotonic profile alarm을 방지하십시오.
- 보정 해제: G71/G72 황삭 가공 시에는 tool nose radius compensation (G40)을 해제하고, G70 finishing cycle 실행 시에만 보정 (G41/G42)을 재적용하십시오.
- 블록 포맷: 제어 장치의 특정 brand parameter 구성에 따라 기존의 2블록 구문 구조와 전용 single-block 구문 구조 중에서 선택하십시오.
- 명령 위치: 무한 루프 발생을 방지하기 위해 실제 윤곽 정의 block 앞에 G71/G72 canned cycle 명령 block을 위치시키십시오.
- 가동 모드 확인: Siemens 제어 장치에서는 MDA mode에서의 실행이 금지되므로 선반 고정 cycle을 반드시 표준 Automatic 모드에서만 실행하십시오.
기본 개념
G71, G72 및 G70 cycle을 사용하는 실질적인 프로그래밍 효과는 방대한 양의 수동 G-code 작성을 없애는 것입니다. 단차 샤프트나 facing 원판의 황삭 작업을 위해 수십 개의 개별 경로를 프로그래밍하는 대신, 프로그래머는 공작물의 최종 형상 프로파일만 정의하면 CNC가 필요한 수십 개의 황삭 패스를 자동으로 계산합니다. 제어 장치는 이 완제품 형상으로부터 수학적으로 역산하여 지정된 depth of cut 및 retract parameter를 기반으로 모든 중간 황삭 패스를 자동으로 생성합니다. 이러한 자동화는 프로그래밍 오류를 크게 줄이고 최적화된 turning 경로 생성을 단순화합니다.
이 cycle들을 적용할 때 프로그래머와 오퍼레이터는 tool nose radius compensation (G40, G41, G42)의 modal 상태를 지속적으로 모니터링해야 합니다. 황삭 cycle (G71, G72)을 수행하는 동안 CNC는 공구 반경 보정을 자동으로 정지(suspend)시켜 보정되지 않은 황삭 공구 경로가 피삭재 표면에 정밀하고 균일한 finishing allowance를 남기도록 합니다. G70 finishing cycle이 호출되면 제어 장치가 보정을 재적용하여 최종 미세 치수를 절삭합니다. 이러한 전환을 올바르게 관리해야 형상 불일치를 방지하고 주요 치수를 허용 공차 내로 유지할 수 있습니다.
프로그래머는 공구의 시작 위치가 미가공 소재 경계 외곽에 안전하게 위치하는지 반드시 확인해야 합니다. 만약 공구가 미가공 소재 내부에 있거나 볼록한 외곽 형상에 너무 가깝게 배치되면, 공구가 시작 clearance plane으로 급이송(rapid)해 복귀할 때 매우 심각한 충돌이 발생할 것입니다. 이러한 cycle을 사용할 때 흔히 발생하는 실패 원인은 G71 또는 G72 block을 실행하기 전 cycle start point의 부적절한 공간 설정입니다. 안전한 기계 가동을 위해서는 cycle start point를 원소재 blank에서 충분히 떨어진 곳에 지정해야 합니다. 장비는 매 황삭 가공 후 이 좌표를 rapid retract clearance plane으로 사용하기 때문입니다.
명령 구조
복합 선반 cycle의 구문은 역사적으로 표준 ISO 2블록 형식과 제조업체 독자적인 single-block 구성으로 나뉩니다. 표준 2블록 구문에서 첫 번째 block은 chip breaking과 공구 도피(relief)를 위한 패스당 depth of cut 및 후퇴(retraction) clearance 양을 설정하는 셋업 라인 역할을 합니다. 이 두 설정은 다른 값으로 덮어써지거나 가공이 완료될 때까지 황삭 cycle 내내 modal 상태로 유지됩니다.
두 번째 명령 block은 finishing allowance 및 기술적인 feed 데이터와 함께 실제 윤곽(contour) 시퀀스 마커를 지정합니다. 윤곽의 시작점과 끝점은 특정 시퀀스 번호(N-block)로 구분되며, 독립적인 좌표 레지스터는 이어지는 finishing 패스를 위해 남겨둘 잔여 두께를 정의합니다. cycle을 실행할 때 제어 장치는 윤곽 block 내부에서 정의된 속도(speed) 및 feed 변수를 무시하고, 황삭 가공 중에는 메인 cycle parameter만 사용합니다.
; ISO 표준 2블록 구문: G71 U[depth] R[retract]; G71 P[start_seq] Q[end_seq] U[allowance_x] W[allowance_z] F[feed] S[speed] T[tool];
G70 P[start_seq] Q[end_seq];
| 주소 문자 | 기능 설명 | 기술 사양 및 단위 |
|---|---|---|
U (1st Block) | 패스당 절삭 깊이 (depth) | 시스템 단위(units)에 따라 mm 또는 inch 단위로 지정되는 반경 값. |
R (1st Block) | 도피/탈출량 (retract) | 공구 도피 및 chip breaking을 위한 반경 방향 retraction 거리. |
P (2nd Block) | 정삭 프로파일의 시작 시퀀스 번호 | 윤곽의 시작 N-block 번호에 해당. |
Q (2nd Block) | 정삭 프로파일의 종료 시퀀스 번호 | 윤곽의 종료 N-block 번호에 해당. |
U (2nd Block) | X축 정삭 여유량 (allowance_x) | 정삭을 위해 X축에 남겨둔 직경 또는 반경 여유 소재. |
W (2nd Block) | Z축 정삭 여유량 (allowance_z) | 정삭을 위해 Z축에 남겨둔 여유 소재. |
F | 가공 feedrate | mm/rev 또는 mm/min 단위로 지정된 황삭 feedrate. |
S | spindle 속도 | 황삭 중 활성화되는 일정 표면 속도(CSS) 또는 RPM. |
T | 공구(tool) 선택 | 황삭용 공구 형상 및 오프셋 인덱스 지정. |
브랜드별 응용
Fanuc
Fanuc 제어 장치는 선삭 및 단면 가공 cycle을 정의하기 위해 엄격한 2블록 형식에 크게 의존합니다. 기계의 운동학(kinematics)에 따라 사용 가능한 명령어가 결정됩니다. 선반(lathe)은 표준 G71 명령을 사용하며, 머시닝 센터(machining center)는 외경 황삭 가공을 위해 동일한 기능을 수행하는 G71.7 cycle을 할당합니다.
종방향 황삭 가공 및 후속 정삭 프로파일 호출을 위한 전형적인 G-code 구조는 다음과 같이 프로그래밍됩니다.
G71 U2.0 R1.0;
G71 P100 Q200 U0.5 W0.1 F0.25;
G70 P100 Q200;
윤곽 프로파일 검사 및 alarm parameter를 관리하기 위해, 제어 장치는 전용 parameter 레지스터를 사용합니다. 예를 들어, Parameter 5146은 unmonotonous 형상 프로파일의 허용 편차 값을 설정하고, Parameter 5104 bit 2는 사전 가공 프로파일 검사 상태를 관리합니다.
| 분류 | 항목 코드 | 기술 사양 / 가동 세부 정보 |
|---|---|---|
| System Parameter | Parameter No. 5146 | G71 및 G72에서 unmonotonous 형상에 대한 허용 값을 정의합니다. 실제 값 범위는 0에서 depth of cut까지입니다. |
| System Parameter | Parameter No. 5104.2 (FCK) | 가공 프로파일을 cycle 시작 전에 검사할지 여부를 결정합니다. 0: 미검사, 1: 검사. |
| System Parameter | Parameter No. 5102.2 (QSR) | 시작 전에 윤곽 종료 block인 Q의 존재 여부를 검사합니다. 0: 미실행, 1: 실행. |
| System Parameter | Parameter No. 5107.0 (ASU) | 마지막 선삭 시작 좌표로 복귀할 때 rapid traverse (1)를 사용할지, 절삭 feed (0)를 사용할지 지정합니다. |
| Alarm Code | PS0064 | Monotonic change 검사 실패. Type I cycle에서 정삭 프로파일이 한 방향으로 연속적으로 증가하거나 감소하지 않습니다. |
| Alarm Code | PS0322 | 정삭 형상이 시작점을 초과했습니다. cycle start point 좌표가 윤곽의 최대 한계 영역보다 안쪽에 치우쳐 있습니다. |
| Alarm Code | PS0063 | QSR 검사가 활성화된 상태에서 활성 메인 프로그램 내에 주소 Q로 지정된 시퀀스 번호를 찾을 수 없습니다. |
| Kinematics Option | T vs M Series | T-series 선반(lathe)은 표준 G70/G71/G72를 사용합니다. M-series 머시닝 센터는 이 할당 명령을 G70.7/G71.7/G72.7로 변환합니다. |
| Format Version | FS15-TA format | 제어 장치가 G71/G72 블록 내부의 황삭 allowances I 및 K를 무시하는 레거시 프로그래밍 형식입니다. |
경고: 마지막 turning 시작 위치 복귀 방식을 rapid traverse로 인출하도록 Parameter 5107을 잘못 구성하면 chuck, 심압대 배리어(tail stock barrier) 또는 turret과 극심한 hard collision을 일으킬 수 있습니다. 이러한 구성 오류는 즉시 공구를 파손하고 소재를 완전히 망가뜨려 scrap part로 만듭니다.
Siemens
Siemens Sinumerik 제어 장치는 내부 시스템 변수를 통해 G71 명령의 변수들을 캡처하여 실행합니다. 제어 장치는 이러한 다이얼렉트(dialect) 입력값들을 종방향 황삭용 CYCLE371T와 같은 native Siemens shell cycle로 백그라운드에서 매핑합니다.
선반 황삭 및 정삭 패스를 위해 Siemens 환경에서 작성되는 표준 ISO-dialect 구문은 다음과 같이 프로그래밍됩니다.
G71 U2.0 R1.0
G71 P80 Q120 U0.5 W0.2 F200
G70 P80 Q120
Siemens는 프로그래밍된 변수들을 백그라운드 채널 파라미터로 격리하여 G71 cycle이 G72용 변수를 덮어쓰지 않도록 합니다. 또한 활성화된 G-code 시스템에 따라 cycle 기능을 변환하는 동적 다이얼렉트 전환 기능도 제공합니다.
| 분류 | 항목 코드 | 기술 사양 / 가동 세부 정보 |
|---|---|---|
| System Parameter | SD55410 | $SCS_MILL_SWIVEL_ALARM_MASK는 CYCLE800에서 swivel alarm 창의 표시를 조절합니다 (32-bit DWORD). |
| System Parameter | SD55221 | Bit 5는 기하 축 Y가 누락되었을 때의 기계적 제약 요건을 관리합니다 (0 또는 1 bit flag). |
| System Parameter | MD20360 | $MC_TOOL_PARAMETER_DEF_MASK Bit 18은 평면 전환 중 공구 평면 G-code 유지 우선순위를 제어합니다. |
| System Data | GUD registers | 캡처된 변수들은 shell 실행 전에 Global User Data 레지스터(예: _ZFPR)에 저장됩니다. |
| Alarm Code | Alarm 14011 | 고정 cycle G70 ~ G73이 MDA (Manual Data Automatic) 모드 내부에서 프로그래밍되었거나 실행되었습니다. |
| Alarm Code | Alarm 61805 | 중간 Siemens shell contour 블록에서 절대 및 증분 좌표가 동시에 프로그래밍되었습니다. |
| Alarm Code | Alarm 61801 | cycle 호출에 허용되지 않는 값이 프로그래밍되었거나 활성 G-code 시스템의 세팅 데이터에 오류가 있습니다. |
| ISO Dialect Mode | System Dialects | System A 및 B는 표준 코드로 매핑됩니다. System C는 G70을 G72로, G71을 G73으로, G72를 G74로 변환 매핑합니다. |
경고: 시퀀스 마커 P와 Q 사이에 서브루틴 호출 M98 또는 서브루틴 종료 M99를 프로그래밍하는 것은 cycle 가동 중 엄격히 금지됩니다. 이 잘못된 명령은 Siemens 내부 shell cycle의 분석 장애를 초래하여 가공을 강제 정지시킵니다.
Mitsubishi
Mitsubishi 시스템은 기존의 표준 2블록 명령 줄과 독자적인 single-block 구성을 동시에 제공하는 매우 유연한 선삭 cycle 구조를 제공합니다. 이를 통해 depth of cut 및 retract 양을 시스템 메모리에 전역으로 관리할 수 있습니다.
표준 2블록 형식과 커스텀 single-block 형식 (MITSUBISHI CNC Special Format)의 명령어 구조는 다음과 같습니다.
; 기존의 2블록 형식: G71 U3.0 R1.0 H0 ; G71 P100 Q200 U0.5 W0.2 F0.25 ;
; 독자적인 1블록 형식: G71 P100 Q200 U0.5 W0.2 D2.0 F0.3 ;
parameter #8051 및 parameter #8052와 같은 전역 parameter는 가역 레지스터(reversible registers)로 동작합니다. 블록에서 U 및 R 주소를 코딩하면 실시간으로 해당 parameter 영역에 직접 기록됩니다.
| 분류 | 항목 코드 | 기술 사양 / 가동 세부 정보 |
|---|---|---|
| System Parameter | Parameter #8051 | G71 THICK은 황삭 cycle용 글로벌 depth of cut을 저장합니다. 설정 범위: 0 ~ 99999.999 mm. |
| System Parameter | Parameter #8052 | G71 PULL UP은 cycle 시작점으로 복귀할 때의 글로벌 retract 양을 저장합니다. 범위: 0 ~ 99999.999 mm. |
| System Parameter | Parameter #1270 | ext06/bit2는 형상 검색을 탑 서치(0)로 수행할지 또는 저장된 메인/시퀀스 매칭(1)으로 수행할지 결정합니다. |
| System Parameter | Parameter #1265 | ext01/bit0은 기존의 2블록 형식(0)과 특별한 1블록 형식(1) 간의 전환을 지정합니다. |
| Alarm Code | P32 | parameter #1265를 통해 특별한 1블록 형식이 선택되었을 때 G71/G72 내부에서 주소 R 또는 A가 사용되었습니다. |
| Alarm Code | P33 | 기존의 2블록 형식이 선택되었으나 복합 선반 cycle의 첫 번째 셋업 블록이 생략되었습니다. |
| Alarm Code | P204 | 완성 형상 프로파일이 동일한 메인 프로그램에 저장되어 있지만 시퀀스 번호 P와 Q가 모두 누락되었습니다. |
| Kinematics Option | L vs M System | L-system 선반에서는 G70-G76이 복합 선삭 cycle로 동작합니다. M-system 밀링에서는 G70-G89가 드릴링 및 탭핑 구멍 가공 cycle로 매핑됩니다. |
| External Reference | A Address | 파일명에 꺾쇠 괄호(예: <PROFILE>)를 씌워 알파뉴메릭 방식의 외부 서브프로그램 호출을 지원합니다. |
경고: 완성 형상 프로파일을 메인 프로그램에 저장하면서 윤곽 시작 및 종료 시퀀스 번호 P와 Q를 누락하면 즉각적인 P204 alarm이 발생합니다. 이 프로그램 에러는 가공을 정지시키고 주소가 지정될 때까지 모든 기계 작동을 제어 장치에서 락(lock)합니다.
브랜드 비교
| 기능 비교 | Fanuc 제어 시스템 | Siemens Sinumerik 시스템 | Mitsubishi CNC 시스템 |
|---|---|---|---|
| 기저 엔진 | CNC 코어에 의해 표준 하드웨어 canned cycle로 직접 해석 및 실행됩니다. | GUD 레지스터에 변수를 보존하면서 native Siemens shell cycle (예: CYCLE371T)로 전송되어 백그라운드에서 구동됩니다. | 로컬 시스템 변수 및 가역 parameter를 사용하는 복합 canned cycle 구조로 실행됩니다. |
| 명령 형식 | 엄격한 2블록 명령 구조를 지닙니다. | 사용자 설정과 cycle에 따라 2블록 또는 single-block 모드를 제공합니다. | 표준 2블록 및 절삭 깊이를 지정하는 D 주소가 포함된 특수 1블록 형식을 동시 지원합니다. |
| 외부 파일 참조 | 표준 서브루틴 프로그램 번호(순수 숫자 형식만 지원)로 지정 및 호출해야 합니다. | 표준 서브프로그램 구조를 통해 백그라운드에서 매핑됩니다. | A 주소의 <파일명> 형식을 통해 알파뉴메릭 문자 포함 파일의 직접 지정을 지원합니다. |
| 포켓(Pocket) 황삭 | Type II cycle 하에서 지속적인 non-monotonic 검증 및 parameter 5146 편차 허용 기능을 통해 지원됩니다. | 고급 윤곽 shell 계산 프로그램을 통해 가공 영역이 정의됩니다. | H 주소 지정을 통해 pocket 가공 모드 활성 여부를 직접 구분합니다 (0=미사용, 1=사용). |
| 머시닝 센터 매핑 | M-series 시스템에서는 동일 기능을 처리하는 G70.7, G71.7, G72.7 cycle을 사용합니다. | — (no source) | M-system 밀링 장비에서는 G70-G76이 구멍 가공 cycle (정밀 보링, 탭핑)로 완전히 전치 매핑됩니다. |
기술 분석
Fanuc의 아키텍처는 복합 반복 cycle을 처리할 때 매우 독특한 배경 작동을 보여줍니다. 첫째, Fanuc은 장비 유형에 따라 기본 G-code 정의를 동적으로 전환합니다. 머시닝 센터에서는 G71.7 및 G72.7을 활용하는 반면, 표준 선반(lathe)은 G71 및 G72로 제한하여 수학적 물리 영역을 완벽하게 구분합니다. 둘째, Fanuc은 이중 구조 기하 평가 시스템(Type I 대 Type II)을 결합하여 단순 monotonic 윤곽과 pocket을 동반한 복잡한 윤곽을 엄격히 감지하며, 각 형식의 황삭 가공을 지배하는 서로 다른 parameter 구성(예: Parameter 5105)을 요구합니다. 마지막으로, Fanuc은 미세 오류가 불가피한 CAM 포스트 프로세서와 완벽한 CNC 연산의 오차를 해소하기 위해 극도로 정밀한 parameter 제어(예: Parameter 5146)를 제공하며, 제어 장치가 cycle 정지 오류 대신 미세한 경로 오차를 동적으로 무시하고 정상 가공을 속행할 수 있도록 만듭니다.
Siemens는 세 가지 첨단 백그라운드 구동 방식을 바탕으로 다른 제어 장치 브랜드와 turning cycle 아키텍처를 강력하게 차별화합니다. 첫째, Siemens는 이 ISO-dialect 명령어들을 감지하여 내부 native Siemens "shell cycle" (예: CYCLE371T)로 은밀히 라우팅합니다. ISO G71 또는 G72가 읽히면, 제어 장치는 내부 시스템 변수(예: $C_xx)를 통해 인자값을 캡처하고 채널 전용 Global User Data (GUDs, 예: _ZFPR) 레지스터에 보존한 다음 고도로 최적화된 Siemens 표준 동작 cycle을 호출합니다. 이를 통해 레거시 ISO 프로그램이 그대로 구동되면서 Siemens 고유의 뛰어난 kinematics 이점을 동시에 누릴 수 있습니다. 둘째, Siemens는 실행 중인 G-code 시스템(A, B, 또는 C)에 따라 G-code의 물리 기능 자체가 완전히 변환되는 동적 다이얼렉트 전환(dynamic dialect shifting) 기능을 지원합니다. 만약 System C가 활성화되면 G71 명령은 황삭 동작을 전면 포기하고 G73/G74로 전환되며, 이전 프로그램 오동작으로 인한 치명적이고 의도하지 않은 비정상 공구 이동을 사전에 원천 차단합니다. 마지막으로, Siemens는 백그라운드 메모리 레지스터 내에서 각 cycle의 parameter 데이터를 완전히 구조적으로 격리합니다. 즉, 외경 황삭(G71)용 변수들은 단면 황삭(G72)용 변수와 완벽히 격리된 메모리 주소에 저장되므로, 황삭의 가공 방향을 빠르게 전환하며 교차 구동할 때 다른 방향의 가공 깊이나 retract 경로 데이터가 오버라이트되는 데이터 손상 사고를 차단합니다.
Mitsubishi는 매우 가변적이고 편리한 다수의 기능을 통해 CNC turning cycle 분야에서 뛰어난 아키텍처 유연성을 보입니다. 첫째, Mitsubishi는 "가역 parameter(Reversible Parameters)" (예: #8051 G71 THICK 및 #8052 G71 PULL UP) 구조를 전면 도입했습니다. 이 방식을 활용하면 depth of cut 및 retract 양이 시스템 내부의 전역 레지스터에 보존됩니다. 따라서 작업자는 G-code 파일 자체를 수정할 필요 없이 직접 parameter 세팅 화면에서 가공 깊이를 바꿀 수 있고, 반대로 G71 블록에 U 및 R 인자값을 지정하면 즉시 제어 파라미터 값이 실시간으로 동적 갱신됩니다. 둘째, Mitsubishi는 특허화된 1블록 포맷("MITSUBISHI CNC Special Format")을 활용합니다. 타사 시스템이 가공 깊이와 형상 정의를 위해 엄격한 2블록 명령 줄을 강제하는 것과 달리, Mitsubishi는 가공 깊이를 D 주소에 할당하여 전체 cycle 구문을 단 하나의 block으로 요약 구성할 수 있습니다. 마지막으로, Mitsubishi는 순수 숫자 형식의 서브프로그램 명명 제한을 완전히 파괴했습니다. 만약 최종 가공 형상 프로파일이 외부 파일에 개별 보존되어 있다면, 프로그래머는 꺾쇠 괄호 안에 알파뉴메릭 문자가 조합된 실제 파일명(예: <ROUGH_PROFILE>)을 작성하여 A 주소로 즉시 로드할 수 있어 현장에서의 서브프로그램 관리 효율을 극대화합니다.
프로그램 예제
Fanuc 프로그램 예제
G00 X80.0 Z5.0 ; 공구를 cycle 시작 위치(clearance plane)에 배치
G71 U2.0 R1.0 ; 절삭 깊이를 2.0mm로, retract 도피량을 1.0mm로 설정
G71 P100 Q200 U0.5 W0.1 F0.25 ; X/Z 축 여유량을 가진 N100 ~ N200 윤곽 황삭 수행
N100 G01 X20.0 Z0.0 F0.15 ; 윤곽 시작 블록 (반드시 선형 G01/G00이어야 함)
G01 X20.0 Z-20.0 ; 선형 turning 패스
G02 X40.0 Z-30.0 R10.0 ; 원호 보간 패스 (원호 프로파일)
G01 X60.0 Z-30.0 ; 단면 가공(facing) 단계
G01 X60.0 Z-50.0 ; 종방향 선삭(turn)
N200 G01 X80.0 Z-55.0 ; 윤곽 종료 블록
G70 P100 Q200 ; 정의된 N100 ~ N200 윤곽을 사용하여 G70 정삭 패스 실행
공운전 (dry run) 워크스루
Fanuc 프로파일의 공운전을 안전하게 수행하려면 먼저 기계의 Z축을 고정(lock)하고 조작반에서 공운전 토글을 활성화하여 기계를 실제 가공 구역과 격리하십시오. 프로그램을 한 블록씩 실행(single block)해 보십시오. turret이 Z5.0 및 X80.0 위치로 급이송하는지 관찰하고, 절삭 공구 팁이 피삭재 blank face에서 정확히 5.0mm 안전 거리에 정지했는지 확인하십시오. G71이 실행될 때, 공구가 반경 방향으로 2.0mm 가공 진입 후 매 패스마다 1.0mm씩 retract 탈출하는 것을 주시하여 안정적인 chip breaking이 구현되는지 검증하십시오. 황삭 cycle이 끝나면 공구가 X80.0 Z5.0 원점으로 정확히 복귀하는지 검사하십시오. 다음으로 정삭 공구가 인덱싱되어 윤곽 N100에서 N200까지 활성 feedrate (F0.15)로 정확히 매핑된 실가공 프로파일을 미세 추종하는지 관찰하며 가공 오차가 없는지 확인하십시오. 끝으로 어떠한 alarm code (예: PS0064 또는 PS0322)도 트립되지 않아 완벽한 monotonous 동작성과 피삭재 경계 외곽의 안전 인출 경로가 성립되는지 최종 확인하십시오.
Siemens 프로그램 예제
G00 X80.0 Z5.0 ; 안전 진입 시작 위치로 급이송
G71 U2.0 R1.0 ; Siemens shell-mapped 황삭 parameter 호출
G71 P80 Q120 U0.5 W0.2 F200 ; allowances 여유량을 포함한 윤곽 시작/종료 마커 정의
N80 G01 X20.0 Z0.0 ; 첫 번째 윤곽 블록 (선형 위치 지정)
G01 X20.0 Z-25.0 ; 선삭 샤프트 단면
G03 X50.0 Z-40.0 CR=15.0 ; 반경 CR을 사용한 원호 보간
G01 X50.0 Z-60.0 ; 숄더 가공 선삭
N120 G01 X80.0 Z-60.0 ; 최종 윤곽 블록
G70 P80 Q120 ; 매핑된 CYCLE371T 경로에 대한 정삭 패스 실행
공운전 워크스루
Siemens G-code를 실행하기 전에 제어 장치가 MDA (Manual Data Automatic) 모드가 아닌 표준 Automatic 모드 상태인지 반드시 확인하여 즉각적인 Alarm 14011의 트립을 예방하십시오. feedrate override 노브를 10%로 감속 설정한 다음 가공 사이클을 기동하십시오. 공구가 안전 좌표 X80.0 Z5.0으로 rapid 진입하는지 확인해 보십시오. 싱글 블록으로 각 block을 단계별 기동하며 Siemens 내부의 native shell cycle (CYCLE371T)이 G-code 입력값인 U2.0 및 R1.0 변수를 받아 안전하게 다단계 황삭 패스를 산출하는 것을 관찰하십시오. 공구 선단이 평행한 Z축 경로로 이송한 다음 패스가 종료될 때마다 외부로 확실하게 retract 도피하는지 유심히 살피십시오. 황삭 연산 가공이 정상 종결되면, 공구가 G70 명령 호출 직전 다시 시작 기준점으로 복귀하는지 점검하십시오. 이어서 실행되는 정삭 패스가 지정 속도와 feedrate 하에서 N80 ~ N120의 윤곽을 정확하게 궤적 추적하여, 공구 인서트에 불필요한 과부하를 가하지 않은 채 최종 요구 공작물 윤곽과 일치하는 형상을 얻는지 모니터링하십시오.
Mitsubishi 프로그램 예제
G00 X80.0 Z5.0 ; 안전한 공구 cycle 시작 좌표로 급이송
G71 U3.0 R1.0 H0 ; 3.0mm 가공 깊이, 1.0mm 풀업 retract, 포켓 없음 설정
G71 P100 Q200 U0.5 W0.2 F0.25 ; 윤곽 시퀀스 영역 N100 ~ N200 지정
N100 G01 X20.0 Z0.0 ; 완성 형상 윤곽의 시작 (선형)
G01 X20.0 Z-30.0 ; 외경 turning 가공
G02 X50.0 Z-45.0 R15.0 ; 숄더 필릿 반경 turning
G01 X70.0 Z-45.0 ; 직경 단차 선삭
N200 G01 X80.0 Z-50.0 ; 완성 형상 프로파일의 종료
G70 P100 Q200 ; 반경 보정을 적용하여 G70 finishing cycle 실행
공운전 워크스루
공운전을 개시하려면 먼저 chuck을 완전히 고정(lock)하고 시작 블록에서 tool nose radius compensation (G40)이 해제 및 초기화 상태에 확실히 있는지 확인하여 예기치 못한 pre-cycle 오프셋 편차 발생을 방지하십시오. 프로그램을 공운전 모드로 구동하고 공구가 외곽 안전 클리어런스 좌표인 X80.0 Z5.0으로 기동하는지 점검하십시오. 황삭 가공 중에는 디지털 표시창의 치수 변동을 확인하여 CNC가 공구 반경 보정을 자동으로 정지시켰는지(X 및 Z축에 균일한 allowances를 잔존시키는지) 실시간 점검하십시오. 공구가 설정된 3.0mm 절삭 깊이로 안전 단계 이송하는지 살피며, 매 패스 인출 시 일어나는 relief 도피 거리가 chuck jaws 또는 vise jaw 등 기계 고정 구조물과 절대 간섭을 일으키지 않는지 관찰하십시오. 황삭이 완결되면, G70 정삭 명령이 정상적으로 공구 반경 보정(G68.2 또는 표준 G41/G42)을 안전하게 복원 및 활성화하여 N100 ~ N200의 정밀 윤곽 치수를 궤적 절삭하는지 확인하고, 어떠한 servo alarm이나 P204 프로그램 에러도 지시창에 띄우지 않고 안착 구역으로 탈출하는지 최종 확인하십시오.
오류 분석
| 브랜드 | Alarm 코드 | 트리거 조건 | 오퍼레이터 인지 증상 | 원인 / 조치 사항 |
|---|---|---|---|---|
| Fanuc | PS0064 | Type I cycle 가공 중 프로그램된 정삭 형상이 가공 진행 축을 따라 지속적으로 증가하거나 감소하지 않고 일시 정체 또는 역행합니다. | CNC 장비가 cycle 호출 block 지점에서 긴급 정지하며, 조작반 CRT 디스플레이 화면에 alarm 상태를 출력합니다. | CAM post-processor에 의해 0.001 mm 미만의 눈에 보이지 않는 경로 침하 또는 Z축 역행 성분이 출력 부호에 포함되었습니다. 조치 사항: 완벽한 일방향성(monotonic) 프로파일 경로를 재구성하거나, Parameter No. 5146을 통해 허용 편차 한계값(allowable deviation tolerance)을 설정해 주십시오. |
| Fanuc | PS0322 | canned cycle의 실제 시작 위치(start point) 좌표가 가공 요구 윤곽의 한계 경계선보다 수학적으로 안쪽에 존재합니다. | 어떠한 물리적 동작도 수행되지 않고 가공 시작 전 궤적 연산 단계에서 cycle 작동이 긴급 중단되며 공구가 복귀점에 락 상태로 고정됩니다. | 공구의 시작 물리 좌표가 기계 원재료 내부 영역에 설정되었거나 공작물 볼록부 표면에 너무 가깝습니다. 조치 사항: 시작 클리어런스 좌표를 원소재 blank 경계 영역 외곽의 안전 구역으로 전진 배치하십시오. |
| Fanuc | PS0063 | Parameter 5102#2 (QSR) 검증이 활성화되었으나, 활성 프로그램 내에서 block 내 주소 Q로 정의된 시퀀스 종료 식별 N 번호를 발견하지 못했습니다. | 제어 장치가 두 번째 G71 또는 G72 블록을 읽자마자 즉각적인 alarm 상태로 가공을 완전 거부하고 연산 파싱을 중단합니다. | 끝 시퀀스 마킹 코드가 프로그래머의 기입 누락 또는 삭제 작업으로 인해 contour 블록 내부에서 유실되었습니다. 조치 사항: 주소 P와 Q로 지정한 시퀀스 번호 값이 타겟 N 번호 블록 지점 명칭과 한 자릿수 오차 없이 엄격히 매칭되는지 대조 확인하십시오. |
| Siemens | Alarm 14011 | 프로그래머가 수동 입력 수치 실행 모드인 MDA (Manual Data Automatic) 내에서 G70, G71, G72 canned cycle 명령을 수동 단일 기동하려고 시도했습니다. | 제어 시스템이 해당 cycle 실행 진입을 원천 차단하고 긴급 정지 alarm 코드를 띄우며 공구 이송을 완전히 정지시킵니다. | 선반 고정 사이클 G70 ~ G73은 안전 가공 및 연산의 특수성으로 인해 MDA mode 실행이 원천 금지됩니다. 조치 사항: 선삭 사이클 프로그램을 표준 가공 실행 모드인 Automatic 상태에서 온전히 구동하십시오. |
| Siemens | Alarm 61805 | 경로 지정 궤적 프로그램의 중간 block에서 절대(absolute) 좌표 부호와 증분(incremental) 지시 부호가 혼용 기입되었습니다. | 황삭 이송 중 윤곽 한가운데에서 기계 이송이 갑작스럽게 비계획 정지하며 좌표축 잠금 및 형상 분석 연산 오류를 디스플레이합니다. | X/U 또는 Z/W와 같은 모순적 입력 부호 체계가 중간 윤곽 레지스터 값에 잘못 주입되었습니다. 조치 사항: 윤곽 정의 영역 전체를 철저히 검토하여 일체 절대치 혹은 일체 증분 방식 좌표 입력 체계 중 단 하나로만 통일 제어하도록 수정해 주십시오. |
| Siemens | Alarm 61801 | 설정된 G-code 시스템 내부 세팅 규격과 맞지 않는 오프셋 값이나 허용 범위를 넘어서는 부적합 변수가 cycle 매개변수 블록에 적용되었습니다. | 명령줄 해석과 동시에 가공 실행이 거절되며, 장치 스크린에 가용한 parameter 세팅 규격 에러가 발생합니다. | 구문 입력 및 변수 주입 시 한계 규격을 탈피한 불합리한 수치가 기입되었습니다. 조치 사항: 현재 기계 매개변수 설정상 가동되고 있는 기본 ISO G-code dialect 포맷 규격을 다시 비교하고, cycle 인자 주입 수치를 시스템 사양에 맞춤 정정해 주십시오. |
| Mitsubishi | P32 | 제어 parameter #1265 설정에 의거해 특수 1블록 포맷이 기동되는 상황 하에서, G71/G72 명령 내부 블록에 강제적인 R 또는 A 주소를 코딩하였습니다. | 해석 단락에서 즉각 구문 지연 해석 에러를 인지해 가공 실행을 강제 제한합니다. | 내부 매개변수가 retract 및 가공 여유량을 자동 통제하는 1블록 형식 내에 임의의 수동 탈출(R) 또는 외부 프로그램 지정(A) 코드가 억지로 혼합 유입되었습니다. 조치 사항: 구문 블록에서 R 또는 A 기입 주소를 영구 삭제하거나, parameter #1265 값을 원복시켜 범용 표준 2블록 형식으로 장비를 회귀시키십시오. |
| Mitsubishi | P33 | parameter 통제 규칙에 표준 2블록 명령이 지정된 운용 하에 절삭 가공 깊이(U)와 relief 도피 값(R)을 설정하는 복합 고정 cycle의 첫 번째 셋업 block이 통째로 누락되었습니다. | CNC 프로그램 라인 파싱 도중 cycle 첫 진입 지점에서 명령어 해석 불능 상태에 도달해 가공 기동 자체가 즉시 중단됩니다. | parameter #1265 ext01/bit0 규격이 2블록 모드(값 0)로 작동하지만 두 단락의 순차 구문 중 상층 셋업 블록이 탈락하였습니다. 조치 사항: 상위 황삭 셋업 규격 블록을 누락 없이 상층부에 명기 코딩하여 2블록 구문을 올바르게 성립시키거나, parameter #1265 비트 플래그 값을 1로 인가하여 전용 1블록 실행 모드를 활성화하십시오. |
| Mitsubishi | P204 | 완성 피삭재 정밀 형상 정의 프로그램 부분이 메인 실행 파일 내부 하단에 그대로 기입되어 보존 중임에도 불구하고, 이를 추종 호출하는 P와 Q 시퀀스 지점 지정 주소가 완벽하게 탈락되었습니다. | 황삭 명령 실행 지점에서 연산 범위 미지정 결함에 따라 즉각 구문 작동 실패 에러를 스크린에 가시 표출합니다. | 윤곽 지점이 메인 프로그램에 포함되어 가동되나 이를 식별하기 위한 식별자(P, Q) 값이 블록 매개변수에서 빠졌습니다. 조치 사항: 정삭 윤곽 경로가 포함된 하부 타겟 block 명칭의 실제 N 일련 시퀀스 번호 값을 상단 P와 Q 매개변수에 정확히 지정 코딩해 주십시오. |
실무 응용 가이드
양산 자동화 라인에서 대량 반복 가공을 원활하게 수행하고 비가동 시간(downtime)을 극도로 제어하기 위해서는 가공 중 발생 가능한 기계적 충돌을 사전에 철저히 격리 차단해야 합니다. 선반 황삭 가공 시 cycle start point 설정은 공구 수명과 장비 가동률에 직결되는 결정적 변수입니다. 만약 시작점이 원소재 blank 경계 내부에 지정되거나 숄더부 등 convex 형상에 극도로 밀착되어 설계되면, 황삭 가공 완료 후 공구가 급격하게 rapid 복귀를 시도할 때 clamp나 vise jaw와 간섭을 일으켜 격렬한 hard collision으로 이어집니다. 이 경우 순간 부하로 장비에 즉각적인 servo overload alarm code가 뜨고 공구 인서트가 완전히 파손되며 소재는 전량 scrap part 처리되어 생산 라인에 큰 타격을 주게 됩니다.
이러한 비계획 정지 및 돌발 충돌 리스크를 완전 배제하기 위해 제어 장치 제조사별로 정의된 안전용 파라미터를 현장에서 철저하게 확인하고 사전 검증해야 합니다. Fanuc 장비의 경우 Parameter No. 5104#2 (FCK)를 활성화하면 CNC가 이송 전 전체 가공 윤곽 데이터를 수학적으로 프리 체크하여 시작좌표와의 위배 사항이 있을 경우 PS0322 알람을 안전하게 발생시키며 공구를 락 상태로 보호합니다. 5146번 파라미터를 사전 확인하면 이 명령어에서 가장 빈번한 비계획 정지를 없앨 수 있다. CAM 연산 포스트 프로세서의 오차 등으로 종방향 황삭 시 0.001 mm 내외의 미세한 Z축 역행 오류가 유입될 때, Fanuc Parameter No. 5146(unmonotonous 편차 허용값)이 미설정 상태라면 장비는 monotonic change 결함으로 간주하고 PS0064 경고와 함께 기계를 긴급 정지시킵니다. 이 파라미터를 검증하지 않고 양산에 들어가면, 팔레트 교환 후 두 번째 사이클부터 치수 편차가 누적되어 최종 검사에서 불량이 발견된다. 반면 Parameter No. 5146에 정밀 미세 오차 범위 내의 값을 적절하게 인가해 두면, 장비는 오류 없이 부드럽게 사이클을 실행하여 연속 자동 생산 능력을 달성합니다.
또한 Siemens 시스템을 구동할 때는 MD20360 ($MC_TOOL_PARAMETER_DEF_MASK) Bit 18을 세밀히 점검하여 공구 평면 전환 중 G-code 보정 데이터가 손실 없이 상속되도록 제어해야 하며, Mitsubishi 제어 장치에서는 reversible parameter 성격을 띠는 Parameter #8051 (G71 THICK) 및 Parameter #8052 (G71 PULL UP)를 활용해 원자재 blank 크기 편차가 발견될 때마다 메인 G-code의 훼손 없이 직접 장비 스크린에서 황삭 깊이와 후퇴 거리를 즉각 동적 통제함으로써 자동화 라인의 실시간 유연성을 영위해야 합니다.
관련 명령 구조
- G73 (Pattern Repeating Cycle): 주조품이나 단조품과 같이 원재료 외형이 이미 완성 윤곽에 가깝게 형성되어 있어, 외곽 형태를 조각하듯 등간격 절삭할 때 사용되는 형상 모방 반복 황삭 canned cycle입니다.
- G74 (Longitudinal Deep-Hole Drilling and Grooving): Z축과 평행한 단면 홈 가공(face grooving) 또는 고속 peck drilling 가공 시 효율적인 칩 인출을 제어하는 단방향 복합 고정 cycle입니다.
- G75 (Transverse Deep-Hole Drilling and Grooving): X축 반경 방향으로 peck grooving 홈 가공 및 parting-off 절단 작업을 자동화하고 칩 차단을 돕는 복합 canned cycle입니다.
- G76 (Compound Thread Cutting Cycle): 지정 단면과 피치 정보를 바탕으로 복잡한 나사 절삭 황삭과 정삭 다단계 경로를 일정 가공 체적으로 동적 연산 제어하는 compound cycle입니다.
- G68 (Coordinate Rotation): 축 방향 정렬 및 정밀 윤곽 가공 시 좌표계 전체를 경사 회전시키는 코드로, turning canned cycle 가동 전 반드시 보정이 해제(G69) 및 완료되어야만 보간 오동작을 미연에 방지할 수 있습니다.
결론
양산 기업의 경쟁력과 무인화 라인 가동 효율을 최종 결정하는 요소는 장비 오작동으로 인한 비계획 정지 및 비가동 시간(downtime)의 완벽한 억제입니다. CNC 선삭 공정에 널리 채택되는 G70, G71, G72 복합 고정 cycle은 수동 프로그램 라인을 파괴적으로 혁신하여 현장의 프로그래밍 오류를 크게 감소시킵니다. 그러나 이러한 고효율 매크로 명령어가 지닌 공간 진입점 민감성과 파라미터 작동 메커니즘을 제대로 점검하지 않는다면 즉각적인 충돌 사고와 설비 손상, 대량 불량 적체로 이어져 비가동 시간과 불량률이 기하급수적으로 폭증하게 됩니다. 자동 가공 라인의 치수 정밀성과 안전을 극대화하기 위해, 매번 새로운 팔레트 및 원소재 blank 공급 단계마다 cycle start point 클리어런스를 엄밀히 계측하고 각 브랜드가 제공하는 프로파일 유효성 사전 검사(FCK) 파라미터나 가역적 절삭 깊이 레지스터 설정을 완벽하게 체득하여 가공 조건에 적용할 것을 강력하게 권장합니다.
자주 묻는 질문 (FAQ)
자동화 양산 라인에서 팔레트 교환 후 G71 사이클 가동 시 간헐적으로 공구 충돌이 발생하는 원인과 해결책은 무엇입니까?
이는 각 팔레트의 클램핑 장치나 공작물 소재 blank 자체의 원소재 치수 편차 때문에 발생합니다. CNC 제어 장치가 이전 사이클에서 계산한 공구 퇴각 경로와 다르게 원재료 여유량이 커지거나 척킹 위치가 변위되어 퇴각(retract) 동작 중 vise jaw 또는 chuck jaws와 충돌을 유발하기 때문입니다. 이를 해결하려면 G71 블록 시작 전에 안전 도피 좌표인 cycle start point를 원소재 blank 최외각 직경 기준 최소 5.0mm 이상의 안전 클리어런스를 주어 원거리 재설정하고 정기적으로 로딩 그리퍼의 위치를 정밀 보정하십시오.
Fanuc 선반에서 G71 황삭 실행 시 PS0064 알람이 불규칙하게 뜰 때, 파라미터 변경 외에 G-code 상에서 취할 수 있는 긴급 조치는 무엇입니까?
CAM 포스트 프로세서가 출력한 윤곽 프로그램 첫 번째 블록(P block) 뒤에 X축과 Z축을 동시 구동하는 명령어가 포함되어 있는지 확인하십시오. G71 Type I 단방향 황삭 모드에서는 두 축이 모두 동시에 가동(taper 또는 원호 가동)하는 코드를 unmonotonous 위배로 인식해 오동작하기 쉽습니다. 긴급 조치로 첫 번째 이송 블록(P block)에는 단일 축(선반의 경우 오직 X축 단독 이송) 지정 명령어만 오게 수정하고 Z축 진입 명령은 그다음 블록으로 격리 기술하여 monotonic 체계를 수동 복구하십시오.
Siemens 제어반에서 CYCLE371T를 적용한 복합 황삭 프로그램이 가동 모드에 따라 알람 14011을 발생시키는 구체적 이유와 해결 방법은 무엇입니까?
Siemens 시스템의 CYCLE371T 및 G70-G73 shell cycle은 이송 좌표 전 구간을 제어 장치가 자동 분석 및 사전 컴파일하여 메모리에 연속 로드해야만 구동이 가능한 연산 구조를 가집니다. 오퍼레이터가 개별 블록 단위 검증을 위해 수동 단일 기동하는 MDA 모드에서는 제어 장치가 연속적인 버퍼 윤곽 연산 처리를 차단하므로 강제적 정지(Alarm 14011)가 트립되는 것입니다. 가공 테스트 시에는 MDA 모드 사용을 즉시 중단하고, 프로그램을 메모리(NC memory) 디렉토리에 정식 업로드한 뒤 standard Automatic 모드 상에서 싱글 블록(Single Block) 스위치를 켜서 안전하게 단계별 실차 검증을 개시하십시오.
아직 해결되지 않았나요?
이 주제에 대해 AI 어시스턴트에게 자연어로 물어보세요. 검증된 소스를 기반으로 하며 환각이 없습니다.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2005)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
CNC 기계 산업의 모든 분야에서 25년 이상 근무한 경험을 바탕으로, 브랜드 독립적인 컨설팅, 엔지니어링 및 순정 부품 서비스를 제공하는 CNC CARE의 공동 창업자로서 활동을 이어가고 있습니다.
관련 기사
이 주제에 관한 다른 기사
지멘스 CYCLE800 평면 선회 및 공구 정렬 실무 가이드
지멘스 CNC CYCLE800 명령어를 활용한 3+2축 평면 선회 및 공구 정렬 방법과 Alarm 61190 및 61153 오류를 신속히 해결하고 자동화 라인 비가동 시간 및 불량률을 개선하는 실무 가이드입니다.
Siemens CYCLE72 윤곽 가공: Sinumerik 가이드
Sinumerik CNC에서 Siemens CYCLE72 윤곽 밀링을 완벽하게 설정하는 방법입니다. 파라미터 구성법을 배우고 Alarm 61123 차단을 방지하며, 비가동 시간과 불량률을 없애기 위한 척 클램프 등 가공 노하우를 확인하십시오.
Siemens CYCLE952 윤곽 선삭 cycle 프로그래밍 가이드
Siemens Sinumerik CNC에서 CYCLE952 윤곽 선삭 cycle의 파라미터를 올바르게 구성하고, Alarm 61051 및 61059 오류를 방지하여 자동화 가공 라인의 비계획 정지 비가동 시간과 불량률을 최소화하는 실무 프로그래밍 가이드.
Siemens SLOT1 및 SLOT2 슬롯 가공 cycle 프로그래밍 가이드
Siemens Sinumerik CNC에서 SLOT1 및 SLOT2 원호 홈 밀링 cycle의 파라미터를 올바르게 구성하고, Alarm 61000 및 61105 오류를 방지하여 자동화 라인의 비가동 시간을 최소화하는 실무 프로그래밍 방법 안내.