优化从周转盘到测试治具逻辑

master
lhiven 2 years ago
parent a6167e1963
commit 52ce6ca2ad

@ -96,23 +96,23 @@ namespace Rs.MotionPlat.Commom
{
if (eOperator == EVacOperator.Open)
{
Ops.On($"周转{index}号吸嘴真空破");
Ops.On($"周转{index}号吸嘴真空破");
}
else
{
Ops.Off($"周转{index}号吸嘴真空破");
Ops.Off($"周转{index}号吸嘴真空破");
}
}
if (eOperator == EVacOperator.Open)
{
Thread.Sleep(GlobalVar.TurnoverNozzleOpenVacBreakDelaytime);
MessageQueue.Instance.Insert($"打开周转{string.Join(",", indexes)}号吸嘴真空破");
MessageQueue.Instance.Insert($"打开周转盘{indexes.ToJoinString()}号真空破");
}
else
{
Thread.Sleep(GlobalVar.TurnoverNozzleCloseVacBreakDelaytime);
MessageQueue.Instance.Insert($"关闭周转{string.Join(",", indexes)}号吸嘴真空破");
MessageQueue.Instance.Insert($"关闭周转盘{indexes.ToJoinString()}号真空破");
}
}
}
@ -141,12 +141,12 @@ namespace Rs.MotionPlat.Commom
if (eOperator == EVacOperator.Open)
{
Thread.Sleep(GlobalVar.TurnoverNozzleOpenVacSuctionDelaytime);
MessageQueue.Instance.Insert($"打开周转{string.Join(",", indexes)}号吸嘴真空吸");
MessageQueue.Instance.Insert($"打开周转吸嘴{string.Join(",", indexes)}号真空吸");
}
else
{
Thread.Sleep(GlobalVar.TurnoverNozzleCloseVacSuctionDelaytime);
MessageQueue.Instance.Insert($"关闭周转{string.Join(",", indexes)}号吸嘴真空吸");
MessageQueue.Instance.Insert($"关闭周转吸嘴{string.Join(",", indexes)}号真空吸");
}
}
}

@ -68,16 +68,30 @@ namespace Rs.MotionPlat.Commom
{
IsHasProduct = true;
SN = testTraySlot.SN;
FromIndex = testTraySlot.Index;
FromIndex = testTraySlot.Index-1;
FromType = TurnoverType.Tester;
}
public void AddProduct(TurnoverTraySlot turnoverTraySlot)
{
IsHasProduct = true;
SN=turnoverTraySlot.SN;
FromIndex = turnoverTraySlot.Index;
FromIndex = turnoverTraySlot.Index-1;
FromType = TurnoverType.Turnover;
}
public void AddProduct(TurnoverInfo task)
{
IsHasProduct = true;
SN = task.SN;
FromIndex = task.FromIndex;
FromType = task.FromType;
ToIndex= task.ToIndex;
ToType= task.ToType;
ToFloor= task.ToFloor;
}
public void Clear(bool closeVac=false)
{
IsHasProduct = false;

@ -39,15 +39,6 @@ namespace Rs.MotionPlat.Entitys.Trays
/// </summary>
public int SuckerNo { get; set; }
public void AddProduct(string sn, int fromIndex, TurnoverType fromType, int suckerNo)
{
IsHasProduct = true;
SN = sn;
FromIndex = fromIndex;
FromType = fromType;
SuckerNo = suckerNo;
}
public void ClearProduct()
{
IsHasProduct = false;

@ -121,7 +121,7 @@ namespace Rs.MotionPlat.Entitys.Trays
ti.GUID = GuidHelper.Create();
ti.FromType = slot.FromType;
ti.FromFloor = 1;
ti.FromIndex = slot.FromIndex-1;
ti.FromIndex = slot.FromIndex;
ti.SN = slot.SN;
ti.ToType = TurnoverType.Tester;
ti.ToFloor = Floor++;
@ -137,6 +137,7 @@ namespace Rs.MotionPlat.Entitys.Trays
string content = JsonConvert.SerializeObject(infos, new StringEnumConverter());
return content;
}
}
public class TestTraySlot:BaseTraySlot
@ -150,5 +151,14 @@ namespace Rs.MotionPlat.Entitys.Trays
/// </summary>
public bool IsFiberException { get; set; } = false;
public void AddProduct(TransitNozzle nozzle)
{
IsHasProduct = true;
SN = nozzle.SN;
FromIndex = nozzle.FromIndex;
FromType = nozzle.FromType;
SuckerNo = nozzle.NozzleIndex;
}
}
}

@ -145,6 +145,15 @@ namespace Rs.MotionPlat.Entitys.Trays
SuckerNo = nozzle.NozzleIndex;
}
public void AddProduct(TransitNozzle nozzle)
{
IsHasProduct = true;
SN = nozzle.SN;
FromIndex = nozzle.FromIndex;
FromType = nozzle.FromType;
SuckerNo = nozzle.NozzleIndex;
}
public bool HasVac()
{
if (Ops.IsOn(""))

@ -180,7 +180,7 @@ namespace Rs.MotionPlat.Flow
}
/// <summary>
/// 发送上下料结果给中控
/// 获取测试治具上料的任务信息
/// </summary>
/// <param name="turnoverInfoList"></param>
/// <returns></returns>
@ -204,15 +204,16 @@ namespace Rs.MotionPlat.Flow
TurnoverInfo ti = new TurnoverInfo();
ti.GUID = GuidHelper.Create();
ti.FromType = nozzle.FromType;
ti.FromFloor = 1;
ti.FromFloor = nozzle.FromFloor;
ti.FromIndex = nozzle.FromIndex;
ti.SN = nozzle.SN;
ti.ToType = TurnoverType.Tester;
ti.ToFloor = TestTrayManager.Instance.Floor;
ti.ToIndex = nozzle.NozzleIndex - 1;
ti.ToType = nozzle.ToType;
ti.ToFloor =nozzle.ToFloor;
ti.ToIndex = nozzle.ToIndex;
ti.SuckerNo = nozzle.NozzleIndex;
turnoverInfos.Add(ti);
}
//2、获取测试盘中有产品的穴位
//2、获取测试盘中有产品的穴位
List<TestTraySlot> testSlots = TestTrayManager.Instance.GetSlots(ETestTraySlotStatus.Have);
foreach (TestTraySlot slot in testSlots)
{
@ -220,11 +221,11 @@ namespace Rs.MotionPlat.Flow
ti.GUID = GuidHelper.Create();
ti.FromType = slot.FromType;
ti.FromFloor = 1;
ti.FromIndex = slot.FromIndex - 1;
ti.FromIndex = slot.FromIndex;
ti.SN = slot.SN;
ti.ToType = TurnoverType.Tester;
ti.ToFloor = TestTrayManager.Instance.Floor++;
ti.ToIndex = slot.Index - 1;
ti.ToFloor = 1;
ti.ToIndex = slot.Index;
turnoverInfos.Add(ti);
}
@ -236,15 +237,46 @@ namespace Rs.MotionPlat.Flow
string content = JsonConvert.SerializeObject(infos, new StringEnumConverter());
return content;
}
/// <summary>
/// 获取测试治具下料的任务信息
/// </summary>
/// <returns></returns>
public string GetTestUnLoadString()
{
//TurnoverInfos infos = new TurnoverInfos();
//infos.Instruction = EInstruction.LoadAndUnloadResult;
//infos.GroupID = m_schedulingMaterial.GroupID;
//infos.TurnoverID = m_schedulingMaterial.TurnoverID;
//infos.Infos = testUnloadTaskList;
//string content = JsonConvert.SerializeObject(infos, new StringEnumConverter());
//LogHelper.Debug("发送:" + content);
//return content;
List<TurnoverInfo> turnoverInfos = new List<TurnoverInfo>();
//1、获取有产品的吸嘴
List<TurnoverTraySlot> transitNozzles = TurnoverTrayManager.Instance.GetSlots(ETurnoverTraySlotType.Tested, ETurnoverTraySlotStatus.Have);
foreach (TurnoverTraySlot slot in transitNozzles)
{
TurnoverInfo ti = new TurnoverInfo();
ti.GUID = GuidHelper.Create();
ti.FromType = slot.FromType;
ti.FromFloor = 1;
ti.FromIndex = slot.FromIndex;
ti.SN = slot.SN;
ti.ToType = TurnoverType.Turnover;
ti.ToFloor = 1;
ti.ToIndex = slot.Index - 1;
ti.SuckerNo = slot.SuckerNo;
turnoverInfos.Add(ti);
}
TurnoverInfos infos = new TurnoverInfos();
infos.Instruction = EInstruction.LoadAndUnloadResult;
infos.GroupID = m_schedulingMaterial.GroupID;
infos.TurnoverID = m_schedulingMaterial.TurnoverID;
infos.Infos = testUnloadTaskList;
infos.Infos = turnoverInfos;
string content = JsonConvert.SerializeObject(infos, new StringEnumConverter());
LogHelper.Debug("发送:" + content);
return content;
}
/// <summary>

@ -1260,13 +1260,13 @@ namespace Rs.MotionPlat.Flow
{
//curNozzle.ToIndex = downSlot.Index - 1;
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ok).GetFloor();
GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Ok);
GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
}
else if (curNozzle.ToType == TurnoverType.Failed)
{
//curNozzle.ToIndex = downSlot.Index - 1;
curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ng).GetFloor();
GlobalTray.NgTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Ng);
GlobalTray.NgTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
}
else if (curNozzle.ToType == TurnoverType.Multifunction)
{
@ -1564,7 +1564,7 @@ namespace Rs.MotionPlat.Flow
/// <returns></returns>
public string WitchTrayWitchSlot(TurnoverType trayType,int slotIndex)
{
return $"{trayType}盘{slotIndex}穴位";
return $"{trayType}盘{slotIndex+1}穴位";
}
}

@ -154,7 +154,7 @@ namespace Rs.MotionPlat.Flow
// slots.Add(slot.FromIndex + 1);
//}
retakeNum = 0;
logInfo = $"{nameof(TurnoverFlow)}-接收到测试工位上料任务";
logInfo = GetClassName()+$"接收到测试工位上料任务";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -166,7 +166,7 @@ namespace Rs.MotionPlat.Flow
// slots.Add(slot.FromIndex + 1);
//}
retakeNum = 0;
logInfo = $"{nameof(TurnoverFlow)}-接收到测试工位下料任务";
logInfo = GetClassName() + $"接收到测试工位下料任务";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -190,7 +190,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-到周转盘取料位上方";
logInfo = GetClassName()+$"到周转盘取料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -202,7 +202,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-已运动到周转盘取料位上方 TurnoverY at:{Ops.GetCurPosition( AxisAlias.TurnoverY)}";
logInfo = GetClassName() + $"已运动到周转盘取料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -218,7 +218,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-到周转盘下方取料位1";
logInfo = GetClassName()+$"到周转盘下方取料位1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -234,7 +234,7 @@ namespace Rs.MotionPlat.Flow
break;
case ETurnoverFlowStep.:
List<TurnoverTraySlot> untestSlots = TurnoverTrayManager.Instance.GetSlots(ETurnoverTraySlotType.WaitTest, ETurnoverTraySlotStatus.Have);
alarmInfo = $"{nameof(TurnoverFlow)}周转盘{string.Join(",", untestSlots.Select(s => s.Index))}号穴位异常";
alarmInfo = GetClassName()+$"周转盘{string.Join(",", untestSlots.Select(s => s.Index))}号穴位异常";
TestCenterMessageBox.Show(AlarmConstID.TurnoverTakeFailAlarm, alarmInfo, MessageButtonManager.GetRetry_Skip_MoveToSafe_Button(),
MessageButtonManager.GetRetry_Skip_MoveToSafe_ButtonText());
msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.TurnoverTakeFailAlarm);
@ -276,7 +276,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-已运动到周转盘下方取料位1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
logInfo = GetClassName()+ $"已运动到周转盘下方取料位1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -290,7 +290,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-到周转盘下方取料位2";
logInfo = GetClassName() + $"到周转盘下方取料位2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -302,11 +302,11 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-已运动到周转盘下方取料位2 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
logInfo = GetClassName() + $"已运动到周转盘下方取料位2 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
undealTasks = LoadAndUnloadTask.Instance.GetTurnoverToTestTasks(ETaskDealStatus.Undeal);
/*打开周转吸真空吸*/
/*打开周转吸真空吸*/
VacManager.TransitNozzleVacSuction(EVacOperator.Open, undealTasks.Select(t => t.ToIndex + 1).ToArray());
/*关闭周转盘真空吸*/
VacManager.TurnoverTrayVacSuction(EVacOperator.Close, undealTasks.Select(t => t.FromIndex + 1).ToArray());
@ -324,7 +324,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-到周转盘取料破真空位";
logInfo = GetClassName() + $"到周转盘取料破真空位";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -353,7 +353,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-周转盘取料完成抬起";
logInfo = GetClassName() + $"周转盘取料完成抬起";
MessageQueue.Instance.Insert (logInfo);
Step = ETurnoverFlowStep.;
}
@ -365,7 +365,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-已运动到周转盘取料完成抬起位";
logInfo = GetClassName() + $"周转盘取料完成已抬起";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -377,16 +377,16 @@ namespace Rs.MotionPlat.Flow
if (Ops.IsOn($"周转{task.FromIndex+1}号吸嘴真空吸检测") || GlobalVar.VirtualAxis)
{
//如果真空检测OK带料产品已经吸上了
task.Dealed = true;
TurnoverTraySlot slot = TurnoverTrayManager.Instance.Slot(task.FromIndex + 1);
TransitNozzleManager.Instance.Nozzle(task.FromIndex + 1).AddProduct(slot);
slot.ClearProduct();
TransitNozzleManager.Instance.Nozzle(task.ToIndex + 1).AddProduct(task);
TurnoverTrayManager.Instance.Slot(task.FromIndex + 1).ClearProduct();
//slot.ClearProduct();
GlobalTray.TurnoverTray.ChangeStatus(task.FromIndex + 1, ESlotStatus.NotHave);
task.Dealed = true;
}
}
if (TransitNozzleManager.Instance.GetHasProductNozzleNum() > 0||GlobalVar.RunSpace || GlobalVar.VirtualAxis)
{
logInfo = $"周转吸头{string.Join(",", TransitNozzleManager.Instance.GetHasProductNozzles().Select(n=>n.NozzleIndex).ToArray())}真空检测OK";
logInfo = GetClassName()+ $"周转吸头{string.Join(",", TransitNozzleManager.Instance.GetHasProductNozzles().Select(n=>n.NozzleIndex).ToArray())}真空检测OK";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -405,7 +405,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到测试放料位上方";
logInfo = GetClassName()+$"到测试放料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -470,16 +470,17 @@ namespace Rs.MotionPlat.Flow
}
if (loseSlots.Count > 0)
{
alarmInfo = $"周转{string.Join(",", loseSlots)}号吸嘴真空异常丢料,请处理";
alarmInfo = $"周转{loseSlots.ToJoinString()}号吸嘴真空异常丢料,请处理";
TestCenterMessageBox.Show(AlarmConstID.NozzlesLoseMaterialAlarm, alarmInfo, MessageButtonManager.GetSkip_MoveToSafe_Button(), MessageButtonManager.GetSkip_MoveToSafe_ButtonText());
msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.NozzlesLoseMaterialAlarm);
switch (msgBox.Button)
{
case ETipButton.Skip:
MessageQueue.Instance.Insert($"{nameof(TurnoverFlow)}-点击了跳过按钮");
MessageQueue.Instance.Insert(GetClassName()+$"点击了跳过按钮");
TransitNozzleManager.Instance.GetHasProductNozzles().ForEach((n) => { n.IsHasProduct = false;n.SN = ""; });
break;
case ETipButton.Yes:
MessageQueue.Instance.Insert($"{nameof(TurnoverFlow)}-点击了移动到安全位按钮");
MessageQueue.Instance.Insert(GetClassName()+$"点击了移动到安全位按钮");
TransitModuleSafePosFlow.Instance.GoSafePostion();
break;
default:
@ -488,7 +489,7 @@ namespace Rs.MotionPlat.Flow
}
else
{
logInfo = $"已运动到测试放料位上方";
logInfo = GetClassName() + $"已运动到测试放料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -504,7 +505,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到测试放料位下方1";
logInfo = GetClassName()+$"到测试放料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -516,7 +517,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"已运动到到测试放料位下方1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
logInfo =GetClassName()+ $"已运动到到测试放料位下方1 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -530,7 +531,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到测试放料位下方2";
logInfo =GetClassName()+ $"到测试放料位下方2";
MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
Step = ETurnoverFlowStep.2;
@ -545,7 +546,7 @@ namespace Rs.MotionPlat.Flow
{
//获取需要放料的吸嘴
List<TransitNozzle> hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles();
logInfo = $"已运动到到测试放料位下方2 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
logInfo =GetClassName()+ $"已运动到到测试放料位下方2 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
MessageQueue.Instance.Insert(logInfo);
/*打开测试穴位真空吸*/
VacManager.TestTrayVacSuction(EVacOperator.Open, hasProductNozzles.Select(n => n.NozzleIndex).ToArray());
@ -567,7 +568,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"测试位放料完成抬起";
logInfo = GetClassName()+$"测试位放料完成抬起";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -579,7 +580,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"测试位放料完成抬起完成";
logInfo = GetClassName()+$"测试位放料完成抬起完成";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -605,13 +606,13 @@ namespace Rs.MotionPlat.Flow
if(masticSlots.Count > 0)
{
//粘料报警
alarmInfo = $"周转{string.Join(",", loseSlots)}号吸嘴真空异常粘料,请手工处理";
alarmInfo = $"周转{loseSlots.ToJoinString()}号吸嘴真空异常粘料,请手工处理";
TestCenterMessageBox.Show(AlarmConstID.NozzlesLoseMaterialAlarm, alarmInfo, MessageButtonManager.GetSkip_MoveToSafe_Button(), MessageButtonManager.GetSkip_MoveToSafe_ButtonText());
msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.NozzlesLoseMaterialAlarm);
switch (msgBox.Button)
{
case ETipButton.Skip:
MessageQueue.Instance.Insert($"{nameof(TurnoverFlow)}-点击了跳过按钮");
MessageQueue.Instance.Insert(GetClassName() + $"点击了跳过按钮");
foreach (int nozzleIndex in masticSlots)
{
TransitNozzle nozzle = TransitNozzleManager.Instance.Nozzle(nozzleIndex);
@ -623,7 +624,7 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETipButton.Yes:
MessageQueue.Instance.Insert($"{nameof(TurnoverFlow)}-点击了移动到安全位按钮");
MessageQueue.Instance.Insert(GetClassName() + $"点击了移动到安全位按钮");
TransitModuleSafePosFlow.Instance.GoSafePostion();
break;
default:
@ -649,7 +650,8 @@ namespace Rs.MotionPlat.Flow
foreach (var nozzle in TransitNozzleManager.Instance.GetHasProductNozzles())
{
GlobalTray.TestTray.ChangeStatus(nozzle.NozzleIndex, ESlotStatus.Have);
TestTrayManager.Instance.Slot(nozzle.NozzleIndex).AddProduct(nozzle.SN, nozzle.FromIndex, TurnoverType.Turnover, nozzle.NozzleIndex);
//TestTrayManager.Instance.Slot(nozzle.NozzleIndex).AddProduct(nozzle.SN, nozzle.FromIndex, TurnoverType.Turnover, nozzle.NozzleIndex);
TestTrayManager.Instance.Slot(nozzle.NozzleIndex).AddProduct(nozzle);
nozzle.Clear();
}
@ -688,7 +690,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到测试保压位上方";
logInfo = GetClassName() + $"到测试保压位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -700,7 +702,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
logInfo = $"已运动到测试保压位上方";
logInfo = GetClassName() + $"已运动到测试保压位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -715,7 +717,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到测试保压位下方1";
logInfo = GetClassName() + $"到测试保压位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -727,7 +729,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.PressZ) || GlobalVar.VirtualAxis)
{
logInfo = $"已到测试保压位下方1 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
logInfo = GetClassName() + $"已到测试保压位下方1 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -742,7 +744,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到测试保压位下方2";
logInfo = GetClassName() + $"到测试保压位下方2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -754,15 +756,16 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.PressZ) || GlobalVar.VirtualAxis)
{
logInfo = $"已到测试保压位下方2 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
logInfo = GetClassName()+$"已到测试保压位下方2 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
MessageQueue.Instance.Insert(logInfo);
/*关闭测试穴位真空吸*/
List<TestTraySlot> willTestSlot = TestTrayManager.Instance.GetSlots(ETestTraySlotStatus.Have);
VacManager.TestTrayVacSuction(EVacOperator.Close, willTestSlot.Select(s => s.Index).ToArray());
loadOk = true;
MachineManage.Instance.SetTesterState(ETesterState.Ready);
MessageQueue.Instance.Insert("通知中控测试位就绪,可以开始测试");
Thread.Sleep(1000 * 30);
logInfo = GetClassName() + "通知中控测试位就绪,可以开始测试";
MessageQueue.Instance.Insert(logInfo);
//Thread.Sleep(1000 * 30);
Step = ETurnoverFlowStep.;
}
break;
@ -784,7 +787,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-测试完成准备抬起";
logInfo = GetClassName()+$"测试完成准备抬起";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -793,7 +796,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.PressZ) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-测试完成已抬起 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
logInfo = GetClassName()+$"测试完成已抬起 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -807,7 +810,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-测试完成抬起安全位";
logInfo = GetClassName() + $"测试完成抬起安全位";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -815,7 +818,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.PressZ) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-测试完成已抬起到安全位 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
logInfo = GetClassName() + $"测试完成已抬起到安全位 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -829,7 +832,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-到测试取料位上方";
logInfo = GetClassName() + $"到测试取料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -837,7 +840,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-已运动到测试取料位上方 TurnoverY at:{Ops.GetCurPosition(AxisAlias.TurnoverY)}";
logInfo = GetClassName() + $"已运动到测试取料位上方 TurnoverY at:{Ops.GetCurPosition(AxisAlias.TurnoverY)}";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -853,7 +856,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-到测试取料位下方1";
logInfo = GetClassName() + $"到测试取料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -933,7 +936,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"{nameof(TurnoverFlow)}-到测试取料位下方2";
logInfo = GetClassName() + $"到测试取料位下方2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -942,16 +945,16 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-已运动到测试取料位下方2 TurnoverZ at:{Ops.GetCurPosition("TurnoverZ")}";
logInfo = GetClassName()+$"已运动到测试取料位下方2 TurnoverZ at:{Ops.GetCurPosition("TurnoverZ")}";
MessageQueue.Instance.Insert(logInfo);
undealTasks = LoadAndUnloadTask.Instance.GetTestToTurnoverTasks(ETaskDealStatus.Undeal);
int[] indexes = undealTasks.Select(t => t.FromIndex + 1).ToArray();
/*打开周转吸头真空吸*/
VacManager.TransitNozzleVacSuction(EVacOperator.Open, undealTasks.Select(t => t.FromIndex + 1).ToArray());
VacManager.TransitNozzleVacSuction(EVacOperator.Open, indexes);
/*关闭测试穴位真空吸*/
VacManager.TestTrayVacSuction(EVacOperator.Close, undealTasks.Select(t => t.FromIndex + 1).ToArray());
VacManager.TestTrayVacSuction(EVacOperator.Close, indexes);
/*打开测试穴位真空破*/
VacManager.TestTrayVacBreak(EVacOperator.Open, undealTasks.Select(t => t.FromIndex + 1).ToArray());
VacManager.TestTrayVacBreak(EVacOperator.Open, indexes);
Step = ETurnoverFlowStep.;
}
break;
@ -961,7 +964,7 @@ namespace Rs.MotionPlat.Flow
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.PressLowSpeed);
if (errCode == Motion.ErrorCode.Ok || GlobalVar.VirtualAxis)
{
logInfo = $"到测试破关真空位";
logInfo = GetClassName()+ $"到测试破关真空位";
MessageQueue.Instance.Insert(logInfo);
if (GlobalVar.VirtualAxis)
{
@ -973,7 +976,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if(Ops.IsStop(AxisAlias.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"{nameof(TurnoverFlow)}-已运动到测试关破真空位";
logInfo = GetClassName()+$"已运动到测试关破真空位";
MessageQueue.Instance.Insert(logInfo);
undealTasks = LoadAndUnloadTask.Instance.GetTestToTurnoverTasks(ETaskDealStatus.Undeal);
/*关闭测试穴位真空破*/
@ -990,7 +993,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"测试位取料完成准备抬起";
logInfo =GetClassName()+ $"测试位取料完成抬起";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -998,7 +1001,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"测试位取料完成已抬起";
logInfo =GetClassName()+ $"测试位取料完成已抬起";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -1010,15 +1013,23 @@ namespace Rs.MotionPlat.Flow
TestTraySlot testSlot = TestTrayManager.Instance.Slot(task.FromIndex + 1);
if (Ops.IsOn($"周转{task.FromIndex+1}号吸嘴真空吸检测") || GlobalVar.VirtualAxis)
{
testSlot.ClearProduct();
task.Dealed= true;
TransitNozzleManager.Instance.Nozzle(task.FromIndex + 1).AddProduct(testSlot);
TransitNozzleManager.Instance.Nozzle(task.FromIndex + 1).AddProduct(task);
GlobalTray.TestTray.ChangeStatus(task.FromIndex + 1, ESlotStatus.NotHave);
}
}
if (TransitNozzleManager.Instance.GetHasProductNozzleNum()>0 || GlobalVar.RunSpace|| GlobalVar.VirtualAxis)
{
MachineManage.Instance.SetTesterState( ETesterState.NotReady );
MessageQueue.Instance.Insert("通知中控产品已取走");
Step = ETurnoverFlowStep.;
if(TestTrayManager.Instance.GetSlots(ETestTraySlotStatus.Have).Count==0)
{
MachineManage.Instance.SetTesterState(ETesterState.NotReady);
logInfo = GetClassName() + "通知中控产品全部已从治具中取出状态变成NotReady";
}
MessageQueue.Instance.Insert(logInfo);
}
else
{
@ -1056,7 +1067,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到周转盘放料位上方";
logInfo =GetClassName()+ $"到周转盘放料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -1064,7 +1075,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if (Ops.IsStop(AxisControl.TurnoverY) || GlobalVar.VirtualAxis)
{
logInfo = $"已运动到周转盘放料位上方";
logInfo = GetClassName() + $"已运动到周转盘放料位上方";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -1126,7 +1137,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到周转盘放料位下方1";
logInfo = GetClassName() + $"到周转盘放料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -1134,7 +1145,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"已运动到周转盘放料位下方1";
logInfo = GetClassName() + $"已运动到周转盘放料位下方1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -1149,7 +1160,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"到周转盘放料位下方2";
logInfo = GetClassName() + $"到周转盘放料位下方2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -1157,15 +1168,15 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"已运动到周转盘放料位下方2";
logInfo = GetClassName() + $"已运动到周转盘放料位下方2";
MessageQueue.Instance.Insert(logInfo);
/*打开周转盘真空吸*/
List<TransitNozzle> hasProductNozzles = TransitNozzleManager.Instance.GetHasProductNozzles();
VacManager.TurnoverTrayVacSuction(EVacOperator.Open, hasProductNozzles.Select(n => n.ToIndex).ToArray());
/*打开周转盘真空吸*/
VacManager.TurnoverTrayVacSuction(EVacOperator.Open, hasProductNozzles.Select(n => n.ToIndex+1).ToArray());
/*关闭周转吸头真空吸*/
VacManager.TransitNozzleVacSuction( EVacOperator.Close,hasProductNozzles.Select(n=>n.FromIndex).ToArray());
VacManager.TransitNozzleVacSuction( EVacOperator.Close,hasProductNozzles.Select(n=>n.FromIndex + 1).ToArray());
/*打开周转吸头真空破*/
VacManager.TransitNozzleVacBreak(EVacOperator.Open, hasProductNozzles.Select(n => n.FromIndex).ToArray());
VacManager.TransitNozzleVacBreak(EVacOperator.Open, hasProductNozzles.Select(n => n.FromIndex + 1).ToArray());
Step = ETurnoverFlowStep.1;
}
break;
@ -1179,7 +1190,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"周转盘放料完成准备抬起1";
logInfo = GetClassName() + $"周转盘放料完成准备抬起1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.1;
}
@ -1187,7 +1198,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.1:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"周转盘放料完成已抬起1";
logInfo = GetClassName() + $"周转盘放料完成已抬起1";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
@ -1202,7 +1213,7 @@ namespace Rs.MotionPlat.Flow
{
Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
}
logInfo = $"周转盘放料完成准备抬起2";
logInfo = GetClassName() + $"周转盘放料完成准备抬起2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.2;
}
@ -1210,7 +1221,7 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.2:
if (Ops.IsStop(AxisControl.TurnoverZ) || GlobalVar.VirtualAxis)
{
logInfo = $"周转盘放料完成已抬起2";
logInfo = GetClassName() + $"周转盘放料完成已抬起2";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
@ -1242,7 +1253,8 @@ namespace Rs.MotionPlat.Flow
switch (msgBox.Button)
{
case ETipButton.Skip:
MessageQueue.Instance.Insert($"{nameof(TurnoverFlow)}-点击了跳过按钮");
logInfo = GetClassName() + "点击了跳过按钮";
MessageQueue.Instance.Insert(logInfo);
foreach (int nozzleIndex in masticSlots)
{
TransitNozzle nozzle = TransitNozzleManager.Instance.Nozzle(nozzleIndex);
@ -1254,7 +1266,8 @@ namespace Rs.MotionPlat.Flow
}
break;
case ETipButton.Yes:
MessageQueue.Instance.Insert($"{nameof(TurnoverFlow)}-点击了移动到安全位按钮");
logInfo = GetClassName() + "点击了移动到安全位按钮";
MessageQueue.Instance.Insert(logInfo);
TransitModuleSafePosFlow.Instance.GoSafePostion();
break;
default:
@ -1270,12 +1283,14 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
foreach (var nozzle in TransitNozzleManager.Instance.GetHasProductNozzles())
{
TurnoverTraySlot slot = TurnoverTrayManager.Instance.Slot(nozzle.ToIndex);
GlobalTray.TurnoverTray.ChangeStatus(nozzle.ToIndex, ESlotStatus.Have);
TurnoverTrayManager.Instance.Slot(nozzle.ToIndex).AddProduct(nozzle.SN, nozzle.NozzleIndex, TurnoverType.Turnover, nozzle.NozzleIndex);
TurnoverTraySlot slot = TurnoverTrayManager.Instance.Slot(nozzle.ToIndex+1);
//GlobalTray.TurnoverTray.ChangeStatus(nozzle.ToIndex, ESlotStatus.Have);
slot.AddProduct(nozzle);
//TurnoverTrayManager.Instance.Slot(nozzle.ToIndex).AddProduct(nozzle.SN, nozzle.NozzleIndex, TurnoverType.Turnover, nozzle.NozzleIndex);
nozzle.Clear();
if (slot.HasVac() || GlobalVar.VirtualAxis|| GlobalVar.RunSpace)
{
GlobalTray.TurnoverTray.ChangeStatus(slot.Index, ESlotStatus.Have);
slot.VacException = false;
}
else
@ -1366,7 +1381,7 @@ namespace Rs.MotionPlat.Flow
errCode = AxisControl.TurnoverY.MovePos(SysConfigParam.GetValue<double>("PressY"), GlobalVar.WholeSpeed);
if ((errCode == Motion.ErrorCode.Ok) || GlobalVar.VirtualAxis)
{
logInfo = $"周转吸头下料完成到安全位";
logInfo = GetClassName() + $"周转吸头下料完成到安全位";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
}
@ -1378,21 +1393,21 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep.:
if(Ops.IsStop("TurnoverY") || GlobalVar.VirtualAxis)
{
logInfo = $"已运动到安全位,任务结束";
logInfo = GetClassName()+$"已运动到安全位,任务结束";
MessageQueue.Instance.Insert(logInfo);
Step = ETurnoverFlowStep.;
Step = ETurnoverFlowStep.;
}
break;
case ETurnoverFlowStep.:
unloadOk = true;
TestCenter.Instance.LoadTestUnLoadResult();
List<TurnoverInfo> testUnLoadList = LoadAndUnloadTask.Instance.GetTestToTurnoverTasks();
//切换穴位状态
foreach (TurnoverInfo turnoverInfo in testUnLoadList)
{
GlobalTray.TurnoverTray.ChangeStatus(turnoverInfo.ToIndex + 1, ESlotStatus.Have);
}
//List<TurnoverInfo> testUnLoadList = LoadAndUnloadTask.Instance.GetTestToTurnoverTasks();
////切换穴位状态
//foreach (TurnoverInfo turnoverInfo in testUnLoadList)
//{
// GlobalTray.TurnoverTray.ChangeStatus(turnoverInfo.ToIndex + 1, ESlotStatus.Have);
//}
LoadAndUnloadTask.Instance.Clear(1);
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
Step = ETurnoverFlowStep.;

Loading…
Cancel
Save