/////////////////////////////////////////////////////////////////////////////// // // HAL_MicroVu.cpp // // Copyrights 2004, Wilcox Associates, Inc. // /////////////////////////////////////////////////////////////////////////////// #include "StdAfx.h" #include "settings.h" #include "HAL.h" #include "HSI.h" extern CHAL *g_pHSI; extern CHALMicroVuExt g_HSIExt; extern bool g_bOfflineOnly; ////////////////////////////////////////////////////////////////////////////// // Registry entry definitions // #define SECTION_HEADER _T("MicroVu") TCHAR SectionHeader[] = SECTION_HEADER; INI_INTERFACE_INFO ini_vertex_dcc[] = { // Settle times #pragma message("these settle times are not supported in code") {_T("Illumination_SettleTime"), INI_DOUBLE, &g_HSIExt.m_IllumSettleTime, _T("0.05"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, {_T("Stage_SettleTime"), INI_DOUBLE, &g_HSIExt.m_StageSettleTime, _T("0.1"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, {_T("Zoom_SettleTime"), INI_DOUBLE, &g_HSIExt.m_ZoomSettleTime, _T("0.1"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, {_T("ScaleResolutionX"), INI_DOUBLE, &g_HSIExt.m_ScaleResolutionX, _T("0.0005"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, {_T("ScaleResolutionY"), INI_DOUBLE, &g_HSIExt.m_ScaleResolutionY, _T("0.0005"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, {_T("ScaleResolutionZ"), INI_DOUBLE, &g_HSIExt.m_ScaleResolutionZ, _T("0.0005"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, // Probe // {_T("Probe_DebounceTime"), INI_DOUBLE, &g_HSIExt.m_ProbeDebounceTime, _T("0.05"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, // {_T("Probe_DirectionThreshold"), INI_DOUBLE, &g_HSIExt.m_ProbeDirectionThreshold, _T("0.01"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, {_T("Probe_DisableIfNotActive"), INI_BOOL, &g_HSIExt.m_ProbeDisableIfNotActive, _T("TRUE"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, // {_T("Probe_UsePI200"), INI_BOOL, &g_HSIExt.m_ProbeUsePI200, _T("FALSE"), NOFUNCTION, ADMINISTRATOR, ENABLED, ENABLED }, {NULL, INI_END, NULL, NULL} }; ////////////////////////////////////////////////////////////////////////////// // CHALMicroVuExt::CHALMicroVuExt() { unsigned short Axis = 0; m_bIsInitialised = false; m_bIsHomingRequired = true; m_bExtBoardPresent = false; g_bOfflineOnly = false; m_HomingAxis = HAL_AXIS_NONE; m_FineSpeedMode = false; m_ControlMode = HAL_CTRL_MODE_CNC; m_ActiveMachineType = HAL_MACHINE_TYPE_UNSELECTED; m_IsCalibrated = false; m_InhibitActiveHigh = false; m_ActiveProbe = APT_VISION; m_HomeManual = false; m_HomeToLimitSwitch = false; m_HomeToResetLine = false; m_HomeSpeedRestrict = true; m_DSPLoopTime = 0; m_CurrentSpeedXYZ = 0.0; m_CurrentSpeedR = 0.0; m_DCCMoveInProgress = false; m_InitInProgress = false; m_IllumSettleTime = 0.0; m_StageSettleTime = 0.0; m_ZoomSettleTime = 0.0; m_LaserPositionalActiveHigh = true; m_LaserState = false; m_LaserPositionalOutput = HAL_OUTPUT_NONE; m_OptimetInit = false; m_OptimetZFollow = false; m_OptimetNomDist = 0.0; m_OptimetScanDensity = 0.0; m_OptimetGain = 20; m_OptimetFreq = 800; m_OptimetQualityThreshold = 70; m_OptimetScanQuality = 0; m_OptimetMag = HAL_LP_AUX_LENS_1_0x; m_OpticsGridActiveHigh = true; m_OpticsGridState = false; m_OpticsGridOutput = HAL_OUTPUT_NONE; for(Axis = HAL_AXIS_X ; Axis <= HAL_AXIS_Q ; Axis++) { m_ProbePoint[Axis] = 0; m_ProbeDiff[Axis] = 0.0; } m_ProbeDCCRetractDist = 0.0; m_ProbeManRetractDist = 0.0; m_ProbeHitExpected = false; m_ProbeDisableIfNotActive = true; m_ProbeEnabled = false; m_ProbeLoading = false; m_LampUsePrototypeRing = false; memset(m_LampOutputState_5x8, 0, sizeof(m_LampOutputState_5x8)); memset(m_LampOutputState_2x8, 0, sizeof(m_LampOutputState_2x8)); memset(m_LampOutputLevel_5x8, 0, sizeof(m_LampOutputLevel_5x8)); memset(m_LampOutputLevel_2x8, 0, sizeof(m_LampOutputLevel_2x8)); for(Axis = HAL_AXIS_X ; Axis <= HAL_AXIS_ZOOM ; Axis++) { m_AxisEnabled[Axis] = false; m_AxisVelocity[Axis] = 0.0; m_AxisAcceleration[Axis] = 0.0; m_AxisResolution[Axis] = 0.001; } m_Pendant_IsInitialised = false; m_Pendant_EStopInhibitsAmp = true; m_Pendant_FineSpeedFactor = 1.0; m_Pendant_Input_EStop = -1; m_Pendant_Status_FineMode = HAL_OUTPUT_NONE; m_Pendant_Status_CtrlDCC = HAL_OUTPUT_NONE; m_Pendant_Status_CtrlTopLight = HAL_OUTPUT_NONE; m_Pendant_Status_CtrlRngLight = HAL_OUTPUT_NONE; m_Pendant_Status_CtrlBtmLight = HAL_OUTPUT_NONE; for(Axis = HAL_AXIS_X ; Axis <= HAL_AXIS_Q ; Axis++) { m_Pendant_Enabled[Axis] = false; } g_lpfnWAIOpticsStartup = NULL; g_lpfnWALOpticsShutdown = NULL; } ////////////////////////////////////////////////////////////////////// CHALMicroVuExt::~CHALMicroVuExt() {} ////////////////////////////////////////////////////////////////////////////// // HAL_STATUS CHALMicroVuExt::InitialiseMachineType(HAL_MACHINE_TYPE Type) { HAL_STATUS Status = HAL_STATUS_NORMAL; // Set the active machine type and extra machine specific data m_ActiveMachineType=Type; switch(Type) { case HAL_MACHINE_TYPE_EXCEL: m_AxisEnabled[HAL_AXIS_X] = true; m_AxisResolution[HAL_AXIS_X] = -0.00005; m_AxisEnabled[HAL_AXIS_Y] = true; m_AxisResolution[HAL_AXIS_Y] = 0.00005; m_AxisEnabled[HAL_AXIS_Z] = true; m_AxisResolution[HAL_AXIS_Z] = -0.00005; // Q axis settings m_AxisEnabled[HAL_AXIS_Q] = false; // Zoom axis settings m_AxisEnabled[HAL_AXIS_ZOOM] = true; m_AxisVelocity[HAL_AXIS_ZOOM] = 6.0; m_AxisAcceleration[HAL_AXIS_ZOOM] = 45.0; m_AxisResolution[HAL_AXIS_ZOOM] = -0.001; break; case HAL_MACHINE_TYPE_VECTRA: // Read machine data from CNC.INI if(Status != HAL_STATUS_NORMAL) { if(!g_bOfflineOnly) return Status; else return HAL_STATUS_NORMAL; } // Global settings m_InhibitActiveHigh = true; // Homing settings m_HomeManual = false; m_HomeToLimitSwitch = false; m_HomeToResetLine = true; // Positional laser settings m_LaserPositionalActiveHigh = true; m_LaserPositionalOutput = HAL_OUTPUT_EXTIO_2; // X axis settings m_AxisEnabled[HAL_AXIS_X] = true; // Y axis settings m_AxisEnabled[HAL_AXIS_Y] = true; // Z axis settings m_AxisEnabled[HAL_AXIS_Z] = true; // Q axis settings m_AxisEnabled[HAL_AXIS_Q] = m_Pendant_Enabled[HAL_AXIS_Q]; // Zoom axis settings m_AxisEnabled[HAL_AXIS_ZOOM] = true; m_Pendant_Input_EStop = 3; #pragma message("removed for lining ease") // Check the pendant fine speed factor is valid if(m_Pendant_FineSpeedFactor < 0.01 || m_Pendant_FineSpeedFactor > 1.0) m_Pendant_FineSpeedFactor = 1.0; break; case HAL_MACHINE_TYPE_CUSTOM: if(Status != HAL_STATUS_NORMAL) { if(!g_bOfflineOnly) return Status; else return HAL_STATUS_NORMAL; } // Check the pendant fine speed factor is valid if(m_Pendant_FineSpeedFactor < 0.01 || m_Pendant_FineSpeedFactor > 1.0) m_Pendant_FineSpeedFactor = 1.0; break; case HAL_MACHINE_TYPE_UNSELECTED: default: // Machine type has not been selected break; } return Status; } HAL_STATUS CHALMicroVuExt::ReadConfigFile() { return HAL_STATUS_NORMAL; }