214 lines
7.8 KiB
C++
214 lines
7.8 KiB
C++
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// HAL_Motion.cpp : interface for the Motion related functions
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "HAL.h"
|
|
#include "HSI.h"
|
|
|
|
extern CHAL *g_pHSI;
|
|
extern CLogger *g_pLogger;
|
|
extern CHALMicroVuExt g_HSIExt;
|
|
extern CMv_Proto *g_pMv_Proto;
|
|
//extern HANDLE hEventEStop;
|
|
|
|
extern double TimeInMsecs(void);
|
|
|
|
//extern HANDLE hMotionInitDoneEvent;
|
|
static double PositionSampleTime = 3.0;
|
|
|
|
//===========================================================================================================
|
|
void HAL_Motion_HomeStatus(bool &bHomed)
|
|
{
|
|
bHomed = g_pMv_Proto->mv_motion_is_homed();
|
|
return;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_IsSupported(UINT &Type)
|
|
{
|
|
static int isDCC = -1;
|
|
Type = HAL_MOTION_SUPPORTS_MANUAL_CONTROL|HAL_MOTION_SUPPORTS_HOMING | HAL_MOTION_SUPPORTS_DCC_CONTROL;
|
|
return HAL_STATUS_NORMAL;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_Startup( bool /*bHome*/ )
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
// g_HSIExt.m_ActiveMachineType = HAL_MACHINE_TYPE_EXCEL;
|
|
// If the machine type hasn't been selected then exit the initialisation
|
|
#pragma message("what is the correct return status if no machine type selected")
|
|
if(g_HSIExt.m_ActiveMachineType == -1)
|
|
return Status;
|
|
return Status;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetAxisCount( enum HAL_MOTION_AXIS_TYPE AxisType, int &nAxis )
|
|
{
|
|
switch(AxisType)
|
|
{
|
|
case HAL_MOTION_AXIS_X:
|
|
case HAL_MOTION_AXIS_Y:
|
|
case HAL_MOTION_AXIS_Z:
|
|
nAxis = 1;
|
|
break;
|
|
case HAL_MOTION_AXIS_R:
|
|
default:
|
|
nAxis = 0;
|
|
break;
|
|
}
|
|
HAL_SendDebug(_T("HAL_Motion_GetAxisCount %d\n"), nAxis);
|
|
return HAL_STATUS_NORMAL;
|
|
}
|
|
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_SetSpeedXYZ( double dSpeed )
|
|
{
|
|
g_pMv_Proto->mv_motion_set_speed_xyz(dSpeed);
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
return Status;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetSpeedXYZ( double &dSpeed )
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
g_pMv_Proto->mv_motion_get_speed_xyz(dSpeed);
|
|
return Status;
|
|
}
|
|
|
|
////===========================================================================================================
|
|
//HAL_STATUS HAL_Motion_SetSpeedXYZ1( double SpeedX, double SpeedY, double SpeedZ )
|
|
//{
|
|
// HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
// long lSpeedX = (long) SpeedX;
|
|
// long lSpeedY = (long) SpeedY;
|
|
// long lSpeedZ = (long) SpeedZ;
|
|
// g_pMv_Proto->mv_motion_set_speed_xyz(lSpeedX, lSpeedY, lSpeedZ);
|
|
// return Status;
|
|
//}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetSpeedR( double & /*Speed*/ )
|
|
{
|
|
return HAL_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_SetSpeedR( double /*Speed*/ )
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NOT_SUPPORTED;
|
|
return Status;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetAccelerationXYZ( double &AccelX, double &AccelY, double &AccelZ )
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
return Status;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_SetAccelerationXYZ( double AccelX, double AccelY, double AccelZ )
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
return Status;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetAccelerationR( double & /*AccelR*/ )
|
|
{
|
|
return HAL_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_SetAccelerationR( double /*AccelQ*/ )
|
|
{
|
|
return HAL_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetPositionXYZ( UINT /*GetAxisTypes*/, double &PositionX, double &PositionY, double &PositionZ, double &Time)
|
|
{
|
|
SSI_STATUS Status = g_pMv_Proto->mv_motion_get_position_xyz(PositionX, PositionY, PositionZ);
|
|
Time = TimeInMsecs();
|
|
return (Status == SSI_STATUS_NORMAL)?HAL_STATUS_NORMAL:HAL_STATUS_FAILED;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_SetPositionXYZ( UINT /*SetAxisType*/, double PositionX, double PositionY, double PositionZ, enum HAL_MOTION_MOVE_TYPE eType, double /*flyRadius*/)
|
|
{
|
|
bool bWait = (eType == HAL_MOTION_MOVE_WAIT)?true:false;
|
|
SSI_STATUS Status = g_pMv_Proto->mv_motion_set_position_xyz(PositionX, PositionY, PositionZ, bWait);
|
|
return (Status == SSI_STATUS_NORMAL)?HAL_STATUS_NORMAL:HAL_STATUS_FAILED;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetPositionR( UINT /*GetAxisTypes*/, double & /*PositionR*/, double & /*Time*/ )
|
|
{
|
|
g_pMv_Proto->mv_motion_get_position_r();
|
|
return HAL_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetSettleTime( double &SettleTime )
|
|
{
|
|
SettleTime=g_HSIExt.m_StageSettleTime;
|
|
return HAL_STATUS_NORMAL;
|
|
}
|
|
|
|
////===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetDeadband( double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR )
|
|
{
|
|
HAL_STATUS retVal=HAL_STATUS_NOT_SUPPORTED;
|
|
return retVal;
|
|
}
|
|
|
|
////===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetRefreshDeadband( double &Deadband )
|
|
{ // not used because the controller will set this automatically
|
|
HAL_STATUS retVal=HAL_STATUS_NOT_SUPPORTED;
|
|
return retVal;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_IsHomed( bool &bHomed )
|
|
{
|
|
bHomed = g_pMv_Proto->mv_motion_is_homed();
|
|
return HAL_STATUS_NORMAL;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetStageLimits(double *StageLimitsMax, double *StageLimitsMin)
|
|
{
|
|
// StageLimitsMax[HAL_AXIS_X] =
|
|
// StageLimitsMin[HAL_AXIS_X] =
|
|
// StageLimitsMax[HAL_AXIS_Y] = g_pMv_Proto
|
|
// StageLimitsMin[HAL_AXIS_Y] =
|
|
// StageLimitsMax[HAL_AXIS_Z] =
|
|
// StageLimitsMin[HAL_AXIS_Z] =
|
|
return HAL_STATUS_NORMAL;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_GetMaxSpeed(double *MaxSpeed)
|
|
{
|
|
SSI_STATUS Status = SSI_STATUS_ERROR;
|
|
if (MaxSpeed)
|
|
Status = g_pMv_Proto->mv_motion_get_3D_max_speed(*MaxSpeed);
|
|
return (Status == SSI_STATUS_NORMAL) ? HAL_STATUS_NORMAL : HAL_STATUS_FAILED;
|
|
}
|
|
|
|
//===========================================================================================================
|
|
HAL_STATUS HAL_Motion_Shutdown( )
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
return Status;
|
|
}
|