/* ************************************************************* */ /* * IAUX.H * * Zachary Wolf * 8/17/98 */ #ifndef __IAUX_HEADER #define __IAUX_HEADER /* ************************************************************* */ /* ENUM DEFINITIONS */ enum iaux_config_enum {IAUX_DAC488_HP3457, IAUX_DAC488HR_HP3457, IAUX_MANUAL_HP3457, IAUX_NONE}; enum iaux_ramp_style_enum {IAUX_LINEAR, IAUX_THREE_LINEAR, IAUX_COSINE}; enum iaux_binary_enum {IAUX_TRUE, IAUX_FALSE}; /* ************************************************************* */ /* STRUCTURE DEFINITIONS */ struct iaux_param_struct { int board_addr; /* GPIB board addr */ int dac488_addr; /* DAC488 GPIB address */ int dac488hr_addr; /* DAC488HR GPIB address */ int hp3457_addr; /* readback HP3457 GPIB address */ int dac488_port; /* DAC488 port controlling power supply */ int dac488hr_port; /* DAC488HR port controlling power supply */ int hp3457_chan; /* readback HP3457 channel */ enum iaux_config_enum config; /* hardware being used, choices in enum */ enum iaux_binary_enum bipolar; /* if bipolar supply, TRUE; otherwise FALSE */ double ps_amps_per_dac_volt; /* PS transfer function (A/V) */ double trans_volts_per_amp; /* transductor transfer function (V/A) */ enum iaux_ramp_style_enum ramp_style; /* ramp style, choices in enum */ double max_curr_limit; /* software max current limit (A), stripchart max */ double min_curr_limit; /* software min current limit (A), stripchart min */ double ramp_rate; /* ramp rate for setting magnet (A/s) */ double wait_after_ramp; /* time to wait (sec) after a ramp for things to settle */ double stand_ramp_rate; /* ramp rate for standardizing magnet (A/s) */ double wait_after_stand_ramp; /* time to wait (sec) after a standardization ramp for things to settle */ enum iaux_binary_enum init_zero_current_meas; /* if TRUE, perform an initial zero current measurement to correct offsets */ enum iaux_binary_enum init_turn_on; /* initial power supply turn on if TRUE, skip if FALSE */ double init_turn_on_current; /* current to go to for initial turn on */ enum iaux_binary_enum show_ui; /* show stripchart, etc., choices in enum */ }; /* ************************************************************* */ /* PUBLIC FUNCTION DECLARATIONS */ void iaux_init(char log_file[], struct iaux_param_struct iaux_param); void iaux_init_zero_current_meas(void); void iaux_init_turn_on(void); void iaux_write_header(char* file_name, int num_stand_cycles, double istand_max, double istand_min, int num_test_currents, double test_currents[]); void iaux_ramp(double desired_current); void iaux_standardize(double stand_max_current, double stand_min_current, int num_cycles); void iaux_get_current(double* current); void iaux_get_ave_current(double* ave_current, double* sig_current); void iaux_get_present_nominal_current(double* current); void iaux_set_ramp_rate(double ramp_rate); void iaux_monitor(void); void iaux_estimate_ramp_time(double desired_current, double* ramp_time); void iaux_exit(void); /* ************************************************************* */ /* CONSTANTS */ #define IAUX_MAX_NUM_RAMP_POINTS 5000 /* size of ramp current array */ #define IAUX_TIME_BETWEEN_CURRENT_STEPS .1 /* time between ramp steps (sec) */ #define IAUX_NUM_MEAS_AVE 4 /* number of measurements for ave and rms */ /* ************************************************************** */ /* DONE */ #endif