작업시작전에. 현재 위치를 확인하고 진행하게 함.

This commit is contained in:
backuppc
2026-02-09 13:59:19 +09:00
parent 7409528fbd
commit c2cc5d67ae
4 changed files with 30 additions and 3 deletions

View File

@@ -74,6 +74,7 @@ namespace ENIGProtocol
MARK_STOP_FAIL, MARK_STOP_FAIL,
LIDAR_STOP, LIDAR_STOP,
NOT_BUFFERPOINT, NOT_BUFFERPOINT,
NOT_EQUIPMENTPOINT,
} }
public static class AGVUtility public static class AGVUtility
@@ -111,6 +112,7 @@ namespace ENIGProtocol
case AGVErrorCode.ALREADY_CHARGE: return "이미 충전 중 상태임"; case AGVErrorCode.ALREADY_CHARGE: return "이미 충전 중 상태임";
case AGVErrorCode.CHARGE_RETRY_OVER: return $"충전명령 재전송 횟수 초과"; case AGVErrorCode.CHARGE_RETRY_OVER: return $"충전명령 재전송 횟수 초과";
case AGVErrorCode.NOT_BUFFERPOINT: return "현재 위치가 버퍼가 아닙니다"; case AGVErrorCode.NOT_BUFFERPOINT: return "현재 위치가 버퍼가 아닙니다";
case AGVErrorCode.NOT_EQUIPMENTPOINT: return "현재 위치가 장비 노드가 아닙니다";
default: return ecode.ToString(); default: return ecode.ToString();
} }
} }

View File

@@ -54,7 +54,6 @@ namespace Project
return false; return false;
} }
var idx = 1; var idx = 1;
if (PUB.sm.RunStepSeq == idx++) if (PUB.sm.RunStepSeq == idx++)
{ {

View File

@@ -36,6 +36,19 @@ namespace Project
return false; return false;
} }
else if (PUB.sm.RunStepSeq == idx++) else if (PUB.sm.RunStepSeq == idx++)
{
//장비 노드 여부 확인 (버퍼가 아닌 도킹 가능 노드여야 함)
if (PUB._virtualAGV.CurrentNode.StationType != StationType.Loader &&
PUB._virtualAGV.CurrentNode.StationType != StationType.Clearner &&
PUB._virtualAGV.CurrentNode.StationType != StationType.UnLoader)
{
SetRunStepError(ENIGProtocol.AGVErrorCode.NOT_EQUIPMENTPOINT, $"[{funcname}-{PUB.sm.RunStepSeq}] 현재 위치가 장비 노드가 아닙니다({PUB._virtualAGV.CurrentNode.StationType})");
return false;
}
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{ {
//마크센서가 감지된상태여야 완전한위치로 가정한다 //마크센서가 감지된상태여야 완전한위치로 가정한다
if (PUB.AGV.signal1.mark_sensor == false) if (PUB.AGV.signal1.mark_sensor == false)
@@ -126,7 +139,7 @@ namespace Project
{ {
if (seqTime.TotalSeconds > 5) if (seqTime.TotalSeconds > 5)
{ {
if(VAR.I32[eVarInt32.RetryManget] < 3) if (VAR.I32[eVarInt32.RetryManget] < 3)
{ {
PUB.sm.UpdateRunStepSeq(-1); PUB.sm.UpdateRunStepSeq(-1);
} }

View File

@@ -37,6 +37,19 @@ namespace Project
return false; return false;
} }
else if (PUB.sm.RunStepSeq == idx++) else if (PUB.sm.RunStepSeq == idx++)
{
//장비 노드 여부 확인 (버퍼가 아닌 도킹 가능 노드여야 함)
if (PUB._virtualAGV.CurrentNode.StationType != StationType.Loader &&
PUB._virtualAGV.CurrentNode.StationType != StationType.Clearner &&
PUB._virtualAGV.CurrentNode.StationType != StationType.UnLoader)
{
SetRunStepError(ENIGProtocol.AGVErrorCode.NOT_EQUIPMENTPOINT, $"[{funcname}-{PUB.sm.RunStepSeq}] 현재 위치가 장비 노드가 아닙니다({PUB._virtualAGV.CurrentNode.StationType})");
return false;
}
PUB.sm.UpdateRunStepSeq();
return false;
}
else if (PUB.sm.RunStepSeq == idx++)
{ {
//작업형태에 따라서. 리프트를 제어한다. //작업형태에 따라서. 리프트를 제어한다.
var liftCmd = LiftCommand.DN; var liftCmd = LiftCommand.DN;