新增外触发测试功能。

This commit is contained in:
TAO Cheng
2014-07-07 16:28:28 +08:00
parent 7c3f60c985
commit e81ff3e991
15 changed files with 370 additions and 52 deletions
@@ -204,8 +204,10 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP)
break;
case CT_GET_INTERRUPT_MSG:
_process_SO7_CMD_GET_INTERRUPT_MSG(ep_buff[EP_02_CMD_IDX]._save_send_cmd1);
break;
case CT_GET_MOTION_FINISHED_CNTS:
_process_SO7_CMD_GET_MOTION_CNTS();
break;
default:
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_02_CMD_IDX]._save_send_cmd : %X \r\n", ep_buff[EP_02_CMD_IDX]._save_send_cmd);
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_81_DATA_IDX]._buffer[0] : %X \r\n", ep_buff[EP_81_DATA_IDX]._buffer[0]);
@@ -512,6 +514,18 @@ CSO7_Proto::CSO7_Proto()
g_machine.Light_Switch=0;
g_machine.SEQ_NUMBER=0;
g_machine.Arm_MotionStartCnts[0]=30;
g_machine.Arm_MotionStartCnts[1]=50;
g_machine.Arm_MotionStartCnts[2]=60;
g_machine.Arm_MotionStartCnts[3]=70;
g_machine.Arm_MotionStartCnts[4]=80;
g_machine.Arm_MotionStopCnts[0]=5;
g_machine.Arm_MotionStopCnts[1]=10;
g_machine.Arm_MotionStopCnts[2]=15;
g_machine.Arm_MotionStopCnts[3]=20;
g_machine.Arm_MotionStopCnts[4]=20;
g_machine.Arm_MotionSpeedGear=0;//4,3,2,1,5
g_machine.s_machine_config.x_axis._MoveToSpeed[0]=0.0;
g_machine.s_machine_config.x_axis._MoveToSpeed[1]=0.0;
g_machine.s_machine_config.x_axis._MotionSpeedScale=1.0;
@@ -3416,7 +3430,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_init_firmware_para()
CString csStr(csAStr);
g_pLogger->SendAndFlushWithTime(csStr);
}
if (g_machine.FirmwareVer==FirmwareVer_6_X)
if (g_machine.FirmwareVer>=FirmwareVer_6_X)
{
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_ACCURA_ERR,static_cast<char>(g_machine.s_machine_config.motion.m_AccuraErrPulseX));
Sleep(MIN_SLEEP_TIME);
@@ -3424,12 +3438,12 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_init_firmware_para()
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_ACCURA_ERR,static_cast<char>(g_machine.s_machine_config.motion.m_AccuraErrPulseZ));
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_X));
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Y));
Sleep(MIN_SLEEP_TIME);
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Z));
Sleep(MIN_SLEEP_TIME);
//_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_X));
//Sleep(MIN_SLEEP_TIME);
//_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Y));
//Sleep(MIN_SLEEP_TIME);
//_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z,E_WRITE_EQUIDISTANCE,static_cast<char>(g_machine.s_machine_config.motion.m_EQUIDIS_Z));
//Sleep(MIN_SLEEP_TIME);
}
}
else
@@ -3615,6 +3629,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home_R()
{
g_machine.z._pos_fixed._long_=lMoveToDis;
}
so7_motion_clear_finished_flag();
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
//========================================
INT lSleep = 20;
@@ -3753,6 +3768,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_R(double dRad,bool bWait)
{
g_machine.z._pos_fixed._long_=lMoveToDis;
}
so7_motion_clear_finished_flag();
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
g_machine.MotionType=EMSG_STOPXYZ_1_MOVETOXYZ;
@@ -4105,6 +4121,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY,
g_machine.z._pos_fixed._long_=Z.to-Z.from;
// _calculate_straightline_motion(g_machine.s_machine_config._dXYZSpeed);
so7_motion_clear_finished_flag();
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
g_machine.MotionType=EMSG_STOPXYZ_1_MOVETOXYZ;
@@ -4213,6 +4230,17 @@ BOOL CSO7_Proto::IsMotionFinishedManual(BOOL _BResetCnts)
}
return g_machine.MotionFinished;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_clear_finished_flag()
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
if (g_machine.s_machine_config.motion.GetInterruptMsgMethod==E_GET_INTERRUPT_MSG_INQUIRY)
{
_send_cmd_SO7_CMD_SET_INTERRUPT_MSG(g_machine.MotionType,0);
}
return SSI_STATUS_MOTION_NORMAL;
}
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_is_finished(char MotionType,BOOL& IsFinished)
{
@@ -5560,7 +5588,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(int iSpeed,ch
char _speed_fresh(0);
char _speed_start(0);
char _speed_max(0);
if (g_machine.FirmwareVer==FirmwareVer_6_X)
if (g_machine.FirmwareVer>=FirmwareVer_6_X)
{
iDeceDistance = iSpeed;
}
@@ -6146,15 +6174,14 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(short ParaI
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
static char caxis=1;
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char ActiveAxis,char TrigMode,short StartIndex,short ParaNumber,short* Para)
{
caxis=ActiveAxis;
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
char cBuff(0);
short sPara(0);
g_machine.TrigPara.TrigPulseActiveAxis=ActiveAxis;
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_WRITE_TRIG_PULSE_PARA;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = ActiveAxis;
@@ -6208,7 +6235,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_TRIG_PULSE_START()
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_START_TRIG_PULSE;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=caxis;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=g_machine.TrigPara.TrigPulseActiveAxis;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x00;
@@ -6226,7 +6253,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_TRIG_PULSE_STOP()
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOP_TRIG_PULSE;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=caxis;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=g_machine.TrigPara.TrigPulseActiveAxis;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x00;
@@ -6261,6 +6288,44 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_IO_PURPOSE(BOOL _bEnTrigIO)
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_MOTION_CNTS(char _Speedgear,char _StartCnts,char _StopCnts)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_MOTION_FINISHED_CNTS;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)= _Speedgear;
*(ep_buff[EP_02_CMD_IDX]._buffer+3)= _StartCnts;
*(ep_buff[EP_02_CMD_IDX]._buffer+4)= _StopCnts;
ep_buff[EP_02_CMD_IDX]._size = 0x05;
ep_buff[EP_81_DATA_IDX]._size = 0x00;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_MOTION_CNTS(char _Speedgear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_GET_MOTION_FINISHED_CNTS;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = _Speedgear;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_X()
{
@@ -6595,6 +6660,10 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_FIRMWARE_VERSION_INFO()
{
g_machine.FirmwareVer=FirmwareVer_6_X;
}
else if (g_machine.FirmwareInfo[3]=='7')
{
g_machine.FirmwareVer=FirmwareVer_7_X;
}
else
{
g_machine.FirmwareVer=FirmwareVer_3_X;
@@ -6658,4 +6727,13 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_WRITE_TRIG_PULSE_PARA()
g_machine.TrigPara.TrigTotalNo._char_[3]=0;
index++;
return SSI_STATUS_MOTION_NORMAL;
}
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_CNTS()
{
int index(0);
g_machine.Arm_MotionSpeedGear=*(ep_buff[EP_82_DATA_IDX]._buffer);
g_machine.Arm_MotionStartCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
g_machine.Arm_MotionStopCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
return SSI_STATUS_MOTION_NORMAL;
}