4.5 KiB
4.5 KiB
충전 시퀀스 분석 (Charging Sequence Analysis)
1. 개요 (Overview)
이 문서는 AGV의 자동 및 수동 충전 프로세스에 대한 분석 결과를 기술합니다. UI 트리거부터 이동, 도킹, 충전 명령 전송 및 확인까지의 전체 흐름을 포함합니다.
2. UI 트리거 (UI Trigger)
- 관련 컨트롤:
btCharge(자동충전/해제),btChargeM(수동충전 모드 토글) - 이벤트 핸들러:
btCharge_Click,btChargeM_Click(infMain.cs) - 동작 로직:
- 자동 충전 (
btCharge):- 이미 충전 관련 상태(
GOCHARGE,CHARGECHECK)이거나 충전 중(FLAG_CHARGEONA)인 경우: → 충전 중지 여부 확인 후GOTO(이동) 상태로 전환하여 충전 해제. - 대기 상태인 경우: → 충전 시작 여부 확인 후
GOCHARGERunStep 설정 및RUN상태 시작.
- 이미 충전 관련 상태(
- 수동 충전 (
btChargeM):FLAG_CHARGEONM플래그를 토글합니다. 자동 충전 중일 때는 진입 불가.
- 자동 충전 (
3. 상태 머신 로직 (State Machine Logic)
3.1 충전 이동 (_SM_RUN_GOCHARGE.cs)
충전기를 찾아 이동하고 도킹하는 핵심 시퀀스입니다.
사전 검사 (Prerequisites)
- 초기화:
PUB.Result.CurrentPos초기화. - 하드웨어 체크: AGV 연결 상태 확인.
- 충전 상태 확인 (최적화): 이미 충전 중(
FLAG_CHARGEONAorBattery_charging)인 경우, 충전 시퀀스를 진행하지 않고 즉시READY상태로 전환합니다. (불필요한 충전 해제/재시작 방지). - 충전 해제 확인 (
_SM_RUN_CHGOFF): 충전 중이 아니라면(위 단계 통과), 확실한 시작을 위해 충전 해제 상태를 보장합니다. - 위치 확인 (
_SM_RUN_POSCHK): 현재 위치를 모를 경우 위치 찾기 수행.
시퀀스 단계 (Step-by-Step)
- 목표 설정:
NodeMAP_RFID_Charger값을 읽어 충전기 노드를 목표(TargetNode)로 설정. - 충전기 위치 이동:
UpdateMotionPositionForCharger함수를 사용해 충전기 앞단까지 이동.- 제한시간(
ChargeSearchTime) 초과 시 실패 처리 (CHARGEOFF이동).
- 정밀 검색 (Fine Search):
- 항상 **전진(Forward)**으로 미세 조정 이동하며 충전기를 검색합니다. (경로 예측 시 전진 진입하도록 설정됨).
- 음성 안내: "충전기를 검색합니다".
- 마크 정지 (Mark Stop):
- AGV가 기동 중이면
MarkStop명령 전송. - 정지할 때까지 대기.
- 60초 내 정지 확인 안 되면 실패 처리.
- AGV가 기동 중이면
- 위치 확정:
- 정지 후 3초 대기(센서 안정화).
- 현재 위치를
CHARGE로 설정.
- 충전 명령:
AGVCharge(true)호출하여 하드웨어에 충전 시작 명령 전송.WAIT_CHARGEACK플래그 설정.
- ACK 확인:
- AGV로부터 "CBT" 응답 대기.
- 응답 없을 시 재전송(최대 5회), 실패 시 취소 처리.
3.2 충전 확인 (_SM_RUN_GOCHARGECHECK.cs)
충전 명령 후 실제 배터리 충전이 시작되었는지 검증합니다.
- 조건:
Battery_charging신호 및FLAG_CHARGEONA확인. - 에러 처리:
Charger_pos_error(위치 에러) 또는Charger_run_error발생 시 취소.- 30초 타임아웃: 충전이 시작되지 않으면
CHARGEOFF로 전환하여 프로세스 취소.
3.3 충전 해제 (_SM_RUN_CHGOFF.cs)
충전 상태를 안전하게 종료합니다.
- 로직:
Battery_charging이 true면AGVCharge(false)전송.- 충전이 해제될 때까지 대기 (최대 1분).
- 안전하게 해제되면
true반환.
4. 이동 제어 상세 (Movement Control)
- 핵심 함수:
UpdateMotionPositionForCharger(in_Util.cs) - 특징:
- 일반 이동과 달리 충전기 진입을 위한 전용 로직 사용.
MARK_SENSOR를 확인하여 충전 위치 도달 여부 판단.
- 안전 로직 추가 (
CheckStopCondition):- 비상 정지:
Emergency상태이고 로봇이 멈췄을 경우IDLE로 전환 및 중단. - 수동 충전 중:
FLAG_CHARGEONM상태일 경우 이동 불가 처리.
- 비상 정지:
5. 주요 설정 및 변수
PUB.setting.NodeMAP_RFID_Charger: 충전기 위치의 RFID 태그 ID.PUB.setting.chargerpos: 충전 진입 방식 (0:전진, 2:후진, 1:QC위치).PUB.setting.ChargeSearchTime: 충전기 검색 제한 시간.