리크 테스트 gui
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

5.9 KiB

[1단계] 아키텍처 및 기술 스택 정의 (System Architecture)

본 문서는 누수 시험 장비 제어 및 모니터링 시스템(WPF Leak Test Project)의 전체적인 시스템 구조, 데이터 흐름, 그리고 사용되는 기술 스택을 정의합니다.


1. 기술 스택 정의 및 채택 이유 (Technology Stack)

본 시스템은 공장 생산 라인(EOL)의 실시간 누수 테스트 장비 제어 및 신뢰성 데이터 수집을 목적으로 하므로, 장비 제어의 실시간성, Windows OS 환경에서의 하드웨어 통신 드라이버 호환성, 폐쇄망 환경의 안정적인 데이터 보관을 고려하여 기술 스택을 정의합니다.

분류 기술 스택 채택 이유
클라이언트 (데스크톱 제어 앱) WPF (.NET Framework 4.7.2 / C#) Windows 기반 하드웨어 및 계측 장비 제어 API(DASK, Serial) 호환성 확보. MVVM 패턴을 통한 데이터 바인딩 및 시각 효과 구현 극대화.
데이터베이스 (DB) Microsoft SQL Server (MSSQL) 현장 계측 데이터의 트랜잭션 보장 및 공장 내 타 ERP/MES 시스템과의 데이터 호환 용이성. UPSERT(MERGE) 구문을 통한 중복 데이터 방지.
하드웨어 인터페이스 RS-232 Serial (COM Port) / PCI DASK API Sentinel C28 누수 측정기 및 ADLINK 4251 컨트롤러 보드와의 직접 제어 프로토콜 통신.
로그 시스템 (로컬 이중화) CSV / Raw Text File System 네트워크 단절(DB 오프라인) 상황에서도 계측 데이터 유실을 방지하기 위한 로컬 디스크 이중 백업.

2. 시스템 아키텍처 구조도 (System Architecture Diagram)

생산 현장에 위치한 제어 PC 내부의 컴포넌트 구조와 외부 물리 장비 및 데이터베이스 간의 연결 형태는 다음과 같습니다.

graph TD
    %% 외부 물리 디바이스 영역
    subgraph HW ["Physical Hardware Devices"]
        C28["Sentinel C28 (Leak Sensor)"]
        DioBoard["ADLINK 4251 Board (DIO & ID Reader)"]
    end

    %% WPF 클라이언트 영역
    subgraph Client ["WPF Desktop Application (Client)"]
        %% UI Layer
        subgraph ViewLayer ["UI (View) Layer"]
            HomeV["Home View (Real-time Test)"]
            DataV["Data View (Query & CSV Export)"]
            LoginW["Startup Login Window"]
        end

        %% ViewModel Layer
        subgraph VMLayer ["ViewModel Layer"]
            HomeVM["Home ViewModel"]
            DataVM["Data ViewModel"]
        end

        %% Service Layer
        subgraph ServiceLayer ["Business / Service Layer"]
            TPS["TestProcessService (Test Loop Control)"]
            B4251["Board4251Service (ID Reader & IO)"]
            C28S["SentinelC28Service (C28 Protocol)"]
            DBS["EolDatabaseService (DB Adapter)"]
        end
        
        %% Utils / Models
        subgraph Common ["Utils & Models"]
            FL["FileLogger (Local CSV Backup)"]
            DS["IDialogService (Message Popups)"]
            Config["ConfigManager (Settings)"]
        end
    end

    %% 영속화 스토리지 영역
    subgraph Storage ["Persistence Storage Layer"]
        DB[("MSSQL Database Server\n[dbo].[EOL]")]
        Disk[("Local Disk\nLogs/yyyy-MM-dd.csv")]
    end

    %% 연결 관계 정의
    C28 <-->|RS-232 Serial| C28S
    DioBoard <-->|RS-232 / PCI Dask| B4251
    
    C28S -->|Parsed Stream Data| HomeVM
    B4251 -->|ID / IO State| TPS
    C28S -->|Final Result Event| TPS
    TPS -->|Test Progress & Result| HomeVM
    
    HomeVM -->|Data Binding| HomeV
    DataVM -->|Data Binding| DataV
    
    TPS -->|Save Command| DBS
    TPS -->|Backup Command| FL
    
    DBS -->|ADO.NET SQL Write| DB
    FL -->|File Append| Disk
    DataVM -->|Read DB / Fallback CSV| Disk
    DataVM -.->|Read DB| DB

3. 데이터 흐름 (Data Flow)

시험 시작부터 DB 및 로컬 저장까지의 계측 데이터 흐름은 다음 단계를 따릅니다.

sequenceDiagram
    autonumber
    actor Operator as 작업자
    participant HW_IO as ADLINK 4251 (DIO)
    participant TPS as TestProcessService (WPF Thread)
    participant Sensor as ID Sensor (Board4251)
    participant C28 as Sentinel C28 (Leak Sensor)
    participant DBS as EolDatabaseService
    participant LocalFile as FileLogger (Local Disk)
    participant DB as MSSQL Database

    Operator->>HW_IO: 물리 기동 스위치 조작 (START 신호)
    HW_IO->>TPS: InputChanged 이벤트 발생 (LEFT_START / RIGHT_START)
    Note over TPS: AutoResetEvent.Set() 으로 대기 스레드 기상
    TPS->>Sensor: ID 판독 명령 (x00c_... 송신)
    Sensor-->>TPS: 16자리 ID 문자열 반환 (제품 일련번호)
    TPS->>TPS: 시험 대기 상태 진입 (최대 30초)
    C28-->>TPS: Sentinel C28 측정 완료 최종 데이터 패킷 송신
    Note over TPS: 프로그램 판정 vs 센서 판정 스펙 교차 검증 수행
    TPS->>LocalFile: InspectData 로컬 CSV 이중 백업 저장 (UTF-8)
    TPS->>DBS: 비동기 데이터 저장 요청 (SaveEolDataAsync)
    DBS->>DB: MERGE INTO [dbo].[EOL] 쿼리 실행 (UPSERT)
    DBS-->>TPS: 저장 결과 반환 (네트워크 오류 시 로컬 캐시 동작)
    TPS->>HW_IO: 합격(OK) 또는 불합격(NG) 물리 디지털 출력 제어

4. 데이터 수집 항목 (Core Data Fields)

시스템에서 계측하고 외부로 영속화하는 데이터의 기본 규격은 다음과 같습니다.

  • IC_SN / PCB_Barcode: 판독된 16자리 제품 고유 식별자
  • Maker / Model / Variant_1 / Variant_2: 현재 가동 중인 제품 및 생산 기종 정보
  • Operator: 로그인된 작업자 ID
  • Production_Date: 검사 일시 (DateTime)
  • Line / Lot_No / Jig_No / Channel: 작업 라인, 로트 번호, 지그 위치, 검사 채널(좌/우)
  • Spec_UL / Spec_LL: 검사 스펙 상한/하한값
  • Leak_Value: 실제 계측된 누출값 (Decimal)
  • Result: 합격(OK) 또는 불합격(NG) 판정 결과