Commit 3a0334d4 张东亮

出入库料盘检测、行走机构运行前后料盘检测

1 个父辈 d8e01861
...@@ -83,7 +83,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -83,7 +83,7 @@ namespace OnlineStore.DeviceLibrary
//有一个到位就算到位 //有一个到位就算到位
moveInfo.OneWaitCanEndStep = true; moveInfo.OneWaitCanEndStep = true;
} }
moveInfo.TimeOutSeconds = 5; moveInfo.TimeOutSeconds = 15;
} }
} }
......
...@@ -310,6 +310,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -310,6 +310,7 @@ namespace OnlineStore.DeviceLibrary
/// 料仓出库:取料完成,准备去出料口 /// 料仓出库:取料完成,准备去出料口
/// </summary> /// </summary>
SO_14_GetReels_Ready, SO_14_GetReels_Ready,
SO_14_GetReels_Ready1,
/// <summary> /// <summary>
/// 料仓出库:到料盘暂存区 /// 料仓出库:到料盘暂存区
/// 1. 移栽升降轴到A/B下暂存区放料高点 /// 1. 移栽升降轴到A/B下暂存区放料高点
...@@ -351,6 +352,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -351,6 +352,8 @@ namespace OnlineStore.DeviceLibrary
/// 料仓出库:取料完成,准备去出料口 /// 料仓出库:取料完成,准备去出料口
/// </summary> /// </summary>
SOB_14_GetReels_Ready, SOB_14_GetReels_Ready,
SOB_14_GetReels_Ready1,
/// <summary> /// <summary>
/// 料仓出库:到料盘暂存区 /// 料仓出库:到料盘暂存区
/// 1. 移栽升降轴到A/B下暂存区放料高点 /// 1. 移栽升降轴到A/B下暂存区放料高点
...@@ -450,6 +453,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -450,6 +453,7 @@ namespace OnlineStore.DeviceLibrary
/// 3. 料斗拉取升降轴到P4(料屉提取低点) /// 3. 料斗拉取升降轴到P4(料屉提取低点)
/// </summary> /// </summary>
SI_08_ToPosition, SI_08_ToPosition,
SI_08_ToPosition1,
/// <summary> /// <summary>
/// 料仓入库:到抽屉提取点,料斗拉取进出轴到P2(A/B面料屉提取点) /// 料仓入库:到抽屉提取点,料斗拉取进出轴到P2(A/B面料屉提取点)
/// </summary> /// </summary>
...@@ -466,7 +470,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -466,7 +470,7 @@ namespace OnlineStore.DeviceLibrary
/// 料仓入库:将抽屉降到库位提取点,料斗拉取升降轴到P2(料屉提取水平点),到位后检测X16-X30对应信号=1 /// 料仓入库:将抽屉降到库位提取点,料斗拉取升降轴到P2(料屉提取水平点),到位后检测X16-X30对应信号=1
/// </summary> /// </summary>
SI_12_DropTrayToPos, SI_12_DropTrayToPos,
SI_12_MiddleToP3,
/// <summary> /// <summary>
/// 料仓入库:进入库位中,移栽升降轴到A/B面料屉取放点 /// 料仓入库:进入库位中,移栽升降轴到A/B面料屉取放点
/// </summary> /// </summary>
......
...@@ -751,13 +751,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -751,13 +751,13 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.MoveParam.PosInfoBack.IsNG = true; MoveInfo.MoveParam.PosInfoBack.IsNG = true;
} }
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready); MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
MoveAxisToP1(); //MoveAxisToP1();
PullAxis_UpdownToP1(); PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10(); UpdownAxisTo_P4_P10();
if (MoveInfo.MoveParam.PosInfoBack == null) if (MoveInfo.MoveParam.PosInfoBack == null)
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]准备送往出料口。行走机构到待机点P1,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10"); LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]准备送往出料口,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
else else
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}],准备送往出料口。行走机构到待机点P1,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10"); LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}],准备送往出料口,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
} }
else if (IOValue(IO_Type.ForkB_Tray_Check).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.ForkB_Tray_Check).Equals(IO_VALUE.HIGH))
{ {
...@@ -766,14 +766,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -766,14 +766,14 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.MoveParam.PosInfo.IsNG = true; MoveInfo.MoveParam.PosInfo.IsNG = true;
MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfo.PosId); MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfo.PosId);
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready); MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
MoveAxisToP1(); // MoveAxisToP1();
PullAxis_UpdownToP1(); PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10(); UpdownAxisTo_P4_P10();
//BuffAreaOutstoreDoor(true); //BuffAreaOutstoreDoor(true);
if (MoveInfo.MoveParam.PosInfoBack == null) if (MoveInfo.MoveParam.PosInfoBack == null)
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}],准备送往出料口。行走机构到待机点P1,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10"); LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}],准备送往出料口,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
else else
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}],准备送往出料口。行走机构到待机点P1,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10"); LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}],准备送往出料口,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
} }
else else
{ {
......
...@@ -234,8 +234,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -234,8 +234,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveParam.PosInfoBack != null)//料叉有料,忽略当前入料口,直接入库 else if (MoveInfo.MoveParam.PosInfoBack != null)//料叉有料,忽略当前入料口,直接入库
{ {
MoveInfo.NextMoveStep(StepEnum.SI_07_MiddleToP3); MoveInfo.NextMoveStep(StepEnum.SI_07_MiddleToP3);
LogInfo($"入库 {MoveInfo.SLog}:入口料盘无入库信息,另一面料叉有料。先将当前移栽旋转轴到抽屉库位垂直取放料点P3,然后对另一面入库[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]"); LogInfo($"入库 {MoveInfo.SLog}:入口料盘无入库信息,另一面料叉有料,然后对另一面入库[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
MiddleAxis_To_P3();
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.MoveParam.PosInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy(); MoveInfo.MoveParam.PosInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy();
MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfo.PosId); MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfo.PosId);
...@@ -324,12 +323,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -324,12 +323,10 @@ namespace OnlineStore.DeviceLibrary
//去库位点 //去库位点
case StepEnum.SI_07_MiddleToP3: case StepEnum.SI_07_MiddleToP3:
MoveInfo.NextMoveStep(StepEnum.SI_08_ToPosition); MoveInfo.NextMoveStep(StepEnum.SI_08_ToPosition);
LogInfo($"入库 {MoveInfo.SLog}:运行到库位,移栽升降轴到料斗上方过渡点P6/P12,行走机构到存储库位取放点位P3," + LogInfo($"入库 {MoveInfo.SLog}:运行到库位,移栽升降轴到料斗上方过渡点P6/P12," +
$"料斗拉取升降轴到抽屉提取低点P4,料斗拉取进出轴到拍照点,移栽旋转轴到料斗库位垂直取放料点P3,移栽X轴到抽屉库位取放料点P3[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]"); $"料斗拉取升降轴到抽屉提取低点P4,料斗拉取进出轴到拍照点,移栽X轴到抽屉库位取放料点P3[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
XAxis_To_P3(); XAxis_To_P3();
PullAxis_Inout_To_Cam(); PullAxis_Inout_To_Cam();
MiddleAxis_To_P3();
MoveAxisToP3();
PullAxis_UpdownToLowP4(); PullAxis_UpdownToLowP4();
UpdownAxisTo_P6_P12(); UpdownAxisTo_P6_P12();
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000)); //MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
...@@ -341,6 +338,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -341,6 +338,19 @@ namespace OnlineStore.DeviceLibrary
return; return;
} }
ignoreCurFork = false; ignoreCurFork = false;
MoveInfo.NextMoveStep(StepEnum.SI_08_ToPosition1);
LogInfo($"入库 {MoveInfo.SLog}:运行到库位,行走机构到存储库位取放点位P3," +
$"[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
MoveAxisToP3();
break;
case StepEnum.SI_08_ToPosition1:
if (!CheckReel(true))
{
WarnMsg = $"未检测到{MoveInfo.MoveParam.PosInfo.GetPosSide()}面料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
MoveInfo.NextMoveStep(StepEnum.SI_09_ToTray); MoveInfo.NextMoveStep(StepEnum.SI_09_ToTray);
LogInfo($"入库 {MoveInfo.SLog}:到抽屉提取点,料斗拉取进出轴到抽屉提取点P2/P4[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]"); LogInfo($"入库 {MoveInfo.SLog}:到抽屉提取点,料斗拉取进出轴到抽屉提取点P2/P4[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
PullAxis_Inout_To_P2_P4(); PullAxis_Inout_To_P2_P4();
...@@ -373,6 +383,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -373,6 +383,17 @@ namespace OnlineStore.DeviceLibrary
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(trayRows[GetPosRow()], IO_VALUE.HIGH)); //MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(trayRows[GetPosRow()], IO_VALUE.HIGH));
break; break;
case StepEnum.SI_12_DropTrayToPos: case StepEnum.SI_12_DropTrayToPos:
MoveInfo.NextMoveStep(StepEnum.SI_12_MiddleToP3);
LogInfo($"入库 {MoveInfo.SLog}:移栽旋转轴到抽屉库位垂直取放料点P3[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
MiddleAxis_To_P3();
break;
case StepEnum.SI_12_MiddleToP3:
if (!CheckReel(true))
{
WarnMsg = $"未检测到{MoveInfo.MoveParam.PosInfo.GetPosSide()}面料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
MoveInfo.NextMoveStep(StepEnum.SI_13_GetReel); MoveInfo.NextMoveStep(StepEnum.SI_13_GetReel);
LogInfo($"入库 {MoveInfo.SLog}:进入库位中,移栽升降轴到抽屉取放点P7/P13[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]"); LogInfo($"入库 {MoveInfo.SLog}:进入库位中,移栽升降轴到抽屉取放点P7/P13[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
UpdownAxisToP7_P13(); UpdownAxisToP7_P13();
......
...@@ -232,16 +232,33 @@ namespace OnlineStore.DeviceLibrary ...@@ -232,16 +232,33 @@ namespace OnlineStore.DeviceLibrary
} }
//直接出库,执行该步骤的情况:1.另一个料叉有料;2.另一面有出库任务但出料口有料;3.另一面没有出库任务; //直接出库,执行该步骤的情况:1.另一个料叉有料;2.另一面有出库任务但出料口有料;3.另一面没有出库任务;
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready); MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
MoveAxisToP1();
PullAxis_UpdownToP1(); PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10(); UpdownAxisTo_P4_P10();
//BuffAreaOutstoreDoor(true); //BuffAreaOutstoreDoor(true);
if (MoveInfo.MoveParam.PosInfoBack == null) if (MoveInfo.MoveParam.PosInfoBack == null)
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口。行走机构到待机点P1,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10"); LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口。料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
else else
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}]取料完成,准备送往出料口。行走机构到待机点P1,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10"); LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}]取料完成,准备送往出料口,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
break; break;
case StepEnum.SO_14_GetReels_Ready: case StepEnum.SO_14_GetReels_Ready:
if (!CheckReel(true))
{
WarnMsg = $"未检测到{MoveInfo.MoveParam.PosInfo.GetPosSide()}面料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready1);
MoveAxisToP1();
LogInfo($"出库 {MoveInfo.SLog}:准备送往出料口。行走机构到待机点P1");
break;
case StepEnum.SO_14_GetReels_Ready1:
if (!CheckReel(true))
{
WarnMsg = $"未检测到{MoveInfo.MoveParam.PosInfo.GetPosSide()}面料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
//已出一边的料,切换到另一边 //已出一边的料,切换到另一边
MoveInfo.NextMoveStep(StepEnum.SO_15_ToBufferArea); MoveInfo.NextMoveStep(StepEnum.SO_15_ToBufferArea);
//LogInfo($"出库 {MoveInfo.SLog}:到暂存区出料口," + //LogInfo($"出库 {MoveInfo.SLog}:到暂存区出料口," +
...@@ -304,12 +321,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -304,12 +321,12 @@ namespace OnlineStore.DeviceLibrary
else else
{ {
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready); MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
LogInfo($"出库 {MoveInfo.SLog}:另一面料叉有料,开始出库,准备送往出料口。行走机构到待机点P1,料屉升降轴到P1点,移栽升降轴到下暂存区放料高点P4/P10[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]"); LogInfo($"出库 {MoveInfo.SLog}:另一面料叉有料,开始出库,准备送往出料口,料屉升降轴到P1点,移栽升降轴到下暂存区放料高点P4/P10[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.MoveParam.PosInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy(); MoveInfo.MoveParam.PosInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy();
MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfoBack.PosId); MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfoBack.PosId);
MoveInfo.MoveParam.PosInfoBack = null; MoveInfo.MoveParam.PosInfoBack = null;
MoveAxisToP1(); // MoveAxisToP1();
PullAxis_UpdownToP1(); PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10(); UpdownAxisTo_P4_P10();
} }
......
...@@ -22,11 +22,27 @@ namespace OnlineStore.DeviceLibrary ...@@ -22,11 +22,27 @@ namespace OnlineStore.DeviceLibrary
{ {
case StepEnum.SOB_14_GetReels_Ready: case StepEnum.SOB_14_GetReels_Ready:
//两侧已有同尺寸的料 //两侧已有同尺寸的料
MoveInfo.NextMoveStep(StepEnum.SOB_15_ToBufferArea); MoveInfo.NextMoveStep(StepEnum.SOB_14_GetReels_Ready1);
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口。行走机构到待机点P1,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10"); LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
MoveAxisToP1(); //MoveAxisToP1();
PullAxis_UpdownToP1(); PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10(); UpdownAxisTo_P4_P10();
// BuffAreaOutstoreDoor(true);
break;
case StepEnum.SOB_14_GetReels_Ready1:
if (!CheckBothReel(true))
{
WarnMsg = $"两面料叉上存在未检测到料盘,请检查";
return;
}
ignoreCurFork = false;
//两侧已有同尺寸的料
MoveInfo.NextMoveStep(StepEnum.SOB_15_ToBufferArea);
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口。行走机构到待机点P1");
MoveAxisToP1();
//PullAxis_UpdownToP1();
// UpdownAxisTo_P4_P10();
BuffAreaOutstoreDoor(true); BuffAreaOutstoreDoor(true);
break; break;
case StepEnum.SOB_15_ToBufferArea: case StepEnum.SOB_15_ToBufferArea:
...@@ -74,6 +90,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -74,6 +90,12 @@ namespace OnlineStore.DeviceLibrary
MoveAxisToP1(); MoveAxisToP1();
break; break;
case StepEnum.SOB_19_InOutBackFromBuff: case StepEnum.SOB_19_InOutBackFromBuff:
if (!CheckBothReel(false))
{
WarnMsg = $"两面料叉上还能检测到料盘,请检查";
return;
}
ignoreCurFork = false;
//出库料盘放置成功,将料盘信息写入对应出料口 //出库料盘放置成功,将料盘信息写入对应出料口
if (CheckASide()) if (CheckASide())
{ {
......
...@@ -595,6 +595,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -595,6 +595,19 @@ namespace OnlineStore.DeviceLibrary
return IOValue(IO_Type.ForkB_Tray_Check).Equals(hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW); return IOValue(IO_Type.ForkB_Tray_Check).Equals(hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW);
} }
} }
bool CheckBothReel(bool hasReel)
{
if (ignoreFork)
{
return true;//暂时屏蔽
}
if (ignoreCurFork)
{
return true;
}
return IOValue(IO_Type.ForkA_Tray_Check).Equals(hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW) && IOValue(IO_Type.ForkB_Tray_Check).Equals(hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW);
}
/// <summary> /// <summary>
/// 抽屉水平点,料斗拉取升降轴到料屉水平点P2 /// 抽屉水平点,料斗拉取升降轴到料屉水平点P2
/// </summary> /// </summary>
......
...@@ -1115,7 +1115,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1115,7 +1115,7 @@ namespace OnlineStore.DeviceLibrary
if (MiddleToShelf()) if (MiddleToShelf())
{ {
} }
else if (MoveInfo.IsTimeOut(60)) else if (MoveInfo.IsTimeOut(30))
{ {
MoveTimeOut(MoveInfo, "等待料串可放料"); MoveTimeOut(MoveInfo, "等待料串可放料");
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!