This commit is contained in:
2025-12-12 20:57:55 +09:00
parent f507a6487e
commit 703e1387bf
4 changed files with 1385 additions and 50 deletions

View File

@@ -21,56 +21,6 @@ namespace AGVEmulator
public char sts_dir = 'F'; public char sts_dir = 'F';
public char sts_sensor = '1'; public char sts_sensor = '1';
public enum eCommand : byte
{
LOAD = 0, //EEPROM 불러오기
SAVE, //EEPROM 저장
RESET, //초기화
PINGCHK,
SET_PINMODE, //PINMODE 설정
SET_DOUTPUT, //디지털출력설정(포트번호,값[1,0])
SET_AOUTPUT, //아날로그출력설정(포트GET_SETTING = 50, //셋팅값 요청
SET_FLAG,
SET_EEPROM,
SET_MANUALSPEED,
GET_SETTING = 50,
GUIDE_MOT = 90, //가이드커버(양쪽) 0=멈춤,1=UP,2=DN 아스키코드표 90=Z
SET_EEP_DIREV,
};
public enum DOName
{
PINO_GUIDEMOTOR_LDIR,
PINO_GUIDEMOTOR_LRUN,
PINO_GUIDEMOTOR_RDIR,
PINO_GUIDEMOTOR_RRUN,
PINO_EMPTY_26,
PINO_EMPTY_27,
PINO_EMPTY_28,
PINO_EMPTY_29,
}
public enum DIName
{
PINI_EMG,
PINI_BTN_1,
PINI_BTN_2,
PINI_BTN_3,
PINI_BTN_4,
PINI_OVERLOADL,
PINI_OVERLOADR,
PINI_EMPTY_36,
PINI_EMPTY_37,
PINI_EMPTY_38,
PINI_BTN_ZUP,
PINI_BTN_ZDN,
PINI_LIMIT_LU,
PINI_LIMIT_LD,
PINI_LIMIT_RU,
PINI_LIMIT_RD,
PINI_STOP,
}
public enum eerror public enum eerror
{ {
Emergency = 0, Emergency = 0,

1322
Cs_HMI/Data/NewMap.json Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,31 @@
# AGV 버퍼 진입 (Buffer In) 로직 분석
이 문서는 `_SM_RUN_BUFFER_IN.cs` 소스 코드를 기반으로 한 `Buffer In` 동작의 상세 로직 흐름을 설명합니다.
## 개요
**목적**: AGV가 버퍼 스테이션에 도킹하여 짐을 내리는 작업(Unloading)을 수행합니다.
## 선행 조건
1. **충전 해제 (Charge OFF)**: 충전 중이 아니어야 합니다.
2. **라이다 정지 (Lidar Stop)**: 장애물에 의해 차단되지 않아야 합니다.
3. **위치 확인 (Position Check)**: 현재 위치가 확정되어 있어야 합니다.
## 시퀀스 상세 흐름
| 단계 | 동작 | 상세 설명 | 오류 조건 (Error Condition) |
| :--- | :--- | :--- | :--- |
| **1** | **시작 (Start)** | - 로그 기록: "버퍼도킹시작"<br>- 음성 안내: "하차작업을 시작합니다" | (없음) |
| **2** | **이동/정지 확인** | - 현재 AGV가 움직이는 중인지 확인.<br>- 3초 이상 움직이면 강제 정지 명령.<br>- 정지해 있거나 이미 회전(L90) 상태라면 다음 단계로 진행. | (없음) |
| **3** | **회전 명령** | - 현재 회전 상태가 L90(왼쪽 90도)이 아니라면 `좌회전 180도(Left 180 Turn)` 명령 전송.<br>- 로그: "AGV Left Turn" | (없음) |
| **4** | **회전 시작 대기** | - AGV가 회전 동작을 시작했는지(움직임 감지) 확인. | **5초 타임아웃**: 5초 내 미동작 시 오류. |
| **5** | **회전 완료 대기** | - AGV가 회전 동작을 완료하고 멈췄는지 확인. | **15초 타임아웃**: 15초 이상 계속 움직이면 오류. |
| **6** | **리프트 하강** | - `리프트 다운(Lift Down)` 명령 전송. | (없음) |
| **7** | **리프트 확인** | - 리프트 다운 센서 신호 확인. | **10초 타임아웃**: 리프트 하강 미확인 시 오류. |
| **8** | **마크 스탑 설정** | - 마크 스탑(Mark Stop) 모니터링 활성화. | (없음) |
| **9** | **후진 이동 시작** | - 속도: `저속(Low)`<br>- 방향: `후진(Backward)`<br>- 명령: `후진 구동(Run Backward)` | **10초 타임아웃**: 속도 설정 실패 시 오류. |
| **10** | **마크 신호 대기** | - `NEXTSTOP_MARK` (자석/RFID) 신호 감지 대기. | **3초 타임아웃**: 3초 내 신호 미감지 시 오류. |
| **11** | **최종 정지 확인** | - AGV가 완전히 멈출 때까지 대기. | **10초 타임아웃**: 10초 내 정지 안 할 시 오류. |
| **12** | **완료** | - 로그: "버퍼투입완료"<br>- ACS 통신: 버퍼 투입 완료 신호 전송.<br>- 상태 업데이트. | (없음) |
## 관련 파일
* `Project\StateMachine\Step\_SM_RUN_BUFFER_IN.cs`

View File

@@ -0,0 +1,32 @@
# AGV 버퍼 진출 (Buffer Out) 로직 분석
이 문서는 `_SM_RUN_BUFFER_OUT.cs` 소스 코드를 기반으로 한 `Buffer Out` 동작의 상세 로직 흐름을 설명합니다.
## 개요
**목적**: AGV가 버퍼 스테이션에서 도킹을 해제하고 빠져나오는 작업(Move Out)을 수행합니다.
## 선행 조건
1. **충전 해제 (Charge OFF)**: 충전 중이 아니어야 합니다.
2. **라이다 정지 (Lidar Stop)**: 장애물에 의해 차단되지 않아야 합니다.
3. **위치 확인 (Position Check)**: 현재 위치가 확정되어 있어야 합니다.
## 시퀀스 상세 흐름
| 단계 | 동작 | 상세 설명 | 오류 조건 (Error Condition) |
| :--- | :--- | :--- | :--- |
| **1** | **이동 설정** | - 주행 설정: `직진(Strate)`, `전진(Forward)`, `저속(Low Speed)`.<br>- 빈 상태로 아웃(Empty state out) 준비. | (없음) |
| **2** | **전진 이동** | - `전진 구동(Run Forward)` 명령 실행. | (없음) |
| **3** | **마크 스탑 설정** | - "buffer out"용 마크 스탑(Mark Stop) 모니터링 설정. | (없음) |
| **4** | **이동 시작 확인** | - AGV가 실제 이동을 시작했는지 확인. | (없음) |
| **5** | **정지 확인** | - AGV가 마크 위치에 도달하여 정지했는지 확인. | (없음) |
| **6** | **회전 명령** | - `우회전 180도(Right 180 Turn)` 명령 실행. | (없음) |
| **7** | **회전 시작 확인**| - AGV가 회전 동작을 시작했는지 확인. | (없음) |
| **8** | **회전 정지 확인**| - AGV가 회전 동작을 완료하고 멈췄는지 확인. | (없음) |
| **9** | **완료** | - 로그: "BufferOut Complete"<br>- DB 기록: "bufferout 완료". | (없음) |
## 차이점 요약 (vs Buffer In)
* **방향**: Buffer In은 **후진(Backward)****좌회전(Left Turn)**을 사용하는 반면, Buffer Out은 **전진(Forward)** 및 **우회전(Right Turn)**을 사용합니다.
* **리프트**: Buffer Out 로직에는 명시적인 리프트 제어 단계가 없습니다 (이미 내려간 상태 가정).
## 관련 파일
* `Project\StateMachine\Step\_SM_RUN_BUFFER_OUT.cs`