新增可读写不同档位限定的位移值。
This commit is contained in:
@@ -126,7 +126,8 @@ enum MOTOR_CMD
|
||||
|
||||
CT_SET_MOTION_FINISHED_CNTS,
|
||||
CT_GET_MOTION_FINISHED_CNTS,
|
||||
|
||||
CT_SET_MOTION_SEGMENT_DIS,
|
||||
CT_GET_MOTION_SEGMENT_DIS,
|
||||
CT_END
|
||||
};
|
||||
|
||||
|
||||
@@ -207,7 +207,12 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP)
|
||||
break;
|
||||
case CT_GET_MOTION_FINISHED_CNTS:
|
||||
_process_SO7_CMD_GET_MOTION_CNTS();
|
||||
break;
|
||||
case CT_GET_MOTION_SEGMENT_DIS:
|
||||
_process_SO7_CMD_GET_MOTION_SEGMENT_DIS(ep_buff[EP_02_CMD_IDX]._save_send_cmd1+1,ep_buff[EP_02_CMD_IDX]._save_send_cmd2);
|
||||
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]);
|
||||
@@ -551,6 +556,16 @@ CSO7_Proto::CSO7_Proto()
|
||||
g_machine.s_machine_config.zm_axis._SpeedFast=2000;
|
||||
g_machine.s_machine_config.zm_axis._SpeedSlow=800;
|
||||
g_machine.s_machine_config.zm_axis._speed._short_=0;
|
||||
|
||||
g_machine.s_machine_config.x_axis._MotionSegmentDis[0]=100;
|
||||
g_machine.s_machine_config.x_axis._MotionSegmentDis[1]=1000;
|
||||
g_machine.s_machine_config.x_axis._MotionSegmentDis[2]=5000;
|
||||
g_machine.s_machine_config.y_axis._MotionSegmentDis[0]=100;
|
||||
g_machine.s_machine_config.y_axis._MotionSegmentDis[1]=1000;
|
||||
g_machine.s_machine_config.y_axis._MotionSegmentDis[2]=5000;
|
||||
g_machine.s_machine_config.z_axis._MotionSegmentDis[0]=100;
|
||||
g_machine.s_machine_config.z_axis._MotionSegmentDis[1]=1000;
|
||||
g_machine.s_machine_config.z_axis._MotionSegmentDis[2]=5000;
|
||||
g_machine.MotionType=-1;
|
||||
|
||||
g_machine.s_status._bIsZMMotionFinished=0;
|
||||
@@ -3298,6 +3313,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_usb_cmd(int iEP_Base)
|
||||
ep_buff[iEP_Base]._save_send_cmd = ep_buff[iEP_Base]._buffer[0];
|
||||
ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1];
|
||||
ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2];
|
||||
ep_buff[iEP_Base]._save_send_cmd2= ep_buff[iEP_Base]._buffer[3];
|
||||
|
||||
//TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]);
|
||||
|
||||
@@ -3330,6 +3346,7 @@ SSI_STATUS_MOTION CSO7_Proto::_write_usb_data_only(int iEP_Base)
|
||||
ep_buff[iEP_Base]._save_send_cmd = ep_buff[iEP_Base]._buffer[0];
|
||||
ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1];
|
||||
ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2];
|
||||
ep_buff[iEP_Base]._save_send_cmd2 = ep_buff[iEP_Base]._buffer[3];
|
||||
|
||||
//TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]);
|
||||
|
||||
@@ -6415,6 +6432,62 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_CONTROL_MODE(char axis_type)
|
||||
ReleaseMutex(g_hEP02_Serial_Mutex);
|
||||
return SSI_STATUS_MOTION_NORMAL;
|
||||
}
|
||||
|
||||
|
||||
//==============================================================
|
||||
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex,long _lDis)
|
||||
{
|
||||
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
|
||||
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
|
||||
char cBuff(0);
|
||||
int index(0);
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_MOTOR;
|
||||
index++;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_SET_MOTION_SEGMENT_DIS;
|
||||
index++;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = axis_type-1;
|
||||
index++;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = _SegmentIndex;
|
||||
index++;
|
||||
|
||||
cBuff = (_lDis>>16) & 0x0ff;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||||
index++;
|
||||
cBuff = (_lDis>>8) & 0x0ff;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||||
index++;
|
||||
cBuff = _lDis & 0x0ff;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||||
index++;
|
||||
|
||||
ep_buff[EP_02_CMD_IDX]._size = index;
|
||||
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_SEGMENT_DIS(char axis_type,char _SegmentIndex)
|
||||
{
|
||||
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_SEGMENT_DIS;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = axis_type-1;
|
||||
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = _SegmentIndex;
|
||||
|
||||
ep_buff[EP_02_CMD_IDX]._size = 0x04;
|
||||
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()
|
||||
{
|
||||
@@ -6752,7 +6825,18 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_FIRMWARE_VERSION_INFO()
|
||||
}
|
||||
else if (g_machine.FirmwareInfo[3]=='7')
|
||||
{
|
||||
g_machine.FirmwareVer=FirmwareVer_7_X;
|
||||
if (g_machine.FirmwareInfo[5]=='1')
|
||||
{
|
||||
g_machine.FirmwareVer=FirmwareVer_7_A;
|
||||
}
|
||||
else if (g_machine.FirmwareInfo[5]=='0' && g_machine.FirmwareInfo[6]=='9' )
|
||||
{
|
||||
g_machine.FirmwareVer=FirmwareVer_7_9;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_machine.FirmwareVer=FirmwareVer_7_X;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -6836,4 +6920,26 @@ 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;
|
||||
}
|
||||
|
||||
//==============================================================
|
||||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_SEGMENT_DIS(BYTE axis_type,BYTE _SegmentIndex)
|
||||
{
|
||||
BYTE rBuffer[3] = {0};
|
||||
rBuffer[0]=*(ep_buff[EP_82_DATA_IDX]._buffer);
|
||||
rBuffer[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||||
rBuffer[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
|
||||
if (axis_type==E_ACTIVE_AXIS_X)
|
||||
{
|
||||
g_machine.s_machine_config.x_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
|
||||
}
|
||||
else if (axis_type==E_ACTIVE_AXIS_Y)
|
||||
{
|
||||
g_machine.s_machine_config.y_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
g_machine.s_machine_config.z_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
|
||||
}
|
||||
return SSI_STATUS_MOTION_NORMAL;
|
||||
}
|
||||
@@ -80,6 +80,8 @@ enum EFirmwareVer
|
||||
FirmwareVer_3_X=0,
|
||||
FirmwareVer_6_X,
|
||||
FirmwareVer_7_X,
|
||||
FirmwareVer_7_9,//add control mode
|
||||
FirmwareVer_7_A,//add segment dis
|
||||
FirmwareVer_Total
|
||||
};
|
||||
enum ESO7_AXIS_TYPE
|
||||
@@ -164,6 +166,7 @@ struct s_so7_axis_config // axis configuration
|
||||
double _MoveToSpeed[2];
|
||||
double _MotionSpeedScale;
|
||||
|
||||
long _MotionSegmentDis[3];
|
||||
long _scale_range;
|
||||
double _neg_working_limit;
|
||||
double _pos_working_limit;
|
||||
@@ -382,7 +385,8 @@ struct struct_so7_ep_buff
|
||||
int _ep;
|
||||
BYTE _save_send_cmd;
|
||||
BYTE _save_send_cmd0;
|
||||
BYTE _save_send_cmd1;
|
||||
BYTE _save_send_cmd1;
|
||||
BYTE _save_send_cmd2;
|
||||
char *_buffer; // MAX_BUFF_SIZE
|
||||
int _size;
|
||||
void *_async_context;
|
||||
@@ -576,6 +580,8 @@ public:
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_MOTION_CNTS(char _Speedgear=0);
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_CONTROL_MODE(char axis_type,char ControlMode);
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_CONTROL_MODE(char axis_type);
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex,long _lDis);
|
||||
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex);
|
||||
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Y();
|
||||
@@ -618,6 +624,8 @@ public:
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_WRITE_TRIG_PULSE_PARA();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_GET_MOTION_CNTS();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_GET_CONTROL_MODE();
|
||||
static SSI_STATUS_MOTION _process_SO7_CMD_GET_MOTION_SEGMENT_DIS(BYTE axis_type,BYTE _SegmentIndex);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user