You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
821 lines
36 KiB
C#
821 lines
36 KiB
C#
using log4net.Core;
|
|
using Rs.Controls;
|
|
using Rs.Framework;
|
|
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
|
|
{
|
|
/// <summary>
|
|
/// 周转流程步序
|
|
/// </summary>
|
|
enum ETurnoverFlowStep
|
|
{
|
|
|
|
等待命令,
|
|
到周转盘取料位上方,
|
|
等待运动到周转盘取料位上方,
|
|
到周转盘下方取料位,
|
|
等待运动到周转盘下方取料位,
|
|
到周转盘取料破真空位,
|
|
等待到周转盘取料破真空位,
|
|
周转盘取料完成抬起,
|
|
等待周转盘取料完成抬起,
|
|
周转盘取料完成真空检测,
|
|
到测试放料位上方,
|
|
等待运动到测试放料位上方,
|
|
到测试放料位下方,
|
|
等待运动到到测试放料位下方,
|
|
测试位放料完成抬起,
|
|
等待测试位放料完成抬起,
|
|
测试位放料完成真空检测,
|
|
到测试保压位上方,
|
|
等待到测试保压位上方,
|
|
到测试保压位下方,
|
|
等待到测试保压位下方,
|
|
|
|
|
|
测试完成抬起,
|
|
等待测试完成抬起,
|
|
到测试取料位上方,
|
|
等待到测试取料位上方,
|
|
到测试取料位下方,
|
|
等待到测试取料位下方,
|
|
到测试破真空位,
|
|
等待到测试破真空位,
|
|
测试位取料完成抬起,
|
|
等待测试位取料完成抬起,
|
|
测试位取料完成后真空检测,
|
|
到周转盘放料位上方,
|
|
等待到周转盘放料位上方,
|
|
到周转盘放料位下方,
|
|
等待到周转盘放料位下方,
|
|
周转盘放料完成后真空检测,
|
|
周转盘放料完成抬起,
|
|
等待周转盘放料完成抬起,
|
|
到安全位,
|
|
等待到安全位,
|
|
|
|
}
|
|
|
|
enum ETestLoadStep
|
|
{
|
|
|
|
}
|
|
enum ETestUnloadStep
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 周转流程
|
|
/// </summary>
|
|
public class TurnoverFlow:BaseFlow
|
|
{
|
|
private static TurnoverFlow instance;
|
|
public static TurnoverFlow Instance
|
|
{
|
|
get
|
|
{
|
|
if(instance == null)
|
|
instance = new TurnoverFlow();
|
|
return instance;
|
|
}
|
|
}
|
|
|
|
private TurnoverFlow()
|
|
{
|
|
slots.Add(1);
|
|
slots.Add(2);
|
|
slots.Add(3);
|
|
slots.Add(4);
|
|
slots.Add(5);
|
|
slots.Add(6);
|
|
slots.Add(7);
|
|
slots.Add(8);
|
|
}
|
|
/// <summary>
|
|
/// 保压位上料
|
|
/// </summary>
|
|
private bool pressLoad = false;
|
|
/// <summary>
|
|
/// 保压位下料
|
|
/// </summary>
|
|
private bool pressUnload = false;
|
|
|
|
private bool loadOk = false;
|
|
private bool unloadOk = false;
|
|
string logInfo = "";
|
|
List<int> slots = new List<int>();
|
|
List<int> ngList = new List<int>();
|
|
ETurnoverFlowStep Step = ETurnoverFlowStep.等待命令;
|
|
double targetPos = 0.0;
|
|
Motion.ErrorCode errCode = Motion.ErrorCode.Ok;
|
|
public override void Run()
|
|
{
|
|
switch (Step)
|
|
{
|
|
case ETurnoverFlowStep.等待命令:
|
|
if(pressLoad)//测试位上料
|
|
{
|
|
pressLoad = false;
|
|
Step = ETurnoverFlowStep.到周转盘取料位上方;
|
|
}
|
|
if(pressUnload)//测试位下料
|
|
{
|
|
pressUnload = false;
|
|
Step = ETurnoverFlowStep.测试完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到周转盘取料位上方:
|
|
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeY");
|
|
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到周转盘取料位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待运动到周转盘取料位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待运动到周转盘取料位上方:
|
|
if (Ops.IsStop(AxisControl.TurnoverY))
|
|
{
|
|
logInfo = $"已运动到周转盘取料位上方 TurnoverY at:{Ops.GetCurPosition( AxisAlias.TurnoverY)}";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.到周转盘下方取料位;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到周转盘下方取料位:
|
|
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到周转盘下方取料位";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待运动到周转盘下方取料位;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待运动到周转盘下方取料位:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"已运动到周转盘下方取料位 at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
//打开真空吸
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转{slot}号吸嘴真空吸");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleOpenVacSuctionDelaytime);
|
|
|
|
//关闭周转盘真空吸
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"周转盘{slot}号穴位真空吸");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverTrayCloseVacSuctionDelaytime);
|
|
//打开周转盘真空破
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转盘{slot}号穴位真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverTrayOpenVacBreakDelaytime);
|
|
Step = ETurnoverFlowStep.到周转盘取料破真空位;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到周转盘取料破真空位:
|
|
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ")+GlobalVar.CloseVacOffsetHeight;
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if (errCode == Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到周转盘取料破真空位";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待到周转盘取料破真空位;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到周转盘取料破真空位:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"已到周转盘取料破真空位";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
//关闭周转盘真空破
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"周转盘{slot}号穴位真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverTrayCloseVacBreakDelaytime);
|
|
Step = ETurnoverFlowStep.周转盘取料完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.周转盘取料完成抬起:
|
|
targetPos = SysConfigParam.GetValue<double>("TurnoverSafeZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"周转盘取料完成抬起";
|
|
MessageQueue.Instance.Insert (logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待周转盘取料完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待周转盘取料完成抬起:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"已周转盘取料完成抬起";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.周转盘取料完成真空检测;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.周转盘取料完成真空检测:
|
|
ngList = CheckNozzleVac();
|
|
if(ngList.Count==0||GlobalVar.RunSpace)
|
|
{
|
|
logInfo = $"真空检测OK";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.到测试放料位上方;
|
|
}
|
|
else
|
|
{
|
|
string msg = string.Join(",", ngList.ToArray());
|
|
logInfo = $"周转吸嘴 {msg} 真空值未达到";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Msg.ShowError($"周转吸嘴 {msg} 真空值未达到,请处理后点击确定");
|
|
Step = ETurnoverFlowStep.到测试放料位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到测试放料位上方:
|
|
targetPos = SysConfigParam.GetValue<double>("PressDumpY");
|
|
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到测试放料位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待运动到测试放料位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待运动到测试放料位上方:
|
|
if (Ops.IsStop(AxisControl.TurnoverY))
|
|
{
|
|
logInfo = $"已运动到测试放料位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.到测试放料位下方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到测试放料位下方:
|
|
targetPos = SysConfigParam.GetValue<double>("PressDumpZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到测试放料位下方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待运动到到测试放料位下方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待运动到到测试放料位下方:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"已运动到到测试放料位下方 at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
OpenPressVac();
|
|
Thread.Sleep(GlobalVar.PressOpenVacSuctionDelaytime);
|
|
CloseNozzleVac();
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleCloseVacSuctionDelaytime);
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转{slot}号吸嘴真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleOpenVacBreakDelaytime);
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"周转{slot}号吸嘴真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleCloseVacBreakDelaytime);
|
|
Step = ETurnoverFlowStep.测试位放料完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.测试位放料完成抬起:
|
|
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"测试位放料完成抬起";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待测试位放料完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待测试位放料完成抬起:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"测试位放料完成抬起完成";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
if(GlobalVar.RunSpace)
|
|
{
|
|
Step = ETurnoverFlowStep.到测试保压位上方;
|
|
}
|
|
else
|
|
{
|
|
Step = ETurnoverFlowStep.测试位放料完成真空检测;
|
|
}
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.测试位放料完成真空检测:
|
|
ngList = TestVacCheck();
|
|
if(ngList.Count==0)
|
|
{
|
|
Step = ETurnoverFlowStep.到测试保压位上方;
|
|
}
|
|
else
|
|
{
|
|
string msg = string.Join(",", ngList.ToArray());
|
|
logInfo = $"测试穴位 {msg} 真空异常";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
|
|
Msg.ShowError($"测试穴位 {msg} 真空异常,请处理后点击确定");
|
|
Step = ETurnoverFlowStep.到测试保压位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到测试保压位上方:
|
|
targetPos = SysConfigParam.GetValue<double>("PressY");
|
|
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到测试保压位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待到测试保压位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到测试保压位上方:
|
|
if (Ops.IsStop(AxisControl.TurnoverY))
|
|
{
|
|
logInfo = $"已运动到测试保压位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.到测试保压位下方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到测试保压位下方:
|
|
targetPos = SysConfigParam.GetValue<double>("PressZ");
|
|
errCode = AxisControl.PressZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到测试保压位下方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
|
|
Step = ETurnoverFlowStep.等待到测试保压位下方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到测试保压位下方:
|
|
if (Ops.IsStop(AxisControl.PressZ))
|
|
{
|
|
logInfo = $"已到测试保压位下方 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
|
|
ClosePressVac();
|
|
Thread.Sleep(GlobalVar.PresseCloseVacSuctionDelaytime);
|
|
loadOk = true;
|
|
Step = ETurnoverFlowStep.等待命令;
|
|
}
|
|
break;
|
|
|
|
//-----------------------------------------------测试位下料
|
|
case ETurnoverFlowStep.测试完成抬起:
|
|
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
|
|
|
|
errCode = AxisControl.PressZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = "测试完成准备抬起";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待测试完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待测试完成抬起:
|
|
if (Ops.IsStop(AxisControl.PressZ))
|
|
{
|
|
logInfo = $"测试完成已抬起 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.到测试取料位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到测试取料位上方:
|
|
targetPos = SysConfigParam.GetValue<double>("PressTakeY");
|
|
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到测试取料位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
MessageQueue.Instance.Insert($"goto press take product up position");
|
|
Step = ETurnoverFlowStep.等待到测试取料位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到测试取料位上方:
|
|
if (Ops.IsStop(AxisControl.TurnoverY))
|
|
{
|
|
logInfo = $"已运动到测试取料位上方 TurnoverY at:{Ops.GetCurPosition(AxisAlias.TurnoverY)}";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.到测试取料位下方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到测试取料位下方:
|
|
targetPos = SysConfigParam.GetValue<double>("PressTakeZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到测试取料位下方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待到测试取料位下方;
|
|
}
|
|
break;
|
|
|
|
case ETurnoverFlowStep.等待到测试取料位下方:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"已运动到测试取料位下方 TurnoverZ at:{Ops.GetCurPosition("TurnoverZ")}";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
//打开吸嘴真空吸
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转{slot}号吸嘴真空吸");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleOpenVacSuctionDelaytime);
|
|
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"测试{slot}号穴位真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.PresseOpenVacBreakDelaytime);
|
|
Step = ETurnoverFlowStep.到测试破真空位;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到测试破真空位:
|
|
logInfo = $"到测试破真空位";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
|
|
targetPos = SysConfigParam.GetValue<double>("PressTakeZ")+1;
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if (errCode == Motion.ErrorCode.Ok)
|
|
{
|
|
Step = ETurnoverFlowStep.等待到测试破真空位;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到测试破真空位:
|
|
if(Ops.IsStop(AxisAlias.TurnoverZ))
|
|
{
|
|
logInfo = $"已运动到测试破真空位";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"测试{slot}号穴位真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.PressCloseVacBreakDelaytime);
|
|
Step = ETurnoverFlowStep.测试位取料完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.测试位取料完成抬起:
|
|
targetPos = SysConfigParam.GetValue<double>("PressSafeZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"测试位取料完成准备抬起";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待测试位取料完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待测试位取料完成抬起:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"测试位取料完成已抬起";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.测试位取料完成后真空检测;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.测试位取料完成后真空检测:
|
|
ngList = CheckNozzleVac();
|
|
if (ngList.Count==0 || GlobalVar.RunSpace)
|
|
{
|
|
Step = ETurnoverFlowStep.到周转盘放料位上方;
|
|
}
|
|
else
|
|
{
|
|
string msg = string.Join(",", ngList.ToArray());
|
|
Msg.ShowError($"吸嘴{msg}真空值未达到,请处理后点击确定");
|
|
Step = ETurnoverFlowStep.到周转盘放料位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到周转盘放料位上方:
|
|
targetPos = SysConfigParam.GetValue<double>("TurnoverDumpY");
|
|
//targetPos = SysConfigParam.GetValue<double>("TurnoverTakeY");
|
|
errCode = AxisControl.TurnoverY.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到周转盘放料位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待到周转盘放料位上方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到周转盘放料位上方:
|
|
if (Ops.IsStop(AxisControl.TurnoverY))
|
|
{
|
|
logInfo = $"已运动到周转盘放料位上方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.到周转盘放料位下方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到周转盘放料位下方:
|
|
//targetPos = SysConfigParam.GetValue<double>("TurnoverDumpZ");
|
|
targetPos = SysConfigParam.GetValue<double>("TurnoverTakeZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos+1, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"到周转盘放料位下方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待到周转盘放料位下方;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到周转盘放料位下方:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"已运动到周转盘放料位下方";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
//打开周转盘真空吸
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转盘{slot + 8}号穴位真空吸");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverTrayOpenVacSuctionDelaytime);
|
|
//关闭吸嘴真空吸
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"周转{slot}号吸嘴真空吸");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleCloseVacSuctionDelaytime);
|
|
//打开吸嘴真空破
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转{slot}号吸嘴真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleOpenVacBreakDelaytime);
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"周转{slot}号吸嘴真空破");
|
|
}
|
|
Thread.Sleep(GlobalVar.TurnoverNozzleCloseVacBreakDelaytime);
|
|
Step = ETurnoverFlowStep.周转盘放料完成抬起;
|
|
}
|
|
break;
|
|
|
|
case ETurnoverFlowStep.周转盘放料完成抬起:
|
|
targetPos = SysConfigParam.GetValue<double>("TurnoverSafeZ");
|
|
errCode = AxisControl.TurnoverZ.MovePos(targetPos, GlobalVar.WholeSpeed);
|
|
if(errCode== Motion.ErrorCode.Ok)
|
|
{
|
|
logInfo = $"周转盘放料完成准备抬起";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待周转盘放料完成抬起;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待周转盘放料完成抬起:
|
|
if (Ops.IsStop(AxisControl.TurnoverZ))
|
|
{
|
|
logInfo = $"周转盘放料完成已抬起";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.周转盘放料完成后真空检测;
|
|
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.周转盘放料完成后真空检测:
|
|
ngList = TurnoverTrayVacCheck();
|
|
if (ngList.Count == 0 || GlobalVar.RunSpace)
|
|
{
|
|
Step = ETurnoverFlowStep.到安全位;
|
|
//判断周转盘是否有需要测试的穴位
|
|
//List<TraySlot> haveSlots = GlobalTray.TurnoverTray.GetSlots(ESlotStatus.Have);
|
|
//var loadList = haveSlots.Where(slot => ((slot.Index >= 1 && slot.Index <= 8) || (slot.Index >= 17 && slot.Index <= 24)));
|
|
//if (loadList.Count()==0)
|
|
//{
|
|
// //周转盘没有需要测试的穴位,把轴移动到安全位
|
|
// Step = ETurnoverFlowStep.到安全位;
|
|
//}
|
|
//else
|
|
//{
|
|
// unloadOk = true;
|
|
// Step = ETurnoverFlowStep.等待命令;
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
string msg = string.Join(",", ngList);
|
|
Msg.ShowError($"周转穴位{msg}真空异常,请处理后点击确定");
|
|
Step = ETurnoverFlowStep.到安全位;
|
|
//判断周转盘是否有需要测试的穴位
|
|
//List<TraySlot> haveSlots = GlobalTray.TurnoverTray.GetSlots(ESlotStatus.Have);
|
|
//var loadList = haveSlots.Where(slot => ((slot.Index >= 1 && slot.Index <= 8) || (slot.Index >= 17 && slot.Index <= 24)));
|
|
//if (loadList.Count() == 0)
|
|
//{
|
|
// //周转盘没有需要测试的穴位,把轴移动到安全位
|
|
// Step = ETurnoverFlowStep.到安全位;
|
|
//}
|
|
//else
|
|
//{
|
|
// unloadOk = true;
|
|
// Step = ETurnoverFlowStep.等待命令;
|
|
//}
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.到安全位:
|
|
errCode = AxisControl.TurnoverY.MovePos(SysConfigParam.GetValue<double>("PressY"), GlobalVar.WholeSpeed);
|
|
if ((errCode> Motion.ErrorCode.Ok))
|
|
{
|
|
Msg.ShowError($"TurnoverY move fail ret:{errCode}");
|
|
}
|
|
else
|
|
{
|
|
logInfo = $"到安全位";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
Step = ETurnoverFlowStep.等待到安全位;
|
|
}
|
|
break;
|
|
case ETurnoverFlowStep.等待到安全位:
|
|
if(Ops.IsStop("TurnoverY"))
|
|
{
|
|
logInfo = $"已运动到安全位,任务结束";
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
LogHelper.Debug(logInfo);
|
|
unloadOk = true;
|
|
Step = ETurnoverFlowStep.等待命令;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
public bool LoadFinished()
|
|
{
|
|
return loadOk;
|
|
}
|
|
|
|
public bool UnloadFinished()
|
|
{ return unloadOk; }
|
|
|
|
public void PressLoad(List<TurnoverInfo> taskList)
|
|
{
|
|
slots.Clear();
|
|
foreach(var slot in taskList)
|
|
{
|
|
slots.Add(slot.FromIndex+1);
|
|
}
|
|
pressLoad = true;
|
|
loadOk= false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 周转盘真空吸检测
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<int> TurnoverTrayVacCheck()
|
|
{
|
|
List<int> result = new List<int>();
|
|
foreach (var slot in slots)
|
|
{
|
|
if (!Ops.IsOn($"周转盘{slot+8}号穴位真空吸检测"))
|
|
{
|
|
result.Add(slot+8);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试穴位真空吸检测
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public List<int> TestVacCheck()
|
|
{
|
|
List<int> result = new List<int>();
|
|
foreach (var slot in slots)
|
|
{
|
|
if (!Ops.IsOn($"测试{slot}号穴位真空吸检测"))
|
|
{
|
|
result.Add(slot);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public void PressUnload(List<TurnoverInfo> taskList)
|
|
{
|
|
slots.Clear();
|
|
foreach (var item in taskList)
|
|
{
|
|
slots.Add(item.FromIndex+1);
|
|
}
|
|
pressUnload = true;
|
|
unloadOk= false;
|
|
}
|
|
/// <summary>
|
|
/// 吸嘴真空吸检测
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
List<int> CheckNozzleVac()
|
|
{
|
|
List<int> ngList = new List<int>();
|
|
//周转1号吸嘴真空吸检测
|
|
foreach (var slot in slots)
|
|
{
|
|
if (!Ops.IsOn($"周转{slot}号吸嘴真空吸检测"))
|
|
{
|
|
ngList.Add(slot);
|
|
}
|
|
}
|
|
return ngList;
|
|
}
|
|
|
|
void OpenNozzleVac()
|
|
{
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转{slot}号吸嘴真空吸");
|
|
}
|
|
}
|
|
|
|
void CloseNozzleVac()
|
|
{
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"周转{slot}号吸嘴真空吸");
|
|
}
|
|
}
|
|
|
|
void OpenTurnoverTrayVac()
|
|
{
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"周转盘{slot}号穴位真空吸");
|
|
}
|
|
}
|
|
|
|
void CloseTurnoverTrayVac()
|
|
{
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"周转盘{slot}号穴位真空吸");
|
|
}
|
|
}
|
|
|
|
void OpenPressVac()
|
|
{
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.On($"测试{slot}号穴位真空吸");
|
|
}
|
|
}
|
|
|
|
void ClosePressVac()
|
|
{
|
|
foreach (var slot in slots)
|
|
{
|
|
Ops.Off($"测试{slot}号穴位真空吸");
|
|
}
|
|
}
|
|
}
|
|
}
|