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

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