Commit 9155c4b4 张东亮

小车收到finishenter信号后小车转向

1 个父辈 34b0a313
......@@ -62,7 +62,7 @@ namespace AGVControl
// LogUtil.error(string.Format("{0} 车上有负载,无法开启自动模式,请先清空小车负载!", Agv.Name));
// return;
//}
if (MessageBox.Show(this, "是否继续上一次的任务?\r\n" + Agv.Msg, "提示", MessageBoxButtons.YesNo).Equals(DialogResult.No))
//if (MessageBox.Show(this, "是否继续上一次的任务?\r\n" + Agv.Msg, "提示", MessageBoxButtons.YesNo).Equals(DialogResult.No))
{
if(Agv.IsExistShelf)
{
......@@ -81,14 +81,14 @@ namespace AGVControl
}
Agv.RFID = "";
}
else
{
if (Agv.IsCon)
{
Agv.Resend();
}
//else
//{
// if (Agv.IsCon)
// {
// Agv.Resend();
// }
}
//}
}
Agv.IsUse = chkBxAuto.Checked;
......
......@@ -465,7 +465,7 @@ namespace DeviceLibrary
int idx = NodeManager.FindNode(node.Name);
if (idx == -1)
{
log.Error(node.Name + " 不存在");
log.Error(node.Name + " 不存在/调用关闭");
return;
}
......
......@@ -228,6 +228,7 @@ namespace DeviceLibrary
/// AGV编号
/// </summary>
public string AGVNum { get; set; } = "";
public string DeviceName { get; set; } = "";
/// <summary>
/// 任务名称
/// </summary>
......@@ -305,6 +306,7 @@ namespace DeviceLibrary
agvname = value.PadLeft(4, '0');
}
}
public string DeviceName { get; set; } = "";
private string agvname = "";
/// <summary>
/// 开始时间
......
......@@ -177,7 +177,7 @@ namespace DeviceLibrary
}
else if (curJobStep.IsStep(EXECUTE_STEP.P4_WAIT_LINE_RESPONSE))
{
int i = NodeManager.nodeInfo.FindIndex(s => s.Name.Equals(TargetPlace));//&& s.StateEquals(eNodeStatus.MayLeave)
int i = NodeManager.nodeInfo.FindIndex(s => s.Name.Equals(TargetPlace) && s.StateEquals(eNodeStatus.MayLeave));//
if (i > -1)
{
curJobStep.ToNextStep(EXECUTE_STEP.P5_WAIT_SHELF_IN_AGV);
......@@ -191,24 +191,24 @@ namespace DeviceLibrary
rtn = agv.AssignTask(Common.SettingString.Enter);
UpdateJobTaskInfo(agv);
}
if (curJobStep.IsTimeOut(15000, out TimeSpan timeSpan))
else if (curJobStep.IsTimeOut(30000, out TimeSpan timeSpan))
{
if (TargetPlace.Equals(SettingString.D3) || TargetPlace.Equals(SettingString.D4))
{
runInfo = string.Format("线体[{0}]允许出料信号[{1}]超时{2}秒,该处料串可能被手动干预,回待机位", TargetPlace, eNodeStatus.MayLeave, timeSpan.TotalMinutes.ToString("f2"));
msg += string.Format("线体[{0}]允许出料信号[{1}]超时15S,该处料串可能被手动干预,回待机位", TargetPlace, eNodeStatus.MayLeave);
curJobStep.Msg = msg;
RecordRunLog(agv, curJobStep.CurStep(), runInfo, TargetPlace);
return new ChargeJob(TargetPlace);
}
//else
//if (TargetPlace.Equals(SettingString.D3) || TargetPlace.Equals(SettingString.D4))
//{
// curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_SHELF_PLACE);
// runInfo = string.Format("线体[{0}]允许出料信号[{1}]超时{2}秒,重发出料请求", TargetPlace, eNodeStatus.MayLeave, timeOutTime.ToString("f2"));
// msg += string.Format("线体[{0}]允许出料信号[{1}]超时15S,重发出料请求", TargetPlace, eNodeStatus.MayLeave);
// runInfo = string.Format("线体[{0}]允许出料信号[{1}]超时{2}秒,该处料串可能被手动干预,回待机位", TargetPlace, eNodeStatus.MayLeave, timeSpan.TotalSeconds.ToString("f2"));
// msg += string.Format("线体[{0}]允许出料信号[{1}]超时15S,该处料串可能被手动干预,回待机位", TargetPlace, eNodeStatus.MayLeave);
// curJobStep.Msg = msg;
// //去待机位
// RecordRunLog(agv, curJobStep.CurStep(), runInfo, TargetPlace);
// return new ChargeJob(TargetPlace);
//}
//else
{
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_SHELF_PLACE);
runInfo = string.Format("线体[{0}]允许出料信号[{1}]超时{2}秒,重发出料请求", TargetPlace, eNodeStatus.MayLeave, timeSpan.TotalSeconds.ToString("f2"));
msg += string.Format("线体[{0}]允许出料信号[{1}]超时20S,重发出料请求", TargetPlace, eNodeStatus.MayLeave);
curJobStep.Msg = msg;
//去待机位
}
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.P5_WAIT_SHELF_IN_AGV))
......@@ -434,6 +434,11 @@ namespace DeviceLibrary
tarPlace = SettingString.D4;
return true;
}
if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.D23_In))
{
tarPlace = SettingString.D23_In;
return true;
}
}
}
else//空料串
......@@ -480,6 +485,11 @@ namespace DeviceLibrary
tarPlace = SettingString.D23_In;
return true;
}
if (ReelStringJobType.FindNeedEnterMission(currentAgv, SettingString.A8))
{
tarPlace = SettingString.A8;
return true;
}
}
}
......
......@@ -97,7 +97,7 @@ namespace DeviceLibrary
msg += runInfo;
curJobStep.Msg = msg;
CommonVar.DoorMission(agv, SettingString.DoorDToC);
UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv);
}
else if (agvPlace.StartsWith(SettingString.C4_Name_Prefix) && !TargetPlace.StartsWith(SettingString.C4_Name_Prefix))//C D
{
......@@ -106,7 +106,7 @@ namespace DeviceLibrary
msg += runInfo;
curJobStep.Msg = msg;
CommonVar.DoorMission(agv, SettingString.DoorCToD);
UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv);
}
else//DD CC
{
......@@ -115,7 +115,7 @@ namespace DeviceLibrary
msg += runInfo;
curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv);
}
}
......@@ -142,7 +142,7 @@ namespace DeviceLibrary
curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv);
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.P3_WAIT_REACH_4C_DOOR))
......@@ -156,35 +156,34 @@ namespace DeviceLibrary
curJobStep.Msg = msg;
CommonVar.MoveToNode(agv, TargetPlace);
UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv);
}
}
else if (curJobStep.IsStep(EXECUTE_STEP.P4_WAIT_STATION_RESPONSE))
{
int i = NodeManager.nodeInfo.FindIndex(s => s.Name.Equals(TargetPlace));//&& s.StateEquals(eNodeStatus.MayEnter)
int i = NodeManager.nodeInfo.FindIndex(s => s.Name.Equals(TargetPlace) && s.StateEquals(eNodeStatus.MayEnter));
if (i > -1)
{
//curJobStep.ToNextStep(EXECUTE_STEP.P5_WAIT_SHELF_IN_STATION);
curJobStep.ToNextStep(EXECUTE_STEP.P6_TURN_DIRECTION);
curJobStep.ToNextStep(EXECUTE_STEP.P5_WAIT_SHELF_IN_STATION);
//curJobStep.ToNextStep(EXECUTE_STEP.P6_TURN_DIRECTION);
runInfo = "收到线体允许进料信号,链条运行";
msg += runInfo;
curJobStep.Msg = msg;
rtn = agv.AssignTask(SettingString.Leave);
UpdateJobTaskInfo(agv);
UpdateJobTaskInfo(agv);
}
else if (curJobStep.IsTimeOut(20000, out TimeSpan timeOutTime))
{
curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION);
runInfo = string.Format("线体[{0}]允许进料信号[{1}]超时{2}秒,重发进料请求", TargetPlace, eNodeStatus.MayEnter, timeOutTime.TotalSeconds.ToString("f2"));
msg += string.Format("线体[{0}]允许进料信号[{1}]超时15S,重发进料请求", TargetPlace, eNodeStatus.MayEnter);
curJobStep.Msg = msg;
}
// if (curJobStep.IsTimeOut(15000, out double timeOutTime))
//{
// curJobStep.ToNextStep(EXECUTE_STEP.P2_WAIT_REACH_STATION);
// runInfo = string.Format("线体[{0}]允许进料信号[{1}]超时{2}秒,重发进料请求", TargetPlace, eNodeStatus.MayEnter, timeOutTime.ToString("f2"));
// msg += string.Format("线体[{0}]允许进料信号[{1}]超时15S,重发进料请求", TargetPlace, eNodeStatus.MayEnter);
// curJobStep.Msg = msg;
//}
}
else if (curJobStep.IsStep(EXECUTE_STEP.P5_WAIT_SHELF_IN_STATION))
{
int idx = NodeManager.nodeInfo.FindIndex(s=>s.Name.Equals(TargetPlace) && s.StateEquals(eNodeStatus.FinishEnter));
if(idx>-1)
int idx = NodeManager.nodeInfo.FindIndex(s => s.Name.Equals(TargetPlace) && s.StateEquals(eNodeStatus.FinishEnter));
if (idx > -1)
{
RecordRunLog(agv, curJobStep.CurStep(), runInfo, TargetPlace);
curJobStep.ToNextStep(EXECUTE_STEP.P6_TURN_DIRECTION);
......@@ -193,7 +192,7 @@ namespace DeviceLibrary
msg += runInfo;
curJobStep.Msg = msg;
}
else if (curJobStep.IsTimeOut(60000, out TimeSpan timeSpan))
else if (curJobStep.IsTimeOut(120000, out TimeSpan timeSpan))
{
runInfo = string.Format("等待线体[{0}]进料完成信号[FinishEnter]超时", TargetPlace);
msg += runInfo;
......@@ -201,6 +200,9 @@ namespace DeviceLibrary
agv.HasError = true;
agv.SetErrorMsg($"等待线体[{TargetPlace}]进料完成信号[FinishEnter]超时", timeSpan.TotalMinutes.ToString("f2"));
}
if (CommonVar.CheckEnterOrLeaveFinished(agv, SettingString.Leave, CurTaskState))
CommonVar.server.CloseDoor(TargetPlace);
}
else if (curJobStep.IsStep(EXECUTE_STEP.P6_TURN_DIRECTION))
{
......@@ -213,10 +215,10 @@ namespace DeviceLibrary
msg += runInfo;
curJobStep.Msg = msg;
CommonVar.server.CloseDoor(TargetPlace);
//rtn = agv.AssignTask(SettingString.Turn);
//UpdateJobTaskInfo(agv);
rtn = agv.AssignTask(SettingString.Turn);
UpdateJobTaskInfo(agv);
}
else if (curJobStep.IsTimeOut(60000, out TimeSpan timeSpan))
else if (curJobStep.IsTimeOut(120000, out TimeSpan timeSpan))
{
runInfo = string.Format("线体[{0}]出料超时,请检查料架情况", TargetPlace);
msg += runInfo;
......@@ -227,7 +229,7 @@ namespace DeviceLibrary
}
else if (curJobStep.IsStep(EXECUTE_STEP.P7_END))
{
// if (CommonVar.CheckEnterOrLeaveFinished(agv, SettingString.Turn, CurTaskState))
if (CommonVar.CheckEnterOrLeaveFinished(agv, SettingString.Turn, CurTaskState))
{
if (IsPlace(SettingString.D23_In) && FindReturnShelf(agv))
{
......@@ -259,7 +261,7 @@ namespace DeviceLibrary
runInfo = "AGV在" + TargetPlace + "转向完成";
msg += runInfo;
curJobStep.Msg = msg;
RecordRunLog(agv, curJobStep.CurStep(), runInfo,TargetPlace);
RecordRunLog(agv, curJobStep.CurStep(), runInfo, TargetPlace);
return null;
}
}
......
......@@ -62,7 +62,7 @@ namespace DeviceLibrary
}
}
//检查紧急出料入口需要空料串
if (FindNeedEnterMission(currentAgv, SettingString.T4_1,ClientLevel.Middle,false))//FindNeedEnterMission(currentAgv, SettingString.T4_1,ClientLevel.Middle,false) ||
if (FindNeedEnterMission(currentAgv, SettingString.T4_1,ClientLevel.Middle,false) || FindNeedEnterMission(currentAgv, SettingString.T4_1, ClientLevel.High, false))//FindNeedEnterMission(currentAgv, SettingString.T4_1,ClientLevel.Middle,false) ||
//FindNeedEnterMission(currentAgv, SettingString.T4_1, ClientLevel.High, false)
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!