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.

178 lines
7.3 KiB
C#

using Rs.Controls;
using Rs.Framework;
using Rs.MotionPlat.Commom;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Rs.MotionPlat.Flow.Space
{
enum ETakeTrayTestStep
{
,
,
,
,
,
,
,
,
,
,
,
}
public class TakeTrayTest:BaseFlow
{
Dictionary<int, string> trayNameDic = new Dictionary<int, string>();
private static TakeTrayTest instance;
public static TakeTrayTest Instance
{
get
{
if (instance == null)
instance = new TakeTrayTest();
return instance;
}
}
private TakeTrayTest()
{
trayNameDic.Add(1, "Empty1");
trayNameDic.Add(2, "Input");
trayNameDic.Add(3, "Ok");
trayNameDic.Add(4, "Ng");
trayNameDic.Add(5, "Multi");
trayNameDic.Add(6, "Empty2");
}
int trayIndex = 1;
Stopwatch stopwatch = new Stopwatch();
ETakeTrayTestStep step = ETakeTrayTestStep.;
public override void Run()
{
switch (step)
{
case ETakeTrayTestStep.:
double centerX = SysConfigParam.GetValue<double>($"Tray{trayNameDic[trayIndex]}CenterX");
double centerY = SysConfigParam.GetValue<double>($"Tray{trayNameDic[trayIndex]}CenterY");
double cameraCenterX = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterX");
double cameraCenterY = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterY");
Motion.ErrorCode errCode = AxisControl.LoadX.MovePos(centerX + cameraCenterX, GlobalVar.TakeTraySpeed);
if (errCode == Motion.ErrorCode.Ok)
{
errCode = AxisControl.LoadY.MovePos(centerY + cameraCenterY, GlobalVar.TakeTraySpeed);
if (errCode == Motion.ErrorCode.Ok)
{
step = ETakeTrayTestStep.;
}
}
break;
case ETakeTrayTestStep.:
if(Ops.IsStop("LoadX","LoadY"))
{
step = ETakeTrayTestStep.;
}
break;
case ETakeTrayTestStep.:
Ops.On("上下气缸电磁阀动位");
Ops.Off("上下气缸电磁阀原位");
Thread.Sleep(150);
step = ETakeTrayTestStep.;
stopwatch.Restart();
break;
case ETakeTrayTestStep.:
if (Ops.IsOn("上下气缸动位") || stopwatch.ElapsedMilliseconds>5000)
{
stopwatch.Stop();
Ops.On("夹爪真空吸");
Thread.Sleep(150);
step = ETakeTrayTestStep.;
}
break;
case ETakeTrayTestStep.:
Ops.Off("上下气缸电磁阀动位");
Ops.On("上下气缸电磁阀原位");
Thread.Sleep(150);
step = ETakeTrayTestStep.;
break;
case ETakeTrayTestStep.:
if(Ops.IsOn("上下气缸原位"))
{
step = ETakeTrayTestStep.;
if(trayIndex==6)
{
trayIndex = 1;
}
else
{
trayIndex++;
}
}
break;
case ETakeTrayTestStep.:
centerX = SysConfigParam.GetValue<double>($"Tray{trayNameDic[trayIndex]}CenterX");
centerY = SysConfigParam.GetValue<double>($"Tray{trayNameDic[trayIndex]}CenterY");
cameraCenterX = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterX");
cameraCenterY = SysConfigParam.GetValue<double>("ClampCenter2UpCameraCenterY");
errCode = AxisControl.LoadX.MovePos(centerX + cameraCenterX, GlobalVar.TakeTraySpeed);
if (errCode == Motion.ErrorCode.Ok)
{
errCode = AxisControl.LoadY.MovePos(centerY + cameraCenterY, GlobalVar.TakeTraySpeed);
if (errCode == Motion.ErrorCode.Ok)
{
step = ETakeTrayTestStep.;
}
}
break;
case ETakeTrayTestStep.:
if (Ops.IsStop("LoadX", "LoadY"))
{
step = ETakeTrayTestStep.;
}
break;
case ETakeTrayTestStep.:
Ops.On("上下气缸电磁阀动位");
Ops.Off("上下气缸电磁阀原位");
Thread.Sleep(150);
step = ETakeTrayTestStep.;
stopwatch.Restart();
break;
case ETakeTrayTestStep.:
if(Ops.IsOn("上下气缸动位") || stopwatch.ElapsedMilliseconds > 5000)
{
stopwatch.Stop();
Ops.Off("夹爪真空吸");
Thread.Sleep(10);
Ops.On("夹爪真空破");
Thread.Sleep(200);
Ops.Off("夹爪真空破");
step = ETakeTrayTestStep.;
}
break;
case ETakeTrayTestStep.:
Ops.Off("上下气缸电磁阀动位");
Ops.On("上下气缸电磁阀原位");
Thread.Sleep(150);
step = ETakeTrayTestStep.;
break;
case ETakeTrayTestStep.:
if(Ops.IsOn("上下气缸原位"))
{
step = ETakeTrayTestStep.;
}
break;
}
}
}
}