新增X、Y、Z轴运动模式可设置开环或闭环。
This commit is contained in:
@@ -254,7 +254,11 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP)
|
||||
case CT_WRITE_TRIG_PULSE_PARA:
|
||||
_process_SO7_CMD_WRITE_TRIG_PULSE_PARA();
|
||||
break;
|
||||
|
||||
case CT_READ_X_CONTROL_MODE:
|
||||
case CT_READ_Y_CONTROL_MODE:
|
||||
case CT_READ_Z_CONTROL_MODE:
|
||||
_process_SO7_CMD_GET_CONTROL_MODE();
|
||||
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]);
|
||||
@@ -6349,6 +6353,69 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_MOTION_CNTS(char _Speedgear)
|
||||
return SSI_STATUS_MOTION_NORMAL;
|
||||
}
|
||||
//==============================================================
|
||||
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_CONTROL_MODE(char axis_type,char ControlMode)
|
||||
{
|
||||
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_DATA;
|
||||
char cCMD(0);
|
||||
if(axis_type==E_AXIS_X)
|
||||
{
|
||||
cCMD=CT_WRITE_X_CONTROL_MODE;
|
||||
}
|
||||
else if(axis_type==E_AXIS_Y)
|
||||
{
|
||||
cCMD=CT_WRITE_Y_CONTROL_MODE;
|
||||
}
|
||||
else
|
||||
{
|
||||
cCMD=CT_WRITE_Z_CONTROL_MODE;
|
||||
}
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = cCMD;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)= ControlMode;
|
||||
|
||||
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_CONTROL_MODE(char axis_type)
|
||||
{
|
||||
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_DATA;
|
||||
char cCMD(0);
|
||||
if(axis_type==E_AXIS_X)
|
||||
{
|
||||
cCMD=CT_READ_X_CONTROL_MODE;
|
||||
}
|
||||
else if(axis_type==E_AXIS_Y)
|
||||
{
|
||||
cCMD=CT_READ_Y_CONTROL_MODE;
|
||||
}
|
||||
else
|
||||
{
|
||||
cCMD=CT_READ_Z_CONTROL_MODE;
|
||||
}
|
||||
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = cCMD;
|
||||
|
||||
ep_buff[EP_02_CMD_IDX]._size = 0x02;
|
||||
ep_buff[EP_82_DATA_IDX]._size = 0x01;
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -6764,3 +6831,9 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_CNTS()
|
||||
g_machine.Arm_MotionStopCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
|
||||
return SSI_STATUS_MOTION_NORMAL;
|
||||
}
|
||||
//==============================================================
|
||||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_CONTROL_MODE()
|
||||
{
|
||||
g_machine.FPGAData = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||||
return SSI_STATUS_MOTION_NORMAL;
|
||||
}
|
||||
Reference in New Issue
Block a user