Commit 3315e408 LN

1

1 个父辈 bf10fc86
......@@ -639,7 +639,7 @@ namespace OnlineStore.DeviceLibrary
internal void AgvReady(string nodeId, RFIDData data)
{
string logN = Name + "收到 AgvReady 事件 [" + nodeId + "] [" + data.ToData() + "] ";
string logN = Name + "收到 AgvReady 事件 [" + nodeId + "] [" + data.NumStr() + "] ";
if (nodeId.Equals(Config.AgvInName))
{
......@@ -667,47 +667,49 @@ namespace OnlineStore.DeviceLibrary
//AGV已到达,将料架送入AGV中
Task.Factory.StartNew(delegate
{
string logName = Name + "[" + Config.AgvOutName + "] 料架送入AGV ";
try
{
if (IOValue(IO_Type.SL_Out_Check).Equals(IO_VALUE.HIGH))
{
LogUtil.info(Name + "料架送入AGV 开始");
LogUtil.info(logName+"开始");
AgvClient.MayLeave(Config.AgvOutName);
ProcessShelfOut = true;
//出口阻挡下降,出口线体转动
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.HIGH);
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.HIGH);
if (WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 6000))
{
//再转动2000
Thread.Sleep(3000);
//停止转动 ,阻挡上升
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.LOW);
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.FinishLeave);
Task.Factory.StartNew(delegate
{
Thread.Sleep(2000);
AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.None);
});
ProcessShelfOut = false;
LogUtil.info(Name + "料架送入AGV 结束");
bool result = WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 60000);
if (!result)
{
LogUtil.info(logName + " 等待SL_Out_Check=LOW超时,等待3000后停止转动,发送FinishLeave");
}
else
{
LogUtil.info(Name + "料架送入AGV 等待SL_Out_Check=LOW超时");
{
LogUtil.info(logName + " 已收到SL_Out_Check=LOW ,等待3000后停止转动,发送FinishLeave");
}
//再转动2000
Thread.Sleep(3000);
//停止转动 ,阻挡上升
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.LOW);
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.FinishLeave);
Task.Factory.StartNew(delegate
{
Thread.Sleep(10000);
AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.None);
});
ProcessShelfOut = false;
LogUtil.info(logName + " 结束");
}
}
catch (TimeoutException te)
{
LogUtil.error("料架送入AGV 超时:" + te);
LogUtil.error(logName + " 超时:" + te);
}
catch (Exception ex)
{
LogUtil.error("料架送入AGV 出错:", ex);
LogUtil.error(logName + " 出错:", ex);
}
finally
{
......@@ -717,14 +719,15 @@ namespace OnlineStore.DeviceLibrary
});
}
internal void ShelfEnterProcess()
{
{
Task.Factory.StartNew(delegate
{
string logName = Name + "AGV料架进入 [" + Config.AgvInName + "] ";
try
{
if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.LOW))
{
LogUtil.info(Name + "AGV料架进入 开始");
LogUtil.info(logName+ " 开始");
AgvClient.MayEnter(Config.AgvInName);
ProcessShelfEnter = true;
////进料阻挡上升
......@@ -734,36 +737,37 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
//等待进料检测信号
if (WaitIo(IO_Type.SL_Entry_Check, IO_VALUE.HIGH, 5000))
{
bool result = WaitIo(IO_Type.SL_Entry_Check, IO_VALUE.HIGH, 60000);
//等待200毫秒后停止转动
Thread.Sleep(3000);
IOMove(IO_Type.SL_Line_Run, IO_VALUE.LOW);
//料架可离开
AgvClient.FinishEnter(Config.AgvInName);
Task.Factory.StartNew(delegate
{
Thread.Sleep(2000);
AgvClient.SetStatus(Config.AgvInName, "", ClientAction.None);
});
ProcessShelfEnter = false;
LogUtil.info(Name + "AGV料架进入 结束");
if (!result)
{
LogUtil.info(logName +" 等待 SL_Stop_Check=High 超时,等待3000后停止转动,发送 FinishEnter");
}
else
{
LogUtil.info(Name + "AGV料架进入 等待SL_Stop_Check=High超时");
LogUtil.info(logName + "已收到 SL_Stop_Check=High ,等待3000后停止转动,发送 FinishEnter");
}
//等待200毫秒后停止转动
Thread.Sleep(3000);
IOMove(IO_Type.SL_Line_Run, IO_VALUE.LOW);
//料架可离开
AgvClient.FinishEnter(Config.AgvInName);
Task.Factory.StartNew(delegate
{
Thread.Sleep(10000);
AgvClient.SetStatus(Config.AgvInName, "", ClientAction.None);
});
ProcessShelfEnter = false;
LogUtil.info(logName + " 结束");
}
}
catch (TimeoutException te)
{
LogUtil.error("AGV料架进入 超时:" + te);
LogUtil.error(logName + " 超时:" + te);
}
catch (Exception ex)
{
LogUtil.error("AGV料架进入 出错:", ex);
LogUtil.error(logName + " 出错:", ex);
}
finally
{
......
......@@ -446,11 +446,20 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 阻塞等待IO信号,等到返回true,未等到返回false
/// </summary>c
public bool WaitIo(string ioType, IO_VALUE value, int timeOut,string errName="")
public bool WaitIo(string ioType, IO_VALUE value, int timeOut, string errName = "")
{
return WaitUtil.Wait(timeOut, delegate () {
return value.Equals(IOValue(ioType));
},errName);
try
{
return WaitUtil.Wait(timeOut, delegate ()
{
return value.Equals(IOValue(ioType));
}, errName);
}
catch (Exception ex)
{
LogUtil.error(Name + "等待" + ioType + "=" + value + "超时:" + ex.ToString());
return false;
}
}
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!