Commit f897fcb7 张东亮

1、料叉信号检测等到抽屉推入后检查,以便出现问题不好复位

2、复位结束后,料叉上有料当作NG处理,将料放到出料缓存区,送到NG料箱
1 个父辈 ec9ffcd0
......@@ -215,6 +215,10 @@ namespace OnlineStore.DeviceLibrary
BOX_R04_OtherAxisToP1,
#endregion
#region 清空料叉上的料
#endregion
#region 出库步骤 200开始
/// <summary>
/// 料仓出库:开始出库
......
......@@ -187,7 +187,7 @@ namespace OnlineStore.DeviceLibrary
return;
}
//若BOX和出料都没有在等待Io的过程中则此Io超时异常可能已经处理过
if (MoveInfo.MoveType.Equals(MoveType.None))
if (MoveInfo.IsInWait.Equals(false) && NoErrorAlarm())
{
LogUtil.info(Name + "清理信号超时报警【" + WarnMsg + "】 ");
alarmType = AlarmType.None;
......@@ -541,10 +541,6 @@ namespace OnlineStore.DeviceLibrary
{
isNeedAlarmLed = true;
}
else if (alarmType.Equals(AlarmType.None).Equals(false))
{
yellowMove = true;
}
......
......@@ -6,6 +6,8 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Policy;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
......@@ -669,11 +671,52 @@ namespace OnlineStore.DeviceLibrary
break;
case StepEnum.BOX_R04_OtherAxisToP1:
LogInfo($"复位 {MoveInfo.SLog}:所有轴到达待机位完成");
BuffAreaInstoreDoor(false);
BuffAreaOutstoreDoor(false);
SetBoxStatus(DeviceStatus.StoreOnline, RunStatus.Runing);
MoveInfo.EndMove();
if (IOValue(IO_Type.ForkA_Tray_Check).Equals(IO_VALUE.HIGH))
{
string posId = $"{CID}AA{1.ToString().PadLeft(2, '0')}{1.ToString().PadLeft(2, '0')}0101";
MoveInfo.MoveParam = new InOutParam(new InOutPosInfo("ResetNG_A", posId));
MoveInfo.MoveParam.PosInfo.IsNG = true;
MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfo.PosId);
if (IOValue(IO_Type.ForkB_Tray_Check).Equals(IO_VALUE.HIGH))
{
posId = $"{CID}BB{1.ToString().PadLeft(2, '0')}{1.ToString().PadLeft(2, '0')}0101";
MoveInfo.MoveParam.PosInfoBack = new InOutPosInfo("ResetNG_B",posId);
MoveInfo.MoveParam.PosInfoBack.IsNG = true;
}
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
MoveAxisToP1();
PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10();
if (MoveInfo.MoveParam.PosInfoBack == null)
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]准备送往出料口。行走机构到待机点P1,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
else
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}],准备送往出料口。行走机构到待机点P1,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
}
else if (IOValue(IO_Type.ForkB_Tray_Check).Equals(IO_VALUE.HIGH))
{
string posId = $"{CID}BB{1.ToString().PadLeft(2, '0')}{1.ToString().PadLeft(2, '0')}0101";
MoveInfo.MoveParam = new InOutParam(new InOutPosInfo("ResetNG_B", posId));
MoveInfo.MoveParam.PosInfo.IsNG = true;
MoveInfo.MoveParam.MoveP = new LineMoveP(Config, MoveInfo.MoveParam.PosInfo.PosId);
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
MoveAxisToP1();
PullAxis_UpdownToP1();
UpdownAxisTo_P4_P10();
//BuffAreaOutstoreDoor(true);
if (MoveInfo.MoveParam.PosInfoBack == null)
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}],准备送往出料口。行走机构到待机点P1,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
else
LogInfo($"复位完成 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}][{MoveInfo.MoveParam.PosInfoBack.ToStr()}],准备送往出料口。行走机构到待机点P1,抽屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
}
else
{
LogInfo($"复位 {MoveInfo.SLog}:所有轴到达待机位完成");
BuffAreaInstoreDoor(false);
BuffAreaOutstoreDoor(false);
SetBoxStatus(DeviceStatus.StoreOnline, RunStatus.Runing);
MoveInfo.EndMove();
}
break;
}
}
......@@ -809,7 +852,7 @@ namespace OnlineStore.DeviceLibrary
bool result = waitAOutStoreList.TryPeek(out param);
if (result && param != null)
{
bool rtn=StartExecuctOut(param);
bool rtn = StartExecuctOut(param);
if (rtn) waitAOutStoreList.TryDequeue(out _);
return;
}
......
......@@ -376,7 +376,6 @@ namespace OnlineStore.DeviceLibrary
//入库完成
SetBoxStatus(DeviceStatus.InStoreEnd, RunStatus.Busy, MoveInfo.MoveParam.PosInfo.PosId, MoveInfo.MoveParam.PosInfo.barcode);
executeTime = (DateTime.Now - startTime).TotalSeconds.ToString("f2");
AddReelCheck(false);
UpdownAxisTo_P6_P12();
break;
case StepEnum.SI_15_UpDownBack:
......@@ -428,7 +427,8 @@ namespace OnlineStore.DeviceLibrary
break;
case StepEnum.SI_18_PutTrayDown:
MoveInfo.NextMoveStep(StepEnum.SI_19_InoutBack);
LogInfo($"入库 {MoveInfo.SLog}:抽屉拉取进出轴到拍照点,同时检测{trayAColumns[GetPosColumn()]}=1[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
AddReelCheck(false);
LogInfo($"入库 {MoveInfo.SLog}:抽屉拉取进出轴到拍照点,检测料叉信号,同时检测{trayAColumns[GetPosColumn()]}=1[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
if (CheckASide())
{
if (!GetShieldState(sheidAColmns[GetPosColumn()]))
......
......@@ -101,7 +101,6 @@ namespace OnlineStore.DeviceLibrary
case StepEnum.SO_07_GetReel:
MoveInfo.NextMoveStep(StepEnum.SO_08_StartCompress);
LogInfo($"出库 {MoveInfo.SLog}:压紧轴开始缓慢夹取,移栽压紧轴到压紧点P3[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
AddReelCheck(true);
ComAxis_To_P3();
break;
case StepEnum.SO_08_StartCompress:
......@@ -159,7 +158,8 @@ namespace OnlineStore.DeviceLibrary
break;
case StepEnum.SO_12_PutTrayDown:
MoveInfo.NextMoveStep(StepEnum.SO_13_InoutBack);
LogInfo($"出库 {MoveInfo.SLog}:抽屉拉取进出轴到拍照点,同时检测{trayAColumns[GetPosColumn()]}=1 [{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
AddReelCheck(true);
LogInfo($"出库 {MoveInfo.SLog}:抽屉拉取进出轴到拍照点,检测料叉信号,同时检测{trayAColumns[GetPosColumn()]}=1 [{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
if (CheckASide())
{
if (!GetShieldState(sheidAColmns[GetPosColumn()]))
......
......@@ -542,6 +542,13 @@ namespace OnlineStore.DeviceLibrary
StartOutstore(param);
return true;
}
else if(posInfo.IsNG)
{
InOutParam param = new InOutParam(posInfo.ToCopy());
LogInfo($"{posType}物料{param.PosInfo.ToStr()},准备出库到NG箱");
StartOutstore(param);
return true;
}
if (moveBean.MoveInfo.MoveType == MoveType.None)
{
doorinfo = moveBean.doorInfo;
......
......@@ -483,7 +483,7 @@ namespace OnlineStore.DeviceLibrary
}
#endregion
#region 入料->NG上暂存区
#region 入料->NG
else if (MoveInfo.IsStep(StepEnum.II81_MiddleToNg))
{
MoveInfo.NextMoveStep(StepEnum.II82_InoutToP6);
......@@ -793,6 +793,14 @@ namespace OnlineStore.DeviceLibrary
#endregion
#region 出库
private void ToNG()
{
MoveInfo.NextMoveStep(StepEnum.II81_MiddleToNg);
MoveLog($"出库{MoveInfo.SLog}: NG料 升降轴到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);
}
private DateTime startOutTime = DateTime.Now;
public override bool StartOutstore(InOutParam param)
{
......@@ -890,7 +898,7 @@ namespace OnlineStore.DeviceLibrary
{
if (BufferDataManager.AOutStoreInfo != null)
{
if(BufferDataManager.AOutStoreInfo.barcode.Equals(MoveInfo.MoveParam.PosInfo.barcode))
if (BufferDataManager.AOutStoreInfo.barcode.Equals(MoveInfo.MoveParam.PosInfo.barcode))
{
MoveInfo.NextMoveStep(StepEnum.IO02_UpdownToP6);
MoveLog($"出库A->{shelf}料串 {MoveInfo.SLog}: 升降轴到P6(A下暂存区取料高点){Config.Updown_P6_AUnderH},旋转轴到P7(A下暂存区取料点){Config.Middle_P7_AUnder}");
......@@ -1017,6 +1025,11 @@ namespace OnlineStore.DeviceLibrary
//判断料盘信号是否消失
if (IOValue(IO_Type.FeedingB_Outstore_UnderArea_ReelCheck).Equals(IO_VALUE.LOW))
{
if(MoveInfo.MoveParam.PosInfo.IsNG)
{
ToNG();
return;
}
if (!MiddleToShelf())
{
MoveInfo.NextMoveStep(StepEnum.IO21_WaitShelfReady);
......@@ -1032,6 +1045,11 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IO17_WaitReelCheckLow))
{
if (MoveInfo.MoveParam.PosInfo.IsNG)
{
ToNG();
return;
}
if (!MiddleToShelf())
{
MoveInfo.NextMoveStep(StepEnum.IO21_WaitShelfReady);
......@@ -1127,6 +1145,63 @@ namespace OnlineStore.DeviceLibrary
}
#endregion
#region 出库->NG
else if (MoveInfo.IsStep(StepEnum.II81_MiddleToNg))
{
MoveInfo.NextMoveStep(StepEnum.II82_InoutToP6);
MoveLog($" 出料->NG箱 {MoveInfo.SLog}: 进出轴到P6(NG料区放料点){Config.Inout_P6}");
InOutAxis.AbsMove(MoveInfo, Config.Inout_P6, Config.Inout_P6_Speed);
}
else if (MoveInfo.IsStep(StepEnum.II82_InoutToP6))
{
TrayHasLeave();
MoveInfo.NextMoveStep(StepEnum.II83_UpdownToP9);
MoveLog($" 出料->NG箱 {MoveInfo.SLog}: 升降轴到P9(NG料区放料低点){Config.Updown_P9_NGL}");
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P9_NGL, Config.Updown_P9_Speed);
}
else if (MoveInfo.IsStep(StepEnum.II83_UpdownToP9))
{
MoveInfo.NextMoveStep(StepEnum.II84_ClampRelax);
MoveLog($" 出料->NG箱 {MoveInfo.SLog}: 夹爪放松");
ClampRelax(MoveInfo, MoveInfo.MoveParam.PosInfo.barcode);
}
else if (MoveInfo.IsStep(StepEnum.II84_ClampRelax))
{
MoveInfo.NextMoveStep(StepEnum.II85_UpdownToP8);
MoveLog($" 出料->NG箱 {MoveInfo.SLog}: 升降轴到P8(NG料区放料高点){Config.Updown_P8_NGH}");
UpdownAxis.AbsMove(MoveInfo, Config.Updown_P8_NGH, Config.Updown_P8_Speed);
}
else if (MoveInfo.IsStep(StepEnum.II85_UpdownToP8))
{
MoveInfo.NextMoveStep(StepEnum.II86_1_InoutToP1);
MoveLog($" 出料->NG箱 {MoveInfo.SLog}: 进出轴到P1(待机点){Config.Inout_P1}");
InOutAxis.AbsMove(MoveInfo, Config.Inout_P1, Config.Inout_P1_Speed);
}
else if (MoveInfo.IsStep(StepEnum.II86_1_InoutToP1))
{
if (shelf.Equals(1))
{
MoveLog($" 出料->NG箱放料结束");
MoveInfo.EndMove();
runStatus = RunStatus.Runing;
}
else
{
//旋转轴暂不回待机点
MoveInfo.NextMoveStep(StepEnum.II86_MiddleToP1);
MoveLog($" 出料->NG箱 {MoveInfo.SLog}: 旋转轴 到P1(待机点){Config.Middle_P1}");
MiddleAxis.AbsMove(MoveInfo, Config.Middle_P1, Config.Middle_P1_Speed);
}
}
else if (MoveInfo.IsStep(StepEnum.II86_MiddleToP1))
{
TimeSpan span = DateTime.Now - startInTime;
MoveLog($" 出料->NG箱放料结束,耗时【{FormUtil.GetSpanStr(span)}】");
MoveInfo.EndMove();
runStatus = RunStatus.Runing;
}
#endregion
}
private bool MiddleToShelf()
{
......
......@@ -34,3 +34,7 @@ PRO,0,提升轴上料扫码点_A侧,BatchAxisP4_A,0,,,,,,,,,,,,
PRO,0,提升轴上料扫码点_B侧,BatchAxisP4_B,0,,,,,,,,,,,,
PRO,0,提升上料轴P4速度/运动到扫码点速度,BatchAxis_P4Speed,5000,,,,,,,,,,,,
2023/8/8
1、料叉信号检测等到抽屉推入后检查,以便出现问题不好复位
2、复位结束后,料叉上有料当作NG处理,将料放到出料缓存区,送到NG料箱
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!