|
|
|
|
# 1. 시스템 개요 및 요구사항
|
|
|
|
|
|
|
|
|
|
[← 메뉴얼 목차로 돌아가기](사용자_메뉴얼.md)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 1.1 시스템 개요
|
|
|
|
|
|
|
|
|
|
**Pressure Leak Inspect System**은 제품의 압력 누설(Leak)을 자동으로 검사하는 WPF 기반 데스크탑 애플리케이션입니다. 생산 라인에서 DIO 시작 신호를 받아 제품 ID를 판독하고, 누설 시험을 수행한 뒤 합격/불합격을 자동 판정합니다.
|
|
|
|
|
|
|
|
|
|
### 주요 기능 요약
|
|
|
|
|
|
|
|
|
|
| 기능 | 설명 |
|
|
|
|
|
| ------------------- | ---------------------------------------------------- |
|
|
|
|
|
| **좌/우 2채널 관리** | LEFT / RIGHT 두 개의 독립적인 시험 채널을 운영합니다 |
|
|
|
|
|
| **자동 시험 프로세스** | DIO 시작 신호 감지 → ID 판독 → 누설 시험 → 판정 → 결과 출력까지 전 과정 자동화 |
|
|
|
|
|
| **Sentinel C28 연동** | RS-232 시리얼 통신으로 누설 센서의 실시간 측정값을 수신합니다 |
|
|
|
|
|
| **4251 보드 연동** | 제품 ID 판독을 위한 시리얼 통신을 수행합니다 |
|
|
|
|
|
| **PCI-7432 DIO 보드** | 디지털 입출력 제어 (시작 신호 수신, OK/NG 출력) |
|
|
|
|
|
| **검사 기록 관리** | 날짜/판정/ID별 필터링 검색 및 CSV 파일 내보내기를 지원합니다 |
|
|
|
|
|
| **SPEC 교차 검증** | 프로그램 판정과 센서 자체 판정을 비교하여 불일치 시 경고합니다 |
|
|
|
|
|
| **순차 실행 보장** | 세마포어 잠금으로 좌/우 채널 동시 시험을 방지합니다 |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 1.2 소프트웨어 요구사항
|
|
|
|
|
|
|
|
|
|
| 항목 | 요구사항 | 비고 |
|
|
|
|
|
|------|----------|------|
|
|
|
|
|
| **운영체제** | Windows 10 이상 (64bit 권장) | 32bit도 지원 가능 |
|
|
|
|
|
| **.NET 런타임** | .NET 9 (net9.0-windows) | 별도 설치 필요 없음 (Self-Contained 배포) |
|
|
|
|
|
| **드라이버** | ADLINK PCIS-DASK 드라이버 | `PCI-Dask.dll` 필요 |
|
|
|
|
|
| **시리얼 포트** | 최소 2개의 COM 포트 | C28 센서용 + 4251 보드용 |
|
|
|
|
|
| **화면 해상도** | 1024×768 이상 | 최대화 실행 시 1920×1080 권장 |
|
|
|
|
|
|
|
|
|
|
> **참고**: ADLINK 드라이버가 설치되지 않은 환경에서는 프로그램이 **시뮬레이션 모드**로 자동 전환됩니다. 이 경우 DIO 입출력은 동작하지 않지만, 프로그램의 나머지 기능은 정상적으로 사용할 수 있습니다.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 1.3 하드웨어 구성
|
|
|
|
|
|
|
|
|
|
| 장비 | 모델명 | 용도 | 통신 방식 |
|
|
|
|
|
|------|--------|------|-----------|
|
|
|
|
|
| **DIO 보드** | ADLINK PCI-7432 | 디지털 입출력 (시작 신호 수신, OK/NG 결과 출력) | PCI 슬롯 장착 |
|
|
|
|
|
| **ID 판독 보드** | 4251 | 제품 ID 데이터 판독 | RS-232 시리얼 (COM 포트) |
|
|
|
|
|
| **누설 센서** | Sentinel C28 | 압력 누설량(sccm) 측정 | RS-232 시리얼 (COM 포트) |
|
|
|
|
|
|
|
|
|
|
### 케이블 연결도
|
|
|
|
|
|
|
|
|
|
<div style="display: flex; align-items: center; justify-content: center; gap: 20px; margin: 25px auto; max-width: 600px; page-break-inside: avoid; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;">
|
|
|
|
|
<!-- PC Box -->
|
|
|
|
|
<div style="border: 2px solid #2f3542; border-radius: 6px; padding: 35px 20px; background-color: #f1f2f6; text-align: center; min-width: 100px; font-weight: bold; color: #2f3542; box-shadow: 0 2px 4px rgba(0,0,0,0.06); font-size: 11pt;">
|
|
|
|
|
본체 PC
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- Connections -->
|
|
|
|
|
<div style="display: flex; flex-direction: column; gap: 12px; flex-grow: 1;">
|
|
|
|
|
<!-- C28 센서 -->
|
|
|
|
|
<div style="display: flex; align-items: center; justify-content: space-between; gap: 10px;">
|
|
|
|
|
<div style="flex-grow: 1; text-align: center; font-size: 8.5pt; border-bottom: 2px dashed #007acc; padding-bottom: 4px; color: #007acc; font-weight: 500;">
|
|
|
|
|
RS-232 통신 ➔
|
|
|
|
|
</div>
|
|
|
|
|
<div style="border: 1px solid #007acc; border-radius: 4px; padding: 8px 12px; background-color: #f0f7ff; min-width: 140px; text-align: center; font-size: 9pt; font-weight: bold; color: #005999; box-shadow: 0 1px 3px rgba(0,0,0,0.04);">
|
|
|
|
|
Sentinel C28 센서
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 4251 보드 -->
|
|
|
|
|
<div style="display: flex; align-items: center; justify-content: space-between; gap: 10px;">
|
|
|
|
|
<div style="flex-grow: 1; text-align: center; font-size: 8.5pt; border-bottom: 2px dashed #007acc; padding-bottom: 4px; color: #007acc; font-weight: 500;">
|
|
|
|
|
RS-232 통신 ➔
|
|
|
|
|
</div>
|
|
|
|
|
<div style="border: 1px solid #007acc; border-radius: 4px; padding: 8px 12px; background-color: #f0f7ff; min-width: 140px; text-align: center; font-size: 9pt; font-weight: bold; color: #005999; box-shadow: 0 1px 3px rgba(0,0,0,0.04);">
|
|
|
|
|
4251 보드 (ID 리더)
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- ADLINK -->
|
|
|
|
|
<div style="display: flex; align-items: center; justify-content: space-between; gap: 10px;">
|
|
|
|
|
<div style="flex-grow: 1; text-align: center; font-size: 8.5pt; border-bottom: 2px solid #2ed573; padding-bottom: 4px; color: #2ed573; font-weight: 500;">
|
|
|
|
|
PCI 슬롯 ══➔
|
|
|
|
|
</div>
|
|
|
|
|
<div style="border: 1px solid #2ed573; border-radius: 4px; padding: 8px 12px; background-color: #f1fff5; min-width: 140px; text-align: center; font-size: 9pt; font-weight: bold; color: #157a38; box-shadow: 0 1px 3px rgba(0,0,0,0.04);">
|
|
|
|
|
ADLINK PCI-7432
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 1.4 DIO 신호 매핑
|
|
|
|
|
|
|
|
|
|
### 입력 신호 (Inputs) - PCI-7432
|
|
|
|
|
|
|
|
|
|
| 주소 | 신호명 | 동작 | 설명 |
|
|
|
|
|
|------|--------|------|------|
|
|
|
|
|
| 0 | `LEFT_START` | OFF→ON 감지 | 좌측 채널 시험 시작 트리거 |
|
|
|
|
|
| 1 | `RIGHT_START` | OFF→ON 감지 | 우측 채널 시험 시작 트리거 |
|
|
|
|
|
|
|
|
|
|
> **동작 원리**: 시작 신호가 OFF→ON으로 전환되는 순간(Rising Edge)을 감지하여 시험을 시작합니다.
|
|
|
|
|
|
|
|
|
|
### 출력 신호 (Outputs) - PCI-7432
|
|
|
|
|
|
|
|
|
|
| 주소 | 신호명 | 초기값 | 설명 |
|
|
|
|
|
|------|--------|--------|------|
|
|
|
|
|
| 0 | `LEFT_OK` | OFF | 좌측 합격 시 ON 출력 |
|
|
|
|
|
| 1 | `RIGHT_OK` | OFF | 우측 합격 시 ON 출력 |
|
|
|
|
|
| 2 | `PC_ON` | **ON** | PC 가동 상태 신호 (프로그램 실행 시 자동 ON) |
|
|
|
|
|
| 3 | `LEFT_NG` | OFF | 좌측 불합격 시 ON 출력 |
|
|
|
|
|
| 4 | `RIGHT_NG` | OFF | 우측 불합격 시 ON 출력 |
|
|
|
|
|
|
|
|
|
|
> **참고**: `PC_ON` 신호는 프로그램 시작 시 자동으로 ON이 되며, 프로그램 종료 시 자동으로 OFF됩니다. 이를 통해 외부 시스템이 PC의 가동 상태를 확인할 수 있습니다.
|
|
|
|
|
|
|
|
|
|
> **참고**: 시험이 시작되면 해당 채널의 OK/NG 출력이 모두 OFF로 초기화된 후, 판정 완료 시 해당 결과에 맞는 출력만 ON됩니다.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
<div class="page-break"></div>
|
|
|
|
|
|
|
|
|
|
## 1.5 프로그램 창 구조 개요
|
|
|
|
|
|
|
|
|
|
프로그램은 3개의 영역으로 구성됩니다:
|
|
|
|
|
|
|
|
|
|
<div style="border: 1px solid #ccd0d5; border-radius: 6px; overflow: hidden; max-width: 500px; margin: 20px auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; box-shadow: 0 2px 6px rgba(0,0,0,0.05); page-break-inside: avoid;">
|
|
|
|
|
<!-- Header -->
|
|
|
|
|
<div style="background-color: #2f3542; color: #ffffff; padding: 12px; font-weight: bold; font-size: 9.5pt; text-align: center; border-bottom: 2px solid #ccd0d5;">
|
|
|
|
|
상단 타이틀 바 <span style="font-weight: normal; font-size: 8.5pt; color: #a4b0be; margin-left: 5px;">(프로그램명, 시간, 배지, 창 제어)</span>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- Content -->
|
|
|
|
|
<div style="background-color: #ffffff; padding: 45px 15px; text-align: center; color: #2f3542; border-bottom: 2px solid #ccd0d5;">
|
|
|
|
|
<div style="font-weight: bold; font-size: 11pt; margin-bottom: 6px;">메인 콘텐츠 영역</div>
|
|
|
|
|
<div style="color: #747d8c; font-size: 9pt;">(Home / Data View 전환)</div>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- Footer -->
|
|
|
|
|
<div style="background-color: #f1f2f6; color: #2f3542; padding: 12px; font-size: 9pt; text-align: center; font-weight: bold;">
|
|
|
|
|
하단 메뉴 바 <span style="font-weight: normal; font-size: 8.5pt; color: #57606f; margin-left: 5px;">(Data, Parameters, Comm.Settings, ID Test L/R)</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
| 영역 | 설명 |
|
|
|
|
|
|------|------|
|
|
|
|
|
| 상단 타이틀 바 | 프로그램 제목, 실시간 날짜/시간, 현재 로그인된 작업자/모델/라인 정보 배지, 세션 로그아웃 버튼, 시스템 창 제어 버튼 배치 |
|
|
|
|
|
| 메인 콘텐츠 영역 | 선택된 기능 화면(Home 검사 모니터 또는 Data 데이터 조회)이 표시되는 주 콘텐츠 영역 |
|
|
|
|
|
| 하단 메뉴 바 | 각 화면 전환 및 설정을 위한 조작 버튼 영역 |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
[다음: 초기 설정 가이드 →](02_초기_설정.md)
|