|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
using Rs.AutoDischarge.V3.Flow;
|
|
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
|
|
using Rs.AutoDischarge.V3.Flow;
|
|
|
|
|
using Rs.Framework;
|
|
|
|
|
using Rs.MotionPlat.Commom;
|
|
|
|
|
using Rs.MotionPlat.Flow.Camera;
|
|
|
|
@ -7,6 +8,7 @@ using Rs.MotionPlat.Flow.SubFlow;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
@ -280,46 +282,120 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void Check()
|
|
|
|
|
{
|
|
|
|
|
List<int> dischargeNozzles = new List<int>();
|
|
|
|
|
List<int> turnoverNozzles = new List<int>();
|
|
|
|
|
List<int> turnoverTraySlots = new List<int>();
|
|
|
|
|
List<int> socketSlots = new List<int>();
|
|
|
|
|
|
|
|
|
|
//1 吸嘴检测
|
|
|
|
|
for(int i=1;i<9;i++)
|
|
|
|
|
while(true)
|
|
|
|
|
{
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Open,true, i);
|
|
|
|
|
if(Ops.IsOn(""))
|
|
|
|
|
List<int> dischargeNozzles = new List<int>();
|
|
|
|
|
List<int> turnoverNozzles = new List<int>();
|
|
|
|
|
List<int> turnoverTraySlots = new List<int>();
|
|
|
|
|
List<int> socketSlots = new List<int>();
|
|
|
|
|
MessageQueue.Instance.Insert("discharge nozzle have or not product check");
|
|
|
|
|
//1 吸嘴检测
|
|
|
|
|
for (int i = 1; i < 9; i++)
|
|
|
|
|
{
|
|
|
|
|
dischargeNozzles.Add(i);
|
|
|
|
|
Ops.On($"{i}号吸嘴真空吸电磁阀");
|
|
|
|
|
MessageQueue.Instance.Insert($"打开{i}号吸嘴真空吸电磁阀");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
if (Ops.IsOn($"{i}号吸嘴真空吸检测"))
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"{i}号吸嘴有料");
|
|
|
|
|
dischargeNozzles.Add(i);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"{i}号吸嘴无料");
|
|
|
|
|
Ops.Off($"{i}号吸嘴真空吸电磁阀");
|
|
|
|
|
MessageQueue.Instance.Insert($"关闭{i}号吸嘴真空吸电磁阀");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//2 周转吸头检测
|
|
|
|
|
for (int i=1;i<17;i++)
|
|
|
|
|
{
|
|
|
|
|
VacManager.TransitNozzleVacSuction(ETurnoverNozzlePosition.TurnoverTray, EVacOperator.Open, true, i);
|
|
|
|
|
if (Ops.IsOn(""))
|
|
|
|
|
//2 周转吸头检测
|
|
|
|
|
for (int i = 1; i < 17; i++)
|
|
|
|
|
{
|
|
|
|
|
turnoverNozzles.Add(i);
|
|
|
|
|
Ops.On($"周转{i}号吸嘴真空吸");
|
|
|
|
|
MessageQueue.Instance.Insert($"打开周转{i}号吸嘴真空吸");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
if (Ops.IsOn($"周转{i}号吸嘴真空吸检测"))
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"周转{i}号吸嘴有料");
|
|
|
|
|
turnoverNozzles.Add(i);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"周转{i}号吸嘴无料");
|
|
|
|
|
Ops.Off($"周转{i}号吸嘴真空吸");
|
|
|
|
|
MessageQueue.Instance.Insert($"关闭周转{i}号吸嘴真空吸");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 3周转盘穴位检测
|
|
|
|
|
for(int i=1;i<33;i++)
|
|
|
|
|
{
|
|
|
|
|
SlotProductHasOrNotResult result = UpCameraCheckFlow.Instance.CheckTurnoverTrayHasProduct(null, i, true);
|
|
|
|
|
if(result.HasProduct)
|
|
|
|
|
// 3周转盘穴位检测
|
|
|
|
|
for (int i = 1; i < 33; i++)
|
|
|
|
|
{
|
|
|
|
|
turnoverTraySlots.Add(i);
|
|
|
|
|
Ops.On($"周转盘{i}号穴位真空吸");
|
|
|
|
|
MessageQueue.Instance.Insert($"打开周转盘{i}号穴位真空吸");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
if (Ops.IsOn($"周转盘{i}号穴位真空吸检测"))
|
|
|
|
|
{
|
|
|
|
|
Ops.Off($"周转盘{i}号穴位真空吸");
|
|
|
|
|
MessageQueue.Instance.Insert($"周转盘{i}号穴位有料");
|
|
|
|
|
turnoverTraySlots.Add(i);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"周转盘{i}号穴位无料");
|
|
|
|
|
Ops.Off($"周转盘{i}号穴位真空吸");
|
|
|
|
|
MessageQueue.Instance.Insert($"关闭周转盘{i}号穴位真空吸");
|
|
|
|
|
}
|
|
|
|
|
//SlotProductHasOrNotResult result = UpCameraCheckFlow.Instance.CheckTurnoverTrayHasProduct(null, i, true);
|
|
|
|
|
//if(result.HasProduct)
|
|
|
|
|
//{
|
|
|
|
|
// turnoverTraySlots.Add(i);
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
|
|
|
|
|
//4 SOCKET穴位检测
|
|
|
|
|
for (int i = 1; i < 17; i++)
|
|
|
|
|
{
|
|
|
|
|
VacManager.TransitNozzleVacSuction( ETurnoverNozzlePosition.Socket, EVacOperator.Open, true, i);
|
|
|
|
|
if (Ops.IsOn(""))
|
|
|
|
|
//DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
|
|
|
|
|
//4 SOCKET穴位检测
|
|
|
|
|
for (int i = 1; i < 17; i++)
|
|
|
|
|
{
|
|
|
|
|
Ops.On($"测试{i}号穴位真空吸");
|
|
|
|
|
MessageQueue.Instance.Insert($"打开测试{i}号穴位真空吸");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
if (Ops.IsOn($"测试{i}号穴位真空吸检测"))
|
|
|
|
|
{
|
|
|
|
|
Ops.Off($"测试{i}号穴位真空吸");
|
|
|
|
|
MessageQueue.Instance.Insert($"测试{i}号穴位有料");
|
|
|
|
|
socketSlots.Add(i);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"测试{i}号穴位无料");
|
|
|
|
|
Ops.Off($"测试{i}号穴位真空吸");
|
|
|
|
|
LogHelper.Debug($"关闭测试{i}号穴位真空吸");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (dischargeNozzles.Count>0 || turnoverNozzles.Count>0 || turnoverTraySlots.Count>0 || socketSlots.Count>0)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder msg = new StringBuilder();
|
|
|
|
|
if(dischargeNozzles.Count>0)
|
|
|
|
|
{
|
|
|
|
|
msg.AppendLine($"discharge nozzle {dischargeNozzles.ToJoinString()} has product");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (turnoverNozzles.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
msg.AppendLine($"turnover nozzle {turnoverNozzles.ToJoinString()} has product");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (turnoverTraySlots.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
msg.AppendLine($"turnover tray {turnoverTraySlots.ToJoinString()} has product");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (socketSlots.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
msg.AppendLine($"socket {socketSlots.ToJoinString()} has product");
|
|
|
|
|
}
|
|
|
|
|
PromptMessageBox.ShowDialog(AlarmConstID.工作环境检测, msg.ToString(), SchedulingMessageBox.ETipButton.Retry);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
turnoverNozzles.Add(i);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|