병렬 실행¶
여러 동작을 동시에 실행하기 위한 카드들입니다.
무엇을 하는 단계인가요?¶
기본적으로 카드는 위에서 아래로 순차 실행됩니다. 두 가지 동작을 동시에 진행하고 싶을 때 (예: 컨베이어가 돌면서 동시에 메시지 표시) 병렬 카드를 사용합니다.
카드 종류¶
-
동시에 시작
동시에 시작(PARALLEL_START)여러 작업을 동시 진행 시작
-
작업 나누기
작업 나누기(PARALLEL_BRANCH)각 분기를 구분하는 마커
-
모두 완료되면
모두 완료되면(PARALLEL_END)모든 분기 완료 후 다음 카드로
카드 사용법¶
동시에 시작 → 작업 나누기 → 모두 완료되면¶
3개 카드는 항상 함께 사용됩니다.
동시에 시작
[작업 1] ← 첫 번째 분기
작업 나누기
[작업 2] ← 두 번째 분기 (작업 1 과 동시 실행)
작업 나누기
[작업 3] ← 세 번째 분기 (다른 분기와 동시)
모두 완료되면
[다음 카드] ← 모든 분기 완료 후 실행
- 모든 분기는 동시에 시작됩니다.
- 다음 카드는 가장 오래 걸리는 분기가 끝난 후 실행됩니다.
사용 예시¶
예시 1 — 음성과 동작 동시
음성 안내가 끝나기 전에 벨트가 이미 돌아가기 시작합니다.
예시 2 — 두 로봇 동시 동작
예시 3 — 센서 모니터링 + 작업
주의사항 (자원 충돌)¶
한 자원은 한 분기에서만 제어
잘못된 사용 (충돌 발생):
같은 로봇 #1 을 두 분기에서 동시에 제어 → 충돌 (Race Condition)
올바른 사용:
- 각 분기마다 다른 자원 사용 (로봇 #1 vs 로봇 #2)
- 또는 두 작업을 순차 (병렬 없이) 로 변경
자원별 충돌 위험¶
| 자원 | 충돌 위험 |
|---|---|
| 로봇 | 한 로봇은 한 분기에만 |
| 컨베이어 | 한 컨베이어는 한 분기에만 (켜기·끄기 분기 분리 금지) |
| 센서·카메라 | 동시 읽기는 일반적으로 안전 |
| 변수 | 동시 쓰기는 마지막 값 우선 (예측 어려움) |
자주 발생하는 문제¶
한 로봇을 두 분기에서 제어 → 동작 이상
경합 상태입니다. 한 로봇은 항상 한 분기에서만 제어하세요. 다른 분기에서는 다른 로봇 또는 컨베이어·메시지 등 다른 자원을 사용합니다.
병렬 분기가 다음 카드로 안 넘어감
가장 오래 걸리는 분기가 완료되어야 다음 카드 실행됩니다. 분기 안의 [센서 감지 대기] 등의 timeout 이 너무 크지 않은지 확인하세요.
동시에 시작 / 작업 나누기 / 모두 완료되면 누락
3개 카드는 항상 짝으로 사용. 하나라도 누락되면 파싱 오류가 발생합니다.
강사 팁¶
병렬은 익숙해진 후 도입
학생이 순차 흐름·IF·LOOP 에 충분히 익숙해진 후 병렬을 가르치는 것이 좋습니다. 병렬은 자원 충돌 개념이 추가되어 디버깅이 어려워집니다.
안전한 병렬 패턴
가장 안전한 병렬 사용:
- 음성 / 메시지 (말하기) + 다른 동작
- 다른 로봇끼리 동시 동작
- 센서 모니터링 + 메인 작업
E-STOP 시 모든 분기 즉시 정지
[비상 정지] 누르면 모든 병렬 분기가 동시에 중단됩니다. 이건 안전상 의도된 동작입니다.
다음 단계¶
병렬까지 익혔다면 첫 프로그램 만들기 → 으로 통합 예제를 만들어 봅시다.
이 페이지에 빠진 내용이나 잘못된 부분을 발견하시면 페이지 하단 📮 피드백 보내기 를 활용해 주세요.