Commit ca463496 张东亮

1

1 个父辈 a4651d4c
...@@ -2782,20 +2782,51 @@ namespace BLL ...@@ -2782,20 +2782,51 @@ namespace BLL
if (!BAreaLeaveCheck) if (!BAreaLeaveCheck)
{ {
//在A4出料架后,B区域暂时找不到出库料仓,先回待机位,如果mark消失,则将料架送回 nodeIdx = Common.nodeInfo.FindIndex(s => s.Mark == agv.Mark);
nodeIdx = Common.nodeInfo.FindIndex(s => s.Mark == agv.Mark && s.AgvName == "" && s.IsUse);
if (nodeIdx == -1) if (nodeIdx == -1)
{ {
nodeIdx = Common.nodeInfo.FindIndex(s => s.Mark == agv.Mark); nodeIdx = Common.nodeInfo.FindIndex(s => s.Name == "A3" && s.Action == ClientAction.NeedEnter && s.AgvName == "" && s.IsUse);
if (nodeIdx == -1)//当前mark任务已结束 if (nodeIdx == -1)
{ {
ClearMarkByNodeMark();
string log = agv.Name + " A4 FindNeedEnterWithMark 节点mark没有找到[Mark=" + agv.Mark + "],去A3";
Common.log.OutInfo(log);
return MoveNode(agv, nodeIdx);
}
else
{
if (!agv.StandbyTemp)
{
agv.StandbyTemp = true;
foreach (var item in Common.nodeInfo)
{
if (item.AgvName.Equals(agv.Name))
item.AgvName = "";
}
string log = agv.Name + " A4 FindNeedEnterWithMark 节点mark没有找到[Mark=" + agv.Mark + "],移动到MoveStandbyTemp";
Common.log.OutInfo(log);
Common.mir.Add_Mission_Fleet(agv, Common.agvMission["MoveStandbyTemp"]);
}
return true;
} }
} }
string log = agv.Name + " A4 FindBNeedEnterWithMark [Mark=" + agv.Mark + "]"; else
{
string log = agv.Name + " A4 FindNeedEnterWithMark [Mark=" + agv.Mark + "]";
Common.log.OutInfo(log);
return true;
}
}
if (!agv.Mark.Split(',')[1].Equals("pack"))
{
ClearMarkByNodeMark();
string log = agv.Name + " [Mark=" + agv.Mark + "] 出库任务完成";
Common.log.OutInfo(log); Common.log.OutInfo(log);
return true; Common.log.OutTextBox(log);
return false;
} }
bool rtn = AGVManager.LeaveCheck(agv, out int taskCount); bool rtn = AGVManager.LeaveCheck(agv, out int taskCount);
Thread.Sleep(3000); Thread.Sleep(3000);
if (!rtn)//出库任务还未完成 if (!rtn)//出库任务还未完成
...@@ -2817,15 +2848,49 @@ namespace BLL ...@@ -2817,15 +2848,49 @@ namespace BLL
} }
else else
{ {
ClearMarkByNodeMark();
string log = agv.Name + " [Mark=" + agv.Mark + "] [taskCount = " + taskCount.ToString() + "] 出库任务完成"; string log = agv.Name + " [Mark=" + agv.Mark + "] [taskCount = " + taskCount.ToString() + "] 出库任务完成";
Common.log.OutInfo(log); Common.log.OutInfo(log);
//Common.log.OutTextBox(log); Common.log.OutTextBox(log);
return false; return false;
} }
//MoveStandby //MoveStandby
} }
} }
private readonly object clearMarkObj = new object();
/// <summary>
/// 清除节点上无mark,但任务里还有mark的情况
/// </summary>
private void ClearMarkByNodeMark()
{
lock (clearMarkObj)
{
//清除mark
List<string> markLst = new List<string>();
foreach (var mark in Common.control.Marks)
{
int count = 0;
foreach (var node in Common.nodeInfo)
{
if (mark.Equals(node.Mark))
count++;
}
if (count == 0)//mark存在标记,但节点任务没有,删除该mark
{
markLst.Add(mark);
}
}
if (markLst.Count != 0)
{
for (int i = 0; i < markLst.Count; i++)
{
Common.control.Marks.Remove(markLst[i]);
}
}
}
}
/// <summary> /// <summary>
/// 寻找需要送出料架/料串的节点,并给小车发任务 /// 寻找需要送出料架/料串的节点,并给小车发任务
/// </summary> /// </summary>
......
...@@ -64,6 +64,16 @@ namespace AGVControl ...@@ -64,6 +64,16 @@ namespace AGVControl
{ {
DgvNode.Rows[nodeIndex].SetValues(Common.nodeInfo[nodeIndex].ToRow()); DgvNode.Rows[nodeIndex].SetValues(Common.nodeInfo[nodeIndex].ToRow());
})); }));
string task = "";
Invoke(new Action(() =>
{
label4.Text = "";
foreach (var item in Common.agvInfo)
{
task += string.Format("{0}: [Mark={1}] [RFID={2}] [剩余任务={3}]\r\n", item.Name, item.Mark, item.RFID, item.LeftTaskCnt);
}
label4.Text = task;
}));
} }
private void Server_NodeOnline(int nodeIndex) private void Server_NodeOnline(int nodeIndex)
...@@ -163,6 +173,7 @@ namespace AGVControl ...@@ -163,6 +173,7 @@ namespace AGVControl
return; return;
} }
} }
Common.agvInfo[e.RowIndex].IsUse = false;
//清除小车缓存 //清除小车缓存
Common.log.OutInfo(string.Format("手动清除缓存:{0}[CurTaskName={1}]", Common.agvInfo[e.RowIndex].ToRow(), Common.agvInfo[e.RowIndex].CurTaskName)); Common.log.OutInfo(string.Format("手动清除缓存:{0}[CurTaskName={1}]", Common.agvInfo[e.RowIndex].ToRow(), Common.agvInfo[e.RowIndex].CurTaskName));
string place = Common.agvInfo[e.RowIndex].Place; string place = Common.agvInfo[e.RowIndex].Place;
...@@ -170,6 +181,8 @@ namespace AGVControl ...@@ -170,6 +181,8 @@ namespace AGVControl
Common.agvInfo[e.RowIndex].Place = ""; Common.agvInfo[e.RowIndex].Place = "";
Common.agvInfo[e.RowIndex].RFID = ""; Common.agvInfo[e.RowIndex].RFID = "";
Common.agvInfo[e.RowIndex].NextMission = ""; Common.agvInfo[e.RowIndex].NextMission = "";
Common.agvInfo[e.RowIndex].LeftTaskCnt = 0;
Common.agvInfo[e.RowIndex].CurTaskName = "";
Common.agvInfo[e.RowIndex].IsClearRunInfo = true; Common.agvInfo[e.RowIndex].IsClearRunInfo = true;
//清除节点缓存 //清除节点缓存
...@@ -185,10 +198,23 @@ namespace AGVControl ...@@ -185,10 +198,23 @@ namespace AGVControl
Common.nodeInfo[idx].AgvName = ""; Common.nodeInfo[idx].AgvName = "";
DgvNode.Rows[idx].Cells[5].Value = ""; DgvNode.Rows[idx].Cells[5].Value = "";
} }
string task = "";
Invoke(new Action(() =>
{
label4.Text = "";
foreach (var item in Common.agvInfo)
{
task += string.Format("{0}: [Mark={1}] [RFID={2}] [剩余任务={3}]\r\n", item.Name, item.Mark, item.RFID, item.LeftTaskCnt);
}
label4.Text = task;
}));
//添加Init任务 //添加Init任务
Common.mir.Add_Mission_Fleet(Common.agvInfo[e.RowIndex], Common.agvMission["Init"]); Common.mir.Add_Mission_Fleet(Common.agvInfo[e.RowIndex], Common.agvMission["Init"]);
Common.mir.State_Ready(Common.agvInfo[e.RowIndex]); Common.mir.State_Ready(Common.agvInfo[e.RowIndex]);
DgvAgv.Rows[e.RowIndex].SetValues(Common.agvInfo[e.RowIndex].ToRow()); DgvAgv.Rows[e.RowIndex].SetValues(Common.agvInfo[e.RowIndex].ToRow());
Common.agvInfo[e.RowIndex].IsUse = true;
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!