# ATV Reel Label Attach, Modify & Transfer System

Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True
Data Source=V1SPCSQL,51122;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password="2!x2$yY8R;}$";Encrypt=False;TrustServerCertificate=True

## 개요

ATV(Automatic Test Vehicle) 릴 라벨 부착, 수정 및 전송을 위한 산업 자동화 시스템입니다. 이 시스템은 Windows Forms를 사용하여 C# (.NET Framework 4.8)로 구축되었으며, 모션 컨트롤러, 바코드 리더, 프린터, PLC 등 다양한 하드웨어 구성 요소와 통합됩니다.

## 주요 기능

- **자동 라벨 부착**: 모션 컨트롤러를 통한 정밀한 라벨 부착
- **바코드 인식**: Keyence 바코드 리더를 통한 QR/바코드 스캔
- **라벨 인쇄**: SATO 프린터를 통한 고품질 라벨 인쇄
- **PLC 제어**: 산업용 PLC와의 통신을 통한 장비 제어
- **데이터 관리**: SQL Server 기반 데이터베이스 관리
- **상태 모니터링**: 실시간 장비 상태 및 작업 진행 상황 모니터링

## 시스템 요구사항

- **OS**: Windows 10/11 (x64)
- **Framework**: .NET Framework 4.8
- **Visual Studio**: 2017 이상
- **Database**: SQL Server

### 하드웨어 요구사항

- AzinAxt 모션 컨트롤러 및 드라이버
- Keyence 바코드 리더 SDK
- SATO 프린터 드라이버
- 산업용 PLC (Crevis)

## 빌드 및 실행

### 빌드 명령어

```bash
# Debug 빌드
msbuild "STDLabelAttach(ATV).sln" /p:Configuration=Debug /p:Platform=x86

# Release 빌드
msbuild "STDLabelAttach(ATV).sln" /p:Configuration=Release /p:Platform=x86

# 특정 프로젝트 빌드
msbuild "Project\STDLabelAttach(ATV).csproj" /p:Configuration=Debug
```

### 설정

1. `app.config`에서 데이터베이스 연결 문자열 구성
2. `MotParam/` 폴더의 모션 매개변수 파일 확인
3. 하드웨어 드라이버 설치 및 구성

## 프로젝트 구조

### 주요 프로젝트

- **Project/**: 메인 애플리케이션 (STDLabelAttach(ATV))
  - Windows Forms 기반 사용자 인터페이스
  - 상태 머신 기반 제어 로직
  - 하드웨어 디바이스 인터페이스

- **Project_form2/**: 데이터 처리 수신기 애플리케이션
  - SID(Serial ID) 변환 및 처리
  - 고객 정보 관리
  - 데이터 가져오기/내보내기

- **ResultView/**: 결과 조회 애플리케이션
  - 작업 결과 및 히스토리 조회

### 공유 라이브러리 (Sub/)

- **arAzinAxt/**: 모션 컨트롤러 인터페이스
- **arImageViewer_Emgu/**: 이미지 처리 (EmguCV)
- **CommSM/**: 상태 머신 통신
- **StdLabelPrint/**: 표준 라벨 인쇄

## 아키텍처

### 상태 머신 패턴

시스템은 포괄적인 상태 머신 패턴을 사용합니다:

- **Step/**: 주요 작업 단계 (INIT, IDLE, RUN, HOME, FINISH)
- **StateMachine/**: 핵심 상태 머신 로직 및 이벤트 처리
- **RunSequence/**: 특정 작업 시퀀스 실행

### 디바이스 관리

- **모션 제어**: AzinAxt 라이브러리를 통한 정밀한 위치 제어
- **바코드 읽기**: Keyence 스캐너 통합
- **라벨 인쇄**: SATO 프린터 API 연동
- **PLC 통신**: 안전 및 I/O 제어

### 데이터베이스

- **ORM**: Entity Framework 6.2.0
- **모델**: Model1.edmx
- **매니저**: 다양한 데이터 유형별 데이터베이스 매니저

## 개발 가이드

### 주요 파일

- **fMain.cs**: 메인 폼 및 UI 로직
- **Pub.cs**: 전역 변수 및 공통 함수
- **System_Setting.cs**: 시스템 설정 관리
- **StateMachine.cs**: 상태 머신 핵심 로직

### 설정 관리

- **시스템 설정**: `Setting/` 클래스
- **사용자 설정**: `UserSetting.cs`
- **모션 매개변수**: `MotParam/` 폴더

### UI 컨트롤

- **사용자 정의 컨트롤**: `UIControl/` 폴더
- **다이얼로그**: `Dialog/` 폴더
- **리소스**: 이미지 및 아이콘

## 테스트

- 메인 애플리케이션을 통한 수동 테스트
- 실제 하드웨어를 사용한 통합 테스트
- 디버그 다이얼로그를 통한 실시간 모니터링

## 주요 종속성

- Entity Framework 6.2.0
- Newtonsoft.Json 13.0.3
- EmguCV 4.5.1
- Microsoft OWIN 스택
- Keyence AutoID SDK
- SATO Printer API

## 라이선스

내부 사용 전용 - 상업적 재배포 금지

## 연락처

프로젝트 관련 문의사항이 있으시면 시스템 관리자에게 연락해 주세요.

---

*이 문서는 ATV Reel Label Attach, Modify & Transfer System v1.0을 기준으로 작성되었습니다.*