diff --git a/leak_test_project.Setup/Bundle.wxs b/leak_test_project.Setup/Bundle.wxs index 080a35c..0e4107d 100644 --- a/leak_test_project.Setup/Bundle.wxs +++ b/leak_test_project.Setup/Bundle.wxs @@ -1,5 +1,5 @@ - + @@ -7,7 +7,7 @@ - + diff --git a/leak_test_project.Setup/Product.wxs b/leak_test_project.Setup/Product.wxs index 0f8edbf..f50bca2 100644 --- a/leak_test_project.Setup/Product.wxs +++ b/leak_test_project.Setup/Product.wxs @@ -8,46 +8,74 @@ - + + + + + + + + + + - + - + - + - + + + + + + - + - + - + - + + + + + + + + + + + + + + + diff --git a/leak_test_project/App.xaml.cs b/leak_test_project/App.xaml.cs index 3fc1213..27c2e96 100644 --- a/leak_test_project/App.xaml.cs +++ b/leak_test_project/App.xaml.cs @@ -27,7 +27,7 @@ namespace leak_test_project { string defaultContent = "; =====================================================================\r\n" + - "; Mobi Leak Test System - 데이터베이스 및 로그인 설정 파일 (Database.ini)\r\n" + + "; Leak Test System - 데이터베이스 및 로그인 설정 파일 (Database.ini)\r\n" + "; =====================================================================\r\n" + "\r\n" + "; [데이터베이스 접속 상세 설정]\r\n" + diff --git a/leak_test_project/EOL.ico b/leak_test_project/EOL.ico new file mode 100644 index 0000000..e1a90e8 Binary files /dev/null and b/leak_test_project/EOL.ico differ diff --git a/leak_test_project/MainWindow.xaml b/leak_test_project/MainWindow.xaml index fcf936d..d63ebae 100644 --- a/leak_test_project/MainWindow.xaml +++ b/leak_test_project/MainWindow.xaml @@ -5,7 +5,8 @@ Title="Pressure Leak Inspect System" Height="800" Width="1024" MinWidth="1150" MinHeight="700" WindowState="Maximized" Background="#F0F0F0" WindowStyle="None" - ContentRendered="Window_ContentRendered"> + ContentRendered="Window_ContentRendered" + Icon="EOL.ico"> diff --git a/leak_test_project/Manual/01_시스템_개요.md b/leak_test_project/Manual/01_시스템_개요.md index 65990b5..f386ec6 100644 --- a/leak_test_project/Manual/01_시스템_개요.md +++ b/leak_test_project/Manual/01_시스템_개요.md @@ -6,7 +6,7 @@ ## 1.1 시스템 개요 -**Pressure Leak Inspect System**은 제품의 압력 누설(Leak)을 자동으로 검사하는 WPF 기반 데스크탑 애플리케이션입니다. 생산 라인에서 DIO 시작 신호를 받아 제품 ID를 판독하고, 누설 시험을 수행한 뒤 합격/불합격을 자동 판정합니다. +**Pressure Leak Inspect System**은 제품의 압력 누설(Leak)을 자동으로 검사하는 데스크탑 프로그램입니다. 생산 라인에서 DIO 시작 신호를 받아 제품 ID를 판독하고, 누설 시험을 수행한 뒤 합격/불합격을 자동 판정합니다. ### 주요 기능 요약 @@ -19,7 +19,7 @@ | **PCI-7432 DIO 보드** | 디지털 입출력 제어 (시작 신호 수신, OK/NG 출력) | | **검사 기록 관리** | 날짜/판정/ID별 필터링 검색 및 CSV 파일 내보내기를 지원합니다 | | **SPEC 교차 검증** | 프로그램 판정과 센서 자체 판정을 비교하여 불일치 시 경고합니다 | -| **순차 실행 보장** | 세마포어 잠금으로 좌/우 채널 동시 시험을 방지합니다 | +| **순차 실행 보장** | 중복 실행 방지 기능으로 좌/우 채널의 동시 시험을 방지합니다 | --- @@ -28,7 +28,7 @@ | 항목 | 요구사항 | 비고 | |------|----------|------| | **운영체제** | Windows 10 이상 (64bit 권장) | 32bit도 지원 가능 | -| **.NET 런타임** | .NET 9 (net9.0-windows) | 별도 설치 필요 없음 (Self-Contained 배포) | +| **.NET 런타임** | .NET 9 | 별도 설치 필요 없음 (자체 포함 배포) | | **드라이버** | ADLINK PCIS-DASK 드라이버 | `PCI-Dask.dll` 필요 | | **시리얼 포트** | 최소 2개의 COM 포트 | C28 센서용 + 4251 보드용 | | **화면 해상도** | 1024×768 이상 | 최대화 실행 시 1920×1080 권장 | diff --git a/leak_test_project/Manual/02_초기_설정.md b/leak_test_project/Manual/02_초기_설정.md index 87ec0da..174e38d 100644 --- a/leak_test_project/Manual/02_초기_설정.md +++ b/leak_test_project/Manual/02_초기_설정.md @@ -23,7 +23,7 @@ ## 2.2 프로그램 실행 ### 실행 방법 -1. `leak_test_project.exe` 파일을 **더블 클릭**하여 실행합니다. +1. 바탕화면의 **바로가기 아이콘**을 더블 클릭하여 실행합니다. 2. 프로그램이 전체화면(Maximized) 모드로 시작됩니다. ### 최초 실행 시 자동 생성되는 파일 @@ -113,10 +113,10 @@ ```ini ; [데이터베이스 접속 상세 설정] -Db_Server=192.168.0.20 -Db_Name=NE1aW_PT_SENSOR -Db_User=sa -Db_Password=sa1234 +Db_Server=[데이터베이스_서버_IP],[포트번호] +Db_Name=[데이터베이스_이름] +Db_User=[접속_계정_ID] +Db_Password=[접속_비밀번호] [Login] Procedure=dbo.CheckOperator @@ -124,7 +124,7 @@ ProcessName=EOL OfflinePreview=false ``` -- **온라인 인증 모드 (`OfflinePreview=false`)**: 지정된 개별 데이터베이스 접속 정보(`Db_Server`, `Db_Name`, `Db_User`, `Db_Password`)를 기반으로 데이터베이스에 접속하여 Stored Procedure(`Procedure`)로 ID/PW 존재 여부를 직접 확인합니다. DB 서버 연결 실패나 미등록 사용자일 경우 로그인이 거부됩니다. +- **온라인 인증 모드 (`OfflinePreview=false`)**: 지정된 데이터베이스 접속 정보(`Db_Server`, `Db_Name`, `Db_User`, `Db_Password`)를 기반으로 데이터베이스에 접속하여 사용자 계정의 유효성을 검증합니다. DB 서버 연결 실패나 미등록 사용자일 경우 로그인이 거부됩니다. - **오프라인 테스트 모드 (`OfflinePreview=true`)**: 데이터베이스를 거치지 않고, 필수 입력 값을 채우면 즉시 로그인이 허용됩니다. 네트워크 연결이 안 된 시뮬레이션 및 테스트 환경에서 사용합니다. diff --git a/leak_test_project/Manual/03_메인_화면.md b/leak_test_project/Manual/03_메인_화면.md index b9ba451..4c80c61 100644 --- a/leak_test_project/Manual/03_메인_화면.md +++ b/leak_test_project/Manual/03_메인_화면.md @@ -48,22 +48,22 @@ - **LEFT LEAK TESTER** 또는 **RIGHT LEAK TESTER** - 짙은 남색 배경에 백색 볼드 텍스트로 채널 구분을 명시합니다. -#### ② 시작 시간 (Row 1) +#### ② 시작/종료 시간 (Row 1) | 항목 | 설명 | |------|------| -| 라벨 | `시작 시간` (회색 헤더 배경) | -| 값 | `yyyy-MM-dd HH:mm:ss` 형식 (예: `2026-05-08 10:30:15`) | -| 갱신 시점 | 시험이 시작될 때마다 현재 시각으로 자동 갱신 | +| 라벨 | `시작/종료` (회색 헤더 배경) | +| 값 | `시작시간 / 종료시간` 형식 (예: `2026-05-08 10:30:15 / -` 또는 `2026-05-08 10:30:15 / 10:30:45`) | +| 갱신 시점 | 시험이 시작될 때 `시작시간 / -` 형태로 갱신되며, 시험 완료(DB 저장) 시점에 종료 시간이 함께 기록됩니다. | #### ③ IC_SN / PCB_Barcode (Row 2~3) - **식별자 2행 분리 표시** | 항목 | 설명 | |------|------| | 라벨 | `IC_SN` / `PCB_Barcode` (각각 회색 헤더 배경, 개별 행으로 표시) | -| 값 | 4251 보드를 통해 판독한 제품 고유 시리얼 번호 | -| 데이터 소스 | 4251 보드를 통해 제품 ID 센서에서 읽은 값 | -| 갱신 시점 | 시험 시작 시 초기화, 센서 판독 완료 시 표시 | +| 값 | 각각 제품의 IC 일련번호 및 이에 매핑되는 PCB 바코드 고유 식별 정보 | +| 데이터 소스 | **IC_SN**: 4251 보드로 제품 ID 센서에서 판독한 값
**PCB_Barcode**: 판독한 `IC_SN`을 기준으로 데이터베이스에서 조회한 바코드 값 (오프라인 모드 시 임시 데이터 주입) | +| 갱신 시점 | 시험 시작 시 빈 값(`-`)으로 초기화, 판독 및 조회 완료 시 표시 | -> **참고**: 가로 텍스트 잘림 방지 및 가독성 강화를 위해 IC_SN과 PCB_Barcode를 별도 행으로 분리하여 표시합니다. +> **참고**: 텍스트 잘림 방지 및 가독성 향상을 위해 IC_SN과 PCB_Barcode를 별도의 행으로 나누어 표시합니다. 프로그램 창 크기를 소형으로 조절하더라도 텍스트가 잘리지 않고 정상 표시됩니다. #### ④ 측정값 + SPEC (Row 3) - **가장 큰 영역** 좌측에 측정값, 우측에 SPEC 규격이 함께 표시됩니다. diff --git a/leak_test_project/Manual/04_통신_설정.md b/leak_test_project/Manual/04_통신_설정.md index f660ec5..9ff6ec7 100644 --- a/leak_test_project/Manual/04_통신_설정.md +++ b/leak_test_project/Manual/04_통신_설정.md @@ -28,16 +28,27 @@ | **Sensor BaudRate** | 드롭다운 | 9600 / 19200 / 38400 / 115200 | `9600` | C28 센서 통신 속도. 센서 설정과 일치해야 함 | | **Sensor Port** | 드롭다운 | 시스템 감지 COM 포트 목록 | `COM1` | C28 센서가 연결된 시리얼 포트 | -## 4.4 버튼 설명 +## 4.4 스펙 불일치 알림 설정 (화면 하단 영역) + +| 항목 | UI 타입 | 선택 가능한 값 | 기본값 | 설명 | +|------|---------|---------------|--------|------| +| **스펙 불일치 알림 활성화** | 체크박스 | 체크(ON) / 체크 해제(OFF) | `체크(ON)` | 프로그램 판정과 센서 자체 판정이 맞지 않을 때의 알림 팝업 창 발생 여부 설정 | + +> **동작 설명**: +> - **ON (기본값)**: 판정이 불일치할 때 메인 화면의 오류 메시지 창에 로그가 기재됨과 동시에, 경고 대화상자("프로그램 스펙과 센서의 스펙이 서로 맞지 않습니다.") 팝업이 출력되어 작업자 인지를 강제합니다. +> - **OFF**: 판정이 불일치하더라도 경고 팝업을 띄우지 않고, 화면의 오류 메시지 영역에만 텍스트로 기록을 남깁니다. (콘솔 로그 기록 등은 유지) +> - 이 설정은 `config.xml` 내의 `EnableSpecMismatchAlarm` 옵션에 영속 저장되어 프로그램 재작동 시에도 마지막 상태가 자동 유지됩니다. + +## 4.5 버튼 설명 | 버튼 | 특징 | 동작 | |------|------|------| | **설정 저장** | 녹색 계열 | config.xml에 저장 → 기존 연결 해제 → 새 설정으로 재연결 → "통신 설정이 저장되었습니다." 메시지 → 창 닫힘 | | **닫기** | 회색 계열 | 변경 사항 저장하지 않고 창 닫기 | -## 4.5 저장 시 내부 동작 순서 +## 4.6 저장 시 내부 동작 순서 -1. 현재 선택된 값을 `config.xml`에 저장 +1. 현재 선택된 값을 `config.xml`에 저장 (스펙 불일치 알림 활성화 여부 포함) 2. 기존 Sentinel C28 시리얼 연결 해제 3. 기존 4251 보드 시리얼 연결 해제 4. 시험 프로세스 스레드 종료 diff --git a/leak_test_project/Manual/06_데이터_조회.md b/leak_test_project/Manual/06_데이터_조회.md index 5a1cfb1..0506897 100644 --- a/leak_test_project/Manual/06_데이터_조회.md +++ b/leak_test_project/Manual/06_데이터_조회.md @@ -14,68 +14,68 @@ | 항목 | UI 타입 | 기본값 | 설명 | |------|---------|--------|------| -| **조회 기간** | DatePicker (달력) x 2 | 오늘로부터 7일 전 ~ 오늘 | 조회 대상 날짜 범위 설정 (달력 확대 표시 적용) | -| **판정 결과** | 드롭다운 ComboBox | `[전체]` / `OK` / `NG` | 판정 결과에 따른 필터링 (기본값: 전체) | +| **조회 기간** | 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`) 컬럼에 대한 부분 일치 검색 | (빈 값 = 필터 제외) | +| **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** | 파란색 계열 | 설정된 필터 조건으로 로컬 로그 CSV 백업 파일을 검색하여 그리드에 표시합니다. (시스템 안정성을 위해 데이터베이스 직접 조회 대신 로컬 백업 파일을 조회하도록 설계되었습니다.) | +| **Cancel (취소)** | 빨간색 계열 | 조회 중일 때 로딩 화면 내부에 나타나며, 진행 중인 파일 검색 작업을 중단하고 이전 화면으로 복귀합니다. | ### Search 버튼 동작 상세 -1. 설정된 조회 기간 날짜를 직접 일자별로 조합하여 해당하는 일일 로그 CSV 파일만 콕 집어 정밀 탐색합니다. (전체 디렉토리 풀 스캔 차단으로 조회 속도가 매우 빠릅니다.) -2. 검색 조건(판정, ID, 작업자, Lot No, 모델)에 맞는 대상을 인메모리 부분일치 검색 처리합니다. (과거 구형 8개 컬럼 포맷 파일도 하위 호환되어 정상 파싱됩니다.) -3. 검색 결과가 없으면 "해당 조건의 데이터가 없습니다." 알림 표시. +1. 지정된 조회 기간에 해당하는 일별 로그 CSV 파일만 조회하여 검색을 수행합니다. (불필요한 파일 스캔을 제한하여 검색 속도를 향상시켰습니다.) +2. 검색 조건(판정, ID, 작업자, Lot No, 모델)에 맞는 데이터를 인메모리 부분 일치 방식으로 검색합니다. +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행이 항상 표시됩니다 (데이터가 적어도 격자 형태 유지를 위해 빈 행으로 채워짐) +1. Search 버튼 클릭 시 화면 전체에 "Searching Logs..." 라는 반투명 오버레이가 활성화되어 검색이 진행 중임을 나타냅니다. +2. 검색이 지연될 경우 로딩 오버레이의 **Cancel (취소)** 버튼을 누르면 즉시 조회가 중단되고, "조회가 취소되었습니다." 메시지 박스 팝업 후 자동으로 메인 화면으로 복귀합니다. + +## 6.4 데이터 조회 결과 표(그리드) 항목 안내 + +| 컬럼 헤더명 | 정렬 | 설명 | +|------|------|------| +| **IC_SN** | 좌측 | 제품 고유 IC 시리얼 번호 | +| **PCB_Barcode** | 좌측 | PCB 바코드 고유 식별 정보 | +| **Maker** | 좌측 | 로그인 시 입력된 제조사명 | +| **Model** | 좌측 | 로그인 시 입력된 검사 모델명 | +| **Variant_1** | 좌측 | 로그인 시 입력된 세부 파생 모델 1 | +| **Variant_2** | 좌측 | 로그인 시 입력된 세부 파생 모델 2 | +| **Operator** | 좌측 | 작업 진행자 사용자 ID | +| **Production_Date** | 좌측 | 검사 수행 및 완료 일시 (yyyy-MM-dd HH:mm:ss) | +| **Line** | 좌측 | 로그인 공정 작업 라인 | +| **Lot_No** | 좌측 | 생산 Lot 번호 | +| **Jig_No** | 좌측 | 사용 지그(Jig) 번호 | +| **Channel** | 좌측 | 검사 채널 (`LEFT` 또는 `RIGHT`) | +| **Spec_UL** | 좌측 | 누설 상한 규격값 (sccm) | +| **Spec_LL** | 좌측 | 누설 하한 규격값 (sccm) | +| **Leak_Value** | **우측** | 측정된 누설 리크량 (**볼드 표시**) | +| **Result** | **중앙** | 최종 판정 결과 (`OK` 초록 / `NG` 빨강 볼드 강조) | + +### 표(그리드) 스타일 +- 격자선: 수평 및 수직 연회색 격자선을 표시합니다. +- 교대 행 배경: 홀수 행은 흰색, 짝수 행은 연회색 배경을 적용하여 가독성을 높였습니다. +- 선택된 행: 연파란색 배경에 파란색 텍스트로 강조합니다. +- 컬럼 헤더 정렬: 헤더 클릭 시 해당 열 기준으로 오름차순 또는 내림차순 정렬이 가능합니다. (컬럼 순서 변경은 제한됩니다.) +- 격자 유지: 조회된 데이터 개수가 50개 미만이더라도 화면 구성을 유지하기 위해 나머지 행은 빈 칸으로 채워져 표시됩니다. ## 6.5 화면 닫기 | 방법 | 설명 | |------|------| -| 하단 **Close** 버튼 클릭 | 메인 화면으로 복귀 | -| 하단 메뉴 **Data** 버튼 재클릭 | 토글 동작으로 메인 화면으로 복귀 | +| 하단 **Close** 버튼 클릭 | 메인 화면으로 복귀합니다. | +| 하단 메뉴 **Data** 버튼 재클릭 | 토글 동작을 통해 메인 화면으로 복귀합니다. | --- diff --git a/leak_test_project/Manual/07_시험_프로세스.md b/leak_test_project/Manual/07_시험_프로세스.md index b96b5ff..3a0c4e0 100644 --- a/leak_test_project/Manual/07_시험_프로세스.md +++ b/leak_test_project/Manual/07_시험_프로세스.md @@ -6,7 +6,7 @@ ## 7.1 개요 -자동 시험은 DIO 시작 신호(LEFT_START 또는 RIGHT_START)에 의해 트리거되며, 7단계로 진행됩니다. 좌/우 채널은 각각 독립적인 백그라운드 스레드에서 실행되지만, **세마포어 잠금**을 통해 동시 실행은 방지됩니다. +자동 시험은 시작 신호(LEFT_START 또는 RIGHT_START)에 의해 작동하며, 7단계로 진행됩니다. 좌/우 채널은 각각 독립적인 백그라운드 스레드에서 실행되지만, **중복 실행 방지 기능**을 통해 동시 시험은 방지됩니다. ## 7.2 전체 프로세스 흐름도 @@ -14,16 +14,16 @@
-
DIO 시작 신호 감지 (LEFT_START 또는 RIGHT_START: OFF➔ON)
+
시작 신호 감지 (좌측/우측 시작 신호 입력 시)
- 세마포어 잠금 대기 + 중복 실행 방지 대기
- • 잠금 불가 시: "대기중" 메시지 표시 후 대기
- • 잠금 획득 시: 다음 단계로 진행 (좌/우 채널 동시 시험 방지) + • 다른 채널이 시험 중인 경우: "대기중" 메시지를 표시하며 순서 대기
+ • 시험 가능 상태인 경우: 다음 단계 진행 (좌/우 채널 동시 시험 방지)
@@ -32,59 +32,69 @@ 1단계: 시험 시작 (초기화)
- • OK/NG DIO 출력 초기화 (OFF)
+ • 합격/불합격 신호 출력 초기화 (OFF)
• 메인 화면 결과 표시 초기화 및 시작 시간 갱신
- • Sentinel C28 LEAK 센서 수신 이벤트 버퍼 초기화 + • 누설 센서 수신 데이터 초기화
- 2단계: 센서 정보 읽기 (ID 판독) + 2단계: 제품 ID 판독
- • 4251 보드를 통해 제품 ID 센서에서 16자리 ID 판독
- • [실패 시] "ID 읽기 실패" 오류 출력 후 NG 판정 조기 종료 (DB 비동기 저장) + • 판독 장치(4251 보드)를 통해 제품 ID 센서에서 16자리 ID 판독
+ • [실패 시] "ID 읽기 실패" 오류 출력 후 시험이 종료되며 결과는 기록 및 저장에서 제외됩니다.
- + -
- - 3단계: LEAK 시험 수행 (계측) +
+ + 3단계: PCB 바코드 데이터베이스 조회
- • 화면에 "LEAK 시험중" 표시
- • Sentinel C28 센서의 최종 압력 누설 측정 결과 대기 (최대 30초)
- • [타임아웃] "Sentinel C28 통신 타임아웃" 오류 후 NG 판정 종료 + • 데이터베이스에서 제품 ID(`IC_SN`)에 매칭되는 `PCB_Barcode` 조회 (5초 대기 시간 초과 제한)
+ • [실패/누락 시] "바코드 매핑 실패" 오류 출력 후 즉시 종료되며 결과는 기록 및 저장에서 제외됩니다.
- 4단계: 합격 판정 + 4단계: 누설 시험 수행 (계측)
- • SPEC LL ≤ 측정값 ≤ SPEC UL 이면 **OK (합격)**, 범위를 벗어나면 **NG (불합격)** + • 화면에 "LEAK 시험중" 표시
+ • 누설 센서(Sentinel C28)로부터 측정 결과 수신 대기 (최대 30초)
+ • [시간 초과 시] 통신 시간 초과 오류 발생 및 불합격(NG) 판정으로 자동 종료 (측정값 9.9999로 데이터베이스에 저장)
- 5단계: SPEC 교차 검증 + 5단계: 합격 판정
- • 프로그램(UI) 판정과 센서 자체 판정(OK/A/P vs NG/R/F)을 상호 비교
- • 불일치 시 `SpecMismatch` 플래그 설정 및 경고 팝업 표시 + • 규격 하한값 ≤ 측정값 ≤ 규격 상한값 이면 **OK (합격)**, 범위를 벗어나면 **NG (불합격)**로 판정합니다.
+
+ + 6단계: 판정 스펙 교차 검증 +
+ • 프로그램 판정과 센서 자체 판정을 비교 분석합니다.
+ • 판정이 서로 다를 경우 화면에 경고 창을 표시합니다. (통신 설정에서 알림 창 표시를 끌 수 있습니다.) +
+
+ +
- 6단계: 결과 출력 및 저장 + 7단계: 결과 출력 및 저장
- • 로컬 CSV 로그 파일 기록 및 MSSQL DB에 비동기 저장
- • 판정 결과에 따른 DIO 하드웨어 출력 (OK 또는 NG 포트 ON)
+ • 로컬 CSV 백업 파일 기록 및 데이터베이스에 검사 결과 저장
+ • 판정 결과에 따라 외부 설비에 출력 신호(OK 또는 NG 포트) 전송
• 메인 화면에 최종 측정값 및 판정 출력 ("시험 완료" 표시)
@@ -92,71 +102,80 @@
- 세마포어 잠금 해제 + 순서 잠금 해제
- • 시험 종료 후 잠금 해제 → 대기 중인 채널이 있을 경우 350ms 안정화 대기 후 자동 시작 + • 시험 종료 후 순서 대기가 해제되며, 대기 중이던 다른 채널이 0.35초 대기 후 자동으로 시험을 개시합니다.
-## 7.3 순차 실행 (세마포어 잠금) +## 7.3 좌/우 채널 순차 실행 및 대기 -좌/우 채널은 **동시에 시험을 수행할 수 없습니다**. 이는 하드웨어 통신 충돌을 방지하기 위함입니다. +좌/우 채널은 **동시에 시험을 수행할 수 없습니다**. 이는 하드웨어 통신 간섭 및 충돌을 방지하기 위함입니다. | 상황 | 동작 | |------|------| -| 한 채널만 시작 신호 | 즉시 시험 시작 | -| 양쪽 동시 시작 신호 | 먼저 잠금을 획득한 채널이 시험 진행, 다른 채널은 "대기중" 표시 | -| 시험 완료 후 | 대기 중인 채널이 자동으로 시험 시작 (350ms 안정화 대기 후) | +| 한 채널만 시험 시작 신호 발생 | 즉시 시험을 시작합니다. | +| 양쪽 채널 동시 신호 발생 | 먼저 순서를 획득한 채널이 시험을 진행하며, 다른 채널은 "대기중"을 표시하며 대기합니다. | +| 시험 완료 후 | 대기 중이던 채널이 자동으로 시험을 시작합니다. (안정화를 위해 0.35초의 대기 시간이 적용됩니다.) | + +> **참고**: 하드웨어 통신 안정화를 위해 이전 채널의 시험 종료 후 **0.35초의 여유 시간**이 자동으로 적용됩니다. + +## 7.4 시간 초과 (타임아웃) 처리 + +누설 센서에서 30초 이내에 계측 결과 응답이 없으면 다음과 같이 처리됩니다. + +1. 화면의 오류 메시지 영역에 "통신 시간 초과" 오류 메시지를 표시합니다. (데이터베이스 저장 실패 시 "DB 저장 실패" 사유도 함께 노출) +2. 해당 채널의 불합격(NG) 물리 신호를 내보냅니다. +3. 측정값 `9.9999`, 판정 `NG`로 기록을 생성합니다. +4. 로컬 CSV 로그 파일 및 데이터베이스에 검사 결과를 기록합니다. (단, 이전 단계인 제품 ID 판독에 성공한 상태여야 저장이 이루어집니다.) -> **참고**: 하드웨어 통신 안정화를 위해, 이전 채널 시험 종료 후 **350ms의 여유 시간**이 자동으로 적용됩니다. +## 7.5 제품 ID 및 PCB 바코드 연동 예외 처리 -## 7.4 타임아웃 처리 +데이터 일관성과 무결성을 확보하기 위해 제품 식별 정보가 불완전한 상태에서의 데이터 저장을 차단하는 안전 검증 절차가 작동합니다. -Sentinel C28 센서에서 30초 이내에 응답이 없으면: +### 1. 제품 ID(IC_SN) 판독 실패 시 +- **동작**: 제품 ID 판독 장치(4251 보드)로부터 16자리 ID 취득을 실패하는 경우 진행 메시지에 `"ID 읽기 실패"`를 표시하고, 해당 채널의 NG 물리 신호를 즉시 출력합니다. +- **저장 제한**: 이 경우에는 로컬 CSV 로그 기록 및 데이터베이스 저장을 **완전히 건너뜁니다**. -1. "Sentinel C28 통신 타임아웃" 오류 메시지 표시 (DB 저장 실패 시 "DB 저장 실패"도 오류 메시지에 추가 표시) -2. 해당 채널 DIO `NG` 출력 ON -3. 측정값 `0.0000`, 판정 `NG`, 센서판정 `T/O` (Timeout)로 기록 -4. CSV 로그 파일 및 MSSQL 데이터베이스에 NG 결과 비동기 기록 +### 2. PCB 바코드 DB 조회(매핑) 실패 시 +- **동작**: 판독 완료 후 데이터베이스 서버에서 `IC_SN`에 해당하는 `PCB_Barcode`를 조회할 때, 정해진 시간(5초) 내에 응답이 없거나 일치하는 데이터가 없는 경우 화면에 `"바코드 매핑 실패"` 관련 오류를 표시하고 NG 신호를 출력합니다. +- **저장 제한**: 이 경우에도 제품 검사 자체를 진행하지 않고 즉시 스킵하며, **데이터베이스 및 로컬 CSV 로그 기록 저장을 건너뜁니다**. (오프라인 모드에서는 임시 바코드 정보를 주입하여 검사 동작을 테스트할 수 있습니다.) -## 7.5 C28 센서 결과 채널 라우팅 +## 7.6 누설 센서 측정 결과 채널 분류 -Sentinel C28 센서에서 수신한 데이터는 채널 번호(ChannelNo)로 구분됩니다: +누설 센서에서 수신한 데이터는 다음 채널 번호 정보를 기준으로 정렬됩니다. | 채널 번호 | 대상 | |----------|------| -| `C01` 또는 `1` | LEFT 채널 | -| `C02` 또는 `2` | RIGHT 채널 | -| 채널 번호 없음 | 현재 활성화된(시험 중인) 채널로 자동 할당 | +| `C01` 또는 `1` | 좌측(LEFT) 채널 | +| `C02` 또는 `2` | 우측(RIGHT) 채널 | +| 채널 번호 식별 불가 | 현재 활성화되어 시험을 진행 중인 채널로 자동 배정 | -## 7.6 ID 수동 테스트 +## 7.7 ID 수동 테스트 -하단 메뉴의 **ID Test (L)** 또는 **ID Test (R)** 버튼으로 DIO 시작 신호 없이 센서 ID 판독만 수행할 수 있습니다. +하단 메뉴의 **ID Test (L)** 또는 **ID Test (R)** 버튼을 사용하면 시험 시작 신호 없이 센서 ID 판독 동작만 단독으로 수행할 수 있습니다. ### 실행 흐름 -1. 세마포어 잠금 획득 (다른 채널 시험 중이면 대기) -2. 결과 표시 초기화 -3. 500ms 대기 (UI 피드백용) -4. "센서 정보 읽는 중" 메시지 표시 -5. 4251 보드를 통해 제품 ID 판독 -6. 성공 시: ID 표시 + "ID 테스트 완료" -7. 실패 시: ID를 "-"로 표시 + "ID 테스트 실패" -8. 세마포어 잠금 해제 +1. 중복 방지 잠금 획득 (다른 채널이 시험 중인 경우 대기) +2. 결과 표시 초기화 및 0.5초 대기 +3. "센서 정보 읽는 중" 메시지 표시 후 ID 판독 시작 +4. 성공 시: 판독된 ID 표시 및 "ID 테스트 완료" 메시지 표시 +5. 실패 시: ID 영역에 "-" 표시 및 "ID 테스트 실패" 메시지 표시 +6. 잠금 해제 -> **용도**: 설치 후 하드웨어 연결 상태 확인, 디버깅 시 활용합니다. LEAK 시험(3~6단계)은 수행하지 않습니다. +> **용도**: 장비 설치 후 통신 상태 확인 및 디버깅 시 사용합니다. 실제 누설 시험(압력 계측)은 수행하지 않습니다. -## 7.7 SPEC 교차 검증 및 판정 저장 기준 +## 7.8 측정 판정 및 저장 기준 -시험 과정에서 프로그램(UI) 판정과 C28 센서 자체의 판정이 불일치하는 경우, 데이터베이스 및 로그 저장의 기준은 다음과 같습니다. +프로그램의 판정 스펙(상하한 규격) 기준과 누설 센서 자체의 내부 스펙 판정 기준이 일치하지 않는 경우, 저장소에는 다음과 같이 저장됩니다. ### 저장 기준 요약 -* **최종 저장 판정 (Result)**: C28 센서 자체의 판정값과 무관하게, 항상 **프로그램(UI) 판정 기준(`programJudgment`)**으로 데이터베이스 및 로그에 저장됩니다. -* **동작 예시**: UI 상으로 합격(`OK`)이지만 C28 센서 자체적으로는 불합격(`NG`/`R`)인 경우, 최종 DB(`Result` 컬럼) 및 CSV 로그에는 **`OK` (합격)**로 저장됩니다. +* **최종 저장 판정 (Result)**: 센서 자체의 판정값과 무관하게, 항상 **프로그램 화면 판정 기준**으로 데이터베이스 및 로그에 저장됩니다. +* **동작 예시**: 프로그램 판정이 합격(`OK`)이지만 센서 자체의 내부 판정이 불합격(`NG` 등)인 경우에도, 최종 기록 및 CSV에는 **`OK` (합격)**로 기록됩니다. -### 교차 검증 실패 시의 동작 (Spec Mismatch) -* 프로그램 판정과 센서 자체 판정이 다르면 `specMismatch` 플래그가 `true`로 설정됩니다. -* 불일치 발생 시 콘솔 로그에 경고(`[TestProcess] {side} SPEC Mismatch!`)를 출력하고 UI 완료 이벤트 인자로 전달되지만, **DB에 저장되는 최종 판정 결과(`Result`)에는 영향을 미치지 않고 프로그램 판정값을 유지**합니다. +### 판정 스펙 불일치 시의 동작 +* 양측의 판정 스펙이 다르면 불일치 로그가 기록되며 화면에 경고 팝업이 출력되지만, **최종 저장되는 판정 결과에는 영향을 미치지 않고 프로그램 판정값을 유지**합니다. --- diff --git a/leak_test_project/Manual/08_로그_관리.md b/leak_test_project/Manual/08_로그_관리.md index b60afe1..345073d 100644 --- a/leak_test_project/Manual/08_로그_관리.md +++ b/leak_test_project/Manual/08_로그_관리.md @@ -49,8 +49,6 @@ IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line, > **참고**: 타임아웃 발생 시에도 측정값 `0.0000`, 판정 `NG`로 로그에 기록됩니다. -> **참고**: 프로그램은 구형 8개 컬럼 포맷(`Date,Time,ID,Channel,SpecUL,SpecLL,Value,Judgment`)의 로그 파일에 대해서도 컬럼 크기를 기준으로 자동 감지 및 파싱(하위 호환성)을 수행합니다. - > **참고**: CSV 값에 쉼표, 따옴표, 줄바꿈이 포함된 경우 자동으로 이스케이프 처리됩니다. --- @@ -85,7 +83,7 @@ IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line, | 항목 | 내용 | |------|------| -| **위치** | 프로그램 실행 폴더 | +| **위치** | 프로그램 실행 폴더 (`C:\LeakTest\config.xml`) | | **생성** | 최초 실행 시 기본값으로 자동 생성 | | **수정** | Comm. Settings 또는 Parameters에서 저장 시 갱신 | @@ -98,6 +96,7 @@ IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line, 5000 1.00 -1.00 + true ``` @@ -110,6 +109,7 @@ IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line, | `Board4251Timeout` | 5000 | (코드 내 고정) | 4251 보드 응답 대기 시간(ms) | | `SpecUL` | 1.00 | Parameters | 누설 상한 규격값 | | `SpecLL` | -1.00 | Parameters | 누설 하한 규격값 | +| `EnableSpecMismatchAlarm` | true | Comm. Settings | 스펙 불일치 알림 활성화 여부 (true/false) | ### Database.ini @@ -120,28 +120,43 @@ IC_SN,PCB_Barcode,Maker,Model,Variant_1,Variant_2,Operator,Production_Date,Line, | **수정** | 메모장 등의 텍스트 에디터를 통해 연결 주소 및 프로시저 정보 직접 수정 | ```ini +; ===================================================================== +; Leak Test System - 데이터베이스 및 로그인 설정 파일 (Database.ini) +; ===================================================================== + ; [데이터베이스 접속 상세 설정] -Db_Server=192.168.0.20 -Db_Name=NE1aW_PT_SENSOR -Db_User=sa -Db_Password=sa1234 +; Db_Server : 중앙 MSSQL 데이터베이스 서버의 IP 주소 또는 호스트명 +; Db_Name : 검사 데이터를 저장할 대상 데이터베이스 이름 +; Db_User : 데이터베이스 접속 계정 ID (예: sa) +; Db_Password: 데이터베이스 접속 계정의 비밀번호 +Db_Server=127.0.0.1, 1433 +Db_Name=Test_DB +Db_User=db_user +Db_Password=db_password [Login] +; Procedure: 로그인 검증에 사용할 DB 저장 프로시저명입니다. (공란일 경우 기본 테이블 조회 쿼리 작동) Procedure=dbo.CheckOperator + +; ProcessName: 로그인 검증 시 전달할 공정 이름입니다. ProcessName=EOL + +; OfflinePreview: 오프라인 모드 활성화 여부 (true = DB 연결 없이 로그인 통과, false = 실제 DB 인증) 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 | 로그인 계정 검증용 저장 프로시저명 | +| `Db_Server` | `[서버IP], [포트번호]` (예: 127.0.0.1, 1433) | 데이터베이스 서버 IP 주소 및 포트 번호 | +| `Db_Name` | `[데이터베이스명]` (예: Test_DB) | 대상 데이터베이스(DB) 이름 | +| `Db_User` | `[사용자ID]` (예: db_user) | 데이터베이스 접속 계정 ID | +| `Db_Password` | `[비밀번호]` (예: db_password) | 데이터베이스 접속 계정 비밀번호 | +| `Procedure` | dbo.CheckOperator | 로그인 계정 검증용 데이터베이스 프로그램명 | | `ProcessName` | EOL | 검증 공정명 | | `OfflinePreview` | false | true 시 DB 연결 없이 로그인 즉시 성공 (오프라인 모드) | +> **SSL 인증 오류 방지**: DB 연결 시 SSL 인증서 신뢰 오류가 발생하는 환경을 방지하기 위해 프로그램 내부에서 자동으로 `TrustServerCertificate=True;` 옵션을 연결 문자열 끝에 추가하여 안정적인 동작을 보장합니다. + ### LoginOptions.json / LoginHistory.json | 항목 | 내용 | @@ -203,29 +218,29 @@ BoardNumber=0 매 시험 완료 시 검사 결과 및 로그인 정보가 데이터베이스에 실시간으로 저장(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`) | | +| 데이터베이스 항목명 | 구분 | 설명 | +| :--- | :--- | :--- | +| **`IC_SN`** | 문자형 (최대 10자) | 제품 고유 IC 일련번호 | +| **`PCB_Barcode`** | 문자형 (최대 10자) | 조회된 PCB 바코드 정보 | +| `Maker` | 문자형 (최대 10자) | 로그인 시 입력한 제조사명 | +| `Model` | 문자형 (최대 10자) | 로그인 시 입력한 검사 모델명 | +| `Variant_1` | 문자형 (최대 10자) | 로그인 시 입력한 파생 모델명 1 | +| `Variant_2` | 문자형 (최대 10자) | 로그인 시 입력한 파생 모델명 2 | +| `Operator` | 문자형 (최대 10자) | 검사자(작업자) ID | +| `Production_Date` | 날짜/시간형 | 검사가 완료된 시간 | +| `Line` | 문자형 (최대 30자) | 로그인 시 입력한 작업 라인명 | +| `Lot_No` | 문자형 (최대 8자) | 로그인 시 입력한 Lot 번호 | +| `Jig_No` | 문자형 (최대 10자) | 로그인 시 입력한 지그 번호 | +| `Channel` | 문자형 (최대 5자) | 검사가 수행된 채널 (LEFT / RIGHT) | +| `Spec_UL` | 숫자형 | 리크 판정 상한 기준값 | +| `Spec_LL` | 숫자형 | 리크 판정 하한 기준값 | +| `Leak_Value` | 숫자형 | 측정된 누설량 | +| `Result` | 문자형 (최대 5자) | 최종 판정 결과 (OK / NG) | --- diff --git a/leak_test_project/Manual/09_오류_대응.md b/leak_test_project/Manual/09_오류_대응.md index 14f8e8c..c850584 100644 --- a/leak_test_project/Manual/09_오류_대응.md +++ b/leak_test_project/Manual/09_오류_대응.md @@ -22,18 +22,19 @@ | 오류 메시지 | 원인 | 조치 방법 | |------------|------|----------| | `Sentinel C28 통신 타임아웃` | 30초 내 C28 센서 응답 없음 | ① 센서 전원 ON 확인 ② 시리얼 케이블 연결 확인 ③ BaudRate 설정 확인 (기본: 9600) | -| `통신 실패 (4251 보드 CHx 상태 타임아웃)` | 4251 보드가 응답 시간(15초) 내에 상태 응답을 회신하지 않음 | ① 4251 보드 전원 공급 및 케이블 연결선 확인 ② 통신 노이즈 방지 조치 확인 | +| `통신 실패 (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 설정 확인 ③ 양쪽 설정값 동기화 | +| `SPEC 불일치 - 프로그램: OK, 센서: R` | 프로그램 SPEC과 센서 자체 SPEC의 판정이 다름 | ① 프로그램의 SPEC UL/LL 확인 (Parameters) ② C28 센서의 SPEC 설정 확인 ③ 양쪽 설정값 동기화 (※ 통신 설정에서 경고 알림 스위치 상태를 확인하세요) | | `LEAK 센서 데이터 오류` | C28에서 수신된 데이터 파싱 실패 | ① 센서 통신 상태 확인 ② 케이블 접촉 불량 확인 ③ BaudRate 불일치 확인 | -| `DB 저장 실패` | 중앙 MSSQL DB 서버에 검사 데이터를 저장하지 못함 | ① PC 네트워크 케이블 및 통신 연결 확인 ② Database.ini 파일의 접속 정보(IP/비밀번호 등) 확인 ③ 로컬 일일 CSV 로그 파일(`C:\LeakTest\Logs\yyyy-MM-dd.csv`)에 백업이 잘 저장되었는지 확인 | +| `DB 저장 실패: [오류 원인] 상세 메시지` | 데이터베이스 서버에 검사 데이터를 저장하지 못함 | ① 네트워크 케이블 및 서버 통신 연결 확인 ② Database.ini 설정 파일의 접속 정보(IP/비밀번호 등) 확인 ③ 로컬 일일 CSV 로그 파일에 백업이 정상적으로 저장되었는지 확인 | +| `바코드 매핑 실패: [오류 원인] 상세 메시지` | 데이터베이스에서 해당 `IC_SN`에 매칭되는 바코드 정보를 찾지 못함 | ① 데이터베이스 서버 네트워크 연결 확인 ② Housing_Assembly 테이블에 대상 제품의 바코드 정보 매핑 상태 점검 | --- ## 9.3 SPEC 교차 검증 경고 팝업 -프로그램 판정과 센서 판정이 불일치하면 팝업 경고가 표시됩니다: +프로그램 판정과 센서 판정이 불일치할 때, 통신 설정 화면의 **`스펙 불일치 알림 활성화`** 옵션이 켜져(ON) 있는 경우 팝업 경고가 표시됩니다: ``` [!] SPEC 교차 검증 경고 @@ -41,7 +42,8 @@ [확인] ``` -이 경고는 검사 자체를 중단하지는 않지만, **프로그램의 판정 결과**가 최종 기록에 사용됩니다. +- 만약 이 옵션을 **해제(OFF)**한 경우, 이 팝업 경고 대화상자는 나타나지 않으며, 메인 화면 하단의 **오류 메시지** 텍스트 박스에만 불일치 로그가 기록됩니다. +- 이 경고는 검사 자체를 중단하지는 않으며, **프로그램의 판정 결과**가 최종 DB 및 로컬 로그 기록에 사용됩니다. --- @@ -52,7 +54,7 @@ | PCI-7432 보드 미인식 | **시뮬레이션 모드**로 자동 전환 | DIO 입출력이 동작하지 않음 (실제 입출력 포트 제어 불가) | | 보드 런타임 오류 | 좌/우 채널 오류 메시지에 `[DIO Board Error]` 표시 | 오류 내용에 따라 조치 | -> **시뮬레이션 모드**: ADLINK 드라이버가 신설되지 않은 개발 환경에서도 프로그램의 나머지 기능(통신 설정, 데이터 조회 등)을 테스트할 수 있도록 자동 전환됩니다. +> **시뮬레이션 모드**: ADLINK 드라이버가 설치되지 않은 환경에서도 프로그램의 기능(통신 설정, 데이터 조회 등)을 사전에 테스트할 수 있도록 제공되는 가상 동작 모드입니다. --- @@ -90,9 +92,9 @@ | 순서 | 처리 내용 | |------|----------| | 1 | 시험 프로세스 스레드 종료 (좌/우 모두) | -| 2 | 대기 중인 세마포어 해제 | -| 3 | DIO 이벤트 구독 해제 | -| 4 | C28 센서 이벤트 구독 해제 | +| 2 | 대기 중인 순서 잠금 해제 | +| 3 | 디지털 입출력(DIO) 신호 감지 중단 | +| 4 | 누설 센서 신호 감지 중단 | | 5 | Sentinel C28 시리얼 통신 연결 해제 | | 6 | 4251 보드 시리얼 통신 연결 해제 | | 7 | DIO `PC_ON` 출력 **OFF** | diff --git a/leak_test_project/Manual/Manual_Merged.html b/leak_test_project/Manual/Manual_Merged.html index 05a474a..43bcab9 100644 --- a/leak_test_project/Manual/Manual_Merged.html +++ b/leak_test_project/Manual/Manual_Merged.html @@ -223,7 +223,7 @@ a:hover {

Pressure Leak Inspect System - 사용자 메뉴얼

-

버전: 1.0.0 | 최종 수정: 2026-06-25

+

버전: 1.0.0 | 최종 수정: 2026-07-01


메뉴얼 목차

@@ -289,7 +289,7 @@ a:hover {

처음 사용하는 경우 아래 순서를 따르세요:

  1. 하드웨어 연결 확인시스템 개요 및 요구사항 참조
  2. -
  3. 프로그램 실행 및 로그인leak_test_project.exe 실행 후 로그인 완료 (오프라인 테스트는 Database.ini에서 OfflinePreview=true 설정)
  4. +
  5. 프로그램 실행 및 로그인 → 바탕화면의 바로가기 아이콘을 실행하여 로그인 완료 (오프라인 테스트는 Database.ini에서 OfflinePreview=true 설정)
  6. 통신 설정 → 하단 메뉴 Comm. Settings → COM 포트 선택 → 설정 저장
  7. 시험 설정 → 하단 메뉴 Parameters → SPEC UL/LL 입력 → 설정 저장
  8. 시험 시작 → DIO 시작 신호 또는 ID Test (L/R) 버튼으로 동작 확인
  9. @@ -301,7 +301,7 @@ a:hover {

    1. 시스템 개요 및 요구사항


    1.1 시스템 개요

    -

    Pressure Leak Inspect System은 제품의 압력 누설(Leak)을 자동으로 검사하는 WPF 기반 데스크탑 애플리케이션입니다. 생산 라인에서 DIO 시작 신호를 받아 제품 ID를 판독하고, 누설 시험을 수행한 뒤 합격/불합격을 자동 판정합니다.

    +

    Pressure Leak Inspect System은 제품의 압력 누설(Leak)을 자동으로 검사하는 데스크탑 프로그램입니다. 생산 라인에서 DIO 시작 신호를 받아 제품 ID를 판독하고, 누설 시험을 수행한 뒤 합격/불합격을 자동 판정합니다.

    주요 기능 요약

    @@ -341,7 +341,7 @@ a:hover { - +
    순차 실행 보장세마포어 잠금으로 좌/우 채널 동시 시험을 방지합니다중복 실행 방지 기능으로 좌/우 채널의 동시 시험을 방지합니다
    @@ -362,9 +362,9 @@ a:hover { 32bit도 지원 가능 -.NET Framework -4.7.2 이상 -Windows 10에 기본 포함 +.NET 런타임 +.NET 9 +별도 설치 필요 없음 (자체 포함 배포) 드라이버 @@ -634,14 +634,14 @@ a:hover {

    2.2 프로그램 실행

    실행 방법

      -
    1. leak_test_project.exe 파일을 더블 클릭하여 실행합니다.
    2. +
    3. 바탕화면의 바로가기 아이콘을 더블 클릭하여 실행합니다.
    4. 프로그램이 전체화면(Maximized) 모드로 시작됩니다.

    최초 실행 시 자동 생성되는 파일

    - + @@ -649,14 +649,34 @@ a:hover { - + - - + + + + + + + + + + + + + + + + + + + + + +
    파일파일 / 폴더 위치 설명
    config.xml프로그램 실행 폴더프로그램 실행 폴더 (C:\LeakTest\) 통신 포트, BaudRate, SPEC 값 등 모든 설정을 저장
    Settings/DioConfig.iniSettings 하위 폴더Settings\DioConfig.iniC:\LeakTest\Settings\ DIO 보드 타입, 입출력 포인트 정의
    Database.iniC:\LeakTest\DB 접속 정보 및 로그인 인증 방식 설정 (최초 실행 시 기본 템플릿으로 생성)
    LoginOptions.jsonC:\LeakTest\로그인 화면 자동완성 드롭다운 선택지 저장
    LoginHistory.jsonC:\LeakTest\최근 로그인 정보 최대 10건 자동 저장
    Logs\ 폴더C:\LeakTest\Logs\날짜별 CSV 검사 로그 및 시스템 로그 저장 위치

    프로그램 시작 시 자동 수행 동작

    @@ -770,12 +790,12 @@ a:hover {

    참고 (자동완성): 각 필드에 마우스를 클릭하거나 포커스를 두면, 이전 로그인 이력이 팝업 메뉴 형식으로 나열되어 간편하게 자동 완성을 사용할 수 있습니다.

    로그인 방식 설정 (Database.ini)

    -

    윈도우 공용 폴더(C:\ProgramData\MobiLeakTest\Database.ini)에 위치한 Database.ini 파일 설정에 따라 로그인 인증 방식이 달라집니다. (해당 파일이 누락된 경우 프로그램 최초 실행 시 기본 템플릿 정보와 함께 경로상에 자동으로 생성됩니다. ClickOnce 배포 방식을 사용하는 경우에도 프로그램 업데이트 시 설정 데이터가 유실되지 않고 영구 보존됩니다.)

    +

    프로그램 배포 폴더(C:\LeakTest\Database.ini)에 위치한 Database.ini 파일 설정에 따라 로그인 인증 방식이 달라집니다. 해당 파일이 누락된 경우 프로그램 최초 실행 시 기본 템플릿 정보와 함께 해당 경로에 자동으로 생성됩니다. 모든 설정 파일이 배포 폴더에 함께 위치하므로 경로 관리가 단순합니다.

    ; [데이터베이스 접속 상세 설정]
    -Db_Server=192.168.0.20
    -Db_Name=NE1aW_PT_SENSOR
    -Db_User=sa
    -Db_Password=sa1234
    +Db_Server=[데이터베이스_서버_IP],[포트번호]
    +Db_Name=[데이터베이스_이름]
    +Db_User=[접속_계정_ID]
    +Db_Password=[접속_비밀번호]
     
     [Login]
     Procedure=dbo.CheckOperator
    @@ -783,7 +803,7 @@ ProcessName=EOL
     OfflinePreview=false
     
      -
    • 온라인 인증 모드 (OfflinePreview=false): 지정된 개별 데이터베이스 접속 정보(Db_Server, Db_Name, Db_User, Db_Password)를 기반으로 데이터베이스에 접속하여 Stored Procedure(Procedure)로 ID/PW 존재 여부를 직접 확인합니다. DB 서버 연결 실패나 미등록 사용자일 경우 로그인이 거부됩니다.
    • +
    • 온라인 인증 모드 (OfflinePreview=false): 지정된 데이터베이스 접속 정보(Db_Server, Db_Name, Db_User, Db_Password)를 기반으로 데이터베이스에 접속하여 사용자 계정의 유효성을 검증합니다. DB 서버 연결 실패나 미등록 사용자일 경우 로그인이 거부됩니다.
    • 오프라인 테스트 모드 (OfflinePreview=true): 데이터베이스를 거치지 않고, 필수 입력 값을 채우면 즉시 로그인이 허용됩니다. 네트워크 연결이 안 된 시뮬레이션 및 테스트 환경에서 사용합니다.

    @@ -1024,7 +1044,7 @@ OfflinePreview=false
  10. LEFT LEAK TESTER 또는 RIGHT LEAK TESTER
  11. 짙은 남색 배경에 백색 볼드 텍스트로 채널 구분을 명시합니다.
  12. -

    ② 시작 시간 (Row 1)

    +

    ② 시작/종료 시간 (Row 1)

    @@ -1035,19 +1055,19 @@ OfflinePreview=false - + - + - +
    라벨시작 시간 (회색 헤더 배경)시작/종료 (회색 헤더 배경)
    yyyy-MM-dd HH:mm:ss 형식 (예: 2026-05-08 10:30:15)시작시간 / 종료시간 형식 (예: 2026-05-08 10:30:15 / - 또는 2026-05-08 10:30:15 / 10:30:45)
    갱신 시점시험이 시작될 때마다 현재 시각으로 자동 갱신시험이 시작될 때 시작시간 / - 형태로 갱신되며, 시험 완료(DB 저장) 시점에 종료 시간이 함께 기록됩니다.
    -

    ③ ID (Row 2)

    +

    ③ IC_SN / PCB_Barcode (Row 2~3) - 식별자 2행 분리 표시

    @@ -1058,22 +1078,25 @@ OfflinePreview=false - + - + - + - +
    라벨ID (회색 헤더 배경)IC_SN / PCB_Barcode (각각 회색 헤더 배경, 개별 행으로 표시)
    16자리 제품 ID 표시각각 제품의 IC 일련번호 및 이에 매핑되는 PCB 바코드 고유 식별 정보
    데이터 소스4251 보드를 통해 제품 ID 센서에서 읽은 값IC_SN: 4251 보드로 제품 ID 센서에서 판독한 값
    PCB_Barcode: 판독한 IC_SN을 기준으로 데이터베이스에서 조회한 바코드 값 (오프라인 모드 시 임시 데이터 주입)
    갱신 시점시험 시작 시 초기화, 센서 판독 완료 시 표시시험 시작 시 빈 값(-)으로 초기화, 판독 및 조회 완료 시 표시
    +
    +

    참고: 텍스트 잘림 방지 및 가독성 향상을 위해 IC_SN과 PCB_Barcode를 별도의 행으로 나누어 표시합니다. 프로그램 창 크기를 소형으로 조절하더라도 텍스트가 잘리지 않고 정상 표시됩니다.

    +

    ④ 측정값 + SPEC (Row 3) - 가장 큰 영역

    좌측에 측정값, 우측에 SPEC 규격이 함께 표시됩니다.

    측정값 영역:

    @@ -1410,7 +1433,34 @@ OfflinePreview=false -

    4.4 버튼 설명

    +

    4.4 스펙 불일치 알림 설정 (화면 하단 영역)

    + + + + + + + + + + + + + + + + + + + +
    항목UI 타입선택 가능한 값기본값설명
    스펙 불일치 알림 활성화체크박스체크(ON) / 체크 해제(OFF)체크(ON)프로그램 판정과 센서 자체 판정이 맞지 않을 때의 알림 팝업 창 발생 여부 설정
    +
    +

    동작 설명: +- ON (기본값): 판정이 불일치할 때 메인 화면의 오류 메시지 창에 로그가 기재됨과 동시에, 경고 대화상자("프로그램 스펙과 센서의 스펙이 서로 맞지 않습니다.") 팝업이 출력되어 작업자 인지를 강제합니다. +- OFF: 판정이 불일치하더라도 경고 팝업을 띄우지 않고, 화면의 오류 메시지 영역에만 텍스트로 기록을 남깁니다. (콘솔 로그 기록 등은 유지) +- 이 설정은 config.xml 내의 EnableSpecMismatchAlarm 옵션에 영속 저장되어 프로그램 재작동 시에도 마지막 상태가 자동 유지됩니다.

    +
    +

    4.5 버튼 설명

    @@ -1432,9 +1482,9 @@ OfflinePreview=false
    -

    4.5 저장 시 내부 동작 순서

    +

    4.6 저장 시 내부 동작 순서

      -
    1. 현재 선택된 값을 config.xml에 저장
    2. +
    3. 현재 선택된 값을 config.xml에 저장 (스펙 불일치 알림 활성화 여부 포함)
    4. 기존 Sentinel C28 시리얼 연결 해제
    5. 기존 4251 보드 시리얼 연결 해제
    6. 시험 프로세스 스레드 종료
    7. @@ -1595,13 +1645,13 @@ OfflinePreview=false 조회 기간 DatePicker (달력) x 2 오늘로부터 7일 전 ~ 오늘 -조회 대상 날짜 범위 설정 (달력 확대 표시 적용) +조회 대상 날짜 범위를 설정합니다. (달력 확대 표시 적용) 판정 결과 드롭다운 ComboBox [전체] / OK / NG -판정 결과에 따른 필터링 (기본값: 전체) +판정 결과에 따른 필터링을 수행합니다. (기본값: 전체) @@ -1619,25 +1669,25 @@ OfflinePreview=false ID 검색 TextBox (텍스트 입력) -IC_SN 또는 PCB_Barcode 컬럼에 대한 부분 일치 (LIKE) 검색 +IC_SN 또는 PCB_Barcode 열에 대한 부분 일치 (LIKE) 검색을 수행합니다. (빈 값 = 필터 제외) 작업자 TextBox (텍스트 입력) -작업자 ID (Operator) 컬럼에 대한 부분 일치 검색 +작업자 ID (Operator) 열에 대한 부분 일치 검색을 수행합니다. (빈 값 = 필터 제외) Lot No TextBox (텍스트 입력) -랏 번호 (Lot_No) 컬럼에 대한 부분 일치 검색 +로트 번호 (Lot_No) 열에 대한 부분 일치 검색을 수행합니다. (빈 값 = 필터 제외) 모델 TextBox (텍스트 입력) -모델명 (Model) 컬럼에 대한 부분 일치 검색 +모델명 (Model) 열에 대한 부분 일치 검색을 수행합니다. (빈 값 = 필터 제외) @@ -1655,32 +1705,31 @@ OfflinePreview=false Search 파란색 계열 -설정된 2행의 모든 필터 조건으로 로컬 로그 CSV 백업 파일을 부분일치 검색하여 그리드에 표시합니다. (안정성을 위해 DB 접속 조회가 아닌 로컬 파일 조회로 작동합니다.) +설정된 필터 조건으로 로컬 로그 CSV 백업 파일을 검색하여 그리드에 표시합니다. (시스템 안정성을 위해 데이터베이스 직접 조회 대신 로컬 백업 파일을 조회하도록 설계되었습니다.) Cancel (취소) 빨간색 계열 -조회 중일 때 로딩 화면 내부에 나타나며, 진행 중인 파일 검색 작업을 즉시 중단하고 화면을 복귀시킵니다. +조회 중일 때 로딩 화면 내부에 나타나며, 진행 중인 파일 검색 작업을 중단하고 이전 화면으로 복귀합니다.

      Search 버튼 동작 상세

        -
      1. 설정된 조회 기간 날짜를 직접 일자별로 조합하여 해당하는 일일 로그 CSV 파일만 콕 집어 정밀 탐색합니다. (전체 디렉토리 풀 스캔 차단으로 조회 속도가 매우 빠릅니다.)
      2. -
      3. 검색 조건(판정, ID, 작업자, Lot No, 모델)에 맞는 대상을 인메모리 부분일치 검색 처리합니다. (과거 구형 8개 컬럼 포맷 파일도 하위 호환되어 정상 파싱됩니다.)
      4. -
      5. 검색 결과가 없으면 "해당 조건의 데이터가 없습니다." 알림 표시.
      6. +
      7. 지정된 조회 기간에 해당하는 일별 로그 CSV 파일만 조회하여 검색을 수행합니다. (불필요한 파일 스캔을 제한하여 검색 속도를 향상시켰습니다.)
      8. +
      9. 검색 조건(판정, ID, 작업자, Lot No, 모델)에 맞는 데이터를 인메모리 부분 일치 방식으로 검색합니다.
      10. +
      11. 검색 결과가 존재하지 않을 경우 "해당 조건의 데이터가 없습니다." 알림을 표시합니다.

      조회 중 로딩 및 Cancel 버튼 동작 상세

        -
      1. Search 버튼 클릭 시 화면 전체에 "Searching Logs..." 라는 반투명 어두운 로딩 오버레이가 활성화되어 작업 중임을 시각적으로 나타냅니다.
      2. -
      3. 데이터가 많아 조회가 오래 걸릴 경우 로딩 오버레이의 Cancel (취소) 버튼을 누르면 즉시 조회가 중단되고, "조회가 취소되었습니다." 알림과 함께 메인 화면으로 안전하게 복귀합니다.
      4. +
      5. Search 버튼 클릭 시 화면 전체에 "Searching Logs..." 라는 반투명 오버레이가 활성화되어 검색이 진행 중임을 나타냅니다.
      6. +
      7. 검색이 지연될 경우 로딩 오버레이의 Cancel (취소) 버튼을 누르면 즉시 조회가 중단되고, "조회가 취소되었습니다." 메시지 박스 팝업 후 자동으로 메인 화면으로 복귀합니다.
      -

      6.4 데이터 그리드 컬럼 (DB EOL 스키마 표준 규격)

      +

      6.4 데이터 조회 결과 표(그리드) 항목 안내

      - @@ -1688,109 +1737,93 @@ OfflinePreview=false - - + - - + - - - - - - - - - - - - - -
      컬럼 헤더명바인딩 프로퍼티 정렬 설명
      IC_SNIcSn 좌측제품 고유 IC SN 시리얼 번호 (PK/FK)제품 고유 IC 시리얼 번호
      PCB_BarcodePcbBarcode 좌측PCB 바코드 고유 식별 정보 (UK)PCB 바코드 고유 식별 정보
      MakerMaker 좌측 로그인 시 입력된 제조사명
      ModelModel 좌측 로그인 시 입력된 검사 모델명
      Variant_1Variant1 좌측 로그인 시 입력된 세부 파생 모델 1
      Variant_2Variant2 좌측 로그인 시 입력된 세부 파생 모델 2
      OperatorOperator 좌측 작업 진행자 사용자 ID
      Production_DateProductionDate 좌측 검사 수행 및 완료 일시 (yyyy-MM-dd HH:mm:ss)
      LineLine 좌측 로그인 공정 작업 라인
      Lot_NoLotNo 좌측 생산 Lot 번호
      Jig_NoJigNo 좌측 사용 지그(Jig) 번호
      ChannelChannel 좌측 검사 채널 (LEFT 또는 RIGHT)
      Spec_ULSpecUL 좌측 누설 상한 규격값 (sccm)
      Spec_LLSpecLL 좌측 누설 하한 규격값 (sccm)
      Leak_ValueMeasuredValue 우측 측정된 누설 리크량 (볼드 표시)
      ResultJudgment 중앙 최종 판정 결과 (OK 초록 / NG 빨강 볼드 강조)
      -

      그리드 스타일

      +

      표(그리드) 스타일

        -
      • 격자선: 수평/수직 연회색 격자선 표시
      • -
      • 홀수 행 배경: 흰색, 짝수 행 배경: 연회색 배경으로 행 식별 편의 제공
      • -
      • 선택된 행: 연파랑 배경에 파란색 텍스트로 강조
      • -
      • 컬럼 헤더 클릭 시 해당 열 기준 오름차순/내림차순 정렬 가능 (컬럼 순서 변경 불가)
      • -
      • 최소 50행이 항상 표시됩니다 (데이터가 적어도 격자 형태 유지를 위해 빈 행으로 채워짐)
      • +
      • 격자선: 수평 및 수직 연회색 격자선을 표시합니다.
      • +
      • 교대 행 배경: 홀수 행은 흰색, 짝수 행은 연회색 배경을 적용하여 가독성을 높였습니다.
      • +
      • 선택된 행: 연파란색 배경에 파란색 텍스트로 강조합니다.
      • +
      • 컬럼 헤더 정렬: 헤더 클릭 시 해당 열 기준으로 오름차순 또는 내림차순 정렬이 가능합니다. (컬럼 순서 변경은 제한됩니다.)
      • +
      • 격자 유지: 조회된 데이터 개수가 50개 미만이더라도 화면 구성을 유지하기 위해 나머지 행은 빈 칸으로 채워져 표시됩니다.

      6.5 화면 닫기

      @@ -1803,11 +1836,11 @@ OfflinePreview=false - + - +
      하단 Close 버튼 클릭메인 화면으로 복귀메인 화면으로 복귀합니다.
      하단 메뉴 Data 버튼 재클릭토글 동작으로 메인 화면으로 복귀토글 동작을 통해 메인 화면으로 복귀합니다.
      @@ -1816,22 +1849,22 @@ OfflinePreview=false

      7. 자동 시험 프로세스


      7.1 개요

      -

      자동 시험은 DIO 시작 신호(LEFT_START 또는 RIGHT_START)에 의해 트리거되며, 7단계로 진행됩니다. 좌/우 채널은 각각 독립적인 백그라운드 스레드에서 실행되지만, 세마포어 잠금을 통해 동시 실행은 방지됩니다.

      +

      자동 시험은 시작 신호(LEFT_START 또는 RIGHT_START)에 의해 작동하며, 7단계로 진행됩니다. 좌/우 채널은 각각 독립적인 백그라운드 스레드에서 실행되지만, 중복 실행 방지 기능을 통해 동시 시험은 방지됩니다.

      7.2 전체 프로세스 흐름도

      -
      DIO 시작 신호 감지 (LEFT_START 또는 RIGHT_START: OFF➔ON)
      +
      시작 신호 감지 (좌측/우측 시작 신호 입력 시)
      - 세마포어 잠금 대기 + 중복 실행 방지 대기
      - • 잠금 불가 시: "대기중" 메시지 표시 후 대기
      - • 잠금 획득 시: 다음 단계로 진행 (좌/우 채널 동시 시험 방지) + • 다른 채널이 시험 중인 경우: "대기중" 메시지를 표시하며 순서 대기
      + • 시험 가능 상태인 경우: 다음 단계 진행 (좌/우 채널 동시 시험 방지)
      @@ -1840,59 +1873,69 @@ OfflinePreview=false 1단계: 시험 시작 (초기화)
      - • OK/NG DIO 출력 초기화 (OFF)
      + • 합격/불합격 신호 출력 초기화 (OFF)
      • 메인 화면 결과 표시 초기화 및 시작 시간 갱신
      - • Sentinel C28 LEAK 센서 수신 이벤트 버퍼 초기화 + • 누설 센서 수신 데이터 초기화
      - 2단계: 센서 정보 읽기 (ID 판독) + 2단계: 제품 ID 판독
      - • 4251 보드를 통해 제품 ID 센서에서 16자리 ID 판독
      - • [실패 시] "ID 읽기 실패" 오류 출력 후 NG 판정 조기 종료 (DB 비동기 저장) + • 판독 장치(4251 보드)를 통해 제품 ID 센서에서 16자리 ID 판독
      + • [실패 시] "ID 읽기 실패" 오류 출력 후 시험이 종료되며 결과는 기록 및 저장에서 제외됩니다.
      -
      - - 3단계: LEAK 시험 수행 (계측) +
      + + 3단계: PCB 바코드 데이터베이스 조회
      - • 화면에 "LEAK 시험중" 표시
      - • Sentinel C28 센서의 최종 압력 누설 측정 결과 대기 (최대 30초)
      - • [타임아웃] "Sentinel C28 통신 타임아웃" 오류 후 NG 판정 종료 + • 데이터베이스에서 제품 ID(`IC_SN`)에 매칭되는 `PCB_Barcode` 조회 (5초 대기 시간 초과 제한)
      + • [실패/누락 시] "바코드 매핑 실패" 오류 출력 후 즉시 종료되며 결과는 기록 및 저장에서 제외됩니다.
      - 4단계: 합격 판정 + 4단계: 누설 시험 수행 (계측)
      - • SPEC LL ≤ 측정값 ≤ SPEC UL 이면 **OK (합격)**, 범위를 벗어나면 **NG (불합격)** + • 화면에 "LEAK 시험중" 표시
      + • 누설 센서(Sentinel C28)로부터 측정 결과 수신 대기 (최대 30초)
      + • [시간 초과 시] 통신 시간 초과 오류 발생 및 불합격(NG) 판정으로 자동 종료 (측정값 9.9999로 데이터베이스에 저장)
      - 5단계: SPEC 교차 검증 + 5단계: 합격 판정
      - • 프로그램(UI) 판정과 센서 자체 판정(OK/A/P vs NG/R/F)을 상호 비교
      - • 불일치 시 `SpecMismatch` 플래그 설정 및 경고 팝업 표시 + • 규격 하한값 ≤ 측정값 ≤ 규격 상한값 이면 **OK (합격)**, 범위를 벗어나면 **NG (불합격)**로 판정합니다.
      +
      + + 6단계: 판정 스펙 교차 검증 +
      + • 프로그램 판정과 센서 자체 판정을 비교 분석합니다.
      + • 판정이 서로 다를 경우 화면에 경고 창을 표시합니다. (통신 설정에서 알림 창 표시를 끌 수 있습니다.) +
      +
      + +
      - 6단계: 결과 출력 및 저장 + 7단계: 결과 출력 및 저장
      - • 로컬 CSV 로그 파일 기록 및 MSSQL DB에 비동기 저장
      - • 판정 결과에 따른 DIO 하드웨어 출력 (OK 또는 NG 포트 ON)
      + • 로컬 CSV 백업 파일 기록 및 데이터베이스에 검사 결과 저장
      + • 판정 결과에 따라 외부 설비에 출력 신호(OK 또는 NG 포트) 전송
      • 메인 화면에 최종 측정값 및 판정 출력 ("시험 완료" 표시)
      @@ -1900,15 +1943,15 @@ OfflinePreview=false
      - 세마포어 잠금 해제 + 순서 잠금 해제
      - • 시험 종료 후 잠금 해제 → 대기 중인 채널이 있을 경우 350ms 안정화 대기 후 자동 시작 + • 시험 종료 후 순서 대기가 해제되며, 대기 중이던 다른 채널이 0.35초 대기 후 자동으로 시험을 개시합니다.
      -

      7.3 순차 실행 (세마포어 잠금)

      -

      좌/우 채널은 동시에 시험을 수행할 수 없습니다. 이는 하드웨어 통신 충돌을 방지하기 위함입니다.

      +

      7.3 좌/우 채널 순차 실행 및 대기

      +

      좌/우 채널은 동시에 시험을 수행할 수 없습니다. 이는 하드웨어 통신 간섭 및 충돌을 방지하기 위함입니다.

      @@ -1918,32 +1961,44 @@ OfflinePreview=false - - + + - - + + - +
      한 채널만 시작 신호즉시 시험 시작한 채널만 시험 시작 신호 발생즉시 시험을 시작합니다.
      양쪽 동시 시작 신호먼저 잠금을 획득한 채널이 시험 진행, 다른 채널은 "대기중" 표시양쪽 채널 동시 신호 발생먼저 순서를 획득한 채널이 시험을 진행하며, 다른 채널은 "대기중"을 표시하며 대기합니다.
      시험 완료 후대기 중인 채널이 자동으로 시험 시작 (350ms 안정화 대기 후)대기 중이던 채널이 자동으로 시험을 시작합니다. (안정화를 위해 0.35초의 대기 시간이 적용됩니다.)
      -

      참고: 하드웨어 통신 안정화를 위해, 이전 채널 시험 종료 후 350ms의 여유 시간이 자동으로 적용됩니다.

      +

      참고: 하드웨어 통신 안정화를 위해 이전 채널의 시험 종료 후 0.35초의 여유 시간이 자동으로 적용됩니다.

      -

      7.4 타임아웃 처리

      -

      Sentinel C28 센서에서 30초 이내에 응답이 없으면:

      +

      7.4 시간 초과 (타임아웃) 처리

      +

      누설 센서에서 30초 이내에 계측 결과 응답이 없으면 다음과 같이 처리됩니다.

        -
      1. "Sentinel C28 통신 타임아웃" 오류 메시지 표시 (DB 저장 실패 시 "DB 저장 실패"도 오류 메시지에 추가 표시)
      2. -
      3. 해당 채널 DIO NG 출력 ON
      4. -
      5. 측정값 0.0000, 판정 NG, 센서판정 T/O (Timeout)로 기록
      6. -
      7. CSV 로그 파일 및 MSSQL 데이터베이스에 NG 결과 비동기 기록
      8. +
      9. 화면의 오류 메시지 영역에 "통신 시간 초과" 오류 메시지를 표시합니다. (데이터베이스 저장 실패 시 "DB 저장 실패" 사유도 함께 노출)
      10. +
      11. 해당 채널의 불합격(NG) 물리 신호를 내보냅니다.
      12. +
      13. 측정값 9.9999, 판정 NG로 기록을 생성합니다.
      14. +
      15. 로컬 CSV 로그 파일 및 데이터베이스에 검사 결과를 기록합니다. (단, 이전 단계인 제품 ID 판독에 성공한 상태여야 저장이 이루어집니다.)
      -

      7.5 C28 센서 결과 채널 라우팅

      -

      Sentinel C28 센서에서 수신한 데이터는 채널 번호(ChannelNo)로 구분됩니다:

      +

      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 누설 센서 측정 결과 채널 분류

      +

      누설 센서에서 수신한 데이터는 다음 채널 번호 정보를 기준으로 정렬됩니다.

      @@ -1954,45 +2009,42 @@ OfflinePreview=false - + - + - - + +
      C01 또는 1LEFT 채널좌측(LEFT) 채널
      C02 또는 2RIGHT 채널우측(RIGHT) 채널
      채널 번호 없음현재 활성화된(시험 중인) 채널로 자동 할당채널 번호 식별 불가현재 활성화되어 시험을 진행 중인 채널로 자동 배정
      -

      7.6 ID 수동 테스트

      -

      하단 메뉴의 ID Test (L) 또는 ID Test (R) 버튼으로 DIO 시작 신호 없이 센서 ID 판독만 수행할 수 있습니다.

      +

      7.7 ID 수동 테스트

      +

      하단 메뉴의 ID Test (L) 또는 ID Test (R) 버튼을 사용하면 시험 시작 신호 없이 센서 ID 판독 동작만 단독으로 수행할 수 있습니다.

      실행 흐름

        -
      1. 세마포어 잠금 획득 (다른 채널 시험 중이면 대기)
      2. -
      3. 결과 표시 초기화
      4. -
      5. 500ms 대기 (UI 피드백용)
      6. -
      7. "센서 정보 읽는 중" 메시지 표시
      8. -
      9. 4251 보드를 통해 제품 ID 판독
      10. -
      11. 성공 시: ID 표시 + "ID 테스트 완료"
      12. -
      13. 실패 시: ID를 "-"로 표시 + "ID 테스트 실패"
      14. -
      15. 세마포어 잠금 해제
      16. +
      17. 중복 방지 잠금 획득 (다른 채널이 시험 중인 경우 대기)
      18. +
      19. 결과 표시 초기화 및 0.5초 대기
      20. +
      21. "센서 정보 읽는 중" 메시지 표시 후 ID 판독 시작
      22. +
      23. 성공 시: 판독된 ID 표시 및 "ID 테스트 완료" 메시지 표시
      24. +
      25. 실패 시: ID 영역에 "-" 표시 및 "ID 테스트 실패" 메시지 표시
      26. +
      27. 잠금 해제
      -

      용도: 설치 후 하드웨어 연결 상태 확인, 디버깅 시 활용합니다. LEAK 시험(3~6단계)은 수행하지 않습니다.

      +

      용도: 장비 설치 후 통신 상태 확인 및 디버깅 시 사용합니다. 실제 누설 시험(압력 계측)은 수행하지 않습니다.

      -

      7.7 SPEC 교차 검증 및 판정 저장 기준

      -

      시험 과정에서 프로그램(UI) 판정과 C28 센서 자체의 판정이 불일치하는 경우, 데이터베이스 및 로그 저장의 기준은 다음과 같습니다.

      +

      7.8 측정 판정 및 저장 기준

      +

      프로그램의 판정 스펙(상하한 규격) 기준과 누설 센서 자체의 내부 스펙 판정 기준이 일치하지 않는 경우, 저장소에는 다음과 같이 저장됩니다.

      저장 기준 요약

        -
      • 최종 저장 판정 (Result): C28 센서 자체의 판정값과 무관하게, 항상 프로그램(UI) 판정 기준(programJudgment)으로 데이터베이스 및 로그에 저장됩니다.
      • -
      • 동작 예시: UI 상으로 합격(OK)이지만 C28 센서 자체적으로는 불합격(NG/R)인 경우, 최종 DB(Result 컬럼) 및 CSV 로그에는 OK (합격)로 저장됩니다.
      • +
      • 최종 저장 판정 (Result): 센서 자체의 판정값과 무관하게, 항상 프로그램 화면 판정 기준으로 데이터베이스 및 로그에 저장됩니다.
      • +
      • 동작 예시: 프로그램 판정이 합격(OK)이지만 센서 자체의 내부 판정이 불합격(NG 등)인 경우에도, 최종 기록 및 CSV에는 OK (합격)로 기록됩니다.
      -

      교차 검증 실패 시의 동작 (Spec Mismatch)

      +

      판정 스펙 불일치 시의 동작

        -
      • 프로그램 판정과 센서 자체 판정이 다르면 specMismatch 플래그가 true로 설정됩니다.
      • -
      • 불일치 발생 시 콘솔 로그에 경고([TestProcess] {side} SPEC Mismatch!)를 출력하고 UI 완료 이벤트 인자로 전달되지만, DB에 저장되는 최종 판정 결과(Result)에는 영향을 미치지 않고 프로그램 판정값을 유지합니다.
      • +
      • 양측의 판정 스펙이 다르면 불일치 로그가 기록되며 화면에 경고 팝업이 출력되지만, 최종 저장되는 판정 결과에는 영향을 미치지 않고 프로그램 판정값을 유지합니다.
      @@ -2010,7 +2062,7 @@ OfflinePreview=false 저장 위치 -C:\ProgramData\MobiLeakTest\Logs\yyyy-MM-dd.csv +C:\LeakTest\Logs\yyyy-MM-dd.csv 파일 형식 @@ -2127,7 +2179,6 @@ OfflinePreview=false

      참고: 타임아웃 발생 시에도 측정값 0.0000, 판정 NG로 로그에 기록됩니다.

      -

      참고: 프로그램은 구형 8개 컬럼 포맷(Date,Time,ID,Channel,SpecUL,SpecLL,Value,Judgment)의 로그 파일에 대해서도 컬럼 크기를 기준으로 자동 감지 및 파싱(하위 호환성)을 수행합니다.

      참고: CSV 값에 쉼표, 따옴표, 줄바꿈이 포함된 경우 자동으로 이스케이프 처리됩니다.


      @@ -2143,7 +2194,7 @@ OfflinePreview=false 저장 위치 -C:\ProgramData\MobiLeakTest\Logs\yyyy-MM-dd_system.log +C:\LeakTest\Logs\yyyy-MM-dd_system.log 파일 형식 @@ -2176,7 +2227,7 @@ OfflinePreview=false 위치 -프로그램 실행 폴더 +프로그램 실행 폴더 (C:\LeakTest\config.xml) 생성 @@ -2196,6 +2247,7 @@ OfflinePreview=false <Board4251Timeout>5000</Board4251Timeout> <SpecUL>1.00</SpecUL> <SpecLL>-1.00</SpecLL> + <EnableSpecMismatchAlarm>true</EnableSpecMismatchAlarm> </AppConfig> @@ -2250,6 +2302,12 @@ OfflinePreview=false + + + + + +
      Parameters 누설 하한 규격값
      EnableSpecMismatchAlarmtrueComm. Settings스펙 불일치 알림 활성화 여부 (true/false)

      Database.ini

      @@ -2263,11 +2321,11 @@ OfflinePreview=false 위치 -C:\ProgramData\MobiLeakTest\Database.ini +C:\LeakTest\Database.ini 생성 -배포 시 기본 포함 및 파일 누락 상태로 기동 시 기본 양식이 자동 생성됨 +최초 실행 시 해당 파일이 없으면 기본 양식으로 자동 생성. 배포 폴더(C:\LeakTest\)와 동일 위치에 저장되어 경로 관리가 단순함 수정 @@ -2275,50 +2333,63 @@ OfflinePreview=false -
      ; [데이터베이스 접속 상세 설정]
      -Db_Server=192.168.0.20
      -Db_Name=NE1aW_PT_SENSOR
      -Db_User=sa
      -Db_Password=sa1234
      +
      ; =====================================================================
      +; Leak Test System - 데이터베이스 및 로그인 설정 파일 (Database.ini)
      +; =====================================================================
      +
      +; [데이터베이스 접속 상세 설정]
      +; Db_Server  : 중앙 MSSQL 데이터베이스 서버의 IP 주소 또는 호스트명
      +; Db_Name    : 검사 데이터를 저장할 대상 데이터베이스 이름
      +; Db_User    : 데이터베이스 접속 계정 ID (예: sa)
      +; Db_Password: 데이터베이스 접속 계정의 비밀번호
      +Db_Server=127.0.0.1, 1433
      +Db_Name=Test_DB
      +Db_User=db_user
      +Db_Password=db_password
       
       [Login]
      +; Procedure: 로그인 검증에 사용할 DB 저장 프로시저명입니다. (공란일 경우 기본 테이블 조회 쿼리 작동)
       Procedure=dbo.CheckOperator
      +
      +; ProcessName: 로그인 검증 시 전달할 공정 이름입니다.
       ProcessName=EOL
      +
      +; OfflinePreview: 오프라인 모드 활성화 여부 (true = DB 연결 없이 로그인 통과, false = 실제 DB 인증)
       OfflinePreview=false
       
      - + - - + + - + - + - + - + @@ -2332,6 +2403,50 @@ OfflinePreview=false
      설정 키예시예시 / 기본값 설명
      Db_Server192.168.0.20데이터베이스 서버 IP 주소 또는 호스트명[서버IP], [포트번호] (예: 127.0.0.1, 1433)데이터베이스 서버 IP 주소 및 포트 번호
      Db_NameNE1aW_PT_SENSOR[데이터베이스명] (예: Test_DB) 대상 데이터베이스(DB) 이름
      Db_Usersa[사용자ID] (예: db_user) 데이터베이스 접속 계정 ID
      Db_Passwordsa1234[비밀번호] (예: db_password) 데이터베이스 접속 계정 비밀번호
      Procedure dbo.CheckOperator로그인 계정 검증용 저장 프로시저명로그인 계정 검증용 데이터베이스 프로그램명
      ProcessName
      +
      +

      SSL 인증 오류 방지: DB 연결 시 SSL 인증서 신뢰 오류가 발생하는 환경을 방지하기 위해 프로그램 내부에서 자동으로 TrustServerCertificate=True; 옵션을 연결 문자열 끝에 추가하여 안정적인 동작을 보장합니다.

      +
      +

      LoginOptions.json / LoginHistory.json

      + + + + + + + + + + + + + + + + + + + + + +
      항목내용
      위치C:\LeakTest\
      생성최초 실행 시 자동 생성
      수정프로그램 내 로그인 화면 사용 시 자동 갱신
      + + + + + + + + + + + + + + + + + +
      파일설명
      LoginOptions.json로그인 화면 각 필드(Maker, Model, Variant_1 등)의 자동완성 드롭다운 선택지 목록 저장
      LoginHistory.json최근 로그인 정보(작업자 ID, 라인, 모델 등 전체 세트)를 최대 10건 저장하여 재사용

      DioConfig.ini

      @@ -2404,118 +2519,101 @@ BoardNumber=0

      -

      8.5 데이터베이스 데이터 관리 (dbo.EOL)

      -

      매 시험 완료 시 검사 결과 및 로그인 정보가 데이터베이스에 실시간으로 저장(MERGE/UPSERT)됩니다.

      -

      데이터베이스 테이블 및 컬럼 매핑

      +

      8.5 데이터베이스 데이터 관리

      +

      검사가 완료되면 측정 결과와 작업 정보가 데이터베이스에 자동으로 저장됩니다.

      +

      데이터베이스 저장 항목 안내

        -
      • 대상 테이블: [dbo].[EOL]
      • -
      • 매핑 상세:
      • +
      • 저장 대상 테이블: EOL
      • +
      • 저장 항목 상세:
      - - - - + + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + +
      DB 컬럼명데이터 타입매핑되는 C# 데이터비고데이터베이스 항목명구분설명
      IC_SNNVARCHAR(10)제품의 최종 조합 ID (inspectData.ProductId)PK / FK문자형 (최대 10자)제품 고유 IC 일련번호
      PCB_BarcodeNVARCHAR(10)고유 식별용 바코드 정보 (inspectData.ProductId 매핑)UK문자형 (최대 10자)조회된 PCB 바코드 정보
      MakerNVARCHAR(10)로그인 제조사 정보 (App.LoginResult.Maker)문자형 (최대 10자)로그인 시 입력한 제조사명
      ModelNVARCHAR(10)로그인 모델 정보 (App.LoginResult.Model)문자형 (최대 10자)로그인 시 입력한 검사 모델명
      Variant_1NVARCHAR(10)로그인 변형1 정보 (App.LoginResult.Variant1)문자형 (최대 10자)로그인 시 입력한 파생 모델명 1
      Variant_2NVARCHAR(10)로그인 변형2 정보 (App.LoginResult.Variant2)문자형 (최대 10자)로그인 시 입력한 파생 모델명 2
      OperatorNVARCHAR(10)로그인 검사자 ID (App.LoginResult.Operator)문자형 (최대 10자)검사자(작업자) ID
      Production_DateDATETIME2(0)검사 수행 일시 (DateTime.Now)날짜/시간형검사가 완료된 시간
      LineNVARCHAR(5)로그인 작업 라인 (App.LoginResult.LineNo)문자형 (최대 30자)로그인 시 입력한 작업 라인명
      Lot_NoNVARCHAR(8)로그인 Lot 번호 (App.LoginResult.LotNo)문자형 (최대 8자)로그인 시 입력한 Lot 번호
      Jig_NoNVARCHAR(10)로그인 지그 번호 (App.LoginResult.JigNo)문자형 (최대 10자)로그인 시 입력한 지그 번호
      ChannelNVARCHAR(5)검사 채널 (LEFT / RIGHT)문자형 (최대 5자)검사가 수행된 채널 (LEFT / RIGHT)
      Spec_ULDECIMAL(3,2)규격 상한값 (소수점 2자리)숫자형리크 판정 상한 기준값
      Spec_LLDECIMAL(3,2)규격 하한값 (소수점 2자리)숫자형리크 판정 하한 기준값
      Leak_ValueDECIMAL(5,4)측정된 릭 값 (소수점 4자리)숫자형측정된 누설량
      ResultNVARCHAR(5)최종 판정 결과 (OK 또는 NG)문자형 (최대 5자)최종 판정 결과 (OK / NG)
      @@ -2566,8 +2664,8 @@ BoardNumber=0 ① 센서 전원 ON 확인 ② 시리얼 케이블 연결 확인 ③ BaudRate 설정 확인 (기본: 9600) -통신 실패 (4251 보드 CHx 상태 타임아웃) -4251 보드가 응답 시간(15초) 내에 상태 응답을 회신하지 않음 +통신 실패 (4251 보드 CHx 상태 응답 시간 초과) +4251 보드가 대기 시간(15초) 내에 응답하지 않음 ① 4251 보드 전원 공급 및 케이블 연결선 확인 ② 통신 노이즈 방지 조치 확인 @@ -2583,7 +2681,7 @@ BoardNumber=0 SPEC 불일치 - 프로그램: OK, 센서: R 프로그램 SPEC과 센서 자체 SPEC의 판정이 다름 -① 프로그램의 SPEC UL/LL 확인 (Parameters) ② C28 센서의 SPEC 설정 확인 ③ 양쪽 설정값 동기화 +① 프로그램의 SPEC UL/LL 확인 (Parameters) ② C28 센서의 SPEC 설정 확인 ③ 양쪽 설정값 동기화 (※ 통신 설정에서 경고 알림 스위치 상태를 확인하세요) LEAK 센서 데이터 오류 @@ -2591,20 +2689,28 @@ BoardNumber=0 ① 센서 통신 상태 확인 ② 케이블 접촉 불량 확인 ③ BaudRate 불일치 확인 -DB 저장 실패 -중앙 MSSQL DB 서버에 검사 데이터를 저장하지 못함 -① PC 네트워크 케이블 및 통신 연결 확인 ② Database.ini 파일의 접속 정보(IP/비밀번호 등) 확인 ③ 로컬 일일 CSV 로그 파일(C:\ProgramData\MobiLeakTest\Logs/yyyy-MM-dd.csv)에 백업이 잘 저장되었는지 확인 +DB 저장 실패: [오류 원인] 상세 메시지 +데이터베이스 서버에 검사 데이터를 저장하지 못함 +① 네트워크 케이블 및 서버 통신 연결 확인 ② Database.ini 설정 파일의 접속 정보(IP/비밀번호 등) 확인 ③ 로컬 일일 CSV 로그 파일에 백업이 정상적으로 저장되었는지 확인 + + +바코드 매핑 실패: [오류 원인] 상세 메시지 +데이터베이스에서 해당 IC_SN에 매칭되는 바코드 정보를 찾지 못함 +① 데이터베이스 서버 네트워크 연결 확인 ② Housing_Assembly 테이블에 대상 제품의 바코드 정보 매핑 상태 점검

      9.3 SPEC 교차 검증 경고 팝업

      -

      프로그램 판정과 센서 판정이 불일치하면 팝업 경고가 표시됩니다:

      +

      프로그램 판정과 센서 판정이 불일치할 때, 통신 설정 화면의 스펙 불일치 알림 활성화 옵션이 켜져(ON) 있는 경우 팝업 경고가 표시됩니다:

      [!] SPEC 교차 검증 경고
       "프로그램 스팩과 센서의 스팩이 서로 맞지 않습니다."
                                     [확인]
       
      -

      이 경고는 검사 자체를 중단하지는 않지만, 프로그램의 판정 결과가 최종 기록에 사용됩니다.

      +
        +
      • 만약 이 옵션을 해제(OFF)한 경우, 이 팝업 경고 대화상자는 나타나지 않으며, 메인 화면 하단의 오류 메시지 텍스트 박스에만 불일치 로그가 기록됩니다.
      • +
      • 이 경고는 검사 자체를 중단하지는 않으며, 프로그램의 판정 결과가 최종 DB 및 로컬 로그 기록에 사용됩니다.
      • +

      9.4 DIO 보드 오류

      @@ -2629,7 +2735,7 @@ BoardNumber=0
      -

      시뮬레이션 모드: ADLINK 드라이버가 신설되지 않은 개발 환경에서도 프로그램의 나머지 기능(통신 설정, 데이터 조회 등)을 테스트할 수 있도록 자동 전환됩니다.

      +

      시뮬레이션 모드: ADLINK 드라이버가 설치되지 않은 환경에서도 프로그램의 기능(통신 설정, 데이터 조회 등)을 사전에 테스트할 수 있도록 제공되는 가상 동작 모드입니다.


      9.5 일반적인 문제 해결

      @@ -2699,15 +2805,15 @@ BoardNumber=0 2 -대기 중인 세마포어 해제 +대기 중인 순서 잠금 해제 3 -DIO 이벤트 구독 해제 +디지털 입출력(DIO) 신호 감지 중단 4 -C28 센서 이벤트 구독 해제 +누설 센서 신호 감지 중단 5 diff --git a/leak_test_project/Manual/Manual_Merged.md b/leak_test_project/Manual/Manual_Merged.md index 8ede402..b707781 100644 --- a/leak_test_project/Manual/Manual_Merged.md +++ b/leak_test_project/Manual/Manual_Merged.md @@ -1,4 +1,4 @@ -