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