불완전 피치 전진 — 타이밍, Unload, 등급
최우선은 체인이 완전히 멈춘 뒤에 Unload가 나가게 PLC를 고치는 것입니다. 로봇 프로그램은 고치지 않습니다.
이 문서의 결론
Robot3 LS와 SC1 파라미터는 그대로 두고, Unload 허가 한 줄만 바꿉니다. enable=1에서 감속·크리프 중 Unload가 켜지는 직접 논리 경로는 이 줄이 차단합니다. 실제 체인 정지·픽 위치·깔딱 감소는 적용 후 10 ms Trend와 저속 현장시험으로 확인합니다.
이번에 바꾸는 것
- Sheet_Conveyor_1 / Permits Unload 한 곳
- HMI Enable=1이면 State_Stop 또는 Idle에서만 Unload
- 크리프·감속 중 Unload 차단 (slowdown AND 제거)
- Enable=0은 원본 slowdown 경로로 되돌림
이번에 바꾸지 않는 것
- Robot3 LS 프로그램과 티칭 좌표
- ULOD_INF 14번 Clear OFF
- SC1 속도와 거리 파라미터
- Tracking, MES, Open_Gate 구조
0. 용어
sheet_dropped 등은 그대로 두고, 본문에서는 전기동으로 부릅니다.
TOOL로봇 공구 전체(그리퍼 포함). 안전 구역 판정은 TOOL 기준이고, 집은 뒤에는 TOOL과 전기동 외곽을 함께 봅니다.
Clear로봇 DO[1:Clear of Infeed] → PLC i_clear_of_infeed → z_permit_r3_sc1_start. 이 신호가 0이면 SC1은 출발도 주행 유지도 못 합니다.
불완전 피치 전진SC1이 1칸을 끝내지 못하고 서거나, 홈 속도로만 흘러가거나, 트래킹 칸이 비는 현상입니다.
1. 문제가 나는 정확한 줄 — 그리고 조업 규칙
조업 규칙은 이렇습니다. 컨베이어가 완전히 멈춘 뒤에, 전기동이 집은 자리에 정확히 정지해 있어야 로봇이 집을 수 있습니다. 체인이 조금이라도 움직이면 집은 위치가 어긋나 에러가 납니다. 구형 프로그램의 14번도 이 규칙을 위해 Clear를 끄고 컨베이어를 붙잡아 둡니다. 신형과 명령이 같습니다.
따라서 14번을 “너무 이른 끄기”로 고쳐서, 로봇이 픽 점에 가는 동안 SC1이 계속 돌게 하면 안 됩니다.
그 사이 체인이 움직이면 전기동이 집은 자리에서 벗어납니다. Clear를 CALL CLOSE까지 미루는 안은 이 규칙과 맞지 않아 철회합니다.
14번이 아픈 지점인 이유는, 그 줄이 SC1을 멈추는 순간이기 때문입니다. 문제는 그 명령을 신형이 새로 넣었다는 것이 아닙니다. 아직 정확한 자리에 서지 못한 채로 Unload가 나가서, 14번이 그 잘못된 자리에서 체인을 붙잡는 것이 문제입니다. 감속 중에 Unload가 나가거나, 한 칸을 못 끝낸 채 멈추면, 전기동은 픽 점이 아닌 곳에 서고 로봇은 가르친 좌표로 집으러 갑니다.
바른 순서는 이렇습니다. SC1이 한 칸을 끝내고 픽 인덱스에 정지합니다. 그다음에 Unload를 줍니다. 그때부터 14번에서 Clear를 끄는 것은 맞습니다. 접근하는 동안 체인이 다시 출발하지 못하게 붙잡아 둡니다. 집은 뒤 TOOL과 전기동이 인피드를 벗어나면 Clear를 다시 켜서, 다음 장이 정확한 자리까지 갈 수 있게 합니다. 조업 1번 렁이 정지 후에만 Unload를 주는 것은 이 순서와 같습니다. enable을 끄면 감속 중 Unload가 살아나, 체인이 완전히 서기 전에 로봇이 들어가 집기 에러가 나기 쉽습니다.
정확한 정지 전에 Unload → 14번이 그 자리에서 체인 고정 → 집은 자리 아님, 깔딱, 등급 칸 어긋남.
SC1 아직 감속·한 칸 미완 Unload 허가 → ULOD 14번 Clear OFF 체인은 잘못된 자리에 정지 로봇은 PR[3] 픽 좌표로 진입
한 칸 완료 후 픽 자리에 정지 → 그다음 Unload → 14번 Clear OFF는 접근 중 재출발 방지.
SC1 Stop + 픽 인덱스 Unload 허가 → ULOD 14번 Clear OFF 체인은 그 자리에 고정 (맞음) 로봇 PR[3]에서 CLOSE
2. 한 사이클 타이밍 — 현재와 목표
가로축은 한 Unload 사이클의 개념 시간입니다. 눈금은 약 0.5 s입니다.
짧은 permit_start 펄스(10~60 ms)는 막대 안에 넣지 않고, 출발 순간에만 표시합니다.
Unload가 너무 이른 때 (체인이 픽 자리에 서기 전)
14번 자체는 접근 중 체인을 붙잡는 용도입니다. 한 칸이 끝나기 전에 Unload가 나가면, 그 붙잡기가 잘못된 자리에서 일어납니다.
목표 (픽 자리에 정지한 다음 Unload, 14번은 그대로 고정용)
SC1이 한 칸을 끝내고 집은 자리에 섭니다. 그다음에 Unload를 줍니다. 14번 Clear OFF는 접근 동안 체인이 다시 안 돌게 붙잡습니다. 집은 뒤 인피드를 벗어나면 Clear를 켜서 다음 장이 다음 정확한 자리까지 가게 합니다. 접근 중에 Clear를 켜 두면 체인이 움직여 집기 에러가 납니다.
2b. permit_sc1_r3_slowdown 과 현장 Unload 붙여넣기
permit_sc1_r3_slowdown은 래더 OTE가 아닙니다. DoAutomatic SFC가 ST로 1과 0을 넣습니다.
| 언제 | 값 | 그때 체인 |
|---|---|---|
State_Forward_Slow_To_Creep 진입 | 1 | 아직 감속 주행. var_cmd_speed := 1 |
State_Forward_Slow_To_Stop 진입 | 1 | 크리프. var_cmd_speed := 5 |
State_Stop 진입 | 1 | 정지 스텝. 속도 0 |
State_Idle를 떠날 때 | 0 | 다음 피치 시작 |
한 번 1이 되면 Idle을 떠나기 전까지 그대로입니다. “지금 감속 중인가”가 아니라, “이번 사이클에서 감속에 들어갔는가”입니다. 원래 Unload는 이 비트가 1이면 감속 중에도 로봇을 들여보냈습니다. 체인이 완전히 서기 전에 로봇이 들어가므로, 집은 자리에 정지해야 한다는 조업 규칙과 반대입니다.
지금 조업 1번 렁(enable=1)은 그 비트에 State_Stop을 한 겹 더 얹습니다. Stop에서 Unload가 나가려면 slowdown과 State_Stop.X가 동시에 1이어야 합니다.
현장 수정은 sc1_hmi_enable=1일 때 slowdown을 쓰지 않습니다. enable=0은 원본으로 되돌립니다.
[XIO(sc1_hmi_enable)[XIC(interlock_stopped),XIC(z_System_Running.X)XIC(permit_sc1_r3_slowdown)],XIC(sc1_hmi_enable)[XIC(interlock_stopped),XIC(z_System_Running.X)XIC(State_Stop.X)]]XIO(i_sheet_not_at_transfer)OTE(z_permit_sc1_r3_unload);
enable=0: 원본 (stopped 또는 Running AND slowdown)
enable=1: Idle이거나 State_Stop일 때만 Unload. 크리프 진입이 없습니다.
enable=0: 원본과 같이 slowdown이면 감속 중에도 Unload(깔딱 경로로 되돌림).
[XIC(interlock_stopped)
,XIC(z_System_Running.X)XIC(permit_sc1_r3_slowdown)
[XIO(sc1_hmi_enable)
,XIC(sc1_hmi_enable)XIC(State_Stop.X)]
]
XIO(i_sheet_not_at_transfer)
OTE(z_permit_sc1_r3_unload);
enable=1에서 slowdown AND를 빼고 Stop만 봅니다. enable=0은 원본입니다.
| 수정 전 (enable=1) | 수정 후 (enable=1) | |
|---|---|---|
| Slow_To_Creep / Slow_To_Stop | slowdown이면 Unload 가능 | Unload 0 |
| State_Stop / Idle | slowdown AND Stop | Stop 또는 Idle (slowdown 없음) |
| enable=0 | 원본 | 원본 (되돌림) |
State_Stop 또는 Idle)에만 Unload가 나가게 하는 것입니다. 이 줄은 enable=1에서 State_Stop.X=0인 감속·크리프 중 Unload 직접 경로를 차단합니다. State_Stop 진입 때 명령 속도는 0이지만, 실제 체인 정지와 픽 위치는 렁이 측정하지 않으므로 10 ms Trend로 확인합니다. 로봇 프로그램은 고치지 않습니다. SFC slowdown 대입도 그대로 둡니다. 접점만 지우면 enable=0에서 고속 Unload가 나갑니다.
이전에 PLC를 고쳤는데 증상이 같았던 이유
조업에 이미 들어가 있는 1번 렁이 그때의 수정입니다. enable=1이면 State_Stop을 보되, slowdown은 그대로 AND입니다.
그때 알려 준 Rev.E A도 Slow_To_Stop(아직 움직이는 크리프)을 열어 두었습니다. 둘 다 “정지 후 집기”가 아닙니다. 그래서 원인을 고친 것처럼 보여도 결과가 같을 수 있습니다.
| 그때 넣은 것 (지금 조업) | 이번 식 | |
|---|---|---|
| enable=1 | Running AND slowdown AND Stop | Idle 또는 Running AND Stop만 (slowdown 없음) |
| Stop이 짧은 500 ms | slowdown과 Stop이 안 겹치면 Unload가 Stop을 놓침 → Idle로 넘어가거나, 다음 기동과 섞임 | Stop이면 slowdown 없이도 Unload |
| Creep | enable=0이거나 slowdown만으로 아직 열릴 수 있음 | enable=1이면 Unload 0 |
이번 한 줄은 깔딱의 Unload→14번 직접 논리 경로를 차단합니다. 실제 정지·픽 위치·재발 감소는 붙여넣은 뒤 10 ms Trend로 확정합니다. 그래도 남을 수 있는 것:
- HMI
sc1_hmi_enable이 0이면 원본 Unload로 돌아가 같은 증상이 납니다. 시험은 반드시 1. - 속도 Track(체인16→24)은 Unload와 다른 렁입니다. 짧은 가속만으로 등급 0이 끼면 Unload를 고쳐도 등급 소실이 남습니다.
- 이미 인덱스를 놓쳐 홈처럼 흐르는 사이클은, 그 사이클의 SM1 드롭 실패를 한 줄이 되돌리지 않습니다. 새로 시작하는 칸부터 줄어야 합니다.
- pending은 첫 깔딱의 원인이 아니지만, Clear가 풀린 뒤 잘못된 자리 재기동을 키울 수 있습니다. 적용 후에도 재발하면 enable OFF로 짧게 가립니다.
- SC2 파라미터를 조금 빠르게 해서 약 90%가 준 경합은 남아 있을 수 있습니다. Unload를 멈춘 뒤에 둬도 Clear 2.4 s와 오프셋은 그대로입니다.
붙여넣은 뒤 10 ms로 z_permit_sc1_r3_unload가 Creep에서 0인지, Stop/Idle에서만 1인지 확인하기 전에는 합격으로 보지 않습니다.
3. SC1과 SC2 — 속도가 아니라 허가 시점
두 컨베이어의 1사이클 속도가 비슷해도 증상이 SC1에만 남는 이유는, 로봇이 언제 들어가도록 허용하는지가 다르기 때문입니다.
| SC1 (인피드, 전기동을 집음) | SC2 (출구, 전기동을 내려놓음) | |
|---|---|---|
| 로봇에게 주는 허가 | z_permit_sc1_r3_unload. 조업 1번 렁은 enable=1이면 State_Stop 이후. |
z_permit_sc2_r3_load. interlock_stopped와 트랜스퍼 비점유. |
| 컨베이어가 로봇을 기다리는 신호 | DO[1] Clear of Infeed. 0이면 permit_run_forward가 끊깁니다. |
i_clear_of_outfeed. 출구 점유. |
| 현장으로 보면 | 조업 규칙은 픽 자리에 완전히 선 뒤에만 Unload. 이번 식은 enable=1에서 Stop/Idle일 때만 허가합니다. 서기 전에 Unload가 나가면 14번이 틀린 자리를 고정합니다. | SC2가 홈(정지)에 있어야 로봇이 내려놓습니다. 완주한 뒤에만 들어갑니다. |
4. 남은 약 10% — 홈 속도, SM1만 드롭 불가
현장에서 본 묶음과 같습니다. 등급은 잘 나가다가 갑자기 사라지고, 그때 SC1은 정상 1칸이 아니라 홈 속도만으로 계속 갑니다. 어느 순간 인덱스를 다시 잡으면 정상으로 돌아옵니다. 그 동안 SM1은 탈취는 됐는데 전기동 드롭을 안 하고, SM2만 탈취와 드롭이 이어집니다.
| SM1 전기동 드롭 | SM2 전기동 드롭 | |
|---|---|---|
| PLC 허가 | interlock_stopped 그리고 f_indexed_for_sm1 |
interlock_stopped 그리고 i_sheet_not_at_sm2 |
f_indexed_for_sm1 |
인덱스 카운터 짝/홀(counter_index.ACC.0). SM1 칸에 섰을 때만 1 |
없음. 트랜스퍼가 비어 있으면 됨 |
홈 속도(var_cmd_speed = 3)일 때 |
인덱스를 못 잡아 SM1 칸에 안 섬 → 탈취만 되고 드롭 불가. 등급은 칸9에 남음 | 가끔 전압 0으로 서고 트랜스퍼만 비면 드롭 가능. 칸12→체인20번은 나갈 수 있음 |
- 한 칸을 못 끝내거나 인덱스를 놓치면 자동이 목표 카운트를 못 맞춥니다. 그때 속도 지령이 3(홈)으로 갑니다.
- 홈 속도는 픽/SM1 자리에 정밀 정지를 하지 않습니다.
interlock_stopped는 Idle이고 속도 0일 때만입니다. - SM1 드롭은 그 정지에다 SM1 인덱스 비트까지 필요합니다. 비트/자리가 아니면 전기동 드롭이 안 나갑니다. 탈취(7→9)는 이미 됐으므로 SM 위에는 전기동이 있습니다.
- SM2 드롭은 SM1 인덱스를 안 봅니다. 서서 트랜스퍼만 비면 드롭이 나갑니다. 그래서 SM2만 탈취+드롭이 계속됩니다.
- SM1
Open_Gate(칸9→체인16번)가 안 나가면 체인16번은 0인 채 Track만 밀립니다. 체인24번(로봇3번 픽업)에 빈 등급이 옵니다. 갑자기 정상 속도로 돌아오면 그제야 SM1 드롭이 다시 됩니다.
pending / active 때문인가, 파라미터인가
1차 원인은 pending이 아닙니다. SM1 드롭 식은 interlock_stopped와 f_indexed_for_sm1뿐입니다. Open_Gate는 SC1이 안 움직일 때만입니다.
pending/active는 그 식을 안 봅니다. 기동(permit_start)을 enable=1일 때 한 번 더 밀어 주는 보조입니다.
| 하는 일 | 이 증상과의 관계 | |
|---|---|---|
| pending / active | SM 드롭 에지에서 래치. enable=1이면 Clear가 살아난 뒤 permit_start를 다시 줌. 데이터 Track 게이트가 아님 |
깔딱·Clear OFF로 첫 출발이 죽은 뒤에 잘못된 자리에서 한 칸을 다시 시작하게 만들 수 있음. 이중 출발이면 속도 Track이 한 번 더 나가 빈 등급이 끼기 쉬움. 첫 깔딱 자체는 Unload+14번 |
var_cmd_speed = 3 (홈) |
자동 DoAutomatic이 아니라 DoHoming(인덱스 위일 때)과 수동 전진 |
자동에서 “홈처럼 느리다”면 실제로는 플래그 탐색의 속도 1(저속 ≈ 2.82 V)이거나, 인덱스를 놓친 채 저속으로 흘러가는 구간에 가깝습니다. 트렌드에 var_cmd_speed를 넣으면 3인지 1인지 갈립니다 |
| SC1 오프셋·전압 | param_offset 9450 / creep 8200 / highspd 6700, 저속·크리프 전압 |
값이 “고장”이라기보다 Clear OFF와의 경합. SC2 파라미터를 조금 빠르게 하니 약 90%가 줄었음. Unload를 정지 뒤로 미루는 것이 1차. 그래도 한 칸을 못 끝내면 그때 오프셋을 봄 |
enable을 잠깐 끄면 pending이 출발을 다시 안 밀어 줍니다. 홈 속도+SM1 드롭 불가가 그대로면 pending이 주원인이 아닙니다. 그때만 크게 줄면, 깔딱 뒤에 pending이 재기동을 키운 것입니다. 등급만 보려면 Unload 지연(enable=1)을 유지한 채 보는 편이 안전합니다.
SM 게이트를 500 ms보다 늘리면
500 ms는 SM Open_Gate가 아닙니다. SC1 State_Stop 스텝 PRE가 500 ms입니다.
SM1/SM2 State_Open_Gate의 PRE는 0입니다. 게이트는 타이머가 아니라 전기동이 떨어졌다는 센서(i_copper_not_dropped 하강)까지 열려 있습니다.
SC1 쪽 tmr_delay는 300 ms이고 f_indexed_for_sm1일 때 TON만 돌며, .DN을 쓰는 렁은 없습니다.
게이트를 인위적으로 더 오래 열면, SC1이 이미 서서 SM1 인덱스일 때는 전기동이 떨어질 시간이 늘어 Open_Gate(칸9→체인16번)가 조금 여유로워질 수 있습니다. 택트는 그만큼 늘어납니다.
인덱스를 놓쳐 홈처럼 흐르는 중이면 z_permit_sc1_sm1_drop 자체가 안 나갑니다. 게이트 시간을 늘려도 SM1은 드롭을 시작하지 않습니다.
Unload→14번 깔딱 경로도 게이트 시간과 무관합니다. 최우선은 체인이 멈춘 뒤 Unload입니다.
5. 접근 L과 J — 1호기 신형만 J입니다
Robot3 프로그램은 두 세대입니다. 구형은 1호기만 있습니다. 2호기 구형 프로그램은 없습니다. 2호기는 신형 프로그램입니다.
구형: Desktop/CSM1_PE변환 프로그램/R3. 신형 1호기: ROBOT_3/CSM1. 신형 2호기: ROBOT_3/CSM2.
OFSTZERO 접근은 1호기 구형과 2호기 신형이 L(TOOL이 직선, mm/s)입니다. 1호기 신형만 J P[1:APPR] 95% CNT100입니다.
같은 신형 세대 안에서 1호기만 J로 가르친 편차입니다. 95%는 TOOL 속도가 아니라 축 최대의 비율입니다.
끝점이 안전 구역이어도 J의 중간 경로는 곡선이라 인피드를 스칠 수 있습니다.
| 구형 프로그램 (1호기만) | 신형 · 1호기 신규 | 신형 · 2호기 | |
|---|---|---|---|
| Clear OFF | ULOD 14, PR[2] 전 | 같음 | UNLD_INF/ULOD, PR[2] 전 |
| OFSTZERO 접근 | L 2500 mm/s CNT100 | J 95% CNT100 | L 4000 mm/s ACC100 |
| 픽 | L 2000 CNT30 | L 2300 CNT5 | L 1800 CNT5 |
| 퇴피 · Clear 점 | 1000 → 1500 | 1800 → 1900 | 2400 → 2400 CNT80 |
| Clear ON | P[3] 끝난 뒤 | 같음 | 같음 |
2호기는 신형이므로 운동 타입 L은 같은 세대의 참고입니다. XYZ와 mm/s는 설치가 달라 1호기에 복사하지 않습니다.
빨간 곡선은 실제 조인트 해가 아니라 “직선이 아님”을 보이는 예시입니다. PR[2]·PR[3] XYZ는 LS에 없습니다. P[1]·P[2]·P[3]는 XY가 같고 Z만 −466 → −300 → +255 mm입니다.
6. 등급이 빈다는 것을 쉽게 보는 방법
컨베이어 위에는 전기동이 한 장씩 놓입니다. 비젼컴퓨터가 그 전기동의 등급(S, E, G, R)을 칸11에 넣습니다. Robot3가 집기 직전에 PLC는 체인24번(로봇3번 픽업)의 등급을 읽습니다. 그 칸의 등급이 없으면 비었다고 나옵니다.
전기동과 등급 데이터는 같은 물건이 아닙니다. 체인은 모터가 돌면 움직이고, 등급은 PLC가 “한 칸 밀어라” 할 때만 칸이 바뀝니다. 두 움직임이 한 장에 한 칸씩 같아야 집는 전기동의 등급이 맞습니다.
지금 조업에서 PLC는 “체인이 한동안 빨리 돌았다”는 속도 신호로 등급을 한 칸 밉니다. 전기동이 정확히 한 칸 자리에 도착했는지는 보지 않습니다. 그래서 체인이 짧게만 움직이거나, 끊겼다가 다시 움직이면, 체인 위의 장 수와 등급 칸 수가 어긋날 수 있습니다. 어긋난 자리에 빈 등급이 로봇 앞까지 밀려 오면, 전기동은 있는데 등급이 없는 것처럼 보입니다.
SM이 전기동 한 장을 올립니다. 비젼컴퓨터가 매긴 그 전기동의 등급이 체인16번에 들어갑니다. 체인이 한 칸 가면 등급도 한 칸 갑니다. 체인24번(로봇3번 픽업)의 등급이 그 전기동과 같습니다.
체인이 짧게 가속만 해도 등급이 한 칸 밀립니다. 새 전기동의 등급이 아직 안 들어갔으면 빈 칸이 끼어 듭니다. 그 빈 칸이 로봇 앞까지 오면 등급이 사라집니다.
HMI enable 스위치는 이 등급 밀기와 이미 같아졌습니다. 켜 두든 꺼 두든, 속도가 나면 등급은 같은 방식으로 이동합니다. 스위치가 바꾸는 것은 “로봇이 언제 집어 가라고 허락하는지”와 “출발이 한 번에 안 됐을 때 다시 밀어 주는지”입니다.
7. 등급이 비는 경로 (현재 조업 L5X, 기술)
현재 조업은 데이터 이동을 sc1_hmi_enable = 0과 같게 되돌렸습니다.
prod_tracking은 속도 신호 z_sc1_data_move_signal(i_Sheet1_Speed_Ref > 2000 후 TON·ONS·TOF)이 한 번 뜰 때마다
Track[11]을 걸어 체인16번→체인24번을 한 칸 밉니다. 정지+카운트 완료(armed) 경로는 쓰지 않습니다.
sc1_hmi_enable과 pending/active는 기동 허가만 보조합니다. 등급 시프트 게이트가 아닙니다.
등급 본체는 그대로입니다. a_cathode[].Weight 1=S, 2=E, 3=G, 4=R. 체인 배열은 체인16번(SM1 드롭)부터 체인24번(로봇3번 픽업)입니다.
시프트 직후 z_sc1_R3_Grade := a_cathode[24].Weight입니다. 시프트는 체인16번을 항상 0으로 비웁니다.
현재 로직에서 등급이 비는 유력 원인
1피치 완료 증명이 없습니다. 속도가 2000을 넘긴 적이 있으면 데이터가 한 칸 갑니다. 깔딱·재기동·홈 속도 전후의 가속만으로도 Track이 한 번 더 나갈 수 있습니다. 그때 체인16번에 SM 드롭 복사가 없으면 Weight 0이 끼어 체인24번까지 밀립니다. 로봇3번은 등급이 사라진 체인24번을 읽습니다.
SM 드롭 복사는 이전과 같습니다. SC1이 멈춰 있고 도착 칸 Serial이 0일 때만 칸9→체인16번, 칸12→체인20번으로 복사합니다.
복사가 안 되어도 명령 비트는 지워지므로 그 전기동의 등급은 다시 안 들어갑니다.
pending/active로 기동이 한 번 더 나가면 속도 펄스가 한 번 더 나와, 드롭 한 장에 시프트 두 번도 가능합니다.
| 지금 조업에서 보이는 것 | 데이터에서 일어나는 일 |
|---|---|
| 깔딱이 거의 안 보여도 짧은 속도 피크 | 속도 경로가 Track 1회. 물리 1칸이 아닌데 배열만 전진. 체인16번에 0이 들어감. |
| Clear가 잠깐 끊긴 뒤 pending으로 재기동 | 한 드롭에 출발이 두 번이면 속도 신호도 두 번. 이중 시프트. 빈 칸이 체인24번으로 이동. |
홈 속도로 흐름 (z_sc1_moving=1) | SM 게이트 복사가 안 됨. 그 사이 속도가 2000을 넘으면 빈 칸만 시프트. |
| 홈 속도만 계속, SM1은 탈취만 되고 드롭 안 함, SM2만 드롭 | 칸9→체인16번 Open_Gate 없음. 체인16번은 0, 칸12→체인20번만 채워짐. Track이 체인16번의 0을 체인24번으로 밈. 칸11까지는 정상으로 보이다가 드롭 이후 등급이 사라짐. |
| 도착 칸 Serial이 아직 0이 아님 | 드롭 복사 실패 + 명령 삭제. 그 전기동 등급 소실. 이후 시프트와 물리가 어긋남. |
칸11까지 있고 탈취·게이트 드롭 뒤에 사라질 때
비전은 칸11(i_vision_bar)에 Weight를 씁니다. 그다음 Move_Cathode는 출발 칸을 0으로 지웁니다.
인피드 로봇이 집을 때 11→7, 탈취 로봇이 SM 위에 놓을 때 7→9(SM1) 또는 7→12(SM2).
칸11만 보면, 탈취 뒤에 11이 비는 것은 정상입니다. 데이터는 9 또는 12로 옮겨 간 상태여야 합니다.
SM이 전기동을 SC1에 떨어뜨릴 때(Open_Gate) 칸9→체인16번 또는 칸12→체인20번을 합니다.
조건은 not z_sc1_moving(oa_conveyor > 0이면 이동 중) 그리고 도착 칸 Serial=0입니다.
SC1이 깔딱·크리프·홈 속도로 조금이라도 전압이 있으면 복사를 안 하고 기다립니다. 도착 칸에 이전 Serial이 남아 있으면 복사를 건너뛴 뒤 명령만 지웁니다. 그때 칸9/칸12에 남은 등급은 체인16번→체인24번에 안 올라가고, 체인24번(로봇3번 픽업)은 0이 됩니다.
그래서 “11까지는 있고 드롭 뒤에 없다”는 관찰은 Unload 렁 자체와 같은 식은 아닙니다. 다만 SC1이 드롭 순간에 움직이거나, 이전 깔딱으로 체인16번에 Serial이 남아 있으면 Open_Gate가 실패합니다. 그 부분은 SC1×Robot3 타이밍과 연결되어 있습니다. 11→7→9 이동이 이미 실패한 경우(인피드 로봇 트랙)는 SC1 Unload와 다른 층입니다. 트렌드에 칸11·7·9·12와 체인16·20·24번 Weight를 같이 넣으면 어디서 끊기는지 갈립니다.
PLC Unload만 고치면 둘 다 잡히나
깔딱의 유력 경로(Creep에서 Unload → 14번)는 Unload 렁만으로 막습니다. 데이터 증발은 깔딱으로 자리와 등급이 어긋난 부산물이면 같이 줄어들 수 있습니다. 속도 Track이 포켓과 1:1이 아니거나 칸이 하나 더 밀려 Weight 0이 들어가는 경로는 Unload와 다른 렁이라, Unload만으로 구조적으로 죽지 않습니다. 적용 후 깔딱과 등급을 둘 다 셉니다. 깔딱이 줄고 등급이 남으면 Track을 따로 봅니다.
8. 테스트 방향 — HMI enable OFF와 ON
pending은 깔딱 때문에 기동이 한 번에 안 나갈 때를 대비해 넣어 둔 보조입니다. 데이터 한 칸 이동은 이미 enable=0(오리지널)과 같게 돌려 놓았습니다. 따라서 “등급이 속도만 보고 움직이는가”를 보려면, 스위치를 꺼서 오리지널 기동으로 돌아가는 것이 데이터 경로만 놓고 보면 맞습니다. 다만 스위치는 데이터만이 아니라 로봇 Unload 허락 시점도 바꿉니다. 끄면 깔딱이 다시 커질 수 있습니다.
| HMI enable OFF (오리지널) | HMI enable ON (지금 조업에 가깝게) | |
|---|---|---|
| 등급 이동 | 속도가 한동안 나면 Track 1회. 오리지널과 같음. | 같은 속도 경로. ON이라고 완료 시프트를 쓰지 않음. |
| pending / active | 기록은 되지만 출발 식에 안 들어감. 기동은 오리지널. | 출발이 한 번에 실패하면 pending이 다시 밀어 줌. 한 드롭에 출발이 두 번이면 속도 펄스도 두 번 날 수 있음. |
| Robot3 Unload (1번 렁) | 감속 중에도 Unload. Clear가 이르게 꺼지면 깔딱이 다시 잘 보임. | 정지 후에만 Unload. 지금처럼 깔딱이 줄어 있는 상태. |
무엇을 확인하고 싶은지에 따른 순서
등급이 비는 원인만 보려면, 먼저 스위치를 ON으로 두고 지금 조업과 같게 돌립니다. 데이터는 이미 오리지널입니다. Unload 지연은 그대로라 깔딱이 크게 돌아오지 않습니다. 트렌드에는 속도, 속도 신호, Track, SM 드롭, 체인16·20·24번 Weight를 같이 넣습니다. Track 횟수가 드롭보다 많으면, 짧은 움직임이 등급을 더 민 것입니다.
pending이 등급을 더 비게 하는지만 가리려면, 같은 조건에서 스위치를 잠시 OFF로 둡니다. OFF에서는 pending이 출발을 다시 밀어 주지 않습니다. 등급 빔이 ON과 같이 나오면 pending이 주원인이 아닙니다. 속도 경로 공통 원인이 됩니다. OFF에서는 감속 중 Unload가 살아나므로 깔딱이 늘 수 있습니다. 짧은 구간만 보고, 깔딱이 심해지면 즉시 ON으로 되돌립니다.
“개조 없이 예전 라인 그대로”를 재현하려면 OFF가 맞습니다. 그때는 깔딱과 등급을 함께 봅니다. 깔딱이 줄어든 지금 상태에서 등급만 보려면 ON이 맞습니다. 데이터 로직은 두 스위치에서 같습니다.
9. 신호 연결
R4 비젼컴퓨터 Weight → 칸11 → (로봇 드롭) 칸9 SM1 / 칸12 SM2
SM 드롭 에지 → Track_Strip*_Open_Gate
정지 중이고 도착 칸 Serial=0 일 때만 Move_Cathode → 체인16번 / 체인20번
아니면 복사 안 하고 명령만 0 → 그 전기동 등급 소실
SC1 속도>2000 → z_sc1_data_move_signal → Track[11] (enable 무관, 현재 조업)
pending/active 는 permit_start 보조만. 시프트 게이트 아님.
Shift 체인16번..체인24번, 체인16번을 0으로 비움. z_sc1_R3_Grade := a_cathode[24].Weight (체인24번 = 로봇3번 픽업)
SM 드롭 → sheet_dropped
SC1 출발 → permit_start (펄스) 그리고 permit_run_forward (유지)
↑
z_permit_r3_sc1_start = i_clear_of_infeed = 로봇 DO[1]
SC1 정지(enable=1, 1번 렁) → z_permit_sc1_r3_unload
로봇 RSR0001 DI[1] ON → CALL ULOD_INF
ULOD_INF 14번 DO[1]=OFF ← 접근 중 체인 고정 (구형과 동일, 올바른 용도)
전제: 그 전에 SC1이 픽 자리에 완전히 정지해 있어야 함
위반: 감속 중·한 칸 미완 상태에서 Unload → 틀린 자리 고정 → 집기 에러