# 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]]