
//  **************************************************************  //

//
// PARAM.H
// This file contains parameters required by the measurement
// program.
//
// Seva
//10/23/06
//
 
// Protection from multiple definitions //
#ifndef __ZSCANPARAM_HEADER
#define __ZSCANPARAM_HEADER 

// Voltage integration system //
#include "vscan3.h"
#include "adc.h"
#include "devices.h"

//Drvice settings
#include "param_mcvi.h" 

////////////////////////////////////
//General settings
////////////////////////////////////

#define USE_CENTER_POSITION      //define this variable  to do secondary scans around defined center
 
#define GPIB_BOARD_ADDR                 0 
#define FM480_BOARD_ADDR                2 //this will be used, set in fm480 param ignored

////////////////////////////////// DRIVERS INITIALIZATION ////////////////////////////////////////
//#ifdef FM_480
    #include "param_fm480.h"
    #define FM480_GPIB_ADDR_X       12  //check against x or y . 12 is the top one
    #define FM480_GPIB_ADDR_Y       13
//#endif
#include "param_cm6k.h"
#include "param_mcvi.h" 
#include "Param_umac.h"
#include "calib.h"
////////////////////////////////// END OF DRIVERS INITIALIZATION ///////////////////////////////// 
 ////////////////////////////////////
//General settings
////////////////////////////////////

 //define positive moving direction 
#define MOVE_DIRECTION_POSITIVE             1
#define MOVE_DIRECTION_NEGATIVE             -1


///////////////////////////// RUN PARAMETERS IN FOLDERS SECTION /////////////////////////////
#define RUN_PARAM_FOLDER  "s:\\magdata"
#define COPY_PARAM_FOLDER "s:\\magdata"
#define ROUGH_TUNING    0
#define FINE_TUNING     1
#define TUNING FINE_TUNING 
///////////////////////////// END OF RUN PARAMETERS IN FOLDERS SECTION //////////////////////

  
////////////////////////////////// END OF DRIVERS INITIALIZATION ///////////////////////////////// 


//////////////////////////////////////// ZSCAN INITIALIZATION///////////////////////////////////
//#define CONFIG_XS_YF                1
//#define CONFIG_YS_XF                0
#define AXES_CONFIG                 CONFIG_YS_XF
#define FIRST_POLE_POS              0.956254// 0.95835 //m  start looking for the first pole from this position
#define POLES_NUMBER                226
#define POLES_SPACING               0.015004  //m

//Undulator center coordinates to be translated into vscan3 settings
#define ZSCAN_X_CENTER             0.029200
#define ZSCAN_Y_CENTER             0.000430     // meters
#define ZSCAN_X_INCREMENT          0.001
#define ZSCAN_Y_INCREMENT          0.0001       // meters
#define ZSCAN_X_NSTEPS             0            // 0 - single , 1->3, 2->5  and etc.
#define ZSCAN_Y_NSTEPS             0            // 0 - single , 1->3, 2->5  and etc.
#define ZSCAN_X_AXIS_ON            1 // 1 or 0
#define ZSCAN_Y_AXIS_ON            1 // 1 or 0

//Voltage channels, check ADC section to turn them on and off, and of course, check hardware connection
#define BY_ADC_CH                    0  //0
#define BX_ADC_CH                    1
#define BYCOIL_ADC_CH                -1 //2  //  use negative value to disable after measurements analysis
#define BXCOIL_ADC_CH                -1 //3  //  use negative value to disable after measurements analysis
#define BYCOIL_AVE_CH                -1 //2  //  use negative value to disable after measurements analysis
#define BXCOIL_AVE_CH                -1 //3  //  use negative value to disable after measurements analysis
#define FLUX_GATEX_CH                -1 //3  //  use negative value to disable after measurements analysis 
#define FLUX_GATEY_CH                -1 //3  //  use negative value to disable after measurements analysis

#define ZSCAN_MEASUREMENT_TYPE		 ZSCAN_CONFIG_HALL_XY
//////////////////////////////////////// END OF ZSCAN INITIALIZATION///////////////////////////// 

////////////////////////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////// ADC DRIVERS SECTION /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//*** HP3458 settings , Kugler***//
#define HP3458_DEVICE_TYPE          ADC_HP3458
#define HP3458_DEV1_ADDR            22  //Y Hall
#define HP3458_DEV2_ADDR            23  //X Hall
#define HP3458_DEV3_ADDR            24  //Y Coil
#define HP3458_DEV4_ADDR            25  //X Coil

#define HP3458_VOLTAGE_RANGE        7.0   //5.0
#define HP3458_CHANNELS_NUMBER      1

//Integration time at scan - depemds on speed
#define HP3458_INTEGRATION_TIME     0.06 // = 1ms  0.012 //0.2 ms//0.024 //0.4 ms//0.006 //0.1 ms 0.000006 //in terms of AC power cycles: 0 - the fastest, 1 means 1/60 s


//Time interval for time samples at zero position
#define HP3458_TIME_INTERVAL        0.0016 //s Hall and Coil will have different number of samples at zero ch.
#define HP3458_REF_INTEGRATION_TIME 0.06 //30.0 // = 0.5s  


#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, setting reserved for Hall probe y
#define ADC_HALL_Y								0
#define ADC0_DEVICE_TYPE                        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_TIME_INTERVAL                      HP3458_TIME_INTERVAL 
#define ADC0_REF_INTEGRATION_TIME               HP3458_REF_INTEGRATION_TIME 
#define ADC0_CHANNELS_NUMBER                    HP3458_CHANNELS_NUMBER
//#define ADC0_MAX_READINGS                     HP3458_MAX_READINGS
//--------------------------- , setting reserved for Hall probe x
#define ADC_HALL_X								1  
#define ADC1_DEVICE_TYPE                        HP3458_DEVICE_TYPE //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_REF_INTEGRATION_TIME               HP3458_REF_INTEGRATION_TIME
#define ADC1_CHANNELS_NUMBER                    HP3458_CHANNELS_NUMBER
//#define ADC1_MAX_READINGS                     HP3458_MAX_READINGS
//--------------------------- , setting reserved for  short coil y
#define ADC_COIL_Y								2  
#define ADC2_DEVICE_TYPE                        HP3458_DEVICE_TYPE//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                           HP3458_DEV3_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                      HP3458_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_REF_INTEGRATION_TIME               HP3458_REF_INTEGRATION_TIME
#define ADC2_CHANNELS_NUMBER                    HP3458_CHANNELS_NUMBER
//#define ADC2_MAX_READINGS                     ADC488_MAX_READINGS
//---------------------------  , setting reserved for  short coil x
#define ADC_COIL_X								3 
#define ADC3_DEVICE_TYPE                        HP3458_DEVICE_TYPE   //HP3458_DEVICE_TYPE //ADC_NONE 
#define ADC3_GPIB_BOARD_ADDR                    GPIB_BOARD_ADDR   //use default if use only one gpib board
#define ADC3_DEV_ADDR                           HP3458_DEV4_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                      HP3458_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_REF_INTEGRATION_TIME               HP3458_REF_INTEGRATION_TIME
#define ADC3_CHANNELS_NUMBER                    HP3458_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 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"  


//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////// VSCAN3 PARAMETERS ///////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//specifies move nodes for all directions. Do not mix with move setting were the real axes are used to set nodes
//#define VSCAN3_MOVE_X       1               //move x-axis to collect data,single trace
//#define VSCAN3_MOVE_Y       2               //move y-axis to collect data,single trace
//#define VSCAN3_MOVE_Z       3               //move z-axis to collect data,single trace 
    //----------------------
#define VSCAN3_MOVE_NONE    -1              //do nothing
#define VSCAN3_NUMBER_OF_ZERO_MEAS      2000 // = 2s 2000//  may be different for short coils
//parameters
//specify whether to use indices to calculate measuring distance or use defined ML (usually less then indices spacing)
#define     VSCAN3_X_USE_IDX_FOR_ML     0
#define     VSCAN3_Y_USE_IDX_FOR_ML     0 
#define     VSCAN3_Z_USE_IDX_FOR_ML     1

//default measuring length
//if using reference mark to set scanning distance and
//if need to extend measurement beyond the last reference mark set measuring length to inncrease the number
//of requested triggers and correspndingly increase the moving distance adjustment
#define     VSCAN3_X_MEASURING_LENGTH   0.052    //m
#define     VSCAN3_X_DIST_ADJUSTMENT    0.00    //and corresponding adjustment 
#define     VSCAN3_Y_MEASURING_LENGTH   0.000 //0.001  //m
#define     VSCAN3_Y_DIST_ADJUSTMENT    0.00
#define     VSCAN3_Z_MEASURING_LENGTH   0.00    //m it is the extra distance to generate triggers beyond the last mark if using indices for ml only
#define     VSCAN3_Z_DIST_ADJUSTMENT    0.355   //m//and corresponding distance to move adjustment 

//default position accuracy
#define     VSCAN3_X_ACCURACY           0.000001 //meters
#define     VSCAN3_Y_ACCURACY           0.000001 
#define     VSCAN3_Z_ACCURACY           0.00002
#define     VSCAN3_AVERAGING_NUM        3

//set here smallest distance to reach first index mark, use move program: 
//call homing then connect oscilloscope to index and find minimum distance
//this distance will be used to calculate dist_move when using measurement length
#define     VSCAN3_X_INIT_DISTANCE          0.008 //0.0003 //m
#define     VSCAN3_Y_INIT_DISTANCE          0.0004//m 
#define     VSCAN3_Z_INIT_DISTANCE          0.14  //m 


//settings
#define VSCAN3_BOARD_ADDR               GPIB_BOARD_ADDR 

//initial position on Z after homing
#define VSCAN3_OUT_CALIB_DIST           0.000
//axes assignment, all axes must be different!!! 
////// PRIMARY AXIS SETTINGS /////////////////////////
//---------------------------------------------------

#define     VSCAN3_PRIMARY_AXIS         VSCAN3_MOVE_Z //VSCAN3_MOVE_Z //VSCAN3_MOVE_Y  //continuosly moving

#define     VSCAN3_START_X_POS          1
#define     VSCAN3_STOP_X_POS           2

#define     VSCAN3_START_Y_POS          1
#define     VSCAN3_STOP_Y_POS           2

#define     ZSCAN_START_Z_HALL_IDX     	3 
#define     ZSCAN_START_Z_COIL_IDX     	2 
#define     VSCAN3_START_Z_POS          ZSCAN_START_Z_HALL_IDX
#define     VSCAN3_STOP_Z_POS           20//21 //3//20  

////// Triggering settings /////////////////////////
#define VSCAN3_COUNTS_MULTIPLE          200


////// SECONDARY AXIS SETTINGS /////////////////////////

#define VSCAN3_SECONDARY_AXIS          VSCAN3_MOVE_Y   // VSCAN3_MOVE_Z //VSCAN3_MOVE_Y  //descrete positioning
#define VSCAN3_SECONDARY_ON            TRUE         // TRUE FALSE
#define VSCAN3_SECONDARY_ZERO_INDEX     1 
 
//--------------------------------------------------- 
#define VSCAN3_SECONDARY_START          0.000430 //0.000480     // meters
#define VSCAN3_SECONDARY_STEP_SIZE      0.0001 //0.0001 //m
#define VSCAN3_SECONDARY_STEPNUMBER     0 //0- single , 1->3, 2->5  and etc.
    
////// FIXED AXIS SETTINGS /////////////////////////
//---------------------------------------------------

#define VSCAN3_FIXED_AXIS               VSCAN3_MOVE_X   //VSCAN3_MOVE_Z //VSCAN3_MOVE_Y  //fixed position
#define VSCAN3_FIXED_ON                 TRUE //FALSE        // TRUE FALSE 
#define VSCAN3_FIXED_POS                0.029200        //  meters
#define VSCAN3_FIXED_ZERO_INDEX         1  

//----------------------------------------------------

//pxi server settings
#define VSCAN3_PORT_NUMBER              6340 //see labview host server
#define VSCAN3_IP_ADDRESS               "192.168.0.2" //pxi1031
//#define VSCAN3_IP_ADDRESS               "134.79.82.102" //pxi1002






//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// may require to switch cables after changing the following setting
#define     VSCAN3_DATA_PARAM           VSCAN3_ADC123 // VSCAN3_ADC1THEN2 VSCAN3_ADC123
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////// PXI ENCODER TRIGGERING SYSTEM //////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////// 
//default values 
#define X_COUNTS_PER_INDEX              20000                  //1 cm per index
#define ENCODER_X_MICRON_PER_COUNT      0.5                     //microns
#define X_MULTIPLES_OF_COUNT            VSCAN3_COUNTS_MULTIPLE  // default value, real value is set by vscan3
#define X_INDICES_BEFORE_RESET          VSCAN3_START_X_POS      // default value, real value is set by vscan3
#define X_NUMBER_OF_INDICES             VSCAN3_STOP_X_POS       // default value, real value is set by vscan3

#define Y_COUNTS_PER_INDEX              20000                  // 1 cm per index
#define ENCODER_Y_MICRON_PER_COUNT      0.5                     //microns
#define Y_MULTIPLES_OF_COUNT            VSCAN3_COUNTS_MULTIPLE  // default value, real value is set by vscan3  
#define Y_INDICES_BEFORE_RESET          VSCAN3_START_Y_POS      // default value, real value is set by vscan3
#define Y_NUMBER_OF_INDICES             VSCAN3_STOP_Y_POS       // default value, real value is set by vscan3

#define Z_COUNTS_PER_INDEX              250000                  //20 cm per index
#define ENCODER_Z_MICRON_PER_COUNT      1.0                     //microns 
#define Z_MULTIPLES_OF_COUNT            VSCAN3_COUNTS_MULTIPLE  // default value, real value is set by vscan3
#define Z_INDICES_BEFORE_RESET          VSCAN3_START_Z_POS      // default value, real value is set by vscan3
#define Z_NUMBER_OF_INDICES             VSCAN3_STOP_Z_POS       // default value, real value is set by vscan3

///////////////////////////////////////////////////////////////////////////////////////////////////////////// 




//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////// 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 //.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                       .006

#define MOVE_Y_VEL                          .0002  //0.0002
#define MOVE_Y_HI_VEL                       .0005

#define MOVE_Z_VEL                          0.08 //.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   XYZ - bench coordinate system
//-------------------------------------------------------------------------------------------------
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#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
#define MOVEX_POSITIVE_SOFT_LIMIT		0.06 //m

//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_ENCODER_METERS_PER_LINE CM6K4_ENCODER_Y_METERS_PER_LINE 
#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 
#define MOVEY_POSITIVE_SOFT_LIMIT		0.0 //m - disabled

//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
#define MOVEZ_POSITIVE_SOFT_LIMIT		0.0 //m  - disabled

//WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
#define MOVEW_DEVICE_TYPE               MOVE_NONE_NONE //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            RS232_CM6K4_COM  //set 1 if not used 
#define MOVEW_DEV_ADDR                  UMAC_USB_ADDR  //use for both rs232 and GPIB, despite it will be really used only with gpib

#define MOVEW_TRANSLATE_METERS_PER_REV  .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_CONTROLLER_SET  //MOVE_HOMING  //MOVE_ENDSWITCH //MOVE_SETMANUALLY
#define MOVEW_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


//**** End of select drive section ****//
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////// END MOTOR DRIVERS SECTION ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
 #define ZSCAN_SLOT            2	 
///////////////////////////// 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

#define INI_FILE     "c:\\cvi\\zscan\\param.ini" //default location at project folder, also works for IDL
#define MCVI_INI_FILE  INI_FILE

//////////////////////////////////////////////////////////////////////////////////////////////////
// ------------IDL interface parameters ------
#define IDL_ON              0                           //to specify whether to run IDL Analysis
#define IDL_FOLDERS_FILE    "c:\\bat\\idl_folders.bat"  //to edit batch file with working folders
#define IDL_SCRIPT_FILE     "c:\\bat\\idlrun"           //do not edit file, it is generated automatically
//!! Important: if script file name has to be changed   the reference to that file in ma.bat must be accomplished
#define IDL_DATA_FILE       "bscanz_dat.001"            //file that contans measured data
#define IDL_MODE            0                           // 0 - plot to eps file, 1 - plot to screen, 2 - plot both
#define IDL_INPUT_FOLDER    "c:\\aps\\ma\\test mm_data\\lcls2006"
#define IDL_OUTPUT_FOLDER   "c:\\aps\\ma\\test_results\\2006"
#define IDL_TEMP_FOLDER     "c:\\aps\\ma\\temp\\" 
//-------------- MA parameters -----------------------//
#define IDL_PARAM_FILE      "c:\\aps\\ma\\ma.dat"
#define IDL_ENERGY          "13.61396d0"                //Energy (GeV) must be string for IDL
#define IDL_WAVELENGTH      "1.497596d0"                //Wavelength (Angstrom) must be string for IDL
#define IDL_DISTANCE_SCALE  "1.0000d-0 1.0d-0"          //Tesla-m  must be string for IDL 

//looks as bumber of poles to skip at ends 
#define IDL_IP              "3 3"                       //ip1 ip2   omit ip extremas at the beginning(1) and end(2) (phase analysis)

#define IDL_IS              "-1 -1"                     //is1 is2   omit is poles at the beginning(1) and end(2)(spectral analysis)
#define IDL_VIEW_SET        "0  -0.00      1"           // {1=on-axis, 0=adjust view angle}, angle, {1=CAOpt, 0=noCAOpt}
#define IDL_PLOT_SET        "1      1      1      0"    //phase.plt, spec.plt, peak.plt, trajectory.plt {1=write, 0=no write}
#define IDL_COLUMNS_NUM     7
#define IDL_COLUMN_READ     5
#define IDL_LINES_TO_SKIP   44                          // Gamma and Keff setting
#define IDL_SLOT            ZSCAN_SLOT	  


 /////////////////////// Mesurement configurations ////////////////////////////////////////////

#define RETRACT_X_POSITION						-0.08 //m
#define RETRACT_X_OFFSET						-0.08 //m
#define RETRACT_X_NSTEPS						0

#define HALLCENTER_INCREMENT					0.0001
#define HALLCENTER_N_STEPS						1	 //3 scans

#define FINAL_X_INCREMENT					0.001
#define FINAL_N_STEPS						6	 //13 scans

//------------------------------------------------------

#endif

