|
|
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
|
|
|
{
|
|
|
|
|
|
public class HomeFlow
|
|
|
{
|
|
|
ushort homeStep = 0;
|
|
|
private static HomeFlow instace;
|
|
|
private bool m_bCancle = false;
|
|
|
private bool m_bHomed = false;
|
|
|
private Stopwatch homeTime = new Stopwatch();
|
|
|
public static HomeFlow Instance
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
if (instace == null)
|
|
|
instace = new HomeFlow();
|
|
|
return instace;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void CancleHome()
|
|
|
{
|
|
|
m_bCancle = true;
|
|
|
}
|
|
|
|
|
|
private HomeFlow() { }
|
|
|
|
|
|
public void StartGoHome()
|
|
|
{
|
|
|
MachineManage.Instance.InitializeState = EInitializeState.Initializing ;
|
|
|
Task.Run(() =>
|
|
|
{
|
|
|
|
|
|
while (true && !m_bCancle && !m_bHomed)
|
|
|
{
|
|
|
switch (homeStep)
|
|
|
{
|
|
|
case 0://所有的Z轴回原
|
|
|
MessageQueue.Instance.Insert("Z轴开始回零");
|
|
|
m_bHomed = false;
|
|
|
homeTime.Restart();
|
|
|
MachineManage.Instance.MachineStatus = EMachineStatus.Homing;
|
|
|
//料仓Z轴回零
|
|
|
AxisControl.GetAxis($"StockZ1").Home();
|
|
|
AxisControl.GetAxis($"StockZ2").Home();
|
|
|
AxisControl.GetAxis($"StockZ3").Home();
|
|
|
AxisControl.GetAxis($"StockZ4").Home();
|
|
|
AxisControl.GetAxis($"StockZ5").Home();
|
|
|
AxisControl.GetAxis($"StockZ6").Home();
|
|
|
|
|
|
AxisControl.GetAxis($"NozzleZ1").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ2").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ3").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ4").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ5").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ6").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ7").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ8").Home();
|
|
|
AxisControl.GetAxis($"NozzleZ9").Home();
|
|
|
//保压Z轴回原
|
|
|
AxisControl.PressZ.Home();
|
|
|
//周转Z轴回原
|
|
|
AxisControl.TurnoverZ.Home();
|
|
|
homeStep++;
|
|
|
break;
|
|
|
case 1://等待所有Z轴回原完成
|
|
|
if (homeTime.ElapsedMilliseconds < 1000 * 60 * 2)//5分钟还未回零成功,则返回回零超时
|
|
|
{
|
|
|
if (Ops.AllZHomed() && Ops.IsHomed("StockZ1","StockZ2", "StockZ3", "StockZ4", "StockZ5", "StockZ6", "PressZ", "TurnoverZ"))
|
|
|
{
|
|
|
MessageQueue.Instance.Insert("Z axis home finished!");
|
|
|
homeStep++;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
AxisControl.GetAxis($"StockZ1").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"StockZ2").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"StockZ3").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"StockZ4").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"StockZ5").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"StockZ6").Abort_Go_Home();
|
|
|
|
|
|
AxisControl.GetAxis($"NozzleZ1").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ2").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ3").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ4").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ5").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ6").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ7").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ8").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleZ9").Abort_Go_Home();
|
|
|
//保压Z轴回原
|
|
|
AxisControl.PressZ.Abort_Go_Home();
|
|
|
//周转Z轴回原
|
|
|
AxisControl.TurnoverZ.Abort_Go_Home();
|
|
|
MachineManage.Instance.MachineStatus = EMachineStatus.HomeFail;
|
|
|
MessageQueue.Instance.Insert("Device home fail");
|
|
|
CancleHome();
|
|
|
}
|
|
|
break;
|
|
|
case 2:
|
|
|
AxisControl.TurnoverZ.MovePos(0.22, GlobalVar.WholeSpeed);
|
|
|
AxisControl.PressZ.MovePos(0.2, GlobalVar.WholeSpeed);
|
|
|
homeStep++;
|
|
|
break;
|
|
|
case 3:
|
|
|
if (Ops.IsStop("TurnoverZ", "PressZ"))
|
|
|
{
|
|
|
Thread.Sleep(100);
|
|
|
homeStep++;
|
|
|
}
|
|
|
break;
|
|
|
case 4://XY回零
|
|
|
MessageQueue.Instance.Insert("x y r go home");
|
|
|
AxisControl.GetAxis($"NozzleR1").Home();
|
|
|
AxisControl.GetAxis($"NozzleR2").Home();
|
|
|
AxisControl.GetAxis($"NozzleR3").Home();
|
|
|
AxisControl.GetAxis($"NozzleR4").Home();
|
|
|
AxisControl.GetAxis($"NozzleR5").Home();
|
|
|
AxisControl.GetAxis($"NozzleR6").Home();
|
|
|
AxisControl.GetAxis($"NozzleR7").Home();
|
|
|
AxisControl.GetAxis($"NozzleR8").Home();
|
|
|
AxisControl.GetAxis($"NozzleR9").Home();
|
|
|
AxisControl.LoadX.Home();
|
|
|
AxisControl.LoadY.Home();
|
|
|
AxisControl.TurnoverY.Home();
|
|
|
homeStep++;
|
|
|
break;
|
|
|
case 5:
|
|
|
|
|
|
if (homeTime.ElapsedMilliseconds < 1000 * 60 * 2)//5分钟还未回零成功,则返回回零超时
|
|
|
{
|
|
|
if (Ops.IsHomed("LoadX", "LoadY", "TurnoverY") && Ops.AllRHomed())
|
|
|
{
|
|
|
homeStep++;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
AxisControl.GetAxis($"NozzleR1").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR2").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR3").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR4").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR5").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR6").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR7").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR8").Abort_Go_Home();
|
|
|
AxisControl.GetAxis($"NozzleR9").Abort_Go_Home();
|
|
|
AxisControl.LoadX.Abort_Go_Home();
|
|
|
AxisControl.LoadY.Abort_Go_Home();
|
|
|
AxisControl.TurnoverY.Abort_Go_Home();
|
|
|
MachineManage.Instance.MachineStatus = EMachineStatus.HomeFail;
|
|
|
MessageQueue.Instance.Insert("Device home fail");
|
|
|
CancleHome();
|
|
|
}
|
|
|
break;
|
|
|
case 6://go to start position
|
|
|
Thread.Sleep(200);
|
|
|
AxisControl.NozzleR1.MovePos(SysConfigParam.GetValue<double>("NozzleR1StartPos"), 4);
|
|
|
AxisControl.NozzleR2.MovePos(SysConfigParam.GetValue<double>("NozzleR2StartPos"), 4);
|
|
|
AxisControl.NozzleR3.MovePos(SysConfigParam.GetValue<double>("NozzleR3StartPos"), 4);
|
|
|
AxisControl.NozzleR4.MovePos(SysConfigParam.GetValue<double>("NozzleR4StartPos"), 4);
|
|
|
AxisControl.NozzleR5.MovePos(SysConfigParam.GetValue<double>("NozzleR5StartPos"), 4);
|
|
|
AxisControl.NozzleR6.MovePos(SysConfigParam.GetValue<double>("NozzleR6StartPos"), 4);
|
|
|
AxisControl.NozzleR7.MovePos(SysConfigParam.GetValue<double>("NozzleR7StartPos"), 4);
|
|
|
AxisControl.NozzleR8.MovePos(SysConfigParam.GetValue<double>("NozzleR8StartPos"), 4);
|
|
|
AxisControl.NozzleR9.MovePos(SysConfigParam.GetValue<double>("NozzleR9StartPos"), 4);
|
|
|
AxisControl.LoadX.MovePos(SysConfigParam.GetValue<double>("LoadXStartPos"), 4);
|
|
|
AxisControl.LoadY.MovePos(SysConfigParam.GetValue<double>("LoadYStartPos"), 4);
|
|
|
homeStep++;
|
|
|
break;
|
|
|
case 7:
|
|
|
if (Ops.IsStop("LoadX","LoadY","NozzleR1", "NozzleR2", "NozzleR3", "NozzleR4", "NozzleR5", "NozzleR6", "NozzleR7", "NozzleR8", "NozzleR9"))
|
|
|
{
|
|
|
MachineManage.Instance.RunStatus = Commom.ERunStatus.Stopped;
|
|
|
MessageQueue.Instance.Insert("Device home ok");
|
|
|
MachineManage.Instance.MachineStatus = EMachineStatus.Homed;
|
|
|
m_bHomed = true;
|
|
|
MachineManage.Instance.InitializeState = EInitializeState.Initialized;
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
}
|