PTOP 변경 과정에서 Recipe 탭 진입 시 IO Device DI 읽기 실패로 시스템 크래시 발생. 근본 원인: - DI 24가 PTOP 하드웨어에 미정의됨 - UCScannerObjectTeachingControlBoxViewModel에서 DI 9, 24를 함께 읽으려고 시도 - 범위 초과 오류(ERROR CODE:3102) 발생 변경사항: - DI 24 읽기 제거 (Scanner 레거시 코드, PTOP에 불필요) - DI 9 읽기만 수행하도록 변경 - try-catch 예외 처리 추가로 안정성 개선 - 오류 발생 시 에러 로깅 Fixes: Recipe 탭 시스템 셧다운 또는 더 간단하게: fix: Recipe 탭 DI 읽기 오류 해결 DI 24가 PTOP에 미정의되어 OnMonitoring에서 범위 초과 에러 발생. DI 9만 읽도록 수정하고 try-catch 예외 처리 추가.
164 lines
6.0 KiB
Markdown
164 lines
6.0 KiB
Markdown
# ILSOS 프로젝트 — Claude 초기 컨텍스트
|
||
|
||
## 프로젝트 개요
|
||
|
||
**OC5 PilotLine RectangleTypeWelder** — 각형 배터리 용접 자동화 시스템
|
||
|
||
- **플랫폼**: Windows 10, .NET Framework 4.8.1, Visual Studio 2022
|
||
- **UI 프레임워크**: WPF (Aurora 프레임워크 기반)
|
||
- **솔루션 파일**: `ILSOS_All.sln`
|
||
- **빌드 구성**: Debug|x64 / Release|x64 / Simulation|x64 / UserDefineUnit|x64
|
||
|
||
---
|
||
|
||
## 머신 모듈 (Machines/)
|
||
|
||
### ILSOS_PrismaticGun
|
||
- **레이저는 고정**, 스테이지(Stage A / Stage B)가 이동하면서 용접
|
||
- 레이저 하나를 **Stage A ↔ Stage B 간 스위칭**하여 용접 진행
|
||
- 모션 제어: **ACS (X/Y축)** + **Ajin (Z축)** 혼합 구성
|
||
- PLC: Mitsubishi PLC 통신
|
||
- 시퀀스 구조: `Sequences/SubSequence/StageA/` + `Sequences/SubSequence/StageB/` 이원화
|
||
|
||
### ILSOS_PrismaticScanner
|
||
- **레이저 스캐너**를 통해 용접 진행
|
||
- 레이저 인터페이스 모듈이 PrismaticGun과 다름 (`AuroraLaserScanner`)
|
||
- 단일 스테이지 구조
|
||
|
||
### ILSOS_PrismaticCleanLaser
|
||
- **CleanLaser** 인터페이스 모듈 사용 (PrismaticScanner과도 다름)
|
||
- 파일 구조는 PrismaticScanner와 유사하나 레이저 디바이스 인터페이스가 상이함
|
||
- 단일 스테이지 구조
|
||
|
||
---
|
||
|
||
## 전체 솔루션 구조
|
||
|
||
```
|
||
ILSOS_All.sln
|
||
├── Machines/
|
||
│ ├── ILSOS_PrismaticGun/ ← 레이저 고정, 스테이지 이동 용접 (Stage A/B)
|
||
│ ├── ILSOS_PrismaticScanner/ ← 스캐너 레이저 용접
|
||
│ └── ILSOS_PrismaticCleanLaser/ ← 클린 레이저 용접
|
||
├── AuroraDevices/ ← 하드웨어 디바이스 드라이버 (22개 프로젝트)
|
||
├── AuroraComponents/ ← WPF UI 공통 컴포넌트
|
||
├── AuroraVision/ ← 비전 시스템 (MIL 기반)
|
||
├── WeldingComponents/ ← 용접 공통 기능 (WeldingCommon, LASAGUI)
|
||
└── External/ ← Aurora 프레임워크 바이너리
|
||
```
|
||
|
||
---
|
||
|
||
## 주요 AuroraDevices 목록
|
||
|
||
| 프로젝트 | 역할 |
|
||
|---------|------|
|
||
| AuroraACS | ACS SPiiPlus 모션 컨트롤러 |
|
||
| AuroraLaser | 레이저 제어 (Gun 타입) |
|
||
| AuroraLaserScanner | 레이저 스캐너 제어 |
|
||
| AuroraPLC | PLC 통신 (Mitsubishi Melsec) |
|
||
| AuroraIO | 디지털 I/O |
|
||
| AuroraHeightSensor | 높이 센서 (Keyence) |
|
||
| AuroraCellTracker | 팰릿/셀 추적 시스템 |
|
||
| AuroraChiller | 냉각 장치 제어 |
|
||
| AuroraOCT | OCT 스캐너 (Trumpf) |
|
||
| AuroraMotionBoard | 모션 보드 (Ajin) |
|
||
| AuroraDeviceCommon | 디바이스 공통 기본 클래스 |
|
||
|
||
---
|
||
|
||
## ILSOS_PrismaticGun 핵심 구조
|
||
|
||
### 폴더 구조
|
||
```
|
||
ILSOS_PrismaticGun/
|
||
├── EquipDef.cs ← ID 상수 정의 (Device/Motor/Sequence/Recipe)
|
||
├── EquipmentSetup.cs ← 통합 제어 (초기화, 이벤트 구독, 시퀀스 시작)
|
||
├── Alarm/ ← 알람 코드 및 매니저
|
||
├── Device/
|
||
│ ├── ACS/ ← ACS 모션 제어 (X/Y축)
|
||
│ └── PLC/ ← PLC 통신 로직
|
||
├── Models/ ← 장비 특화 모델
|
||
├── Process/ ← ProcessManager, CellInfo, WeldingData
|
||
├── Recipes/ ← MainRecipe, RMSHandler
|
||
├── Sequences/
|
||
│ ├── Monitoring/ ← 알람/상태 모니터링 시퀀스
|
||
│ ├── SeqAutoRunPrismaticGunStageA/B.cs
|
||
│ └── SubSequence/
|
||
│ ├── StageA/ ← Load, Weld, Unload, HeightMeas (Stage A)
|
||
│ └── StageB/ ← Load, Weld, Unload, HeightMeas (Stage B)
|
||
├── settings/ ← 세팅 정의 클래스
|
||
├── Tools/ ← 공통 유틸리티
|
||
└── Views/ ← WPF View/ViewModel
|
||
```
|
||
|
||
### 주요 ID (EquipDef.cs)
|
||
- **DeviceIds**: ACS, MassFlowMeterStageA/B, HeightSensor, AJIN
|
||
- **MotorIds**: ALineX/Y/Z, BLineX/Y/Z
|
||
- **RecipeIds**: StageAMainRecipe, StageBMainRecipe
|
||
- **SequenceIds**: SeqLoad/Weld/Unload/HeightMeas × StageA/B
|
||
|
||
---
|
||
|
||
## 아키텍처 패턴
|
||
|
||
```
|
||
WPF UI Layer (Views/ + ViewModels)
|
||
↓
|
||
Machine Logic Layer (EquipmentSetup + Sequences + Process)
|
||
↓
|
||
Device Abstraction (AuroraDevices — 디바이스별 독립 모듈)
|
||
↓
|
||
Hardware Layer (ACS.SPiiPlusNET, Melsec, Serial/USB)
|
||
```
|
||
|
||
- **이벤트 기반**: `System.Reactive` (Rx.NET)
|
||
- **글로벌 환경**: `AuroraEnv` (의존성 주입 패턴)
|
||
- **메시지 큐**: String / Double / Int / JSON / LBAD 타입
|
||
|
||
---
|
||
|
||
## 빌드 출력 경로
|
||
|
||
| 머신 | 출력 경로 |
|
||
|------|---------|
|
||
| ILSOS_PrismaticGun | `_out_prismatic_gun/` |
|
||
| ILSOS_PrismaticScanner | `_out_prismatic_scanner/` |
|
||
| ILSOS_PrismaticCleanLaser | `_out_prismatic_cleanlaser/` |
|
||
|
||
---
|
||
|
||
## 코딩 규칙
|
||
|
||
파일 수정 시 **반드시 `docs/CODING_RULES.md`를 먼저 확인**할 것.
|
||
특히 한글이 포함된 파일 생성/수정 시 인코딩 규칙을 따라야 함.
|
||
|
||
---
|
||
|
||
## 하네스: ILSOS_PrismaticRD_PTOP 분석 팀
|
||
|
||
**목표:** ILSOS_PrismaticRD_PTOP(PtoP)의 3계층 아키텍처, 구현 상세, 빌드 최적화를 종합 분석하고 개선안 제시
|
||
|
||
**팀 구성:**
|
||
- PTOP Lead (아키텍처 리더)
|
||
- PTOP Developer (구현 전문가)
|
||
- Build/DevOps Engineer (빌드 최적화)
|
||
|
||
**트리거:** 다음 요청 시 `/orchestrate-ptop-harness` 스킬 사용
|
||
- "PTOP 프로젝트 전체 분석"
|
||
- "PTOP 아키텍처와 구현 분석"
|
||
- "PTOP 상태 점검"
|
||
- "PTOP 빌드 최적화"
|
||
- "PTOP 팀 조율"
|
||
|
||
**구성 요소:**
|
||
- Agents: `.ubisam_agent/agents/ptop-{lead|developer}.md`, `.ubisam_agent/agents/build-devops-engineer.md`
|
||
- Skills: `.ubisam_agent/skills/analyze-ptop-{architecture|implementation}/SKILL.md`, `.ubisam_agent/skills/optimize-ptop-build/SKILL.md`, `.ubisam_agent/skills/orchestrate-ptop-harness/SKILL.md`
|
||
- Workspace: `_workspace/0X_*.md` (분석 결과)
|
||
|
||
**변경 이력:**
|
||
|
||
| 날짜 | 변경 내용 | 대상 | 사유 |
|
||
|------|----------|------|------|
|
||
| 2026-06-16 | 초기 구성: PTOP 분석 팀 구축 | agents/, skills/ | ILSOS_PrismaticRD_PTOP이 핵심 활성 모듈, 종합 분석 필요 |
|