Commit 55fab928 LN

送出料架需要等待agvReady

1 个父辈 810fa969
......@@ -62,6 +62,11 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = IOValue(wait.IoType).Equals(wait.IoValue);
int timeOutMs = Config.IOSingle_TimerOut;
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_07_WaitInLineSingle)||
MoveInfo.MoveStep.Equals(StoreMoveStep.BI_04_WaitTakeSingle))
{
timeOutMs = 30000;
}
if ((!wait.IsEnd) && span.TotalMilliseconds > timeOutMs && NoAlarm())
{
ConfigIO io = Config.getWaitIO(wait.IoType);
......@@ -111,7 +116,7 @@ namespace OnlineStore.DeviceLibrary
if (!wait.IsEnd && span.TotalSeconds > 10)
{
//如果是等待AGV到达,等待有料架信号也算结束
if (wait.AgvAction.Equals((int)ClientAction.Arrive) && MoveInfo.MoveStep.Equals(StoreMoveStep.BI_01_ReadyShelf))
if (wait.AgvAction.Equals((int)ClientAction.Arrive) && MoveInfo.MoveStep.Equals(StoreMoveStep.BI_00_ReadyShelf))
{
if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.HIGH))
{
......@@ -124,14 +129,14 @@ namespace OnlineStore.DeviceLibrary
wait.IsEnd = true;
}
}
else if (wait.AgvAction.Equals((int)ClientAction.FinishLeave))
{
if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW))
{
LogInfo("等待agv离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待");
wait.IsEnd = true;
}
}
//else if (wait.AgvAction.Equals((int)ClientAction.FinishLeave))
//{
// if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW))
// {
// LogInfo("等待agv离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待");
// wait.IsEnd = true;
// }
//}
}
}
if (wait.IsEnd)
......@@ -252,7 +257,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(StoreMoveType.InStore, new InOutParam());
MoveInfo.MoveParam.MoveP = new LineMoveP(Config);
MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
MoveInfo.NextMoveStep(StoreMoveStep.BI_02_DoorOpen);
MoveInfo.NextMoveStep(StoreMoveStep.BI_01_DoorOpen);
LogInfo(" 空闲中,检测到入料口有料架,启动料架入库 " + MoveInfo.SLog + "");
// CylinderMove(MoveInfo, IO_Type.EntranceDoor_Close, IO_Type.EntranceDoor_Open);
// DoorBean.StartOpen(MoveInfo);
......@@ -272,7 +277,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(StoreMoveType.InStore, new InOutParam());
MoveInfo.MoveParam.MoveP = new LineMoveP(Config);
MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
MoveInfo.NextMoveStep(StoreMoveStep.BI_02_DoorOpen);
MoveInfo.NextMoveStep(StoreMoveStep.BI_01_DoorOpen);
DoorBean.StartOpen(MoveInfo);
}
......@@ -735,7 +740,7 @@ namespace OnlineStore.DeviceLibrary
//当前无料架,或料架位置为空
if ((IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && MoveInfo.MoveParam.NeedEnterShelf) || MoveInfo.MoveParam.ShelfPosID.Equals(""))
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_01_ReadyShelf);
MoveInfo.NextMoveStep(StoreMoveStep.BI_00_ReadyShelf);
InOutStoreLog("出库 " + MoveInfo.SLog + ": 通知agv调度准备带料架的agv,等待agv到达或检测到料架信号,进出轴到P1");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
//需要先叫agv到达
......
......@@ -32,7 +32,7 @@ namespace OnlineStore.DeviceLibrary
instoreShelf = false;
moveName = "空料架进入";
}
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_01_ReadyShelf))
if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_00_ReadyShelf))
{
if (IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.HIGH))
{
......@@ -46,12 +46,16 @@ namespace OnlineStore.DeviceLibrary
{
// MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
InOutStoreLog(moveName + MoveInfo.SLog + " agv已到达,打开入料口移门");
MoveInfo.NextMoveStep(StoreMoveStep.BI_02_DoorOpen);
MoveInfo.NextMoveStep(StoreMoveStep.BI_01_DoorOpen);
DoorBean.StartOpen(MoveInfo);
}
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_02_DoorOpen))
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_01_DoorOpen))
{
//}
//else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_02_WaitReady))
//{
MoveInfo.NextMoveStep(StoreMoveStep.BI_03_LineRun);
InOutStoreLog(moveName + MoveInfo.SLog + "调用AgvClient.MayEnter,线体正转,等待LineIn_Check信号");
AgvClient.SetStatus(Config.AgvNodeName,"","",ClientAction.MayEnter,ClientLevel.High);
......@@ -108,9 +112,9 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_06_DoorClose))
{
MoveInfo.NextMoveStep(StoreMoveStep.BI_07_LineRun);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(7000));
InOutStoreLog(moveName + MoveInfo.SLog + "继续转动 7000");
LineRun();
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(7000));
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_07_LineRun))
{
......@@ -195,9 +199,10 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_02_LocatinDown))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_03_WaitArrive);
MoveInfo.TimeOutSeconds = 180;
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(180000));
InOutStoreLog(moveName + MoveInfo.SLog + ":再次调用 NeedLeave["+CurrShelfID+"],等待Agv到达 ,最多等待180000");
InOutStoreLog(moveName + MoveInfo.SLog + ":再次调用 NeedLeave["+CurrShelfID+ "],等待Agv " + Config.AgvNodeName + " Arrive ,最多等待180000");
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.NeedLeave, ClientLevel.Low);
//等待agv到达
MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Arrive));
......@@ -211,66 +216,69 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StoreMoveStep.BS_04_DoorOpen);
InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,打开入料口移门");
DoorBean.StartOpen(MoveInfo);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
//InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,rfid【" + CurrShelfID + "】,调用AgvClient.MayOut,线体开始反转");
////TODO AGV到达,发送料架信息,是否需要重新读取?
//AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave, ClientLevel.High);
//LineBackRun();
}
else
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_LineBackRun);
MoveInfo.NextMoveStep(StoreMoveStep.BS_06_LineBackRun);
//如果agv未到达,直接结束
MoveEndToRuningStatus();
EmprtShelfList = new ConcurrentQueue<string>();
InOutStoreLog(moveName + MoveInfo.SLog + ":等待agv超时,直接结束");
InOutStoreLog(moveName + MoveInfo.SLog + ":等待Agv " + Config.AgvNodeName + " Arrive超时,直接结束");
}
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_04_DoorOpen))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_LineBackRun);
MoveInfo.NextMoveStep(StoreMoveStep.BS_05_WaitReady);
MoveInfo.TimeOutSeconds = 120;
InOutStoreLog(moveName + MoveInfo.SLog + ":等待agv "+Config.AgvNodeName+" Ready");
//等待agv到达
MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction((int)ClientAction.Ready));
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_05_WaitReady))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_06_LineBackRun);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
InOutStoreLog(moveName + MoveInfo.SLog + ":移门已打开,调用MayLeave[" + CurrShelfID + "] ,线体开始反转");
InOutStoreLog(moveName + MoveInfo.SLog + ":agv " + Config.AgvNodeName + " Ready,调用MayLeave[" + CurrShelfID + "] ,线体开始反转");
//TODO AGV到达,发送料架信息,是否需要重新读取?
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave, ClientLevel.High);
LineBackRun();
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_05_LineBackRun))
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_06_LineBackRun))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_06_WaitInLineSingle);
MoveInfo.NextMoveStep(StoreMoveStep.BS_07_WaitInLineSingle);
InOutStoreLog(moveName + MoveInfo.SLog + ":等待取料工位无信号,入料口有信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineTake_Check, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.HIGH));
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_06_WaitInLineSingle))
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_07_WaitInLineSingle))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_07_WaitTime);
MoveInfo.NextMoveStep(StoreMoveStep.BS_08_WaitTime);
InOutStoreLog(moveName + MoveInfo.SLog + ":再转动3000时间, 等待入料口无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineIn_Check, IO_VALUE.LOW));
//等到agv离开
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(AGVAction.FinishOut));
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_07_WaitTime))
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_08_WaitTime))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_08_WaitAGVLeave);
MoveInfo.NextMoveStep(StoreMoveStep.BS_09_WaitAGVLeave);
InOutStoreLog(moveName + MoveInfo.SLog + ":同时等待 AGV离开,最多等待5000 ");
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(action.FinishOut));
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_08_WaitAGVLeave))
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_09_WaitAGVLeave))
{
MoveInfo.NextMoveStep(StoreMoveStep.BS_09_CloseDoor);
MoveInfo.NextMoveStep(StoreMoveStep.BS_10_CloseDoor);
InOutStoreLog(moveName + MoveInfo.SLog + ":停止线体转动,关闭仓门 ,发送FinishLeave ,等待最少5000");
AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.FinishLeave, ClientLevel.High);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
LineStop();
DoorBean.StartClose(MoveInfo);
}
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_09_CloseDoor))
else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BS_10_CloseDoor))
{
//结束
MoveEndToRuningStatus();
......
......@@ -166,12 +166,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 通知agv准备带料架agv
/// </summary>
BI_01_ReadyShelf = 1001,
BI_00_ReadyShelf = 1000,
/// <summary>
/// 料架入库:入料口移门打开
/// </summary>
BI_02_DoorOpen = 1002,
BI_01_DoorOpen = 1001,
/// <summary>
/// 料架入库:等待agvReady
/// </summary>
BI_02_WaitReady=1002,
/// <summary>
/// 料架入库:线体正转,等待入料口检测到信号
/// </summary>
......@@ -431,37 +434,29 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
BS_04_DoorOpen = 4004,
/// <summary>
/// 送出空料架:等待agvReady
/// </summary>
BS_05_WaitReady=4005,
/// <summary>
/// 送出空料架:线体反转
/// </summary>
BS_05_LineBackRun = 4005,
BS_06_LineBackRun = 4006,
/// <summary>
/// 送出空料架:等待取料工位无信号,入料口有信号
/// </summary>
BS_06_WaitInLineSingle = 4006,
BS_07_WaitInLineSingle = 4007,
/// <summary>
/// 送出空料架:再转动3000时间
/// </summary>
BS_07_WaitTime = 4007,
BS_08_WaitTime = 4008,
/// <summary>
/// 送出空料架:等待AGV离开后关闭仓门
/// </summary>
BS_08_WaitAGVLeave = 4008,
BS_09_WaitAGVLeave = 4009,
/// <summary>
/// 送出空料架:关闭仓门
/// </summary>
BS_09_CloseDoor = 4009,
///// <summary>
///// 送出空料架:停止转动
///// </summary>
//BS_07_LineStop= 4007,
///// <summary>
///// 送出空料架:通知调度系统拿走
///// </summary>
//BS_08_CallAGV = 4008,
///// <summary>
///// 送出空料架:关闭仓门
///// </summary>
//BS_09_CloseDoor= 4009,
BS_10_CloseDoor = 4010,
#endregion
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!