diff --git a/.vs/marking_gui.slnx/v18/.suo b/.vs/marking_gui.slnx/v18/.suo index ff9e500..8c54e72 100644 Binary files a/.vs/marking_gui.slnx/v18/.suo and b/.vs/marking_gui.slnx/v18/.suo differ diff --git a/marking_gui/MainWindow.xaml.cs b/marking_gui/MainWindow.xaml.cs index 3877946..c732184 100644 --- a/marking_gui/MainWindow.xaml.cs +++ b/marking_gui/MainWindow.xaml.cs @@ -119,13 +119,10 @@ namespace marking_gui // MainWindow의 실제 Win32 윈도우 핸들(HWND) 획득 IntPtr windowHandle = new System.Windows.Interop.WindowInteropHelper(this).Handle; - // Setting.ini 또는 EzCad 설정 폴더 경로 지정하여 디바이스 초기화 (1회 시도) + // Setting.ini 또는 EzCad 설정 폴더 경로 지정하여 디바이스 초기화 (메인 UI 스레드에서 직접 호출하여 HWND/C++ P/Invoke 호환성 보장) string iniPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Setting.ini"); - bool initResult = await System.Threading.Tasks.Task.Run(() => - { - LoggerService.Info("마킹 디바이스 LMC 초기화 시도..."); - return _markingService.Initialize(iniPath, windowHandle); - }); + LoggerService.Info("마킹 디바이스 LMC 초기화 시도 (UI 스레드)..."); + bool initResult = _markingService.Initialize(iniPath, windowHandle); if (initResult) { @@ -1535,7 +1532,7 @@ namespace marking_gui { Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); - // 기본 파일 탐색 경로 설정: C:\EzCad\EasyCfg 폴더를 기본 탐색 경로로 지정 + // 기본 파일 탐색 경로 설정: C:\EzCad\EasyCfg 폴더를 디폴트 경로로 지정 string initialDir = @"c:\EzCad\EasyCfg"; if (!System.IO.Directory.Exists(initialDir)) { @@ -1543,7 +1540,11 @@ namespace marking_gui } if (!System.IO.Directory.Exists(initialDir)) { - initialDir = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EasyCfg"); + initialDir = @"c:\EzCad"; + } + if (!System.IO.Directory.Exists(initialDir)) + { + initialDir = AppDomain.CurrentDomain.BaseDirectory; } if (System.IO.Directory.Exists(initialDir)) { diff --git a/marking_gui/Manual/.obsidian/workspace.json b/marking_gui/Manual/.obsidian/workspace.json index 6ae25c3..2bc49db 100644 --- a/marking_gui/Manual/.obsidian/workspace.json +++ b/marking_gui/Manual/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "02_초기_설정.md", + "file": "07_시험_프로세스.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "02_초기_설정" + "title": "07_시험_프로세스" } } ] @@ -185,12 +185,28 @@ }, "active": "b98d55f22f4d8058", "lastOpenFiles": [ - "Manual_for_pdf.html", + "08_로그_관리.md", + "06_데이터_조회.md", + "07_시험_프로세스.md", + "09_오류_대응.md", + "사용자_메뉴얼.md", "05_시험_설정.md", + "Pasted image 20260728100910.png", + "Pasted image 20260728100846.png", "04_통신_설정.md", + "Pasted image 20260728100828.png", + "Pasted image 20260728100748.png", "03_메인_화면.md", + "Pasted image 20260728100445.png", + "Pasted image 20260728100413.png", + "Pasted image 20260728100404.png", + "Pasted image 20260728100354.png", + "Pasted image 20260728100343.png", + "Pasted image 20260728100308.png", "02_초기_설정.md", "01_시스템_개요.md", - "06_데이터_조회.md" + "Manual.docx", + "build_docx.py", + "Manual_for_pdf.html" ] } \ No newline at end of file diff --git a/marking_gui/Manual/01_시스템_개요.md b/marking_gui/Manual/01_시스템_개요.md index f4647fb..1df1fb1 100644 --- a/marking_gui/Manual/01_시스템_개요.md +++ b/marking_gui/Manual/01_시스템_개요.md @@ -17,8 +17,8 @@ | **일련번호(S/N) 자동 추출** | 센서 판독 보드를 통해 제품 안착 시 제품 내부 메모리로부터 일련번호를 추출합니다. | | **선행 공정 검사 교차 조회** | 이전 단계(하우징 조립, 센서 보정, 1차 EOL 성능 검사)가 모두 합격 판정되었는지 생산 데이터베이스에서 조회합니다. | | **자동 계측 시퀀스** | 전원 공급 장치와 전압/저항 측정 장비들과 연동하여 제품에 테스트 전원을 투입하고 전압, 저항, 전류 값을 차례대로 계측합니다. | -| **실제 저항값 측정** | 전압/저항 DMM 측정기를 통해 센서의 실제 저항값(Ω)을 측정합니다. | -| **전류 측정** | 전원 공급 장치(Power Supply)의 출력 채널 1을 통해 제품의 소모 전류를 계측합니다. | +| **실제 저항값 측정** | 전압/저항 DMM 측정기를 통해 센서의 실제 저항값(kΩ)을 측정합니다. | +| **전류 측정** | 전원 공급 장치(Power Supply)의 출력 채널 1을 통해 제품의 소모 전류(mA)를 계측합니다. | | **레이저 각인 연동** | 성능 검사가 모두 통과된 합격품에 대해 제품 표면에 2D QR 코드 및 단축 일련번호(생산일자 + 순번)를 마킹합니다. | | **결과 기록** | 계측 판정 규격(전압, 전류, 저항)과 마킹 성공 여부를 최종 판정하여 생산 데이터베이스에 저장합니다. | @@ -42,10 +42,9 @@ | 장비 | 역할 | 통신 방식 | |------|------|-----------| | **센서 판독 보드 (4251 보드)** | 제품 내부 칩의 일련번호(IC_SN)를 인식합니다. | RS-232 시리얼 통신 | -| **전압 및 저항 측정 장비 (DMM)** | 제품의 전압(V) 및 전기적 저항(Ω)을 측정합니다. (예: 192.168.1.100) | TCP/IP 네트워크 통신 | -| **전류 측정 및 전원 공급 장비 (PSU)** | 제품 구동을 위한 전원 공급 및 소모 전류(A)를 측정합니다. (예: 192.168.1.101) | TCP/IP 네트워크 통신 | +| **전압 및 저항 측정 장비 (DMM)** | 제품의 전압(V) 및 전기적 저항(kΩ)을 측정합니다. | TCP/IP 네트워크 통신 | +| **전류 측정 및 전원 공급 장비 (PSU)** | 제품 구동을 위한 전원 공급 및 소모 전류(mA)를 측정합니다. | TCP/IP 네트워크 통신 | | **레이저 마킹기** | 2D QR 코드 및 텍스트 일련번호를 제품 표면에 인쇄합니다. | 마킹 제어 보드 연동 | -| *(전류 측정 DMM)* | *설정 파일(예: 192.168.1.102)에 존재하나 현재 제어 시퀀스에서는 사용하지 않습니다.* | *(미사용)* | ## 1.4 설치 경로(`C:\marking\`) 구조 및 생성 파일 역할 @@ -56,12 +55,11 @@ | **실행 프로그램** | `marking_gui.exe` | 메인 성능 검사 및 레이저 마킹 GUI 제어 실행 파일 | | **종속 라이브러리** | `marking_gui.dll`, `*.deps.json`, `*.runtimeconfig.json` | .NET 9.0 (WPF) 자립형 런타임 및 종속 구성 바이너리 | | **통합 설정 파일** | `Setting.ini` | 마킹기 폴더 경로, 테스트 모드, 도안 태그 매핑, 계측기 LAN IP, SCPI 전원 커맨드, 계측 판정 규격 임계치(`[Limits]`) 종합 설정 파일 | -| **DB 설정 파일** | `Database.ini` | MS-SQL 데이터베이스 접속 주소, DB명, 사용자 계정/PW, 오프라인 모드(`OfflineMode=true`) 설정 파일 | +| **DB 설정 파일** | `Database.ini` | MS-SQL 데이터베이스 접속 주소, DB명, 사용자 계정/PW, 오프라인 모드(`OfflinePreview=true`) 및 로그인 프로시저 설정 파일 | | **센서 설정 파일** | `Sensor.ini` | 4251 센서 통신 보드 시리얼 포트(`Port=COM3`), 통신 속도(`BaudRate=115200`), 통신 채널(`Channel=1`) 설정 파일 | | **드라이버 폴더** | `libs/` | C++ LMC 각인 드라이버 격리 디렉터리 (`MarkEzdWrapper.dll`, `DataMgr.dll`, `MarkEzd.dll`, `haspms32.dll` 등) | | **로그 저장 폴더** | `logs/` *(자동 생성)* | 시스템 운용 중 발생하는 일별 이벤트 로그, 통신 이력, 각인 성공/실패 기록 텍스트 저장 디렉터리 (예: `logs/2026-07-23.log`) | | **백업 보관 폴더** | `publish_backup/` | 프로그램 업데이트 및 빌드 배포 시 이전 릴리즈 바이너리/설정 자동 백업 폴더 | ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* + diff --git a/marking_gui/Manual/02_초기_설정.md b/marking_gui/Manual/02_초기_설정.md index 6327b90..ebc76ea 100644 --- a/marking_gui/Manual/02_초기_설정.md +++ b/marking_gui/Manual/02_초기_설정.md @@ -55,36 +55,41 @@ EzdFolderPath=c:\EzCad\EasyCfg ; EZD 도안 파일 기본 탐색/저장 폴더 경로 test=false ; 테스트 마킹 버튼 및 개발 모드 노출 여부 (true/false) +[Equipment] +Timeout=5000 ; 계측기 통신 타임아웃 (ms) +SettleMilliseconds=2000 ; 테스트 전원 인가 후 측정 안정화 대기 시간 (ms) + [DMM] -VoltageHost=192.168.1.100 ; 전압/저항 측정용 계측기(DMM) IP 주소 +VoltageHost=192.168.10.100 ; 전압(Voltage) 측정용 계측기 IP 주소(예시) -[CurrentDMM] -CurrentDMMHost=192.168.1.102 ; 전류 측정용 계측기(DMM) IP 주소 +[ResistanceDMM] +ResistanceDMMHost=192.168.10.101 ; 저항(Resistance) 측정용 계측기 IP 주소(예시) [PowerSupply] -CurrentHost=192.168.1.101 ; 전원 공급기(Power Supply) IP 주소 +CurrentHost=192.168.10.102 ; 전원 공급기(Power Supply) 및 전류 측정 장치 IP 주소(예시) [Limits] -MinVoltage=4.0 ; 전압 하한 판정 기준값 (V) -MaxVoltage=6.0 ; 전압 상한 판정 기준값 (V) -MinCurrent=8.0 ; 전류 하한 판정 기준값 (mA) -MaxCurrent=10.0 ; 전류 상한 판정 기준값 (mA) -MinResistance=0.4 ; 저항 하한 판정 기준값 (kΩ) -MaxResistance=0.8 ; 저항 상한 판정 기준값 (kΩ) +MinVoltage=1.00 ; 전압 하한 판정 기준값 (V) +MaxVoltage=6.00 ; 전압 상한 판정 기준값 (V) +MinCurrent=5.00 ; 전류 하한 판정 기준값 (mA) +MaxCurrent=10.00 ; 전류 상한 판정 기준값 (mA) +MinResistance=8.000 ; 저항 하한 판정 기준값 (kΩ) +MaxResistance=13.000 ; 저항 상한 판정 기준값 (kΩ) ``` #### 2) Database.ini (주요 변경 가능 설정) DB 서버 접속 주소 및 점검용 오프라인 모드 변경 시 수정하는 항목입니다. ```ini [Database] -Db_Server=192.168.1.200 ; MSSQL 데이터베이스 서버 IP 주소 -Db_Name=MarkingDb ; 연결할 데이터베이스 이름 -Db_User=db_user ; DB 접속 사용자 계정 -Db_Password=db_password ; DB 접속 비밀번호 -OfflineMode=False ; DB 미연결 점검 모드 (True: DB 저장 생략, False: 정상 검증/적재) +Db_Server=192.168.10.10, 1433 ; MSSQL 데이터베이스 서버 IP 주소 및 포트 +Db_Name=NE1aW_PT_Sensor ; 연결할 데이터베이스 이름 +Db_User=su ; DB 접속 사용자 계정 +Db_Password=amotech821 ; DB 접속 비밀번호 [Login] -OfflinePreview=False ; 로그인 DB 검증 우회 여부 (True: 로그인 생략, False: 정상 검증) +Procedure=dbo.CheckOperator ; 작업자 로그인 검증용 저장 프로시저명 +ProcessName=Marking ; 공정 구분 코드 +OfflinePreview=false ; DB 연결 우회 오프라인 모드 (true: DB 생략, false: 실제 DB 검증) ``` #### 3) Sensor.ini (주요 변경 가능 설정) @@ -92,6 +97,7 @@ OfflinePreview=False ; 로그인 DB 검증 우회 여부 (True: 로 ```ini [Sensor] Port=COM3 ; 바코드 스캐너 시리얼 포트 (장치 관리자 COM 포트 번호) +BaudRate=115200 ; 시리얼 통신 속도 (기본값: 115200) Channel=1 ; 통신 채널 번호 (1 또는 2) ``` @@ -112,6 +118,4 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) - 프로그램 실행 후 작업자 계정으로 로그인을 시도합니다. - 로그인이 완료되면 전원 공급 장치의 상시전원 채널 전원 램프가 자동으로 켜지는지 확인합니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/03_메인_화면.md b/marking_gui/Manual/03_메인_화면.md index 70ff798..e7713ea 100644 --- a/marking_gui/Manual/03_메인_화면.md +++ b/marking_gui/Manual/03_메인_화면.md @@ -6,58 +6,69 @@ ## 3.1 메인 화면 레이아웃 구성 -본 프로그램은 작업자가 화면 구성 및 각 항목 상태를 파악할 수 있도록 4개의 카드 레이아웃으로 화면을 구성했습니다. +본 프로그램은 작업자가 전체 검사 및 마킹 진행 상황을 직관적으로 파악할 수 있도록 역할별 카드 레이아웃으로 화면을 구성했습니다. ### 3.1.1 상단 헤더 영역 (Header Bar) -프로그램 최상단 영역에는 시스템 정보 배지와 제어 버튼이 배치되어 있습니다. -* **실시간 시계**: 좌측 상단에 날짜와 시간이 표시됩니다. +프로그램 최상단 영역에는 시스템 로고, 실시간 시계, 작업 정보 배지 및 시스템 제어 버튼이 배치되어 있습니다. +* **시스템 로고 및 버젼**: 좌측 상단에 `Marking v1.0.0` 시스템 명칭이 배치되어 있습니다. +* **실시간 시계**: 로고 우측에 현재 날짜와 시간(`YYYY-MM-DD HH:mm:ss`)이 실시간으로 표시됩니다. * **작업 정보 배지**: - * **공정 라인**: 로그인 단계에서 지정한 생산 라인 코드 (`Line No`) - * **로트 번호**: 로그인 단계에서 지정한 생산 로트 번호 (`Lot No`) - * **모델명**: 현재 가동 중인 제품의 사양 모델 (`Model`) - * **작업자**: 로그인한 작업자의 이름 (`Operator`) -* **제어 버튼**: 우측 상단에 `로그아웃` 버튼이 위치하며 최하단 바에 설정 관련 버튼이 배치됩니다. - + * **작업자**: 로그인한 작업자의 이름 또는 계정 ID (`Operator`) + * **모델**: 현재 적용 중인 레이저 각인 도안 모델명 (`Model`) + * **라인**: 로그인 단계에서 지정한 생산 라인 코드 (`Line No`) +* **제어 버튼**: 우측 상단에 `로그아웃` 버튼과 윈도우 창 제어(최소화, 창 모드, 프로그램 종료) 버튼이 위치합니다. +![[Pasted image 20260728100308.png]] --- ## 3.2 상태 및 제어 카드 영역 -화면 중앙에는 역할을 구분한 4개의 상태 카드가 배치되어 있어, 제품 상태와 계측 단계를 모니터링할 수 있습니다. - -### 3.2.1 [카드 1] 제품 정보 및 이전 결과 (좌측 상단) -제품의 일련번호와 이전 생산 공정에서의 합격 이력을 대조하는 영역입니다. -* **작업 모델 설정**: - - `파일 선택` 버튼을 사용하여 각인용 도면 파일을 불러옵니다. - - 도면 파일 선택이 완료되면 상단 헤더 영역의 모델명(Model) 배지 텍스트가 선택한 도면명으로 자동 변경됩니다. -* **일련번호 (IC_SN)**: 제품이 안착되면 센서 판독기를 통해 자동으로 인식되어 표시됩니다. (읽기 전용) -* **이전 공정 이력 배지**: - * **Housing**: 하우징 조립 공정 판정 상태 (`PASS` / `FAIL` / `대기`) - * **Calibration**: 압력 보정 공정 판정 상태 (`PASS` / `FAIL` / `대기`) - * **EOL**: EOL 1차 성능 평가 판정 상태 (`PASS` / `FAIL` / `대기`) - * *주의: 이전 공정 이력 배지 중 하나라도 `FAIL` 상태인 경우 성능 검사를 시작할 수 없습니다.* - -### 3.2.2 [카드 2] 측정 결과 (우측 상단) -현재 장비에서 실제 계측한 3대 전기 파라미터(전압, 전류, 저항) 수치와 설정된 기준 규격 범위를 표시하는 영역입니다. -* **측정 전압 (Voltage)**: 전압 측정 장치가 측정한 전압 수치 (**V** 단위) -* **측정 전류 (Current)**: 전원 공급 장치가 측정한 소모 전류 수치 (**mA** 단위) -* **측정 저항 (Resistance)**: 저항 측정 장치가 측정한 전기적 저항 수치 (**kΩ** 단위) -* *알림: 각 물리량의 하단에는 현재 적용 중인 기준 규격 범위가 문구(`기준범위: X ~ Y`)로 표출되며, 실측값이 규격 범위 내에 도달하면 카드 테두리가 **초록색(PASS)**으로 표시되고, 범위를 벗어나면 테두리가 **빨간색(FAIL)**으로 바뀝니다.* - -### 3.2.3 [카드 3] 진행상황 (좌측 하단) -현재 설비가 수행하고 있는 단계별 자동 제어 시퀀스를 보여주는 안내 창입니다. -* "대기 상태", "제품 정보 수집 중...", "이전 공정 검사 결과 조회 중...", "측정 계측기 데이터 수집 중...", "제품 합격 - 레이저 각인 중..." 등 작동 상태를 실시간 텍스트로 표출합니다. - -### 3.2.4 [카드 4] 판정결과 (우측 하단) -제품의 최종 합격(PASS) 및 불합격(FAIL) 상태를 표시합니다. -* 계측 검사와 데이터 저장, 레이저 각인이 완료되었을 때 최종 합격인 경우 카드 배경이 **초록색(PASS)**으로 전환되며, 불합격인 경우 카드 배경이 **빨간색(FAIL)**으로 변경됩니다. - -### 3.2.5 최하단 제어 영역 (Control Box) -* **검사 시작 (START)**: 전체 검사 시퀀스를 기동하는 메인 버튼입니다. 이 버튼을 누르면 이전 계측 수치들이 초기화되고 새로운 측정 프로세스가 개시됩니다. -* **강제 검사 (스킵)**: 이전 가공 공정의 합격 이력이 없더라도 검증 단계를 건너뛰고 성능 계측 및 각인 시퀀스를 기동하는 버튼입니다. -* **테스트 마킹**: 성능 계측 없이 즉시 각인기에 테스트 마킹 신호를 전송하는 버튼입니다. -* *참고: `강제 검사 (스킵)` 및 `테스트 마킹` 버튼은 환경 설정에서 테스트 모드가 활성화된 상태에서만 화면 하단에 노출됩니다.* - +화면 중앙은 효율적인 검사 구성을 위해 **좌측 패널**과 **우측 패널**로 구분되어 있습니다. + +### 3.2.1 [카드 1] 작업 모델 설정 & IC_SN 및 각인 정보 (좌측 상단) +제품의 일련번호와 실시간 각인 정보를 확인하고 레이저 마킹 도면을 관리하는 영역입니다. +* **작업 모델 설정 (EZD 파일)**: + - `📁 파일 선택` 버튼을 통해 제품 각인용 도면 파일(.ezd)을 불러올 수 있습니다. + - 도면 파일 선택 시 상단 헤더 영역의 모델(`Model`) 배지 텍스트가 선택한 도면명으로 자동 반영됩니다. +* **일련번호 (IC_SN)**: 4251 센서 판독기를 통해 읽어온 제품 내부 칩의 고유 일련번호가 표시됩니다. (읽기 전용) +* **실시간 각인 정보 패널**: + - **현재 Lot No**: 로그인 시 설정된 생산 로트 번호 (`Lot No`) + - **다음 각인 순번**: 당일 해당 로트에서 각인될 제품의 차례 순번 (`예: 0001 차례`) +![[Pasted image 20260728100343.png]] +### 3.2.2 [카드 2] 이전 시험 단계 결과 (좌측 하단) +생산 데이터베이스(MS-SQL)를 조회하여 선행 공정의 합격 여부를 판정하는 카드입니다. +* **1. Housing**: 하우징 조립 공정 검사 판정 상태 (`PASS` / `FAIL` / `대기`) +* **2. Calibration**: 센서 압력 보정 공정 판정 상태 (`PASS` / `FAIL` / `대기`) +* **3. EOL**: EOL 1차 성능 평가 공정 판정 상태 (`PASS` / `FAIL` / `대기`) +* *주의: 이전 공정 이력 중 하나라도 `FAIL` 상태이거나 이력이 없는 경우 메인 성능 검사를 시작할 수 없습니다. (강제 검사 스킵 버튼 미사용 시)* +![[Pasted image 20260728100354.png]] +### 3.2.3 [카드 3] 측정 데이터 수치 카드 (우측 상단) +실제 계측기를 통해 수집된 3대 전기 파라미터 수치와 설정된 규격 범위를 표시하는 3열 구조의 카드입니다. +* **측정 전압 (Voltage)**: DMM 계측 장비가 측정한 실측 전압 수치 (**V** 단위, 기본 기준범위: `0.0V ~ 0.5V`) +* **측정 전류 (Current)**: Power Supply 전원공급 장치가 측정한 소모 전류 수치 (**mA** 단위, 기본 기준범위: `8.00mA ~ 10.00mA`) +* **측정 저항 (Resistance)**: DMM 측정 장비가 측정한 전기적 저항 수치 (**kΩ** 단위, 기본 기준범위: `0.400kΩ ~ 0.800kΩ`) +* *알림: 각 수치 카드 하단에는 설정 파일(`Setting.ini`)에서 지정한 임계 규격 범위가 표시되며, 실측값이 범위 내에 들어오면 카드 테두리가 **초록색(PASS)**으로, 범위를 벗어나면 **빨간색(FAIL)**으로 자동 전환됩니다.* +![[Pasted image 20260728100404.png]] +### 3.2.4 [카드 4] 최종 판정 및 종합 상태 영역 (우측 하단) +진행 상황 및 최종 판정 결과를 통합 표시하는 영역입니다. +* **💬 진행 상황 뱃지**: "대기 상태", "제품 정보 수집 중...", "측정 계측기 데이터 수집 중...", "제품 합격 - 레이저 각인 중..." 등 설비 시퀀스 동작을 실시간 텍스트로 표출합니다. +* **세부 정보 그리드**: + - **검사 시간 정보**: 전체 시퀀스 기동 시작 시간 및 종료 시간 표출 + - **일련번호 정보**: IC S/N, PCB 바코드, 실제 각인 완료 번호 표출 + - **최종 판정결과**: 최종 **PASS** (초록색) / **FAIL** (빨간색) 대형 배지 표출 + - **시스템 상태**: 통신 및 디바이스 가동 상태 또는 에러 메시지 배너 표출 +![[Pasted image 20260728100413.png]] --- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* +## 3.3 하단 제어 영역 (Control Box & Footer) + +* **▶ 검사 시작 (START) 버튼**: 화면 하단에 위치한 대형 버튼으로, 전체 계측 및 각인 시퀀스를 개시합니다. +* **최하단 버튼 그룹**: + * **파라미터 설정**: 계측 임계 규격치 및 마킹 파라미터 설정 창을 호출합니다. + * **포트 설정**: 센서 통신 보드의 시리얼 COM 포트 및 채널 설정 창을 호출합니다. + * **강제 검사 (스킵)**: 이전 공정 이력이 없어도 검증을 건너뛰고 계측 및 마킹을 수행합니다. + * **테스트 마킹**: 계측 과정 없이 레이저 각인 장비 동작을 테스트합니다. + * *참고: `강제 검사 (스킵)` 및 `테스트 마킹` 버튼은 설정 파일(`Setting.ini`)에서 `TestMode=true`로 활성화된 경우에만 화면에 노출됩니다.* +![[Pasted image 20260728100445.png]] + + diff --git a/marking_gui/Manual/04_통신_설정.md b/marking_gui/Manual/04_통신_설정.md index a3c30e5..926454a 100644 --- a/marking_gui/Manual/04_통신_설정.md +++ b/marking_gui/Manual/04_통신_설정.md @@ -6,22 +6,22 @@ ## 4.1 포트 설정 화면 사용법 -프로그램 상단의 `통신 설정` 버튼을 클릭하면 포트 설정 대화 상자가 나타납니다. 이 대화 상자에서 센서 판독 장치(4251 보드)의 연결 포트 및 채널을 설정할 수 있습니다. - +메인 화면 최하단 바의 `포트 설정` 버튼을 클릭하면 포트 설정 대화 상자가 나타납니다. 이 대화 상자에서 센서 판독 장치(4251 보드)의 연결 포트, 통신 속도 및 채널을 설정할 수 있습니다. +![[Pasted image 20260728100828.png]] ### 주요 설정 항목 및 설명 1. **통신 포트 (Port)**: - - 센서 판독기가 연결되어 있는 PC의 연결 포트를 선택합니다. (예: `COM1`, `COM3`, `COM4` 등) - - 현재 PC에 인식되어 있는 포트 목록이 자동으로 표시됩니다. + - 센서 판독기가 연결되어 있는 PC의 시리얼 포트를 선택합니다. (예: `COM1`, `COM3`, `COM4` 등) + - 현재 PC 장치 관리자에 인식되어 있는 유효한 COM 포트 목록이 자동으로 조회되어 드롭다운에 추가됩니다. 2. **통신 속도 (BaudRate)**: - - 센서 판독 장치와의 데이터 송수신 속도를 설정합니다. - - 기본 설정값은 **`115200`** 이며, 특수한 경우가 아니면 변경하지 않는 것을 권장합니다. + - 센서 판독 장치와의 시리얼 송수신 속도(Baud Rate)를 설정합니다. (옵션: `9600`, `19200`, `38400`, `57600`, `115200`) + - 4251 센서 보드 통신의 기본 규격 설정값은 **`115200`** 입니다. 3. **통신 채널 (Channel)**: - - 센서 판독기 내부의 연결 채널을 결정합니다. - - 드롭다운 메뉴를 통해 **`CH1`** 또는 **`CH2`**를 선택할 수 있습니다. - - 선택된 채널에 따라 센서 인식 모드가 변경됩니다. + - 센서 판독기 내부의 연동 채널 번호를 결정합니다. + - 드롭다운 메뉴를 통해 **`1`** 또는 **`2`** 채널을 선택할 수 있습니다. + - 선택된 채널 및 포트 정보는 `Sensor.ini` 파일에 저장됩니다. --- @@ -32,6 +32,4 @@ - 저장 시 기존 센서 연결을 해제하고 새로운 설정값으로 센서 인식 서비스를 다시 시작합니다. 프로그램을 재시작할 필요 없이 변경 사항이 즉시 적용됩니다. - 저장하지 않고 창을 닫으려면 `취소` 버튼을 누릅니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/05_시험_설정.md b/marking_gui/Manual/05_시험_설정.md index e1a6849..541af6f 100644 --- a/marking_gui/Manual/05_시험_설정.md +++ b/marking_gui/Manual/05_시험_설정.md @@ -6,21 +6,18 @@ ## 5.1 판정 기준 설정 -프로그램 상단 우측의 `시험 설정` 버튼을 클릭하면 판정 기준을 구성하는 대화 상자가 나타납니다. 이 화면에서 제품 합불 판정에 사용되는 전압, 전류, 저항의 기준값을 입력할 수 있습니다. - +메인 화면 최하단 바의 `파라미터 설정` 버튼을 클릭하면 기준 범위 설정 대화 상자가 나타납니다. 이 화면에서 제품 합불 판정에 사용되는 전압, 전류, 저항의 규격 임계 범위를 수동으로 변경할 수 있습니다. +![[Pasted image 20260728100846.png]] ### 5.1.1 각 항목별 한계치 입력 가이드 -* **전압 판정 범위**: - * **하한값**: 합격 전압 하한 규격 (V 단위) - * **상한값**: 합격 전압 상한 규격 (V 단위) -* **전류 판정 범위**: - * **하한값**: 합격 전류 하한 규격 (설정창 표기 단위 참조, 기본 mA/A) - * **상한값**: 합격 전류 상한 규격 (설정창 표기 단위 참조, 기본 mA/A) -* **저항 판정 범위**: - * **하한값**: 합격 저항 하한 규격 (설정창 표기 단위 참조, 기본 Ω/kΩ) - * **상한값**: 합격 저항 상한 규격 (설정창 표기 단위 참조, 기본 Ω/kΩ) +* **전압 (V)**: + * **하한값 ~ 상한값**: 합격 전압 하한 규격 ~ 상한 규격 (V 단위, 기본 예: `1.00V ~ 6.00V`) +* **전류 (A / mA)**: + * **하한값 ~ 상한값**: 합격 소모 전류 하한 규격 ~ 상한 규격 (설정창 단위 V/A/mA, 기본 예: `5.00mA ~ 10.00mA`) +* **저항 (Ω / kΩ)**: + * **하한값 ~ 상한값**: 합격 전기적 저항 하한 규격 ~ 상한 규격 (기본 예: `8.000kΩ ~ 13.000kΩ`) -*참고: 저장 버튼을 클릭하면 메인 화면의 하단 가이드 문구(`기준범위: X ~ Y`)가 즉시 갱신되어 새로 입력한 한계치가 다음 검사 시퀀스부터 반영됩니다.* +*참고: 저장 버튼을 클릭하면 메인 화면의 수치 카드 하단 가이드 문구(`기준범위: X ~ Y`)가 즉시 갱신되어 새로 입력한 한계치가 다음 검사 시퀀스부터 반영되며, `Setting.ini` 파일의 `[Limits]` 섹션에 자동 저장됩니다.* --- @@ -31,7 +28,7 @@ * 도면이 선택되면 상단 헤더 배지의 모델명 정보도 해당 도면 파일명으로 자동으로 변경됩니다. * **유의 사항**: * 지정해 놓은 도면 파일이 실제 경로에 존재하지 않는 경우, 계측 성능 검사가 합격하더라도 각인 단계에서 에러가 납니다. 검사 전 파일 경로 상태를 확인하십시오. - +![[Pasted image 20260728100910.png]] --- ## 5.3 설정 저장 및 적용 @@ -39,6 +36,4 @@ * 설정 창의 `저장` 버튼을 클릭하면 변경된 파라미터가 시스템 설정에 저장됩니다. * 저장 완료 즉시 **메인 화면 하단에 표시되는 판정 기준 가이드 텍스트**가 업데이트되며, 이후에 새로 시작하는 성능 검사 시퀀스부터 새로운 규격치가 적용됩니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/06_데이터_조회.md b/marking_gui/Manual/06_데이터_조회.md index 3f29c42..69c802f 100644 --- a/marking_gui/Manual/06_데이터_조회.md +++ b/marking_gui/Manual/06_데이터_조회.md @@ -48,6 +48,4 @@ - **임시 일련번호 생성**: 일련번호가 비어 있는 상태에서 테스트를 개시하는 경우 현재 시간 기반의 임시 일련번호가 자동으로 부여되어 진행합니다. - **각인 모사**: 실제 각인기에 데이터를 전송하는 단계를 가상 성공 처리하여 전체 흐름을 테스트합니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/07_시험_프로세스.md b/marking_gui/Manual/07_시험_프로세스.md index ea7abb0..13b5258 100644 --- a/marking_gui/Manual/07_시험_프로세스.md +++ b/marking_gui/Manual/07_시험_프로세스.md @@ -70,6 +70,4 @@ graph TD * 합격 판정과 동시에 레이저 마킹기에 각인 데이터가 전달되어 2D QR 코드 및 제품 일련번호 각인이 자동으로 실행됩니다. * 마킹 완료 기록과 계측 수치는 최종 PASS 상태로 데이터베이스에 저장됩니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/08_로그_관리.md b/marking_gui/Manual/08_로그_관리.md index 2bea961..ae1369a 100644 --- a/marking_gui/Manual/08_로그_관리.md +++ b/marking_gui/Manual/08_로그_관리.md @@ -34,6 +34,4 @@ 4. **레이저 마킹 도면 파일 백업**: * 제품 표면에 각인할 마킹 도면 파일입니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/09_오류_대응.md b/marking_gui/Manual/09_오류_대응.md index 7af8b77..5282193 100644 --- a/marking_gui/Manual/09_오류_대응.md +++ b/marking_gui/Manual/09_오류_대응.md @@ -54,6 +54,4 @@ * **프로그램 완전 종료**: - 화면 우측 상단의 `닫기(X)` 버튼을 눌러 프로그램을 최종 종료할 때도, 자동으로 상시전원 차단 명령을 장비에 인계한 뒤 레이저 각인 드라이버 리소스를 닫고 메모리를 환원합니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/Manual_Merged.md b/marking_gui/Manual/Manual_Merged.md index c63c0d4..a8205ef 100644 --- a/marking_gui/Manual/Manual_Merged.md +++ b/marking_gui/Manual/Manual_Merged.md @@ -167,18 +167,21 @@ pre code { white-space: inherit; } -/* 이미지 스타일 */ -img { - max-width: 100%; - max-height: 100mm; /* A4 높이의 약 절반 이하로 제한 */ +/* 이미지 스타일 (스크린샷 크기 조절) */ +img, .img-screenshot { + max-width: 65%; + max-height: 70mm; /* A4 용지 및 화면 출력 시 적당한 크기로 한정 */ display: block; - margin: 15px auto; + margin: 16px auto; object-fit: contain; page-break-inside: avoid; - border: 1px solid #e1e4e8; - box-shadow: 0 1px 3px rgba(0,0,0,0.1); + border: 1px solid #d1d5db; + border-radius: 6px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08); } + + /* 페이지 나누기 요소 */ .page-break { page-break-before: always !important; @@ -213,31 +216,362 @@ a:hover { margin-right: 4px; } - +/* ========================================== + 표지 (Cover Page) 스타일 (Minimal & Clean) + ========================================== */ +.cover-page { + text-align: center; + padding: 70mm 0 30mm 0; + page-break-after: always !important; + box-sizing: border-box; + display: flex; + flex-direction: column; + justify-content: space-between; + min-height: 220mm; +} -# Performance Inspect & Laser Marking System - 사용자 메뉴얼 +.cover-header { + margin-top: 20px; +} -> **버전**: 1.0.0 | **최종 수정**: 2026-07-14 +.cover-title { + font-size: 28pt !important; + font-weight: 700 !important; + color: #1a1a1a !important; + margin: 0 0 16px 0 !important; + padding: 0 !important; + border: none !important; + letter-spacing: -0.5px; + line-height: 1.2; +} ---- +.cover-subtitle { + font-size: 16pt; + font-weight: 500; + color: #007acc; + margin: 0; + letter-spacing: 2px; + text-transform: uppercase; +} -## 메뉴얼 목차 +.cover-meta { + margin-top: 100px; + font-size: 9.5pt; + color: #666666; + letter-spacing: 0.5px; + border-top: 1px solid #eaeaea; + padding-top: 20px; + width: 60%; + margin-left: auto; + margin-right: auto; +} -본 메뉴얼은 각 주제별로 별도 문서로 구성되어 있습니다. 아래 링크를 클릭하여 해당 문서로 이동하세요. -| 번호 | 문서 | 설명 | -|------|------|------| -| 1 | [시스템 개요 및 요구사항](#1-시스템-개요-및-요구사항) | 프로그램 소개, 주요 기능, 하드웨어/소프트웨어 요구사항, 장비 구성 | -| 2 | [초기 설정 가이드](#2-초기-설정-가이드) | 설정 파일의 구성 요소 안내 및 최초 장비 가동 시 점검 순서 | -| 3 | [메인 화면 (Home View)](#3-메인-화면-home-view) | 상단 정보 표시, 제품 정보 카드, 검사 결과 화면, 진행 상황 확인 및 버튼 제어 가이드 | -| 4 | [통신 설정 (Comm. Settings)](#4-통신-설정-comm-settings) | 4251 센서 통신 채널 설정 및 PC 통신 포트 연동 방법 | -| 5 | [시험 설정 (Parameters)](#5-시험-설정-parameters) | 제품 규격치(전압, 전류, 저항 범위) 및 레이저 마킹 도면 파일 연동 | -| 6 | [측정 데이터 조회 (Data View)](#6-측정-데이터-조회-및-데이터베이스-연동) | 생산 데이터베이스를 통한 이전 공정 이력 자동 조회 및 최종 결과 저장 원리 | -| 7 | [자동 시험 프로세스](#7-자동-시험-프로세스-및-14단계-시퀀스) | 자동 계측 시퀀스 기동, 마킹 수행 및 최종 합격 판정 흐름 | -| 8 | [로그 및 데이터 관리](#8-로그-및-데이터-관리) | 시스템 로그 파일 확인 방법 및 장비 설정 파일 백업 방법 | -| 9 | [오류 대응 및 프로그램 종료](#9-오류-대응-및-프로그램-종료) | 센서 통신 오류, DB 조회 에러, 마킹 불량 등 현장 장애 대응 및 안전한 프로그램 종료 방법 | +/* ========================================== + 점선 리더 목차 (Dot Leader TOC) 스타일 + ========================================== */ +.toc-container { + padding: 10px 0; +} ---- +.toc-heading { + font-size: 22pt !important; + font-weight: 700 !important; + color: #111827 !important; + border-bottom: 2px solid #007acc !important; + padding-bottom: 8px !important; + margin-bottom: 28px !important; +} + +.toc-list { + display: flex; + flex-direction: column; + gap: 10px; +} + +.toc-item { + display: flex; + align-items: baseline; + font-size: 11pt; + line-height: 1.5; + margin-top: 6px; +} + +.toc-sub-item { + display: flex; + align-items: baseline; + font-size: 9.5pt; + line-height: 1.4; + padding-left: 18px; +} + +.toc-sub2-item { + display: flex; + align-items: baseline; + font-size: 9pt; + line-height: 1.3; + padding-left: 36px; + color: #6b7280; +} + +.toc-title { + font-weight: 600; + color: #1f2937; + white-space: nowrap; + padding-right: 6px; +} + +.toc-sub-item .toc-title { + font-weight: 500; + color: #374151; +} + +.toc-sub2-item .toc-title { + font-weight: 400; + color: #4b5563; +} + +.toc-title a { + color: #1f2937 !important; + text-decoration: none !important; +} + +.toc-sub-item .toc-title a { + color: #374151 !important; +} + +.toc-sub2-item .toc-title a { + color: #4b5563 !important; +} + +.toc-title a:hover { + color: #007acc !important; +} + +.toc-leader { + flex-grow: 1; + border-bottom: 1.5px dotted #9ca3af; + margin: 0 4px; + position: relative; + top: -4px; +} + +.toc-sub-item .toc-leader { + border-bottom: 1px dotted #cbd5e1; +} + +.toc-sub2-item .toc-leader { + border-bottom: 1px dotted #e2e8f0; +} + +.toc-page { + font-weight: 700; + color: #374151; + padding-left: 6px; + white-space: nowrap; +} + +.toc-sub-item .toc-page { + font-weight: 600; + color: #4b5563; +} + +.toc-sub2-item .toc-page { + font-weight: 400; + color: #6b7280; +} + + + + + +
+

목차

+
+ + + + + + + + + + + + + + + + + +
+ 4.2 설정 저장 + + 11 +
+ + + + + + + + + + + + + + + + + + +
+
+ +
## 빠른 시작 가이드 (Quick Start) @@ -249,17 +583,13 @@ a:hover { - 계측 장비들과 제어용 PC 간의 네트워크(LAN)선 및 센서 리더용 시리얼 포트 케이블 연결을 확인합니다. 3. **프로그램 실행 및 로그인** - 바탕화면의 `Marking System` (`marking_gui`) 프로그램을 실행한 뒤, 작업자 계정 정보를 입력하여 로그인합니다. (데이터베이스 점검 중인 경우 설정 파일을 통해 오프라인 모드로의 진입이 가능합니다.) -3. **통신 상태 확인 및 채널 설정** +4. **통신 상태 확인 및 채널 설정** - 우측 상단의 `통신 설정` 메뉴에서 센서가 올바른 포트와 채널에 연결되었는지 확인합니다. -4. **검사 규격값 검증** +5. **검사 규격값 검증** - 우측 상단의 `시험 설정` 메뉴를 열고, 전압/전류/저항 검사 기준치와 각인 템플릿 도면 파일의 경로가 올바른지 점검합니다. -5. **성능 검사 및 마킹 시작** +6. **성능 검사 및 마킹 시작** - 안착 지그에 제품을 바르게 장착한 뒤 메인 화면 하단의 `검사 시작 (START)` 버튼을 눌러 계측 및 마킹을 수행합니다. ---- - -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* -
@@ -281,8 +611,8 @@ a:hover { | **일련번호(S/N) 자동 추출** | 센서 판독 보드를 통해 제품 안착 시 제품 내부 메모리로부터 일련번호를 추출합니다. | | **선행 공정 검사 교차 조회** | 이전 단계(하우징 조립, 센서 보정, 1차 EOL 성능 검사)가 모두 합격 판정되었는지 생산 데이터베이스에서 조회합니다. | | **자동 계측 시퀀스** | 전원 공급 장치와 전압/저항 측정 장비들과 연동하여 제품에 테스트 전원을 투입하고 전압, 저항, 전류 값을 차례대로 계측합니다. | -| **실제 저항값 측정** | 전압/저항 DMM 측정기를 통해 센서의 실제 저항값(Ω)을 측정합니다. | -| **전류 측정** | 전원 공급 장치(Power Supply)의 출력 채널 1을 통해 제품의 소모 전류를 계측합니다. | +| **실제 저항값 측정** | 전압/저항 DMM 측정기를 통해 센서의 실제 저항값(kΩ)을 측정합니다. | +| **전류 측정** | 전원 공급 장치(Power Supply)의 출력 채널 1을 통해 제품의 소모 전류(mA)를 계측합니다. | | **레이저 각인 연동** | 성능 검사가 모두 통과된 합격품에 대해 제품 표면에 2D QR 코드 및 단축 일련번호(생산일자 + 순번)를 마킹합니다. | | **결과 기록** | 계측 판정 규격(전압, 전류, 저항)과 마킹 성공 여부를 최종 판정하여 생산 데이터베이스에 저장합니다. | @@ -306,10 +636,9 @@ a:hover { | 장비 | 역할 | 통신 방식 | |------|------|-----------| | **센서 판독 보드 (4251 보드)** | 제품 내부 칩의 일련번호(IC_SN)를 인식합니다. | RS-232 시리얼 통신 | -| **전압 및 저항 측정 장비 (DMM)** | 제품의 전압(V) 및 전기적 저항(Ω)을 측정합니다. (예: 192.168.1.100) | TCP/IP 네트워크 통신 | -| **전류 측정 및 전원 공급 장비 (PSU)** | 제품 구동을 위한 전원 공급 및 소모 전류(A)를 측정합니다. (예: 192.168.1.101) | TCP/IP 네트워크 통신 | +| **전압 및 저항 측정 장비 (DMM)** | 제품의 전압(V) 및 전기적 저항(kΩ)을 측정합니다. | TCP/IP 네트워크 통신 | +| **전류 측정 및 전원 공급 장비 (PSU)** | 제품 구동을 위한 전원 공급 및 소모 전류(mA)를 측정합니다. | TCP/IP 네트워크 통신 | | **레이저 마킹기** | 2D QR 코드 및 텍스트 일련번호를 제품 표면에 인쇄합니다. | 마킹 제어 보드 연동 | -| *(전류 측정 DMM)* | *설정 파일(예: 192.168.1.102)에 존재하나 현재 제어 시퀀스에서는 사용하지 않습니다.* | *(미사용)* | ## 1.4 설치 경로(`C:\marking\`) 구조 및 생성 파일 역할 @@ -320,15 +649,14 @@ a:hover { | **실행 프로그램** | `marking_gui.exe` | 메인 성능 검사 및 레이저 마킹 GUI 제어 실행 파일 | | **종속 라이브러리** | `marking_gui.dll`, `*.deps.json`, `*.runtimeconfig.json` | .NET 9.0 (WPF) 자립형 런타임 및 종속 구성 바이너리 | | **통합 설정 파일** | `Setting.ini` | 마킹기 폴더 경로, 테스트 모드, 도안 태그 매핑, 계측기 LAN IP, SCPI 전원 커맨드, 계측 판정 규격 임계치(`[Limits]`) 종합 설정 파일 | -| **DB 설정 파일** | `Database.ini` | MS-SQL 데이터베이스 접속 주소, DB명, 사용자 계정/PW, 오프라인 모드(`OfflineMode=true`) 설정 파일 | +| **DB 설정 파일** | `Database.ini` | MS-SQL 데이터베이스 접속 주소, DB명, 사용자 계정/PW, 오프라인 모드(`OfflinePreview=true`) 및 로그인 프로시저 설정 파일 | | **센서 설정 파일** | `Sensor.ini` | 4251 센서 통신 보드 시리얼 포트(`Port=COM3`), 통신 속도(`BaudRate=115200`), 통신 채널(`Channel=1`) 설정 파일 | | **드라이버 폴더** | `libs/` | C++ LMC 각인 드라이버 격리 디렉터리 (`MarkEzdWrapper.dll`, `DataMgr.dll`, `MarkEzd.dll`, `haspms32.dll` 등) | | **로그 저장 폴더** | `logs/` *(자동 생성)* | 시스템 운용 중 발생하는 일별 이벤트 로그, 통신 이력, 각인 성공/실패 기록 텍스트 저장 디렉터리 (예: `logs/2026-07-23.log`) | | **백업 보관 폴더** | `publish_backup/` | 프로그램 업데이트 및 빌드 배포 시 이전 릴리즈 바이너리/설정 자동 백업 폴더 | ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* +
@@ -389,36 +717,41 @@ a:hover { EzdFolderPath=c:\EzCad\EasyCfg ; EZD 도안 파일 기본 탐색/저장 폴더 경로 test=false ; 테스트 마킹 버튼 및 개발 모드 노출 여부 (true/false) +[Equipment] +Timeout=5000 ; 계측기 통신 타임아웃 (ms) +SettleMilliseconds=2000 ; 테스트 전원 인가 후 측정 안정화 대기 시간 (ms) + [DMM] -VoltageHost=192.168.1.100 ; 전압/저항 측정용 계측기(DMM) IP 주소 +VoltageHost=192.168.10.100 ; 전압(Voltage) 측정용 계측기 IP 주소(예시) -[CurrentDMM] -CurrentDMMHost=192.168.1.102 ; 전류 측정용 계측기(DMM) IP 주소 +[ResistanceDMM] +ResistanceDMMHost=192.168.10.101 ; 저항(Resistance) 측정용 계측기 IP 주소(예시) [PowerSupply] -CurrentHost=192.168.1.101 ; 전원 공급기(Power Supply) IP 주소 +CurrentHost=192.168.10.102 ; 전원 공급기(Power Supply) 및 전류 측정 장치 IP 주소(예시) [Limits] -MinVoltage=4.0 ; 전압 하한 판정 기준값 (V) -MaxVoltage=6.0 ; 전압 상한 판정 기준값 (V) -MinCurrent=8.0 ; 전류 하한 판정 기준값 (mA) -MaxCurrent=10.0 ; 전류 상한 판정 기준값 (mA) -MinResistance=0.4 ; 저항 하한 판정 기준값 (kΩ) -MaxResistance=0.8 ; 저항 상한 판정 기준값 (kΩ) +MinVoltage=1.00 ; 전압 하한 판정 기준값 (V) +MaxVoltage=6.00 ; 전압 상한 판정 기준값 (V) +MinCurrent=5.00 ; 전류 하한 판정 기준값 (mA) +MaxCurrent=10.00 ; 전류 상한 판정 기준값 (mA) +MinResistance=8.000 ; 저항 하한 판정 기준값 (kΩ) +MaxResistance=13.000 ; 저항 상한 판정 기준값 (kΩ) ``` #### 2) Database.ini (주요 변경 가능 설정) DB 서버 접속 주소 및 점검용 오프라인 모드 변경 시 수정하는 항목입니다. ```ini [Database] -Db_Server=192.168.1.200 ; MSSQL 데이터베이스 서버 IP 주소 -Db_Name=MarkingDb ; 연결할 데이터베이스 이름 -Db_User=db_user ; DB 접속 사용자 계정 -Db_Password=db_password ; DB 접속 비밀번호 -OfflineMode=False ; DB 미연결 점검 모드 (True: DB 저장 생략, False: 정상 검증/적재) +Db_Server=192.168.10.10, 1433 ; MSSQL 데이터베이스 서버 IP 주소 및 포트 +Db_Name=NE1aW_PT_Sensor ; 연결할 데이터베이스 이름 +Db_User=su ; DB 접속 사용자 계정 +Db_Password=amotech821 ; DB 접속 비밀번호 [Login] -OfflinePreview=False ; 로그인 DB 검증 우회 여부 (True: 로그인 생략, False: 정상 검증) +Procedure=dbo.CheckOperator ; 작업자 로그인 검증용 저장 프로시저명 +ProcessName=Marking ; 공정 구분 코드 +OfflinePreview=false ; DB 연결 우회 오프라인 모드 (true: DB 생략, false: 실제 DB 검증) ``` #### 3) Sensor.ini (주요 변경 가능 설정) @@ -426,6 +759,7 @@ OfflinePreview=False ; 로그인 DB 검증 우회 여부 (True: 로 ```ini [Sensor] Port=COM3 ; 바코드 스캐너 시리얼 포트 (장치 관리자 COM 포트 번호) +BaudRate=115200 ; 시리얼 통신 속도 (기본값: 115200) Channel=1 ; 통신 채널 번호 (1 또는 2) ``` @@ -446,9 +780,7 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) - 프로그램 실행 후 작업자 계정으로 로그인을 시도합니다. - 로그인이 완료되면 전원 공급 장치의 상시전원 채널 전원 램프가 자동으로 켜지는지 확인합니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.*
@@ -460,61 +792,72 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) ## 3.1 메인 화면 레이아웃 구성 -본 프로그램은 작업자가 화면 구성 및 각 항목 상태를 파악할 수 있도록 4개의 카드 레이아웃으로 화면을 구성했습니다. +본 프로그램은 작업자가 전체 검사 및 마킹 진행 상황을 직관적으로 파악할 수 있도록 역할별 카드 레이아웃으로 화면을 구성했습니다. ### 3.1.1 상단 헤더 영역 (Header Bar) -프로그램 최상단 영역에는 시스템 정보 배지와 제어 버튼이 배치되어 있습니다. -* **실시간 시계**: 좌측 상단에 날짜와 시간이 표시됩니다. +프로그램 최상단 영역에는 시스템 로고, 실시간 시계, 작업 정보 배지 및 시스템 제어 버튼이 배치되어 있습니다. +* **시스템 로고 및 버젼**: 좌측 상단에 `Marking v1.0.0` 시스템 명칭이 배치되어 있습니다. +* **실시간 시계**: 로고 우측에 현재 날짜와 시간(`YYYY-MM-DD HH:mm:ss`)이 실시간으로 표시됩니다. * **작업 정보 배지**: - * **공정 라인**: 로그인 단계에서 지정한 생산 라인 코드 (`Line No`) - * **로트 번호**: 로그인 단계에서 지정한 생산 로트 번호 (`Lot No`) - * **모델명**: 현재 가동 중인 제품의 사양 모델 (`Model`) - * **작업자**: 로그인한 작업자의 이름 (`Operator`) -* **제어 버튼**: 우측 상단에 `로그아웃` 버튼이 위치하며 최하단 바에 설정 관련 버튼이 배치됩니다. - + * **작업자**: 로그인한 작업자의 이름 또는 계정 ID (`Operator`) + * **모델**: 현재 적용 중인 레이저 각인 도안 모델명 (`Model`) + * **라인**: 로그인 단계에서 지정한 생산 라인 코드 (`Line No`) +* **제어 버튼**: 우측 상단에 `로그아웃` 버튼과 윈도우 창 제어(최소화, 창 모드, 프로그램 종료) 버튼이 위치합니다. +Pasted image 20260728100308.png --- ## 3.2 상태 및 제어 카드 영역 -화면 중앙에는 역할을 구분한 4개의 상태 카드가 배치되어 있어, 제품 상태와 계측 단계를 모니터링할 수 있습니다. - -### 3.2.1 [카드 1] 제품 정보 및 이전 결과 (좌측 상단) -제품의 일련번호와 이전 생산 공정에서의 합격 이력을 대조하는 영역입니다. -* **작업 모델 설정**: - - `파일 선택` 버튼을 사용하여 각인용 도면 파일을 불러옵니다. - - 도면 파일 선택이 완료되면 상단 헤더 영역의 모델명(Model) 배지 텍스트가 선택한 도면명으로 자동 변경됩니다. -* **일련번호 (IC_SN)**: 제품이 안착되면 센서 판독기를 통해 자동으로 인식되어 표시됩니다. (읽기 전용) -* **이전 공정 이력 배지**: - * **Housing**: 하우징 조립 공정 판정 상태 (`PASS` / `FAIL` / `대기`) - * **Calibration**: 압력 보정 공정 판정 상태 (`PASS` / `FAIL` / `대기`) - * **EOL**: EOL 1차 성능 평가 판정 상태 (`PASS` / `FAIL` / `대기`) - * *주의: 이전 공정 이력 배지 중 하나라도 `FAIL` 상태인 경우 성능 검사를 시작할 수 없습니다.* - -### 3.2.2 [카드 2] 측정 결과 (우측 상단) -현재 장비에서 실제 계측한 3대 전기 파라미터(전압, 전류, 저항) 수치와 설정된 기준 규격 범위를 표시하는 영역입니다. -* **측정 전압 (Voltage)**: 전압 측정 장치가 측정한 전압 수치 (**V** 단위) -* **측정 전류 (Current)**: 전원 공급 장치가 측정한 소모 전류 수치 (**mA** 단위) -* **측정 저항 (Resistance)**: 저항 측정 장치가 측정한 전기적 저항 수치 (**kΩ** 단위) -* *알림: 각 물리량의 하단에는 현재 적용 중인 기준 규격 범위가 문구(`기준범위: X ~ Y`)로 표출되며, 실측값이 규격 범위 내에 도달하면 카드 테두리가 **초록색(PASS)**으로 표시되고, 범위를 벗어나면 테두리가 **빨간색(FAIL)**으로 바뀝니다.* - -### 3.2.3 [카드 3] 진행상황 (좌측 하단) -현재 설비가 수행하고 있는 단계별 자동 제어 시퀀스를 보여주는 안내 창입니다. -* "대기 상태", "제품 정보 수집 중...", "이전 공정 검사 결과 조회 중...", "측정 계측기 데이터 수집 중...", "제품 합격 - 레이저 각인 중..." 등 작동 상태를 실시간 텍스트로 표출합니다. - -### 3.2.4 [카드 4] 판정결과 (우측 하단) -제품의 최종 합격(PASS) 및 불합격(FAIL) 상태를 표시합니다. -* 계측 검사와 데이터 저장, 레이저 각인이 완료되었을 때 최종 합격인 경우 카드 배경이 **초록색(PASS)**으로 전환되며, 불합격인 경우 카드 배경이 **빨간색(FAIL)**으로 변경됩니다. - -### 3.2.5 최하단 제어 영역 (Control Box) -* **검사 시작 (START)**: 전체 검사 시퀀스를 기동하는 메인 버튼입니다. 이 버튼을 누르면 이전 계측 수치들이 초기화되고 새로운 측정 프로세스가 개시됩니다. -* **강제 검사 (스킵)**: 이전 가공 공정의 합격 이력이 없더라도 검증 단계를 건너뛰고 성능 계측 및 각인 시퀀스를 기동하는 버튼입니다. -* **테스트 마킹**: 성능 계측 없이 즉시 각인기에 테스트 마킹 신호를 전송하는 버튼입니다. -* *참고: `강제 검사 (스킵)` 및 `테스트 마킹` 버튼은 환경 설정에서 테스트 모드가 활성화된 상태에서만 화면 하단에 노출됩니다.* - +화면 중앙은 효율적인 검사 구성을 위해 **좌측 패널**과 **우측 패널**로 구분되어 있습니다. + +### 3.2.1 [카드 1] 작업 모델 설정 & IC_SN 및 각인 정보 (좌측 상단) +제품의 일련번호와 실시간 각인 정보를 확인하고 레이저 마킹 도면을 관리하는 영역입니다. +* **작업 모델 설정 (EZD 파일)**: + - `📁 파일 선택` 버튼을 통해 제품 각인용 도면 파일(.ezd)을 불러올 수 있습니다. + - 도면 파일 선택 시 상단 헤더 영역의 모델(`Model`) 배지 텍스트가 선택한 도면명으로 자동 반영됩니다. +* **일련번호 (IC_SN)**: 4251 센서 판독기를 통해 읽어온 제품 내부 칩의 고유 일련번호가 표시됩니다. (읽기 전용) +* **실시간 각인 정보 패널**: + - **현재 Lot No**: 로그인 시 설정된 생산 로트 번호 (`Lot No`) + - **다음 각인 순번**: 당일 해당 로트에서 각인될 제품의 차례 순번 (`예: 0001 차례`) +Pasted image 20260728100343.png +### 3.2.2 [카드 2] 이전 시험 단계 결과 (좌측 하단) +생산 데이터베이스(MS-SQL)를 조회하여 선행 공정의 합격 여부를 판정하는 카드입니다. +* **1. Housing**: 하우징 조립 공정 검사 판정 상태 (`PASS` / `FAIL` / `대기`) +* **2. Calibration**: 센서 압력 보정 공정 판정 상태 (`PASS` / `FAIL` / `대기`) +* **3. EOL**: EOL 1차 성능 평가 공정 판정 상태 (`PASS` / `FAIL` / `대기`) +* *주의: 이전 공정 이력 중 하나라도 `FAIL` 상태이거나 이력이 없는 경우 메인 성능 검사를 시작할 수 없습니다. (강제 검사 스킵 버튼 미사용 시)* +Pasted image 20260728100354.png +### 3.2.3 [카드 3] 측정 데이터 수치 카드 (우측 상단) +실제 계측기를 통해 수집된 3대 전기 파라미터 수치와 설정된 규격 범위를 표시하는 3열 구조의 카드입니다. +* **측정 전압 (Voltage)**: DMM 계측 장비가 측정한 실측 전압 수치 (**V** 단위, 기본 기준범위: `0.0V ~ 0.5V`) +* **측정 전류 (Current)**: Power Supply 전원공급 장치가 측정한 소모 전류 수치 (**mA** 단위, 기본 기준범위: `8.00mA ~ 10.00mA`) +* **측정 저항 (Resistance)**: DMM 측정 장비가 측정한 전기적 저항 수치 (**kΩ** 단위, 기본 기준범위: `0.400kΩ ~ 0.800kΩ`) +* *알림: 각 수치 카드 하단에는 설정 파일(`Setting.ini`)에서 지정한 임계 규격 범위가 표시되며, 실측값이 범위 내에 들어오면 카드 테두리가 **초록색(PASS)**으로, 범위를 벗어나면 **빨간색(FAIL)**으로 자동 전환됩니다.* +Pasted image 20260728100404.png +### 3.2.4 [카드 4] 최종 판정 및 종합 상태 영역 (우측 하단) +진행 상황 및 최종 판정 결과를 통합 표시하는 영역입니다. +* **💬 진행 상황 뱃지**: "대기 상태", "제품 정보 수집 중...", "측정 계측기 데이터 수집 중...", "제품 합격 - 레이저 각인 중..." 등 설비 시퀀스 동작을 실시간 텍스트로 표출합니다. +* **세부 정보 그리드**: + - **검사 시간 정보**: 전체 시퀀스 기동 시작 시간 및 종료 시간 표출 + - **일련번호 정보**: IC S/N, PCB 바코드, 실제 각인 완료 번호 표출 + - **최종 판정결과**: 최종 **PASS** (초록색) / **FAIL** (빨간색) 대형 배지 표출 + - **시스템 상태**: 통신 및 디바이스 가동 상태 또는 에러 메시지 배너 표출 +Pasted image 20260728100413.png --- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* +## 3.3 하단 제어 영역 (Control Box & Footer) + +* **▶ 검사 시작 (START) 버튼**: 화면 하단에 위치한 대형 버튼으로, 전체 계측 및 각인 시퀀스를 개시합니다. +* **최하단 버튼 그룹**: + * **파라미터 설정**: 계측 임계 규격치 및 마킹 파라미터 설정 창을 호출합니다. + * **포트 설정**: 센서 통신 보드의 시리얼 COM 포트 및 채널 설정 창을 호출합니다. + * **강제 검사 (스킵)**: 이전 공정 이력이 없어도 검증을 건너뛰고 계측 및 마킹을 수행합니다. + * **테스트 마킹**: 계측 과정 없이 레이저 각인 장비 동작을 테스트합니다. + * *참고: `강제 검사 (스킵)` 및 `테스트 마킹` 버튼은 설정 파일(`Setting.ini`)에서 `TestMode=true`로 활성화된 경우에만 화면에 노출됩니다.* +Pasted image 20260728100445.png + +
@@ -526,22 +869,22 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) ## 4.1 포트 설정 화면 사용법 -프로그램 상단의 `통신 설정` 버튼을 클릭하면 포트 설정 대화 상자가 나타납니다. 이 대화 상자에서 센서 판독 장치(4251 보드)의 연결 포트 및 채널을 설정할 수 있습니다. - +메인 화면 최하단 바의 `포트 설정` 버튼을 클릭하면 포트 설정 대화 상자가 나타납니다. 이 대화 상자에서 센서 판독 장치(4251 보드)의 연결 포트, 통신 속도 및 채널을 설정할 수 있습니다. +Pasted image 20260728100828.png ### 주요 설정 항목 및 설명 1. **통신 포트 (Port)**: - - 센서 판독기가 연결되어 있는 PC의 연결 포트를 선택합니다. (예: `COM1`, `COM3`, `COM4` 등) - - 현재 PC에 인식되어 있는 포트 목록이 자동으로 표시됩니다. + - 센서 판독기가 연결되어 있는 PC의 시리얼 포트를 선택합니다. (예: `COM1`, `COM3`, `COM4` 등) + - 현재 PC 장치 관리자에 인식되어 있는 유효한 COM 포트 목록이 자동으로 조회되어 드롭다운에 추가됩니다. 2. **통신 속도 (BaudRate)**: - - 센서 판독 장치와의 데이터 송수신 속도를 설정합니다. - - 기본 설정값은 **`115200`** 이며, 특수한 경우가 아니면 변경하지 않는 것을 권장합니다. + - 센서 판독 장치와의 시리얼 송수신 속도(Baud Rate)를 설정합니다. (옵션: `9600`, `19200`, `38400`, `57600`, `115200`) + - 4251 센서 보드 통신의 기본 규격 설정값은 **`115200`** 입니다. 3. **통신 채널 (Channel)**: - - 센서 판독기 내부의 연결 채널을 결정합니다. - - 드롭다운 메뉴를 통해 **`CH1`** 또는 **`CH2`**를 선택할 수 있습니다. - - 선택된 채널에 따라 센서 인식 모드가 변경됩니다. + - 센서 판독기 내부의 연동 채널 번호를 결정합니다. + - 드롭다운 메뉴를 통해 **`1`** 또는 **`2`** 채널을 선택할 수 있습니다. + - 선택된 채널 및 포트 정보는 `Sensor.ini` 파일에 저장됩니다. --- @@ -552,9 +895,7 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) - 저장 시 기존 센서 연결을 해제하고 새로운 설정값으로 센서 인식 서비스를 다시 시작합니다. 프로그램을 재시작할 필요 없이 변경 사항이 즉시 적용됩니다. - 저장하지 않고 창을 닫으려면 `취소` 버튼을 누릅니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.*
@@ -566,21 +907,18 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) ## 5.1 판정 기준 설정 -프로그램 상단 우측의 `시험 설정` 버튼을 클릭하면 판정 기준을 구성하는 대화 상자가 나타납니다. 이 화면에서 제품 합불 판정에 사용되는 전압, 전류, 저항의 기준값을 입력할 수 있습니다. - +메인 화면 최하단 바의 `파라미터 설정` 버튼을 클릭하면 기준 범위 설정 대화 상자가 나타납니다. 이 화면에서 제품 합불 판정에 사용되는 전압, 전류, 저항의 규격 임계 범위를 수동으로 변경할 수 있습니다. +Pasted image 20260728100846.png ### 5.1.1 각 항목별 한계치 입력 가이드 -* **전압 판정 범위**: - * **하한값**: 합격 전압 하한 규격 (V 단위) - * **상한값**: 합격 전압 상한 규격 (V 단위) -* **전류 판정 범위**: - * **하한값**: 합격 전류 하한 규격 (설정창 표기 단위 참조, 기본 mA/A) - * **상한값**: 합격 전류 상한 규격 (설정창 표기 단위 참조, 기본 mA/A) -* **저항 판정 범위**: - * **하한값**: 합격 저항 하한 규격 (설정창 표기 단위 참조, 기본 Ω/kΩ) - * **상한값**: 합격 저항 상한 규격 (설정창 표기 단위 참조, 기본 Ω/kΩ) +* **전압 (V)**: + * **하한값 ~ 상한값**: 합격 전압 하한 규격 ~ 상한 규격 (V 단위, 기본 예: `1.00V ~ 6.00V`) +* **전류 (A / mA)**: + * **하한값 ~ 상한값**: 합격 소모 전류 하한 규격 ~ 상한 규격 (설정창 단위 V/A/mA, 기본 예: `5.00mA ~ 10.00mA`) +* **저항 (Ω / kΩ)**: + * **하한값 ~ 상한값**: 합격 전기적 저항 하한 규격 ~ 상한 규격 (기본 예: `8.000kΩ ~ 13.000kΩ`) -*참고: 저장 버튼을 클릭하면 메인 화면의 하단 가이드 문구(`기준범위: X ~ Y`)가 즉시 갱신되어 새로 입력한 한계치가 다음 검사 시퀀스부터 반영됩니다.* +*참고: 저장 버튼을 클릭하면 메인 화면의 수치 카드 하단 가이드 문구(`기준범위: X ~ Y`)가 즉시 갱신되어 새로 입력한 한계치가 다음 검사 시퀀스부터 반영되며, `Setting.ini` 파일의 `[Limits]` 섹션에 자동 저장됩니다.* --- @@ -591,7 +929,7 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) * 도면이 선택되면 상단 헤더 배지의 모델명 정보도 해당 도면 파일명으로 자동으로 변경됩니다. * **유의 사항**: * 지정해 놓은 도면 파일이 실제 경로에 존재하지 않는 경우, 계측 성능 검사가 합격하더라도 각인 단계에서 에러가 납니다. 검사 전 파일 경로 상태를 확인하십시오. - +Pasted image 20260728100910.png --- ## 5.3 설정 저장 및 적용 @@ -599,9 +937,7 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) * 설정 창의 `저장` 버튼을 클릭하면 변경된 파라미터가 시스템 설정에 저장됩니다. * 저장 완료 즉시 **메인 화면 하단에 표시되는 판정 기준 가이드 텍스트**가 업데이트되며, 이후에 새로 시작하는 성능 검사 시퀀스부터 새로운 규격치가 적용됩니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.*
@@ -655,9 +991,7 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) - **임시 일련번호 생성**: 일련번호가 비어 있는 상태에서 테스트를 개시하는 경우 현재 시간 기반의 임시 일련번호가 자동으로 부여되어 진행합니다. - **각인 모사**: 실제 각인기에 데이터를 전송하는 단계를 가상 성공 처리하여 전체 흐름을 테스트합니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.*
@@ -733,9 +1067,7 @@ graph TD * 합격 판정과 동시에 레이저 마킹기에 각인 데이터가 전달되어 2D QR 코드 및 제품 일련번호 각인이 자동으로 실행됩니다. * 마킹 완료 기록과 계측 수치는 최종 PASS 상태로 데이터베이스에 저장됩니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.*
@@ -775,9 +1107,7 @@ graph TD 4. **레이저 마킹 도면 파일 백업**: * 제품 표면에 각인할 마킹 도면 파일입니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.*
@@ -837,8 +1167,6 @@ graph TD * **프로그램 완전 종료**: - 화면 우측 상단의 `닫기(X)` 버튼을 눌러 프로그램을 최종 종료할 때도, 자동으로 상시전원 차단 명령을 장비에 인계한 뒤 레이저 각인 드라이버 리소스를 닫고 메모리를 환원합니다. ---- -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Manual/Manual_for_pdf.html b/marking_gui/Manual/Manual_for_pdf.html index 5d6621d..9a5a525 100644 --- a/marking_gui/Manual/Manual_for_pdf.html +++ b/marking_gui/Manual/Manual_for_pdf.html @@ -172,18 +172,21 @@ pre code { white-space: inherit; } -/* 이미지 스타일 */ -img { - max-width: 100%; - max-height: 100mm; /* A4 높이의 약 절반 이하로 제한 */ +/* 이미지 스타일 (스크린샷 크기 조절) */ +img, .img-screenshot { + max-width: 65%; + max-height: 70mm; /* A4 용지 및 화면 출력 시 적당한 크기로 한정 */ display: block; - margin: 15px auto; + margin: 16px auto; object-fit: contain; page-break-inside: avoid; - border: 1px solid #e1e4e8; - box-shadow: 0 1px 3px rgba(0,0,0,0.1); + border: 1px solid #d1d5db; + border-radius: 6px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08); } + + /* 페이지 나누기 요소 */ .page-break { page-break-before: always !important; @@ -218,73 +221,364 @@ a:hover { margin-right: 4px; } +/* ========================================== + 표지 (Cover Page) 스타일 (Minimal & Clean) + ========================================== */ +.cover-page { + text-align: center; + padding: 70mm 0 30mm 0; + page-break-after: always !important; + box-sizing: border-box; + display: flex; + flex-direction: column; + justify-content: space-between; + min-height: 220mm; +} + +.cover-header { + margin-top: 20px; +} + +.cover-title { + font-size: 28pt !important; + font-weight: 700 !important; + color: #1a1a1a !important; + margin: 0 0 16px 0 !important; + padding: 0 !important; + border: none !important; + letter-spacing: -0.5px; + line-height: 1.2; +} + +.cover-subtitle { + font-size: 16pt; + font-weight: 500; + color: #007acc; + margin: 0; + letter-spacing: 2px; + text-transform: uppercase; +} + +.cover-meta { + margin-top: 100px; + font-size: 9.5pt; + color: #666666; + letter-spacing: 0.5px; + border-top: 1px solid #eaeaea; + padding-top: 20px; + width: 60%; + margin-left: auto; + margin-right: auto; +} + + +/* ========================================== + 점선 리더 목차 (Dot Leader TOC) 스타일 + ========================================== */ +.toc-container { + padding: 10px 0; +} + +.toc-heading { + font-size: 22pt !important; + font-weight: 700 !important; + color: #111827 !important; + border-bottom: 2px solid #007acc !important; + padding-bottom: 8px !important; + margin-bottom: 28px !important; +} + +.toc-list { + display: flex; + flex-direction: column; + gap: 10px; +} + +.toc-item { + display: flex; + align-items: baseline; + font-size: 11pt; + line-height: 1.5; + margin-top: 6px; +} + +.toc-sub-item { + display: flex; + align-items: baseline; + font-size: 9.5pt; + line-height: 1.4; + padding-left: 18px; +} + +.toc-sub2-item { + display: flex; + align-items: baseline; + font-size: 9pt; + line-height: 1.3; + padding-left: 36px; + color: #6b7280; +} + +.toc-title { + font-weight: 600; + color: #1f2937; + white-space: nowrap; + padding-right: 6px; +} + +.toc-sub-item .toc-title { + font-weight: 500; + color: #374151; +} + +.toc-sub2-item .toc-title { + font-weight: 400; + color: #4b5563; +} + +.toc-title a { + color: #1f2937 !important; + text-decoration: none !important; +} + +.toc-sub-item .toc-title a { + color: #374151 !important; +} + +.toc-sub2-item .toc-title a { + color: #4b5563 !important; +} + +.toc-title a:hover { + color: #007acc !important; +} + +.toc-leader { + flex-grow: 1; + border-bottom: 1.5px dotted #9ca3af; + margin: 0 4px; + position: relative; + top: -4px; +} + +.toc-sub-item .toc-leader { + border-bottom: 1px dotted #cbd5e1; +} + +.toc-sub2-item .toc-leader { + border-bottom: 1px dotted #e2e8f0; +} + +.toc-page { + font-weight: 700; + color: #374151; + padding-left: 6px; + white-space: nowrap; +} + +.toc-sub-item .toc-page { + font-weight: 600; + color: #4b5563; +} + +.toc-sub2-item .toc-page { + font-weight: 400; + color: #6b7280; +} + + + -

Performance Inspect & Laser Marking System - 사용자 메뉴얼

-
-

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

-
-
-

메뉴얼 목차

-

본 메뉴얼은 각 주제별로 별도 문서로 구성되어 있습니다. 아래 링크를 클릭하여 해당 문서로 이동하세요.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
번호문서설명
1시스템 개요 및 요구사항프로그램 소개, 주요 기능, 하드웨어/소프트웨어 요구사항, 장비 구성
2초기 설정 가이드설정 파일의 구성 요소 안내 및 최초 장비 가동 시 점검 순서
3메인 화면 (Home View)상단 정보 표시, 제품 정보 카드, 검사 결과 화면, 진행 상황 확인 및 버튼 제어 가이드
4통신 설정 (Comm. Settings)4251 센서 통신 채널 설정 및 PC 통신 포트 연동 방법
5시험 설정 (Parameters)제품 규격치(전압, 전류, 저항 범위) 및 레이저 마킹 도면 파일 연동
6측정 데이터 조회 (Data View)생산 데이터베이스를 통한 이전 공정 이력 자동 조회 및 최종 결과 저장 원리
7자동 시험 프로세스자동 계측 시퀀스 기동, 마킹 수행 및 최종 합격 판정 흐름
8로그 및 데이터 관리시스템 로그 파일 확인 방법 및 장비 설정 파일 백업 방법
9오류 대응 및 프로그램 종료센서 통신 오류, DB 조회 에러, 마킹 불량 등 현장 장애 대응 및 안전한 프로그램 종료 방법
-
+
+

목차

+
+ + + + + + + + + + + + + + + + + +
+ 4.2 설정 저장 + + 11 +
+ + + + + + + + + + + + + + + + + + +
+
+ +
+

빠른 시작 가이드 (Quick Start)

처음 시스템을 가동하여 검사를 진행하는 경우 다음 순서에 따라 작업을 수행해 주십시오.

    @@ -301,8 +595,6 @@ a:hover {
  1. 성능 검사 및 마킹 시작
  2. 안착 지그에 제품을 바르게 장착한 뒤 메인 화면 하단의 검사 시작 (START) 버튼을 눌러 계측 및 마킹을 수행합니다.
-
-

본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

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

@@ -333,11 +625,11 @@ a:hover { 실제 저항값 측정 -전압/저항 DMM 측정기를 통해 센서의 실제 저항값(Ω)을 측정합니다. +전압/저항 DMM 측정기를 통해 센서의 실제 저항값(kΩ)을 측정합니다. 전류 측정 -전원 공급 장치(Power Supply)의 출력 채널 1을 통해 제품의 소모 전류를 계측합니다. +전원 공급 장치(Power Supply)의 출력 채널 1을 통해 제품의 소모 전류(mA)를 계측합니다. 레이저 각인 연동 @@ -410,12 +702,12 @@ a:hover { 전압 및 저항 측정 장비 (DMM) -제품의 전압(V) 및 전기적 저항(Ω)을 측정합니다. (예: 192.168.1.100) +제품의 전압(V) 및 전기적 저항(kΩ)을 측정합니다. TCP/IP 네트워크 통신 전류 측정 및 전원 공급 장비 (PSU) -제품 구동을 위한 전원 공급 및 소모 전류(A)를 측정합니다. (예: 192.168.1.101) +제품 구동을 위한 전원 공급 및 소모 전류(mA)를 측정합니다. TCP/IP 네트워크 통신 @@ -423,11 +715,6 @@ a:hover { 2D QR 코드 및 텍스트 일련번호를 제품 표면에 인쇄합니다. 마킹 제어 보드 연동 - -(전류 측정 DMM) -설정 파일(예: 192.168.1.102)에 존재하나 현재 제어 시퀀스에서는 사용하지 않습니다. -(미사용) -

1.4 설치 경로(C:\marking\) 구조 및 생성 파일 역할

@@ -459,7 +746,7 @@ a:hover { DB 설정 파일 Database.ini -MS-SQL 데이터베이스 접속 주소, DB명, 사용자 계정/PW, 오프라인 모드(OfflineMode=true) 설정 파일 +MS-SQL 데이터베이스 접속 주소, DB명, 사용자 계정/PW, 오프라인 모드(OfflinePreview=true) 및 로그인 프로시저 설정 파일 센서 설정 파일 @@ -483,8 +770,6 @@ a:hover { -
-

본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

2. 초기 설정 가이드

@@ -542,39 +827,45 @@ a:hover { EzdFolderPath=c:\EzCad\EasyCfg ; EZD 도안 파일 기본 탐색/저장 폴더 경로 test=false ; 테스트 마킹 버튼 및 개발 모드 노출 여부 (true/false) +[Equipment] +Timeout=5000 ; 계측기 통신 타임아웃 (ms) +SettleMilliseconds=2000 ; 테스트 전원 인가 후 측정 안정화 대기 시간 (ms) + [DMM] -VoltageHost=192.168.1.100 ; 전압/저항 측정용 계측기(DMM) IP 주소 +VoltageHost=192.168.10.100 ; 전압(Voltage) 측정용 계측기 IP 주소(예시) -[CurrentDMM] -CurrentDMMHost=192.168.1.102 ; 전류 측정용 계측기(DMM) IP 주소 +[ResistanceDMM] +ResistanceDMMHost=192.168.10.101 ; 저항(Resistance) 측정용 계측기 IP 주소(예시) [PowerSupply] -CurrentHost=192.168.1.101 ; 전원 공급기(Power Supply) IP 주소 +CurrentHost=192.168.10.102 ; 전원 공급기(Power Supply) 및 전류 측정 장치 IP 주소(예시) [Limits] -MinVoltage=4.0 ; 전압 하한 판정 기준값 (V) -MaxVoltage=6.0 ; 전압 상한 판정 기준값 (V) -MinCurrent=8.0 ; 전류 하한 판정 기준값 (mA) -MaxCurrent=10.0 ; 전류 상한 판정 기준값 (mA) -MinResistance=0.4 ; 저항 하한 판정 기준값 (kΩ) -MaxResistance=0.8 ; 저항 상한 판정 기준값 (kΩ) +MinVoltage=1.00 ; 전압 하한 판정 기준값 (V) +MaxVoltage=6.00 ; 전압 상한 판정 기준값 (V) +MinCurrent=5.00 ; 전류 하한 판정 기준값 (mA) +MaxCurrent=10.00 ; 전류 상한 판정 기준값 (mA) +MinResistance=8.000 ; 저항 하한 판정 기준값 (kΩ) +MaxResistance=13.000 ; 저항 상한 판정 기준값 (kΩ)

2) Database.ini (주요 변경 가능 설정)

DB 서버 접속 주소 및 점검용 오프라인 모드 변경 시 수정하는 항목입니다.

[Database]
-Db_Server=192.168.1.200          ; MSSQL 데이터베이스 서버 IP 주소
-Db_Name=MarkingDb                ; 연결할 데이터베이스 이름
-Db_User=db_user                  ; DB 접속 사용자 계정
-Db_Password=db_password          ; DB 접속 비밀번호
-OfflineMode=False                ; DB 미연결 점검 모드 (True: DB 저장 생략, False: 정상 검증/적재)
+Db_Server=192.168.10.10, 1433    ; MSSQL 데이터베이스 서버 IP 주소 및 포트
+Db_Name=NE1aW_PT_Sensor          ; 연결할 데이터베이스 이름
+Db_User=su                       ; DB 접속 사용자 계정
+Db_Password=amotech821           ; DB 접속 비밀번호
 
 [Login]
-OfflinePreview=False             ; 로그인 DB 검증 우회 여부 (True: 로그인 생략, False: 정상 검증)
+Procedure=dbo.CheckOperator      ; 작업자 로그인 검증용 저장 프로시저명
+ProcessName=Marking              ; 공정 구분 코드
+OfflinePreview=false             ; DB 연결 우회 오프라인 모드 (true: DB 생략, false: 실제 DB 검증)
 

3) Sensor.ini (주요 변경 가능 설정)

바코드 스캐너 시리얼 포트 및 채널 설정 항목입니다.

[Sensor]
 Port=COM3                        ; 바코드 스캐너 시리얼 포트 (장치 관리자 COM 포트 번호)
+BaudRate=115200                  ; 시리얼 통신 속도 (기본값: 115200)
 Channel=1                        ; 통신 채널 번호 (1 또는 2)
 

@@ -592,84 +883,99 @@ Channel=1 ; 통신 채널 번호 (1 또는 2)
  • 프로그램 실행 후 작업자 계정으로 로그인을 시도합니다.
  • 로그인이 완료되면 전원 공급 장치의 상시전원 채널 전원 램프가 자동으로 켜지는지 확인합니다.
  • -
    -

    본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

    3. 메인 화면 (Home View)


    3.1 메인 화면 레이아웃 구성

    -

    본 프로그램은 작업자가 화면 구성 및 각 항목 상태를 파악할 수 있도록 4개의 카드 레이아웃으로 화면을 구성했습니다.

    +

    본 프로그램은 작업자가 전체 검사 및 마킹 진행 상황을 직관적으로 파악할 수 있도록 역할별 카드 레이아웃으로 화면을 구성했습니다.

    3.1.1 상단 헤더 영역 (Header Bar)

    -

    프로그램 최상단 영역에는 시스템 정보 배지와 제어 버튼이 배치되어 있습니다. -* 실시간 시계: 좌측 상단에 날짜와 시간이 표시됩니다. +

    프로그램 최상단 영역에는 시스템 로고, 실시간 시계, 작업 정보 배지 및 시스템 제어 버튼이 배치되어 있습니다. +* 시스템 로고 및 버젼: 좌측 상단에 Marking v1.0.0 시스템 명칭이 배치되어 있습니다. +* 실시간 시계: 로고 우측에 현재 날짜와 시간(YYYY-MM-DD HH:mm:ss)이 실시간으로 표시됩니다. * 작업 정보 배지: - * 공정 라인: 로그인 단계에서 지정한 생산 라인 코드 (Line No) - * 로트 번호: 로그인 단계에서 지정한 생산 로트 번호 (Lot No) - * 모델명: 현재 가동 중인 제품의 사양 모델 (Model) - * 작업자: 로그인한 작업자의 이름 (Operator) -* 제어 버튼: 우측 상단에 로그아웃 버튼이 위치하며 최하단 바에 설정 관련 버튼이 배치됩니다.

    + * 작업자: 로그인한 작업자의 이름 또는 계정 ID (Operator) + * 모델: 현재 적용 중인 레이저 각인 도안 모델명 (Model) + * 라인: 로그인 단계에서 지정한 생산 라인 코드 (Line No) +* 제어 버튼: 우측 상단에 로그아웃 버튼과 윈도우 창 제어(최소화, 창 모드, 프로그램 종료) 버튼이 위치합니다. +Pasted image 20260728100308.png


    3.2 상태 및 제어 카드 영역

    -

    화면 중앙에는 역할을 구분한 4개의 상태 카드가 배치되어 있어, 제품 상태와 계측 단계를 모니터링할 수 있습니다.

    -

    3.2.1 [카드 1] 제품 정보 및 이전 결과 (좌측 상단)

    -

    제품의 일련번호와 이전 생산 공정에서의 합격 이력을 대조하는 영역입니다. -* 작업 모델 설정: - - 파일 선택 버튼을 사용하여 각인용 도면 파일을 불러옵니다. - - 도면 파일 선택이 완료되면 상단 헤더 영역의 모델명(Model) 배지 텍스트가 선택한 도면명으로 자동 변경됩니다. -* 일련번호 (IC_SN): 제품이 안착되면 센서 판독기를 통해 자동으로 인식되어 표시됩니다. (읽기 전용) -* 이전 공정 이력 배지: - * Housing: 하우징 조립 공정 판정 상태 (PASS / FAIL / 대기) - * Calibration: 압력 보정 공정 판정 상태 (PASS / FAIL / 대기) - * EOL: EOL 1차 성능 평가 판정 상태 (PASS / FAIL / 대기) - * 주의: 이전 공정 이력 배지 중 하나라도 FAIL 상태인 경우 성능 검사를 시작할 수 없습니다.

    -

    3.2.2 [카드 2] 측정 결과 (우측 상단)

    -

    현재 장비에서 실제 계측한 3대 전기 파라미터(전압, 전류, 저항) 수치와 설정된 기준 규격 범위를 표시하는 영역입니다. -* 측정 전압 (Voltage): 전압 측정 장치가 측정한 전압 수치 (V 단위) -* 측정 전류 (Current): 전원 공급 장치가 측정한 소모 전류 수치 (mA 단위) -* 측정 저항 (Resistance): 저항 측정 장치가 측정한 전기적 저항 수치 ( 단위) -* 알림: 각 물리량의 하단에는 현재 적용 중인 기준 규격 범위가 문구(기준범위: X ~ Y)로 표출되며, 실측값이 규격 범위 내에 도달하면 카드 테두리가 초록색(PASS)으로 표시되고, 범위를 벗어나면 테두리가 빨간색(FAIL)으로 바뀝니다.

    -

    3.2.3 [카드 3] 진행상황 (좌측 하단)

    -

    현재 설비가 수행하고 있는 단계별 자동 제어 시퀀스를 보여주는 안내 창입니다. -* "대기 상태", "제품 정보 수집 중...", "이전 공정 검사 결과 조회 중...", "측정 계측기 데이터 수집 중...", "제품 합격 - 레이저 각인 중..." 등 작동 상태를 실시간 텍스트로 표출합니다.

    -

    3.2.4 [카드 4] 판정결과 (우측 하단)

    -

    제품의 최종 합격(PASS) 및 불합격(FAIL) 상태를 표시합니다. -* 계측 검사와 데이터 저장, 레이저 각인이 완료되었을 때 최종 합격인 경우 카드 배경이 초록색(PASS)으로 전환되며, 불합격인 경우 카드 배경이 빨간색(FAIL)으로 변경됩니다.

    -

    3.2.5 최하단 제어 영역 (Control Box)

    +

    화면 중앙은 효율적인 검사 구성을 위해 좌측 패널우측 패널로 구분되어 있습니다.

    +

    3.2.1 [카드 1] 작업 모델 설정 & IC_SN 및 각인 정보 (좌측 상단)

    +

    제품의 일련번호와 실시간 각인 정보를 확인하고 레이저 마킹 도면을 관리하는 영역입니다. +* 작업 모델 설정 (EZD 파일): + - 📁 파일 선택 버튼을 통해 제품 각인용 도면 파일(.ezd)을 불러올 수 있습니다. + - 도면 파일 선택 시 상단 헤더 영역의 모델(Model) 배지 텍스트가 선택한 도면명으로 자동 반영됩니다. +* 일련번호 (IC_SN): 4251 센서 판독기를 통해 읽어온 제품 내부 칩의 고유 일련번호가 표시됩니다. (읽기 전용) +* 실시간 각인 정보 패널: + - 현재 Lot No: 로그인 시 설정된 생산 로트 번호 (Lot No) + - 다음 각인 순번: 당일 해당 로트에서 각인될 제품의 차례 순번 (예: 0001 차례) +Pasted image 20260728100343.png

    +

    3.2.2 [카드 2] 이전 시험 단계 결과 (좌측 하단)

    +

    생산 데이터베이스(MS-SQL)를 조회하여 선행 공정의 합격 여부를 판정하는 카드입니다. +* 1. Housing: 하우징 조립 공정 검사 판정 상태 (PASS / FAIL / 대기) +* 2. Calibration: 센서 압력 보정 공정 판정 상태 (PASS / FAIL / 대기) +* 3. EOL: EOL 1차 성능 평가 공정 판정 상태 (PASS / FAIL / 대기) +* 주의: 이전 공정 이력 중 하나라도 FAIL 상태이거나 이력이 없는 경우 메인 성능 검사를 시작할 수 없습니다. (강제 검사 스킵 버튼 미사용 시) +Pasted image 20260728100354.png

    +

    3.2.3 [카드 3] 측정 데이터 수치 카드 (우측 상단)

    +

    실제 계측기를 통해 수집된 3대 전기 파라미터 수치와 설정된 규격 범위를 표시하는 3열 구조의 카드입니다. +* 측정 전압 (Voltage): DMM 계측 장비가 측정한 실측 전압 수치 (V 단위, 기본 기준범위: 0.0V ~ 0.5V) +* 측정 전류 (Current): Power Supply 전원공급 장치가 측정한 소모 전류 수치 (mA 단위, 기본 기준범위: 8.00mA ~ 10.00mA) +* 측정 저항 (Resistance): DMM 측정 장비가 측정한 전기적 저항 수치 ( 단위, 기본 기준범위: 0.400kΩ ~ 0.800kΩ) +* 알림: 각 수치 카드 하단에는 설정 파일(Setting.ini)에서 지정한 임계 규격 범위가 표시되며, 실측값이 범위 내에 들어오면 카드 테두리가 초록색(PASS)으로, 범위를 벗어나면 빨간색(FAIL)으로 자동 전환됩니다. +Pasted image 20260728100404.png

    +

    3.2.4 [카드 4] 최종 판정 및 종합 상태 영역 (우측 하단)

    +

    진행 상황 및 최종 판정 결과를 통합 표시하는 영역입니다. +* 💬 진행 상황 뱃지: "대기 상태", "제품 정보 수집 중...", "측정 계측기 데이터 수집 중...", "제품 합격 - 레이저 각인 중..." 등 설비 시퀀스 동작을 실시간 텍스트로 표출합니다. +* 세부 정보 그리드: + - 검사 시간 정보: 전체 시퀀스 기동 시작 시간 및 종료 시간 표출 + - 일련번호 정보: IC S/N, PCB 바코드, 실제 각인 완료 번호 표출 + - 최종 판정결과: 최종 PASS (초록색) / FAIL (빨간색) 대형 배지 표출 + - 시스템 상태: 통신 및 디바이스 가동 상태 또는 에러 메시지 배너 표출 +Pasted image 20260728100413.png

    +
    +

    3.3 하단 제어 영역 (Control Box & Footer)

    -
    -

    본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

    4. 통신 설정 (Comm. Settings)


    4.1 포트 설정 화면 사용법

    -

    프로그램 상단의 통신 설정 버튼을 클릭하면 포트 설정 대화 상자가 나타납니다. 이 대화 상자에서 센서 판독 장치(4251 보드)의 연결 포트 및 채널을 설정할 수 있습니다.

    +

    메인 화면 최하단 바의 포트 설정 버튼을 클릭하면 포트 설정 대화 상자가 나타납니다. 이 대화 상자에서 센서 판독 장치(4251 보드)의 연결 포트, 통신 속도 및 채널을 설정할 수 있습니다. +Pasted image 20260728100828.png

    주요 설정 항목 및 설명

    1. 통신 포트 (Port):
    2. -
    3. 센서 판독기가 연결되어 있는 PC의 연결 포트를 선택합니다. (예: COM1, COM3, COM4 등)
    4. +
    5. 센서 판독기가 연결되어 있는 PC의 시리얼 포트를 선택합니다. (예: COM1, COM3, COM4 등)
    6. -

      현재 PC에 인식되어 있는 포트 목록이 자동으로 표시됩니다.

      +

      현재 PC 장치 관리자에 인식되어 있는 유효한 COM 포트 목록이 자동으로 조회되어 드롭다운에 추가됩니다.

    7. 통신 속도 (BaudRate):

    8. -
    9. 센서 판독 장치와의 데이터 송수신 속도를 설정합니다.
    10. +
    11. 센서 판독 장치와의 시리얼 송수신 속도(Baud Rate)를 설정합니다. (옵션: 9600, 19200, 38400, 57600, 115200)
    12. -

      기본 설정값은 115200 이며, 특수한 경우가 아니면 변경하지 않는 것을 권장합니다.

      +

      4251 센서 보드 통신의 기본 규격 설정값은 115200 입니다.

    13. 통신 채널 (Channel):

    14. -
    15. 센서 판독기 내부의 연결 채널을 결정합니다.
    16. -
    17. 드롭다운 메뉴를 통해 CH1 또는 CH2를 선택할 수 있습니다.
    18. -
    19. 선택된 채널에 따라 센서 인식 모드가 변경됩니다.
    20. +
    21. 센서 판독기 내부의 연동 채널 번호를 결정합니다.
    22. +
    23. 드롭다운 메뉴를 통해 1 또는 2 채널을 선택할 수 있습니다.
    24. +
    25. 선택된 채널 및 포트 정보는 Sensor.ini 파일에 저장됩니다.

    4.2 설정 저장

    @@ -681,33 +987,29 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) -
    -

    본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

    5. 시험 설정 (Parameters)


    5.1 판정 기준 설정

    -

    프로그램 상단 우측의 시험 설정 버튼을 클릭하면 판정 기준을 구성하는 대화 상자가 나타납니다. 이 화면에서 제품 합불 판정에 사용되는 전압, 전류, 저항의 기준값을 입력할 수 있습니다.

    +

    메인 화면 최하단 바의 파라미터 설정 버튼을 클릭하면 기준 범위 설정 대화 상자가 나타납니다. 이 화면에서 제품 합불 판정에 사용되는 전압, 전류, 저항의 규격 임계 범위를 수동으로 변경할 수 있습니다. +Pasted image 20260728100846.png

    5.1.1 각 항목별 한계치 입력 가이드

    -
    -

    본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

    7. 자동 시험 프로세스 및 15단계 시퀀스

    @@ -850,8 +1149,6 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) -
    -

    본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

    8. 로그 및 데이터 관리

    @@ -891,8 +1188,6 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) -
    -

    본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

    9. 오류 대응 및 프로그램 종료

    @@ -968,7 +1263,5 @@ Channel=1 ; 통신 채널 번호 (1 또는 2) -
    -

    본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.

    \ No newline at end of file diff --git a/marking_gui/Manual/Pasted image 20260728095417.png b/marking_gui/Manual/Pasted image 20260728095417.png new file mode 100644 index 0000000..c458037 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728095417.png differ diff --git a/marking_gui/Manual/Pasted image 20260728095455.png b/marking_gui/Manual/Pasted image 20260728095455.png new file mode 100644 index 0000000..3cab151 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728095455.png differ diff --git a/marking_gui/Manual/Pasted image 20260728095535.png b/marking_gui/Manual/Pasted image 20260728095535.png new file mode 100644 index 0000000..faf1efb Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728095535.png differ diff --git a/marking_gui/Manual/Pasted image 20260728095555.png b/marking_gui/Manual/Pasted image 20260728095555.png new file mode 100644 index 0000000..54d90e1 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728095555.png differ diff --git a/marking_gui/Manual/Pasted image 20260728095618.png b/marking_gui/Manual/Pasted image 20260728095618.png new file mode 100644 index 0000000..9b31fce Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728095618.png differ diff --git a/marking_gui/Manual/Pasted image 20260728095624.png b/marking_gui/Manual/Pasted image 20260728095624.png new file mode 100644 index 0000000..9b31fce Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728095624.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100308.png b/marking_gui/Manual/Pasted image 20260728100308.png new file mode 100644 index 0000000..a4cb8fa Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100308.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100343.png b/marking_gui/Manual/Pasted image 20260728100343.png new file mode 100644 index 0000000..336da49 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100343.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100354.png b/marking_gui/Manual/Pasted image 20260728100354.png new file mode 100644 index 0000000..3e1562d Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100354.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100404.png b/marking_gui/Manual/Pasted image 20260728100404.png new file mode 100644 index 0000000..89c0dc4 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100404.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100413.png b/marking_gui/Manual/Pasted image 20260728100413.png new file mode 100644 index 0000000..748ae66 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100413.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100445.png b/marking_gui/Manual/Pasted image 20260728100445.png new file mode 100644 index 0000000..dd3a325 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100445.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100748.png b/marking_gui/Manual/Pasted image 20260728100748.png new file mode 100644 index 0000000..b9bab09 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100748.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100828.png b/marking_gui/Manual/Pasted image 20260728100828.png new file mode 100644 index 0000000..b9bab09 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100828.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100846.png b/marking_gui/Manual/Pasted image 20260728100846.png new file mode 100644 index 0000000..5b24d7b Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100846.png differ diff --git a/marking_gui/Manual/Pasted image 20260728100910.png b/marking_gui/Manual/Pasted image 20260728100910.png new file mode 100644 index 0000000..7845813 Binary files /dev/null and b/marking_gui/Manual/Pasted image 20260728100910.png differ diff --git a/marking_gui/Manual/build_pdf.py b/marking_gui/Manual/build_pdf.py index 401a126..c371f4f 100644 --- a/marking_gui/Manual/build_pdf.py +++ b/marking_gui/Manual/build_pdf.py @@ -24,12 +24,13 @@ def clean_markdown_content(filename, content, link_mapping): content = '\n'.join(cleaned_lines) - # 2. Obsidian 위키링크 이미지 문법 -> HTML img 태그로 치환 - content = re.sub(r'!\[\[(.*?)\]\]', r'\1', content) + # 2. Obsidian 위키링크 이미지 문법 -> HTML img 태그로 치환 (크기 제한 및 중앙 정렬) + content = re.sub(r'!\[\[(.*?)\]\]', r'\1', content) # 3. 마크다운 파일 참조 링크 -> 로컬 앵커로 치환 for md_file, anchor in link_mapping.items(): content = content.replace(f"({md_file})", f"({anchor})") + content = content.replace(f'"{md_file}"', f'"{anchor}"') # 4. 각 파일 시작 전에 페이지 나누기 추가 (표지 파일은 제외) is_cover = "사용자" in filename or "메뉴얼" in filename @@ -88,7 +89,7 @@ def main(): link_mapping = {} for f in final_file_list: if "사용자" in f or "메뉴얼" in f: - link_mapping[f] = "#performance-inspect--laser-marking-system---사용자-메뉴얼" + link_mapping[f] = "#메뉴얼-목차-table-of-contents" elif f.startswith("01"): link_mapping[f] = "#1-시스템-개요-및-요구사항" elif f.startswith("02"): diff --git a/marking_gui/Manual/pdf_style.css b/marking_gui/Manual/pdf_style.css index e909dbc..168c4dc 100644 --- a/marking_gui/Manual/pdf_style.css +++ b/marking_gui/Manual/pdf_style.css @@ -166,18 +166,21 @@ pre code { white-space: inherit; } -/* 이미지 스타일 */ -img { - max-width: 100%; - max-height: 100mm; /* A4 높이의 약 절반 이하로 제한 */ +/* 이미지 스타일 (스크린샷 크기 조절) */ +img, .img-screenshot { + max-width: 65%; + max-height: 70mm; /* A4 용지 및 화면 출력 시 적당한 크기로 한정 */ display: block; - margin: 15px auto; + margin: 16px auto; object-fit: contain; page-break-inside: avoid; - border: 1px solid #e1e4e8; - box-shadow: 0 1px 3px rgba(0,0,0,0.1); + border: 1px solid #d1d5db; + border-radius: 6px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08); } + + /* 페이지 나누기 요소 */ .page-break { page-break-before: always !important; @@ -211,3 +214,116 @@ a:hover { color: #24292e; margin-right: 4px; } + +/* ========================================== + 표지 (Cover Page) 스타일 (Minimal & Clean) + ========================================== */ +.cover-page { + text-align: center; + padding: 70mm 0 30mm 0; + page-break-after: always !important; + box-sizing: border-box; + display: flex; + flex-direction: column; + justify-content: space-between; + min-height: 220mm; +} + +.cover-header { + margin-top: 20px; +} + +.cover-title { + font-size: 28pt !important; + font-weight: 700 !important; + color: #1a1a1a !important; + margin: 0 0 16px 0 !important; + padding: 0 !important; + border: none !important; + letter-spacing: -0.5px; + line-height: 1.2; +} + +.cover-subtitle { + font-size: 16pt; + font-weight: 500; + color: #007acc; + margin: 0; + letter-spacing: 2px; + text-transform: uppercase; +} + +.cover-meta { + margin-top: 100px; + font-size: 9.5pt; + color: #666666; + letter-spacing: 0.5px; + border-top: 1px solid #eaeaea; + padding-top: 20px; + width: 60%; + margin-left: auto; + margin-right: auto; +} + + +/* ========================================== + 점선 리더 목차 (Dot Leader TOC) 스타일 + ========================================== */ +.toc-container { + padding: 10px 0; +} + +.toc-heading { + font-size: 22pt !important; + font-weight: 700 !important; + color: #111827 !important; + border-bottom: 2px solid #007acc !important; + padding-bottom: 8px !important; + margin-bottom: 28px !important; +} + +.toc-list { + display: flex; + flex-direction: column; + gap: 16px; +} + +.toc-item { + display: flex; + align-items: baseline; + font-size: 11pt; + line-height: 1.5; +} + +.toc-title { + font-weight: 600; + color: #1f2937; + white-space: nowrap; + padding-right: 6px; +} + +.toc-title a { + color: #1f2937 !important; + text-decoration: none !important; +} + +.toc-title a:hover { + color: #007acc !important; +} + +.toc-leader { + flex-grow: 1; + border-bottom: 1.5px dotted #9ca3af; + margin: 0 4px; + position: relative; + top: -4px; +} + +.toc-page { + font-weight: 700; + color: #374151; + padding-left: 6px; + white-space: nowrap; +} + + diff --git a/marking_gui/Manual/사용자_메뉴얼.md b/marking_gui/Manual/사용자_메뉴얼.md index 6d95fab..416e82a 100644 --- a/marking_gui/Manual/사용자_메뉴얼.md +++ b/marking_gui/Manual/사용자_메뉴얼.md @@ -1,26 +1,60 @@ -# Performance Inspect & Laser Marking System - 사용자 메뉴얼 +
    +

    목차

    +
    + + + + + + + + + + +
    +
    -> **버전**: 1.0.0 | **최종 수정**: 2026-07-14 - ---- - -## 메뉴얼 목차 - -본 메뉴얼은 각 주제별로 별도 문서로 구성되어 있습니다. 아래 링크를 클릭하여 해당 문서로 이동하세요. - -| 번호 | 문서 | 설명 | -|------|------|------| -| 1 | [시스템 개요 및 요구사항](01_시스템_개요.md) | 프로그램 소개, 주요 기능, 하드웨어/소프트웨어 요구사항, 장비 구성 | -| 2 | [초기 설정 가이드](02_초기_설정.md) | 설정 파일의 구성 요소 안내 및 최초 장비 가동 시 점검 순서 | -| 3 | [메인 화면 (Home View)](03_메인_화면.md) | 상단 정보 표시, 제품 정보 카드, 검사 결과 화면, 진행 상황 확인 및 버튼 제어 가이드 | -| 4 | [통신 설정 (Comm. Settings)](04_통신_설정.md) | 4251 센서 통신 채널 설정 및 PC 통신 포트 연동 방법 | -| 5 | [시험 설정 (Parameters)](05_시험_설정.md) | 제품 규격치(전압, 전류, 저항 범위) 및 레이저 마킹 도면 파일 연동 | -| 6 | [측정 데이터 조회 (Data View)](06_데이터_조회.md) | 생산 데이터베이스를 통한 이전 공정 이력 자동 조회 및 최종 결과 저장 원리 | -| 7 | [자동 시험 프로세스](07_시험_프로세스.md) | 자동 계측 시퀀스 기동, 마킹 수행 및 최종 합격 판정 흐름 | -| 8 | [로그 및 데이터 관리](08_로그_관리.md) | 시스템 로그 파일 확인 방법 및 장비 설정 파일 백업 방법 | -| 9 | [오류 대응 및 프로그램 종료](09_오류_대응.md) | 센서 통신 오류, DB 조회 에러, 마킹 불량 등 현장 장애 대응 및 안전한 프로그램 종료 방법 | - ---- +
    ## 빠른 시작 가이드 (Quick Start) @@ -32,13 +66,9 @@ - 계측 장비들과 제어용 PC 간의 네트워크(LAN)선 및 센서 리더용 시리얼 포트 케이블 연결을 확인합니다. 3. **프로그램 실행 및 로그인** - 바탕화면의 `Marking System` (`marking_gui`) 프로그램을 실행한 뒤, 작업자 계정 정보를 입력하여 로그인합니다. (데이터베이스 점검 중인 경우 설정 파일을 통해 오프라인 모드로의 진입이 가능합니다.) -3. **통신 상태 확인 및 채널 설정** +4. **통신 상태 확인 및 채널 설정** - 우측 상단의 `통신 설정` 메뉴에서 센서가 올바른 포트와 채널에 연결되었는지 확인합니다. -4. **검사 규격값 검증** +5. **검사 규격값 검증** - 우측 상단의 `시험 설정` 메뉴를 열고, 전압/전류/저항 검사 기준치와 각인 템플릿 도면 파일의 경로가 올바른지 점검합니다. -5. **성능 검사 및 마킹 시작** +6. **성능 검사 및 마킹 시작** - 안착 지그에 제품을 바르게 장착한 뒤 메인 화면 하단의 `검사 시작 (START)` 버튼을 눌러 계측 및 마킹을 수행합니다. - ---- - -*본 문서는 Performance Inspect & Laser Marking System v1.0.0 기준으로 작성되었습니다.* diff --git a/marking_gui/Services/DatabaseService.cs b/marking_gui/Services/DatabaseService.cs index a1e329a..fdc147e 100644 --- a/marking_gui/Services/DatabaseService.cs +++ b/marking_gui/Services/DatabaseService.cs @@ -8,6 +8,7 @@ namespace marking_gui.Services { private readonly string _connectionString; private readonly bool _offlineMode = false; + private readonly System.Collections.Concurrent.ConcurrentDictionary _offlineLotSequences = new System.Collections.Concurrent.ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); public bool OfflineMode => _offlineMode; @@ -289,6 +290,15 @@ namespace marking_gui.Services // 오프라인 모드인 경우 실제 DB 저장을 생략하고 정상 통과 처리 if (_offlineMode) { + if (!string.IsNullOrWhiteSpace(safeLotNo) && !string.IsNullOrWhiteSpace(markedSerial) && markedSerial.Length >= 4) + { + string seqStr = markedSerial.Substring(markedSerial.Length - 4); + if (int.TryParse(seqStr, out int seqNum)) + { + _offlineLotSequences.AddOrUpdate(safeLotNo, seqNum, (key, oldVal) => Math.Max(oldVal, seqNum)); + } + } + System.Diagnostics.Debug.WriteLine(string.Format( "[OfflineMode] DB 저장 생략 (오프라인 모드 활성화) S/N: {0} | 각인번호: {1} | QR: {2} | Maker: {3} | Model: {4} | Line: {5} | LotNo: {6} | Vol_1: {7:F2}V | Cur_1: {8:F2}mA | Res_1: {9:F3}kΩ | 결과: {10} | 시작:{11} | 종료:{12}", serial, markedSerial, markingQr, safeMaker, safeModel, safeLine, safeLotNo, roundedVoltage, roundedCurrent, roundedResistance, result, @@ -371,28 +381,40 @@ namespace marking_gui.Services } } /// - /// 지정한 LotNo로 기존에 저장 완료(PASS)된 제품들의 개수를 카운트하여 다음 각인 일련번호를 구합니다. + /// 지정한 LotNo로 기존에 저장된 제품들의 각인 순번 중 최대값을 구하여 다음 각인 일련번호(MAX + 1)를 구합니다. + /// 동일 시료 재검사 시 DB 행이 MERGE UPDATE 되어 레코드 수(COUNT)가 증가하지 않더라도 순번은 지속 증가합니다. /// public int GetNextMarkingSequence(string lotNo) { + if (string.IsNullOrWhiteSpace(lotNo)) return 1; + if (_offlineMode) { - return 1; + _offlineLotSequences.TryGetValue(lotNo.Trim(), out int maxSeq); + return maxSeq + 1; } try { - string query = "SELECT COUNT(*) FROM [dbo].[Marking] WHERE [Lot_No] = @LotNo AND ([Result] = 'PASS' OR [Result] = 'OK')"; + // Marking_QR (형식: [IC_SN];[도면품번];[HKMC품번];[markedSerial];)에서 맨 뒤 세미콜론 직전의 markedSerial 마지막 4자리를 정수로 추출하여 MAX 산출 + string query = @" + SELECT ISNULL(MAX(CAST(RIGHT(RTRIM(SUBSTRING([Marking_QR], 1, LEN([Marking_QR]) - 1)), 4) AS INT)), 0) + FROM [dbo].[Marking] + WHERE [Lot_No] = @LotNo + AND [Marking_QR] LIKE '%;%' + AND LEN([Marking_QR]) >= 5 + AND ISNUMERIC(RIGHT(RTRIM(SUBSTRING([Marking_QR], 1, LEN([Marking_QR]) - 1)), 4)) = 1"; using (var conn = new System.Data.SqlClient.SqlConnection(_connectionString)) { using (var cmd = new System.Data.SqlClient.SqlCommand(query, conn)) { cmd.CommandTimeout = 5; // DB 응답 대기 최대 5초 - cmd.Parameters.AddWithValue("@LotNo", lotNo); + cmd.Parameters.AddWithValue("@LotNo", lotNo.Trim()); conn.Open(); - int count = (int)cmd.ExecuteScalar(); - return count + 1; + object resultObj = cmd.ExecuteScalar(); + int maxSeq = (resultObj != null && resultObj != DBNull.Value) ? Convert.ToInt32(resultObj) : 0; + return maxSeq + 1; } } } diff --git a/marking_gui/Services/EzdMarkingService.cs b/marking_gui/Services/EzdMarkingService.cs index 09fa50f..ed0e59e 100644 --- a/marking_gui/Services/EzdMarkingService.cs +++ b/marking_gui/Services/EzdMarkingService.cs @@ -52,28 +52,55 @@ namespace marking_gui.Services [DllImport("MarkEzdWrapper.dll", EntryPoint = "Close", CallingConvention = CallingConvention.Cdecl)] private static extern int Close(IntPtr hHandle); + private IntPtr _lastWindowHandle = IntPtr.Zero; + private string _lastConfigPath = string.Empty; + public bool Initialize(string configPath, IntPtr windowHandle) { try { + _lastConfigPath = configPath; + if (windowHandle != IntPtr.Zero) _lastWindowHandle = windowHandle; + _lastInitErrorMessage = string.Empty; _config = new MarkingConfigService(); _ezdFolderPath = _config.EzdFolderPath; if (string.IsNullOrEmpty(_ezdFolderPath)) { - _lastInitErrorMessage = "Marking.ini 내 EzdFolderPath 경로가 비어 있습니다."; + _lastInitErrorMessage = "Setting.ini 내 EzdFolderPath 경로가 비어 있습니다."; _isInitialized = false; return false; } + // EZCAD.CFG 파일 유무 검증 및 상위/하위 경로 자동 탐색 + string cfgFile = Path.Combine(_ezdFolderPath, "EZCAD.CFG"); + if (!File.Exists(cfgFile)) + { + if (File.Exists(@"c:\EzCad\EZCAD.CFG")) + { + _ezdFolderPath = @"c:\EzCad"; + } + else if (File.Exists(@"c:\EzCad\EasyCfg\EZCAD.CFG")) + { + _ezdFolderPath = @"c:\EzCad\EasyCfg"; + } + } + if (!Directory.Exists(_ezdFolderPath)) { - _lastInitErrorMessage = string.Format("EzCad 폴더가 존재하지 않습니다: {0} (Marking.ini 설정 확인 필요)", _ezdFolderPath); + _lastInitErrorMessage = string.Format("EzCad 폴더가 존재하지 않습니다: {0} (Setting.ini 설정 확인 필요)", _ezdFolderPath); _isInitialized = false; return false; } + // 기존 핸들이 열려 있다면 정리 + if (_markingHandle != IntPtr.Zero) + { + try { Close(_markingHandle); } catch { } + _markingHandle = IntPtr.Zero; + } + System.Diagnostics.Debug.WriteLine("[EzdMarking] 마킹 기계 LMC 초기화 시도. EzCadPath: " + _ezdFolderPath + ", WindowHandle: " + windowHandle); // 1. InitMarkEzd() 호출로 디바이스 전역 제어 핸들 획득 @@ -126,6 +153,13 @@ namespace marking_gui.Services [System.Security.SecurityCritical] public MarkingResult RequestMarking(MarkingRequest request) { + if (!_isInitialized || _markingHandle == IntPtr.Zero) + { + // 각인 요청 시 미초기화 상태이면 1회 자동 재시도(Retry) 수행 + System.Diagnostics.Debug.WriteLine("[EzdMarking] 디바이스 미초기화 상태 감지. 재연결 시도..."); + Initialize(_lastConfigPath, _lastWindowHandle); + } + if (!_isInitialized || _markingHandle == IntPtr.Zero) { return new MarkingResult diff --git a/marking_gui/Services/MarkingConfigService.cs b/marking_gui/Services/MarkingConfigService.cs index 2be1161..e2214d3 100644 --- a/marking_gui/Services/MarkingConfigService.cs +++ b/marking_gui/Services/MarkingConfigService.cs @@ -13,24 +13,40 @@ namespace marking_gui.Services { get { - string path = GetSetting("EzdFolderPath", @"c:\EzCad\EasyCfg"); + string path = GetSetting("EzdFolderPath", @"c:\EzCad"); - // 1. C:\EzCad\EasyCfg 및 설정 경로 체크, 없으면 실행 파일 기준 폴더 사용 - string defaultFallback = Directory.Exists(@"c:\EzCad\EasyCfg") ? @"c:\EzCad\EasyCfg" : AppDomain.CurrentDomain.BaseDirectory; + // 1. 설정된 경로에 EZCAD.CFG가 존재하는지 체크 + if (!string.IsNullOrWhiteSpace(path) && Directory.Exists(path) && File.Exists(Path.Combine(path, "EZCAD.CFG"))) + { + return path; + } + + // 2. C:\EzCad 경로에 EZCAD.CFG가 존재하는지 자동 Fallback 탐색 + if (Directory.Exists(@"c:\EzCad") && File.Exists(@"c:\EzCad\EZCAD.CFG")) + { + return @"c:\EzCad"; + } + + // 3. C:\EzCad\EasyCfg 경로 탐색 + if (Directory.Exists(@"c:\EzCad\EasyCfg") && File.Exists(@"c:\EzCad\EasyCfg\EZCAD.CFG")) + { + return @"c:\EzCad\EasyCfg"; + } + + // 4. 기존 경로 기본 Fallback + string defaultFallback = Directory.Exists(@"c:\EzCad") ? @"c:\EzCad" : AppDomain.CurrentDomain.BaseDirectory; - // 1. 설정값이 비어있을 시 실행 파일 기준 폴더 사용 if (string.IsNullOrWhiteSpace(path)) { return defaultFallback; } - // 2. 상대 경로일 시 실행 파일 디렉토리 기준으로 절대 경로 병합 if (!Path.IsPathRooted(path)) { - return Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path)); + string fullPath = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path)); + if (Directory.Exists(fullPath)) return fullPath; } - // 3. 절대 경로이지만 타깃 경로가 실재하지 않는 경우 실행 파일 폴더로 Fallback if (!Directory.Exists(path)) { return defaultFallback; diff --git a/marking_gui/Setting.ini b/marking_gui/Setting.ini index 50632e5..09e79f1 100644 --- a/marking_gui/Setting.ini +++ b/marking_gui/Setting.ini @@ -4,16 +4,16 @@ [Settings] ; 마킹 제어 라이브러리 및 드라이버(EzCad) 폴더 경로 -EzdFolderPath=c:\EzCad\EasyCfg +EzdFolderPath=c:\EzCad ; 테스트 모드 여부 (true 시 하단 테스트 마킹, 강제 검사 버튼 노출) test=false ; 도면품번 (EZD 도안의 도면품번 태그에 채워질 값 — DrawingNoTag에 매핑) -DrawingNo= +DrawingNo=APTSL04A ; HKMC 품번 (EZD 도안의 HKMC 품번 태그에 채워질 값 — HkmcNoTag에 매핑) -HkmcNo= +HkmcNo=254H1-QI080 [Tags] @@ -30,13 +30,13 @@ LotNoTag=YYMMDD ProductTag=PRODUCT ; DMC 치환 태그 -QrCodeTag=QRCODETAG +QrCodeTag=DATAMATRIX ; 도면품번 치환 태그 (EZD 도안 내 도면품번 오브젝트명) -DrawingNoTag=DRAWING_NO +DrawingNoTag=PARTNO ; HKMC 품번 치환 태그 (EZD 도안 내 HKMC 품번 오브젝트명) -HkmcNoTag=HKMC_NO +HkmcNoTag=HKMCPO ; ================================================================= diff --git a/사용자 메뉴얼.pdf b/사용자 메뉴얼.pdf new file mode 100644 index 0000000..87b4199 Binary files /dev/null and b/사용자 메뉴얼.pdf differ