protected override void LogicImpl()
        {
            var para = ProjectData.Instance.SaveData.SolderPlatform[ID];

            switch (LG.Step)
            {
            case 1:    //平台到位
                stick1SpendTime.Restart();
                if (Axis.SolderPlatFormIsHave[ID].value && ProjectData.Instance.SaveData.processdata.PlatformData[ID * 4 + 1].IsHave &&
                    ProjectData.Instance.SaveData.processdata.PlatformData[ID * 4 + 1].IsPolished || TaskManager.Default.FSM.MODE == 1)
                {
                    LG.ImmediateStepNext(2);
                }
                else
                {
                    string mes = ID.ToString() + "平台未有料或未打磨";
                    MachineAlarm.SetAlarm(AlarmLevelEnum.Level2, mes);
                    LG.StepNext(2, FSMStaDef.RUN);
                }
                break;

            case 2:    //开始上锡拍照
                if (DeviceRsDef.I_CylLocked.value || TaskManager.Default.FSM.MODE == 1)
                {
                    SolderCT.Start();
                    LG.ImmediateStepNext(3);
                }
                break;

            case 3:    //开始上锡
                if (SolderCT.GetSta() == 0 && SolderClean.GetSta() == 0)
                {
                    Solder.Start();
                    LG.ImmediateStepNext(4);
                }
                break;

            case 4:    //上锡结束是否清洗
                if (Solder.GetSta() == 0 && ProjectData.Instance.SaveData.SolderData[ID].SolderNum % para.PerTimesClean == 0 && ProjectData.Instance.SaveData.processdata.SolderList[ID].Count() > 0)
                {
                    ProjectData.Instance.SaveData.SolderData[ID].SolderNum = 0;
                    SolderClean.Start();
                    LG.ImmediateStepNext(3);
                    para.SolderSum++;
                }
                else if (Solder.GetSta() == 0 && ProjectData.Instance.SaveData.processdata.SolderList[ID].Count() > 0)
                {
                    LG.ImmediateStepNext(3);
                    para.SolderSum++;
                }
                else if (Solder.GetSta() == 0 && ProjectData.Instance.SaveData.processdata.SolderList[ID].Count() == 0)
                {
                    SolderClean.Start();
                    LG.ImmediateStepNext(5);
                }
                break;

            case 5:    //ZR回到既定高度
                if (Axis.SolderZ[ID].status == 0 && Axis.SolderR[ID].status == 0 && SolderClean.GetSta() == 0)
                {
                    Axis.SolderZ[ID].MC_MoveAbs(para.EndPos.Z);
                    Axis.SolderR[ID].MC_MoveAbs(para.EndPos.R);
                    LG.ImmediateStepNext(6);
                }
                break;

            case 6:    //ZR回到既定高度
                if (Axis.SolderZ[ID].status == 0 && Axis.SolderR[ID].status == 0)
                {
                    Axis.SolderX[ID].MC_MoveAbs(para.EndPos.X);
                    Axis.SolderY[ID].MC_MoveAbs(para.EndPos.Y);
                    LG.ImmediateStepNext(0xef);
                }
                break;

            case 0xef:
                if (Axis.SolderX[ID].status == 0 && Axis.SolderY[ID].status == 0)
                {
                    LG.End();
                    stick1SpendTime.Stop();
                    para.SolderSpendTime = stick1SpendTime.ElapsedMilliseconds;
                    ProjectData.Instance.SaveData.processdata.PlatformData[ID * 4 + 1].IsTined = true;
                }
                break;
            }
        }