로봇및센서실습 · 반도체장비전공 · CHAPTER 13

인터록
막는 것이 임무입니다

인터록은 조건이 맞지 않으면 동작을 거부하는 안전장치입니다. 지금까지 흩어져 나온 인터록들을 한자리에 모아 정리합니다.
이 강의 — 네 가지 인터록을 일부러 발생시켜 "고장이 아니라 보호"임을 확실히 이해합니다.
INTERLOCK 조건 불충족 → 거부
개요

인터록은 왜 존재하나

지키는 것들

웨이퍼(한 장에 수백만~수천만 원), 장비(수십억), 사람. 이 셋을 지키려 위험한 명령을 거부합니다.

거부 = 정상

알람은 고장이 아니라 "지금 그건 위험하다"는 안전 신호입니다.

이 강의 — 인터록을 원리와 재현법으로 하나씩 보고, 마지막엔 한 번도 걸리지 않는 프로그램을 씁니다.
명령 조건? 맞음 실행 틀림 거부 [E] ALM-301 Load Port Door가 닫혀 있습니다
인터록은 "실행 전 검사", 알람 로그는 그 거부의 기록입니다.
01 · 지도

시뮬레이터의 인터록 전체 지도

계열코드막는 상황
RobotALM-101·102·103Initialize 전 · Home 전 · 이동 중에 새 명령
CollisionALM-201·202·203편 채 회전 · 편 채 Z 이동 · 안 편 채 Pick/Place
DoorALM-301·302·305~307닫힌 문 진입 · 미도킹 · 도킹 전 Door · 팔이 FOUP 안인데 Door/Undock · 문 닫힌 채 Mapping
VacuumALM-303·304·308~316밸브 닫힌 채 진입 · 압력 안 맞는 개방 · 동시 개방 · 팔이 안인데 닫기
PositionALM-401·405Z 한계 초과 · θ가 목표와 3° 넘게 어긋난 채 Extend
PresenceALM-501~505든 채 또 Pick · 빈 곳 Pick · 센서 불량 · 빈손 Place · 두 번 Place
ProcessALM-601·602빈 정렬기 Align · 공정 중 반출 · 정렬 중 Pick
TimeoutALM-7019초 안에 목표 압력 미도달
읽는 법 — 백의 자리가 계열입니다. 코드 첫 자리만 봐도 로봇·도어·진공·위치·웨이퍼 중 어디를 봐야 할지 좁혀집니다.
02 · 왜 필요

Door · Vacuum · Presence · Position

D
Door 닫힌 문으로 진입하면 FOUP 문과 충돌, 파티클 발생. 그래서 막습니다.
V
Vacuum 압력 안 맞는 개방은 진공을 깨거나 웨이퍼를 날립니다.
P
Presence 빈손으로 Place, 든 채 또 Pick, 차 있는 곳에 Place → 충돌·낙하.
Po
Position 기준(Home) 없이, 또는 θ가 어긋난 채 뻗으면 벽·슬롯에 부딪힙니다(ALM-102 · 405).
03 · Collision

Collision — 편 채 회전 금지 (ALM-201)

!
왜 팔을 편 채 돌면 옆 장치·챔버 벽과 충돌합니다. 편 채 Z 이동도 같은 이유로 막힙니다(ALM-202).
✓
지키기 회전·Z 이동 전 Retract → Home Sensor ON 확인.
재현 — Extend 상태에서 다른 스테이션으로 Move → ALM-201.
옆 장치 편 채 회전 → 팔 끝이 휩쓴다
04 · Door

Door — 닫힌 문으로 진입 금지 (ALM-301)

!
왜 문 닫힘 상태 진입은 충돌·오염.
✓
지키기 Docking → Door Open 후 Extend.
!
반대 방향도 팔이 FOUP 안에 있는데 Door Close · Undock → ALM-306.
!
순서 도킹 전 Door Open → ALM-305, 문 닫힌 채 Mapping → ALM-307.
재현 — 문 닫은 채 FOUP으로 Extend → ALM-301.
05 · Vacuum

Vacuum — 압력 안 맞는 개방 금지 (ALM-311 · 314)

!
ALM-314 1 Torr 넘는 상태(예: 대기압)에서 진공측 밸브 개방 → 진공 붕괴.
!
ALM-311 700 Torr 미만(배기된 상태)에서 대기측 밸브 개방 → 공기 역류.
!
ALM-312 / 315 한쪽이 열린 채 다른 쪽 개방.
✓
지키기 목표 압력 도달(CHECK vacuum) 후에만 개방.
재현 — 대기압에서 TM 밸브 → ALM-314, Pump Down 후 ATM 밸브 → ALM-311.
06 · Presence

Presence — 웨이퍼 유무 불일치 금지 (ALM-50x)

코드상황막는 사고
ALM-501손에 웨이퍼가 있는데 또 Pick웨이퍼 두 장 겹침 · 파손
ALM-502빈 곳(Presence OFF)에서 Pick헛동작 · 잘못된 겨냥 방치
ALM-504빈손으로 Place이력 불일치
ALM-505이미 웨이퍼가 있는 곳에 PlaceDouble Place · 충돌
재현 — 매핑 결과에 없는 칸에서 Pick(502), 빈손으로 Place(504). 미션 ③은 502 또는 504로 인정됩니다.
07 · Position

Position — 기준 없이, 어긋난 채 뻗지 않는다

ALM-102 · Home 미완

원점을 모르는 축은 "지금 어디 있는지"를 모릅니다. Home 전에는 회전·전진·Z를 모두 거부합니다.

ALM-405 · θ 편차

θ가 목표 스테이션과 3° 넘게 어긋나면 Extend를 거부. 팔 끝이 슬롯 대신 벽을 칩니다.

재현 — Initialize 후 Home 없이 Move → ALM-102. 405는 14강 고장 주입(엔코더 편차)에서 만납니다.
08 · Error vs Timeout

거부에도 두 종류가 있다

Error (조건 위반)

"하면 안 되는 것을 하려 함." 문 닫힌 채 Extend(301), 편 채 회전(201), Home 전 이동(102). 명령 시작 순간 즉시 거부 → 순서·조건을 고친다.

Timeout (도달 실패)

"해야 할 것이 시간 안에 안 됨." Pump Down이 9초 안에 1.0E-2 Torr에 못 닿음(ALM-701). 명령은 맞았고 진행 도중 실패 → 설비 상태(펌프·누설)를 확인한다.

구분이 진단의 시작 — Error면 내 순서를, Timeout이면 장비를 의심합니다. 14강 고장 진단의 출발점입니다.
개념 · 계층

안전은 여러 겹으로 — 하드와이어와 소프트

하드와이어 인터록

배선·릴레이로 물리 차단. 소프트웨어가 죽어도 동작. 최후의 안전.

소프트 인터록

제어기 로직이 조건을 검사해 명령을 거부. 유연하지만 SW에 의존. 이 시뮬레이터의 알람이 모두 이 층입니다.

여러 겹

소프트 리밋·리밋 센서·기구 스토퍼처럼, 하나가 실패해도 다음이 잡도록 겹칩니다.

한 줄 — 인터록은 "막아서 지킨다". 잘 막히는 장비가 좋은 장비입니다.
개념 · Fail-safe

고장 나면 "안전한 쪽"으로

1
정전 시 밸브는 닫힘, 로봇은 정지 — 위험을 만들지 않는 상태로.
2
신호 끊김 시 "모름"을 "위험"으로 간주해 멈춤.
원칙 — 애매하면 진행이 아니라 정지. 웨이퍼·사람이 우선.
개념 · 구분

인터록과 알람은 다르다

인터록

위험한 동작을 미리 막는 예방 장치.

알람

일어난 이상을 알리는 통지. 인터록이 걸리면 알람도 함께 뜹니다.

정리 — 인터록 = 브레이크, 알람 = 경고등.
개념 · 문화

인터록을 우회하지 않는다

!
임의 해제 금지 "귀찮다고" 인터록을 끄면 사고로 직결.
✓
원인 제거 막혔으면 조건을 맞추지, 안전장치를 끄지 않습니다.
현장 원칙 — 안전장치가 자주 걸리면 "장치를 끄기"가 아니라 "절차를 고치기".
09 · 프로그래밍

걸리지 않는 프로그램 — 확인하고 움직인다

과제 ① 방어적 프로그래밍

장비가 거부할 동작을 IF로 미리 막습니다. 열려 있지 않으면 열고, 진공이 아니면 배기하고. 알람이 한 번이라도 나면 불합격입니다.

과제 ② 복구 루틴

과제를 고를 때마다 장비가 세 가지 중 하나로 흐트러집니다(FOUP에 팔 · Load Lock에 팔 · 진공 로봇이 LL에). 상태를 읽고 원점으로 되돌리세요.

채점 조건 — 두 과제 모두 고르는 순간 장비를 다시 맞춥니다. 앞에서 해 둔 상태로 통과할 수 없습니다.
{op:'IF', cond:'extended() == 1', then:[{op:'RETRACT'}]} {op:'IF', cond:'homed() == 0', then:[{op:'HOME'}]} {op:'IF', cond:'door() == 0', then:[{op:'DOOR', arg:'OPEN'}]} {op:'IF', cond:'vacuum() == 0', then:[{op:'PUMP'}]} 복구 순서: 팔 빼기(양쪽 로봇) → Home → 도어 닫기 → 밸브 닫기
읽을 수 있는 상태: inited() · homed() · extended() · door() · docked() · vacuum() · atmValve() · tmValve() …
실습 미션

13강에서 직접 해볼 것 — 네 인터록 발생

1
Door 문 닫은 채 Extend → ALM-301.
2
Vacuum 대기압에서 진공측 밸브(ALM-314) 또는 배기 후 대기측 밸브(ALM-311).
3
Presence 빈 곳 Pick(ALM-502) 또는 빈손 Place(ALM-504).
4
서로 다른 코드 4종 알람 로그에서 코드를 확인한다(Collision 201 · Position 102 등 무엇이든).
5
프로그래밍 과제 2개 ① 알람 없이 완주하는 방어 프로그램 · ② 어떤 상태에서 시작해도 원점으로 돌리는 복구 루틴.
여기서 방향이 뒤집힙니다. 앞의 네 항목은 인터록을 일부러 걸어 무엇을 막는지 봅니다. 프로그래밍 과제는 반대로 한 번도 걸리지 않는 프로그램을 씁니다 — IF door() == 0 처럼 조건을 먼저 확인하고 움직이는 것이 현장에서 시퀀스를 짜는 방식입니다.
정리 · 자가 점검

13강에서 남길 것

1
거부=보호 인터록은 고장이 아니다.
2
Error vs Timeout 순서 문제(즉시 거부) / 설비 문제(ALM-701).
3
코드 첫 자리 = 계열 1 로봇 · 2 충돌 · 3 도어·진공 · 4 위치 · 5 웨이퍼 · 6 공정 · 7 시간.

Q1 · Q2 · Q3

① ALM-201과 ALM-314는 각각 무엇을 막나? → 편 채 회전 충돌 / 대기압에서 진공측 개방.
② "Home 미완"은 Error인가 Timeout인가? → Error(ALM-102), 순서 문제.
③ 복구 루틴에서 도어보다 팔을 먼저 빼는 이유는? → 팔이 안에 있으면 닫기가 거부(306 · 313 · 316).

다음 강 — 14강 고장 진단: 이 알람 로그를 읽어 원인을 추적합니다.