using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; namespace Project { public partial class fMain { /// /// 모션 이동명령(MOVE,HOME,JOG)이 시작전에 축 이동여부를 확인하는 이벤트 임 /// 이동을 하면 안되는 경우 e.valid 를 false 로 설정하면 모션이 이동하지 않습니다 /// /// /// void mot_AxisMoveValidateCheck(object sender, arDev.AzinAxt.MOT.axisValidationEventArgs e) { //DIO가 움직이지 않으면 체크할 필요는 없다 (DIO가 작동안해도 모터는 움직여야 하므로 플래그는 TRUE로 둔다) if (Pub.dio.IsInit == false || Pub.mot.IsInit == false) return; //모든모션의 홈설정이완료된 상태에만 체크한다 if (Pub.mot.hasHomeSetOff == true) return; //모션모델이 설정된 상태에만 체크한다 if (Pub.Result.isSetmModel == false) return; //홈 검색모드에서는 처리하지 않음 if (Pub.sm.Step == StateMachine.eSMStep.HOME) return; //일반대기상태에서는 처리하지 않는다 if (Pub.sm.Step <= StateMachine.eSMStep.IDLE) return; //이동하려는 위치와 현재 위치가 동일하면 처리하지 않는다 if (e.CurrentPosition == e.TargetPosition) return; //각 축별 파일에서 처리한다 var axis = (eAxis)e.m_nAxis; if (axis == eAxis.X_PICKER) { e.invalidMessage = Validation_MotYP(e); e.isValid = e.invalidMessage.isEmpty(); } else if (axis == eAxis.Z_PICKER) { e.invalidMessage = Validation_MotYZ(e); e.isValid = e.invalidMessage.isEmpty(); } else if (axis == eAxis.Z_THETA) { e.invalidMessage = Validation_MotYT(e); e.isValid = e.invalidMessage.isEmpty(); } else if (axis == eAxis.PL_MOVE) { e.invalidMessage = Validation_MotPLM(e); e.isValid = e.invalidMessage.isEmpty(); } else if (axis == eAxis.PR_MOVE) { e.invalidMessage = Validation_MotPRM(e); e.isValid = e.invalidMessage.isEmpty(); } else if (axis == eAxis.PL_UPDN) { e.invalidMessage = Validation_MotPLZ(e); e.isValid = e.invalidMessage.isEmpty(); } else if (axis == eAxis.PR_UPDN) { e.invalidMessage = Validation_MotPRZ(e); e.isValid = e.invalidMessage.isEmpty(); } } } }