..
This commit is contained in:
@@ -145,9 +145,8 @@ namespace Project
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//버퍼에들어갈때에는 가져다 놓을때도 가지러 갈때에도 리프트는 내려서 들어간다
|
||||
var liftCmd = arDev.Narumi.LiftCommand.DN;
|
||||
PUB.AGV.LiftControl(liftCmd);
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트를 내립니다");
|
||||
VAR.I32[eVarInt32.RetryLift] = 0;
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
@@ -156,17 +155,9 @@ namespace Project
|
||||
//리프트 센서 확인
|
||||
if (PUB.AGV.signal1.lift_down == false)
|
||||
{
|
||||
if (seqtime.TotalSeconds > 20)
|
||||
{
|
||||
PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않아 1회 재시도 합니다");
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
|
||||
//재시도를 했으니 다음으로 진행하게한다
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB._mapCanvas.SetAlertMessage($"리프트 하강 확인 중({seqtime.TotalSeconds:N0}/20)");
|
||||
return false;
|
||||
}
|
||||
VAR.I32[eVarInt32.RetryLift] = 0;
|
||||
var rlt = PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.DN);
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 하강 실행:{rlt}");
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
@@ -178,16 +169,64 @@ namespace Project
|
||||
{
|
||||
if (seqtime.TotalSeconds > 20)
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, $"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않습니다");
|
||||
if (VAR.I32[eVarInt32.RetryLift] < 3)
|
||||
{
|
||||
PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않아 재시도 합니다");
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR,
|
||||
$"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 내려가지 않습니다");
|
||||
VAR.I32[eVarInt32.RetryLift] = 0;
|
||||
}
|
||||
}
|
||||
else PUB._mapCanvas.SetAlertMessage($"리프트 하강 확인 중({seqtime.TotalSeconds:N0}/20)");
|
||||
return false;
|
||||
}
|
||||
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 하강 완료");
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
if(PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryManget] += 1;
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 마그넷ON");
|
||||
}
|
||||
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//마그넷센서가 들어오는지 5초간 확인한다.
|
||||
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter &&
|
||||
PUB.AGV.signal1.magnet_on == false)
|
||||
{
|
||||
if (seqtime.TotalSeconds > 5)
|
||||
{
|
||||
if (VAR.I32[eVarInt32.RetryManget] < 3)
|
||||
{
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var errmsg = $"[{funcname}] 마그넷이 ON 되지 않았습니다";
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.MAGNET_ON_ERROR, errmsg);
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//저속이동 (후진 진입)
|
||||
@@ -220,16 +259,17 @@ namespace Project
|
||||
return false;
|
||||
}
|
||||
|
||||
//후진이동을한다
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 도킹을 위해 후진 이동 시작 (Dir:Backward, Spd:Low)");
|
||||
PUB._mapCanvas.SetAlertMessage($"도킹을 위해 후진 이동 시작");
|
||||
VAR.I32[eVarInt32.RetryMove] = 0;
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//이동확인을 한다.
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 도킹을 위해 후진 이동 시작 (Dir:Backward, Spd:Low)");
|
||||
PUB._mapCanvas.SetAlertMessage($"도킹을 위해 후진 이동 시작");
|
||||
PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Backward);
|
||||
VAR.I32[eVarInt32.RetryMove] += 1;
|
||||
var rlt = PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Backward);
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 이동명령 결과:{rlt}");
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
@@ -240,8 +280,18 @@ namespace Project
|
||||
{
|
||||
if (seqtime.TotalSeconds > 10)
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL);
|
||||
if (VAR.I32[eVarInt32.RetryMove] < 3)
|
||||
{
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 이동명령 재전송");
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL);
|
||||
VAR.I32[eVarInt32.RetryMove] = 0;
|
||||
}
|
||||
}
|
||||
else PUB._mapCanvas.SetAlertMessage($"AGV이동 확인 중");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -309,11 +359,50 @@ namespace Project
|
||||
return false;
|
||||
}
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 마크센서 확인완료");
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
VAR.TIME.Update(eVarTime.LastTurnCommandTime);
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//pick off 조건이라면. 마그넷을 on 한후에 민다.
|
||||
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryManget] += 1;
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//pick off 조건이라면. 마그넷을 on 한후에 민다.
|
||||
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
|
||||
{
|
||||
//마그넷센서가 들어오는지 5초간 확인한다.
|
||||
if (PUB.AGV.signal1.magnet_on == true)
|
||||
{
|
||||
if (seqtime.TotalSeconds > 5)
|
||||
{
|
||||
if (VAR.I32[eVarInt32.RetryManget] < 3)
|
||||
{
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
var errmsg = $"[{funcname}] 마그넷이 OFF 되지 않았습니다";
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.MAGNET_OF_ERROR, errmsg);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
if (seqtime.TotalSeconds < 2) return false;
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 작업({PUB.NextWorkCmd}) 완료. 대기 상태로 전환 (퇴출 명령 대기)");
|
||||
|
||||
@@ -37,12 +37,14 @@ namespace Project
|
||||
PUB.Speak(Lang.진출을시작합니다);
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
SpeedSetRetry = false;
|
||||
VAR.I32[eVarInt32.RetryLift] = 0;
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
arDev.Narumi.LiftCommand lift = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? arDev.Narumi.LiftCommand.UP : arDev.Narumi.LiftCommand.DN;
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트제어 {lift}");
|
||||
VAR.I32[eVarInt32.RetryLift] += 1;
|
||||
PUB.AGV.LiftControl(lift);
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
@@ -55,31 +57,23 @@ namespace Project
|
||||
{
|
||||
if (seqtime.TotalSeconds > 20)
|
||||
{
|
||||
PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 완료되지 않아 1회 재시도 합니다");
|
||||
arDev.Narumi.LiftCommand lift = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? arDev.Narumi.LiftCommand.UP : arDev.Narumi.LiftCommand.DN;
|
||||
PUB.AGV.LiftControl(lift);
|
||||
if(VAR.I32[eVarInt32.RetryLift] < 3)
|
||||
{
|
||||
PUB.log.AddAT($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 완료되지 않아 재시도 합니다");
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryLift] = 0;
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, $"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 동작하지 않습니다");
|
||||
}
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//리프트 센서 확인
|
||||
var checksensor = PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOnExit ? PUB.AGV.signal1.lift_up : PUB.AGV.signal1.lift_down;
|
||||
if (checksensor == false)
|
||||
{
|
||||
if (seqtime.TotalSeconds > 20)
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, $"[{funcname}-{PUB.sm.RunStepSeq}] 리프트가 동작하지 않습니다");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] 리프트 확인 완료");
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
if (PUB.AGV.signal1.mark_sensor == false)
|
||||
@@ -111,6 +105,7 @@ namespace Project
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 이동 설정 완료 (Dir:Forward, Spd:Low)");
|
||||
}
|
||||
|
||||
VAR.I32[eVarInt32.RetryMove] = 0;
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
@@ -119,10 +114,10 @@ namespace Project
|
||||
//전진이동
|
||||
if (PUB.AGV.signal1.mark_sensor == false)
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryMove] += 1;
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 전진 구동 시작");
|
||||
PUB.AGV.AGVMoveRun(arDev.Narumi.eRunOpt.Forward);
|
||||
}
|
||||
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
@@ -135,17 +130,32 @@ namespace Project
|
||||
{
|
||||
if (seqtime.TotalSeconds > 3)
|
||||
{
|
||||
//구동이확인되지 않으면 오류처리를 한다.
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL);
|
||||
if(VAR.I32[eVarInt32.RetryMove] < 3)
|
||||
{
|
||||
//재시도를 하게한다.
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
//구동이확인되지 않으면 오류처리를 한다.
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.AGV_RUN_FAIL);
|
||||
VAR.I32[eVarInt32.RetryMove] = 0;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] AGV 구동 확인 완료");
|
||||
//마크스탑설정
|
||||
PUB.AGV.AGVMoveStop(funcname, arDev.Narumi.eStopOpt.MarkStop);
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] MarkStop 명령 전송 (진출 정지 장소)");
|
||||
}
|
||||
VAR.I32[eVarInt32.RetryMarkStop] = 0;
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryMarkStop] += 1;
|
||||
PUB.AGV.AGVMoveStop(funcname, arDev.Narumi.eStopOpt.MarkStop);
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] MarkStop 명령 전송 (진출 정지 장소)");
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
@@ -158,7 +168,16 @@ namespace Project
|
||||
{
|
||||
if (seqtime.TotalSeconds > 3)
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_TIMEOUT);
|
||||
if(VAR.I32[eVarInt32.RetryMarkStop] < 3)
|
||||
{
|
||||
PUB.log.Add($"[{funcname}-{PUB.sm.RunStepSeq}] MarkStop 재시도");
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_TIMEOUT);
|
||||
VAR.I32[eVarInt32.RetryMarkStop] = 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Project
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//마크센서가 감지된상태여야 완전한위치로 가정한다
|
||||
if(PUB.AGV.signal1.mark_sensor == false)
|
||||
if (PUB.AGV.signal1.mark_sensor == false)
|
||||
{
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.MARK_SENSOR_FAIL, $"[{funcname}] 마크센서가 감지되지 않습니다");
|
||||
}
|
||||
@@ -95,15 +95,54 @@ namespace Project
|
||||
var errmsg = $"[{funcname}] 리프트다운이 확인되지 않습니다";
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.LIFT_ERROR, errmsg);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB.log.Add("리프트 동작 확인 완료");
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
PUB.log.Add("리프트 동작 확인 완료");
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//pick off 조건이라면. 마그넷을 on 한후에 민다.
|
||||
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryManget] += 1;
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.ON);
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//pick off 조건이라면. 마그넷을 on 한후에 민다.
|
||||
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
|
||||
{
|
||||
//마그넷센서가 들어오는지 5초간 확인한다.
|
||||
if (PUB.AGV.signal1.magnet_on == false)
|
||||
{
|
||||
if (seqTime.TotalSeconds > 5)
|
||||
{
|
||||
if(VAR.I32[eVarInt32.RetryManget] < 3)
|
||||
{
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var errmsg = $"[{funcname}] 마그넷이 ON 되지 않았습니다";
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.MAGNET_ON_ERROR, errmsg);
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//저속이동 (후진 진입)
|
||||
@@ -114,6 +153,7 @@ namespace Project
|
||||
PBSSensor = 0,
|
||||
Speed = arDev.Narumi.eMoveSpd.Low,
|
||||
});
|
||||
|
||||
//명령이 실패되었다면 재시도를 한다
|
||||
if (ret != arDev.eNarumiCommandResult.Success)
|
||||
{
|
||||
@@ -198,10 +238,50 @@ namespace Project
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//완료되었다.
|
||||
PUB.log.Add("진입 완료");
|
||||
PUB.log.Add("진입 완료 마그넷을 off합니다");
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//pick off 조건이라면. 마그넷을 on 한후에 민다.
|
||||
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryManget] += 1;
|
||||
PUB.AGV.LiftControl(arDev.Narumi.LiftCommand.OFF);
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
else if (PUB.sm.RunStepSeq == idx++)
|
||||
{
|
||||
//pick off 조건이라면. 마그넷을 on 한후에 민다.
|
||||
if (PUB.NextWorkCmd == ENIGProtocol.AGVCommandHE.PickOffEnter)
|
||||
{
|
||||
//마그넷센서가 들어오는지 5초간 확인한다.
|
||||
if (PUB.AGV.signal1.magnet_on == true)
|
||||
{
|
||||
if (seqTime.TotalSeconds > 5)
|
||||
{
|
||||
if (VAR.I32[eVarInt32.RetryManget] < 3)
|
||||
{
|
||||
PUB.sm.UpdateRunStepSeq(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
VAR.I32[eVarInt32.RetryManget] = 0;
|
||||
var errmsg = $"[{funcname}] 마그넷이 OFF 되지 않았습니다";
|
||||
SetRunStepError(ENIGProtocol.AGVErrorCode.MAGNET_OF_ERROR, errmsg);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -109,6 +109,9 @@ namespace Project
|
||||
PUB.log.Add($"[GOTO] Step {idx - 1}: Movement Finished. Waiting for full stop.");
|
||||
PUB.Speak(Lang.이동완료, true);
|
||||
PUB.AddEEDB($"이동완료({PUB._virtualAGV.TargetNode.ID2})");
|
||||
|
||||
//ㅇ목적지 완료신호를 ACS에전송한다.
|
||||
PUB.XBE.SendMoveComplete(PUB._virtualAGV.TargetNode.RfidId.ToString("0000"));
|
||||
PUB.sm.UpdateRunStepSeq();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -287,10 +287,19 @@ namespace Project
|
||||
{
|
||||
if (PUB.AGV.system1.agv_run == false)
|
||||
{
|
||||
//마크센서확인
|
||||
if(PUB.AGV.signal1.mark_sensor==false)
|
||||
{
|
||||
PUB.log.AddI($"목표도착되었으나 마크센서가 감지되지 않아 경로를 삭제 합니다");
|
||||
PUB._virtualAGV.SetPath(null);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 경로가 존재한다면...
|
||||
if (PUB._virtualAGV.CurrentPath != null && PUB._virtualAGV.CurrentPath.DetailedPath.Any())
|
||||
{
|
||||
var lastInfo = PUB._virtualAGV.CurrentPath.DetailedPath.Last();
|
||||
|
||||
// 위치와 방향이 모두 일치해야 완료된 것으로 본다.
|
||||
if (PUB._virtualAGV.CurrentNode.Id == lastInfo.NodeId &&
|
||||
PUB._virtualAGV.CurrentDirection == lastInfo.MotorDirection)
|
||||
|
||||
Reference in New Issue
Block a user