## 신규 기능 - ACS(중앙제어시스템) 시뮬레이터 프로젝트 생성 - 8가지 AGV 제어 명령어 지원: * SetCurrent: 현재 위치 설정 * Goto: RFID 이동 * GotoAlias: 별칭 이동 (v1.1.0) * Stop: 정지 * Reset: 에러 리셋 * Manual: 수동 제어 * MarkStop: 마크센서 정지 * LiftControl: 리프트 제어 ## AGV 상태 실시간 표시 (v1.3.0) - AGV 상태 그룹박스 추가 (8가지 상태 정보) - Status 메시지(cmd=3) 자동 수신 및 UI 업데이트 - 상태별 색상 표시로 직관적 모니터링 ## 설정 관리 - 실행 폴더에 JSON 형식 설정 파일 저장 (v1.4.0) - COM 포트, 보레이트, RFID, 별칭, AGV 선택 자동 저장 - 설정 파일 직접 편집 가능 ## 기술 스택 - .NET Framework 4.8 - ENIGProtocol 프로젝트 참조 - RS232/Xbee 통신 - Newtonsoft.Json 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
243 lines
8.1 KiB
Markdown
243 lines
8.1 KiB
Markdown
# Test_ACS - ACS 시뮬레이터
|
|
|
|
ENIG AGV 프로젝트를 위한 ACS(중앙제어시스템) 시뮬레이터입니다.
|
|
|
|
## 프로젝트 개요
|
|
|
|
ACS는 AGV에게 명령을 내리는 중앙 제어 시스템입니다. 이 프로그램은 실제 ACS 대신 테스트 목적으로 AGV에 명령을 보낼 수 있는 시뮬레이터입니다.
|
|
|
|
### 통신 방식
|
|
- **프로토콜**: ENIG Protocol (ENIGProtocol 프로젝트 사용)
|
|
- **통신**: RS232 (Xbee 모듈)
|
|
- **ACS Xbee ID**: 0
|
|
- **AGV Xbee ID**:
|
|
- AGV1: 11
|
|
- AGV2: 12
|
|
|
|
## 프로젝트 구조
|
|
|
|
```
|
|
Test_ACS/
|
|
├── Test_ACS.csproj # 프로젝트 파일
|
|
├── Program.cs # 진입점
|
|
├── MainForm.cs # 메인 폼 로직
|
|
├── MainForm.Designer.cs # 메인 폼 디자이너
|
|
├── MainForm.resx # 메인 폼 리소스
|
|
├── Properties/ # 프로젝트 속성
|
|
│ ├── AssemblyInfo.cs
|
|
│ ├── Resources.Designer.cs
|
|
│ ├── Resources.resx
|
|
│ ├── Settings.Designer.cs
|
|
│ └── Settings.settings
|
|
└── app.config # 애플리케이션 설정
|
|
```
|
|
|
|
## 빌드 방법
|
|
|
|
1. Visual Studio 2022 또는 MSBuild 사용
|
|
2. .NET Framework 4.8 필요
|
|
3. ENIGProtocol 프로젝트 참조 필요
|
|
|
|
```bash
|
|
# Visual Studio에서 빌드
|
|
- 솔루션 탐색기에서 Test_ACS 프로젝트 선택
|
|
- 빌드 > 솔루션 빌드
|
|
|
|
# 또는 MSBuild 사용
|
|
msbuild Test_ACS.csproj /p:Configuration=Debug
|
|
```
|
|
|
|
## 사용 방법
|
|
|
|
### 1. 연결 설정
|
|
|
|
1. **COM 포트 선택**: Xbee 모듈이 연결된 COM 포트 선택
|
|
2. **보레이트 입력**: 기본값 9600 (Xbee 설정에 맞춰 조정)
|
|
3. **연결 버튼 클릭**: 포트 연결
|
|
|
|
**자동 저장**: 포트와 보레이트는 변경 시 자동으로 저장되며, 다음 실행 시 자동으로 불러옵니다.
|
|
|
|
### 2. AGV 선택
|
|
|
|
- **AGV1 (ID:11)**: 첫 번째 AGV 선택
|
|
- **AGV2 (ID:12)**: 두 번째 AGV 선택
|
|
|
|
**자동 저장**: 선택한 AGV는 자동으로 저장되며, 다음 실행 시 자동으로 선택됩니다.
|
|
|
|
### 3. 명령 전송
|
|
|
|
#### SetCurrent (현재 위치 설정)
|
|
- **RFID 번호 입력**: 예) 0001
|
|
- **SetCurrent 버튼 클릭**: AGV의 현재 위치를 지정한 RFID로 설정
|
|
- **자동 저장**: 입력한 RFID 번호는 자동으로 저장됩니다.
|
|
|
|
#### Goto (RFID 이동 명령)
|
|
- **RFID 번호 입력**: 목표 위치 RFID (예: 0001)
|
|
- **Goto 버튼 클릭**: AGV를 지정한 RFID 위치로 이동
|
|
- **자동 저장**: 입력한 RFID 번호는 자동으로 저장됩니다.
|
|
|
|
#### GotoAlias (별칭 이동 명령)
|
|
- **별칭(Alias) 입력**: 목표 위치 별칭 (예: CHARGER1, BUFFER2, STATION_A)
|
|
- **GotoAlias 버튼 클릭**: AGV를 지정한 별칭 위치로 이동
|
|
- **참고**: 별칭은 AGV에 미리 등록된 이름으로, RFID 대신 의미 있는 이름 사용
|
|
- **자동 저장**: 입력한 별칭은 자동으로 저장됩니다.
|
|
|
|
#### Stop (정지)
|
|
- **Stop 버튼 클릭**: AGV 즉시 정지
|
|
|
|
#### Reset (에러 리셋)
|
|
- **Reset 버튼 클릭**: AGV 에러 상태 초기화
|
|
|
|
#### Manual (수동 제어)
|
|
- **방향 선택**: 후진, 전진, 좌회전, 우회전
|
|
- **속도 선택**: 느림, 보통, 빠름
|
|
- **시간(초) 입력**: 이동 시간
|
|
- **수동 이동 실행 버튼 클릭**
|
|
|
|
#### MarkStop (마크센서 정지)
|
|
- **정지 설정 체크**: 마크센서 정지 활성화/비활성화
|
|
- **마크센서 정지 버튼 클릭**
|
|
|
|
#### LiftControl (리프트 제어)
|
|
- **리프트 상승**: 리프트 올리기
|
|
- **리프트 하강**: 리프트 내리기
|
|
- **리프트 정지**: 리프트 동작 중지
|
|
|
|
## AGV 상태 확인
|
|
|
|
프로그램 하단의 "AGV 상태" 그룹박스에서 실시간 AGV 상태를 확인할 수 있습니다:
|
|
|
|
- **모드**: 수동/자동
|
|
- **실행상태**: 정지/실행/에러
|
|
- **방향**: 직진/좌회전/우회전/마크정지
|
|
- **도달완료**: 목적지 도달 여부 (OFF/ON)
|
|
- **충전**: 충전 상태 (OFF/ON)
|
|
- **카트**: 카트 감지 상태 (없음/있음/알 수 없음)
|
|
- **리프트**: 리프트 위치 (하강/상승/알 수 없음)
|
|
- **현재태그**: 마지막으로 인식한 RFID 태그 번호
|
|
|
|
상태는 AGV가 주기적으로 전송하는 Status 메시지(cmd=3)를 수신하여 자동으로 업데이트됩니다.
|
|
|
|
## 로그 확인
|
|
|
|
프로그램 우측에 3개의 탭으로 로그를 확인할 수 있습니다:
|
|
|
|
- **송신 (TX)**: ACS에서 AGV로 보낸 명령
|
|
- **수신 (RX)**: AGV에서 ACS로 받은 응답
|
|
- **정보**: 연결 상태, 설정 저장/불러오기, 에러 메시지
|
|
|
|
## 설정 저장 위치
|
|
|
|
모든 설정은 실행 파일과 같은 폴더에 저장됩니다:
|
|
- **위치**: `Test_ACS.exe`와 같은 폴더의 `Test_ACS.config` 파일
|
|
- **형식**: JSON 형식으로 저장
|
|
- **저장 항목**:
|
|
- 마지막 사용 COM 포트
|
|
- 마지막 사용 보레이트
|
|
- 마지막 입력 RFID 번호
|
|
- 마지막 입력 별칭
|
|
- 마지막 선택 AGV (11 또는 12)
|
|
- **자동 저장**: 설정 변경 시 자동 저장
|
|
- **자동 불러오기**: 프로그램 시작 시 자동 불러오기
|
|
|
|
예시 설정 파일 (`Test_ACS.config`):
|
|
```json
|
|
{
|
|
"LastPort": "COM3",
|
|
"LastBaudRate": "9600",
|
|
"LastRFID": "0001",
|
|
"LastAlias": "CHARGER1",
|
|
"LastAGV": 11
|
|
}
|
|
```
|
|
|
|
## 프로토콜 상세
|
|
|
|
### 패킷 구조
|
|
```
|
|
STX (0x02) + Length + ID + Command + Data + CRC16 (2 bytes) + ETX (0x03)
|
|
```
|
|
|
|
### ACS 명령어 (AGVCommandHE)
|
|
|
|
| 명령 | 코드 | 데이터 형식 | 설명 |
|
|
|------|------|-------------|------|
|
|
| Goto | 100 | TargetID(2) + RFID(4) | RFID로 목표 위치로 이동 |
|
|
| Stop | 101 | TargetID(2) | 정지 |
|
|
| Reset | 102 | TargetID(2) | 에러 리셋 |
|
|
| SetCurrent | 103 | TargetID(2) + RFID(4) | 현재 위치 설정 |
|
|
| Manual | 104 | TargetID(2) + Direction(1) + Speed(1) + Runtime(1) | 수동 이동 |
|
|
| MarkStop | 105 | TargetID(2) + MarkStop(1) | 마크센서 정지 |
|
|
| LiftControl | 106 | TargetID(2) + LiftCommand(1) | 리프트 제어 |
|
|
| **GotoAlias** | **107** | **TargetID(2) + Alias(ASCII)** | **별칭으로 목표 위치로 이동** |
|
|
|
|
### 데이터 상세
|
|
|
|
#### Direction (Manual 명령)
|
|
- 0: 후진 (Back)
|
|
- 1: 전진 (Forward)
|
|
- 2: 좌회전 (Left)
|
|
- 3: 우회전 (Right)
|
|
|
|
#### Speed (Manual 명령)
|
|
- 0: 느림 (Slow)
|
|
- 1: 보통 (Normal)
|
|
- 2: 빠름 (Fast)
|
|
|
|
#### LiftCommand (LiftControl 명령)
|
|
- 0: 정지 (Stop)
|
|
- 1: 상승 (Up)
|
|
- 2: 하강 (Down)
|
|
|
|
## 참고 파일
|
|
|
|
- **프로토콜 정의**: `SubProject\EnigProtocol\enigprotocol\Commands.cs`
|
|
- **프로토콜 구현**: `SubProject\EnigProtocol\enigprotocol\EEProtocol.cs`
|
|
- **AGV 수신 처리**: `Project\StateMachine\_Xbee.cs`
|
|
|
|
## 개발자 노트
|
|
|
|
### 프로젝트 참조
|
|
- ENIGProtocol 프로젝트를 참조하여 프로토콜 기능 사용
|
|
- ProjectReference GUID: {499d8912-4b96-41e5-a70d-cfe797883d65}
|
|
|
|
### 주요 클래스
|
|
- `EEProtocol`: 패킷 생성 및 파싱
|
|
- `SerialPort`: RS232 통신 관리
|
|
- `MainForm`: UI 및 명령 전송 로직
|
|
|
|
### 디버깅 팁
|
|
1. 로그 탭에서 송수신 패킷의 HEX 값 확인
|
|
2. CRC 에러 발생 시 프로토콜 버전 확인
|
|
3. 응답이 없을 경우 Xbee 모듈 설정 확인 (PAN ID: 46A5, Channel: 17)
|
|
|
|
## 라이센스
|
|
|
|
ENIG AGV 프로젝트의 일부로, 내부 테스트 용도로 사용됩니다.
|
|
|
|
## 버전 이력
|
|
|
|
- v1.4.0 (2025-01-12): 설정 파일 저장 방식 변경
|
|
- 실행 폴더에 JSON 형식으로 설정 저장 (Test_ACS.config)
|
|
- 설정 파일 직접 편집 가능
|
|
- 프로그램 이동 시 설정 파일도 함께 이동
|
|
|
|
- v1.3.0 (2025-01-12): AGV 상태 실시간 표시 기능 추가
|
|
- AGV 상태 그룹박스 추가 (모드, 실행상태, 방향, 도달완료, 충전, 카트, 리프트, 현재태그)
|
|
- Status 메시지(cmd=3) 자동 수신 및 UI 업데이트
|
|
- 상태별 색상 표시로 직관적 모니터링
|
|
- 프로토콜 문서 업데이트 (LastTag 6바이트, CurrentPath 제거)
|
|
|
|
- v1.2.0 (2025-01-12): 설정 자동 저장/불러오기
|
|
- COM 포트, 보레이트, RFID, 별칭, AGV 선택 자동 저장
|
|
- 프로그램 시작 시 마지막 설정 자동 복원
|
|
|
|
- v1.1.0 (2025-01-12): GotoAlias 명령어 추가
|
|
- 별칭(Alias) 기반 이동 명령 지원
|
|
- UI 레이아웃 최적화
|
|
|
|
- v1.0.0 (2025-01-11): 초기 버전 생성
|
|
- ACS 시뮬레이터 기본 기능
|
|
- ENIGProtocol 연동
|
|
- 7가지 ACS 명령어 지원 (Goto, Stop, Reset, SetCurrent, Manual, MarkStop, LiftControl)
|