Files
ENIG/Cs_HMI/TestProject/Test_ACS

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 프로젝트 참조 필요
# 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):

{
  "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)