294 lines
7.3 KiB
C++
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;
|
|
};
|
|
|