Exemple #1
0
 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);
 }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
 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);
 }
Exemple #4
0
 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);
     }
 }
Exemple #5
0
 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);
     }
 }
Exemple #6
0
 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);
     }
 }
Exemple #7
0
        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);
            }
        }
Exemple #8
0
        }//划切分度

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