Fanuc FOCAS — CNC
FOCAS = Fanuc Open CNC API Specification. Fanuc CNC (Computer Numerical Control) 컨트롤러에서 스핀들 부하 / 축 위치 / 가공 프로그램 / 알람 / OEE 지표를 읽기 위한 사실상의 표준 API 입니다. Mazak, DMG MORI, Doosan 같은 공작기계 OEM 도 컨트롤러로 Fanuc 을 채택하면 같은 인터페이스가 노출됩니다.
이 게이트웨이의 FOCAS 드라이버는 stub 입니다. FOCAS 의 wire 프로토콜은 비공개이며, Fanuc 은 라이선스 가입자에게만 FwLib (Focas Library) C 라이브러리를 배포합니다. 단일 jar 배포를 추구하는 PlantPulse Edge 에 native FwLib JNI 를 임베드할 계획은 없습니다.
권장 통합 경로: MTConnect Adapter (HTTP/XML) 또는 Fanuc 신형 컨트롤러의 OPC UA 옵션 을 사용하세요.
권장 통합 경로
옵션 1. MTConnect Adapter / Agent (가장 흔한 패턴 — 권장)
대부분의 현대 공작기계 / Fanuc CNC 는 MTConnect (ANSI/MTC1.4) 를 1차 통합 경로로 채택합니다. Fanuc 은 자체 FOCAS-MTConnect Adapter 를 무료 제공하며, OEM (Okuma, DMG MORI, Mazak SmartBox) 들도 같은 표준을 따릅니다.
| 사용할 PlantPulse 드라이버 | 페이지 |
|---|---|
HTTP (REST polling, XML 파싱은 계산식 또는 수신 파이프라인에서) | HTTP 푸시 |
옵션 2. Fanuc OPC UA 옵션 또는 KEPServerEX Fanuc Suite
Fanuc 신형 컨트롤러는 추가 옵션으로 OPC UA Server 를 노출합니다. 구형 컨트롤러는 Kepware KEPServerEX Fanuc Suite 또는 Matrikon FOCAS OPC Server 같은 상용 게이트웨이로 변환합니다.
| 사용할 PlantPulse 드라이버 | 페이지 |
|---|---|
OPCUA | OPC-UA |
옵션 3. 사이드카 + gRPC (자체 라이선스 보유 시)
FwLib 라이선스를 보유한 곳에서는 자체 JNI 모듈을 별도 사이드카 프로세스 (예: focas-grpc-server) 로 띄우고, PlantPulse 가 그 출력을 폴링하는 형태가 가능합니다.
어떤 옵션을 골라야 하나
| 상황 | 권장 |
|---|---|
| OEM (Mazak SmartBox / DMG MORI Celos / Okuma) 가 이미 MTConnect Agent 운영 중 | MTConnect → HTTP |
| Fanuc 30i 신형, OPC UA 옵션 추가 가능 | Fanuc OPC UA → OPCUA |
| Fanuc 0i 구형, 라이선스 SI 보유 | KEPServerEX Fanuc Suite → OPCUA |
| 자체 FwLib 라이선스 / 커스텀 데이터 필요 | focas-grpc 사이드카 → HTTP |
| 단순 가동률 (0/1) 지표만 필요 | 컨트롤러 디지털 출력 → Modbus/Ethernet IO 모듈 |
MTConnect 사용 시 자주 보는 데이터 항목
MTConnect agent 의 /current / /sample 응답 XML 에서 자주 등록하는 DataItem.
| DataItem name | 의미 | PlantPulse 형식 |
|---|---|---|
Xact, Yact, Zact | 각 축 실제 위치 (mm) | Float |
Sspeed | 스핀들 회전수 (rpm) | Float |
Sload | 스핀들 부하 (%) | Float |
Sovr, Fovr | 스핀들 / 이송 override (%) | Integer |
execution | 실행 상태 (ACTIVE / INTERRUPTED / READY) | String |
program | 현재 프로그램 이름 (O1234 등) | String |
mode | MANUAL / AUTOMATIC / MDI | String |
Tool_number | 현재 공구 번호 | Integer |
block | 현재 블록 (NC 행) | String |
alarm | 알람 코드 (PS 0506 등) | String |
stub 등록 (참고용)
| 입력 칸 | 무엇을 적나요 |
|---|---|
| IP 주소 | (사용 안 함, 더미) |
| 포트 | 8193 (FOCAS 표준 — 더미) |
| 자동 수집 | 비활성 권장 |
자주 만나는 문제
| 증상 | 가능한 원인 | 해결 |
|---|---|---|
| FOCAS 등록 후 값이 안 옴 | stub 드라이버 | MTConnect (HTTP) 또는 KEPServerEX (OPCUA) 경로로 재등록 |
| MTConnect XML 파싱이 어려움 | XML namespace + 다중 DataItem | HTTP 푸시 의 XPath / 계산식 후처리 |
| 스핀들 부하가 0 으로 고정 | Adapter 의 Sload 매핑 누락 | Fanuc 의 PMC 설정 확인 — Adapter config 의 axis_event 추가 |
| 프로그램 이름이 깨짐 | Fanuc 컨트롤러 인코딩 (Shift_JIS 등) | Adapter 측 charset 옵션 확인 |
| Alarm 코드가 두 자리만 나옴 | MTConnect 의 condition 카테고리 분리 | XML 의 <Condition> 영역 별도 파싱 |
| KEPServer 라이선스 만료 | KEPServerEX 의 7-day demo | 라이선스 갱신 또는 영구 라이선스 구매 |
다음 단계
- MTConnect Institute 의 무료 spec 문서 (mtconnect.org)
- Fanuc 본사 / 한국 Fanuc 의 FwLib 라이선스 문의 (자체 구현 시)
- HTTP 푸시 등록 / OPC-UA 등록 페이지 참고
- 기술 배경: FOCAS 드라이버 (advanced)