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