208 lines
8.7 KiB
Markdown
208 lines
8.7 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(가접용)** 에 가접 용접용 시퀀스 수정이 들어감. (가변/가접은 레시피 추가로 처리, 시퀀스 본체 무수정 방침)
|
|
- **최종 방침(2026-06-22 현장 확정)**:
|
|
- 가접 실행은 bit15 Recipe/Page 확인 팝업+Resume 같은 복잡한 방식 대신 **"PLC가 Scout TRIGGER 신호를 주면 ScoutImage를 단순 실행"** 으로 단순화. (bit15는 신호 라인으로 유지하되 운용은 단순 트리거)
|
|
- **시나리오 상 용접 전 위치에서 ScoutImage 시퀀스 추가**. 추가로 **용접 전/후 이미지를 남기는 방안**으로 요청됨. (작업일지 2026-06-22)
|
|
- 연관 메모리: [[uframe-page5-gajeop-recipe]], [[bit15-resume-feature]], [[recipe-page-handshake-redesign]]
|