Files
ENIG/Document/AGV_Charging_Sequence.md
2026-02-09 13:21:42 +09:00

2.1 KiB

AGV Charging Sequence Diagram

이 문서는 _SM_RUN_CHARGE_ON, _SM_RUN_CHARGE_OFF, _SM_RUN_CHARGE_CHECK 소스 코드 분석을 바탕으로 작성되었습니다.

1. 충전 시작 시퀀스 (Charge ON)

AGV가 충전기 위치(RFID)에 정지해 있고, 정밀 정차용 마크 센서가 감지된 상태에서 수행됩니다.

sequenceDiagram
    participant AGV
    participant Charger as Battery Charger
    participant Sensors
    participant ACS as ACS/Server

    Note over AGV: [조건 확인] 현재 위치 == 충전기 RFID & Mark Sensor ON
    
    AGV->>ACS: 충전 시작 명령 전송 (AGVCharge ON)
    ACS->>Charger: 충전 활성화
    Charger-->>AGV: ACK (응답: "CBT")
    
    loop 충전 상태 확인
        AGV->>Sensors: Battery_charging 상태 체크
        Sensors-->>AGV: charging = true
    end
    
    Note over AGV: 충전 수행 중

2. 충전 해제 시퀀스 (Charge OFF)

충전 작업을 종료하고 다음 작업으로 복귀하기 위해 수행됩니다. 급격한 상태 변화를 방지하기 위해 쿨다운 시간이 포함되어 있습니다.

sequenceDiagram
    participant AGV
    participant Charger as Battery Charger
    participant Sensors
    participant ACS as ACS/Server

    AGV->>ACS: 충전 해제 전송 (AGVCharge OFF)
    ACS->>Charger: 충전 비활성화
    
    loop 해제 확인
        AGV->>Sensors: Battery_charging 상태 체크
        Sensors-->>AGV: charging = false
    end
    
    Note over AGV: 5초 Cooldown 대기 (상태 안정화)
    
    AGV->>AGV: FLAG_CHARGEONA = false (최종 해제)
    Note over AGV: 충전 해제 완료

3. 관련 체크 로직 (Charge Check)

  • 자동 해제: 모든 작업(_SM_RUN_BUFFER_IN, _SM_RUN_ENTER, _SM_RUN_EXIT 등) 시작 시 가장 먼저 _SM_RUN_CHARGE_OFF를 호출하여 충전이 해제된 상태인지 보장합니다.
  • 예외 처리: 충전 명령 후 3초 이내에 응답(ACK)이 없으면 최대 5회까지 재전송을 시도합니다. 1분 이상 해제되지 않을 경우 IDLE 상태로 강제 전환됩니다.