int Action::SeconMotorBackToOrigin() { d1000_home_move(SECOND_MOTOR, 50, ini->m_MotorSpinSpeed1/5, 10); if (d1000_check_done(SECOND_MOTOR)) { d1000_start_t_move(SECOND_MOTOR, -2000, ini->m_MotorSpinSpeed1 / 40, ini->m_MotorSpinSpeed1 / 10, 50); while (!d1000_check_done(SECOND_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } d1000_home_move(SECOND_MOTOR, ini->m_MotorSpinSpeed1/10, ini->m_MotorSpinSpeed1/5, 10); while (!d1000_check_done(SECOND_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } } else { while (!d1000_check_done(SECOND_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } } Sleep(100); d1000_start_t_move(SECOND_MOTOR, ini->m_MotorCompenstate1, ini->m_MotorSpinSpeed / 100, ini->m_MotorSpinSpeed / 10, 10); while (!d1000_check_done(SECOND_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } d1000_set_command_pos(SECOND_MOTOR, 0); return 1; }
int Action::FisrtMotorBackToOrigin() { d1000_home_move(0, 50, -ini->m_MotorSpinSpeed / 10, 10); if (d1000_check_done(FIRST_MOTOR)) { d1000_start_t_move(FIRST_MOTOR, ini->m_MotorSpinWaves, ini->m_MotorSpinSpeed / 100, ini->m_MotorSpinSpeed / 10, 10); while (!d1000_check_done(FIRST_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } d1000_home_move(0, 50, ini->m_MotorSpinSpeed / 10, 10); while (!d1000_check_done(FIRST_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } } else { while (!d1000_check_done(FIRST_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } } Sleep(100); d1000_start_t_move(FIRST_MOTOR, ini->m_MotorCompenstate, ini->m_MotorSpinSpeed / 100, ini->m_MotorSpinSpeed / 10, 10); while (!d1000_check_done(FIRST_MOTOR)) { if (::WaitForSingleObject(g_evtEStop.evt, 0) == WAIT_OBJECT_0) break; continue; } d1000_set_command_pos(0,0); return 1; }
/// <summary> /// 单轴直线运动函数 /// </summary> /// <param name="UseAxis">轴号:0:X 1:Y 2:Z 3:T</param> /// <param name="UseStart"></param> /// <param name="UseAcc"></param> /// <param name="UseSpeed"></param> /// <param name="UseMove"></param>运动方向: void PosController::axisMove( int UseAxis, double UseStart, double UseAcc, double UseSpeed, double UseMove ) { if (!check_Val(UseStart, MAX_START_SPEED/*, HT_Public.AxisName[this.UseAxis] + " 轴起始速度必须正数,且只允许[ 0-" + MaxStartSpeed.ToString().Trim() + " ]之间数值!"*/)) { return; } if (!check_Val(UseAcc, MAX_ACC_SPEED/*, HT_Public.AxisName[this.UseAxis] + " 轴加减速度必须正数,且只允许[ 0-" + MaxAccSpeed.ToString().Trim() + " ]之间数值!"*/)) { return; } if (!check_Val(UseSpeed, MAX_RUN_SPEED/*, HT_Public.AxisName[this.UseAxis] + " 轴运行速度必须为正数,且只允许[ 0-" + MaxRunSpeed.ToString().Trim() + " ]之间数值!"*/)) { return; } // if (!check_Val(UseMove, 0/*, HT_Public.AxisName[this.UseAxis] + " 轴运行位移必须为正数!"*/)) // { // return; // } double UseEncConst = PulseUnit[UseAxis]; //获取脉冲当量 int start = (int)(UseStart * UseEncConst); //启动速度 double fAcc = (double)(UseAcc * UseEncConst); //加速度 int speed = (int)(UseSpeed * UseEncConst); //运行速度 int move = (int)(UseMove * UseEncConst); //运行步长 if (!isConnected()) { return; } //检测当量轴是否在运动 if (!checkAxisDown(UseAxis)) { return; } //检测轴是否到极限 if (!check_Limit(UseAxis, UseMove,true)) { //MessageBox(NULL, TEXT("警告!"), TEXT("已运动到极限!请反向运动!"),MB_OK); return; } //停止当前轴 int Ret = d1000_immediate_stop(UseAxis); d1000_start_t_move(UseAxis, move, start, speed, fAcc); }