10 KiB
PTOP 소스 → 산출물 필드 매핑
이 파일은 소스 파일과 산출물 필드 간 1:1 매핑 인덱스. 다른 PC에서 스킬 실행 시 이 파일을 보고 어떤 소스를 읽어야 할지 판단한다.
A. PLC-PC 인터페이스 신호정의서
출력: 02.설계/IO_DB설계/PLC_PC_인터페이스_신호정의서.md
| 시트 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 통신 사양 | Device/PLC/PLCContoller.Config.cs |
PLCControllerPTOP 생성자 인자(ePLCNetType, PLCMMapFileType, isSimul) — 이 파일은 18줄이며 주소 정의는 없다 |
| 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 주소 규칙 — ⚠ 소스에 없는 값이다. M70000·D70000·D70500은 .cs 전체에서 0건이고,
근거는 분석 문서(docs/분석/2026/06/17/171312_plc_map_io_direction_and_enum_alignment.md)뿐이며
그 문서와 docs/분석/2026/06/20/141528_산출물문서_분석_및_PTOP_채움안.md(06/20 폴더다 — 06/17에는 없다)가
서로 다르게 기술한다. 산출물에 옮기기 전 소스로 재확인하고 파일:라인을
병기하라. 확인되지 않으면 미확인으로 남긴다 (rules.md §검증·표기 판정표의 토큰만 쓴다).
eBitOutputoffset →M70000 + offseteBitInputoffset →M70500 + offseteWordOutputoffset →D70000 + offseteWordInputoffset →D70500 + offset- 두 번째 블록(0x65~, 양극 P) →
M70600~(현재 미사용)
B. 모션축·IO 맵 정의서
출력: 02.설계/IO_DB설계/모션축_IO맵_정의서.md
| 시트 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 통신·제어 구성 | EquipmentSetup.cs:138 |
RegisterDevices(IDeviceRegistry registry) 내 registry.Register(...) 호출. 주석 처리된 것이 다수다(OCT·LBAD·CellTracker 등) — 활성 등록만 센다(현재 3건) |
| 모션축 정의 | docs/architecture.md §4 |
AuroraACS(X/Y), AuroraMotionBoard(Z). RTC(Scanner)는 이 문서에 0건 — 출처는 ubisam-format-map/SKILL.md §6 PTOP 채움 시 참고값 의 주요 디바이스 문장이다 |
| 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 모션 보드 (AuroraDevices/AuroraMotionBoard/Ajin/AJINDevice.cs·AJINMotor.cs— 벤더 구현이 이것 하나뿐이다).- ⚠ 런타임 벤더 선택은 모션이 아니라 IO 보드 쪽이다.
eIOBoardType(Ajin·PAIX·ACS)은AuroraDevices/AuroraIO/IODevice.cs:18정의이고:154-158에서IOUnitConfig.BoardType으로 분기한다. IO 보드 벤더를Ajin으로 단정하지 말 것 — PTOP 실제 IO는PAIX_PTOP이다. 모션 보드 벤더 주의문과 혼동하지 않는다(둘은 다른 디바이스다).
C. 기능명세서 / UI 설계
출력: 02.설계/UIUX_기능설계/기능명세서.md
| 탭 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 메뉴 구조 | EquipmentSetup.cs:256 |
RegisterViews(IViewManager manager) 내 AddSubMenu(CommonViewIds.*, UserControl). 총 26건 중 8건이 주석 처리 → 활성 18건만 센다(위 RegisterDevices 행과 같은 규칙). ⚠ MenuId·ViewType·AuthLevel 은 소스에 없는 심볼이다 — 지어내지 마라 |
| 메뉴 권한 | EquipmentSetup.cs:261,266,289,302,310,318,323,330 |
AddSubMenu 는 2인자라 권한이 없지만 MainMenu 생성자 3번째 인자가 PermissionLevel 이다. 메인메뉴 8건이 값을 가진다 — NONE ×6 / :318 Device=LEVEL3 / :323 Setting=LEVEL1. (:288 주석의 LEVEL4는 비활성, :337 StreamDevice는 2인자 오버로드이며 UseStream 조건부라 권한 인자가 없다) |
| MainView | Views/Main/UCMainAutoRun*.cs |
버튼·이벤트·바인딩 목록 |
| RecipeView | EquipmentSetup.cs 등록부 |
UCRecipe, UCRecipeChangeHistory — 공유 컴포넌트이며 PTOP Views/ 아래에 없다 |
| ManualView | EquipmentSetup.cs 등록부 |
UCManualScannerOperation, UCManualModelFinder — 공유 컴포넌트 |
| MonitoringView | EquipmentSetup.cs 등록부 |
UCIOInterfaceView 등 — 공유 컴포넌트 |
| DeviceView | EquipmentSetup.cs:318-319·:310-314 |
CommonViewIds.Device(DeviceSettingView) + Monitoring 메뉴의 PLCBitMonitoring·PLCWordMonitoring·IOInterfaceView. 탭 내용 기준은 05-form-schemas.md 8탭 표의 DeviceView 행 (StreamDevice는 :337 별도 메인메뉴이며 SettingView 탭 소속) |
| SettingView | EquipmentSetup.cs 등록부 |
CommonViewIds.Setting·LogSetting·AutoBackupView 등록 항목 |
| VisionView | EquipmentSetup.cs:342-343 |
(해당없음) — AuroraVision 미사용. // Vision (미사용) + //VisionFactory.RegisterViews(manager); 주석 처리. CommonViewIds.Scanner·PixelResolution(:303·:306)은 비전 탭이 아니라 Calibration 메뉴(:302) 소속이다 |
| OverView | docs/architecture.md |
CommonViewIds 에 대응 메뉴는 없다 — 이 탭은 등록부가 아니라 SW 개요(플랫폼·OS·.NET·모션·레이저·PLC·비전)로 채운다 |
| Sequence 흐름 | Sequences/SeqAutoRunPTOP.cs |
Builder() 노드 목록 순서대로 |
PTOP의
Views/하위는Main/과Model/둘뿐이다. Recipe·Manual·Monitoring 화면은 공유 컴포넌트라EquipmentSetup.cs의AddSubMenu(...)등록부에서 타입을 확인해야 한다.
8탭 고정 (xlsx ref 호환): OverView / MainView / RecipeView / ManualView / DeviceView / SettingView / VisionView / Sequence 흐름
⚠ 탭 목록·탭별 내용의 상위 진실원은
ubisam-deliverables/references/05-form-schemas.md§C. 기능명세서 / UI 설계의 8탭 표다. 위 표는 "그 탭을 채우려면 어느 소스를 읽는가"만 말한다. 두 문서가 어긋나면05-form-schemas.md를 기준으로 삼고 같은 편집에서 이 표를 맞춘다 (docs/harness-ptop.md§소비처 확인 의무).
위 표는 이 8탭을 전부 담고 있다. 추가로 있는
메뉴 구조·MonitoringView행은 탭이 아니라 탭을 채우기 위해 읽을 진실원이다. 탭 수를 셀 때 포함하지 않는다.
D. 제어 시퀀스·인터락 정의서
출력: 02.설계/시퀀스_인터록/제어시퀀스_인터락_정의서.md
| 섹션 | 소스 파일 | 읽어야 할 심볼 |
|---|---|---|
| 메인 시퀀스 노드 흐름 | SeqAutoRunPTOP.cs |
AddAction(17)·AddDecision(4)·AddSubsequence(3)와 Flows(...)(6). ⚠ AddNode·AddTransition 은 소스에 없는 심볼이다(Aurora API가 아니다) |
| 단계별 동작 요약 | SeqAutoRunPTOP.cs |
각 노드 메서드 구현 첫 줄 주석·로그 |
| 인터락 정의 | Settings/LaserInterlockSetting.cs |
HeadThetaInterlockEnabled, HeadThetaTolerance |
| 인터락 정의 (추가) | SeqAutoRunPTOP.cs |
LaserInterlock 처리 |
| 중알람 감시 | Sequences/Monitoring/SeqAlarmMonitor.cs |
PLC_HEAVY_ALARM_STATUS 처리 (정의는 PLCController.Address.cs) — SeqAutoRunPTOP.cs에는 없다 |
| 정지/에러 처리 | SeqAutoRunPTOP.cs |
OnStopped, OnForceError, ResumeMode |
Resume(bit15) 흐름: PLC_WELD_READY_REQ(0x0F) 수신 → 팝업 + Auto→Manual 전환 → PC_WELD_READY_ACK(0x0F) ON → 1사이클 후 OFF.
출처 주의 — 네 곳으로 나뉜다. 시퀀스 파일만 뒤지면 못 찾는다.
UCMainAutoRunViewModel.cs:209=수신 ·:270=ACK ON ·:271-277=1초 펄스 OFF(DispatcherTimer) ·SeqAutoRunPTOP.cs:875=사이클 종료 OFF. OFF 경로가 둘이다 — 1초 타이머와 사이클 종료.
E. TactTime 산정서
출력: 02.설계/시퀀스_인터록/TactTime_산정서.md
아래 상수는 반드시 소스에서 재확인하고
파일:라인을 병기한다. 표에 적힌 값은 마지막 확인 시점의 것이고, 심볼이 사라지거나 값이 바뀌었을 수 있다. 찾지 못하면 지어내지 말고미확인으로 남긴다.
| 단위동작 | 소스 파일 | 상수/값 | 최종 확인 |
|---|---|---|---|
| Gate ON delay | SeqAutoRunPTOP.cs |
laserEmissionGateDelayMs |
실재 확인 (2026-08-03) |
| Jump 복귀 | SeqAutoRunPTOP.cs |
Thread.Sleep(500) |
실재 확인 (2026-08-03) |
| Pre/Post Scout | SeqAutoRunPTOP.cs |
SCOUT_PROCEED_DELAY_MS |
실재 확인 (2026-08-03) |
| 실제 발진 | SeqAutoRunPTOP.cs |
로그 "TactTime: [Nms]" — 런타임 값. 실측 없이 기재 금지 |
— |
| Page 검증 지연 | SeqAutoRunPTOP.cs |
해당 상수를 소스에서 찾아 기입 | 미확인 |
| 준비 응답 지연 | SeqAutoRunPTOP.cs |
해당 상수를 소스에서 찾아 기입 | 미확인 |
| 완료비트 지연 | SeqAutoRunPTOP.cs |
해당 상수를 소스에서 찾아 기입 | 미확인 |
F. _task.md 진행률 기준 (현황 기준)
이 표는 실행 시점에 재산출한다. 아래 값은 작성 당시 스냅샷이며, 그대로 복사하면 안 된다. 각 단계 폴더의 실제 산출물 존재 여부를 세어 진행률을 다시 계산하라.
| 단계 | 상태 | 진행률(스냅샷) | 근거 |
|---|---|---|---|
| 1.분석/협의 | 미산출 | 미산출 — 실행 시 계산 | 슬롯 폴더의 실제 산출물 수로 산정 |
| 2.설계 | 미산출 | 미산출 — 실행 시 계산 | 〃 |
| 3.제작 | 미산출 | 미산출 — 실행 시 계산 | 〃 |
| 4.셋업 | 미산출 | 미산출 — 실행 시 계산 | 〃 |
| 5.양산 | 미산출 | 미산출 — 실행 시 계산 | 〃 |
| 6.CS | 미산출 | 미산출 — 실행 시 계산 | 〃 |
이 값은 스킬 실행 시점 기준. 재실행 시 소스·폴더 현황 재확인 후 갱신.