
//  **************************************************************  //

/*
 * VSCANPARAM.H
 * This file contains parameters required by the measurement
 * program.
 *
 * Seva
 * 10/23/06
 */
 
/* Protection from multiple definitions */
#ifndef __REFMPARAM_HEADER
#define __REFMPARAM_HEADER 

/* Voltage integration system */
#include "adc.h"

////////////////////////////////////
//General settings
////////////////////////////////////
 
#define GPIB_BOARD_ADDR                 0 

////////////////////////////////// DRIVERS INITIALIZATION ////////////////////////////////////////
#include "param_cm6k.h"
#include "Param_umac.h"
#include "calib.h"

///////////////////////////// RUN PARAMETERS IN FOLDERS SECTION /////////////////////////////
#define RUN_PARAM_FOLDER  "s:\\magdata"
#define COPY_PARAM_FOLDER "c:\\magdata"
#define ROUGH_TUNING    0
#define FINE_TUNING     1
#define TUNING FINE_TUNING 
///////////////////////////// END OF RUN PARAMETERS IN FOLDERS SECTION //////////////////////

  
////////////////////////////////// END OF DRIVERS INITIALIZATION ///////////////////////////////// 





//------------------------------------------------------------
////////////////////////////////////////  INITIALIZATION///////////////////////////// 

//Voltage channels, check ADC section to turn them on and off, and of course check hardware connection
//Reference magnet center
#define RFM_CENTER_X    0.06483   //m
#define RFM_CENTER_Y    0.0034    //m
#define RFM_CENTER_Z    5.7486         //m

#define RFM_STEP_X      1.0E-03    //m
#define RFM_STEP_Y      1.0E-03    //m
#define RFM_STEP_Z      1.0E-03    //m

#define DEVIATION_X     1           // in steps out of center
#define DEVIATION_Y     1           // in steps out of center 
#define DEVIATION_Z     1           // in steps out of center
#define REF_MAGNET		"KRefM"
#define INI_FILE		"C:\\CVI\\Refm\\EXECUTABLE\\KRefM.ini" 

//----------------------------------------
#define BY_ADC_CH                   0
#define BX_ADC_CH                   -1 //-1 //1

//zero magnetic field chamber measurements
#define  ZERO_FIELD_ZPOS            5.25   //m
#define  ZERO_FIELD_YPOS            0.0  
#define  ZERO_FIELD_XPOS            0.03   //m


//////////////////////////////////////// END OF REFM INITIALIZATION///////////////////////////// 

////////////////////////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////// ADC DRIVERS SECTION /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//*** HP3458 settings ***//
#define HP3458_DEVICE_TYPE          ADC_HP3458
#define HP3458_DEV1_ADDR            22 //23 //
#define HP3458_DEV2_ADDR            23
#define HP3458_VOLTAGE_RANGE        5.0   //5.0
#define HP3458_CHANNELS_NUMBER      1
#define HP3458_INTEGRATION_TIME     60 //0.012//0.006  //in terms of AC power cycles: 0 - the fastest, 1 means 1/60 s  =16.67 ms
                                    //0.0006 - 0.01 ms
                                    //0.006 - 0.1 ms
                                    //0.012 - 0.2 ms //0.024 //0.4 ms
#define HP3458_REF_INTEGRATION_TIME 600.//0.06 
#define HP3458_TIME_INTERVAL        0.0011 //s time inerval for time samples
#define HP3458_MAX_READINGS         37888
//*** end HP3458 settings ***//

//-----------------------------

//*** ADC488 settings ***//
#define ADC488_DEVICE_TYPE          ADC_ADC488
#define ADC488_CHANNELS_NUMBER      1   //8 max number, available settings 1,2,4,8
#define ADC488_DEV_ADDR             14
#define ADC488_VOLTAGE_RANGE        3   // - voltage range  0 - 1V; 1 - 2V; 2 - 5V; 3 - 10V
#define ADC488_MAX_READINGS         60000  //readings per channel, set artificially - built-in memory allows more 
//*** end ADC488 settings ***//

//////////////////////////////////////////////////////////////////////////////////////////////////
#define ADC_MIN_READINGS                    10  //readings per channel 
// *********-> section to set driver types
#define ADC0_DEVICE_TYPE                        HP3458_DEVICE_TYPE   //ADC_NONE // HP3458_DEVICE_TYPE
#define ADC0_GPIB_BOARD_ADDR                    GPIB_BOARD_ADDR   //use default if use only one gpib board
#define ADC0_DEV_ADDR                           HP3458_DEV1_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib
#define ADC0_RS232_COM_PORT                     1 //set 1 if not used
#define ADC0_VOLTAGE_RANGE                      HP3458_VOLTAGE_RANGE
#define ADC0_INTEGRATION_TIME                   HP3458_INTEGRATION_TIME
#define ADC0_REF_INTEGRATION_TIME               HP3458_REF_INTEGRATION_TIME 
#define ADC0_TIME_INTERVAL                      HP3458_TIME_INTERVAL 
#define ADC0_CHANNELS_NUMBER                    HP3458_CHANNELS_NUMBER
//#define ADC0_MAX_READINGS                     HP3458_MAX_READINGS
//---------------------------
#define ADC1_DEVICE_TYPE                        ADC_NONE  //ADC_NONE  //HP3458_DEVICE_TYPE  
#define ADC1_GPIB_BOARD_ADDR                    GPIB_BOARD_ADDR   //use default if use only one gpib board
#define ADC1_DEV_ADDR                           HP3458_DEV2_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib
#define ADC1_RS232_COM_PORT                     1 //set 1 if not used
#define ADC1_VOLTAGE_RANGE                      HP3458_VOLTAGE_RANGE
#define ADC1_INTEGRATION_TIME                   HP3458_INTEGRATION_TIME
#define ADC1_REF_INTEGRATION_TIME               HP3458_INTEGRATION_TIME //HP3458_REF_INTEGRATION_TIME
#define ADC1_TIME_INTERVAL                      HP3458_TIME_INTERVAL 
#define ADC1_CHANNELS_NUMBER                    HP3458_CHANNELS_NUMBER
//#define ADC1_MAX_READINGS                     HP3458_MAX_READINGS
//---------------------------
#define ADC2_DEVICE_TYPE                        ADC_NONE //ADC488_DEVICE_TYPE //ADC_NONE 
#define ADC2_GPIB_BOARD_ADDR                    GPIB_BOARD_ADDR   //use default if use only one gpib board
#define ADC2_DEV_ADDR                           ADC488_DEV_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib
#define ADC2_RS232_COM_PORT                     1 //set 1 if not used
#define ADC2_VOLTAGE_RANGE                      ADC488_VOLTAGE_RANGE
#define ADC2_INTEGRATION_TIME                   HP3458_INTEGRATION_TIME
#define ADC2_REF_INTEGRATION_TIME               HP3458_REF_INTEGRATION_TIME
#define ADC2_TIME_INTERVAL                      HP3458_TIME_INTERVAL 
#define ADC2_CHANNELS_NUMBER                    ADC488_CHANNELS_NUMBER
//#define ADC2_MAX_READINGS                     ADC488_MAX_READINGS
//---------------------------
#define ADC3_DEVICE_TYPE                        ADC_NONE //ADC488_DEVICE_TYPE //ADC_NONE 
#define ADC3_GPIB_BOARD_ADDR                    GPIB_BOARD_ADDR   //use default if use only one gpib board
#define ADC3_DEV_ADDR                           ADC488_DEV_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib
#define ADC3_RS232_COM_PORT                     1 //set 1 if not used
#define ADC3_VOLTAGE_RANGE                      ADC488_VOLTAGE_RANGE
#define ADC3_INTEGRATION_TIME                   HP3458_INTEGRATION_TIME
#define ADC3_REF_INTEGRATION_TIME               HP3458_REF_INTEGRATION_TIME
#define ADC3_TIME_INTERVAL                      HP3458_TIME_INTERVAL 
#define ADC3_CHANNELS_NUMBER                    ADC488_CHANNELS_NUMBER
//#define ADC3_MAX_READINGS                     ADC488_MAX_READINGS
//***********-> end of set driver section
//-------------------------------------------------------------------------------------------------
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 ///////////////////////////// Calibration settings //////////////////////////////////////////////////
//settings from calib.h file
#define X_CALIB_TYPE CALIB_POLYFIT
#define Y_CALIB_TYPE CALIB_POLYFIT 

//#define Y_CALIB_FILE    "c:\\CVI\\current_calib\\Sentron_441\\Sentron_441_y.ini" 
#define Y_CALIB_FILE    "c:\\CVI\\current_calib\\" //DO NOT CHANGE it will be added from run parameters dlg
#define X_CALIB_FILE    "c:\\cvi\\current_calib\\HALLx_calib_poly_fit_file.dat"

#define X_CALIB_NAME    "HALLx_calib"
#define Y_CALIB_NAME    "HALLy_calib"  


//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////// MOTOR DRIVERS SECTION ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//general settings

//--- quick access definitions ---//

#define RS232_CM6K4_ADDR                    1
#define MOVE_RS232_CM6K4_COM                RS232_CM6K4_COM

#define MOVE_X_ACC                          .003 //.003 //.002
#define MOVE_Y_ACC                          .0001 
#define MOVE_Z_ACC                          .08  //0.08 //.035
#define MOVE_W_ACC                          MOVE_Z_ACC

#define MOVE_X_VEL                          .003 //.002
#define MOVE_X_HI_VEL                       0.006 //.008

#define MOVE_Y_VEL                          .0002  //0.0002
#define MOVE_Y_HI_VEL                       .0005

#define MOVE_Z_VEL                          .08 // .04   //0.02//  
#define MOVE_Z_HI_VEL                       .16 
#define MOVE_W_VEL                          MOVE_Z_VEL
#define MOVE_W_HI_VEL                       MOVE_Z_HI_VEL

// --- end quick access settings --- //


//*** other drivers specific settings *** //
#define RS232_SXDRIVE_ADDR              1 
#define GPIB_CM2100_ADDR                01
#define GPIB_CM4000_ADDR                01
#define GPIB_MC4_ADDR                   14
 // **** end of other drivers settings


   

//////////////////////////////////////////////////////////////////////////////////////////////////
// *********-> section to set driver types
//-------------------------------------------------------------------------------------------------
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
//----------------------------------------  settings constants---------------------------------------
// direction
#define MOVE_DIRECTION_POSITIVE             1
#define MOVE_DIRECTION_NEGATIVE             -1

//define zeroing options
#define MOVE_HOMING                         0
#define MOVE_ENDSWITCH                      1
#define MOVE_SETMANUALLY                    2
//*****************************************************************************************************
#define MOVEX_DEVICE_TYPE               MOVE_UMAC_UMAC //MOVE_CM6K4_CM6K4
#define MOVEX_AXIS_NUMBER               2 //cm6k4 1 - x 2 - y 3 - z
#define MOVEX_AXIS_CHAR                 'X'

#define MOVEX_GPIB_BOARD_ADDR           0   //set 0 if not used
#define MOVEX_RS232_COM_PORT            RS232_CM6K4_COM  //set 1 if not used 
#define MOVEX_DEV_ADDR                  UMAC_USB_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib

#define MOVEX_TRANSLATE_METERS_PER_REV  0.0010187189609066598752069272889342    //.01
//#define MOVEX_ENCODER_METERS_PER_LINE CM6K4_ENCODER_X_METERS_PER_LINE 
#define MOVEX_ACC                       MOVE_X_ACC
#define MOVEX_VEL                       MOVE_X_VEL
#define MOVEX_ADDR                      RS232_CM6K4_ADDR
#define MOVEX_DIRECTION                 MOVE_DIRECTION_POSITIVE
#define MOVEX_ZEROSET                   MOVE_CONTROLLER_SET
#define MOVEX_ZERO_OFFSET               0.099//0.105 //0.109//m // for MOVE_POSITION: absolute position to set zero  MOVE_LIMIT: relative offset,MOVE_HOMING: no meaning 
                                        //0.7mm away from reference mark

//YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
#define MOVEY_DEVICE_TYPE               MOVE_UMAC_UMAC //MOVE_CM6K4_CM6K4
#define MOVEY_AXIS_NUMBER               3 //cm6k4 1 - x 2 - y 3 - z
#define MOVEY_AXIS_CHAR                 'Y'

#define MOVEY_GPIB_BOARD_ADDR           0   //set 0 if not used
#define MOVEY_RS232_COM_PORT            RS232_CM6K4_COM  //set 1 if not used 
#define MOVEY_DEV_ADDR                  UMAC_USB_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib

#define MOVEY_TRANSLATE_METERS_PER_REV  .00025  //.000256
 
#define MOVEY_ACC                       MOVE_Y_ACC
#define MOVEY_VEL                       MOVE_Y_VEL
#define MOVEY_ADDR                      RS232_CM6K4_ADDR
#define MOVEY_DIRECTION                 MOVE_DIRECTION_POSITIVE
#define MOVEY_ZEROSET                   MOVE_CONTROLLER_SET //MOVE_HOMING  //MOVE_ENDSWITCH
#define MOVEY_ZERO_OFFSET               -0.0001 // for MOVE_POSITION: absolute position to set zero  MOVE_LIMIT: relative offset,MOVE_HOMING: no meaning 


//ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
#define MOVEZ_DEVICE_TYPE               MOVE_UMAC_UMAC //MOVE_CM6K4_CM6K4
#define MOVEZ_AXIS_NUMBER               1 //cm6k4 1 - x 2 - y 3 - z
#define MOVEZ_AXIS_CHAR                 'Z'

#define MOVEZ_GPIB_BOARD_ADDR           0   //set 0 if not used
#define MOVEZ_RS232_COM_PORT                RS232_CM6K4_COM  //set 1 if not used 
#define MOVEZ_DEV_ADDR                  UMAC_USB_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib

#define MOVEZ_TRANSLATE_METERS_PER_REV  .01988  //0.02 
//#define MOVEZ_ENCODER_METERS_PER_LINE CM6K4_ENCODER_Z_METERS_PER_LINE 
#define MOVEZ_ACC                       MOVE_Z_ACC
#define MOVEZ_VEL                       MOVE_Z_VEL
#define MOVEZ_ADDR                      RS232_CM6K4_ADDR
#define MOVEZ_DIRECTION                 MOVE_DIRECTION_POSITIVE
#define MOVEZ_ZEROSET                   MOVE_CONTROLLER_SET  //MOVE_HOMING  //MOVE_ENDSWITCH //MOVE_SETMANUALLY
#define MOVEZ_ZERO_OFFSET               -2.157 //-2.120 //-1.823 //m  //for MOVE_POSITION: absolute position to set zero  MOVE_LIMIT: relative offset,MOVE_HOMING: no meaning

//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
#define MOVEW_DEVICE_TYPE               MOVE_NONE_NONE //MOVE_CM6K_CM6K //MOVE_CM6K4_CM6K4
#define MOVEW_AXIS_NUMBER               -1 //cm6k4 1 - x 2 - y 3 - z
#define MOVEW_AXIS_CHAR                 'W'

#define MOVEW_GPIB_BOARD_ADDR           0   //set 0 if not used
#define MOVEW_RS232_COM_PORT            MOVE_RS232_CM6K4_COM  //set 1 if not used 
#define MOVEW_DEV_ADDR                  RS232_CM6K4_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib

#define MOVEW_TRANSLATE_METERS_PER_REV  0.066598//.01988  //0.02 
//#define MOVEZ_ENCODER_METERS_PER_LINE CM6K4_ENCODER_Z_METERS_PER_LINE 
#define MOVEW_ACC                       MOVE_Z_ACC
#define MOVEW_VEL                       MOVE_Z_VEL
#define MOVEW_ADDR                      RS232_CM6K4_ADDR
#define MOVEW_DIRECTION                 MOVE_DIRECTION_POSITIVE
#define MOVEW_ZEROSET                   MOVE_NONE //MOVE_SETMANUALLY //MOVE_ENDSWITCH  //MOVE_HOMING  //MOVE_ENDSWITCH //MOVE_SETMANUALLY
#define MOVEW_ZERO_OFFSET               -2.157 

//**** End of select drive section ****//
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////// END MOTOR DRIVERS SECTION ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////// Get Data Section (retrieve temperatures from socket server)/////////

#define PD_SOURCE_LOCATION              "dstp://134.79.80.57/labctrl" 
//#define PD_UPDATE_SVR_ON_CHANGE           0   //if false, requires to call update server function
                                                //after data submitting is completed
///////////////////////////////////// END OF Get Data Section /////////////////////////////////////
 
/* End protection */
#endif
