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; } } }); } } }