w23_subs.f: c subroutine IEw23(iunit,iadd,ifunct,imode,freq,amp,offset) c for controlling wavetek model 23 function generators c c iunit: unit number for connection established with IEopen c iadd: primary address of device [8,9] c ifunct: 0:sin, 1:square, 2:triangle, 3:rampUp, 4:rampDown, 5:DC c imode: 0:continuous, 1:triggered, 2:gated, 3:trigHaver, 4:gateHaver, 5:clock, 6:synthesized c freq: frequency in Hz c amp: peak-to-peak amplitude in V (into 50 ohms, so typically will be larger) max: 10.2 c offset: offset in V (-5.1 to 5.1) c c if imode=6, freq is changed to reflect the exact valued produced c c subroutine IEw23status(iunit,iadd,out,freq,amp,offset) c for controlling wavetek model 23 function generators c c iunit: unit number for connection established with IEopen c iadd: primary address of device [8,9] c out: string in which output is placed [34 bytes max] c freq: frequency in Hz c amp: amplitude in V c offset: DC offset in V (-5.1 to 5.1) c c subroutine IEw23reset(iunit,iadd) c for controlling wavetek model 23 function generators c c iunit: unit number for connection established with IEopen c iadd: primary address of device [8,9] k192_subs.f: c subroutine IEk192init(iunit,iadd,ifunct,irange) c for controlling keithley model 192 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [20,21] c ifunct: 0:DCV, 1:ACV, 2:OHM c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:2000, 6:20M c c subroutine IEk192read(iunit,iadd,xx,xerror,over) c for controlling keithley 192 DMM c takes multiple readings and reports stable result or enlarges error accordingly c c iunit: unit number for connection established with IEopen c iadd: primary address of device [20,21] c ifunct: 0:DCV, 1:ACV, 2:OHM c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:20M c xx: reading c xerror: calibration error from manual c over: flags errors, including overflow c subroutine IEk192read1(iunit,iadd,x,xerror,over) c for controlling keithley 192 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [20,21] c ifunct: 0:DCV, 1:ACV, 2:OHM c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:20M c x: reading c xerror: calibration error from manual c over: flags errors, including overflow c subroutine IEk192status(iunit,iadd,out) c for controlling keithley model 192 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [20,21] c out: string in which output is placed [18 bytes expected] c c status report default 0050020:01000000\c\n c TFRKQSMYZW000000 c subroutine dstats(x,n,amedian,amean,sdev,adev) c basic descriptive stats c x: array of values; will be returned sorted low to high c n: number of values in x c amedian: median of x c amean: mean (average) of x c sdev: standard deviation of x c adev: average absolute deviation of x k177_subs.f c subroutine IEk177read(iunit,iadd,ifunct,irange,xx,xerror,over) c at least 4 reads seeking stable value c c iunit: unit number for connection established with IEopen c iadd: primary address of device [24/5,26/7] c ifunct: [0,1,2,3,4] for [DC volts, AC volts, ohms, DC amps, AC amps] front panal function select c irange: [1,2,3,4,5,6,7] for [scale button number] on front panal c x: real-value answer c xerror: manual claimed uncertainty in result - note ieee correction c over: flags errors, including overflow c subroutine IEk177read1(iunit,iadd,ifunct,irange,x,xerror,over) c exactly one read k196_subs.f c subroutine IEk196init(iunit,iadd,ifunct,irange) c for controlling keithley model 196 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [22,23] c ifunct: 0:DCV, 1:ACV, 2:OHM, 3:DCA, 4:ACA, 5:ACV_dB, 6:ACA_dB, 7:comp_OHM c irange: 0:auto, 1:.3, 2:3, 3:30, etc. 7 max c c subroutine IEk196status(iunit,iadd,out) c for controlling keithley model 196 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [22,23] c out: string in which output is placed c c status report default 1961010000010000000023600000000\c\n c 33 bytes mdlABFGJKMMNPPQQQQQQRSTWWWWWYZcal c subroutine IEk196read(iunit,iadd,xx,xerror,over) c for controlling keithley 196 DMM c takes multiple readings and reports stable result or enlarges error accordingly c c iunit: unit number for connection established with IEopen c iadd: primary address of device [22,23] c ifunct: 0:DCV, 1:ACV, 2:OHM c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:20M c xx: reading c xerror: calibration error from manual c over: flags errors, including overflow c c subroutine IEk196read1(iunit,iadd,x,xerror,over) c for controlling keithley 196 DMM c subroutine IEk2400init(iunit,iadd,Vmax,Amax) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] c Vmax: maximum expected voltage c Amax: maximum expected current c c subroutine IEk2400status(iunit,iadd,out) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] c out: string containing decimal value of status byte [4 bytes max] c c subroutine IEk2400V(iunit,iadd,Vs,volts,amps,time,istat) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] c Vs: sourced voltage c volts: measured voltage c amps: measured current c time: in sec since reboot c istat: status integer c c see p 18-52; typical istat: 23556=101110000000100=bits:14,12,11,10,2 c b14-> V-source, b12->I-measure, b11->V-measure, b10->auto-ohms, b2->front inputs c common errors: bit3=compliance problem c subroutine IEk2400sweepV(iunit,iadd,imode,V0,V1,n,v,a) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] c imode: 0:linear, 1:log c V0: starting value sourced voltage c V1: ending sourced voltage c n: number of steps (119 max) c v(n): measured voltage array c a(n): measured current array c function eVk2400(volts,irange) c for estimating errors for keithley 2420 sourcemeter- VOLTS c based on value (if autorange: irange=0) or value and irange c c volts: measured voltage c irange: scale range 0:auto, 1:200mV, 2:2V, etc c returned modified if irange=0 on call c c subroutine IEk2400A(iunit,iadd,As,volts,amps,time,istat) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] c As: sourced amps c volts: measured voltage c amps: measured current c time: in sec since reboot c istat: status integer c c c see p 18-52; typical istat: 39940=1001110000000100=bits:15,12,11,10,2 c b15-> I-source, b12->I-measure, b11->V-measure, b10->auto-ohms, b2->front inputs c common errors: bit3=compliance problem c subroutine IEk2400sweepA(iunit,iadd,imode,A0,A1,n,v,a) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] c imode: 0:linear, 1:log c A0: starting value sourced current c A1: ending value sourced current c n: number of steps (119 max) c v(n): measured voltage array c a(n): measured current array c function eAk2400(amps,irange) c for estimating errors for keithley 2420 sourcemeter- AMPS c based on value (if autorange: irange=0) or value and irange c c amps: measured current c irange: scale range 0:auto, 1:10uA, 2:100uA, etc c returned modified if irange=0 on call c c see appendix A c subroutine IEk2400on(iunit,iadd) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] c subroutine IEk2400off(iunit,iadd) c for controlling keithley 2400 sourcemeter c c iunit: unit number for connection established with IEopen c iadd: primary address of device [10,11] k775_subs.f c subroutine IEk775init(iunit,iadd,ifunct) c for controlling keithley model 775 counter/timer c c iunit: unit number for connection established with IEopen c iadd: primary address of device [16] c ifunct: 0:freqA, 1:freqB, 2:periodA, 3:, 4:intervalAB c 5:pulseA, 6:freqC (no option) c c subroutine IEk775read(iunit,iadd,xx,xerror,over) c for controlling keithley 775 counter/timer c takes multiple readings and reports stable result or enlarges error accordingly c c iunit: unit number for connection established with IEopen c iadd: primary address of device [16] c ifunct: 0:freqA, 1:freqB, 2:periodA, 3:, 4:intervalAB c 5:pulseA, 6:freqC (no option) c xx: reading c xerror: standard deviation of three measurements OR lsd c over: flags errors, including overflow c c subroutine IEk775read1(iunit,iadd,x,over) c for controlling keithley 775 counter/timer c c iunit: unit number for connection established with IEopen c iadd: primary address of device [16] c ifunct: 0:freqA, 1:freqB, 2:periodA, 3:, 4:intervalAB c 5:pulseA, 6:freqC (no option) c x: reading (error too hard to estimate) c over: flags errors, including overflow c c subroutine IEk775status(iunit,iadd,out) c for controlling keithley model 775 counter/timer c c iunit: unit number for connection established with IEopen c iadd: primary address of device [16] c out: string in which output is placed c c status report default 775000100000000900010\c\n c 23 bytes FAAAABBBBIDPNKM SY c CAFSCAFS k175_subs.f: c subroutine IEk175init(iunit,iadd,irange) c for controlling keithley model 175 DMM c volts and ohms scales only; amps are controlled by buttons c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28] c irange: 0:auto, 1:.2, 2:2, 3:20, etc. 5 max c c subroutine IEk175read(iunit,iadd,xx,xerror,over) c for controlling keithley 175 DMM c takes multiple readings and reports stable result or enlarges error accordingly c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28] c ifunct: [0,1,2,3,4,5,6] for [DC volts, AC volts, ohms, DC amps, AC amps, DCV dB, ACV dB] front panal function select c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:2000 c xx: reading c xerror: calibration error from manual c over: flags errors, including overflow c subroutine IEk175read1(iunit,iadd,x,xerror,over) c for controlling keithley 175 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28] c ifunct: [0,1,2,3,4,5,6] for [DC volts, AC volts, ohms, DC amps, AC amps, DCV dB, ACV dB] front panal function select c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:2000 etc c x: reading c xerror: calibration error from manual c over: flags errors, including overflow c c subroutine IEk175status(iunit,iadd,out) c for controlling keithley model 175 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28] c out: string in which output is placed c c status report default 175xx0000000:\c\n [15 bytes expected] c mdlFRZKTMdMeY c subroutine IEf8840init(iunit,iadd,ifunct,irange) c for controlling fluke model 8840 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28,29] c ifunct: 0:DCV, 1:ACV, 2:OHM, 3:DCA, 4:ACA, 5:4-OHM c irange: 0:auto, 1:.2, 2:2, 3:20, etc. 7 max c subroutine IEf8840read(iunit,iadd,xx,xerror,over) c for controlling fluke 8840 DMM c takes multiple readings and reports stable result or enlarges error accordingly c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28,29] c ifunct: 0:DCV, 1:ACV, 2:OHM, 3:DCA, 4:ACA, 5:4-OHM c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:20M c xx: reading c xerror: calibration error from manual c over: flags errors, including overflow c c subroutine IEf8840read1(iunit,iadd,x,xerror,over) c for controlling fluke 8840 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28,29] c ifunct: 0:DCV, 1:ACV, 2:OHM, 3:DCA, 4:ACA, c irange: 0:auto, 1:.2, 2:2, 3:20, 4:200, 5:20M c x: reading c xerror: calibration error from manual c over: flags errors, including overflow c c subroutine IEf8840status(iunit,iadd,out) c for controlling fluke model 8840 DMM c c iunit: unit number for connection established with IEopen c iadd: primary address of device [28,29] c out: string in which output is placed c c status report default FRST\c\n c 6 bytes nnnn\c\n