Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/HAL_MOTION.CPP
T
2013-05-09 20:29:54 +08:00

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;
}