Commit 338752ba 张东亮

存储机构压紧轴回原时旋转轴确保在水平、优先出库限制取消、入料机构回原时如果夹爪有料,回原后放到NG箱、入库扫到相同条码时如果缓存口有相同缓存信息认为上一次抓料失…

…败,清除缓存、入料机构从缓存口抓料添加3次重试抓取
1 个父辈 0fd93eeb
...@@ -188,12 +188,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -188,12 +188,14 @@ namespace OnlineStore.DeviceLibrary
/// <summary> /// <summary>
/// BOX复位:料斗拉取升降轴、AB面压紧轴返回原点 /// BOX复位:料斗拉取升降轴、AB面压紧轴返回原点
/// </summary> /// </summary>
BOX_H04_PullAxis_Updown_ABComAxis_Home, BOX_H04_PullAxis_Updown_Home,
/// <summary> /// <summary>
/// BOX复位:AB面移栽x轴原点返回 /// BOX复位:AB面移栽x轴原点返回
/// </summary> /// </summary>
BOX_H05_XAxis_AB_UpDown_Home, BOX_H05_XAxis_AB_UpDown_Home,
BOX_H05_1_UpdownToP1, BOX_H05_1_UpdownToP1,
BOX_H05_2_MiddleAxisToP1,
BOX_H05_3_ComAxis_Home,
/// <summary> /// <summary>
/// BOX复位:行走机构、移栽升降轴、AB面移栽旋转轴原点返回 /// BOX复位:行走机构、移栽升降轴、AB面移栽旋转轴原点返回
/// </summary> /// </summary>
......
...@@ -660,15 +660,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -660,15 +660,13 @@ namespace OnlineStore.DeviceLibrary
PullAxis_Inout.HomeMove(MoveInfo); PullAxis_Inout.HomeMove(MoveInfo);
break; break;
case StepEnum.BOX_H03_PullAxis_InoutHome: case StepEnum.BOX_H03_PullAxis_InoutHome:
MoveInfo.NextMoveStep(StepEnum.BOX_H04_PullAxis_Updown_ABComAxis_Home); MoveInfo.NextMoveStep(StepEnum.BOX_H04_PullAxis_Updown_Home);
LogInfo($"复位 {MoveInfo.SLog}:抽屉拉取升降轴、AB面压紧轴回原点"); LogInfo($"复位 {MoveInfo.SLog}:抽屉拉取升降轴");
//if (!IsMoveAxisInSafePos()) //if (!IsMoveAxisInSafePos())
// MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_SafePos, Config.MoveAxis_P1_Speed); // MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_SafePos, Config.MoveAxis_P1_Speed);
PullAxis_Updown.HomeMove(MoveInfo); PullAxis_Updown.HomeMove(MoveInfo);
ComAxis_A.HomeMove(MoveInfo);
ComAxis_B.HomeMove(MoveInfo);
break; break;
case StepEnum.BOX_H04_PullAxis_Updown_ABComAxis_Home: case StepEnum.BOX_H04_PullAxis_Updown_Home:
MoveInfo.NextMoveStep(StepEnum.BOX_H05_XAxis_AB_UpDown_Home); MoveInfo.NextMoveStep(StepEnum.BOX_H05_XAxis_AB_UpDown_Home);
LogInfo($"复位 {MoveInfo.SLog}:AB面移栽X轴回原点、移栽升降轴回原"); LogInfo($"复位 {MoveInfo.SLog}:AB面移栽X轴回原点、移栽升降轴回原");
XAxis_A.HomeMove(MoveInfo); XAxis_A.HomeMove(MoveInfo);
...@@ -683,12 +681,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -683,12 +681,23 @@ namespace OnlineStore.DeviceLibrary
MiddleAxis_B.HomeMove(MoveInfo); MiddleAxis_B.HomeMove(MoveInfo);
break; break;
case StepEnum.BOX_H05_1_UpdownToP1: case StepEnum.BOX_H05_1_UpdownToP1:
MoveInfo.NextMoveStep(StepEnum.BOX_H06_1_OtherAxis_Home); MoveInfo.NextMoveStep(StepEnum.BOX_H05_2_MiddleAxisToP1);
LogInfo($"复位 {MoveInfo.SLog}:料斗升降和移栽升降到待机点"); LogInfo($"复位 {MoveInfo.SLog}:料斗升降和移栽升降到待机点");
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P1, Config.Updown_P1_Speed); UpdownAxis.AbsMove(MoveInfo, Config.Updown_P1, Config.Updown_P1_Speed);
PullAxis_Updown.AbsMove(MoveInfo, Config.PullAxis_Updown_P1, Config.PullAxis_Updown_P1_Speed); PullAxis_Updown.AbsMove(MoveInfo, Config.PullAxis_Updown_P1, Config.PullAxis_Updown_P1_Speed);
break; break;
case StepEnum.BOX_H05_2_MiddleAxisToP1:
MoveInfo.NextMoveStep(StepEnum.BOX_H05_3_ComAxis_Home);
LogInfo($"复位 {MoveInfo.SLog}:AB面移栽旋转轴返回水平点P2");
MiddleAxis_A.AbsMove(MoveInfo, Config.MiddleAxis_A_P2, Config.MiddleAxis_A_P2_Speed);
MiddleAxis_B.AbsMove(MoveInfo, Config.MiddleAxis_B_P2, Config.MiddleAxis_B_P2_Speed);
break;
case StepEnum.BOX_H05_3_ComAxis_Home:
MoveInfo.NextMoveStep(StepEnum.BOX_H06_1_OtherAxis_Home);
LogInfo($"复位 {MoveInfo.SLog}:AB面压紧轴回原点");
ComAxis_A.HomeMove(MoveInfo);
ComAxis_B.HomeMove(MoveInfo);
break;
case StepEnum.BOX_H06_1_OtherAxis_Home: case StepEnum.BOX_H06_1_OtherAxis_Home:
MoveInfo.NextMoveStep(StepEnum.BOX_H06_2_OtherAxis_Home); MoveInfo.NextMoveStep(StepEnum.BOX_H06_2_OtherAxis_Home);
//开门 //开门
...@@ -808,12 +817,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -808,12 +817,12 @@ namespace OnlineStore.DeviceLibrary
int SigLastTime = 7;//5秒 int SigLastTime = 7;//5秒
protected override void OnTimerProcess() protected override void OnTimerProcess()
{ {
bool isRunning = runStatus.Equals(RunStatus.Runing); //bool isRunning = runStatus.Equals(RunStatus.Runing);
if (isRunning && ExecuteOutListProcess()) //if (isRunning && ExecuteOutListProcess())
{ //{
LogInfo("优先出库执行"); // LogInfo("优先出库执行");
return; // return;
} //}
//if (!runStatus.Equals(RunStatus.Runing)) //if (!runStatus.Equals(RunStatus.Runing))
// return; // return;
TimeSpan timeSpanA = DateTime.Now - dtUpperA; TimeSpan timeSpanA = DateTime.Now - dtUpperA;
......
using CodeLibrary; using OnlineStore.DeviceLibrary.deviceLibrary;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary.deviceLibrary;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
using System; using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms.VisualStyles;
namespace OnlineStore.DeviceLibrary namespace OnlineStore.DeviceLibrary
{ {
......
...@@ -1407,10 +1407,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -1407,10 +1407,10 @@ namespace OnlineStore.DeviceLibrary
public bool CloseOutStoreCheck = false; public bool CloseOutStoreCheck = false;
public override bool StartOutstore(InOutParam param) public override bool StartOutstore(InOutParam param)
{ {
if (InDoorSigCheck()) //if (InDoorSigCheck())
{ //{
return false; // return false;
} //}
if (!CloseOutStoreCheck) if (!CloseOutStoreCheck)
{ {
if (!OutDoorCheck(param)) if (!OutDoorCheck(param))
......
...@@ -218,8 +218,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -218,8 +218,10 @@ namespace OnlineStore.DeviceLibrary
OnlyResetInputAxis = false; OnlyResetInputAxis = false;
LogInfo($"复位 {MoveInfo.SLog} :批量轴开始复位"); LogInfo($"复位 {MoveInfo.SLog} :批量轴开始复位");
} }
/// <summary>
/// 复位时,是否有夹爪气缸夹住了料盘
/// </summary>
bool clampHasReelWhen = false;
protected override void ResetProcess() protected override void ResetProcess()
{ {
if (MoveInfo.IsInWait) if (MoveInfo.IsInWait)
...@@ -359,13 +361,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -359,13 +361,23 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.IR05_UpdownHome)) else if (MoveInfo.IsStep(StepEnum.IR05_UpdownHome))
{ {
IR06_UpdownToP1(); IR06_UpdownToP1();
clampHasReelWhen = false;
} }
else if (MoveInfo.IsStep(StepEnum.IR06_UpdownToP1)) else if (MoveInfo.IsStep(StepEnum.IR06_UpdownToP1))
{ {
if (CheckClampHasReel())
{
clampHasReelWhen = true;
LogInfo($"复位{MoveInfo.SLog}:夹爪气缸有料,需要放到NG");
}
else
{
MoveInfo.NextMoveStep(StepEnum.IR07_ClampRelax); MoveInfo.NextMoveStep(StepEnum.IR07_ClampRelax);
LogInfo($"复位{MoveInfo.SLog}:夹爪气缸放松"); LogInfo($"复位{MoveInfo.SLog}:夹爪气缸放松");
ClampRelax(MoveInfo, MoveInfo.MoveParam.PosInfo.barcode); ClampRelax(MoveInfo, MoveInfo.MoveParam.PosInfo.barcode);
} }
}
else if (MoveInfo.IsStep(StepEnum.IR07_ClampRelax)) else if (MoveInfo.IsStep(StepEnum.IR07_ClampRelax))
{ {
MoveInfo.NextMoveStep(StepEnum.IR08_WaitBatchMove); MoveInfo.NextMoveStep(StepEnum.IR08_WaitBatchMove);
...@@ -388,6 +400,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -388,6 +400,17 @@ namespace OnlineStore.DeviceLibrary
LogInfo("复位完成"); LogInfo("复位完成");
runStatus = RunStatus.Runing; runStatus = RunStatus.Runing;
MoveInfo.EndMove(); MoveInfo.EndMove();
if(clampHasReelWhen)
{
runStatus = RunStatus.Busy;
MoveInfo.NewMove(MoveType.OutStore, new InOutParam());
MoveInfo.NextMoveStep(StepEnum.II81_MiddleToNg);
MoveLog($"出库{MoveInfo.SLog}: 回原夹爪有料 升降轴到P8(NG料区放料高点){Config.Updown_P8_NGH},旋转轴到P6(NG料区放料点){Config.Middle_P6_NG}");
MiddleAxis.AbsMove(MoveInfo, Config.Middle_P6_NG, Config.Middle_P6_Speed);
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P8_NGH, Config.Updown_P8_Speed);
clampHasReelWhen = false;
}
} }
else if (MoveInfo.IsTimeOut(180)) else if (MoveInfo.IsTimeOut(180))
{ {
......
using Asa; using Asa;
using log4net.Util;
using OnlineStore.Common; using OnlineStore.Common;
using OnlineStore.DeviceLibrary.deviceLibrary; using OnlineStore.DeviceLibrary.deviceLibrary;
using OnlineStore.LoadCSVLibrary; using OnlineStore.LoadCSVLibrary;
...@@ -132,6 +133,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -132,6 +133,14 @@ namespace OnlineStore.DeviceLibrary
} }
} }
/// <summary>
/// 检查夹爪是否有料
/// </summary>
/// <returns></returns>
bool CheckClampHasReel()
{
return IOValue(IO_Type.Feeding_Reel_13_Check).Equals(IO_VALUE.HIGH) || IOValue(IO_Type.Feeding_Reel_7_Check).Equals(IO_VALUE.HIGH);
}
#region 入库 #region 入库
private DateTime startInTime = DateTime.Now; private DateTime startInTime = DateTime.Now;
public override bool StartInstore(InOutParam param) public override bool StartInstore(InOutParam param)
...@@ -236,23 +245,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -236,23 +245,8 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsStep(StepEnum.II09_UpdownToP1)) else if (MoveInfo.IsStep(StepEnum.II09_UpdownToP1))
{ {
// MoveInfo.NextMoveStep(StepEnum.II09_MiddleToP1);
// MoveLog($"入库取料{shelf}{MoveInfo.SLog}: 旋转轴到待机点P1 {Config.Middle_P1}");
// UpdownAxis.AbsMove(MoveInfo, Config.Middle_P1, Config.Middle_P1_Speed);
//}else if (MoveInfo.IsStep(StepEnum.II09_MiddleToP1))
//{
//如果是测试,直接开始取目标位置
//if (MoveInfo.MoveParam.PosInfo.barcode.EndsWith("TEST"))
//{
// MoveLog($"入库取料{shelf}{MoveInfo.SLog}: 条码 {MoveInfo.MoveParam.PosInfo.barcode}为测试料,直接去目标位置");
// LastPosInfo = MoveInfo.MoveParam.PosInfo;
// StrartToTargetP();
//}
//else
{
II10_WaitAxisCheck(); II10_WaitAxisCheck();
} }
}
else if (MoveInfo.IsStep(StepEnum.II10_WaitAxisCheck)) else if (MoveInfo.IsStep(StepEnum.II10_WaitAxisCheck))
{ {
II10_WaitAxisCheck(); II10_WaitAxisCheck();
...@@ -281,7 +275,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -281,7 +275,7 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsTimeOut(60)) else if (MoveInfo.IsTimeOut(60))
{ {
SetWarnMsg(Name+" " + moveBean.Name + "获取料盘高度超时"); SetWarnMsg(Name + " " + moveBean.Name + "获取料盘高度超时");
} }
} }
else if (MoveInfo.IsStep(StepEnum.II13_GetPosId)) else if (MoveInfo.IsStep(StepEnum.II13_GetPosId))
...@@ -649,7 +643,22 @@ namespace OnlineStore.DeviceLibrary ...@@ -649,7 +643,22 @@ namespace OnlineStore.DeviceLibrary
MiddleAxis.AbsMove(MoveInfo, Config.Middle_P6_NG, Config.Middle_P6_Speed); MiddleAxis.AbsMove(MoveInfo, Config.Middle_P6_NG, Config.Middle_P6_Speed);
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P8_NGH, Config.Updown_P8_Speed); UpdownAxis.AbsMove(MoveInfo, Config.Updown_P8_NGH, Config.Updown_P8_Speed);
} }
else if (lastPosInfo.GetPosSide().Equals("A")) else
{
//检查暂存区是否有相同料
if (BufferDataManager.AInStoreInfo != null && BufferDataManager.AInStoreInfo.barcode.Equals(lastPosInfo.barcode) && IOValue(IO_Type.FeedingA_Instore_UpperArea_ReelCheck).Equals(IO_VALUE.LOW))
{
SServerManager.cancelPutInTask(Name, BufferDataManager.AInStoreInfo.barcode);
BufferDataManager.AInStoreInfo = null;
MoveLog($"入库取料{MoveInfo.SLog}: A上暂存区已有相同{lastPosInfo.ToStr()},且信号未亮,清除A上暂存区");
}
else if (BufferDataManager.BInStoreInfo != null && BufferDataManager.BInStoreInfo.barcode.Equals(lastPosInfo.barcode) && IOValue(IO_Type.FeedingB_Instore_UpperArea_ReelCheck).Equals(IO_VALUE.LOW))
{
SServerManager.cancelPutInTask(Name, BufferDataManager.BInStoreInfo.barcode);
BufferDataManager.BInStoreInfo = null;
MoveLog($"入库取料{MoveInfo.SLog}: A上暂存区已有相同{lastPosInfo.ToStr()},且信号未亮,清除B上暂存区");
}
if (lastPosInfo.GetPosSide().Equals("A"))
{ {
II41_MiddleToP4(); II41_MiddleToP4();
} }
...@@ -657,6 +666,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -657,6 +666,8 @@ namespace OnlineStore.DeviceLibrary
{ {
II61_MiddleToP5(); II61_MiddleToP5();
} }
}
TrayStartLeave(); TrayStartLeave();
} }
...@@ -916,6 +927,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -916,6 +927,10 @@ namespace OnlineStore.DeviceLibrary
BatchMove_B.GetTrayStartLeave(); BatchMove_B.GetTrayStartLeave();
} }
} }
/// <summary>
/// 夹爪重试次数
/// </summary>
int clampTryCount = 0;
protected override void OutstoreProcess() protected override void OutstoreProcess()
{ {
if (MoveInfo.IsInWait) if (MoveInfo.IsInWait)
...@@ -933,6 +948,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -933,6 +948,7 @@ namespace OnlineStore.DeviceLibrary
{ {
if (BufferDataManager.AOutStoreInfo != null) if (BufferDataManager.AOutStoreInfo != null)
{ {
clampTryCount = 0;
if (BufferDataManager.AOutStoreInfo.barcode.Equals(MoveInfo.MoveParam.PosInfo.barcode)) if (BufferDataManager.AOutStoreInfo.barcode.Equals(MoveInfo.MoveParam.PosInfo.barcode))
{ {
MoveInfo.NextMoveStep(StepEnum.IO02_UpdownToP6); MoveInfo.NextMoveStep(StepEnum.IO02_UpdownToP6);
...@@ -973,10 +989,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -973,10 +989,20 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsStep(StepEnum.IO06_UpdownToP6)) else if (MoveInfo.IsStep(StepEnum.IO06_UpdownToP6))
{ {
if (CheckClampHasReel() || clampTryCount > 3)
{
MoveInfo.NextMoveStep(StepEnum.IO07_1_InoutToP1); MoveInfo.NextMoveStep(StepEnum.IO07_1_InoutToP1);
clampTryCount = 0;
MoveLog($"出库A->{shelf}料串 {MoveInfo.SLog}: 进出轴到P1(待机点点){Config.Inout_P1}"); MoveLog($"出库A->{shelf}料串 {MoveInfo.SLog}: 进出轴到P1(待机点点){Config.Inout_P1}");
InOutAxis.AbsMove(MoveInfo, Config.Inout_P1, Config.Inout_P1_Speed); InOutAxis.AbsMove(MoveInfo, Config.Inout_P1, Config.Inout_P1_Speed);
} }
else
{
MoveInfo.NextMoveStep(StepEnum.IO03_InoutToP2);
clampTryCount++;
MoveLog($"出库A->{shelf}料串 {MoveInfo.SLog}: 未检测到料,重新抓取");
}
}
else if (MoveInfo.IsStep(StepEnum.IO07_1_InoutToP1)) else if (MoveInfo.IsStep(StepEnum.IO07_1_InoutToP1))
{ {
//判断料盘信号是否消失 //判断料盘信号是否消失
...@@ -987,7 +1013,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -987,7 +1013,7 @@ namespace OnlineStore.DeviceLibrary
ToNG(); ToNG();
return; return;
} }
else if(string.IsNullOrEmpty(MoveInfo.MoveParam.PosInfo.hSerial)) else if (string.IsNullOrEmpty(MoveInfo.MoveParam.PosInfo.hSerial))
{ {
ToUrgentBox(); ToUrgentBox();
return; return;
...@@ -1030,6 +1056,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1030,6 +1056,7 @@ namespace OnlineStore.DeviceLibrary
{ {
if (BufferDataManager.BOutStoreInfo != null) if (BufferDataManager.BOutStoreInfo != null)
{ {
clampTryCount = 0;
if (BufferDataManager.BOutStoreInfo.barcode.Equals(MoveInfo.MoveParam.PosInfo.barcode)) if (BufferDataManager.BOutStoreInfo.barcode.Equals(MoveInfo.MoveParam.PosInfo.barcode))
{ {
MoveInfo.NextMoveStep(StepEnum.IO12_UpdownToP12); MoveInfo.NextMoveStep(StepEnum.IO12_UpdownToP12);
...@@ -1071,16 +1098,26 @@ namespace OnlineStore.DeviceLibrary ...@@ -1071,16 +1098,26 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.IsStep(StepEnum.IO16_UpdownToP6)) else if (MoveInfo.IsStep(StepEnum.IO16_UpdownToP6))
{ {
if (CheckClampHasReel() || clampTryCount > 3)
{
MoveInfo.NextMoveStep(StepEnum.IO17_1_InoutToP1); MoveInfo.NextMoveStep(StepEnum.IO17_1_InoutToP1);
clampTryCount = 0;
MoveLog($"出库B->{shelf}料串 {MoveInfo.SLog}: j进出轴到P11(待机点){Config.Inout_P1}"); MoveLog($"出库B->{shelf}料串 {MoveInfo.SLog}: j进出轴到P11(待机点){Config.Inout_P1}");
InOutAxis.AbsMove(MoveInfo, Config.Inout_P1, Config.Inout_P1_Speed); InOutAxis.AbsMove(MoveInfo, Config.Inout_P1, Config.Inout_P1_Speed);
} }
else
{
MoveInfo.NextMoveStep(StepEnum.IO13_InoutToP3);
clampTryCount++;
MoveLog($"出库B->{shelf}料串 {MoveInfo.SLog}: 未检测到料,重新抓取");
}
}
else if (MoveInfo.IsStep(StepEnum.IO17_1_InoutToP1)) else if (MoveInfo.IsStep(StepEnum.IO17_1_InoutToP1))
{ {
//判断料盘信号是否消失 //判断料盘信号是否消失
if (IOValue(IO_Type.FeedingB_Outstore_UnderArea_ReelCheck).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.FeedingB_Outstore_UnderArea_ReelCheck).Equals(IO_VALUE.LOW))
{ {
if(MoveInfo.MoveParam.PosInfo.IsNG) if (MoveInfo.MoveParam.PosInfo.IsNG)
{ {
ToNG(); ToNG();
return; return;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!