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

시퀀스
블록형 자동 이송

사람이 버튼을 누르던 동작을 블록으로 적어 장비가 스스로 실행하게 합니다. 블록 하나는 버튼 하나 — MOVE · EXTEND · PICK · RETRACT · WAIT · CHECK 를 차례로 쌓습니다.
이 강의 — 블록 시퀀스로 FOUP → Load Lock 을 자동으로 돌리고, 반복 · 조건 · 변수가 필요한 일은 로봇 프로그래밍으로 넘어갑니다.
MOVE foup SLOT 1 EXTEND PICK RETRACT CHECK wafer
00 · 목표

이 강의가 끝나면

1
블록으로 옮긴다 자동 시퀀스 탭에서 블록을 쌓아 웨이퍼를 Load Lock 까지 사람 손 없이 보낸다.
2
블록 = 버튼 MOVE 는 회전만, PICK 은 집기만 한다는 것을 알고, 사이에 EXTEND · RETRACT 를 빠뜨리지 않는다.
3
멈춘 곳을 읽는다 시퀀스가 선 블록과 알람 코드로 원인을 찾아 블록을 고친다.
4
프로그램으로 넘어간다 반복(REPEAT) · 조건(IF) · 변수($slot)로 과제 세 개를 푼다.
01 · 왜

동작을 글로 적어 두는 것

1
재현성 사람마다 다른 순서가 아니라, 적힌 대로 항상 같게 실행됩니다.
2
무인 운전 한 번 짜두면 사람 없이 반복합니다.
3
기록 무슨 순서로 했는지 그대로 남습니다.
4
수동을 먼저 한 이유 각 블록이 곧 1~11강에서 손으로 하던 그 동작입니다.
연결 — 수동으로 "언제 되고 안 되는지"를 익혔기에, 시퀀스가 멈춰도 어디가 문제인지 압니다.
02 · 블록

시뮬레이터의 블록 — 전부

묶음블록하는 일
준비INIT · HOME · SELECT efem|vac로봇 초기화 · 원점 · 어느 로봇을 움직일지
Load PortDOCK · DOOR OPEN · MAP도킹 · 문 열기 · 매핑
이동MOVE foup|aligner|ll|pm1|pm2 · SLOT n그 스테이션으로 회전만 · 높이(Z) 선택
팔 · 웨이퍼EXTEND · RETRACT · PICK · PLACE · ALIGN수동조작 버튼과 같다
진공ATM VALVE · TM VALVE · PUMP · VENT밸브는 누를 때마다 열림/닫힘이 바뀐다(토글)
흐름WAIT 2 · CHECK wafer|vacuum|door2초 대기 · 조건이 아니면 시퀀스를 멈춘다
블록 시퀀스에는 IF 가 없습니다. 블록은 위에서 아래로 한 번씩만 흐릅니다. "웨이퍼가 있는 칸만" · "세 번 반복" 같은 판단은 뒤의 로봇 프로그래밍(REPEAT · WHILE · IF)으로 씁니다.
03 · 블록 = 버튼

MOVE 는 돌기만, PICK 은 집기만

수동조작에서 한 일블록
Rotate ◀ ▶ 로 스테이션 고르기MOVE aligner (몇 칸 도는지는 장비가 계산)
▲ ▼ 로 칸 고르기SLOT 1
ExtendEXTEND
PickPICK
RetractRETRACT
그래서 — FOUP 에서 한 장 집으려면 블록이 네다섯 개입니다: MOVE foup → SLOT 1 → EXTEND → PICK → RETRACT. MOVE 가 팔을 뻗어 주지도, PICK 이 팔을 넣어 주지도 않습니다.

RETRACT 를 빠뜨리면

다음 MOVE 가 편 채 회전이 되어 ALM-201 로 멈춥니다. 블록에서도 "접고 → 돌고 → 편다"는 그대로입니다.

EXTEND 를 빠뜨리면

PICK · PLACE 가 ALM-203(팔이 전진하지 않았습니다)으로 멈춥니다.

DOCK · DOOR OPEN 은 이미 되어 있으면 건너뛴다

두 번 넣어도 알람이 나지 않습니다. 밸브 블록은 다릅니다 — 토글이라 두 번 넣으면 닫힙니다.

04 · 기다림과 확인

누가 기다리고, 누가 확인하나

동작 블록은 끝날 때까지 스스로 기다린다

팔 이동 · 회전 · ALIGN(정렬 완료까지) · PUMP(목표 진공까지) · VENT(대기압까지)는 끝나야 다음 블록으로 넘어갑니다. 한 블록당 최대 12초까지 기다립니다.

WAIT 2 — 시간만 센다

조건이 아니라 2초를 기다립니다. 장비가 스스로 기다리는 곳에 또 넣으면 시간만 늘어납니다.

CHECK — 조건이 아니면 멈춘다

CHECK wafer(손에 웨이퍼) · CHECK vacuum(Load Lock 1 Torr 미만) · CHECK door(문 열림). 조건이 맞으면 통과, 아니면 SEQ-002 로 시퀀스를 세웁니다.

왜 멈추는 게 좋은가 — 조건이 틀린 채 다음 동작을 하면 더 큰 알람이나 사고가 됩니다. 예시 시퀀스는 PUMP 뒤에 CHECK vacuum 으로 끝나, 진공이 안 됐으면 거기서 섭니다.
05 · 예시

예시 시퀀스 — FOUP 에서 Load Lock 까지 26블록

1 INIT2 HOME3 DOCK4 DOOR OPEN5 MAP 6 MOVE foup7 SLOT 18 EXTEND9 PICK10 RETRACT 11 MOVE aligner12 EXTEND13 PLACE14 RETRACT15 ALIGN 16 EXTEND17 PICK18 RETRACT 20 MOVE ll21 EXTEND22 PLACE23 RETRACT 19 ATM VALVE (열림)24 ATM VALVE (닫힘)25 PUMP26 CHECK vacuum 1–5 준비 · 6–10 FOUP 에서 집기11–18 정렬 (ALIGN 은끝날 때까지 기다린다)19–26 관문 (밸브는 토글,진공 확인으로 끝)
자동 시퀀스 탭의 [예시 시퀀스 불러오기] 그대로 — 실행하면 알람 0건으로 끝납니다

블록 색 = 종류

동작 로봇 · Load Port
진공 · 확인 밸브 · PUMP · CHECK

읽는 법 — 위에서 아래로 한 줄씩. 수동으로 8강에서 했던 순서와 같고, 정렬 뒤 다시 집기(16~18)와 밸브 토글 두 번(19 · 24)이 핵심입니다.
06 · 안전

자동이라도 인터록은 그대로

블록에서 흔한 실수멈추는 알람고치기
RETRACT 없이 MOVEALM-201MOVE 앞에 RETRACT
EXTEND 없이 PICK · PLACEALM-203앞에 EXTEND
ATM VALVE 안 열고 Load Lock 으로 EXTENDALM-303MOVE ll 전후에 ATM VALVE
ATM VALVE 를 한 번만 넣고 PUMPALM-308배기 전에 한 번 더 넣어 닫는다(토글)
CHECK 조건 불만족SEQ-002앞 블록이 정말 끝났는지 — 압력 · 손 · 문
로봇이 갈 수 없는 스테이션으로 MOVESEQ-001SELECT 로 로봇을 먼저 바꾼다 (pm1 · pm2 는 진공 로봇)
좋은 시퀀스 = 사람이 손으로 지키던 순서를 블록에서도 그대로 지킨 시퀀스. 블록도 수동과 똑같이 인터록에 막힙니다.
07 · 디버깅

시퀀스가 멈추면

1
멈춘 블록 시퀀스 목록에서 빨갛게 표시된 블록이 거부된 곳입니다. 그 앞은 초록(완료)입니다.
2
알람 로그 그 순간의 코드와 이유. 앞자리로 계통을 정합니다.
3
블록 보강 빠진 RETRACT · EXTEND · 밸브, 또는 확인 블록(CHECK)을 앞에 넣습니다.

다시 돌리기 전에

시퀀스는 처음 블록부터 다시 돕니다. 장비는 멈춘 그 상태 그대로이므로, 필요하면 챕터를 다시 눌러 초기화하거나 수동으로 되돌린 뒤 실행하세요. DOCK · DOOR OPEN 은 이미 되어 있으면 건너뛰지만, 밸브 블록은 토글이라 상태에 따라 결과가 달라집니다.

대개 — 멈춤은 "조건이 아직 안 됐는데 다음을 시도"해서입니다.
08 · 상태와 예외

시퀀스는 상태를 따라 흐른다

지금 상태 → 다음 상태

"웨이퍼 집음" → "정렬 완료" → "LL 안착"처럼, 각 블록이 상태를 한 칸 전진시킵니다.

조건이 전이의 열쇠

다음 상태로 가려면 센서 조건이 충족돼야 합니다 — CHECK 블록이 그 문지기입니다.

1
정상 경로 조건 충족 시 다음으로.
2
예외 경로 조건 실패 시 멈춤 · 알람 · 복구로. 블록 시퀀스는 멈추는 데까지만 하고, 복구 분기는 13강 프로그램(IF)으로 씁니다.
실무 — 예외 처리 없는 시퀀스는 작은 이상에도 통째로 멈춥니다. 좋은 시퀀스 = 상태와 전이 조건이 분명한 시퀀스.
09 · 현장 개념

레시피와 병렬 — 시퀀스 너머

1
레시피 어떤 공정을 어떤 조건으로 할지의 설정.
2
시퀀스 그 레시피대로 웨이퍼를 옮기고 처리하는 순서.

겹쳐서 일한다 — 듀얼 암

한 손이 새 웨이퍼를 집는 사이 다른 손이 완료품을 빼내, 시간을 겹칩니다(5강 "손이 둘"의 자동화 버전).

시뮬레이터에서는

팔이 하나라 손을 겹칠 수는 없지만, 챔버 두 개를 겹쳐 돌리는 것은 15강 과제 ③에서 프로그램으로 합니다.

역할 분담 — 이송 시퀀스는 "웨이퍼를 제때 제자리에" 두는 데 집중합니다.
로봇 프로그래밍 ①

블록 나열에서 프로그램으로

블록을 일렬로 쌓는 것만으로는 "웨이퍼가 있는 칸만" 이나 "세 번 반복" 을 표현할 수 없습니다. 실제 장비의 이송 프로그램에는 반복과 조건과 변수가 있습니다. 시뮬레이터의 로봇 프로그래밍 탭에서 같은 것을 씁니다.

프로그램은 JSON 한 덩어리

name 이름 · vars 변수의 처음 값 · body 실행할 줄의 목록. 줄 하나는 {"op": "명령"} 이고, 인자가 있으면 arg 를 붙입니다.

변수는 $이름

vars 에 {"slot": 1} 로 만들어 두면 "$slot" 으로 씁니다. SET 으로 값을 바꿉니다 — {"op":"SET","var":"slot","value":"$slot + 1"}.

검증 버튼이 먼저입니다. 실행 전에 오타와 잘못된 명령을 줄 위치까지 짚어 줍니다. 실행 중 막히면 body[3].body[1] 처럼 어느 줄인지 알려 줍니다.
구분쓰는 것
준비INIT · HOME · DOCK · DOOR OPEN|CLOSE · MAP
이동SLOT n · MOVE foup|aligner|ll|pm1|pm2 · EXTEND · RETRACT
취급PICK · PLACE · ALIGN
진공VALVE ATM|TM OPEN|CLOSE · PUMP · VENT
흐름REPEAT · WHILE · IF · SET · BREAK
읽기slotHas(n) · pressure() · door() · wafer() · extended() …
읽기 함수가 핵심입니다. 프로그램은 장비를 눈으로 보지 못합니다. 조건을 쓰려면 센서를 숫자로 읽어야 합니다.
로봇 프로그래밍 ②

같은 일을 세 번 — 복사가 아니라 반복으로

이렇게 쓰지 않습니다

슬롯 1 이송 열여덟 줄 · 슬롯 2 이송 열여덟 줄 · 슬롯 3 이송 열여덟 줄. 쉰네 줄이고, 한 곳을 고치면 세 곳을 고쳐야 합니다. 스텝 수로 드러납니다.

이렇게 씁니다

몸통은 한 벌만 쓰고 REPEAT 으로 감쌉니다. 칸 번호는 $slot 이 들고 있다가 한 바퀴 끝에서 SET 으로 하나 올립니다.

과제 ③은 한 걸음 더 갑니다. 어느 칸에 웨이퍼가 들었는지 실행할 때마다 달라지므로, 번호를 적어 두면 통과하지 못합니다. MAP 으로 읽고 IF slotHas($slot) 로 걸러야 합니다.
줄뜻
"vars": {"slot": 1}슬롯 번호를 1에서 시작
{"op":"REPEAT", "count":3,아래 몸통을 세 번
  "body":[ … ]}반복할 내용 한 벌
  {"op":"SLOT","arg":"$slot"}지금 칸을 겨냥
  {"op":"SET","var":"slot",한 바퀴 끝에 칸을 하나 올림
   "value":"$slot + 1"}
▷ 한 줄씩 버튼으로 한 줄씩 돌려 보세요. 지금 어느 줄에 있고 장비가 어떻게 바뀌는지 나란히 보입니다.
실습 미션

12강에서 직접 해볼 것

1
블록 6개 이상으로 이송 시퀀스를 구성한다.
2
끝까지 실행해 오류 없이 완주한다.
3
자동으로 Load Lock까지 웨이퍼를 보낸다.
4
프로그래밍 과제 3개 ① 첫 프로그램 · ② 반복문 · ③ 조건문 — 로봇 프로그래밍 탭.
완료 기준 — 웨이퍼가 자동으로 Load Lock에 도착하고, 프로그래밍 과제 ①②③을 모두 통과하면 12강 종료. 과제는 스텝 수로 채점하고 기록이 남으므로, 통과한 뒤에도 더 짧게 줄여볼 수 있습니다.
정리 · 자가 점검

12강에서 남길 것

1
블록 = 버튼 MOVE 는 회전만, PICK 은 집기만. EXTEND · RETRACT 를 따로 적는다.
2
기다림은 장비가, 확인은 CHECK 가 PUMP · VENT · ALIGN 은 끝날 때까지 기다리고, CHECK 는 조건이 아니면 멈춘다.
3
판단은 프로그램으로 반복 · 조건 · 변수가 필요하면 로봇 프로그래밍(REPEAT · WHILE · IF).

Q1

동작 블록 사이에 CHECK 를 넣는 이유는?
→ 앞 동작이 정말 끝났는지(손 · 압력 · 문) 확인하고, 아니면 거기서 멈춰 더 큰 사고를 막으려고.

Q2

MOVE aligner 바로 뒤에 PLACE 를 넣었더니 멈췄습니다. 빠진 블록은?
→ EXTEND. 없으면 ALM-203.

Q3

ATM VALVE 블록을 두 번 넣는 이유는?
→ 토글이라 한 번은 열고 한 번은 닫는다. 닫지 않으면 PUMP 가 ALM-308.

다음 강 — 13강 인터록: 안전을 지키는 거부 장치를 한데 모아 봅니다.