본문 바로가기
PLC 전기제어 기술자료/모션 기술자료

모션 충돌방지 알고리즘 5편: 견고한 양보 (복귀·설치방향·N축 확장)

by 위치결정JP 2026. 7. 5.
728x90
반응형
이전 시리즈 1편: 이동 영역(Band)으로 충돌 예측
이전 시리즈 2편: 비대칭 마진 최적화와 Follow 추종 제어
이전 시리즈 3편: 데드락과 양보(Yield) 제어
이전 시리즈 4편: 누가 양보하나 (적격 판정과 우선권)

 

park 한 축이 상대 통과 후 원래 목표로 복귀하고, 미러 설치축과 N축 체인으로 확장되는 견고성 개념도

 

3편에서 park(양보)로 데드락을 풀고, 4편에서 누가 양보할지 우선권으로 갈랐습니다.

이제 실제 설비에 올리면 마주치는 세 가지 견고성 문제를 다룹니다.

park 한 축은 언제 복귀하나? 미러로 뒤집어 설치한 축은? park 중에 목표가 바뀌면?

그리고 마지막으로 2축을 넘어 N축 단일 레일로 확장하는 방향을 짚습니다.

1. release 복귀 판정: park 중엔 왜 복귀 시점을 못 잡나

park 의 역설이 하나 있습니다.

park 하면 주장 Band 가 현재 위치의 점으로 줄어서, 그 축은 항상 안전(SAFE)으로 보입니다.

그런데 "안전하니까 복귀하자"고 하면, park 하자마자 바로 복귀해 다시 충돌 국면으로 돌아갑니다.

줄어든 주장 Band 로는 복귀 시점을 판단할 수 없습니다.

그래서 park 진입 시점에 원래 가려던 방향의 먼 끝(far edge) 을 기억(동결)해 둡니다.

그리고 상대 Band 가 그 원래 영역 밖으로 완전히 비켜났는지로 복귀를 판정합니다.

 

원 Band(동결 far edge)와 상대 Band가 분리되는 순간 release 되는 개념도 — park 중 축소된 라이브 Band와 대비

 

; park 진입(SET) 시점: 목표 방향의 far edge 를 동결
글로벌 ++ (목표 > 현재):  far(D49018) = 원 Band_MAX (D49006)
글로벌 -- (목표 < 현재):  far(D49018) = 원 Band_MIN (D49004)

; 복귀(RST) 판정: 원 Band ↔ 상대 Band 가 분리되면 un-park
RST = (상대MIN D49054 > 동결far D49018  AND  상대MIN D49054 > 라이브MAX D49006)   ; 상대가 위로 분리
   OR (상대MAX D49056 < 동결far D49018  AND  상대MAX D49056 < 라이브MIN D49004)   ; 상대가 아래로 분리

 

동결 far edge(D49018)와 park 중 라이브 Band 끝을 AND 로 묶는 게 핵심입니다.

이렇게 하면 글로벌 방향(++/--)을 자동으로 흡수합니다.

 

  • 글로벌 ++ 이면 far = 원 MAX 가 라이브 MAX 보다 크므로, 위 식이 상대MIN > 원MAX로 환원됩니다.
  • 글로벌 -- 이면 far = 원 MIN 이 라이브 MIN 보다 작으므로, 아래 식이 상대MAX < 원MIN으로 환원됩니다.
💡 TIP

상대가 위로 비키든 아래로 비키든 양쪽을 다 봅니다.
far edge 한쪽만 검사하면 상대가 반대 방향으로 비킬 때 복귀를 못 잡습니다.
두 항을 OR 로 묶어 어느 쪽으로 비켜도 분리를 감지합니다. 복귀 직후 다음 스캔에 주장 목표가 원래 값으로 정상화되어, 원목표로 한 번에 복귀합니다.

2. MEP 설치방향 엣지: 미러축의 함정

단일 레일에 마주보게 설치하면, 한쪽은 정방향(Posi), 다른 쪽은 미러(Nega)로 뒤집혀 설치됩니다.

Nega 축은 로컬 좌표가 글로벌과 반대로 뒤집혀 있어서, 방향 판단을 모두 글로벌 프레임으로 해야 합니다(1편·2편의 설치방향 분기).

문제는 park 중에 설치 방향(ZR49000.0)을 시운전 중 다시 바꾸는 경우입니다.

동결해 둔 far edge 가 옛 프레임 기준이라 stale(낡은 값) 이 되어, 복귀가 엉킵니다.

이걸 설치방향이 바뀌는 상승 엣지 1펄스로 강제 un-park 해서 처리합니다. MEP(상승 엣지) 명령을 씁니다.

 

설치방향 비교(= ZR49000 K1/K0)에 MEP 상승엣지를 걸고, M49013을 바깥 ANB 게이트로 둔 블록스택 구조 래더 캡처

 

MEP 설치방향 엣지에서 래치 비트는 바깥 게이트로 두고 원시 비교 엣지만 검출하는 래더 세부 캡처

 

; 설치방향이 바뀌면 상승 엣지로 un-park
| M49013 |--+--[= ZR49000 K1]↑MEP--------( RST M49013 )   ; Nega 진입 엣지
            +--[= ZR49000 K0]↑MEP--------                ; Posi 진입 엣지
⚠️ 주의

MEP 를 원시 비교에만 걸고, 래치 비트는 바깥 게이트로 둬야 합니다.
M49013(래치)을 MEP 엣지와 직렬로 붙이면, park 로 진입하는 상승 엣지 자체에도 발화해 방금 건 park 를 바로 풀어 버리는 스퓨리어스(spurious·헛발화)가 생깁니다.
그래서 MEP 는 [= ZR49000 Kx] 원시 비교에만 걸고, M49013은 블록스택 바깥의 ANB 게이트로 둡니다.
이렇게 하면 MEP 는 순수하게 "설치방향이 바뀐 엣지"만 검출합니다. (구식 freeze 저장 비트 방식을 대체·삭제)

3. 목표변경 가드: park 중 목표가 바뀌면

park 중에는 동결 far edge 가 park 진입 시점의 목표 기준입니다.

상위 시퀀스(Job 스케줄러 등)가 park 중에 목표(D40036)를 새 위치로 바꾸면, 이 기준이 낡아져서 새 목표로는 복귀·재판정이 안 됩니다.

그래서 park 진입 시 목표를 동결해 두고, park 중에 목표가 달라지면 un-park 해서 전면 재판정합니다.

 

; park 진입(SET) 시 목표 동결
+--( DMOV  D40036  D49020 )        ; 현재 목표를 D49020 에 동결

; park 중 목표가 바뀌면 un-park
| M49013 |--[ D40036 <> D49020 ]--------( RST M49013 )   ; 목표 변경 → 재판정

 

동결 목표(D49020)와 현재 목표(D40036)가 달라지면 즉시 un-park 됩니다.

un-park 후 같은 충돌·적격이면 새 목표로 다시 park 하고(재캡처), 충돌이 해소됐으면 그대로 이동합니다.

역방향·근접·후퇴 어느 재타겟이든 균일하게 처리됩니다.

💡 TIP

목표 갱신 주기는 최소 2스캔 이상을 권장합니다.
상위 시퀀스가 목표를 너무 빠르게(매 스캔) 보간하면 park 진입·해제가 반복(churn)될 수 있습니다.
단, un-park 되는 스캔도 SAFE 인터락은 그대로 살아 있으므로 보호 공백은 아닙니다.

4. 통합 RST rung: 네 개의 해제 조건을 한 줄로

지금까지 park 를 푸는 조건이 네 가지 나왔습니다.

이 넷을 단일 rung 으로 묶어 M49013을 RST 합니다.

 

네 해제 조건(tie-break·설치방향 엣지·목표변경·release)을 OR로 묶어 RST M49013 하는 통합 rung 래더 캡처

 

통합 RST rung에서 release 조건과 목표변경 가드가 한 블록스택에 배치된 래더 세부 캡처

 

| M49013 |--+--| M49063 |--| M49010 |------------------+--( RST M49013 )
            +--[= ZR49000 K1]↑MEP-------------------+   ; (2) 설치방향 엣지
            +--[= ZR49000 K0]↑MEP-------------------+
            +--[ D40036 <> D49020 ]-----------------+   ; (3) 목표 변경
            +--[ D49054 > D49018 ]--[ D49054 > D49006 ]--+  ; (4) release: 상대 위로 분리
            +--[ D49056 < D49018 ]--[ D49056 < D49004 ]--+  ;     release: 상대 아래로 분리

 

  • (1) tie-break 지연 보정 M49063 AND M49010 — 상대(Ax#2)도 park 중이고 내가 우선축이면 나를 un-park. P0 2회 호출의 1스캔 시차로 양쪽이 park 로 잔존할 때, 우선축만 풀어 한쪽 park 로 수렴시킵니다.
  • (2) 설치방향 엣지 — §2 의 MEP 두 항.
  • (3) 목표 변경 — §3 의 재타겟 가드.
  • (4) release — §1 의 상대 분리 두 항.

 

맨 앞의 M49013을 블록스택 바깥 게이트로 두어, MEP 가 원시 비교 엣지만 검출하도록 합니다(§2).

park 는 SET 로 걸고 이 통합 rung 의 RST 로 풀립니다. 중간 코일 없이 직접 RST M49013 합니다.

5. N축 단일 레일 확장: 인접 이웃만 본다

여기까지가 2축(Ax#1·Ax#2) 기준입니다.

같은 레일에 헤드가 3개, 4개, 16개로 늘면 어떻게 될까요.

 

단일 레일에 N개 헤드가 물리 배열 순으로 놓이고, 각 헤드가 좌·우 인접 이웃만 충돌 비교하는 N축 체인 개념도

 

핵심은 인접한 양 이웃만 비교한다는 점입니다.

한 레일 위에 헤드들이 물리 배열 순(왼쪽 끝 ~ 오른쪽 끝)으로 있고, 서로를 통과할 수 없으므로, 바로 옆(n-1·n+1) 이웃만 충돌 비교하면 됩니다(멀리 있는 헤드는 이웃을 거쳐야 닿으므로 불필요).

 

SAFE_n  = req AND sep(n-1) AND sep(n+1)
sep(m)  = (내MIN > 상대MAX_m) OR (내MAX < 상대MIN_m)

 

  • 끝축 비대칭 — 왼쪽 끝(Ax1)은 오른쪽만, 오른쪽 끝(AxN)은 왼쪽만 검사합니다. 없는 쪽을 가상 밴드나 가드 값으로 채우면 초기값 0 이 실 좌표와 겹치는 순간 영구 인터락이 되므로, 실존 이웃만 참조하는 형태가 안전합니다.
  • 글로벌 오프셋은 체인 누적 — 인접 쌍이 각각 공유 티칭점을 약속하고, Off_n = Off_{n-1} + (인접 쌍 차이)로 이어 붙입니다(2편 §6 의 3축 확장).
  • 우선권 tie-break 도 그대로 — 축번호 순으로 P0 를 호출하면 낮은 축이 우선을 먼저 확보합니다.
  • 양보(yield)의 이웃 선택은 글로벌 방향으로 — 중간축은 이동 방향 쪽 이웃 1개와만 양보를 협상합니다(축당 4비트 유지).

 

이때 방향을 로컬 방향비트 그대로 쓰면 미러(Nega) 설치축에서 정확히 반대 이웃을 선택합니다 — 반전축은 적격 판정이 성립하지 않아 양보가 아예 발화하지 않는데, 상대축이 대신 양보해 주는 단순 조우에서는 겉보기 정상이라 실기 모니터(이웃 스냅샷 워드 대조)로만 잡히는 함정입니다.
"방향 판단은 글로벌 프레임" 원칙(§2)이 이웃 선택에도 그대로 적용됩니다 — 설치방향(ZR b+0) 분기로 보상한 레일방향 비트를 게이트로 씁니다.

💡 TIP

축당 레지스터 간격은 +50 으로 넓혔습니다.
2편에서는 축당 +20 이었지만, 이번 시리즈에서 우선권·적격·양보 판정·래치 비트와 동결 far·목표 동결·마진 임계 워드가 축마다 추가됐습니다.
한 축이 실제로 쓰는 공간이 늘었으므로, 16축까지 겹치지 않도록 축당 +50 간격으로 통일했습니다(2편의 "실제 쓰는 word 수 + 여유" 원칙의 연장).

실물 서보 폼(QD77MS4 4축 / MS16 16축)에 이 체인을 적용하는 구현은 범위가 커서 이 시리즈의 후속 심화로 분리합니다.

이 글은 여기서 2축 yield 제어의 완결까지를 목표로 합니다.

6. 시리즈 마무리: 예측에서 견고한 양보까지

경로기반 충돌방지 시리즈를 정리합니다.

 

  • 1편 — 점이 아닌 영역(Band) 으로 충돌을 예측한다. (1편 보기)
  • 2편 — 비대칭 마진(Back/Front)과 Follow 추종으로 실 설비에 맞춘다. (2편 보기)
  • 3편 — Follow 가 못 푸는 데드락을 Yield park 로 푼다. (3편 보기)
  • 4편 — 적격 판정과 상호배제 seal-in 으로 정확히 한 축만 양보시킨다(데드락 불가 보장).
  • 5편 — release 복귀·MEP 설치방향 엣지·목표변경 가드·N축 체인으로 실 설비 견고성을 갖춘다.

 

핵심 재요약입니다.

 

  • park 중엔 주장 Band 로 복귀를 못 잡는다 — 동결 far edge 와 상대 Band 분리로 판정(글로벌 프레임이라 4 설치조합 자동 정합).
  • MEP 는 원시 비교에만, 래치는 바깥 게이트 — park 진입 엣지 헛발화를 막는다.
  • 목표변경 가드로 재타겟을 흡수 — park 중 목표가 바뀌면 un-park 후 재판정.
  • 해제 조건 4개를 단일 RST rung 으로 통합 — tie-break·설치방향·목표변경·release.
  • N축은 인접 이웃만 비교 — 끝축은 실존 이웃 1개만 + 오프셋 체인 누적, 축당 +50 간격. 양보 이웃 선택은 글로벌 방향(미러축은 설치방향 보상 필수).

 

이 시리즈의 알고리즘은 상용 라이브러리의 블랙박스나 학술 이론과 달리, 미쓰비시 GX Works2 래더로 직접 구현하고 우선권을 진리표로 공개한 것이 차별점입니다.

테스트해 보시고 문제점이 있다면 댓글로 피드백 주시면 감사드리겠습니다. ^^

728x90
반응형