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