Commit 07c67e06 张东亮

单独钢网入库运输

1 个父辈 3d426a33
...@@ -61,7 +61,7 @@ namespace DeviceLibrary.bean.job ...@@ -61,7 +61,7 @@ namespace DeviceLibrary.bean.job
runInfo = $"{JobParam.SrcNode.AliceName}门已开启,进电梯取料点"; runInfo = $"{JobParam.SrcNode.AliceName}门已开启,进电梯取料点";
ToPutShelfOn(agv, JobParam.SrcNode.Name); ToPutShelfOn(agv, JobParam.SrcNode.Name);
//任务状态变更 //任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.电梯到达, out string msg); MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回电梯到达, out string msg);
JobRunStep.Msg = runInfo; JobRunStep.Msg = runInfo;
} }
} }
...@@ -99,7 +99,7 @@ namespace DeviceLibrary.bean.job ...@@ -99,7 +99,7 @@ namespace DeviceLibrary.bean.job
bool rtn = lift.LiftContext.AGVLeave(JobParam.SrcNode.Name, agv, false); bool rtn = lift.LiftContext.AGVLeave(JobParam.SrcNode.Name, agv, false);
runInfo = $"离开{JobParam.SrcNode.AliceName},关闭门:{rtn}"; runInfo = $"离开{JobParam.SrcNode.AliceName},关闭门:{rtn}";
//任务状态变更 //任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.离开电梯, out string msg); MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回离开电梯, out string msg);
JobRunStep.Msg = runInfo; JobRunStep.Msg = runInfo;
ClearLiftNodeOccupied(agv); ClearLiftNodeOccupied(agv);
} }
...@@ -116,7 +116,7 @@ namespace DeviceLibrary.bean.job ...@@ -116,7 +116,7 @@ namespace DeviceLibrary.bean.job
//else //else
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_07_ToLine); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_07_ToLine);
runInfo = $"关闭{JobParam.SrcNode.AliceName}门完成,钢网出库,去{JobParam.CurTargetNode.AliceName}的放料点"; runInfo = $"关闭{JobParam.SrcNode.AliceName}门完成去{JobParam.CurTargetNode.AliceName}的放料点";
//任务状态变更 //任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.送料, out string msg); MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.送料, out string msg);
AllocateTask(agv, $"{GetTargetName(JobParam.CurTargetNode)}_{SettingString.TakeShelfOff}"); AllocateTask(agv, $"{GetTargetName(JobParam.CurTargetNode)}_{SettingString.TakeShelfOff}");
......
...@@ -23,6 +23,7 @@ namespace DeviceLibrary.bean.job ...@@ -23,6 +23,7 @@ namespace DeviceLibrary.bean.job
lift.LiftStatus liftStatus; lift.LiftStatus liftStatus;
public override Job Run(AgvInfo agv) public override Job Run(AgvInfo agv)
{ {
Job job = this;
agv.SetJobContext(new bean.agv.JobContext() agv.SetJobContext(new bean.agv.JobContext()
{ {
MissionId = JobParam.GetMissionInfo().missionId, MissionId = JobParam.GetMissionInfo().missionId,
...@@ -231,8 +232,9 @@ namespace DeviceLibrary.bean.job ...@@ -231,8 +232,9 @@ namespace DeviceLibrary.bean.job
if (agv.TaskRunState.CheckTaskFinished(agv.Name)) if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_14_Dock); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_14_Dock);
runInfo = $"到达{JobParam.CurTargetNode.AliceName}的放料点,开始停靠"; runInfo = $"到达{JobParam.CurTargetNode.AliceName}的放料点";//,开始停靠
AllocateTask(agv, $"{SettingString.Docking}"); //AllocateTask(agv, $"{SettingString.Docking}");
JobRunStep.Msg = runInfo;
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_14_Dock)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_14_Dock))
...@@ -240,6 +242,8 @@ namespace DeviceLibrary.bean.job ...@@ -240,6 +242,8 @@ namespace DeviceLibrary.bean.job
if (agv.TaskRunState.CheckTaskFinished(agv.Name)) if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_15_CheckState); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_15_CheckState);
runInfo = "等待立库停靠完成信号";
JobRunStep.Msg = runInfo;
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_15_CheckState)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_15_CheckState))
...@@ -247,8 +251,9 @@ namespace DeviceLibrary.bean.job ...@@ -247,8 +251,9 @@ namespace DeviceLibrary.bean.job
if (manager.DataBufferManager.DockingOk) if (manager.DataBufferManager.DockingOk)
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_16_TakeOff); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_16_TakeOff);
runInfo = $"在{JobParam.CurTargetNode.AliceName}停靠完成,卸下料架"; runInfo = $"在{JobParam.CurTargetNode.AliceName}停靠完成";//,卸下料架
AllocateTask(agv, $"{SettingString.TakeShelfOff}"); //AllocateTask(agv, $"{SettingString.TakeShelfOff}");
JobRunStep.Msg = runInfo;
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_16_TakeOff)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_16_TakeOff))
...@@ -257,18 +262,20 @@ namespace DeviceLibrary.bean.job ...@@ -257,18 +262,20 @@ namespace DeviceLibrary.bean.job
{ {
manager.DataBufferManager.DetachShelf = true; manager.DataBufferManager.DetachShelf = true;
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_17_WaitShelfLeave); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_17_WaitShelfLeave);
runInfo = $"在{JobParam.CurTargetNode.AliceName}卸下料架,等待立库发送离开信号"; runInfo = $"在{JobParam.CurTargetNode.AliceName}等待立库发送离开信号";//卸下料架,
JobRunStep.Msg = runInfo;
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_17_WaitShelfLeave)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_17_WaitShelfLeave))
{ {
if(DataBufferManager.LeaveLiku) if (DataBufferManager.LeaveLiku)
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_18_PutOn); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_18_PutOn);
runInfo = $"收到立库{JobParam.CurTargetNode.AliceName}发送的允许离开信号,拾取料架"; runInfo = $"收到立库{JobParam.CurTargetNode.AliceName}发送的允许离开信号";//,拾取料架
PutShelfOn(agv); // PutShelfOn(agv);
JobRunStep.Msg = runInfo;
} }
else if(JobRunStep.IsTimeOut(60)) else if (JobRunStep.IsTimeOut(60))
{ {
//上报运输状态 //上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
...@@ -281,39 +288,51 @@ namespace DeviceLibrary.bean.job ...@@ -281,39 +288,51 @@ namespace DeviceLibrary.bean.job
if (agv.TaskRunState.CheckTaskFinished(agv.Name)) if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_BackToLift); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_BackToLift);
if(!string.IsNullOrEmpty(DataBufferManager.SteelTarget)) MissionManager.ChangeSteelSrcNodes(JobParam.GetMissionInfo().missionId, "storage");
if (!string.IsNullOrEmpty(DataBufferManager.SteelTarget))
{ {
runInfo = $"收到钢网出库点:{DataBufferManager.SteelTarget}"; runInfo = $"收到钢网出库点:{DataBufferManager.SteelTarget}";
JobRunStep.Msg = runInfo; MissionManager.ChangeSteelTarNodes(JobParam.GetMissionInfo().missionId, DataBufferManager.SteelTarget);
MissionManager.AddSteelTarNodes(JobParam.GetMissionInfo().missionId,DataBufferManager.SteelTarget); }
else
{
runInfo = $"未收到钢网出库点";
MissionManager.ChangeSteelTarNodes(JobParam.GetMissionInfo().missionId, JobParam.GetMissionInfo().sourcePoint);
} }
DataBufferManager.ResetSteelInfo(); DataBufferManager.ResetSteelInfo();
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_19_BackToLift))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
if (TargetIsOccupied(agv, JobParam.SrcNode.Name)) if (TargetIsOccupied(agv, JobParam.SrcNode.Name))
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_ToStandby); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_ToStandby);
runInfo = $"{JobParam.SrcNode.AliceName}有车,去停留点"; runInfo += $",{JobParam.SrcNode.AliceName}有车,去停留点";
JobRunStep.Msg = runInfo;
AllocateTask(agv, $"{SettingString.Standby}"); AllocateTask(agv, $"{SettingString.Standby}");
} }
else else
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_20_Request); runInfo += $",返回{JobParam.SrcNode.AliceName}";
runInfo = $"到达{JobParam.SrcNode.AliceName},请求使用电梯并等待电梯门开"; MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回电梯, out string msg);
JobRunStep.Msg = runInfo; JobParam.SetMissionInfo(MissionManager.GetMission(JobParam.GetMissionInfo().missionId));
//上报位置 AllocateTask(agv, JobParam.SrcNode.Name);
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
$"到达{JobParam.SrcNode.Name}"));
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
System.Threading.Thread.Sleep(1000);
} }
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_19_BackToLift))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_20_Request);
runInfo = $"到达{JobParam.SrcNode.AliceName},请求使用电梯并等待电梯门开";
JobRunStep.Msg = runInfo;
//上报位置
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
$"到达{JobParam.SrcNode.Name}"));
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
System.Threading.Thread.Sleep(1000);
} }
} }
...@@ -328,18 +347,17 @@ namespace DeviceLibrary.bean.job ...@@ -328,18 +347,17 @@ namespace DeviceLibrary.bean.job
runInfo = $"料车需返回,电梯口无料车,去电梯口"; runInfo = $"料车需返回,电梯口无料车,去电梯口";
//任务状态变更 //任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回电梯, out string msg); MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.返回电梯, out string msg);
AllocateTask(agv, JobParam.SrcNode.Name); AllocateTask(agv, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo; JobRunStep.Msg = runInfo;
} }
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_20_Request)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_20_Request))
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen);
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen))
{ {
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().destinationFloor)) if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor))
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus);
runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车"; runInfo = $"{JobParam.SrcNode.AliceName}门已开,检查电梯内该层是否有料车";
...@@ -351,7 +369,7 @@ namespace DeviceLibrary.bean.job ...@@ -351,7 +369,7 @@ namespace DeviceLibrary.bean.job
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen); JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_21_WaitDoorOpen);
//请求电梯 //请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true); lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
//上报运输状态 //上报运输状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto, service.model.TransportStatus.TypeStr.error, agv.Name, JobParam.SrcNode.Name, service.model.TransportStatus.ModeStr.auto,
...@@ -360,14 +378,16 @@ namespace DeviceLibrary.bean.job ...@@ -360,14 +378,16 @@ namespace DeviceLibrary.bean.job
} }
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus)) else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_22_CheckLiftStatus))
{ {
if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().destinationFloor)) if (lift.LiftContext.IsDoorOpen(JobParam.SrcNode.Name, JobParam.GetMissionInfo().sourceFloor))
{ {
if (lift.LiftContext.HasShelfNeedLeave(JobParam.SrcNode.Name, agv.Client, out liftStatus)) if (lift.LiftContext.HasShelfNeedLeave(JobParam.SrcNode.Name, agv.Client, out liftStatus))
{ {
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_01_ToTemp1); MissionInfo missionInfo = MissionManager.GetMission(JobParam.LiftStatus?.missionId ?? "");
runInfo = $"{JobParam.SrcNode.AliceName}内有料车,去临时点1放料点"; if (missionInfo != null)
AllocateTask(agv, $"{JobParam.SrcNode.Name}_{SettingString.Temp1}_{SettingString.TakeShelfOff}"); {
JobRunStep.Msg = runInfo; MissionManager.SetMissionOccupied(missionInfo, agv);
job = new SwitchShelfJob(JobParam);
}
} }
else else
{ {
...@@ -382,7 +402,7 @@ namespace DeviceLibrary.bean.job ...@@ -382,7 +402,7 @@ namespace DeviceLibrary.bean.job
{ {
JobRunStep.ToNextStep(RunStep.SD_LiftToLine_12_WaitDoorOpen); JobRunStep.ToNextStep(RunStep.SD_LiftToLine_12_WaitDoorOpen);
//请求电梯 //请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true); lift.LiftContext.Request(JobParam.GetMissionInfo(), agv);
} }
} }
#region 电梯内无料车 #region 电梯内无料车
...@@ -442,51 +462,13 @@ namespace DeviceLibrary.bean.job ...@@ -442,51 +462,13 @@ namespace DeviceLibrary.bean.job
} }
#endregion #endregion
#region 电梯内有料车
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_23_01_ToTemp1))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_02_WaitLiftIdle);
runInfo = $"到达{JobParam.SrcNode.AliceName}的临时点1的放料点,等待电梯空闲";
JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_23_02_WaitLiftIdle))
{
if (!lift.LiftContext.HasShelfNeedLeave(JobParam.SrcNode.Name, agv.Client, out liftStatus))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_03_RequestLift);
runInfo = $"请求使用{JobParam.SrcNode.AliceName}";
JobRunStep.Msg = runInfo;
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
}
}
else if (JobRunStep.IsStep(RunStep.Steel_LiftToLine_23_03_RequestLift))
{
if (!lift.LiftContext.CheckIfRequestOk(JobParam.SrcNode.Name, JobParam.GetMissionInfo()))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_19_BackToLift);
runInfo = $"请求使用{JobParam.SrcNode.AliceName}成功,去电梯口";
JobRunStep.Msg = runInfo;
AllocateTask(agv, JobParam.SrcNode.Name);
}
else if (JobRunStep.IsTimeOut(20))
{
JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_23_03_RequestLift);
//请求电梯
lift.LiftContext.Request(JobParam.GetMissionInfo(), agv, true);
}
}
#endregion
#endregion #endregion
else if (JobRunStep.IsStep(RunStep.END)) else if (JobRunStep.IsStep(RunStep.END))
{ {
JobRunStep.EndJob(); JobRunStep.EndJob();
return null; return null;
} }
return this; return job;
} }
} }
} }
...@@ -63,18 +63,18 @@ namespace DeviceLibrary ...@@ -63,18 +63,18 @@ namespace DeviceLibrary
{ {
if (agv.TaskRunState.CheckTaskFinished(agv.Name)) if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{ {
if(JobParam.GetMissionInfo().projectType.Equals(ProjectType.钢网入库)) //if(JobParam.GetMissionInfo().projectType.Equals(ProjectType.钢网入库))
{ //{
JobRunStep.ToNextStep(RunStep.LineToLift_ToSteelSrc); // JobRunStep.ToNextStep(RunStep.LineToLift_ToSteelSrc);
//上报状态 // //上报状态
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, // manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto, // service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto,
$"取车")); // $"取车"));
runInfo = $"在{JobParam.SrcNode.AliceName}拾取料车完成,去{JobParam.SrcNode.AliceName}放料点"; // runInfo = $"在{JobParam.SrcNode.AliceName}拾取料车完成,去{JobParam.SrcNode.AliceName}放料点";
ToTakeShelfOff(agv, JobParam.SrcNode.Name); // ToTakeShelfOff(agv, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo; // JobRunStep.Msg = runInfo;
} //}
else //else
{ {
JobRunStep.ToNextStep(RunStep.LineToLift_WaitConfirm); JobRunStep.ToNextStep(RunStep.LineToLift_WaitConfirm);
runInfo = $"钢网领用任务,直接去电梯口"; runInfo = $"钢网领用任务,直接去电梯口";
...@@ -160,8 +160,6 @@ namespace DeviceLibrary ...@@ -160,8 +160,6 @@ namespace DeviceLibrary
manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId, manager.UploadManager.UploadTransportStatus(new service.model.TransportStatus(agv.CurJob.JobParam.GetMissionInfo().missionId,
service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto, service.model.TransportStatus.TypeStr.status, agv.Name, agv.Place.Name, service.model.TransportStatus.ModeStr.auto,
$"到达{JobParam.CurTargetNode.Name}")); $"到达{JobParam.CurTargetNode.Name}"));
//任务状态变更
MissionManager.SetMissionState(JobParam.GetMissionInfo().missionId, service.model.MissionState.到达电梯, out string msg);
runInfo = $"到达{JobParam.CurTargetNode.AliceName},请求电梯并等待开门"; runInfo = $"到达{JobParam.CurTargetNode.AliceName},请求电梯并等待开门";
JobRunStep.Msg = runInfo; JobRunStep.Msg = runInfo;
//开始请求电梯 //开始请求电梯
......
...@@ -348,42 +348,87 @@ namespace DeviceLibrary ...@@ -348,42 +348,87 @@ namespace DeviceLibrary
} }
else else
{ {
if (missionInfo.projectType.Equals(ProjectType.钢网入库) || missionInfo.projectType.Equals(ProjectType.钢网领用))
{
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
Node dest = manager.NodeManager.GetNode(missionInfo.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
job = new SteelLiftToStorageJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_06_CloseLiftDoor);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
}
else
{
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
string[] destTmp = missionInfo.destinationPoint.Split(',');
string[] dests = destTmp.Distinct().ToArray();
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : missionInfo.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo);
if (dests.Length > 1)
{
for (int i = 1; i < dests.Length; i++)
{
Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node);
if (node != null)
jobParam.TargetNodes.Add(node);
else
{
LogUtil.error($"无法生成任务,因不存在的节点:{dests[i]}");
job = null;
}
}
}
job = new LiftToLinesJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.SD_LiftToLine_06_CloseLiftDoor);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
}
}
}
else if (JobRunStep.IsStep(RunStep.Switch_19_ReturnShelf))
{
JobRunStep.ToNextStep(RunStep.END);
MissionInfo missionInfo = MissionManager.GetMission(liftMission.missionId);
if (missionInfo.projectType.Equals(ProjectType.钢网入库) || missionInfo.projectType.Equals(ProjectType.钢网领用))
{
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift); Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
string[] destTmp = missionInfo.destinationPoint.Split(','); string[] dests = missionInfo.destinationPoint.Split(',');
string[] dests = destTmp.Distinct().ToArray();
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : missionInfo.destinationPoint, NodeType.Node); Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : missionInfo.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo); JobParam jobParam = new JobParam(src, dest, null, missionInfo);
jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node);
if (dests.Length > 1) if (dests.Length > 1)
{ {
for (int i = 1; i < dests.Length; i++) for (int i = 1; i < dests.Length; i++)
{ {
Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node); Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node);
if (node != null) if (node != null)
jobParam.TargetNodes.Add(node);
else
{ {
LogUtil.error($"无法生成任务,因不存在的节点:{dests[i]}"); Node tmp = jobParam.TargetNodes.Find(s => s.Name.Equals(node.Name));
job = null; if (tmp == null)
{
jobParam.TargetNodes.Add(node);
}
} }
} }
} }
job = new LiftToLinesJob(jobParam); MissionManager.SetMissionOccupied(missionInfo, agv);
job.JobRunStep.ToNextStep(RunStep.SD_LiftToLine_06_CloseLiftDoor); job = new SteelLiftToLinesJob(jobParam);
job.JobRunStep.ToNextStep(RunStep.Steel_LiftToLine_05_LeaveLift);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}"; job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
} }
} else
else if (JobRunStep.IsStep(RunStep.Switch_19_ReturnShelf)) {
{ Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift);
JobRunStep.ToNextStep(RunStep.END); Node dest = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node);
MissionInfo missionInfo = MissionManager.GetMission(liftMission.missionId); JobParam jobParam = new JobParam(src, dest, null, missionInfo);
Node src = manager.NodeManager.GetNode(missionInfo.liftName, NodeType.Lift); MissionManager.SetMissionOccupied(missionInfo, agv);
Node dest = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node); job = new ShelfBackLiftToStoreJob(jobParam);
JobParam jobParam = new JobParam(src, dest, null, missionInfo); job.JobRunStep.ToNextStep(RunStep.ShelfBack_LiftToStore_05_CloseLiftDoor);
MissionManager.SetMissionOccupied(missionInfo, agv); job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
job = new ShelfBackLiftToStoreJob(jobParam); }
job.JobRunStep.ToNextStep(RunStep.ShelfBack_LiftToStore_05_CloseLiftDoor);
job.JobRunStep.Msg = $"从{JobParam.CurTargetNode.AliceName}取料完成,继续执行任务:{JsonHelper.SerializeObject(missionInfo)}";
} }
else if (JobRunStep.IsStep(RunStep.END)) else if (JobRunStep.IsStep(RunStep.END))
{ {
......
...@@ -22,7 +22,7 @@ namespace DeviceLibrary.bean.jobType ...@@ -22,7 +22,7 @@ namespace DeviceLibrary.bean.jobType
{ {
Node src = manager.NodeManager.GetNode(liftname, NodeType.Lift); Node src = manager.NodeManager.GetNode(liftname, NodeType.Lift);
string[] dests = missionInfo.destinationPoint.Split(','); string[] dests = missionInfo.destinationPoint.Split(',');
Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : lift.sourcePoint, NodeType.Node); Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : lift.destinationPoint, NodeType.Node);
JobParam jobParam = new JobParam(src, dest, null, missionInfo); JobParam jobParam = new JobParam(src, dest, null, missionInfo);
jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node); jobParam.SteelShelfNode = NodeManager.GetNode(Common.AppConfigHelper.GetValue("SteelShelfPos"), NodeType.Node);
if (dests.Length > 1) if (dests.Length > 1)
......
...@@ -221,7 +221,7 @@ namespace DeviceLibrary.manager ...@@ -221,7 +221,7 @@ namespace DeviceLibrary.manager
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止 var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList(); && w.state != MissionState.取消 && w.state != MissionState.完成).ToList();
missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) && missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) &&
s.state.Equals(MissionState.创建) && s.projectType.Equals(ProjectType.钢网入库) && s.state.Equals(MissionState.创建) && (s.projectType.Equals(ProjectType.钢网入库) || s.projectType.Equals(ProjectType.钢网领用)) &&
agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault(); agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
if (missionInfo != null && AgvCanGetMission(missionInfo)) if (missionInfo != null && AgvCanGetMission(missionInfo))
{ {
...@@ -319,7 +319,10 @@ namespace DeviceLibrary.manager ...@@ -319,7 +319,10 @@ namespace DeviceLibrary.manager
&& w.state != MissionState.取消 && w.state != MissionState.完成); && w.state != MissionState.取消 && w.state != MissionState.完成);
missionInfo = missions.Find(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) && missionInfo = missions.Find(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) &&
(s.state >= MissionState.到达电梯 && s.state <= MissionState.电梯到达) (s.state >= MissionState.到达电梯 && s.state <= MissionState.电梯到达)
&& agv.Scope.Tasks.Contains(s.projectType.ToString()) && !s.projectType.Equals(ProjectType.移远成品入库)); && agv.Scope.Tasks.Contains(s.projectType.ToString())
&& !s.projectType.Equals(ProjectType.移远成品入库)
&& !s.projectType.Equals(ProjectType.钢网入库)
&& !s.projectType.Equals(ProjectType.钢网领用));
if (missionInfo != null && AgvCanGetMission(missionInfo)) if (missionInfo != null && AgvCanGetMission(missionInfo))
{ {
return missionInfo; return missionInfo;
...@@ -395,7 +398,7 @@ namespace DeviceLibrary.manager ...@@ -395,7 +398,7 @@ namespace DeviceLibrary.manager
{ {
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止 var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList(); && w.state != MissionState.取消 && w.state != MissionState.完成).ToList();
missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) && missionInfo = missions.Where(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) &&
(s.state >= MissionState.返回到达电梯内 && s.state <= MissionState.返回电梯到达) (s.state >= MissionState.返回到达电梯内 && s.state <= MissionState.返回电梯到达)
&& (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库))) && (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库)))
&& agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault(); && agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
...@@ -417,7 +420,7 @@ namespace DeviceLibrary.manager ...@@ -417,7 +420,7 @@ namespace DeviceLibrary.manager
{ {
var missions = GetMissionInfos().Where(w => w.state != MissionState.中止 var missions = GetMissionInfos().Where(w => w.state != MissionState.中止
&& w.state != MissionState.取消 && w.state != MissionState.完成).ToList(); && w.state != MissionState.取消 && w.state != MissionState.完成).ToList();
missionInfo = missions.Where(s => s.sourceWorkshop.Equals(agv.Scope.Workshop) && missionInfo = missions.Where(s => s.destinationWorkshop.Equals(agv.Scope.Workshop) &&
(s.state >= MissionState.电梯运行 && s.state <= MissionState.电梯到达) (s.state >= MissionState.电梯运行 && s.state <= MissionState.电梯到达)
&& (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库))) && (s.projectType.Equals(ProjectType.钢网领用) || (s.projectType.Equals(ProjectType.钢网入库)))
&& agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault(); && agv.Scope.Tasks.Contains(s.projectType.ToString())).FirstOrDefault();
...@@ -651,7 +654,7 @@ namespace DeviceLibrary.manager ...@@ -651,7 +654,7 @@ namespace DeviceLibrary.manager
Log.Info($"设置任务[{missionInfo.missionId}] 状态为[{missionState}]成功"); Log.Info($"设置任务[{missionInfo.missionId}] 状态为[{missionState}]成功");
// //
} }
public static void AddSteelTarNodes(string missionId, string nodes) public static void ChangeSteelTarNodes(string missionId, string nodes)
{ {
MissionInfo missionInfo = GetMission(missionId); MissionInfo missionInfo = GetMission(missionId);
if (missionInfo != null) if (missionInfo != null)
...@@ -669,6 +672,7 @@ namespace DeviceLibrary.manager ...@@ -669,6 +672,7 @@ namespace DeviceLibrary.manager
mission.liftName = item.liftName; mission.liftName = item.liftName;
mission.occupiedAgv = item.occupiedAgv; mission.occupiedAgv = item.occupiedAgv;
mission.destinationPoint = item.destinationPoint; mission.destinationPoint = item.destinationPoint;
mission.sourcePoint= item.sourcePoint;
} }
} }
ctx.SaveChanges(); ctx.SaveChanges();
...@@ -680,6 +684,37 @@ namespace DeviceLibrary.manager ...@@ -680,6 +684,37 @@ namespace DeviceLibrary.manager
} }
} }
public static void ChangeSteelSrcNodes(string missionId, string nodes)
{
MissionInfo missionInfo = GetMission(missionId);
if (missionInfo != null)
{
missionInfo.sourcePoint = nodes;
{
using (AGVDataContext ctx = new AGVDataContext())
{
foreach (var item in GetMissionInfos())
{
var mission = ctx.MissionInfos.Where(s => s.missionId.Equals(item.missionId)).FirstOrDefault();
if (mission != null)
{
mission.SetState(item.state);
mission.liftName = item.liftName;
mission.occupiedAgv = item.occupiedAgv;
mission.destinationPoint = item.destinationPoint;
mission.sourcePoint = item.sourcePoint;
}
}
ctx.SaveChanges();
InitMission();
}
}
Log.Info($"任务[{missionInfo.missionId}]更改钢网起始地[{nodes}]成功");
}
}
/// <summary> /// <summary>
/// 根据任务信息得到电梯名称 /// 根据任务信息得到电梯名称
/// </summary> /// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!