public static bool SystemExit(bool shutDown, bool isOk = true) { try { Globals.AppCfg.Shutdown = isOk; Globals.AppCfg.SaveDefaultSysConfigFile();//保存当前应用配置 if (X_Axis != null && X_Axis.Enabled) { X_Axis.AxisAotoEscapeLimit(); } if (Y_Axis != null && Y_Axis.Enabled) { Y_Axis.AxisAotoEscapeLimit(); } if (T_Axis != null && T_Axis.Enabled) { T_Axis.AxisAotoEscapeLimit(); } if (Z_Axis != null && Z_Axis.Enabled) { Z_Axis.AxisAotoEscapeLimit(); Z_Axis.AxisGoHomeWork(true); //Z轴回位操作 ReportCmdKeyProgress(CmdKey.S0407); //Z轴回零成功 } if (SPD != null && SPD.IsInit) { SPD.StopSpd(); ReportCmdKeyProgress(CmdKey.S0607); } HwProvider.UnInitHardwareDriver(); //关闭所有硬件 ReportCmdKeyProgress(CmdKey.S0023); //判定是否需要延迟断电 backWorker.CancelAsync(); LogHelper.CloseLogerConnect(); } catch { } if (shutDown) { ProcessCmd.SetSystemShutdown(); } else { //ProcessCmd.ShowWindowDesk();//显示Window桌面 //ProcessCmd.ShowLogicalDriver();//显示硬盘 //ProcessCmd.UsedTaskMgrForm();//使用任务管理器 //ProcessCmd.SetSystytemLoadShell(true);//设置系统默认加载路径并注销系统 } Application.Exit(); return(true); }
public static PointF GetCenterPoint(PointF p1, PointF p2, float angle) { try { T_Axis.AxisJogIncWork(angle); PointF center = Com.RotateMath.RotateCenterPoint(p1, p2, angle); X_Axis.AxisJogAbsWork(center.X); Y_Axis.AxisJogAbsWork(center.Y); return(center); } catch { return(p1); } }
private static bool SystemInitCheckStatus() { if (!Globals.Load) { ReportCmdKeyProgress(CmdKey.S0106); return(false); } if (!X_Axis.Enabled) { X_Axis.EnableAmpC(); } if (!Y_Axis.Enabled) { Y_Axis.EnableAmpC(); } if (!Z_Axis.Enabled) { Z_Axis.EnableAmpC(); } if (!T_Axis.Enabled) { T_Axis.EnableAmpC(); } if (!X_Axis.Enabled) { ReportCmdKeyProgress(CmdKey.S0209); return(false); } if (!Y_Axis.Enabled) { ReportCmdKeyProgress(CmdKey.S0309); return(false); } if (!Z_Axis.Enabled) { ReportCmdKeyProgress(CmdKey.S0409); return(false); } if (!T_Axis.Enabled) { ReportCmdKeyProgress(CmdKey.S0509); return(false); } return(true); }
public static bool EmergencyStop() { try { Globals.LedCmd.Cmd = Globals.DevData.EmgLedCmd.Cmd; ReportCmdKeyProgress(CmdKey.S0093); bool flag = X_Axis.JogStop(); flag &= Y_Axis.JogStop(); flag &= T_Axis.JogStop(); flag &= Z_Axis.JogStop(); flag &= Z_Axis.AxisJogAbsWork(Globals.MacData.ZStartPos); Globals.EMG = false; return(flag); } catch { Common.ReportCmdKeyProgress(CmdKey.S0091); return(false); } }
public static PointF AlignT(PointF p1, PointF p2, PointF center, out float angle) { angle = (float)RotateMath.GetPointsAngle(p1, p2); try { if (!Globals.IsInit) { Common.ReportCmdKeyProgress(CmdKey.A0005); return(p1); } //PointF p = Com.RotateMath.PointRotate(center, new PointF((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2), a); PointF p = RotateMath.PointRotate(center, p1, angle); T_Axis.AxisJogIncWork(angle); X_Axis.JogAbs(Globals.MacData.TAdjSpeed, Globals.MacData.TAdjAcc, p.X); Y_Axis.AxisJogAbsWork(p.Y); return(p); } catch { Common.ReportCmdKeyProgress(CmdKey.S0091); return(p1); } }
public static bool SystemInit() { try { if (SystemInitCheckStatus()) { bool flag = true; ReportCmdKeyProgress(CmdKey.S0100); //开始系统初始化 if (!InitAxisSystemParam()) //重新进行系统初始化 { flag = false; ReportCmdKeyProgress(CmdKey.S0013); } else { ReportCmdKeyProgress(CmdKey.S0012); } Globals.LedCmd.Cmd = Globals.DevData.InitLedCmd.Cmd; X_Axis.AxisAotoEscapeLimit(); Y_Axis.AxisAotoEscapeLimit(); Z_Axis.AxisAotoEscapeLimit(); T_Axis.AxisAotoEscapeLimit(); if (Z_Axis.AxisGoHomeWork(true)) { ReportCmdKeyProgress(CmdKey.S0407); } else { ReportCmdKeyProgress(CmdKey.S0408); flag &= false; } flag &= X_Axis.AxisGoHomeWork(); flag &= Y_Axis.AxisGoHomeWork(); flag &= T_Axis.AxisGoHomeWork(); if (!WaitAxisMoveDone(500))//延迟20S判断 { ReportCmdKeyProgress(CmdKey.S0096); return(false); } ReportCmdKeyProgress(CmdKey.S0108); flag &= X_Axis.SetPrePosition(X_Axis.Param.StartPos); flag &= Y_Axis.SetPrePosition(Y_Axis.Param.StartPos); flag &= T_Axis.SetPrePosition(T_Axis.Param.StartPos); ReportCmdKeyProgress(CmdKey.S0109); flag &= X_Axis.SetLimitSwitch(true); flag &= Y_Axis.SetLimitSwitch(true); flag &= T_Axis.SetLimitSwitch(true); flag &= X_Axis.SetSoftPLimit(X_Axis.Param.SoftPlimit); flag &= X_Axis.SetSoftNLimit(X_Axis.Param.SoftNlimit); flag &= Y_Axis.SetSoftPLimit(Y_Axis.Param.SoftPlimit); flag &= Y_Axis.SetSoftNLimit(Y_Axis.Param.SoftNlimit); flag &= T_Axis.SetSoftPLimit(T_Axis.Param.SoftPlimit); flag &= T_Axis.SetSoftNLimit(T_Axis.Param.SoftNlimit); if (flag) { Globals.LedCmd.Cmd = Globals.DevData.IdleLedCmd.Cmd; ReportCmdKeyProgress(CmdKey.S0101); } else { ReportCmdKeyProgress(CmdKey.S0102); } return(flag); } else { return(false); } } catch { ReportCmdKeyProgress(CmdKey.S0098); return(false); } }
public static bool RunGroupCut(CutGroup g) { if (StartCuttingIsReady(g.SpdSpeed)) { bool flag = true; if (!g.Cutting) { g.Cutting = true; ReportWorkingProgress(ProcessCmd.CutGroupCmd, g); } foreach (var item in g.ChipCHs) { if (item.Enable && !item.Complate) { item.Complate = RunChannelCut(item); flag &= item.Complate; if (flag) { foreach (var c in g.ChipS)//划切完当前片子判断当前片是否完成划切 { c.Complate = c.IsComplated; } if (!g.IsComplated) { ReportCmdKeyProgress(CmdKey.P0110); } } } if (!flag) { return(false); } } g.Complate = flag; if (flag) { g.Cutting = false; Globals.SpdStable = false; //重新进行稳定主轴 Globals.Line = null; //清除当前划切线 ReportWorkingProgress(ProcessCmd.CutGroupCmd, g); switch (g.ExitPosMode) { case 0: //对准位置 { X_Axis.AxisJogAbsWork(g.ChipCHs[0].AlignPoint.X); Y_Axis.AxisJogAbsWork(g.ChipCHs[0].AlignPoint.Y + Globals.KniefAdj); //划切完成移动到对准 划切位置+偏移值 T_Axis.AxisJogAbsWork(g.ChipCHs[0].AlignT); } break; case 1: //中心位置 { X_Axis.AxisJogAbsWork(Globals.ViewCenter.X); Y_Axis.AxisJogAbsWork(Globals.ViewCenter.Y); } break; case 2: //起始位置 { X_Axis.AxisJogAbsWork(x_Axis.Param.StartPos); Y_Axis.AxisJogAbsWork(y_Axis.Param.StartPos); T_Axis.AxisJogAbsWork(z_Axis.Param.StartPos); } break; case 3: //自定义位置 { X_Axis.AxisJogAbsWork(g.ExitXpos); Y_Axis.AxisJogAbsWork(g.ExitYpos); T_Axis.AxisJogAbsWork(g.ExitTpos); } break; } WaitAxisMoveDone();//等待移动停止 ReportCmdKeyProgress(CmdKey.P0107); } return(g.Complate); } else { ReportCmdKeyProgress(CmdKey.P0106); return(false); } }
}//划切分度 private static bool RunningChannelCut(CutChannel c) { bool flag = true; Globals.Channel = c; Z_Axis.AxisJogAbsWork(c.SelfPos); //Z轴移动到安全位置 WaitAxisMoveDone(Z_Axis); T_Axis.AxisJogAbsWork(c.AlignT + c.TPosAdj); //T轴移动到偏移位置 X_Axis.AxisJogAbsWork(c.PausePos.X); //X轴移动到暂停位置 Y_Axis.AxisJogAbsWork(c.PausePos.Y); //Y轴移动到暂停位置(第一次划切默认为起始位置) WaitAxisMoveDone(); //等待各轴运动成功 c.Cutting = true; if (!c.Rotated) { ReportWorkingProgress(ProcessCmd.CutChStartCmd, c); //开始划切当前通道 c.Rotated = true; } if (c.StandMode) { flag = RunSegmentCut(c);//标准模式划切 } else { foreach (var item in c.Segs) { if (!item.Complate) { ReportWorkingProgress(ProcessCmd.CutSegStartCmd, c); //进行通道划切完成 item.Complate = RunSegmentCut(item); if (item.Complate) { c.CuttingIndex += item.Count; } else { flag = false; break;//退出当前循环 } } flag &= item.Complate; } } if (flag) { c.Cutting = false; ReportCmdKeyProgress(CmdKey.P0109); ReportWorkingProgress(ProcessCmd.CutChEndCmd, c); //当前通道划切完成 } else { c.PausePos.Y = Y_Axis.RealPos; //设置Y暂停位置为当前的位置 c.PausePos.X = Globals.ViewCenter.X; //设置X暂停位置为显微镜中心位置 Z_Axis.AxisJogAbsWork(c.SelfPos); //Z轴移动到安全位置 WaitAxisMoveDone(Z_Axis); X_Axis.AxisJogAbsWork(Globals.ViewCenter.X); //移动到显微镜视野 Y_Axis.AxisJogIncWork(Globals.KniefAdj); //划切位置+刀痕偏移值 将线移动到显微镜下面 WaitAxisMoveDone(); //等待移动停止 if (!Globals.CutStop) //判断是因为暂停导致的返回 { ReportWorkingProgress(ProcessCmd.CutPauseCmd, c); } } c.Complate = flag; return(c.Complate); }