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

294 lines
7.3 KiB
C++

#pragma once
///////////////////////////////////////////////////////////////////////////////
//
// HAL_MicroVu.h
//
// Copyrights 2010, Wilcox Associates, Inc.
//
///////////////////////////////////////////////////////////////////////////////
#include "Mv_Proto.h"
#define _MAX_MV_CMD_STRING 256
///////////////////////////////////////////////////////////////////////////////
// HALMicroVuExt
class CHALMicroVuExt;
// Default timeout for moves - 60 seconds
const int MOTION_TIMEOUT = 60000;
// Default timeout for moves - 10 minutes
const int MANUAL_HOME_TIMEOUT = 600000;
enum HAL_MACHINE_TYPE
{
HAL_MACHINE_TYPE_UNSELECTED = -1,
HAL_MACHINE_TYPE_CUSTOM,
HAL_MACHINE_TYPE_EXCEL,
HAL_MACHINE_TYPE_VECTRA,
HAL_NUM_MACHINE_TYPES
};
enum HAL_AXIS
{
HAL_AXIS_NONE = -1,
HAL_AXIS_X = 0,
HAL_AXIS_Y = 1,
HAL_AXIS_Z = 2,
HAL_AXIS_Q = 3,
HAL_AXIS_ZOOM = 4,
HAL_AXIS_ALL = 5
};
enum HAL_OUTPUT
{
HAL_OUTPUT_NONE = -1,
HAL_OUTPUT_EXTIO_2,
HAL_OUTPUT_EXTIO_3,
HAL_OUTPUT_EXTIO_4,
HAL_OUTPUT_EXTIO_5,
HAL_OUTPUT_EXTIO_6,
HAL_OUTPUT_EXTIO_7,
HAL_OUTPUT_EXTIO_8,
HAL_OUTPUT_EXTIO_9,
HAL_OUTPUT_PCIZOOM_0,
HAL_OUTPUT_PCIZOOM_1,
HAL_OUTPUT_PCIZOOM_2,
HAL_OUTPUT_PCIZOOM_3,
HAL_OUTPUT_PCIZOOM_4,
HAL_OUTPUT_PCIZOOM_5,
HAL_OUTPUT_PCIZOOM_6,
HAL_OUTPUT_PCIZOOM_7,
HAL_OUTPUT_EXPBOARD_0,
HAL_OUTPUT_EXPBOARD_1,
HAL_OUTPUT_EXPBOARD_2,
HAL_OUTPUT_EXPBOARD_3
};
enum HAL_CTRL_MODE
{
HAL_CTRL_MODE_CNC = 0,
HAL_CTRL_MODE_TOPLIGHT = 1,
HAL_CTRL_MODE_RNGLIGHT = 2,
HAL_CTRL_MODE_BTMLIGHT = 3
};
enum HAL_HOME_STATUS
{
HAL_HOME_NOT_FOUND = 0,
HAL_HOME_FOUND = 1,
HAL_HOME_FOUND_WRONG_DIR = 2,
HAL_HOME_TOO_FAST = 3
};
enum HAL_HOME_DIRECTION
{
HAL_HOME_DIR_EITHER = 0,
HAL_HOME_DIR_NEG = 1,
HAL_HOME_DIR_POS = 2
};
enum HAL_DISPLAY_HOME_MESSAGE_TYPE
{
HAL_DISPLAY_HOME_MESSAGE_REFMARK = 1,
HAL_DISPLAY_HOME_MESSAGE_LIMIT = 2
};
enum ACTIVE_PROBE_TYPE
{
APT_VISION = 0,
APT_CONTACT = 1,
APT_LASER = 2
};
const int HAL_OPTICS_HOME_OFFSET = 500;
bool IsBoardPresent(void);
bool IsControllerPresent(void);
///////////////////////////////////////////////////////////////////////////////
// HALMicroVuExt Class
class CHALMicroVuExt
{
public:
CHALMicroVuExt();
virtual ~CHALMicroVuExt();
HAL_STATUS InitialiseMachineType(HAL_MACHINE_TYPE Type = HAL_MACHINE_TYPE_EXCEL);
HAL_STATUS ReadConfigFile(void);
public:
bool m_bIsInitialised;
bool m_bIsHomingRequired;
bool m_bExtBoardPresent;
bool g_bOfflineOnly;
int m_HomingAxis;
bool m_FineSpeedMode;
enum HAL_CTRL_MODE m_ControlMode;
// Global flags
HAL_MACHINE_TYPE m_ActiveMachineType;
bool m_IsCalibrated;
bool m_InhibitActiveHigh;
bool m_HomeManual;
bool m_HomeToLimitSwitch;
bool m_HomeToResetLine;
bool m_HomeSpeedRestrict;
bool m_DCCMoveInProgress;
bool m_InitInProgress;
unsigned short m_DSPLoopTime;
unsigned short m_ErrorState;
double m_CurrentSpeedXYZ;
double m_CurrentSpeedR;
double m_StageSettleTime;
double m_ZoomSettleTime;
double m_IllumSettleTime;
unsigned short m_NumSegs;
unsigned short m_NumRings;
double m_ScaleResolutionX;
double m_ScaleResolutionY;
double m_ScaleResolutionZ;
// Project Grid
bool m_OpticsGridActiveHigh;
bool m_OpticsGridState;
HAL_OUTPUT m_OpticsGridOutput;
// LaserProbe
bool m_LaserPositionalActiveHigh;
bool m_LaserState;
HAL_OUTPUT m_LaserPositionalOutput;
bool m_OptimetInit;
bool m_OptimetZFollow;
// TMeasurement m_OptimetMeasPt;
double m_OptimetNomDist;
double m_OptimetScanDensity;
int m_OptimetGain;
int m_OptimetFreq;
int m_OptimetMag;
int m_OptimetQualityThreshold;
int m_OptimetScanQuality;
int m_OptimetScanQualityPts;
unsigned long m_OptimetNumPts;
unsigned long m_OptimetLaserMissedPts;
unsigned long m_OptimetAxisMissedPts;
// TouchProbe
bool m_ProbeEnabled;
bool m_ProbeLoading;
bool m_ProbeDisableIfNotActive;
bool m_ProbeHitExpected;
// bool m_ProbeUsePI200;
long m_ProbePoint[4];
double m_ProbeDiff[4];
double m_ProbeDCCRetractDist;
double m_ProbeManRetractDist;
double m_ProbeMeasPointTSpeed;
double m_ProbeMeasPointSSpeed;
// double m_ProbeDebounceTime;
// double m_ProbeDirectionThreshold;
double m_ProbeMeasPointStart[3];
double m_ProbeMeasPointEnd[3];
// Lamps
bool m_LampUsePrototypeRing;
bool m_LampOutputState_2x8[6][TWO_RINGS * EIGHT_SEGS];
double m_LampOutputLevel_2x8[6][TWO_RINGS * EIGHT_SEGS];
double m_LampOutputLevelForMVRing_2x8[TWO_RINGS * EIGHT_SEGS];
bool m_LampOutputState_5x8[6][FIVE_RINGS * EIGHT_SEGS];
double m_LampOutputLevel_5x8[6][FIVE_RINGS * EIGHT_SEGS];
double m_LampOutputLevelForMVRing_5x8[FIVE_RINGS * EIGHT_SEGS];
// Axis
bool m_AxisEnabled[5];
// bool m_AxisStepper[5];
// bool m_AxisTTLscale[5];
// bool m_AxisReversed[5];
// bool m_AxisDigitalPositioner[5];
// bool m_AxisLimitActiveHigh[5];
// bool m_AxisHomeEnabled[5];
// bool m_AxisHomeActiveHigh[5];
// bool m_AxisHomeTTL[5];
// HAL_HOME_STATUS m_AxisHomeStatus[5];
// bool m_AxisSWFenceActive[5];
// long m_AxisHomeDirection[5];
// long m_AxisRefMarkOffset[5];
double m_AxisVelocity[5];
double m_AxisAcceleration[5];
// double m_AxisJerk[5];
// double m_AxisPFactor[5];
// double m_AxisDFactor[5];
// double m_AxisIFactor[5];
// double m_AxisILimit[5];
/// double m_AxisContThreshold[5];
// long m_AxisMaxCount[5];
// long m_AxisMinCount[5];
// unsigned short m_AxisGain0[5];
// unsigned short m_AxisGain90[5];
// unsigned short m_AxisOffset0[5];
// unsigned short m_AxisOffset90[5];
// unsigned short m_AxisImpedance[5];
// unsigned short m_AxisInterpolation[5];
double m_AxisResolution[5];
// double m_AxisFollowingLimit[5];
// double m_AxisDriftVoltage[5];
// double m_AxisSWFenceMax[5];
// double m_AxisSWFenceMin[5];
// int m_AxisBacklashCorrection[5];
// double m_AxisHomeVelocity[5];
// double m_AxisHomeVelocityFactor[5];
// double m_AxisHomeFollowingLimit[5];
// double m_AxisHomeFollowingLimitFactor[5];
// double m_AxisNearPFactor[5];
// double m_AxisNearDFactor[5];
// double m_AxisNearIFactor[5];
// double m_AxisNearILimit[5];
// double m_AxisNearDistance[5];
ACTIVE_PROBE_TYPE m_ActiveProbe;
// Pendant
bool m_Pendant_IsInitialised;
bool m_Pendant_EStopInhibitsAmp;
int m_Pendant_Input_EStop;
// int m_Pendant_Input_MovePt;
// int m_Pendant_Input_ErasePt;
// int m_Pendant_Input_Done;
// int m_Pendant_Input_CtrlMode;
// int m_Pendant_Input_FineMode;
// int m_Pendant_Input_ZoomMin;
// int m_Pendant_Input_ZoomMax;
HAL_OUTPUT m_Pendant_Status_FineMode;
HAL_OUTPUT m_Pendant_Status_CtrlDCC;
HAL_OUTPUT m_Pendant_Status_CtrlTopLight;
HAL_OUTPUT m_Pendant_Status_CtrlRngLight;
HAL_OUTPUT m_Pendant_Status_CtrlBtmLight;
double m_Pendant_FineSpeedFactor;
bool m_Pendant_Enabled[4];
// bool m_Pendant_Reversed[4];
// long m_Pendant_Mirror[4];
// long m_Pendant_Centre[4];
// long m_Pendant_Max[4];
// long m_Pendant_Min[4];
// double m_Pendant_Deadband[4];
// double m_Pendant_Speed[4];
// double m_Pendant_FineSpeed[4][3];
// double m_Pendant_Exponential[4];
// double m_Pendant_PFactor[4];
// double m_Pendant_DFactor[4];
// double m_Pendant_IFactor[4];
// double m_Pendant_ILimit[4];
HAL_OPTICS_STARTUP g_lpfnWAIOpticsStartup;
HAL_OPTICS_SHUTDOWN g_lpfnWALOpticsShutdown;
};