리크 테스트 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.

183 lines
12 KiB

2 months ago
# 7. 자동 시험 프로세스
[← 메뉴얼 목차로 돌아가기](사용자_메뉴얼.md)
---
## 7.1 개요
2 weeks ago
자동 시험은 시작 신호(LEFT_START 또는 RIGHT_START)에 의해 작동하며, 7단계로 진행됩니다. 좌/우 채널은 각각 독립적인 백그라운드 스레드에서 실행되지만, **중복 실행 방지 기능**을 통해 동시 시험은 방지됩니다.
2 months ago
## 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>
2 weeks ago
<div style="font-weight: bold; color: #2f3542;">시작 신호 감지 <span style="font-weight: normal; font-size: 8pt; color: #747d8c;">(좌측/우측 시작 신호 입력 시)</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>
2 weeks ago
<strong>중복 실행 방지 대기</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
2 weeks ago
• 다른 채널이 시험 중인 경우: "대기중" 메시지를 표시하며 순서 대기<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;">
2 weeks ago
• 합격/불합격 신호 출력 초기화 (OFF)<br>
• 메인 화면 결과 표시 초기화 및 시작 시간 갱신<br>
2 weeks ago
• 누설 센서 수신 데이터 초기화
</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>
2 weeks ago
<strong style="color: #1e3799;">2단계: 제품 ID 판독</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
2 weeks ago
• 판독 장치(4251 보드)를 통해 제품 ID 센서에서 16자리 ID 판독<br>
<span style="color: #ff4757; font-weight: bold;">[실패 시]</span> "ID 읽기 실패" 오류 출력 후 시험이 종료되며 결과는 기록 및 저장에서 제외됩니다.
</div>
</div>
2 weeks ago
<!-- Step 3 -->
2 weeks ago
<div style="margin-bottom: 15px; position: relative; background-color: #f8f9fa; padding: 10px; border-radius: 4px; border-left: 3px solid #1e3799;">
<span style="position: absolute; left: -26px; top: 14px; width: 10px; height: 10px; background-color: #1e3799; border-radius: 50%;"></span>
<strong style="color: #1e3799;">3단계: PCB 바코드 데이터베이스 조회</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
2 weeks ago
• 데이터베이스에서 제품 ID(`IC_SN`)에 매칭되는 `PCB_Barcode` 조회 (5초 대기 시간 초과 제한)<br>
<span style="color: #ff4757; font-weight: bold;">[실패/누락 시]</span> "바코드 매핑 실패" 오류 출력 후 즉시 종료되며 결과는 기록 및 저장에서 제외됩니다.
</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>
2 weeks ago
<strong style="color: #1e3799;">4단계: 누설 시험 수행 (계측)</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
2 weeks ago
• 화면에 "LEAK 시험중" 표시<br>
• 누설 센서(Sentinel C28)로부터 측정 결과 수신 대기 (최대 30초)<br>
<span style="color: #ff4757; font-weight: bold;">[시간 초과 시]</span> 통신 시간 초과 오류 발생 및 불합격(NG) 판정으로 자동 종료 (측정값 9.9999로 데이터베이스에 저장)
</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>
2 weeks ago
<strong style="color: #1e3799;">5단계: 합격 판정</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
2 weeks ago
• 규격 하한값 ≤ 측정값 ≤ 규격 상한값 이면 **OK (합격)**, 범위를 벗어나면 **NG (불합격)**로 판정합니다.
</div>
</div>
<!-- Step 6 -->
2 weeks ago
<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;">6단계: 판정 스펙 교차 검증</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
• 프로그램 판정과 센서 자체 판정을 비교 분석합니다.<br>
• 판정이 서로 다를 경우 화면에 경고 창을 표시합니다. (통신 설정에서 알림 창 표시를 끌 수 있습니다.)
</div>
</div>
<!-- Step 7 -->
<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>
2 weeks ago
<strong style="color: #1e3799;">7단계: 결과 출력 및 저장</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
2 weeks ago
• 로컬 CSV 백업 파일 기록 및 데이터베이스에 검사 결과 저장<br>
• 판정 결과에 따라 외부 설비에 출력 신호(OK 또는 NG 포트) 전송<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>
2 weeks ago
<strong style="color: #2f855a;">순서 잠금 해제</strong>
<div style="font-size: 8.5pt; color: #57606f; margin-top: 3px;">
2 weeks ago
• 시험 종료 후 순서 대기가 해제되며, 대기 중이던 다른 채널이 0.35초 대기 후 자동으로 시험을 개시합니다.
</div>
</div>
</div>
2 months ago
2 weeks ago
## 7.3 좌/우 채널 순차 실행 및 대기
2 months ago
2 weeks ago
좌/우 채널은 **동시에 시험을 수행할 수 없습니다**. 이는 하드웨어 통신 간섭 및 충돌을 방지하기 위함입니다.
2 months ago
| 상황 | 동작 |
|------|------|
2 weeks ago
| 한 채널만 시험 시작 신호 발생 | 즉시 시험을 시작합니다. |
| 양쪽 채널 동시 신호 발생 | 먼저 순서를 획득한 채널이 시험을 진행하며, 다른 채널은 "대기중"을 표시하며 대기합니다. |
| 시험 완료 후 | 대기 중이던 채널이 자동으로 시험을 시작합니다. (안정화를 위해 0.35초의 대기 시간이 적용됩니다.) |
> **참고**: 하드웨어 통신 안정화를 위해 이전 채널의 시험 종료 후 **0.35초의 여유 시간**이 자동으로 적용됩니다.
## 7.4 시간 초과 (타임아웃) 처리
누설 센서에서 30초 이내에 계측 결과 응답이 없으면 다음과 같이 처리됩니다.
1. 화면의 오류 메시지 영역에 "통신 시간 초과" 오류 메시지를 표시합니다. (데이터베이스 저장 실패 시 "DB 저장 실패" 사유도 함께 노출)
2. 해당 채널의 불합격(NG) 물리 신호를 내보냅니다.
3. 측정값 `9.9999`, 판정 `NG`로 기록을 생성합니다.
4. 로컬 CSV 로그 파일 및 데이터베이스에 검사 결과를 기록합니다. (단, 이전 단계인 제품 ID 판독에 성공한 상태여야 저장이 이루어집니다.)
2 months ago
2 weeks ago
## 7.5 제품 ID 및 PCB 바코드 연동 예외 처리
2 months ago
2 weeks ago
데이터 일관성과 무결성을 확보하기 위해 제품 식별 정보가 불완전한 상태에서의 데이터 저장을 차단하는 안전 검증 절차가 작동합니다.
2 months ago
2 weeks ago
### 1. 제품 ID(IC_SN) 판독 실패 시
- **동작**: 제품 ID 판독 장치(4251 보드)로부터 16자리 ID 취득을 실패하는 경우 진행 메시지에 `"ID 읽기 실패"`를 표시하고, 해당 채널의 NG 물리 신호를 즉시 출력합니다.
- **저장 제한**: 이 경우에는 로컬 CSV 로그 기록 및 데이터베이스 저장을 **완전히 건너뜁니다**.
2 months ago
2 weeks ago
### 2. PCB 바코드 DB 조회(매핑) 실패 시
- **동작**: 판독 완료 후 데이터베이스 서버에서 `IC_SN`에 해당하는 `PCB_Barcode`를 조회할 때, 정해진 시간(5초) 내에 응답이 없거나 일치하는 데이터가 없는 경우 화면에 `"바코드 매핑 실패"` 관련 오류를 표시하고 NG 신호를 출력합니다.
- **저장 제한**: 이 경우에도 제품 검사 자체를 진행하지 않고 즉시 스킵하며, **데이터베이스 및 로컬 CSV 로그 기록 저장을 건너뜁니다**. (오프라인 모드에서는 임시 바코드 정보를 주입하여 검사 동작을 테스트할 수 있습니다.)
2 months ago
2 weeks ago
## 7.6 누설 센서 측정 결과 채널 분류
2 months ago
2 weeks ago
누설 센서에서 수신한 데이터는 다음 채널 번호 정보를 기준으로 정렬됩니다.
2 months ago
| 채널 번호 | 대상 |
|----------|------|
2 weeks ago
| `C01` 또는 `1` | 좌측(LEFT) 채널 |
| `C02` 또는 `2` | 우측(RIGHT) 채널 |
| 채널 번호 식별 불가 | 현재 활성화되어 시험을 진행 중인 채널로 자동 배정 |
2 months ago
2 weeks ago
## 7.7 ID 수동 테스트
2 months ago
2 weeks ago
하단 메뉴의 **ID Test (L)** 또는 **ID Test (R)** 버튼을 사용하면 시험 시작 신호 없이 센서 ID 판독 동작만 단독으로 수행할 수 있습니다.
2 months ago
### 실행 흐름
2 weeks ago
1. 중복 방지 잠금 획득 (다른 채널이 시험 중인 경우 대기)
2. 결과 표시 초기화 및 0.5초 대기
3. "센서 정보 읽는 중" 메시지 표시 후 ID 판독 시작
4. 성공 시: 판독된 ID 표시 및 "ID 테스트 완료" 메시지 표시
5. 실패 시: ID 영역에 "-" 표시 및 "ID 테스트 실패" 메시지 표시
6. 잠금 해제
2 months ago
2 weeks ago
> **용도**: 장비 설치 후 통신 상태 확인 및 디버깅 시 사용합니다. 실제 누설 시험(압력 계측)은 수행하지 않습니다.
2 weeks ago
## 7.8 측정 판정 및 저장 기준
2 weeks ago
프로그램의 판정 스펙(상하한 규격) 기준과 누설 센서 자체의 내부 스펙 판정 기준이 일치하지 않는 경우, 저장소에는 다음과 같이 저장됩니다.
### 저장 기준 요약
2 weeks ago
* **최종 저장 판정 (Result)**: 센서 자체의 판정값과 무관하게, 항상 **프로그램 화면 판정 기준**으로 데이터베이스 및 로그에 저장됩니다.
* **동작 예시**: 프로그램 판정이 합격(`OK`)이지만 센서 자체의 내부 판정이 불합격(`NG` 등)인 경우에도, 최종 기록 및 CSV에는 **`OK` (합격)**로 기록됩니다.
2 weeks ago
### 판정 스펙 불일치 시의 동작
* 양측의 판정 스펙이 다르면 불일치 로그가 기록되며 화면에 경고 팝업이 출력되지만, **최종 저장되는 판정 결과에는 영향을 미치지 않고 프로그램 판정값을 유지**합니다.
2 months ago
---
[← 이전: 측정 데이터 조회](06_데이터_조회.md) | [다음: 로그 관리 →](08_로그_관리.md)