263 lines
7.6 KiB
C++
263 lines
7.6 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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;
|
|
}
|