NohDoyeon241104 354cc29f83 fix: Recipe 탭 DI 읽기 실패 해결 (ERROR CODE:3102)
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 예외 처리 추가.
2026-06-16 15:00:25 +09:00

164 lines
6.0 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.

# 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이 핵심 활성 모듈, 종합 분석 필요 |