Commit 3315e408 LN

1

1 个父辈 bf10fc86
...@@ -639,7 +639,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -639,7 +639,7 @@ namespace OnlineStore.DeviceLibrary
internal void AgvReady(string nodeId, RFIDData data) 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)) if (nodeId.Equals(Config.AgvInName))
{ {
...@@ -667,47 +667,49 @@ namespace OnlineStore.DeviceLibrary ...@@ -667,47 +667,49 @@ namespace OnlineStore.DeviceLibrary
//AGV已到达,将料架送入AGV中 //AGV已到达,将料架送入AGV中
Task.Factory.StartNew(delegate Task.Factory.StartNew(delegate
{ {
string logName = Name + "[" + Config.AgvOutName + "] 料架送入AGV ";
try try
{ {
if (IOValue(IO_Type.SL_Out_Check).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.SL_Out_Check).Equals(IO_VALUE.HIGH))
{ {
LogUtil.info(Name + "料架送入AGV 开始"); LogUtil.info(logName+"开始");
AgvClient.MayLeave(Config.AgvOutName); AgvClient.MayLeave(Config.AgvOutName);
ProcessShelfOut = true; ProcessShelfOut = true;
//出口阻挡下降,出口线体转动 //出口阻挡下降,出口线体转动
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.HIGH); IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.HIGH);
IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.HIGH); IOMove(IO_Type.SL_OutLine_Run, IO_VALUE.HIGH);
if (WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 6000)) bool result = WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 60000);
{ if (!result)
//再转动2000 {
Thread.Sleep(3000); LogUtil.info(logName + " 等待SL_Out_Check=LOW超时,等待3000后停止转动,发送FinishLeave");
//停止转动 ,阻挡上升
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 结束");
} }
else 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) catch (TimeoutException te)
{ {
LogUtil.error("料架送入AGV 超时:" + te); LogUtil.error(logName + " 超时:" + te);
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("料架送入AGV 出错:", ex); LogUtil.error(logName + " 出错:", ex);
} }
finally finally
{ {
...@@ -717,14 +719,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -717,14 +719,15 @@ namespace OnlineStore.DeviceLibrary
}); });
} }
internal void ShelfEnterProcess() internal void ShelfEnterProcess()
{ {
Task.Factory.StartNew(delegate Task.Factory.StartNew(delegate
{ {
string logName = Name + "AGV料架进入 [" + Config.AgvInName + "] ";
try try
{ {
if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.LOW))
{ {
LogUtil.info(Name + "AGV料架进入 开始"); LogUtil.info(logName+ " 开始");
AgvClient.MayEnter(Config.AgvInName); AgvClient.MayEnter(Config.AgvInName);
ProcessShelfEnter = true; ProcessShelfEnter = true;
////进料阻挡上升 ////进料阻挡上升
...@@ -734,36 +737,37 @@ namespace OnlineStore.DeviceLibrary ...@@ -734,36 +737,37 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH); 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毫秒后停止转动 if (!result)
Thread.Sleep(3000); {
IOMove(IO_Type.SL_Line_Run, IO_VALUE.LOW); LogUtil.info(logName +" 等待 SL_Stop_Check=High 超时,等待3000后停止转动,发送 FinishEnter");
//料架可离开
AgvClient.FinishEnter(Config.AgvInName);
Task.Factory.StartNew(delegate
{
Thread.Sleep(2000);
AgvClient.SetStatus(Config.AgvInName, "", ClientAction.None);
});
ProcessShelfEnter = false;
LogUtil.info(Name + "AGV料架进入 结束");
} }
else 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) catch (TimeoutException te)
{ {
LogUtil.error("AGV料架进入 超时:" + te); LogUtil.error(logName + " 超时:" + te);
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("AGV料架进入 出错:", ex); LogUtil.error(logName + " 出错:", ex);
} }
finally finally
{ {
......
...@@ -446,11 +446,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -446,11 +446,20 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// 阻塞等待IO信号,等到返回true,未等到返回false /// 阻塞等待IO信号,等到返回true,未等到返回false
/// </summary>c /// </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 () { try
return value.Equals(IOValue(ioType)); {
},errName); 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!