增加周转吸头取料失败后,把料重新放回料盘

master
lhiven 1 year ago
parent d15e4f5f77
commit a475e32aee

@ -238,6 +238,11 @@ namespace Rs.MotionPlat.Flow
List<TurnoverTraySlot> untestSlots = TurnoverTrayManager.Instance.GetSlots(ETurnoverTraySlotType.WaitTest, ETurnoverTraySlotStatus.Have);
if (untestSlots != null && untestSlots.Count > 0)
{
undealTasks = LoadAndUnloadTask.Instance.GetTurnoverToTestTasks(ETaskDealStatus.Undeal);
if(TurnoverDumpFlow.Instance.Dump(ETrayType.Turnover, undealTasks.Select(t => t.FromIndex + 1).ToList()))
{
TurnoverDumpFlow.Instance.Wait();
}
bool exit = false;
while (!exit)
{
@ -1220,6 +1225,11 @@ namespace Rs.MotionPlat.Flow
List<TestTraySlot> testedSlots = TestTrayManager.Instance.GetSlots(ETestTraySlotStatus.Have);
if (testedSlots != null && testedSlots.Count > 0)
{
undealTasks = LoadAndUnloadTask.Instance.GetTestToTurnoverTasks(ETaskDealStatus.Undeal);
if(TurnoverDumpFlow.Instance.Dump(ETrayType.Test, undealTasks.Select(t => t.FromIndex + 1).ToList()))
{
TurnoverDumpFlow.Instance.Wait();
}
bool exit = false;
while (!exit)
{

@ -0,0 +1,139 @@
using Rs.Controls;
using Rs.Framework;
using Rs.Motion;
using Rs.MotionPlat.Commom;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Rs.MotionPlat.Flow.SubFlow
{
enum ETurnoverDumpFlowStep
{
,
,
,
}
/// <summary>
/// 当周转吸嘴在治具或者周转盘取料失败时,自动把产品放下去,然后再报警
/// </summary>
public class TurnoverDumpFlow
{
private TurnoverDumpFlow() { }
private static TurnoverDumpFlow instance;
public static TurnoverDumpFlow Instance
{
get
{
if(instance==null)
instance = new TurnoverDumpFlow();
return instance;
}
}
private ETurnoverDumpFlowStep step = ETurnoverDumpFlowStep.;
double targetPos = 0.0;
ErrorCode errCode = ErrorCode.Ok;
string logInfo = string.Empty;
ManualResetEvent dumpFinished = new ManualResetEvent(true);
bool finished = false;
public bool Dump(ETrayType trayType, List<int> transitNozzleList)
{
if (finished)
{
dumpFinished.Reset();
finished = false;
}
else
return false;
Task.Run(() => {
while (!finished)
{
if (MachineManage.Instance.MachineStatus == EMachineStatus.Stop)
{
Thread.Sleep(10);
continue;
}
switch (step)
{
case ETurnoverDumpFlowStep.:
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ") + GlobalVar.PressLowSpeedOffset * 2;
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
logInfo = GetClassName() + $"到放料位下方";
MessageQueue.Instance.Insert(logInfo);
step = ETurnoverDumpFlowStep.;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.TurnoverZ, errCode);
}
break;
case ETurnoverDumpFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
if (Ops.IsArrived(AxisControl.TurnoverZ))
{
logInfo = GetClassName() + $"已运动到放料位下方";
MessageQueue.Instance.Insert(logInfo);
////关闭真空吸
VacManager.TransitNozzleVacSuction(EVacOperator.Close, true, transitNozzleList.ToArray());
//打开真空破
VacManager.TransitNozzleVacBreak(EVacOperator.Open, true, transitNozzleList.ToArray());
//关闭真空破
VacManager.TransitNozzleVacBreak(EVacOperator.Close, false, transitNozzleList.ToArray());
step = ETurnoverDumpFlowStep.;
}
}
break;
case ETurnoverDumpFlowStep.:
errCode = AxisControl.TurnoverZ.MovePos(0, GlobalVar.WholeSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
logInfo = GetClassName() + $"放料完成抬起";
MessageQueue.Instance.Insert(logInfo);
step = ETurnoverDumpFlowStep.;
}
else
{
MsgBox.ShowAxisAlarmDialog(AxisControl.TurnoverZ, errCode);
}
break;
case ETurnoverDumpFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
if (Ops.IsArrived(AxisControl.TurnoverZ))
{
finished = true;
dumpFinished.Set();
logInfo = GetClassName() + $"放料完成已抬起";
MessageQueue.Instance.Insert(logInfo);
break;
}
}
break;
}
Thread.Sleep(10);
}
});
return true;
}
public void Wait()
{
dumpFinished.WaitOne();
}
string GetClassName()
{
return "TurnoverDumpFlow-";
}
}
}

@ -213,6 +213,7 @@
<Compile Include="Flow\MonitorSystemButton.cs" />
<Compile Include="Flow\SubFlow\FiberWarningPressFlow.cs" />
<Compile Include="Flow\SubFlow\TestFixtureVacSuctionCheckFlow.cs" />
<Compile Include="Flow\SubFlow\TurnoverDumpFlow.cs" />
<Compile Include="Flow\SubFlow\UpCameraScanBarCodeFlow.cs" />
<Compile Include="Flow\SubFlow\WarningSuckerNgFlow.cs" />
<Compile Include="Flow\RearrangeFlow.cs" />

Loading…
Cancel
Save