106 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PTOP 소스 → 산출물 필드 매핑
> 이 파일은 소스 파일과 산출물 필드 간 1:1 매핑 인덱스.
> 다른 PC에서 스킬 실행 시 이 파일을 보고 어떤 소스를 읽어야 할지 판단한다.
---
## A. PLC-PC 인터페이스 신호정의서
출력: `02.설계/IO_DB설계/PLC_PC_인터페이스_신호정의서.md`
| 시트 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 통신 사양 | `Device/PLC/PLCContoller.Config.cs` | `ePLCNetType`, `PLCMMapFileType`, 베이스 주소 설정 |
| PC→PLC (Write) | `Device/PLC/PLCController.Address.cs` | `eBitOutput`, `eWordOutput` enum 전수 |
| PLC→PC (Read) | `Device/PLC/PLCController.Address.cs` | `eBitInput`, `eWordInput` enum 전수 |
| 핸드셰이크 시퀀스 | `Sequences/SeqAutoRunPTOP.cs` | `CheckPageNo`, `CheckRecipeNoComp`, `CheckPageNoComp`, `WaitWeldingStart`, `WriteWeldComplete` |
**PLC 주소 규칙**:
- `eBitOutput` offset → `M70000 + offset`
- `eBitInput` offset → `M70500 + offset`
- `eWordOutput` offset → `D70000 + offset`
- `eWordInput` offset → `D70500 + offset`
- 두 번째 블록(0x65~, 양극 P) → `M70600~` (현재 미사용)
---
## B. 모션축·IO 맵 정의서
출력: `02.설계/IO_DB설계/모션축_IO맵_정의서.md`
| 시트 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 통신·제어 구성 | `EquipmentSetup.cs` | `RegisterDevices()` 내 모든 `Register*Device` 호출 |
| 모션축 정의 | `docs/architecture.md §4` | AuroraACS(X/Y), AuroraMotionBoard(Z), RTC(Scanner) |
| I/O 맵 DI | `Device/IO/PAIX_PTOP.cs` | `ePrismaticDIAddress` enum — 채널 번호·신호명 |
| I/O 맵 DO | `Device/IO/PAIX_PTOP.cs` | `ePrismaticDOAddress` enum — 채널 번호·신호명 |
**모션축 주의사항**:
- X/Y 행정·속도·Home 방식 = 소스에 없음 → 전부 `(제안)` 표기.
- `AuroraACS` = EtherCAT SPiiPlus. `AuroraMotionBoard` = Ajin 보드.
---
## C. 기능명세서 / UI 설계
출력: `02.설계/UIUX_기능설계/기능명세서.md`
| 탭 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 메뉴 구조 | `EquipmentSetup.cs` | `RegisterViews()` 전수 (MenuId, ViewType, AuthLevel) |
| MainView | `Views/Main/UCMainAutoRun*.cs` | 버튼·이벤트·바인딩 목록 |
| RecipeView | `Views/Recipe/UCRecipe*.cs` | ActivateRecipe, RecipeChangeHistory, UCModel |
| ManualView | `Views/Manual/UCManualScannerOperation*.cs` | ScannerOperation, ModelFinder |
| MonitoringView | `Views/Monitoring/UCPLC*.cs`, `UCIOInterfaceView.cs` | PLCBit, PLCWord, IOInterface |
| Sequence 흐름 | `Sequences/SeqAutoRunPTOP.cs` | Builder() 노드 목록 순서대로 |
**8탭 고정** (xlsx ref 호환): OverView / MainView / RecipeView / ManualView / DeviceView / SettingView / VisionView / Sequence 흐름
---
## D. 제어 시퀀스·인터락 정의서
출력: `02.설계/시퀀스_인터록/제어시퀀스_인터락_정의서.md`
| 섹션 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 메인 시퀀스 노드 흐름 | `SeqAutoRunPTOP.cs` | `Builder()` 내 모든 AddNode·AddTransition |
| 단계별 동작 요약 | `SeqAutoRunPTOP.cs` | 각 노드 메서드 구현 첫 줄 주석·로그 |
| 인터락 정의 | `Settings/LaserInterlockSetting.cs` | `HeadThetaInterlockEnabled`, `ThetaTolerance` |
| 인터락 정의 (추가) | `SeqAutoRunPTOP.cs` | `LaserInterlock`, `PLC_HEAVY_ALARM_STATUS` 처리 |
| 정지/에러 처리 | `SeqAutoRunPTOP.cs` | `OnStopped`, `OnForceError`, `ResumeMode` |
**Resume(bit15) 흐름**: `PLC_WELD_READY_REQ(0x0F)` 수신 → 팝업 + Auto→Manual 전환 → `PC_WELD_READY_ACK(0x0F)` ON → 1사이클 후 OFF.
---
## E. TactTime 산정서
출력: `02.설계/시퀀스_인터록/TactTime_산정서.md`
| 단위동작 | 소스 파일 | 상수/값 |
|---|---|---|
| Page 3회 검증 | `SeqAutoRunPTOP.cs` | `PAGE_VERIFY_DELAY_MS` × 3 (≈200ms×3 = 600ms) |
| 준비 응답 | `SeqAutoRunPTOP.cs` | `WELD_START_DELAY_MS` (200ms) + 소신호(5ms) |
| Gate ON delay | `SeqAutoRunPTOP.cs` | `laserEmissionGateDelayMs` = 15ms |
| 실제 발진 | `SeqAutoRunPTOP.cs` | 로그 "TactTime: [Nms]" — 예시 285ms (라인 수 의존) |
| Jump 복귀 | `SeqAutoRunPTOP.cs` | `Thread.Sleep(500)` |
| 완료비트 | `SeqAutoRunPTOP.cs` | 50ms + 5ms |
| Pre/Post Scout | `SeqAutoRunPTOP.cs` | `SCOUT_PROCEED_DELAY_MS` = 100ms/회 (M70509 ON 시) |
---
## F. _task.md 진행률 기준 (현황 기준)
| 단계 | 상태 | 진행률 | 근거 |
|---|---|---|---|
| 1.분석/협의 | 해야 할 일 | 0% | 사양서 미입수 |
| 2.설계 | 업무 진행중 | 85% | xlsx 4종 완료, 모션 파라미터 미확정 |
| 3.제작 | 해야 할 일 | 0% | CheckList 미작성 |
| 4.셋업 | 해야 할 일 | 0% | 현장 셋업 미완료 |
| 5.양산 | 업무 진행중 | 40% | 운영매뉴얼 3종 완료, 나머지 미완료 |
| 6.CS | 해야 할 일 | 0% | 미착수 |
> 이 값은 스킬 실행 시점 기준. 재실행 시 소스·폴더 현황 재확인 후 갱신.