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.
1439 lines
65 KiB
1439 lines
65 KiB
|
1 month ago
|
<style>
|
||
|
|
/*
|
||
|
|
* A4 용지 기준 PDF 출력을 위한 스타일시트 (pdf_style.css)
|
||
|
|
*/
|
||
|
|
|
||
|
|
@page {
|
||
|
|
size: A4;
|
||
|
|
margin: 20mm 15mm 20mm 15mm;
|
||
|
|
@top-left { content: none !important; }
|
||
|
|
@top-right { content: none !important; }
|
||
|
|
@bottom-left { content: none !important; }
|
||
|
|
@bottom-right { content: none !important; }
|
||
|
|
@bottom-center {
|
||
|
|
content: counter(page) !important;
|
||
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans KR", sans-serif;
|
||
|
|
font-size: 8.5pt;
|
||
|
|
color: #7f8c8d;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
body {
|
||
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans KR", sans-serif;
|
||
|
|
font-size: 10pt;
|
||
|
|
line-height: 1.6;
|
||
|
|
color: #333333;
|
||
|
|
background-color: #ffffff;
|
||
|
|
-webkit-print-color-adjust: exact !important;
|
||
|
|
print-color-adjust: exact !important;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 제목 스타일 */
|
||
|
|
h1, h2, h3, h4, h5, h6 {
|
||
|
|
color: #111111;
|
||
|
|
font-weight: bold;
|
||
|
|
page-break-after: avoid;
|
||
|
|
page-break-inside: avoid;
|
||
|
|
}
|
||
|
|
|
||
|
|
h1 {
|
||
|
|
font-size: 18pt;
|
||
|
|
border-bottom: 2px solid #007acc;
|
||
|
|
padding-bottom: 4px;
|
||
|
|
margin-top: 20px;
|
||
|
|
margin-bottom: 12px;
|
||
|
|
}
|
||
|
|
|
||
|
|
h2 {
|
||
|
|
font-size: 13pt;
|
||
|
|
border-bottom: 1px solid #e1e4e8;
|
||
|
|
padding-bottom: 3px;
|
||
|
|
margin-top: 16px;
|
||
|
|
margin-bottom: 10px;
|
||
|
|
}
|
||
|
|
|
||
|
|
h3 {
|
||
|
|
font-size: 11pt;
|
||
|
|
margin-top: 12px;
|
||
|
|
margin-bottom: 6px;
|
||
|
|
}
|
||
|
|
|
||
|
|
h4 {
|
||
|
|
font-size: 10pt;
|
||
|
|
margin-top: 10px;
|
||
|
|
margin-bottom: 6px;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 문단 및 리스트 */
|
||
|
|
p {
|
||
|
|
margin-top: 0;
|
||
|
|
margin-bottom: 8px;
|
||
|
|
text-align: justify;
|
||
|
|
}
|
||
|
|
|
||
|
|
ul, ol {
|
||
|
|
margin-top: 0;
|
||
|
|
margin-bottom: 8px;
|
||
|
|
padding-left: 20px;
|
||
|
|
}
|
||
|
|
|
||
|
|
li {
|
||
|
|
margin-bottom: 3px;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 구분선 */
|
||
|
|
hr {
|
||
|
|
height: 1px;
|
||
|
|
padding: 0;
|
||
|
|
margin: 15px 0;
|
||
|
|
background-color: #e1e4e8;
|
||
|
|
border: 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 테이블 스타일 */
|
||
|
|
table {
|
||
|
|
width: 100%;
|
||
|
|
border-collapse: collapse;
|
||
|
|
margin-top: 0;
|
||
|
|
margin-bottom: 10px;
|
||
|
|
page-break-inside: avoid;
|
||
|
|
}
|
||
|
|
|
||
|
|
table th, table td {
|
||
|
|
padding: 4px 8px;
|
||
|
|
border: 1px solid #dfe2e5;
|
||
|
|
font-size: 8.5pt;
|
||
|
|
word-break: keep-all;
|
||
|
|
}
|
||
|
|
|
||
|
|
table th {
|
||
|
|
font-weight: 600;
|
||
|
|
background-color: #f6f8fa;
|
||
|
|
text-align: left;
|
||
|
|
}
|
||
|
|
|
||
|
|
table tr:nth-child(even) {
|
||
|
|
background-color: #f9fbfd;
|
||
|
|
}
|
||
|
|
|
||
|
|
table tr {
|
||
|
|
page-break-inside: avoid; /* 표의 중간 행이 반으로 쪼개지는 것만 방지 */
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 인용구 스타일 */
|
||
|
|
blockquote {
|
||
|
|
padding: 6px 12px;
|
||
|
|
color: #6a737d;
|
||
|
|
border-left: 0.25em solid #007acc;
|
||
|
|
background-color: #f6f8fa;
|
||
|
|
margin: 0 0 10px 0;
|
||
|
|
page-break-inside: avoid;
|
||
|
|
}
|
||
|
|
|
||
|
|
blockquote p {
|
||
|
|
margin: 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 코드 블록 (아스키 아트 등 포함) */
|
||
|
|
pre, code {
|
||
|
|
font-family: "Consolas", "Monaco", "Andale Mono", "Ubuntu Mono", monospace;
|
||
|
|
font-size: 8.5pt;
|
||
|
|
background-color: #f6f8fa;
|
||
|
|
border-radius: 3px;
|
||
|
|
}
|
||
|
|
|
||
|
|
code {
|
||
|
|
padding: 0.2em 0.4em;
|
||
|
|
margin: 0;
|
||
|
|
border: 1px solid #eaecef;
|
||
|
|
}
|
||
|
|
|
||
|
|
pre {
|
||
|
|
padding: 12px;
|
||
|
|
overflow: auto;
|
||
|
|
line-height: 1.45;
|
||
|
|
border: 1px solid #e1e4e8;
|
||
|
|
word-wrap: normal;
|
||
|
|
white-space: pre; /* 아스키 아트 정렬 유지를 위해 강제 줄바꿈 해제 */
|
||
|
|
page-break-inside: avoid;
|
||
|
|
}
|
||
|
|
|
||
|
|
pre code {
|
||
|
|
padding: 0;
|
||
|
|
margin: 0;
|
||
|
|
background-color: transparent;
|
||
|
|
border: none;
|
||
|
|
font-size: inherit;
|
||
|
|
white-space: inherit;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 이미지 스타일 */
|
||
|
|
img {
|
||
|
|
max-width: 100%;
|
||
|
|
max-height: 100mm; /* A4 높이의 약 절반 이하로 제한 */
|
||
|
|
display: block;
|
||
|
|
margin: 15px auto;
|
||
|
|
object-fit: contain;
|
||
|
|
page-break-inside: avoid;
|
||
|
|
border: 1px solid #e1e4e8;
|
||
|
|
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 페이지 나누기 요소 */
|
||
|
|
.page-break {
|
||
|
|
page-break-before: always !important;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 내비게이션 숨김 (인쇄 시) */
|
||
|
|
.nav-link, .nav-links, .back-to-toc, .manual-nav,
|
||
|
|
a[href$=".md"] {
|
||
|
|
display: none !important;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 링크 스타일 */
|
||
|
|
a {
|
||
|
|
color: #007acc;
|
||
|
|
text-decoration: none;
|
||
|
|
}
|
||
|
|
|
||
|
|
a:hover {
|
||
|
|
text-decoration: underline;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 특별 배지 스타일 */
|
||
|
|
.badge {
|
||
|
|
display: inline-block;
|
||
|
|
padding: 2px 6px;
|
||
|
|
font-size: 8pt;
|
||
|
|
font-weight: 600;
|
||
|
|
line-height: 1;
|
||
|
|
border-radius: 2px;
|
||
|
|
background-color: #e1e4e8;
|
||
|
|
color: #24292e;
|
||
|
|
margin-right: 4px;
|
||
|
|
}
|
||
|
|
|
||
|
|
</style>
|
||
|
|
|
||
|
|
# Pressure Leak Inspect System - 사용자 메뉴얼
|
||
|
|
|
||
|
|
> **버전**: 1.0.0 | **최종 수정**: 2026-06-25
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 메뉴얼 목차
|
||
|
|
|
||
|
|
본 메뉴얼은 각 주제별로 별도 문서로 구성되어 있습니다. 아래 링크를 클릭하여 해당 문서로 이동하세요.
|
||
|
|
|
||
|
|
| 번호 | 문서 | 설명 |
|
||
|
|
|------|------|------|
|
||
|
|
| 1 | [시스템 개요 및 요구사항](#1-시스템-개요-및-요구사항) | 프로그램 소개, 주요 기능, 하드웨어/소프트웨어 요구사항, DIO 신호 매핑 |
|
||
|
|
| 2 | [초기 설정 가이드](#2-초기-설정-가이드) | 설치 전 준비, 로그인 및 프로그램 실행, 최초 설정 순서 (통신→시험→동작 테스트) |
|
||
|
|
| 3 | [메인 화면 (Home View)](#3-메인-화면-home-view) | 타이틀 바(작업자/모델/라인 정보 배지 및 로그아웃), 좌/우 채널 모니터링 영역, 하단 메뉴 바 상세 설명 |
|
||
|
|
| 4 | [통신 설정 (Comm. Settings)](#4-통신-설정-comm-settings) | 4251 보드 및 Sentinel C28 센서의 COM 포트/BaudRate 설정 방법 |
|
||
|
|
| 5 | [시험 설정 (Parameters)](#5-시험-설정-parameters) | SPEC UL/LL 판정 규격값 설정 방법 |
|
||
|
|
| 6 | [측정 데이터 조회 (Data View)](#6-측정-데이터-조회-data-view) | 검사 기록 검색, 필터링, CSV 내보내기 방법 |
|
||
|
|
| 7 | [자동 시험 프로세스](#7-자동-시험-프로세스) | 7단계 자동 시험 흐름, 순차 실행, ID 수동 테스트 |
|
||
|
|
| 8 | [로그 및 데이터 관리](#8-로그-및-데이터-관리) | 검사 데이터 로그, 시스템 로그, 설정 파일 구조 |
|
||
|
|
| 9 | [오류 대응 및 프로그램 종료](#9-오류-대응-및-프로그램-종료) | 통신 오류, 시험 중 오류, DIO 보드 오류 대응, 종료 절차 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 빠른 시작 가이드 (Quick Start)
|
||
|
|
|
||
|
|
처음 사용하는 경우 아래 순서를 따르세요:
|
||
|
|
|
||
|
|
1. **하드웨어 연결 확인** → [시스템 개요 및 요구사항](#1-시스템-개요-및-요구사항) 참조
|
||
|
|
2. **프로그램 실행 및 로그인** → `leak_test_project.exe` 실행 후 로그인 완료 (오프라인 테스트는 `Database.ini`에서 `OfflinePreview=true` 설정)
|
||
|
|
3. **통신 설정** → 하단 메뉴 `Comm. Settings` → COM 포트 선택 → `설정 저장`
|
||
|
|
4. **시험 설정** → 하단 메뉴 `Parameters` → SPEC UL/LL 입력 → `설정 저장`
|
||
|
|
5. **시험 시작** → DIO 시작 신호 또는 `ID Test (L/R)` 버튼으로 동작 확인
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*본 문서는 Pressure Leak Inspect System v1.0.0 기준으로 작성되었습니다.*
|
||
|
|
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 1. 시스템 개요 및 요구사항
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 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 Framework** | 4.7.2 이상 | Windows 10에 기본 포함 |
|
||
|
|
| **드라이버** | 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 데이터 조회)이 표시되는 주 콘텐츠 영역 |
|
||
|
|
| 하단 메뉴 바 | 각 화면 전환 및 설정을 위한 조작 버튼 영역 |
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 2. 초기 설정 가이드
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2.1 설치 전 준비사항 체크리스트
|
||
|
|
|
||
|
|
프로그램을 실행하기 전에 아래 항목을 모두 확인하세요:
|
||
|
|
|
||
|
|
| # | 확인 항목 | 확인 방법 | 비고 |
|
||
|
|
|---|----------|----------|------|
|
||
|
|
| 1 | ADLINK PCIS-DASK 드라이버 설치 완료 | Windows 장치 관리자에서 PCI-7432 인식 확인 | 미설치 시 시뮬레이션 모드로 동작 |
|
||
|
|
| 2 | Sentinel C28 센서 시리얼 케이블 연결 | 장치 관리자 → 포트(COM & LPT)에서 COM 포트 번호 확인 | RS-232 케이블 사용 |
|
||
|
|
| 3 | 4251 보드 시리얼 케이블 연결 | 장치 관리자 → 포트(COM & LPT)에서 COM 포트 번호 확인 | RS-232 케이블 사용 |
|
||
|
|
| 4 | PCI-7432 DIO 보드 장착 | 장치 관리자에서 ADLINK PCI-7432 인식 확인 | PCI 슬롯에 장착 |
|
||
|
|
| 5 | COM 포트 번호 메모 | C28 센서와 4251 보드 각각의 COM 포트 번호를 기록 | 설정 시 필요 |
|
||
|
|
|
||
|
|
> **⚠️ 중요**: C28 센서와 4251 보드는 **서로 다른 COM 포트**에 연결해야 합니다. 동일한 포트를 지정하면 통신 충돌이 발생합니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2.2 프로그램 실행
|
||
|
|
|
||
|
|
### 실행 방법
|
||
|
|
1. `leak_test_project.exe` 파일을 **더블 클릭**하여 실행합니다.
|
||
|
|
2. 프로그램이 전체화면(Maximized) 모드로 시작됩니다.
|
||
|
|
|
||
|
|
### 최초 실행 시 자동 생성되는 파일
|
||
|
|
|
||
|
|
| 파일 | 위치 | 설명 |
|
||
|
|
|------|------|------|
|
||
|
|
| `config.xml` | 프로그램 실행 폴더 | 통신 포트, BaudRate, SPEC 값 등 모든 설정을 저장 |
|
||
|
|
| `Settings/DioConfig.ini` | Settings 하위 폴더 | DIO 보드 타입, 입출력 포인트 정의 |
|
||
|
|
|
||
|
|
### 프로그램 시작 시 자동 수행 동작
|
||
|
|
|
||
|
|
프로그램이 실행되면 아래 동작이 자동으로 수행됩니다:
|
||
|
|
|
||
|
|
<div style="border-left: 3px solid #007acc; padding-left: 20px; margin: 25px auto; max-width: 550px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; page-break-inside: avoid;">
|
||
|
|
<div style="margin-bottom: 15px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #007acc; border-radius: 50%;"></span>
|
||
|
|
<div style="font-weight: bold; color: #1e272e; font-size: 10pt;">프로그램 실행 시작</div>
|
||
|
|
</div>
|
||
|
|
<div style="margin-bottom: 12px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #007acc; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #007acc; font-size: 9.5pt;">1. DIO 보드 초기화</strong>
|
||
|
|
<span style="font-size: 8.5pt; color: #57606f; display: block; margin-top: 2px;">PCI-7432 보드를 확인하며, 실패 시 시뮬레이션 모드로 전환</span>
|
||
|
|
</div>
|
||
|
|
<div style="margin-bottom: 12px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #007acc; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #007acc; font-size: 9.5pt;">2. PC_ON 출력 신호 ON</strong>
|
||
|
|
<span style="font-size: 8.5pt; color: #57606f; display: block; margin-top: 2px;">외부 설비에 PC 가동 상태를 실시간 알림</span>
|
||
|
|
</div>
|
||
|
|
<div style="margin-bottom: 12px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #007acc; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #007acc; font-size: 9.5pt;">3. 설정값 로드</strong>
|
||
|
|
<span style="font-size: 8.5pt; color: #57606f; display: block; margin-top: 2px;">`config.xml` 파일로부터 통신 포트 및 판정 규격(SPEC) 로드</span>
|
||
|
|
</div>
|
||
|
|
<div style="margin-bottom: 12px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #007acc; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #007acc; font-size: 9.5pt;">4. Sentinel C28 연결</strong>
|
||
|
|
<span style="font-size: 8.5pt; color: #57606f; display: block; margin-top: 2px;">리크 센서 시리얼 통신 포트 연결 시도</span>
|
||
|
|
</div>
|
||
|
|
<div style="margin-bottom: 12px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #007acc; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #007acc; font-size: 9.5pt;">5. 4251 보드 연결</strong>
|
||
|
|
<span style="font-size: 8.5pt; color: #57606f; display: block; margin-top: 2px;">ID 판독 보드 시리얼 통신 포트 연결 시도</span>
|
||
|
|
</div>
|
||
|
|
<div style="margin-bottom: 12px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #007acc; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #007acc; font-size: 9.5pt;">6. 시험 프로세스 스레드 기동</strong>
|
||
|
|
<span style="font-size: 8.5pt; color: #57606f; display: block; margin-top: 2px;">LEFT 및 RIGHT 채널의 백그라운드 계측 제어 스레드 개시</span>
|
||
|
|
</div>
|
||
|
|
<div style="position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #2ed573; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #2ed573; font-size: 9.5pt;">7. 메인 화면(Home View) 표시</strong>
|
||
|
|
<span style="font-size: 8.5pt; color: #57606f; display: block; margin-top: 2px;">프로그램 UI 전체 활성화 및 측정 대기 상태 진입</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
> **참고**: 시리얼 포트 연결에 실패하면 메인 화면의 **오류 메시지** 영역에 해당 오류가 표시됩니다. 이 경우 `Comm. Settings`에서 올바른 포트를 선택한 후 저장하면 자동으로 재연결됩니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2.3 프로그램 로그인 및 오프라인 모드 설정
|
||
|
|
|
||
|
|
프로그램 실행이 완료되면 메인 화면이 활성화되기 전, **작업 정보 입력 및 로그인 창**이 모달로 표시됩니다. 로그인을 성공적으로 마쳐야 메인 화면을 조작할 수 있습니다.
|
||
|
|
|
||
|
|
### 로그인 필드 구성
|
||
|
|
|
||
|
|
| 입력 필드 | 예시 | 설명 |
|
||
|
|
|-----------|------|------|
|
||
|
|
| **Maker** | `MOBIS` | 제조사 정보 |
|
||
|
|
| **Model** | `C28_TEST` | 검사 모델명 |
|
||
|
|
| **Variant 1** | `V1` | 세부 파생 모델 정보 1 |
|
||
|
|
| **Variant 2** | `V2` | 세부 파생 모델 정보 2 |
|
||
|
|
| **ID (Operator)** | `sa` | 작업자 ID |
|
||
|
|
| **PW (Password)** | `****` | 비밀번호 (DB 조회용) |
|
||
|
|
| **Line** | `EOL_01` | 생산 라인 번호 |
|
||
|
|
| **Lot No** | `LOT001` | 로트 번호 |
|
||
|
|
| **Jig No** | `JIG_L` | 지그 번호 |
|
||
|
|
|
||
|
|
> **참고 (자동완성)**: 각 필드에 마우스를 클릭하거나 포커스를 두면, 이전 로그인 이력이 팝업 메뉴 형식으로 나열되어 간편하게 자동 완성을 사용할 수 있습니다.
|
||
|
|
|
||
|
|
### 로그인 방식 설정 (Database.ini)
|
||
|
|
|
||
|
|
윈도우 공용 폴더(`C:\ProgramData\LeakTest\Database.ini`)에 위치한 `Database.ini` 파일 설정에 따라 로그인 인증 방식이 달라집니다. (해당 파일이 누락된 경우 프로그램 최초 실행 시 기본 템플릿 정보와 함께 경로상에 자동으로 생성됩니다. ClickOnce 배포 방식을 사용하는 경우에도 프로그램 업데이트 시 설정 데이터가 유실되지 않고 영구 보존됩니다.)
|
||
|
|
|
||
|
|
```ini
|
||
|
|
; [데이터베이스 접속 상세 설정]
|
||
|
|
Db_Server=192.168.0.20
|
||
|
|
Db_Name=NE1aW_PT_SENSOR
|
||
|
|
Db_User=sa
|
||
|
|
Db_Password=sa1234
|
||
|
|
|
||
|
|
[Login]
|
||
|
|
Procedure=dbo.CheckOperator
|
||
|
|
ProcessName=EOL
|
||
|
|
OfflinePreview=false
|
||
|
|
```
|
||
|
|
|
||
|
|
- **온라인 인증 모드 (`OfflinePreview=false`)**: 지정된 개별 데이터베이스 접속 정보(`Db_Server`, `Db_Name`, `Db_User`, `Db_Password`)를 기반으로 데이터베이스에 접속하여 Stored Procedure(`Procedure`)로 ID/PW 존재 여부를 직접 확인합니다. DB 서버 연결 실패나 미등록 사용자일 경우 로그인이 거부됩니다.
|
||
|
|
- **오프라인 테스트 모드 (`OfflinePreview=true`)**: 데이터베이스를 거치지 않고, 필수 입력 값을 채우면 즉시 로그인이 허용됩니다. 네트워크 연결이 안 된 시뮬레이션 및 테스트 환경에서 사용합니다.
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2.4 최초 설정 순서 (Step-by-Step)
|
||
|
|
|
||
|
|
프로그램을 처음 사용할 때는 반드시 아래 순서로 설정을 진행하세요.
|
||
|
|
|
||
|
|
### Step 1: 통신 설정 (가장 먼저 수행)
|
||
|
|
|
||
|
|
> 하드웨어와의 통신이 설정되어야 이후 모든 기능이 정상 동작합니다.
|
||
|
|
|
||
|
|
1. 하단 메뉴 바에서 **`Comm. Settings (통신 설정)`** 버튼을 클릭합니다.
|
||
|
|
2. **통신 설정** 팝업 창이 메인 창 중앙에 표시됩니다.
|
||
|
|
|
||
|
|
**4251 보드 설정 (좌측 영역):**
|
||
|
|
|
||
|
|
| 설정 항목 | 설명 | 선택 방법 | 기본값 |
|
||
|
|
|-----------|------|----------|--------|
|
||
|
|
| `4251 BaudRate` | 통신 속도 | 드롭다운에서 선택 (9600/19200/38400/115200) | `115200` |
|
||
|
|
| `4251 Port` | COM 포트 | 드롭다운에서 연결된 포트 선택 | `COM3` |
|
||
|
|
|
||
|
|
**Sentinel C28 설정 (우측 영역):**
|
||
|
|
|
||
|
|
| 설정 항목 | 설명 | 선택 방법 | 기본값 |
|
||
|
|
|-----------|------|----------|--------|
|
||
|
|
| `Sensor BaudRate` | 통신 속도 | 드롭다운에서 선택 (9600/19200/38400/115200) | `9600` |
|
||
|
|
| `Sensor Port` | COM 포트 | 드롭다운에서 연결된 포트 선택 | `COM1` |
|
||
|
|
|
||
|
|
3. 모든 항목을 설정한 후 **`설정 저장`** 버튼을 클릭합니다.
|
||
|
|
4. "통신 설정이 저장되었습니다." 메시지가 표시되면 설정 완료입니다.
|
||
|
|
|
||
|
|
> **⚠️ 중요**: 저장 시 기존의 모든 시리얼 통신 연결이 해제되고, 새로운 설정으로 자동 재연결됩니다. 이 과정에서 진행 중인 시험이 있다면 중단될 수 있습니다.
|
||
|
|
|
||
|
|
> **참고**: COM 포트 목록에는 현재 PC에 물리적으로 연결된 시리얼 장치만 표시됩니다. 원하는 포트가 보이지 않으면:
|
||
|
|
> - USB-시리얼 케이블이 PC에 연결되어 있는지 확인
|
||
|
|
> - 장치 관리자에서 해당 포트의 드라이버가 정상 설치되었는지 확인
|
||
|
|
> - 다른 프로그램이 해당 포트를 점유하고 있지 않은지 확인
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Step 2: 시험 설정 (SPEC 규격값 입력)
|
||
|
|
|
||
|
|
1. 하단 메뉴 바에서 **`Parameters (시험 설정)`** 버튼을 클릭합니다.
|
||
|
|
2. **시험 설정** 팝업 창이 표시됩니다.
|
||
|
|
|
||
|
|
| 설정 항목 | 설명 | 입력 형식 | 기본값 |
|
||
|
|
|-----------|------|----------|--------|
|
||
|
|
| `SPEC UL (sccm)` | 누설 상한 규격값 | 소수점 포함 숫자 (예: `1.00`) | `1.00` |
|
||
|
|
| `SPEC LL (sccm)` | 누설 하한 규격값 | 소수점 포함 숫자 (예: `-1.00`) | `-1.00` |
|
||
|
|
|
||
|
|
3. 값을 입력한 후 **`설정 저장`** 버튼을 클릭합니다.
|
||
|
|
4. "파라미터 설정이 저장되었습니다." 메시지가 표시되면 완료입니다.
|
||
|
|
|
||
|
|
> **참고**: SPEC UL/LL 값은 좌/우 양쪽 채널에 **공통으로 적용**됩니다.
|
||
|
|
|
||
|
|
> **판정 기준**: `SPEC LL ≤ 측정값 ≤ SPEC UL` 이면 **OK**, 범위를 벗어나면 **NG**로 판정됩니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Step 3: 동작 테스트 (선택사항)
|
||
|
|
|
||
|
|
모든 설정이 완료되면 하단 메뉴의 **`ID Test (L)`** 또는 **`ID Test (R)`** 버튼으로 간단한 동작 테스트를 수행할 수 있습니다.
|
||
|
|
|
||
|
|
1. **`ID Test (L)`** 버튼을 클릭합니다.
|
||
|
|
2. 좌측 채널의 진행 메시지가 순서대로 표시됩니다:
|
||
|
|
- `시험 시작` → `센서 정보 읽는 중` → `ID 테스트 완료` (또는 `ID 테스트 실패`)
|
||
|
|
3. 좌측 채널의 **ID** 영역에 읽은 제품 ID가 표시되면 정상입니다.
|
||
|
|
|
||
|
|
> **참고**: ID Test는 DIO 시작 신호 없이도 4251 보드의 센서 판독 기능만 단독으로 테스트합니다. 실제 LEAK 시험은 수행하지 않습니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2.5 설정 변경 시 주의사항
|
||
|
|
|
||
|
|
| 상황 | 동작 | 주의 |
|
||
|
|
|------|------|------|
|
||
|
|
| 통신 설정 저장 | 모든 시리얼 연결 해제 → 새 설정으로 재연결 | 시험 중 변경 시 시험 중단 |
|
||
|
|
| 시험 설정 저장 | 즉시 메인 화면의 SPEC 표시 갱신 | 진행 중인 시험에는 영향 없음 |
|
||
|
|
| 프로그램 재시작 | `config.xml`에서 마지막 저장된 설정 자동 로드 | 별도 작업 불필요 |
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 3. 메인 화면 (Home View)
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
프로그램 실행 시 기본으로 표시되는 화면입니다. 좌/우 채널의 누설 시험 결과를 실시간으로 모니터링합니다.
|
||
|
|
|
||
|
|
## 3.1 전체 화면 레이아웃
|
||
|
|
<img src="./Pasted image 20260626093617.png" alt="Pasted image 20260626093617.png" />
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3.2 상단 타이틀 바
|
||
|
|
|
||
|
|
프로그램 최상단에 위치한 짙은 블랙 그레이 배경의 바입니다.
|
||
|
|
<img src="./Pasted image 20260626093648.png" alt="Pasted image 20260626093648.png" />
|
||
|
|
|
||
|
|
| 위치 | 요소 | 설명 |
|
||
|
|
|------|------|------|
|
||
|
|
| 좌측 | **프로그램 제목 & 버전** | "Pressure Leak" (백색 볼드) 및 `v1.0.0 (Updated: 2026-06-05)` 표시 |
|
||
|
|
| 중앙 | **현재 날짜/시간** | `yyyy-MM-dd [요일] HH:mm:ss` 형식, 1초 주기로 실시간 갱신 |
|
||
|
|
| 우측 | **작업 정보 배지** | 현재 로그인 상태에 따른 `작업자 ID`, `검사 모델`, `생산 라인` 정보를 배지로 시각화하여 현재 작업 상태 인지 |
|
||
|
|
| 우측 | **로그아웃 버튼** | 현재 세션을 로그아웃하고, 다시 로그인 모달 창을 띄웁니다 |
|
||
|
|
| 최우측 | **창 제어 버튼** | 최소화(─) / 최대화·복원(□) / 종료(X)를 수행하는 윈도우 창 제어 아이콘 배치 |
|
||
|
|
|
||
|
|
### 타이틀 바 조작
|
||
|
|
|
||
|
|
| 조작 | 동작 |
|
||
|
|
|------|------|
|
||
|
|
| 타이틀 바 **드래그** | 창 이동 |
|
||
|
|
| 타이틀 바 **더블 클릭** | 최대화 ↔ 일반 크기 전환 |
|
||
|
|
| **─** 버튼 클릭 | 작업표시줄로 최소화 |
|
||
|
|
| **□** 버튼 클릭 | 최대화 ↔ 일반 크기 전환 (아이콘도 변경됨) |
|
||
|
|
| **X** 버튼 클릭 | 종료 확인 대화상자 표시 → "예" 선택 시 종료 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3.3 메인 영역 - 채널 모니터링
|
||
|
|
|
||
|
|
화면은 좌측(`LEFT LEAK TESTER`)과 우측(`RIGHT LEAK TESTER`)으로 균등 분할되며, 각 채널은 동일한 구조입니다.
|
||
|
|
<img src="./Pasted image 20260626093712.png" alt="Pasted image 20260626093712.png" />
|
||
|
|
|
||
|
|
### 각 채널의 구성 요소 (위에서 아래 순서)
|
||
|
|
|
||
|
|
#### ① 채널 타이틀 (Row 0)
|
||
|
|
- **LEFT LEAK TESTER** 또는 **RIGHT LEAK TESTER**
|
||
|
|
- 짙은 남색 배경에 백색 볼드 텍스트로 채널 구분을 명시합니다.
|
||
|
|
|
||
|
|
#### ② 시작 시간 (Row 1)
|
||
|
|
| 항목 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 라벨 | `시작 시간` (회색 헤더 배경) |
|
||
|
|
| 값 | `yyyy-MM-dd HH:mm:ss` 형식 (예: `2026-05-08 10:30:15`) |
|
||
|
|
| 갱신 시점 | 시험이 시작될 때마다 현재 시각으로 자동 갱신 |
|
||
|
|
|
||
|
|
#### ③ ID (Row 2)
|
||
|
|
| 항목 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 라벨 | `ID` (회색 헤더 배경) |
|
||
|
|
| 값 | 16자리 제품 ID 표시 |
|
||
|
|
| 데이터 소스 | 4251 보드를 통해 제품 ID 센서에서 읽은 값 |
|
||
|
|
| 갱신 시점 | 시험 시작 시 초기화, 센서 판독 완료 시 표시 |
|
||
|
|
|
||
|
|
#### ④ 측정값 + SPEC (Row 3) - **가장 큰 영역**
|
||
|
|
좌측에 측정값, 우측에 SPEC 규격이 함께 표시됩니다.
|
||
|
|
|
||
|
|
**측정값 영역:**
|
||
|
|
|
||
|
|
| 항목 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 라벨 | `측정값` (볼드) |
|
||
|
|
| 값 | Sentinel C28에서 수신한 누설량 (소수점 4자리, 예: `0.5234`) |
|
||
|
|
| 단위 | `sccm` (우측 하단에 표시) |
|
||
|
|
| 폰트 크기 | 원거리에서도 쉽게 식별할 수 있도록 대형 폰트로 강조 표시 |
|
||
|
|
| 색상 | 파란색 볼드 |
|
||
|
|
| 갱신 시점 | C28 센서 스트리밍 데이터 수신 시 실시간 갱신 |
|
||
|
|
|
||
|
|
**SPEC 영역 (우측):**
|
||
|
|
|
||
|
|
| 항목 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| `UL` | 상한 규격값 (예: `1.00`) 볼드 |
|
||
|
|
| `LL` | 하한 규격값 (예: `-1.00`) 볼드 |
|
||
|
|
| 갱신 시점 | Parameters에서 저장 시 즉시 반영 |
|
||
|
|
|
||
|
|
#### ⑤ 판정 (Row 4) - **두 번째로 큰 영역**
|
||
|
|
|
||
|
|
| 항목 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 라벨 | `판정` (볼드) |
|
||
|
|
| 값 | **OK** 또는 **NG** (대형 볼드) |
|
||
|
|
| OK 표시 | 녹색 텍스트 + 연녹색 배경으로 가시성 극대화 |
|
||
|
|
| NG 표시 | 빨간색 텍스트 + 연빨간색 배경으로 가시성 극대화 |
|
||
|
|
|
||
|
|
> **판정 기준**: `SPEC LL ≤ 측정값 ≤ SPEC UL` → **OK**, 그 외 → **NG**
|
||
|
|
|
||
|
|
#### ⑥ 진행 메시지 (Row 5)
|
||
|
|
|
||
|
|
| 항목 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 라벨 | `진행 메시지` (연파랑 배경) |
|
||
|
|
| 값 | 현재 시험 단계를 나타내는 파란색 볼드 텍스트 |
|
||
|
|
|
||
|
|
표시되는 메시지 목록:
|
||
|
|
|
||
|
|
| 메시지 | 의미 |
|
||
|
|
|--------|------|
|
||
|
|
| `시험 시작` | DIO 시작 신호 감지, 시험 프로세스 시작 |
|
||
|
|
| `대기중` | 다른 채널이 시험 중이어서 순서 대기 |
|
||
|
|
| `센서 정보 읽는 중` | 4251 보드를 통해 제품 ID 판독 중 |
|
||
|
|
| `LEAK 시험중` | Sentinel C28 센서의 측정 결과 대기 중 |
|
||
|
|
| `시험 완료` | 판정 완료 및 결과 출력 완료 |
|
||
|
|
| `오류 발생` | 시험 중 오류 발생 (상세 내용은 오류 메시지 참조) |
|
||
|
|
| `ID 테스트 완료` | 수동 ID 테스트 정상 완료 |
|
||
|
|
| `ID 테스트 실패` | 수동 ID 테스트 실패 |
|
||
|
|
| `통신 대기 중` | 통신 설정 변경 후 재연결 대기 |
|
||
|
|
|
||
|
|
#### ⑦ 오류 메시지 (Row 6)
|
||
|
|
|
||
|
|
| 항목 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 라벨 | `오류 메시지` (연주황 배경, 갈색 텍스트) |
|
||
|
|
| 값 | 오류 내용 (빨간색 볼드). 스크롤 가능 |
|
||
|
|
| 특징 | 읽기 전용 텍스트 박스, 텍스트 줄바꿈 자동, 세로 스크롤바 |
|
||
|
|
| 초기화 시점 | 새 시험 시작 시 자동 초기화 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3.4 SPEC 교차 검증 경고
|
||
|
|
|
||
|
|
프로그램의 판정 결과(SPEC UL/LL 기준)와 Sentinel C28 센서의 **자체 판정 결과**가 서로 다를 경우:
|
||
|
|
|
||
|
|
1. 해당 채널의 **오류 메시지** 영역에 `SPEC 불일치 - 프로그램: OK, 센서: R` 등의 메시지가 표시됩니다.
|
||
|
|
2. **팝업 경고 대화상자**가 표시됩니다: "프로그램 스팩과 센서의 스팩이 서로 맞지 않습니다."
|
||
|
|
|
||
|
|
> **조치**: 센서 측의 SPEC 설정과 프로그램의 SPEC UL/LL 설정이 동일한지 확인하세요.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3.5 하단 메뉴 바
|
||
|
|
|
||
|
|
프로그램 최하단의 연회색 배경 영역입니다. 5개의 버튼이 좌측부터 수평으로 배치됩니다.
|
||
|
|
<img src="./Pasted image 20260624104445.png" alt="Pasted image 20260624104445.png" />
|
||
|
|
|
||
|
|
| 순서 | BUTTON | 부제 | 동작 | 동작 방식 |
|
||
|
|
|------|------------|------|------|----------|
|
||
|
|
| 1 | **Data** | (측정 데이터) | 검사 기록 조회 화면 전환 | 토글 (다시 클릭 시 Home으로 복귀) |
|
||
|
|
| 2 | **Parameters** | (시험 설정) | 시험 설정 팝업 창 열기 | 모달 팝업 (설정 후 자동 닫힘) |
|
||
|
|
| 3 | **Comm. Settings** | (통신 설정) | 통신 설정 팝업 창 열기 | 모달 팝업 (설정 후 자동 닫힘) |
|
||
|
|
| 4 | **ID Test (L)** | (좌측 ID 테스트) | 좌측 채널 센서 ID 수동 판독 | 즉시 실행 (파란색 텍스트) |
|
||
|
|
| 5 | **ID Test (R)** | (우측 ID 테스트) | 우측 채널 센서 ID 수동 판독 | 즉시 실행 (파란색 텍스트) |
|
||
|
|
|
||
|
|
### 버튼 스타일
|
||
|
|
- 배경: 연회색, 마우스 오버 시 시각적 피드백을 위해 약간 어둡게 변함
|
||
|
|
- 테두리: 회색
|
||
|
|
- 텍스트: 볼드 (부제는 일반 텍스트)
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 4. 통신 설정 (Comm. Settings)
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
하단 메뉴에서 **Comm. Settings (통신 설정)** 버튼 클릭 시 열리는 **모달 팝업 창**입니다.
|
||
|
|
<img src="./Pasted image 20260624104506.png" alt="Pasted image 20260624104506.png" />
|
||
|
|
## 4.1 창 구성
|
||
|
|
|
||
|
|
| 속성 | 값 |
|
||
|
|
|------|-----|
|
||
|
|
| 창 크기 | 고정 (크기 변경 불가) |
|
||
|
|
| 위치 | 메인 창 중앙에 정렬되어 표시 |
|
||
|
|
| 타입 | 모달 (이 창이 열려있으면 메인 창 조작 불가) |
|
||
|
|
|
||
|
|
## 4.2 4251 보드 설정 (좌측 영역)
|
||
|
|
|
||
|
|
| 항목 | UI 타입 | 선택 가능 값 | 기본값 | 설명 |
|
||
|
|
|------|---------|-------------|--------|------|
|
||
|
|
| **4251 BaudRate** | 드롭다운 | 9600 / 19200 / 38400 / 115200 | `115200` | 4251 보드 통신 속도. 보드 설정과 일치해야 함 |
|
||
|
|
| **4251 Port** | 드롭다운 | 시스템 감지 COM 포트 목록 | `COM3` | 4251 보드가 연결된 시리얼 포트 |
|
||
|
|
|
||
|
|
## 4.3 Sentinel C28 설정 (우측 영역)
|
||
|
|
|
||
|
|
| 항목 | UI 타입 | 선택 가능 값 | 기본값 | 설명 |
|
||
|
|
|------|---------|-------------|--------|------|
|
||
|
|
| **Sensor BaudRate** | 드롭다운 | 9600 / 19200 / 38400 / 115200 | `9600` | C28 센서 통신 속도. 센서 설정과 일치해야 함 |
|
||
|
|
| **Sensor Port** | 드롭다운 | 시스템 감지 COM 포트 목록 | `COM1` | C28 센서가 연결된 시리얼 포트 |
|
||
|
|
|
||
|
|
## 4.4 버튼 설명
|
||
|
|
|
||
|
|
| 버튼 | 특징 | 동작 |
|
||
|
|
|------|------|------|
|
||
|
|
| **설정 저장** | 녹색 계열 | config.xml에 저장 → 기존 연결 해제 → 새 설정으로 재연결 → "통신 설정이 저장되었습니다." 메시지 → 창 닫힘 |
|
||
|
|
| **닫기** | 회색 계열 | 변경 사항 저장하지 않고 창 닫기 |
|
||
|
|
|
||
|
|
## 4.5 저장 시 내부 동작 순서
|
||
|
|
|
||
|
|
1. 현재 선택된 값을 `config.xml`에 저장
|
||
|
|
2. 기존 Sentinel C28 시리얼 연결 해제
|
||
|
|
3. 기존 4251 보드 시리얼 연결 해제
|
||
|
|
4. 시험 프로세스 스레드 종료
|
||
|
|
5. 새 설정값으로 Sentinel C28 재연결
|
||
|
|
6. 새 설정값으로 4251 보드 재연결
|
||
|
|
7. 시험 프로세스 스레드 재시작
|
||
|
|
|
||
|
|
> **⚠️ 주의**: COM 포트를 동일하게 설정하면 충돌이 발생합니다. 4251 보드와 C28 센서는 반드시 다른 포트를 사용하세요.
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 5. 시험 설정 (Parameters)
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
하단 메뉴에서 **Parameters (시험 설정)** 버튼 클릭 시 열리는 **모달 팝업 창**입니다.
|
||
|
|
<img src="./Pasted image 20260624104531.png" alt="Pasted image 20260624104531.png" />
|
||
|
|
## 5.1 창 구성
|
||
|
|
|
||
|
|
| 속성 | 값 |
|
||
|
|
|------|-----|
|
||
|
|
| 창 크기 | 고정 (크기 변경 불가) |
|
||
|
|
| 위치 | 메인 창 중앙에 정렬되어 표시 |
|
||
|
|
| 타입 | 모달 |
|
||
|
|
|
||
|
|
## 5.2 설정 항목
|
||
|
|
|
||
|
|
| 항목 | UI 타입 | 입력 형식 | 기본값 | 설명 |
|
||
|
|
|------|---------|----------|--------|------|
|
||
|
|
| **SPEC UL (sccm)** | 텍스트 입력 | 소수점 숫자 | `1.00` | 누설 상한 규격값. 이 값 이하일 때 OK |
|
||
|
|
| **SPEC LL (sccm)** | 텍스트 입력 | 소수점 숫자 | `-1.00` | 누설 하한 규격값. 이 값 이상일 때 OK |
|
||
|
|
|
||
|
|
> **입력 팁**: 소수점 2자리까지 입력합니다 (예: `1.50`, `-0.80`). 정수도 입력 가능합니다 (예: `2`).
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
## 5.3 판정 로직 상세
|
||
|
|
|
||
|
|
* **합격 판정 기준**: `SPEC LL ≤ 측정값 ≤ SPEC UL`
|
||
|
|
* **불합격 판정 기준**: `측정값 < SPEC LL` 또는 `측정값 > SPEC UL`
|
||
|
|
|
||
|
|
**예시**:
|
||
|
|
|
||
|
|
| SPEC LL | SPEC UL | 측정값 | 판정 |
|
||
|
|
| :---: | :---: | :---: | :---: |
|
||
|
|
| -1.00 | 1.00 | 0.523 | ✅ OK |
|
||
|
|
| -1.00 | 1.00 | 1.200 | ❌ NG |
|
||
|
|
| -1.00 | 1.00 | -1.500 | ❌ NG |
|
||
|
|
| -1.00 | 1.00 | -1.00 | ✅ OK (경계값 포함) |
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
## 5.4 버튼 설명
|
||
|
|
|
||
|
|
| 버튼 | 동작 |
|
||
|
|
|------|------|
|
||
|
|
| **설정 저장** | config.xml에 저장 → 메인 화면의 SPEC 표시 즉시 갱신 → "파라미터 설정이 저장되었습니다." 메시지 → 창 닫힘 |
|
||
|
|
| **닫기** | 변경 사항 저장하지 않고 창 닫기 |
|
||
|
|
|
||
|
|
> **참고**: SPEC 값은 좌/우 양쪽 채널에 **공통으로 적용**됩니다. 채널별 개별 설정은 지원하지 않습니다.
|
||
|
|
|
||
|
|
> **참고**: SPEC 값 변경 후 저장하면, 이미 진행 중인 시험에는 영향을 주지 않으며, 다음 시험부터 새 값이 적용됩니다.
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 6. 측정 데이터 조회 (Data View)
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
하단 메뉴에서 **Data (측정 데이터)** 버튼을 클릭하면 표시됩니다. 다시 클릭하면 메인 화면으로 복귀합니다.
|
||
|
|
<img src="./Pasted image 20260624104558.png" alt="Pasted image 20260624104558.png" />
|
||
|
|
## 6.1 화면 구성
|
||
|
|
|
||
|
|
## 6.2 필터 조건 상세
|
||
|
|
|
||
|
|
### 1행: 공통 기본 필터
|
||
|
|
|
||
|
|
| 항목 | UI 타입 | 기본값 | 설명 |
|
||
|
|
|------|---------|--------|------|
|
||
|
|
| **조회 기간** | DatePicker (달력) x 2 | 오늘로부터 7일 전 ~ 오늘 | 조회 대상 날짜 범위 설정 (달력 확대 표시 적용) |
|
||
|
|
| **판정 결과** | 드롭다운 ComboBox | `[전체]` / `OK` / `NG` | 판정 결과에 따른 필터링 (기본값: 전체) |
|
||
|
|
|
||
|
|
### 2행: 상세 검색 필터 (DB 스키마 필드 교차 검색)
|
||
|
|
|
||
|
|
| 항목 | UI 타입 | 설명 | 기본값 |
|
||
|
|
|------|---------|------|--------|
|
||
|
|
| **ID 검색** | TextBox (텍스트 입력) | `IC_SN` 또는 `PCB_Barcode` 컬럼에 대한 부분 일치 (LIKE) 검색 | (빈 값 = 필터 제외) |
|
||
|
|
| **작업자** | TextBox (텍스트 입력) | 작업자 ID (`Operator`) 컬럼에 대한 부분 일치 검색 | (빈 값 = 필터 제외) |
|
||
|
|
| **Lot No** | TextBox (텍스트 입력) | 랏 번호 (`Lot_No`) 컬럼에 대한 부분 일치 검색 | (빈 값 = 필터 제외) |
|
||
|
|
| **모델** | TextBox (텍스트 입력) | 모델명 (`Model`) 컬럼에 대한 부분 일치 검색 | (빈 값 = 필터 제외) |
|
||
|
|
|
||
|
|
## 6.3 조회 및 취소 버튼
|
||
|
|
|
||
|
|
| 버튼 | 색상 | 동작 |
|
||
|
|
|------|------|------|
|
||
|
|
| **Search** | 파란색 계열 | 설정된 2행의 모든 필터 조건으로 로컬 로그 CSV 백업 파일을 부분일치 검색하여 그리드에 표시합니다. (안정성을 위해 DB 접속 조회가 아닌 로컬 파일 조회로 작동합니다.) |
|
||
|
|
| **Cancel (취소)** | 빨간색 계열 | 조회 중일 때 로딩 화면 내부에 나타나며, 진행 중인 파일 검색 작업을 즉시 중단하고 화면을 복귀시킵니다. |
|
||
|
|
|
||
|
|
### Search 버튼 동작 상세
|
||
|
|
1. 설정된 조회 기간 날짜를 직접 일자별로 조합하여 해당하는 일일 로그 CSV 파일만 콕 집어 정밀 탐색합니다. (전체 디렉토리 풀 스캔 차단으로 조회 속도가 매우 빠릅니다.)
|
||
|
|
2. 검색 조건(판정, ID, 작업자, Lot No, 모델)에 맞는 대상을 인메모리 부분일치 검색 처리합니다. (과거 구형 8개 컬럼 포맷 파일도 하위 호환되어 정상 파싱됩니다.)
|
||
|
|
3. 검색 결과가 없으면 "해당 조건의 데이터가 없습니다." 알림 표시.
|
||
|
|
|
||
|
|
### 조회 중 로딩 및 Cancel 버튼 동작 상세
|
||
|
|
1. Search 버튼 클릭 시 화면 전체에 "Searching Logs..." 라는 반투명 어두운 로딩 오버레이가 활성화되어 작업 중임을 시각적으로 나타냅니다.
|
||
|
|
2. 데이터가 많아 조회가 오래 걸릴 경우 로딩 오버레이의 **Cancel (취소)** 버튼을 누르면 즉시 조회가 중단되고, "조회가 취소되었습니다." 알림과 함께 메인 화면으로 안전하게 복귀합니다.
|
||
|
|
|
||
|
|
## 6.4 데이터 그리드 컬럼 (DB EOL 스키마 표준 규격)
|
||
|
|
|
||
|
|
| 컬럼 헤더명 | 바인딩 프로퍼티 | 정렬 | 설명 |
|
||
|
|
|------|------|------|------|
|
||
|
|
| **IC_SN** | `IcSn` | 좌측 | 제품 고유 IC SN 시리얼 번호 (PK/FK) |
|
||
|
|
| **PCB_Barcode** | `PcbBarcode` | 좌측 | PCB 바코드 고유 식별 정보 (UK) |
|
||
|
|
| **Maker** | `Maker` | 좌측 | 로그인 시 입력된 제조사명 |
|
||
|
|
| **Model** | `Model` | 좌측 | 로그인 시 입력된 검사 모델명 |
|
||
|
|
| **Variant_1** | `Variant1` | 좌측 | 로그인 시 입력된 세부 파생 모델 1 |
|
||
|
|
| **Variant_2** | `Variant2` | 좌측 | 로그인 시 입력된 세부 파생 모델 2 |
|
||
|
|
| **Operator** | `Operator` | 좌측 | 작업 진행자 사용자 ID |
|
||
|
|
| **Production_Date** | `ProductionDate` | 좌측 | 검사 수행 및 완료 일시 (yyyy-MM-dd HH:mm:ss) |
|
||
|
|
| **Line** | `Line` | 좌측 | 로그인 공정 작업 라인 |
|
||
|
|
| **Lot_No** | `LotNo` | 좌측 | 생산 Lot 번호 |
|
||
|
|
| **Jig_No** | `JigNo` | 좌측 | 사용 지그(Jig) 번호 |
|
||
|
|
| **Channel** | `Channel` | 좌측 | 검사 채널 (`LEFT` 또는 `RIGHT`) |
|
||
|
|
| **Spec_UL** | `SpecUL` | 좌측 | 누설 상한 규격값 (sccm) |
|
||
|
|
| **Spec_LL** | `SpecLL` | 좌측 | 누설 하한 규격값 (sccm) |
|
||
|
|
| **Leak_Value** | `MeasuredValue` | **우측** | 측정된 누설 리크량 (**볼드 표시**) |
|
||
|
|
| **Result** | `Judgment` | **중앙** | 최종 판정 결과 (`OK` 초록 / `NG` 빨강 볼드 강조) |
|
||
|
|
|
||
|
|
### 그리드 스타일
|
||
|
|
- 격자선: 수평/수직 연회색 격자선 표시
|
||
|
|
- 홀수 행 배경: 흰색, 짝수 행 배경: 연회색 배경으로 행 식별 편의 제공
|
||
|
|
- 선택된 행: 연파랑 배경에 파란색 텍스트로 강조
|
||
|
|
- 컬럼 헤더 클릭 시 해당 열 기준 오름차순/내림차순 정렬 가능 (컬럼 순서 변경 불가)
|
||
|
|
- 최소 50행이 항상 표시됩니다 (데이터가 적어도 격자 형태 유지를 위해 빈 행으로 채워짐)
|
||
|
|
|
||
|
|
## 6.5 화면 닫기
|
||
|
|
|
||
|
|
| 방법 | 설명 |
|
||
|
|
|------|------|
|
||
|
|
| 하단 **Close** 버튼 클릭 | 메인 화면으로 복귀 |
|
||
|
|
| 하단 메뉴 **Data** 버튼 재클릭 | 토글 동작으로 메인 화면으로 복귀 |
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 7. 자동 시험 프로세스
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7.1 개요
|
||
|
|
|
||
|
|
자동 시험은 DIO 시작 신호(LEFT_START 또는 RIGHT_START)에 의해 트리거되며, 7단계로 진행됩니다. 좌/우 채널은 각각 독립적인 백그라운드 스레드에서 실행되지만, **세마포어 잠금**을 통해 동시 실행은 방지됩니다.
|
||
|
|
|
||
|
|
## 7.2 전체 프로세스 흐름도
|
||
|
|
|
||
|
|
<div style="border-left: 3px solid #1e3799; padding-left: 20px; margin: 25px auto; max-width: 600px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; page-break-inside: avoid; font-size: 9pt; line-height: 1.5;">
|
||
|
|
<!-- Trigger -->
|
||
|
|
<div style="margin-bottom: 15px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
|
||
|
|
<div style="font-weight: bold; color: #2f3542;">DIO 시작 신호 감지 <span style="font-weight: normal; font-size: 8pt; color: #747d8c;">(LEFT_START 또는 RIGHT_START: OFF➔ON)</span></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Semaphore -->
|
||
|
|
<div style="margin-bottom: 20px; position: relative; background-color: #f1f2f6; padding: 10px; border-radius: 4px; border-left: 3px solid #f6b93b;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 14px; width: 10px; height: 10px; background-color: #f6b93b; border-radius: 50%;"></span>
|
||
|
|
<strong>세마포어 잠금 대기</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• 잠금 불가 시: "대기중" 메시지 표시 후 대기<br>
|
||
|
|
• 잠금 획득 시: 다음 단계로 진행 (좌/우 채널 동시 시험 방지)
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Step 1 -->
|
||
|
|
<div style="margin-bottom: 15px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #1e3799;">1단계: 시험 시작 (초기화)</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• OK/NG DIO 출력 초기화 (OFF)<br>
|
||
|
|
• 메인 화면 결과 표시 초기화 및 시작 시간 갱신<br>
|
||
|
|
• Sentinel C28 LEAK 센서 수신 이벤트 버퍼 초기화
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Step 2 -->
|
||
|
|
<div style="margin-bottom: 15px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #1e3799;">2단계: 센서 정보 읽기 (ID 판독)</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• 4251 보드를 통해 제품 ID 센서에서 16자리 ID 판독<br>
|
||
|
|
• <span style="color: #ff4757; font-weight: bold;">[실패 시]</span> "ID 읽기 실패" 오류 출력 후 NG 판정 조기 종료 (DB 비동기 저장)
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Step 3 -->
|
||
|
|
<div style="margin-bottom: 15px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #1e3799;">3단계: LEAK 시험 수행 (계측)</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• 화면에 "LEAK 시험중" 표시<br>
|
||
|
|
• Sentinel C28 센서의 최종 압력 누설 측정 결과 대기 (최대 30초)<br>
|
||
|
|
• <span style="color: #ff4757; font-weight: bold;">[타임아웃]</span> "Sentinel C28 통신 타임아웃" 오류 후 NG 판정 종료
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Step 4 -->
|
||
|
|
<div style="margin-bottom: 15px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #1e3799;">4단계: 합격 판정</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• <span style="font-family: monospace;">SPEC LL ≤ 측정값 ≤ SPEC UL</span> 이면 **OK (합격)**, 범위를 벗어나면 **NG (불합격)**
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Step 5 -->
|
||
|
|
<div style="margin-bottom: 15px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #1e3799;">5단계: SPEC 교차 검증</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• 프로그램(UI) 판정과 센서 자체 판정(OK/A/P vs NG/R/F)을 상호 비교<br>
|
||
|
|
• 불일치 시 `SpecMismatch` 플래그 설정 및 경고 팝업 표시
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Step 6 -->
|
||
|
|
<div style="margin-bottom: 20px; position: relative;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 4px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #1e3799;">6단계: 결과 출력 및 저장</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• 로컬 CSV 로그 파일 기록 및 MSSQL DB에 비동기 저장<br>
|
||
|
|
• 판정 결과에 따른 DIO 하드웨어 출력 (OK 또는 NG 포트 ON)<br>
|
||
|
|
• 메인 화면에 최종 측정값 및 판정 출력 ("시험 완료" 표시)
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- End -->
|
||
|
|
<div style="position: relative; background-color: #f1fff5; padding: 10px; border-radius: 4px; border-left: 3px solid #2ed573;">
|
||
|
|
<span style="position: absolute; left: -26px; top: 14px; width: 10px; height: 10px; background-color: #2ed573; border-radius: 50%;"></span>
|
||
|
|
<strong style="color: #2f855a;">세마포어 잠금 해제</strong>
|
||
|
|
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
|
||
|
|
• 시험 종료 후 잠금 해제 → 대기 중인 채널이 있을 경우 350ms 안정화 대기 후 자동 시작
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
## 7.3 순차 실행 (세마포어 잠금)
|
||
|
|
|
||
|
|
좌/우 채널은 **동시에 시험을 수행할 수 없습니다**. 이는 하드웨어 통신 충돌을 방지하기 위함입니다.
|
||
|
|
|
||
|
|
| 상황 | 동작 |
|
||
|
|
|------|------|
|
||
|
|
| 한 채널만 시작 신호 | 즉시 시험 시작 |
|
||
|
|
| 양쪽 동시 시작 신호 | 먼저 잠금을 획득한 채널이 시험 진행, 다른 채널은 "대기중" 표시 |
|
||
|
|
| 시험 완료 후 | 대기 중인 채널이 자동으로 시험 시작 (350ms 안정화 대기 후) |
|
||
|
|
|
||
|
|
> **참고**: 하드웨어 통신 안정화를 위해, 이전 채널 시험 종료 후 **350ms의 여유 시간**이 자동으로 적용됩니다.
|
||
|
|
|
||
|
|
## 7.4 타임아웃 처리
|
||
|
|
|
||
|
|
Sentinel C28 센서에서 30초 이내에 응답이 없으면:
|
||
|
|
|
||
|
|
1. "Sentinel C28 통신 타임아웃" 오류 메시지 표시 (DB 저장 실패 시 "DB 저장 실패"도 오류 메시지에 추가 표시)
|
||
|
|
2. 해당 채널 DIO `NG` 출력 ON
|
||
|
|
3. 측정값 `0.0000`, 판정 `NG`, 센서판정 `T/O` (Timeout)로 기록
|
||
|
|
4. CSV 로그 파일 및 MSSQL 데이터베이스에 NG 결과 비동기 기록
|
||
|
|
|
||
|
|
## 7.5 C28 센서 결과 채널 라우팅
|
||
|
|
|
||
|
|
Sentinel C28 센서에서 수신한 데이터는 채널 번호(ChannelNo)로 구분됩니다:
|
||
|
|
|
||
|
|
| 채널 번호 | 대상 |
|
||
|
|
|----------|------|
|
||
|
|
| `C01` 또는 `1` | LEFT 채널 |
|
||
|
|
| `C02` 또는 `2` | RIGHT 채널 |
|
||
|
|
| 채널 번호 없음 | 현재 활성화된(시험 중인) 채널로 자동 할당 |
|
||
|
|
|
||
|
|
## 7.6 ID 수동 테스트
|
||
|
|
|
||
|
|
하단 메뉴의 **ID Test (L)** 또는 **ID Test (R)** 버튼으로 DIO 시작 신호 없이 센서 ID 판독만 수행할 수 있습니다.
|
||
|
|
|
||
|
|
### 실행 흐름
|
||
|
|
1. 세마포어 잠금 획득 (다른 채널 시험 중이면 대기)
|
||
|
|
2. 결과 표시 초기화
|
||
|
|
3. 500ms 대기 (UI 피드백용)
|
||
|
|
4. "센서 정보 읽는 중" 메시지 표시
|
||
|
|
5. 4251 보드를 통해 제품 ID 판독
|
||
|
|
6. 성공 시: ID 표시 + "ID 테스트 완료"
|
||
|
|
7. 실패 시: ID를 "-"로 표시 + "ID 테스트 실패"
|
||
|
|
8. 세마포어 잠금 해제
|
||
|
|
|
||
|
|
> **용도**: 설치 후 하드웨어 연결 상태 확인, 디버깅 시 활용합니다. LEAK 시험(3~6단계)은 수행하지 않습니다.
|
||
|
|
|
||
|
|
## 7.7 SPEC 교차 검증 및 판정 저장 기준
|
||
|
|
|
||
|
|
시험 과정에서 프로그램(UI) 판정과 C28 센서 자체의 판정이 불일치하는 경우, 데이터베이스 및 로그 저장의 기준은 다음과 같습니다.
|
||
|
|
|
||
|
|
### 저장 기준 요약
|
||
|
|
* **최종 저장 판정 (Result)**: C28 센서 자체의 판정값과 무관하게, 항상 **프로그램(UI) 판정 기준(`programJudgment`)**으로 데이터베이스 및 로그에 저장됩니다.
|
||
|
|
* **동작 예시**: UI 상으로 합격(`OK`)이지만 C28 센서 자체적으로는 불합격(`NG`/`R`)인 경우, 최종 DB(`Result` 컬럼) 및 CSV 로그에는 **`OK` (합격)**로 저장됩니다.
|
||
|
|
|
||
|
|
### 교차 검증 실패 시의 동작 (Spec Mismatch)
|
||
|
|
* 프로그램 판정과 센서 자체 판정이 다르면 `specMismatch` 플래그가 `true`로 설정됩니다.
|
||
|
|
* 불일치 발생 시 콘솔 로그에 경고(`[TestProcess] {side} SPEC Mismatch!`)를 출력하고 UI 완료 이벤트 인자로 전달되지만, **DB에 저장되는 최종 판정 결과(`Result`)에는 영향을 미치지 않고 프로그램 판정값을 유지**합니다.
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 8. 로그 및 데이터 관리
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8.1 검사 데이터 로그 (CSV)
|
||
|
|
|
||
|
|
### 기본 정보
|
||
|
|
|
||
|
|
| 항목 | 내용 |
|
||
|
|
|------|------|
|
||
|
|
| **저장 위치** | `C:\ProgramData\LeakTest\Logs\yyyy-MM-dd.csv` |
|
||
|
|
| **파일 형식** | CSV (UTF-8 인코딩) |
|
||
|
|
| **파일 생성** | 날짜별 자동 생성 (해당 날짜 첫 시험 시) |
|
||
|
|
| **데이터 추가** | 매 시험 완료 시 자동으로 해당 날짜 파일에 1행 추가 |
|
||
|
|
|
||
|
|
### CSV 헤더 및 컬럼
|
||
|
|
|
||
|
|
```
|
||
|
|
IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line,Lot_No,Jig_No,Channel,Spec_UL,Spec_LL,Leak_Value,Result
|
||
|
|
```
|
||
|
|
|
||
|
|
| 컬럼 | 예시 | 설명 |
|
||
|
|
|------|------|------|
|
||
|
|
| `IC_SN` | `260508A00123B01C` | 제품 고유 시리얼 번호 (PK/FK) |
|
||
|
|
| `PCB_Barcode` | `260508A00123B01C` | PCB 바코드 고유 식별 정보 (UK) |
|
||
|
|
| `Maker` | `Hyundai` | 메이커 정보 |
|
||
|
|
| `Model` | `NE1aW` | 모델 정보 |
|
||
|
|
| `Variant_1` | `PT` | 변형1 정보 |
|
||
|
|
| `Variant_2` | `SENSOR` | 변형2 정보 |
|
||
|
|
| `Operator` | `op001` | 작업자 ID |
|
||
|
|
| `Production_Date` | `2026-05-08 10:30:15` | 검사 수행 일시 |
|
||
|
|
| `Line` | `L1` | 작업 라인 번호 |
|
||
|
|
| `Lot_No` | `LOT001` | Lot 번호 |
|
||
|
|
| `Jig_No` | `JIG01` | 지그 번호 |
|
||
|
|
| `Channel` | `LEFT` | 검사 채널 (LEFT 또는 RIGHT) |
|
||
|
|
| `Spec_UL` | `1.00` | 규격 상한값 |
|
||
|
|
| `Spec_LL` | `-1.00` | 규격 하한값 |
|
||
|
|
| `Leak_Value` | `0.5234` | 측정된 릭 측정값 (소수점 4자리) |
|
||
|
|
| `Result` | `OK` | 최종 판정 결과 (OK 또는 NG) |
|
||
|
|
|
||
|
|
### CSV 예시
|
||
|
|
```csv
|
||
|
|
IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line,Lot_No,Jig_No,Channel,Spec_UL,Spec_LL,Leak_Value,Result
|
||
|
|
260508A00123B01C,260508A00123B01C,Hyundai,NE1aW,PT,SENSOR,op001,2026-05-08 10:30:15,L1,LOT001,JIG01,LEFT,1.00,-1.00,0.5234,OK
|
||
|
|
260508A00456D02E,260508A00456D02E,Hyundai,NE1aW,PT,SENSOR,op002,2026-05-08 10:30:45,L1,LOT001,JIG01,RIGHT,1.00,-1.00,1.2000,NG
|
||
|
|
```
|
||
|
|
|
||
|
|
> **참고**: 타임아웃 발생 시에도 측정값 `0.0000`, 판정 `NG`로 로그에 기록됩니다.
|
||
|
|
|
||
|
|
> **참고**: 프로그램은 구형 8개 컬럼 포맷(`Date,Time,ID,Channel,SpecUL,SpecLL,Value,Judgment`)의 로그 파일에 대해서도 컬럼 크기를 기준으로 자동 감지 및 파싱(하위 호환성)을 수행합니다.
|
||
|
|
|
||
|
|
> **참고**: CSV 값에 쉼표, 따옴표, 줄바꿈이 포함된 경우 자동으로 이스케이프 처리됩니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8.2 시스템 로그
|
||
|
|
|
||
|
|
### 기본 정보
|
||
|
|
|
||
|
|
| 항목 | 내용 |
|
||
|
|
|------|------|
|
||
|
|
| **저장 위치** | `C:\ProgramData\LeakTest\Logs\yyyy-MM-dd_system.log` |
|
||
|
|
| **파일 형식** | 텍스트 파일 (UTF-8 인코딩) |
|
||
|
|
| **내용** | 통신 오류, 시스템 이벤트 등 |
|
||
|
|
|
||
|
|
### 로그 형식
|
||
|
|
```
|
||
|
|
[HH:mm:ss.fff] [TAG] 메시지 내용
|
||
|
|
```
|
||
|
|
|
||
|
|
### 예시
|
||
|
|
```
|
||
|
|
[10:30:00.123] [SYSTEM] 프로그램 시작
|
||
|
|
[10:30:01.456] [COMM] Sentinel C28 포트 연결 성공 (COM1)
|
||
|
|
[10:35:15.789] [ERROR] Sentinel C28 통신 타임아웃
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8.3 설정 파일
|
||
|
|
|
||
|
|
### config.xml
|
||
|
|
|
||
|
|
| 항목 | 내용 |
|
||
|
|
|------|------|
|
||
|
|
| **위치** | 프로그램 실행 폴더 |
|
||
|
|
| **생성** | 최초 실행 시 기본값으로 자동 생성 |
|
||
|
|
| **수정** | Comm. Settings 또는 Parameters에서 저장 시 갱신 |
|
||
|
|
|
||
|
|
```xml
|
||
|
|
<AppConfig>
|
||
|
|
<SensorPort>COM1</SensorPort>
|
||
|
|
<SensorBaudRate>9600</SensorBaudRate>
|
||
|
|
<Board4251Port>COM3</Board4251Port>
|
||
|
|
<Board4251BaudRate>115200</Board4251BaudRate>
|
||
|
|
<Board4251Timeout>5000</Board4251Timeout>
|
||
|
|
<SpecUL>1.00</SpecUL>
|
||
|
|
<SpecLL>-1.00</SpecLL>
|
||
|
|
</AppConfig>
|
||
|
|
```
|
||
|
|
|
||
|
|
| 설정 키 | 기본값 | 설정 위치 | 설명 |
|
||
|
|
|---------|--------|----------|------|
|
||
|
|
| `SensorPort` | COM1 | Comm. Settings | C28 센서 COM 포트 |
|
||
|
|
| `SensorBaudRate` | 9600 | Comm. Settings | C28 센서 통신 속도 |
|
||
|
|
| `Board4251Port` | COM3 | Comm. Settings | 4251 보드 COM 포트 |
|
||
|
|
| `Board4251BaudRate` | 115200 | Comm. Settings | 4251 보드 통신 속도 |
|
||
|
|
| `Board4251Timeout` | 5000 | (코드 내 고정) | 4251 보드 응답 대기 시간(ms) |
|
||
|
|
| `SpecUL` | 1.00 | Parameters | 누설 상한 규격값 |
|
||
|
|
| `SpecLL` | -1.00 | Parameters | 누설 하한 규격값 |
|
||
|
|
|
||
|
|
### Database.ini
|
||
|
|
|
||
|
|
| 항목 | 내용 |
|
||
|
|
|------|------|
|
||
|
|
| **위치** | `C:\ProgramData\LeakTest\Database.ini` |
|
||
|
|
| **생성** | 배포 시 기본 포함 및 파일 누락 상태로 기동 시 기본 양식이 자동 생성됨 |
|
||
|
|
| **수정** | 메모장 등의 텍스트 에디터를 통해 연결 주소 및 프로시저 정보 직접 수정 |
|
||
|
|
|
||
|
|
```ini
|
||
|
|
; [데이터베이스 접속 상세 설정]
|
||
|
|
Db_Server=192.168.0.20
|
||
|
|
Db_Name=NE1aW_PT_SENSOR
|
||
|
|
Db_User=sa
|
||
|
|
Db_Password=sa1234
|
||
|
|
|
||
|
|
[Login]
|
||
|
|
Procedure=dbo.CheckOperator
|
||
|
|
ProcessName=EOL
|
||
|
|
OfflinePreview=false
|
||
|
|
```
|
||
|
|
|
||
|
|
| 설정 키 | 예시 | 설명 |
|
||
|
|
|---------|--------|------|
|
||
|
|
| `Db_Server` | 192.168.0.20 | 데이터베이스 서버 IP 주소 또는 호스트명 |
|
||
|
|
| `Db_Name` | NE1aW_PT_SENSOR | 대상 데이터베이스(DB) 이름 |
|
||
|
|
| `Db_User` | sa | 데이터베이스 접속 계정 ID |
|
||
|
|
| `Db_Password` | sa1234 | 데이터베이스 접속 계정 비밀번호 |
|
||
|
|
| `Procedure` | dbo.CheckOperator | 로그인 계정 검증용 저장 프로시저명 |
|
||
|
|
| `ProcessName` | EOL | 검증 공정명 |
|
||
|
|
| `OfflinePreview` | false | true 시 DB 연결 없이 로그인 즉시 성공 (오프라인 모드) |
|
||
|
|
|
||
|
|
### DioConfig.ini
|
||
|
|
|
||
|
|
| 항목 | 내용 |
|
||
|
|
|------|------|
|
||
|
|
| **위치** | `[프로그램 폴더]\Settings\DioConfig.ini` |
|
||
|
|
| **생성** | 최초 실행 시 자동 생성 |
|
||
|
|
| **수정** | 일반적으로 수정 불필요 (하드웨어 변경 시에만) |
|
||
|
|
|
||
|
|
```ini
|
||
|
|
[DIO]
|
||
|
|
CompanyName=ADLink
|
||
|
|
BoardCnt=1
|
||
|
|
|
||
|
|
[BOARD_1]
|
||
|
|
BoardType=PCI_7432
|
||
|
|
BoardNumber=0
|
||
|
|
|
||
|
|
[BOARD_1_IN]
|
||
|
|
0=LEFT_START,1,좌측 시험 시작 신호
|
||
|
|
1=RIGHT_START,1,우측 시험 시작 신호
|
||
|
|
|
||
|
|
[BOARD_1_OUT]
|
||
|
|
0=LEFT_OK,1,좌측 합격 출력
|
||
|
|
1=RIGHT_OK,1,우측 합격 출력
|
||
|
|
2=PC_ON,1,PC 가동 신호
|
||
|
|
3=LEFT_NG,1,좌측 불합격 출력
|
||
|
|
4=RIGHT_NG,1,우측 불합격 출력
|
||
|
|
```
|
||
|
|
|
||
|
|
**INI 포맷 설명**: `비트인덱스=신호명,활성여부,설명`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8.4 파일 관리 주의사항
|
||
|
|
|
||
|
|
| 주의사항 | 설명 |
|
||
|
|
|---------|------|
|
||
|
|
| Logs 폴더 삭제 금지 | 검사 기록이 영구 삭제됩니다 |
|
||
|
|
| CSV 파일 직접 편집 | Excel 등으로 편집 시 인코딩이 변경될 수 있으므로 주의 |
|
||
|
|
| config.xml 직접 편집 | 잘못된 값 입력 시 프로그램 오작동 가능. 프로그램 내 설정 화면 사용 권장 |
|
||
|
|
| 디스크 용량 | 일일 수백 건 검사 기준, 연간 약 50~100MB 정도의 로그가 생성됩니다 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8.5 데이터베이스 데이터 관리 (dbo.EOL)
|
||
|
|
|
||
|
|
매 시험 완료 시 검사 결과 및 로그인 정보가 데이터베이스에 실시간으로 저장(MERGE/UPSERT)됩니다.
|
||
|
|
|
||
|
|
### 데이터베이스 테이블 및 컬럼 매핑
|
||
|
|
|
||
|
|
* **대상 테이블**: `[dbo].[EOL]`
|
||
|
|
* **매핑 상세**:
|
||
|
|
|
||
|
|
| DB 컬럼명 | 데이터 타입 | 매핑되는 C# 데이터 | 비고 |
|
||
|
|
| :--- | :--- | :--- | :--- |
|
||
|
|
| **`IC_SN`** | `NVARCHAR(10)` | 제품의 최종 조합 ID (`inspectData.ProductId`) | **PK / FK** |
|
||
|
|
| **`PCB_Barcode`** | `NVARCHAR(10)` | 고유 식별용 바코드 정보 (`inspectData.ProductId` 매핑) | **UK** |
|
||
|
|
| `Maker` | `NVARCHAR(10)` | 로그인 제조사 정보 (`App.LoginResult.Maker`) | |
|
||
|
|
| `Model` | `NVARCHAR(10)` | 로그인 모델 정보 (`App.LoginResult.Model`) | |
|
||
|
|
| `Variant_1` | `NVARCHAR(10)` | 로그인 변형1 정보 (`App.LoginResult.Variant1`) | |
|
||
|
|
| `Variant_2` | `NVARCHAR(10)` | 로그인 변형2 정보 (`App.LoginResult.Variant2`) | |
|
||
|
|
| `Operator` | `NVARCHAR(10)` | 로그인 검사자 ID (`App.LoginResult.Operator`) | |
|
||
|
|
| `Production_Date` | `DATETIME2(0)` | 검사 수행 일시 (`DateTime.Now`) | |
|
||
|
|
| `Line` | `NVARCHAR(5)` | 로그인 작업 라인 (`App.LoginResult.LineNo`) | |
|
||
|
|
| `Lot_No` | `NVARCHAR(8)` | 로그인 Lot 번호 (`App.LoginResult.LotNo`) | |
|
||
|
|
| `Jig_No` | `NVARCHAR(10)` | 로그인 지그 번호 (`App.LoginResult.JigNo`) | |
|
||
|
|
| `Channel` | `NVARCHAR(5)` | 검사 채널 (`LEFT` / `RIGHT`) | |
|
||
|
|
| `Spec_UL` | `DECIMAL(3,2)` | 규격 상한값 (소수점 2자리) | |
|
||
|
|
| `Spec_LL` | `DECIMAL(3,2)` | 규격 하한값 (소수점 2자리) | |
|
||
|
|
| `Leak_Value` | `DECIMAL(5,4)` | 측정된 릭 값 (소수점 4자리) | |
|
||
|
|
| `Result` | `NVARCHAR(5)` | 최종 판정 결과 (`OK` 또는 `NG`) | |
|
||
|
|
|
||
|
|
<div class="page-break"></div>
|
||
|
|
|
||
|
|
# 9. 오류 대응 및 프로그램 종료
|
||
|
|
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9.1 통신 연결 실패
|
||
|
|
|
||
|
|
프로그램 시작 또는 통신 설정 저장 시 발생할 수 있습니다.
|
||
|
|
|
||
|
|
| 오류 메시지 | 원인 | 조치 방법 |
|
||
|
|
|------------|------|----------|
|
||
|
|
| `Sentinel C28 포트 연결 실패 (COMx)` | C28 센서 미연결, 잘못된 포트, 다른 프로그램이 포트 점유 | ① 케이블 연결 확인 ② 장치 관리자에서 COM 포트 번호 확인 ③ Comm. Settings에서 올바른 포트 선택 후 `설정 저장` |
|
||
|
|
| `4251 보드 포트 연결 실패 (COMx)` | 4251 보드 미연결, 잘못된 포트 | ① 케이블 연결 확인 ② Comm. Settings에서 올바른 포트 선택 후 `설정 저장` |
|
||
|
|
|
||
|
|
> **참고**: 통신 설정을 저장하면 기존 연결을 모두 해제하고 새 설정으로 재연결을 시도합니다. 포트 변경 후 재시작 없이 바로 적용됩니다.
|
||
|
|
|
||
|
|
## 9.2 시험 중 오류
|
||
|
|
|
||
|
|
시험 프로세스 진행 중 발생하는 오류입니다. 메인 화면의 **오류 메시지** 영역에 표시됩니다.
|
||
|
|
|
||
|
|
| 오류 메시지 | 원인 | 조치 방법 |
|
||
|
|
|------------|------|----------|
|
||
|
|
| `Sentinel C28 통신 타임아웃` | 30초 내 C28 센서 응답 없음 | ① 센서 전원 ON 확인 ② 시리얼 케이블 연결 확인 ③ BaudRate 설정 확인 (기본: 9600) |
|
||
|
|
| `통신 실패 (4251 보드 CHx 상태 타임아웃)` | 4251 보드가 응답 시간(15초) 내에 상태 응답을 회신하지 않음 | ① 4251 보드 전원 공급 및 케이블 연결선 확인 ② 통신 노이즈 방지 조치 확인 |
|
||
|
|
| `통신 실패 (4251 보드 CHx 상태 이상 또는 Fail)` | 4251 보드로부터 정상 응답을 받지 못했거나 오류 코드가 반환됨 | ① 하드웨어 오결선 여부 점검 ② 채널 센서 구동 전원 확인 |
|
||
|
|
| `통신 실패 (4251 보드 CHx ID 대기 타임아웃)` | 4251 보드를 통해 제품 ID를 15초 내에 판독하지 못함 | ① 센서가 지그(Jig)에 올바르게 안착되었는지 물리적 확인 ② 접촉 단자 이물질 청소 |
|
||
|
|
| `SPEC 불일치 - 프로그램: OK, 센서: R` | 프로그램 SPEC과 센서 자체 SPEC의 판정이 다름 | ① 프로그램의 SPEC UL/LL 확인 (Parameters) ② C28 센서의 SPEC 설정 확인 ③ 양쪽 설정값 동기화 |
|
||
|
|
| `LEAK 센서 데이터 오류` | C28에서 수신된 데이터 파싱 실패 | ① 센서 통신 상태 확인 ② 케이블 접촉 불량 확인 ③ BaudRate 불일치 확인 |
|
||
|
|
| `DB 저장 실패` | 중앙 MSSQL DB 서버에 검사 데이터를 저장하지 못함 | ① PC 네트워크 케이블 및 통신 연결 확인 ② Database.ini 파일의 접속 정보(IP/비밀번호 등) 확인 ③ 로컬 일일 CSV 로그 파일(`C:\ProgramData\LeakTest\Logs/yyyy-MM-dd.csv`)에 백업이 잘 저장되었는지 확인 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9.3 SPEC 교차 검증 경고 팝업
|
||
|
|
|
||
|
|
프로그램 판정과 센서 판정이 불일치하면 팝업 경고가 표시됩니다:
|
||
|
|
|
||
|
|
```
|
||
|
|
[!] SPEC 교차 검증 경고
|
||
|
|
"프로그램 스팩과 센서의 스팩이 서로 맞지 않습니다."
|
||
|
|
[확인]
|
||
|
|
```
|
||
|
|
|
||
|
|
이 경고는 검사 자체를 중단하지는 않지만, **프로그램의 판정 결과**가 최종 기록에 사용됩니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9.4 DIO 보드 오류
|
||
|
|
|
||
|
|
| 상황 | 프로그램 동작 | 영향 |
|
||
|
|
|------|-------------|------|
|
||
|
|
| PCI-7432 보드 미인식 | **시뮬레이션 모드**로 자동 전환 | DIO 입출력이 동작하지 않음 (실제 입출력 포트 제어 불가) |
|
||
|
|
| 보드 런타임 오류 | 좌/우 채널 오류 메시지에 `[DIO Board Error]` 표시 | 오류 내용에 따라 조치 |
|
||
|
|
|
||
|
|
> **시뮬레이션 모드**: ADLINK 드라이버가 신설되지 않은 개발 환경에서도 프로그램의 나머지 기능(통신 설정, 데이터 조회 등)을 테스트할 수 있도록 자동 전환됩니다.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9.5 일반적인 문제 해결
|
||
|
|
|
||
|
|
| 증상 | 가능한 원인 | 해결 방법 |
|
||
|
|
|------|-----------|----------|
|
||
|
|
| 프로그램 시작 후 양쪽 채널에 오류 메시지 | COM 포트 설정 불일치 | Comm. Settings에서 올바른 포트 선택 후 저장 |
|
||
|
|
| 시험이 시작되지 않음 | DIO 시작 신호 미수신 | 외부 PLC 또는 시작 스위치의 접점 신호 상태 확인 |
|
||
|
|
| "대기중"에서 진행되지 않음 | 다른 채널이 타임아웃 대기 중 | 최대 30초 대기 후 자동 해제. 센서 연결 확인 |
|
||
|
|
| 측정값이 표시되지 않음 | C28 센서 스트리밍 데이터 미수신 | 센서 전원, 케이블, BaudRate 확인 |
|
||
|
|
| COM 포트 목록이 비어있음 | 시리얼 장치 미연결 | USB-시리얼 케이블 연결 확인, 드라이버 설치 확인 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9.6 프로그램 종료
|
||
|
|
|
||
|
|
### 종료 방법
|
||
|
|
|
||
|
|
1. 상단 타이틀 바 우측의 **X (빨간색)** 버튼을 클릭합니다.
|
||
|
|
2. 종료 확인 대화상자가 표시됩니다:
|
||
|
|
|
||
|
|
```
|
||
|
|
[?] 종료 확인
|
||
|
|
"프로그램을 종료하시겠습니까?"
|
||
|
|
[예] [아니오]
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **"예"**를 선택하면 종료, **"아니오"**를 선택하면 취소됩니다.
|
||
|
|
|
||
|
|
### 종료 시 자동 처리 사항
|
||
|
|
|
||
|
|
아래 순서로 자동 정리가 수행됩니다:
|
||
|
|
|
||
|
|
| 순서 | 처리 내용 |
|
||
|
|
|------|----------|
|
||
|
|
| 1 | 시험 프로세스 스레드 종료 (좌/우 모두) |
|
||
|
|
| 2 | 대기 중인 세마포어 해제 |
|
||
|
|
| 3 | DIO 이벤트 구독 해제 |
|
||
|
|
| 4 | C28 센서 이벤트 구독 해제 |
|
||
|
|
| 5 | Sentinel C28 시리얼 통신 연결 해제 |
|
||
|
|
| 6 | 4251 보드 시리얼 통신 연결 해제 |
|
||
|
|
| 7 | DIO `PC_ON` 출력 **OFF** |
|
||
|
|
| 8 | DIO 보드 자원 해제 |
|
||
|
|
| 9 | 타이틀 바 시계 타이머 정지 |
|
||
|
|
|
||
|
|
> **⚠️ 주의**: 시험 진행 중에 프로그램을 종료하면 진행 중인 시험이 **즉시 중단**됩니다. 해당 시험의 결과는 로그에 기록되지 않을 수 있습니다. 가급적 시험이 완료된 후 종료하세요.
|
||
|
|
|
||
|
|
> **참고**: 프로그램 종료 시 현재 설정값은 이미 `config.xml`에 저장되어 있으므로 별도로 저장할 필요가 없습니다. 다음 실행 시 마지막 설정이 자동으로 로드됩니다.
|
||
|
|
|