- docs/작업일지: 06-17, 06-18 작업일지 추가 (조명 컨트롤러 연결, 현장 PC 원격 접속, 현장 소스 반영) - docs/현장update파일: 현장 반영용 변경 파일(SequenceSetting.cs, UCScannerObjectTeachingControlBoxViewModel.cs) 및 README 정리 - docs/분석: 260617 분석 문서(Laser Ready DI 변경, Axis Position Interlock, PLC DeviceMap, EROOM Light RS232 등) 추가 - docs/architecture.md, CLAUDE.md, harness-ptop.md 갱신 - PLC 인터페이스 엑셀 및 기존파일비교 자료 추가 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
231 lines
7.8 KiB
Markdown
231 lines
7.8 KiB
Markdown
# ILSOS 프로젝트 아키텍처
|
||
|
||
> CLAUDE.md의 "프로젝트 문서" 섹션에서 import하던 개별 문서들을 통합한 아키텍처 문서입니다.
|
||
> 세부 내용은 각 원본 문서를 참고하세요.
|
||
|
||
## 목차
|
||
|
||
1. [프로젝트 개요](#1-프로젝트-개요)
|
||
2. [솔루션 구조](#2-솔루션-구조)
|
||
3. [ILSOS_PrismaticPTOP 핵심 구조](#3-ilsos_prismaticptop-핵심-구조)
|
||
4. [AuroraDevices 모듈](#4-auroradevices-모듈)
|
||
5. [빌드 출력 경로](#5-빌드-출력-경로)
|
||
6. [PTOP 분석 하네스](#6-ptop-분석-하네스)
|
||
|
||
---
|
||
|
||
## 1. 프로젝트 개요
|
||
|
||
> 원본: [`project-overview.md`](./project-overview.md)
|
||
|
||
### ILSOS - OC5 PilotLine RectangleTypeWelder
|
||
|
||
**목표:** 각형 배터리 용접 자동화 시스템
|
||
|
||
**플랫폼 및 기술:**
|
||
- OS: Windows 10 / Windows 11
|
||
- 프레임워크: .NET Framework 4.8.1
|
||
- IDE: Visual Studio 2022
|
||
- UI 프레임워크: WPF (Aurora 프레임워크 기반)
|
||
- 솔루션 파일: `ILSOS_All.sln`
|
||
|
||
**빌드 구성:**
|
||
- Debug | x64
|
||
- Release | x64
|
||
- Simulation | x64
|
||
- UserDefineUnit | x64
|
||
|
||
**주요 머신 모듈:**
|
||
- **ILSOS_PrismaticPTOP**: 현재 활성 모듈 (주요 개발 대상)
|
||
- **ILSOS_PrismaticScanner**: 참고 용도의 레거시 소스
|
||
- ILSOS_PrismaticGun: 미사용
|
||
- ILSOS_PrismaticCleanLaser: 미사용
|
||
|
||
**주의사항:**
|
||
- WeldingComponents와 Aurora 관련 코드 수정 시 반드시 사전 승인 필요
|
||
- 소스의 `config/` 디렉토리는 분석 시 참고할 것
|
||
- 모든 파일 수정 시 `docs/CODING_RULES.md` 확인 필수
|
||
- 한글 포함 파일 작성/수정 시 UTF-8 인코딩 준수
|
||
|
||
---
|
||
|
||
## 2. 솔루션 구조
|
||
|
||
> 원본: [`solution-structure.md`](./solution-structure.md)
|
||
|
||
### ILSOS_All.sln 구성
|
||
|
||
```
|
||
ILSOS_All.sln
|
||
├── Machines/
|
||
│ ├── ILSOS_PrismaticPTOP/ ← 현재 활성 모듈 (3계층 아키텍처)
|
||
│ ├── ILSOS_PrismaticScanner/ ← 참고 대상 (레거시)
|
||
│ ├── ILSOS_PrismaticGun/ ← 미사용
|
||
│ └── ILSOS_PrismaticCleanLaser/ ← 미사용
|
||
├── AuroraDevices/ ← 하드웨어 디바이스 드라이버 (22개 프로젝트)
|
||
├── AuroraComponents/ ← WPF UI 공통 컴포넌트
|
||
├── AuroraVision/ ← 비전 시스템 (MIL 기반)
|
||
├── WeldingComponents/ ← 용접 공통 기능
|
||
│ ├── WeldingCommon
|
||
│ └── LASAGUI
|
||
└── External/ ← Aurora 프레임워크 바이너리
|
||
```
|
||
|
||
### 주요 특징
|
||
|
||
- **모듈화:** 각 머신 모듈은 독립적인 디바이스 제어 및 시퀀스 구현
|
||
- **공유 레이어:** AuroraDevices, AuroraComponents 등으로 코드 재사용
|
||
- **표준 규칙:** WeldingComponents는 수정 불가 (승인 필수)
|
||
- **설정 참고:** 각 머신의 `config/` 디렉토리에서 설정 확인 가능
|
||
|
||
---
|
||
|
||
## 3. ILSOS_PrismaticPTOP 핵심 구조
|
||
|
||
> 원본: [`ptop-architecture.md`](./ptop-architecture.md)
|
||
|
||
### 폴더 구조 및 주요 컴포넌트
|
||
|
||
```
|
||
ILSOS_PrismaticPTOP/
|
||
├── 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
|
||
│ └── StageB/ ← Load, Weld, Unload, HeightMeas
|
||
├── 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 |
|
||
|
||
### 아키텍처 패턴 (3계층)
|
||
|
||
```
|
||
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 타입
|
||
|
||
---
|
||
|
||
## 4. AuroraDevices 모듈
|
||
|
||
> 원본: [`aurora-devices.md`](./aurora-devices.md)
|
||
|
||
AuroraDevices는 하드웨어 디바이스 제어를 담당하는 22개 프로젝트 모음입니다.
|
||
|
||
| 프로젝트 | 역할 | 비고 |
|
||
|---------|------|------|
|
||
| AuroraDeviceCommon | 디바이스 공통 기본 클래스 | 모든 디바이스 상속 |
|
||
| AuroraACS | ACS SPiiPlus 모션 컨트롤러 | X/Y축 모션 제어 |
|
||
| AuroraMotionBoard | Ajin 모션 보드 | Z축 모션 제어 |
|
||
| AuroraLaser | 레이저 제어 (Gun 타입) | 고정 레이저 |
|
||
| AuroraLaserScanner | 레이저 스캐너 제어 | 동적 스캐닝 |
|
||
| AuroraPLC | Mitsubishi Melsec PLC 통신 | 외부 신호 제어 |
|
||
| AuroraIO | 디지털 I/O | 입출력 신호 |
|
||
| AuroraHeightSensor | Keyence 높이 센서 | 높이 측정 |
|
||
| AuroraCellTracker | 팰릿/셀 추적 시스템 | 셀 인식 및 위치 추적 |
|
||
| AuroraChiller | 냉각 장치 | 온도 제어 |
|
||
| AuroraOCT | Trumpf OCT 스캐너 | 옵티컬 측정 |
|
||
|
||
**설계 원칙:**
|
||
- 각 디바이스는 독립적인 제어 로직 구현
|
||
- 통합 제어는 머신 모듈의 EquipmentSetup에서 담당
|
||
- 의존성 주입(DI) 패턴으로 느슨한 결합 유지
|
||
|
||
---
|
||
|
||
## 5. 빌드 출력 경로
|
||
|
||
> 원본: [`build-output.md`](./build-output.md)
|
||
|
||
### 머신별 빌드 디렉토리
|
||
|
||
| 머신 모듈 | 출력 경로 | 상태 |
|
||
|---------|---------|------|
|
||
| ILSOS_PrismaticPTOP | `_out_prismatic_ptop/` | 활성 |
|
||
| ILSOS_PrismaticScanner | `_out_prismatic_scanner/` | 참고 |
|
||
| ILSOS_PrismaticGun | `_out_prismatic_gun/` | 미사용 |
|
||
| ILSOS_PrismaticCleanLaser | `_out_prismatic_cleanlaser/` | 미사용 |
|
||
|
||
### 빌드 구성별 출력
|
||
|
||
각 빌드 구성(Debug, Release, Simulation, UserDefineUnit)은 플랫폼(x64)별로 독립적인 출력 디렉토리 생성.
|
||
|
||
예: `_out_prismatic_ptop/Debug/x64/`, `_out_prismatic_ptop/Release/x64/`
|
||
|
||
### 주의사항
|
||
|
||
- 빌드 출력 디렉토리는 `.gitignore`에 포함
|
||
- 빌드 전 이전 출력물이 있으면 자동 정리
|
||
- 각 머신 모듈은 독립적으로 빌드 가능
|
||
|
||
---
|
||
|
||
## 6. PTOP 분석 하네스
|
||
|
||
> 원본: [`harness-ptop.md`](./harness-ptop.md)
|
||
|
||
### 목표
|
||
|
||
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.md`
|
||
- `.ubisam_agent/agents/ptop-developer.md`
|
||
- `.ubisam_agent/agents/build-devops-engineer.md`
|
||
|
||
**Skills:**
|
||
- `.ubisam_agent/skills/analyze-ptop-architecture/SKILL.md`
|
||
- `.ubisam_agent/skills/analyze-ptop-implementation/SKILL.md`
|
||
- `.ubisam_agent/skills/optimize-ptop-build/SKILL.md`
|
||
- `.ubisam_agent/skills/orchestrate-ptop-harness/SKILL.md`
|
||
|
||
**Workspace:**
|
||
- `_workspace/0X_*.md` (분석 결과 저장)
|