...
This commit is contained in:
@@ -117,6 +117,11 @@ namespace Project
|
||||
PUB.sm.SetNewRunStep(ERunStep.READY);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
PUB._mapCanvas.CurrentPath = PathResult.result;
|
||||
PUB._virtualAGV.SetPath(PathResult.result);
|
||||
}
|
||||
|
||||
PUB.log.AddI($"경로생성 {PUB._virtualAGV.StartNode.RfidId} -> {PUB._virtualAGV.TargetNode.RfidId}");
|
||||
}
|
||||
@@ -133,8 +138,16 @@ namespace Project
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//predict 를 이용하여 다음 이동을 모두 확인한다.
|
||||
var nextAction = PUB._virtualAGV.Predict();
|
||||
if(nextAction.Reason == AGVNavigationCore.Models.eAGVCommandReason.PathOut)
|
||||
{
|
||||
//경로이탈
|
||||
PUB._virtualAGV.CurrentPath.DetailedPath.Clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
var message = $"[다음 행동 예측]\n\n" +
|
||||
$"모터: {nextAction.Motor}\n" +
|
||||
|
||||
@@ -72,7 +72,7 @@ namespace Project
|
||||
else if (PUB.BMS.IsValid == false)
|
||||
{
|
||||
var ts = VAR.TIME.RUN(eVarTime.LastConnTry_BAT);
|
||||
if (ts.TotalSeconds > (PUB.setting.interval_bms * 2.5))
|
||||
if (ts.TotalSeconds > ( Math.Max(10,PUB.setting.interval_bms) * 2.5))
|
||||
{
|
||||
this.BeginInvoke(new Action(() =>
|
||||
{
|
||||
|
||||
@@ -113,7 +113,7 @@ namespace Project
|
||||
|
||||
case ENIGProtocol.AGVCommandHE.GotoAlias:
|
||||
case ENIGProtocol.AGVCommandHE.Goto: //move to tag
|
||||
var datalength = cmd == ENIGProtocol.AGVCommandHE.GotoAlias ? 1 : 4;
|
||||
var datalength = cmd == ENIGProtocol.AGVCommandHE.GotoAlias ? 2 : 1;
|
||||
if (data.Length > datalength)
|
||||
{
|
||||
var currTag = System.Text.Encoding.Default.GetString(data, 1, data.Length - 1).Trim();
|
||||
@@ -255,7 +255,7 @@ namespace Project
|
||||
break;
|
||||
|
||||
default:
|
||||
PUB.logagv.AddE($"Unknown Command : {cmd}");
|
||||
PUB.logagv.AddE($"Unknown Command : {cmd} Sender:{e.ReceivedPacket.ID}, Target:{data[0]}");
|
||||
PUB.XBE.SendError(ENIGProtocol.AGVErrorCode.UnknownCommand, $"{cmd}");
|
||||
break;
|
||||
}
|
||||
@@ -301,6 +301,19 @@ namespace Project
|
||||
if (advancedResult.DockingValidation == null || !advancedResult.DockingValidation.IsValidationRequired)
|
||||
advancedResult.DockingValidation = DockingValidator.ValidateDockingDirection(advancedResult, _mapNodes);
|
||||
|
||||
//마지막대상이 버퍼라면 시퀀스처리를 해야한다
|
||||
if (targetNode.StationType == StationType.Buffer&& advancedResult.DetailedPath.Any())
|
||||
{
|
||||
var lastDetailPath = advancedResult.DetailedPath.Last();
|
||||
if (lastDetailPath.NodeId == targetNode.Id) //마지막노드 재확인
|
||||
{
|
||||
//버퍼에 도킹할때에는 마지막 노드에서 멈추고 시퀀스를 적용해야한다
|
||||
advancedResult.DetailedPath = advancedResult.DetailedPath.Take(advancedResult.DetailedPath.Count - 1).ToList();
|
||||
Console.WriteLine("최종위치가 버퍼이므로 마지막 RFID에서 멈추도록 합니다");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
_simulatorCanvas.CurrentPath = advancedResult;
|
||||
//_pathLengthLabel.Text = $"경로 길이: {advancedResult.TotalDistance:F1}";
|
||||
//_statusLabel.Text = $"경로 계산 완료 ({advancedResult.CalculationTimeMs}ms)";
|
||||
|
||||
Reference in New Issue
Block a user