|
|
|
|
using Rs.Framework;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
public class SpaceFlow
|
|
|
|
|
{
|
|
|
|
|
int flowStep = 0;
|
|
|
|
|
private static SpaceFlow instace;
|
|
|
|
|
private bool m_bCancle = false;
|
|
|
|
|
private bool m_bHomed = false;
|
|
|
|
|
private bool m_bStop = false;
|
|
|
|
|
double startPos = -2;
|
|
|
|
|
double endPos = -15;
|
|
|
|
|
int vel = 50;
|
|
|
|
|
public static SpaceFlow Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (instace == null)
|
|
|
|
|
instace = new SpaceFlow();
|
|
|
|
|
return instace;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void CancleHome()
|
|
|
|
|
{
|
|
|
|
|
m_bCancle = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Stop()
|
|
|
|
|
{
|
|
|
|
|
m_bStop = true;
|
|
|
|
|
MachineManage.Instance.MachineStatus = EMachineStatus.Stop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SpaceFlow() { }
|
|
|
|
|
|
|
|
|
|
public void Restart()
|
|
|
|
|
{
|
|
|
|
|
m_bStop = false;
|
|
|
|
|
MachineManage.Instance.MachineStatus = EMachineStatus.Working;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Start()
|
|
|
|
|
{
|
|
|
|
|
Task.Run(()=> {
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
if(m_bStop &&!m_bCancle)
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
switch (flowStep)
|
|
|
|
|
{
|
|
|
|
|
case 0://所有Z轴到起始位
|
|
|
|
|
AxisControl.VacZ1.MovePos(startPos, vel);
|
|
|
|
|
AxisControl.VacZ2.MovePos(startPos, vel);
|
|
|
|
|
AxisControl.VacZ3.MovePos(startPos, vel);
|
|
|
|
|
AxisControl.VacZ4.MovePos(startPos, vel);
|
|
|
|
|
AxisControl.VacZ5.MovePos(startPos, vel);
|
|
|
|
|
AxisControl.VacZ6.MovePos(startPos, vel);
|
|
|
|
|
AxisControl.VacZ7.MovePos(startPos, vel);
|
|
|
|
|
flowStep++;
|
|
|
|
|
MessageQueue.Instance.Insert("z go to start point");
|
|
|
|
|
break;
|
|
|
|
|
case 1://等待所有Z轴运动停止
|
|
|
|
|
AxisControl.VacZ1.IsStop(out bool z1Stoped);
|
|
|
|
|
AxisControl.VacZ2.IsStop(out bool z2Stoped);
|
|
|
|
|
AxisControl.VacZ3.IsStop(out bool z3Stoped);
|
|
|
|
|
AxisControl.VacZ4.IsStop(out bool z4Stoped);
|
|
|
|
|
AxisControl.VacZ5.IsStop(out bool z5Stoped);
|
|
|
|
|
AxisControl.VacZ6.IsStop(out bool z6Stoped);
|
|
|
|
|
AxisControl.VacZ7.IsStop(out bool z7Stoped);
|
|
|
|
|
if(z1Stoped&&z2Stoped&&z3Stoped&&z4Stoped&&z5Stoped&&z6Stoped&&z7Stoped)
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert("z arrived start point");
|
|
|
|
|
flowStep++;
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
AxisControl.VacR1.MoveOffset(-360, vel);
|
|
|
|
|
AxisControl.VacR2.MoveOffset(-360, vel);
|
|
|
|
|
AxisControl.VacR3.MoveOffset(-360, vel);
|
|
|
|
|
AxisControl.VacR4.MoveOffset(-360, vel);
|
|
|
|
|
AxisControl.VacR5.MoveOffset(-360, vel);
|
|
|
|
|
AxisControl.VacR6.MoveOffset(-360, vel);
|
|
|
|
|
AxisControl.VacR7.MoveOffset(-360, vel);
|
|
|
|
|
AxisControl.VacB.MovePos(-108, vel);// (-360, vel);
|
|
|
|
|
MessageQueue.Instance.Insert("r go to -360");
|
|
|
|
|
flowStep++;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
AxisControl.VacR1.IsStop(out bool r1Stoped);
|
|
|
|
|
AxisControl.VacR2.IsStop(out bool r2Stoped);
|
|
|
|
|
AxisControl.VacR3.IsStop(out bool r3Stoped);
|
|
|
|
|
AxisControl.VacR4.IsStop(out bool r4Stoped);
|
|
|
|
|
AxisControl.VacR5.IsStop(out bool r5Stoped);
|
|
|
|
|
AxisControl.VacR6.IsStop(out bool r6Stoped);
|
|
|
|
|
AxisControl.VacR7.IsStop(out bool r7Stoped);
|
|
|
|
|
AxisControl.VacB.IsStop(out bool bStoped);
|
|
|
|
|
if (r1Stoped && r2Stoped && r3Stoped && r4Stoped && r5Stoped && r6Stoped && r7Stoped && bStoped)
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert("r arrived -360");
|
|
|
|
|
flowStep++;
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 4://所有Z轴运动到终点位
|
|
|
|
|
AxisControl.VacZ1.MovePos(endPos, vel);
|
|
|
|
|
AxisControl.VacZ2.MovePos(endPos, vel);
|
|
|
|
|
AxisControl.VacZ3.MovePos(endPos, vel);
|
|
|
|
|
AxisControl.VacZ4.MovePos(endPos, vel);
|
|
|
|
|
AxisControl.VacZ5.MovePos(endPos, vel);
|
|
|
|
|
AxisControl.VacZ6.MovePos(endPos, vel);
|
|
|
|
|
AxisControl.VacZ7.MovePos(endPos, vel);
|
|
|
|
|
flowStep++;
|
|
|
|
|
MessageQueue.Instance.Insert("z go to end point");
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
AxisControl.VacZ1.IsStop(out z1Stoped);
|
|
|
|
|
AxisControl.VacZ2.IsStop(out z2Stoped);
|
|
|
|
|
AxisControl.VacZ3.IsStop(out z3Stoped);
|
|
|
|
|
AxisControl.VacZ4.IsStop(out z4Stoped);
|
|
|
|
|
AxisControl.VacZ5.IsStop(out z5Stoped);
|
|
|
|
|
AxisControl.VacZ6.IsStop(out z6Stoped);
|
|
|
|
|
AxisControl.VacZ7.IsStop(out z7Stoped);
|
|
|
|
|
if (z1Stoped && z2Stoped && z3Stoped && z4Stoped && z5Stoped && z6Stoped && z7Stoped)
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert("z arrived end point");
|
|
|
|
|
flowStep++;
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
AxisControl.VacR1.MoveOffset(360, vel);
|
|
|
|
|
AxisControl.VacR2.MoveOffset(360, vel);
|
|
|
|
|
AxisControl.VacR3.MoveOffset(360, vel);
|
|
|
|
|
AxisControl.VacR4.MoveOffset(360, vel);
|
|
|
|
|
AxisControl.VacR5.MoveOffset(360, vel);
|
|
|
|
|
AxisControl.VacR6.MoveOffset(360, vel);
|
|
|
|
|
AxisControl.VacR7.MoveOffset(360, vel);
|
|
|
|
|
AxisControl.VacB.MovePos(0, vel);
|
|
|
|
|
flowStep++;
|
|
|
|
|
MessageQueue.Instance.Insert("r go to 360");
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
AxisControl.VacR1.IsStop(out r1Stoped);
|
|
|
|
|
AxisControl.VacR2.IsStop(out r2Stoped);
|
|
|
|
|
AxisControl.VacR3.IsStop(out r3Stoped);
|
|
|
|
|
AxisControl.VacR4.IsStop(out r4Stoped);
|
|
|
|
|
AxisControl.VacR5.IsStop(out r5Stoped);
|
|
|
|
|
AxisControl.VacR6.IsStop(out r6Stoped);
|
|
|
|
|
AxisControl.VacR7.IsStop(out r7Stoped);
|
|
|
|
|
AxisControl.VacB.IsStop(out bStoped);
|
|
|
|
|
if (r1Stoped && r2Stoped && r3Stoped && r4Stoped && r5Stoped && r6Stoped && r7Stoped&& bStoped)
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert("r arrived 360");
|
|
|
|
|
flowStep = 0;
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|