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.
8.6 KiB
8.6 KiB
7. 자동 시험 프로세스
7.1 개요
자동 시험은 DIO 시작 신호(LEFT_START 또는 RIGHT_START)에 의해 트리거되며, 7단계로 진행됩니다. 좌/우 채널은 각각 독립적인 백그라운드 스레드에서 실행되지만, 세마포어 잠금을 통해 동시 실행은 방지됩니다.
7.2 전체 프로세스 흐름도
DIO 시작 신호 감지 (LEFT_START 또는 RIGHT_START: OFF→ON)
│
▼
세마포어 잠금 대기 ──(잠금 불가)──→ "대기중" 메시지 표시
│ │
│ (잠금 획득) │ (다른 채널 완료 후 자동 진행)
▼ ▼
┌──────────────────────────────────────────────────────┐
│ 1단계: 시험 시작 │
│ · OK/NG DIO 출력 초기화 (OFF) │
│ · 메인 화면 결과 표시 초기화 │
│ · 시작 시간 갱신 │
│ · C28 LEAK 센서 수신 이벤트 초기화 │
└──────────────┬───────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────┐
│ 2단계: 센서 정보 읽기 │
│ · 4251 보드를 통해 ZMDI 센서에서 제품 ID 판독 │
│ · ID / LOW ID를 메인 화면에 표시 │
│ · ID 읽기 실패 시: "ID 읽기 실패" 오류 출력 후 │
│ "NG" 판정으로 DB 비동기 저장 및 조기 종료 (Skip) │
│ (DB 저장 실패 시 "DB 저장 실패" 문구 표시) │
└──────────────┬───────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────┐
│ 3단계: LEAK 시험 수행 │
│ · "LEAK 시험중" 메시지 표시 │
│ · Sentinel C28 센서의 최종 결과(Auto Result) 대기 │
│ · 최대 대기 시간: 30초 │
│ · 타임아웃 시: NG 판정 + "Sentinel C28 통신 타임아웃" │
│ (DB 저장 실패 시 "DB 저장 실패" 문구 표시) │
└──────────────┬───────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────┐
│ 4단계: 판정 │
│ · SPEC LL ≤ 측정값 ≤ SPEC UL → OK │
│ · 범위 밖 → NG │
└──────────────┬───────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────┐
│ 5단계: SPEC 교차 검증 │
│ · 프로그램 판정과 센서 자체 판정 비교 │
│ · 센서 판정 정규화: OK/A/P → Accept, NG/R/F → Reject │
│ · 불일치 시: SpecMismatch = true → 팝업 경고 │
└──────────────┬───────────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────┐
│ 6단계: 결과 출력 및 저장 │
│ · CSV 로그 파일에 검사 데이터 기록 │
│ · MSSQL 중앙 데이터베이스 비동기 저장 │
│ · DB 저장 실패 시: 오류 메시지 칸에 "DB 저장 실패" 표시 │
│ · DIO OK 또는 NG 출력 ON │
│ · 메인 화면에 측정값, 판정 결과 표시 │
│ · "시험 완료" 메시지 표시 │
└──────────────────────────────────────────────────────┘
│
▼
세마포어 잠금 해제 → 대기 중인 다른 채널이 있으면 자동 시작
7.3 순차 실행 (세마포어 잠금)
좌/우 채널은 동시에 시험을 수행할 수 없습니다. 이는 하드웨어 통신 충돌을 방지하기 위함입니다.
| 상황 | 동작 |
|---|---|
| 한 채널만 시작 신호 | 즉시 시험 시작 |
| 양쪽 동시 시작 신호 | 먼저 잠금을 획득한 채널이 시험 진행, 다른 채널은 "대기중" 표시 |
| 시험 완료 후 | 대기 중인 채널이 자동으로 시험 시작 (350ms 안정화 대기 후) |
참고: 하드웨어 통신 안정화를 위해, 이전 채널 시험 종료 후 350ms의 여유 시간이 자동으로 적용됩니다.
7.4 타임아웃 처리
Sentinel C28 센서에서 30초 이내에 응답이 없으면:
- "Sentinel C28 통신 타임아웃" 오류 메시지 표시 (DB 저장 실패 시 "DB 저장 실패"도 오류 메시지에 추가 표시)
- 해당 채널 DIO
NG출력 ON - 측정값
0.0000, 판정NG, 센서판정T/O(Timeout)로 기록 - 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 판독만 수행할 수 있습니다.
실행 흐름
- 세마포어 잠금 획득 (다른 채널 시험 중이면 대기)
- 결과 표시 초기화
- 500ms 대기 (UI 피드백용)
- "센서 정보 읽는 중" 메시지 표시
- 4251 보드를 통해 ZMDI 센서 ID 판독
- 성공 시: ID / LOW ID 표시 + "ID 테스트 완료"
- 실패 시: ID를 "-"로 표시 + "ID 테스트 실패"
- 세마포어 잠금 해제
용도: 설치 후 하드웨어 연결 상태 확인, 디버깅 시 활용합니다. 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)에는 영향을 미치지 않고 프로그램 판정값을 유지합니다.