docs: SeqAutoRunPTOP 시퀀스 전체 분석 문서 + 작업일지 추가
- 현재 코드 기준 노드 흐름·PLC 핸드셰이크·레이저 발진 구간 정리 - M70509(Scout, 9번) 분기 특성, 정지/Resume 처리 포함 - 현장 레이저 발진·Scout 이미지 촬영 정상 확인 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
669a1cda82
commit
a69ba578e6
110
docs/분석_SeqAutoRunPTOP_시퀀스.md
Normal file
110
docs/분석_SeqAutoRunPTOP_시퀀스.md
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
# SeqAutoRunPTOP 시퀀스 전체 분석
|
||||||
|
|
||||||
|
> 대상: `Machines/ILSOS_PrismaticRD_PTOP/Sequences/SeqAutoRunPTOP.cs`
|
||||||
|
> 기준일: 2026-06-23 / 현재 코드(field/ptop-1st) 기준
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 전체 노드 흐름
|
||||||
|
|
||||||
|
```
|
||||||
|
Init
|
||||||
|
→ Sequence_Enter 장비 핸들 확보, RecipeManager 확보, PC_AUTO_STATUS=ON
|
||||||
|
→ CheckInitCondition (분기) 정상 → CheckPageNo / Resume → UploadList 스킵진입
|
||||||
|
→ CheckPageNo PLC_PAGE_CHANGE_REQ(0x08) ON 대기 (단일 게이트)
|
||||||
|
→ CheckRecipeNoComp PLC_RECIPE_NO 읽고 필요 시 레시피 전환·Layers 동기 reload·PC_RECIPE_NO 에코
|
||||||
|
→ CheckPageNoComp PLC_PAGE_NO 3회 검증 → PC_PAGE_NO 에코 + PC_PAGE_CHANGE_COMPLETE
|
||||||
|
→ SetUploadWeldingList PageNo로 Layer 선택, 용접 대상 오브젝트 구성
|
||||||
|
→ UploadWeldingList(sub) 스캐너에 용접 리스트 업로드
|
||||||
|
→ GetUploadWeldingList 업로드 결과 확인 (실패 시 중단)
|
||||||
|
→ WeldingStartReadBit PLC_WELD_TRIGGER_REQ(M70516) ON 대기
|
||||||
|
──────────────────────────── [용접 전 Scout 분기] ────────────────────────────
|
||||||
|
→ PreScoutCheck (분기) M70509(Scout Enable) 읽기
|
||||||
|
├ ON → PreScoutSetParams → PreScoutRun(SeqScoutNormal) → PreScoutDone(0.1s)
|
||||||
|
└ OFF → WaitWeldingStart 로 점프 (촬영 스킵)
|
||||||
|
→ WaitWeldingStart PC_WELD_TRIGGER_ACK=ON / PC_WELD_BUSY=ON / PC_WELD_COMPLETE=OFF
|
||||||
|
→ ExecuteWelding ★ 실제 레이저 발진 (완료비트는 보류)
|
||||||
|
──────────────────────────── [용접 후 Scout 분기] ────────────────────────────
|
||||||
|
→ PostScoutCheck (분기) M70509(Scout Enable) 읽기
|
||||||
|
├ ON → PostScoutSetParams → PostScoutRun(SeqScoutNormal) → PostScoutDone(0.1s)
|
||||||
|
└ OFF → WriteWeldComplete 로 점프 (촬영 스킵)
|
||||||
|
→ WriteWeldComplete ACK=OFF / BUSY=OFF / COMPLETE=ON (용접 완료 통보)
|
||||||
|
→ CheckCycleStop (분기) Resume 사이클 정리 → CheckPageNo 로 루프백
|
||||||
|
→ SaveResultData 스캐너 파형 저장(SaveRecord), 결과 true
|
||||||
|
→ WriteCompletionPLCBit RestoreDeviceStatus()로 PLC 출력 비트 리셋
|
||||||
|
→ Complete 생산 카운트 +1, 다음 사이클 진입
|
||||||
|
→ Final
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 핸드셰이크 단계 (PLC ↔ PC)
|
||||||
|
|
||||||
|
| 단계 | PLC 입력(읽기) | PC 출력(쓰기) |
|
||||||
|
|------|----------------|----------------|
|
||||||
|
| 페이지 변경 요청 | PLC_PAGE_CHANGE_REQ(0x08), PLC_PAGE_NO, PLC_RECIPE_NO | PC_RECIPE_NO, PC_PAGE_NO, PC_PAGE_CHANGE_COMPLETE |
|
||||||
|
| 용접 트리거 | PLC_WELD_TRIGGER_REQ(M70516) | PC_WELD_TRIGGER_ACK, PC_WELD_BUSY |
|
||||||
|
| 용접 완료 | — | PC_WELD_COMPLETE |
|
||||||
|
| Scout 분기 | PLC_SCOUT_ENABLE(M70509) | — (분기 판정용, 출력 없음) |
|
||||||
|
|
||||||
|
- **단일 게이트**: 매 사이클 `CheckPageNo`의 PAGE_CHANGE_REQ(0x08) 하나로 진입을 통제. Recipe→Page 순서로 확정.
|
||||||
|
- **에코 비트 보존**: 정지 시(`OnSeqActionStop`) PC_PAGE_NO/PC_RECIPE_NO 워드는 0으로 지우지 않음 — PLC 정합 확인용 마지막 값 유지.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 레이저 발진 구간 (ExecuteWelding)
|
||||||
|
|
||||||
|
```
|
||||||
|
1. HeadTheta 인터락(옵션 ON 시): PLC 미연결/각도 벗어남 → AlarmManager.Alarm + return null (발진 차단, fail-closed)
|
||||||
|
2. DO9 CoreLaser_Control = ON
|
||||||
|
DO13 RingLaser_Control = ON → Laser Gate ON
|
||||||
|
3. 15ms 대기 (laserEmissionGateDelayMs, 매뉴얼 ≥10ms + 여유)
|
||||||
|
4. _Scanner.ExecuteList(LIST1) → 스캐너 발진
|
||||||
|
5. _Scanner.WaitForListTaskCompleted(1000)
|
||||||
|
6. DO9/DO13 = OFF → Laser Gate OFF (발진 완료 즉시)
|
||||||
|
7. JumpAbs(0,0) + SelectCorrectionTable(1) (비전용 보정테이블 복원)
|
||||||
|
8. 완료비트 송신 보류 → PostScoutCheck 로 이동
|
||||||
|
```
|
||||||
|
|
||||||
|
- **게이트 DO 주소**: Core=9, Ring=13 (`ePrismaticDOAddress`). PLC 입력 비트 M70509("9번 신호")와는 별개 도메인.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Scout(M70509) 동작 특성
|
||||||
|
|
||||||
|
- **판정 시점이 독립적**: PreScoutCheck와 PostScoutCheck가 각각 그 시점에 M70509를 재읽기 → pre/post 사이 값이 바뀌면 한쪽만 촬영 가능.
|
||||||
|
- **완전 직렬**: pre 촬영 → 0.1s → 발진 → post 촬영 → 0.1s → 완료비트. 촬영과 발진은 겹치지 않음.
|
||||||
|
- **완료비트 지연**: M70509 ON이면 PC_WELD_COMPLETE가 (post 촬영시간 + 0.1s)만큼 늦게 전달됨 → Tact 영향 구간.
|
||||||
|
- **OFF면 기존 흐름과 동일**: 촬영 노드 자체를 건너뛰고 바로 용접/완료비트로 점프.
|
||||||
|
- **파일 태그**: `auto_{recipeNo}_{pageNo}_{pre|post}` (`ScoutSaveTag`), 페이지는 현재 `_CurrentPageNo`(0-base) 기준.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 사이클 종료/리셋 처리
|
||||||
|
|
||||||
|
- **WriteWeldComplete**: ACK→BUSY→COMPLETE 순으로 50ms 간격 송신.
|
||||||
|
- **SaveResultData → SaveScannerRecordFileForamt**: `SaveRecord("AutoRunTDC")` 후 JumpAbs(0,0)+CorrectionTable(1) 복귀.
|
||||||
|
- **WriteCompletionPLCBit → RestoreDeviceStatus**: PC_PAGE_CHANGE_COMPLETE / WELD_TRIGGER_ACK / WELD_BUSY / WELD_COMPLETE 모두 OFF.
|
||||||
|
- **Complete**: 성공 시 Total/Today 생산 카운트 +1, 다음 사이클 진입(루프백은 CheckCycleStop이 CheckPageNo로).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 정지/예외 처리 (OnStopped / OnForceError → OnSeqActionStop)
|
||||||
|
|
||||||
|
- PLC 출력 음극 비트 전부 OFF (AUTO_STATUS, TRIGGER_ACK, BUSY, COMPLETE, PAGE_CHANGE_COMPLETE).
|
||||||
|
- 에코 워드(PC_PAGE_NO/PC_RECIPE_NO)는 보존(0 초기화 안 함).
|
||||||
|
- DO9/DO13 Laser Control OFF (try/catch).
|
||||||
|
- 스캐너 StopExecution + JumpAbs(0,0) + CorrectionTable(1) 복귀.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Resume 모드 (bit15 연계)
|
||||||
|
|
||||||
|
- `ResumeMode=true`면 `CheckInitCondition`이 핸드셰이크를 스킵하고 UploadWeldingList부터 진입.
|
||||||
|
- 1사이클 완료 후 `CheckCycleStop`에서 PC_WELD_READY_ACK=OFF + ResumeMode 해제 → 정상 루프 복귀.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. 비고 — 비활성 코드
|
||||||
|
|
||||||
|
- `CheckCondition` / `CheckDeviceReady` / `CheckCondition_Interlock` / Alarm 체크 일부는 `[TEST_BYPASS]`로 주석 처리 상태(항상 통과). 현장 안정화 후 복원 검토 대상.
|
||||||
7
docs/작업일지/2026_06_23.md
Normal file
7
docs/작업일지/2026_06_23.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# 작업일지 — 2026-06-23
|
||||||
|
|
||||||
|
## 분석
|
||||||
|
- SeqAutoRunPTOP 시퀀스 전체 분석 문서 작성 (`docs/분석_SeqAutoRunPTOP_시퀀스.md`)
|
||||||
|
- 현재 코드 기준 노드 흐름 / PLC 핸드셰이크 / 레이저 발진 구간 / M70509(Scout, "9번") 분기 특성 / 정지·Resume 처리 정리
|
||||||
|
- 현장 레이저 발진은 정상 확인됨 (시퀀스 문제 아님)
|
||||||
|
- 현장 시퀀스 확인 중 Scout 이미지 촬영까지 확인 완료
|
||||||
Loading…
x
Reference in New Issue
Block a user