Commit 56df514c 张东亮

agv呼叫重置流程时不执行进出料串

1 个父辈 bc933daf
...@@ -13,6 +13,7 @@ using System.Text; ...@@ -13,6 +13,7 @@ using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Net.NetworkInformation;
namespace AutoScanAndLabel.UC namespace AutoScanAndLabel.UC
{ {
...@@ -96,6 +97,10 @@ namespace AutoScanAndLabel.UC ...@@ -96,6 +97,10 @@ namespace AutoScanAndLabel.UC
})); }));
} }
public bool InCalling = false; public bool InCalling = false;
private bool canCall()
{
return !InCalling && (handleAgv == null || (handleAgv != null && handleAgv.IsCompleted));
}
private void button_rightneedempty_Click(object sender, EventArgs e) private void button_rightneedempty_Click(object sender, EventArgs e)
{ {
if (!RobotManage.isRunning) if (!RobotManage.isRunning)
...@@ -103,14 +108,15 @@ namespace AutoScanAndLabel.UC ...@@ -103,14 +108,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv")); MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return; return;
} }
if (InCalling) if (!canCall())
{ {
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫")); MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return; return;
} }
if (RobotManage.mainMachine.IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.LOW)) if (RobotManage.mainMachine.IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.LOW))
{ {
Task.Run(() => LogUtil.info("开始入口满料串送入流程");
handleAgv = Task.Run(() =>
{ {
InCalling = true; InCalling = true;
//请求AGV代码放这里 //请求AGV代码放这里
...@@ -118,19 +124,24 @@ namespace AutoScanAndLabel.UC ...@@ -118,19 +124,24 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
// Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R40_InShelf);//等待agv到位后执行,启动进入 if (InCalling)
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R40_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv(); ShelfOutAgv();
while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R40_InShelf) while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R40_InShelf)
{ {
Task.Delay(1000).Wait(); if (!InCalling)
return;
waitTmie();
} }
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
ToStandby(); ToStandby();
//通知agv上料结束, 也可以把上料结束的代码放到 R40_InShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到 R40_InShelf的结束步骤里去
...@@ -148,15 +159,15 @@ namespace AutoScanAndLabel.UC ...@@ -148,15 +159,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv")); MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return; return;
} }
if (InCalling) if (!canCall())
{ {
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫")); MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return; return;
} }
if (RobotManage.mainMachine.IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH)) if (RobotManage.mainMachine.IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH))
{ {
LogUtil.info("开始入口空料串取出流程");
Task.Run(() => handleAgv = Task.Run(() =>
{ {
InCalling = true; InCalling = true;
//请求AGV代码放这里 //请求AGV代码放这里
...@@ -164,21 +175,25 @@ namespace AutoScanAndLabel.UC ...@@ -164,21 +175,25 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R30_OutShelf);//等待agv到位后执行,启动料串离开 if (InCalling)
RobotManage.mainMachine.RightMoveInfo.NewMove(MoveStep.R30_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv(); ShelfEnterAgv();
while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R30_OutShelf) while (RobotManage.mainMachine.RightMoveInfo.MoveStep >= MoveStep.R30_OutShelf)
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
//通知agv上料结束, 也可以把上料结束的代码放到R30_OutShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到R30_OutShelf的结束步骤里去
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
ToStandby(); ToStandby();
InCalling = false; InCalling = false;
...@@ -218,18 +233,24 @@ namespace AutoScanAndLabel.UC ...@@ -218,18 +233,24 @@ namespace AutoScanAndLabel.UC
} }
private bool WaitMissionOk() private bool WaitMissionOk()
{ {
bool rtn= WaitMissionOk((uint)AGVManager.CurMissionId); bool rtn = WaitMissionOk((uint)AGVManager.CurMissionId);
if(rtn) if (rtn)
{ {
LogUtil.info("任务编号" + AGVManager.CurMissionId+"执行完成"); LogUtil.info("任务编号" + AGVManager.CurMissionId + "执行完成");
} }
return rtn; return rtn;
} }
void autoAddMision(int id) void autoAddMision(int id)
{ {
if (!InCalling)
return;
AGVManager.AddMission(id); AGVManager.AddMission(id);
LogUtil.info("自动任务:发送任务编号" + id); LogUtil.info("自动任务:发送任务编号" + id);
} }
void waitTmie()
{
Thread.Sleep(300);
}
private void button_Leftleavefull_Click(object sender, EventArgs e) private void button_Leftleavefull_Click(object sender, EventArgs e)
{ {
if (!RobotManage.isRunning) if (!RobotManage.isRunning)
...@@ -237,14 +258,15 @@ namespace AutoScanAndLabel.UC ...@@ -237,14 +258,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv")); MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return; return;
} }
if (InCalling) if (!canCall())
{ {
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫")); MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return; return;
} }
if (RobotManage.mainMachine.IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.HIGH)) if (RobotManage.mainMachine.IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.HIGH))
{ {
Task.Run(() => LogUtil.info("开始出口AGV满料串取出流程");
handleAgv = Task.Run(() =>
{ {
InCalling = true; InCalling = true;
//请求AGV代码放这里 //请求AGV代码放这里
...@@ -252,22 +274,26 @@ namespace AutoScanAndLabel.UC ...@@ -252,22 +274,26 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);//等待agv到位后执行,启动料串离开 if (InCalling)
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L50_OutShelf);//等待agv到位后执行,启动料串离开
ShelfEnterAgv(); ShelfEnterAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L50_OutShelf) while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L50_OutShelf)
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
//通知agv上料结束, 也可以把上料结束的代码放到L50_OutShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到L50_OutShelf的结束步骤里去
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
ToStandby(); ToStandby();
InCalling = false; InCalling = false;
...@@ -276,6 +302,7 @@ namespace AutoScanAndLabel.UC ...@@ -276,6 +302,7 @@ namespace AutoScanAndLabel.UC
else else
MessageBox.Show(crc.GetString("Res0081", "当前没有料串不能请求取料串")); MessageBox.Show(crc.GetString("Res0081", "当前没有料串不能请求取料串"));
} }
Task handleAgv = null;
private void button_leftneedempty_Click(object sender, EventArgs e) private void button_leftneedempty_Click(object sender, EventArgs e)
{ {
...@@ -284,14 +311,15 @@ namespace AutoScanAndLabel.UC ...@@ -284,14 +311,15 @@ namespace AutoScanAndLabel.UC
MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv")); MessageBox.Show(crc.GetString("Res0079", "机器尚未启动不能呼叫Agv"));
return; return;
} }
if (InCalling) if (!canCall())
{ {
MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫")); MessageBox.Show(crc.GetString("Res0035", "已呼叫Agv,不能重复呼叫"));
return; return;
} }
if (RobotManage.mainMachine.IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.LOW)) if (RobotManage.mainMachine.IOValue(IO_Type.LeftEnd_Check).Equals(IO_VALUE.LOW))
{ {
Task.Run(() => LogUtil.info("开始出口空料串送入流程");
handleAgv = Task.Run(() =>
{ {
InCalling = true; InCalling = true;
//请求AGV代码放这里 //请求AGV代码放这里
...@@ -299,21 +327,25 @@ namespace AutoScanAndLabel.UC ...@@ -299,21 +327,25 @@ namespace AutoScanAndLabel.UC
//等待agv到位 //等待agv到位
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L60_InShelf);//等待agv到位后执行,启动进入 if (InCalling)
RobotManage.mainMachine.LeftMoveInfo.NewMove(MoveStep.L60_InShelf);//等待agv到位后执行,启动进入
ShelfOutAgv(); ShelfOutAgv();
while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L60_InShelf) while (RobotManage.mainMachine.LeftMoveInfo.MoveStep >= MoveStep.L60_InShelf)
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
//通知agv上料结束, 也可以把上料结束的代码放到 L60_InShelf的结束步骤里去 //通知agv上料结束, 也可以把上料结束的代码放到 L60_InShelf的结束步骤里去
while (!WaitMissionOk()) while (!WaitMissionOk())
{ {
//Task.Delay(1000).Wait(); if (!InCalling)
Thread.Sleep(1000); return;
waitTmie();
} }
ToStandby(); ToStandby();
InCalling = false; InCalling = false;
...@@ -341,6 +373,7 @@ namespace AutoScanAndLabel.UC ...@@ -341,6 +373,7 @@ namespace AutoScanAndLabel.UC
private void button2_Click(object sender, EventArgs e) private void button2_Click(object sender, EventArgs e)
{ {
InCalling = false; InCalling = false;
LogUtil.info("重置呼叫");
} }
} }
} }
\ No newline at end of file \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!