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.

179 lines
8.1 KiB
C#

2 years ago
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;
}
}
});
}
}
}