LGES-OC5-PtoP-Welder/docs/architecture.md
NohDoyeon241104 15e5f5ba27 docs: 매뉴얼 화면 도식 분석·가접 용어 정리·SW Version 진척 반영
- 산출물 23. SW 점검결과 xlsx: SW Version 작업이력 추가(핸드셰이크/bit15 Resume/RecipeNo 등),
  IO List bit15 신규(M70515 PLC_WELD_READY_REQ / M70015 PC_WELD_READY_ACK)·rename 반영
- architecture.md §8 용어 정리(가접 용접 = Tack Welding) 추가
- docs/분석 2026/06/22: AuroraUIComponent 재사용 UC·메인 View 도식 분석
- 기타 산출물 문서(DR 회의록·SOP·ILSOSConfig 등) 및 작업일지 포함
- SeqAutoRunPTOP.cs: 기존 로컬 변경 포함

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 12:04:38 +09:00

205 lines
8.2 KiB
Markdown

# ILSOS 프로젝트 아키텍처
> CLAUDE.md의 "프로젝트 문서" 섹션에서 import하던 개별 문서들을 통합한 아키텍처 문서입니다.
> 세부 내용은 각 원본 문서를 참고하세요.
## 목차
1. [프로젝트 개요](#1-프로젝트-개요)
2. [솔루션 구조](#2-솔루션-구조)
3. [ILSOS_PrismaticRD_PTOP 핵심 구조](#3-ilsos_prismaticrd_ptop-핵심-구조)
4. [AuroraDevices 모듈](#4-auroradevices-모듈)
5. [빌드 출력 경로](#5-빌드-출력-경로)
6. [PTOP 분석 하네스](#6-ptop-분석-하네스)
7. [Git 커밋 규칙](#7-git-커밋-규칙)
---
## 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_PrismaticRD_PTOP**: 현재 유일한 활성 머신 모듈 (주요 개발 대상)
- 과거 Scanner/Gun/CleanLaser 모듈은 제거됨 (솔루션에 csproj 없음)
**주의사항:**
- WeldingComponents·External/Aurora 관련 코드 수정 시 반드시 사전 승인 필요
- 모든 파일 수정 시 `docs/CODING_RULES.md` 확인 필수
- 한글 포함 파일 작성/수정 시 UTF-8 인코딩 준수
---
## 2. 솔루션 구조
> 원본: [`solution-structure.md`](./solution-structure.md)
### ILSOS_All.sln 구성
```
ILSOS_All.sln
├── Machines/
│ └── ILSOS_PrismaticRD_PTOP/ ← 현재 유일한 활성 머신 모듈 (3계층 아키텍처)
├── AuroraDevices/ ← 하드웨어 디바이스 드라이버 (22개 프로젝트)
├── AuroraComponents/ ← WPF UI 공통 컴포넌트
├── AuroraVision/ ← 비전 시스템 (MIL 기반)
├── WeldingComponents/ ← 용접 공통 기능
│ ├── WeldingCommon
│ └── LASAGUI
└── External/ ← Aurora 프레임워크 바이너리
```
### 주요 특징
- **모듈화:** 머신 모듈은 독립적인 디바이스 제어 및 시퀀스 구현
- **공유 레이어:** AuroraDevices, AuroraComponents 등으로 코드 재사용
- **표준 규칙:** WeldingComponents·External/Aurora는 수정 시 승인 필수
---
## 3. ILSOS_PrismaticRD_PTOP 핵심 구조
> 원본: [`ptop-architecture.md`](./ptop-architecture.md)
### 폴더 구조 및 주요 컴포넌트
```
ILSOS_PrismaticRD_PTOP/
├── EquipDef.cs ← ID 상수 (DeviceIds / SequenceIds / StreamMessageNames)
├── EquipmentSetup.cs ← 디바이스·시퀀스 등록, 이벤트 구독
├── Alarm/ ← AlarmCode_PTOP, AlarmManager_PTOP
├── Device/{IO,PLC}/ ← PAIX_PTOP(IO), PLCControllerPTOP(PLC)
├── Models/ ← EquipmentSpecificModel_PTOP
├── Recipes/ ← RMSHandlerForPTOP
├── Sequences/ ← SeqAutoRunPTOP(메인) 외 + Manual/, Monitoring/
├── Settings/ ← SettingUploadDataListForPTOP
└── Views/{Main,Model}/ ← WPF View/ViewModel
```
### 주요 ID 정의 (EquipDef.cs)
| 클래스 | 멤버 (발췌) |
|---------|------|
| **DeviceIds** : CommonDeviceIds | `MassFlowMeter` (그 외 base 상속) |
| **SequenceIds** : CommonSequenceIds | `SeqAutoRunPTOP`, `SeqAutoRunTDC`, `SeqAutoRunComponentWeld`, `SeqAlarmMonitor`, `SeqStatusMonitor`, `SeqTestRun`, `SeqStreamTest`, `SeqEventQTest` |
| **StreamMessageNames** | `MessageNameString/Double/Int/JSON/LBAD` |
> `MotorIds`/`RecipeIds` 클래스는 없음 (base `Common*`·레시피 매니저에서 관리). 상세 → [`ptop-architecture.md`](./ptop-architecture.md)
### 아키텍처 패턴 (3계층)
```
WPF UI Layer (Views/ + ViewModels)
↓
Machine Logic Layer (EquipmentSetup + Sequences)
↓
Device Abstraction (AuroraDevices — 디바이스별 독립 모듈)
↓
Hardware Layer (ACS.SPiiPlusNET, Melsec, Serial/USB)
```
**기술 스택:** System.Reactive(Rx) · AuroraEnv DI · 메시지 큐(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_PrismaticRD_PTOP | `Machines/_out_prismatic_rd_ptop/` | 활성 |
### 빌드 구성별 출력
출력은 `구성-플랫폼` 하위 폴더로 분리 (csproj `OutputPath` 기준).
- `Machines/_out_prismatic_rd_ptop/x64-Debug/` ← Debug|x64
- `Machines/_out_prismatic_rd_ptop/x64-Release/` ← Release|x64 (Simulation·UserDefineUnit도 Release 매핑)
### 주의사항
- 빌드 출력 디렉토리는 `.gitignore`에 포함
- 빌드 전 이전 출력물이 있으면 자동 정리
- 각 머신 모듈은 독립적으로 빌드 가능
---
## 6. PTOP 분석 하네스
> 원본: [`harness-ptop.md`](./harness-ptop.md)
ILSOS_PrismaticRD_PTOP의 아키텍처·구현·빌드를 종합 분석하는 에이전트 하네스.
- **팀:** PTOP Lead / PTOP Developer / Build·DevOps Engineer
- **트리거:** "PTOP 전체 분석", "PTOP 빌드 최적화" 등 → `/orchestrate-ptop-harness` 스킬
- **구성:** `.ubisam_agent/agents/`(3개), `.ubisam_agent/skills/`(4개: analyze-architecture·implementation, optimize-build, orchestrate-harness)
> 세부 트리거·구성 요소·변경 이력은 원본 문서 참고.
---
## 7. Git 커밋 규칙
@import ./GIT_RULES.md — bin 무시/예외(External/Aurora/bin), .gitignore 자체 커밋 규칙
---
## 8. 용어 정리 (UNICELL PTOP WELDER)
> 협력사: **UBISAM** / 프로젝트: **UNICELL PTOP WELDING**(약칭 **PTOP**)
### 가접 용접 (Tack Welding)
- **정의**: U-Frame 본(메인) 용접 전에, **팩 제품과 프레임 간 밀착이 안 된 자재를 먼저 붙여 고정**하는 예비 용접.
- **이유**: 자재가 떠 있으면(밀착 불량) 본 용접 품질이 안 나오므로, **Align → 가접으로 밀착 → 메인 용접** 순서로 진행.
- **방식**: **Dot(점) 또는 Short Line(짧은 선)** 출사로 미리 몇 점 붙여 밀착.
- **운용**: 기존 AutoRun 시나리오엔 **가접 시나리오가 없었어서 신규 추가**됨. Manual 모드로 전환 후 Recipe 화면에서 **직접 Scout Image** 촬영 → 수동으로 가접(밀착) 용접 수행.
- **PLC 연동**: 이를 위해 PLC와 협의하여 **15번 bit(0x0F)** 추가 — `M70515 PLC_WELD_READY_REQ`(Weld_01 Ready) / `M70015 PC_WELD_READY_ACK`. PLC ON 시 Recipe/Page 확인 팝업 + Auto→Manual + Resume 트리거. (기존 M70516/M70016은 `..._TRIGGER_*`로 rename)
- **레시피**: PTOP는 **레시피 21,22(가접용)** 에 가접 용접용 시퀀스 수정이 들어감. (가변/가접은 레시피 추가로 처리, 시퀀스 본체 무수정 방침)
- 연관 메모리: [[uframe-page5-gajeop-recipe]], [[bit15-resume-feature]], [[recipe-page-handshake-redesign]]