RL 867 POLARIMETRIC MEASUREMENT OF POWERLINE CABLES Kamal Sarabandi Yisok Oh Fawwaz T, Ulaby July, 1991 RL-867 = RL-867

RL86 7 POLARIMETRIC MEASUREMENT OF POWERLINE CABLES by Kamal Sarabandi Yisok Oh Fawwaz T. Ulaby Radiation Laboratory Department of Electrical Engineering and Computer Science The University of Michigan July 8, 1991

Abstract Polarimetric backscattering measurements of a variety of powerline cables are presented in this report. The objective of this investigation is to study the effect of braiding of the cables on the backscattering at skew incidence. The measurements were performed for four different powerline samples of actual size and a large scaled prototype (made in machine shop) at C-, X-, and Ka-band over a wide range of incidence angles. The prototype cable is six times larger than the smallest cable (167.8 MCM copper cable); the size was chosen such that the radar response at higher frequencies can be simulated. The data were collected over 500 MHz bandwidth at C- and X-band with 1.25 MHz increment and 1 GHz bandwidth at Ka-band with 2.5 MHz increment. Also the effect of non-uniform illumination and measurement in the near field of the cables were studied. Experimental data shows a significant increase in the backscattering for VV-polarization (ov,,) at angles away from normal incidence. This backscatter is proportional to the number and diameter of the strands on the surface of the cables. There are also noticeable increases in the HH and cross-polarized components of the scattering matrices, and their magnitudes, relative to that of the VV component, are proportional to the pitch angle of the helix. i

Contents 1 Introduction 1 2 System Configuration and Measurement Setup 3 3 Calibration Procedure 5 4 Experimental Results 7 5 Conclusions 13 Appendix A A-1 11

List of Figures 1 Block diagram of the C- and X-band scatterometer system. 20 2 Block diagram of the pulsing network....... 20 3 4 5 6 7 8 9 10 11 Block diagram of the C-band RF circuitry............ Block diagram of the X-band RF circuitry.............. Block diagram of the Ka-band RF circuitry........... Automatic radar cross section measurement setup...... Cross section of powerline samples................... Photograph of powerline samples and their smooth cylinder counterpart................................. Photograph of calibration sphere in the chamber............ Photograph of cable samples in the chamber............. Geometry of a powerline cable........................ 21 21 22 23 24 25 26 27 28 28 29 30 31 32 12 Geometry of a radar system above a powerline cable..... 13 The radar backscatter cross section of 30-cm-long cable #1 GHz versus incidence angle.................. 14 The radar backscatter cross section of 30-crn-long cable #2 GHz versus incidence angle............... 15 The radar backscatter cross section of 30-cm-long cable #3 GHz versus incidence angle.................. 16 The radar backscatter cross section of 30-cm-long cable #4 GHz versus incidence angle.................. at 4.75 at 4.75 I I at 4.75 at 4.75 iii

17 The radar backscatter cross section of 30-cm-long smooth cylinder of diameter 1.27 cm at 4.75 GHz versus incidence angle.. 33 18 The radar backscatter cross section of 84-cm-long cable #1 at 4.75 GHz versus incidence angle............................... 34 19 The near field radar backscatter cross section of 84-cm-long smooth cylinder of diameter 1.27 cm at 4.75 GHz versus incidence angle.. 35 20 The near field radar backscatter cross section of 90-cm-long cable #2 at 4.75 GHz versus incidence angle...................... 36 21 The near field radar backscatter cross section of 90-cm-long smooth cylinder of diameter 2.22 cm at 4.75 GHz versus incidence angle.. 37 22 The near field radar backscatter cross section of 90-cm-long cable #3 at 4.75 GHz versus incidence angle........................ 38 23 The near field radar backscatter cross section of 90-cm-long smooth cylinder of diameter 3.15 cm at 4.75 GHz versus incidence angle.. 39 24 The near field radar backscatter cross section of 120-cm-long cable #4 at 4.75 GHz versus incidence angle...................... 40 25 The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 3.49 cm at 4.75 GHz versus incidence angle.. 41 26 The near field radar backscatter cross section of 120-cm-long prototype cable at 4.75 GHz versus incidence angle.................... 42 27 The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 7.62 cm at 4.75 GHz versus incidence angle.. 43 iv

28 The near field radar backscatter cross section of 180-cm-long cable #4 at 4.75 GHz versus incidence angle...................... 44 29 The radar backscatter cross section of 30-cm-long cable #1 at 9.5 GHz versus incidence angle........................... 45 30 The radar backscatter cross section of 30-cm-long cable #2 at 9.5 GHz versus incidence angle................... 46 31 The radar backscatter cross section of 30-cm-long cable #3 at 9.5 GHz versus incidence angle........................ 47 32 The radar backscatter cross section of 30-cm-long cable #4 at 9.5 GHz versus incidence angle............................. 48 33 The radar backscatter cross section of 30-cm-long smooth cylinder of diameter 1.27 cm at 9.5 GHz versus incidence angle.......... 49 34 The near field radar backscatter cross section of 84-cm-long cable #1 at 9.5 GHz versus incidence angle..................... 50 35 The near field radar backscatter cross section of 84-cm-long smooth cylinder of diameter 1.27 cm at 9.5 GHz versus incidence angle... 51 36 The near field radar backscatter cross section of 90-cm-long cable #2 at 9.5 GHz versus incidence angle.................... 52 37 The near field radar backscatter cross section of 90-cm-long smooth cylinder of diameter 2.22 cm at 9.5 GHz versus incidence angle... 53 38 The near field radar backscatter cross section of 90-cm-long cable #3 at 9.5 GHz versus incidence angle..................... 54 v

39 The near field radar backscatter cross section of 90-cm-long smooth cylinder of diameter 3.15 cm at 9.5 GHz versus incidence angle... 55 40 The near field radar backscatter cross section of 120-cm-long cable #4 at 9.5 GHz versus incidence angle................... 56 41 The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 3.49 cm at 9.5 GHz versus incidence angle... 57 42 The near field radar backscatter cross section of 120-cm-long prototype cable at 9.5 GHz versus incidence angle............. 58 43 The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 7.62 cm at 9.5 GHz versus incidence angle... 59 44 The near field radar backscatter cross section of 180-cm-long cable #4 at 9.5 GHz versus incidence angle..................... 60 45 The near field radar backscatter cross section of 90-cm-long cable #3 at 9.5 GHz versus incidence angle...................... 61 46 The near field radar backscatter cross section of 120-cm-long cable #4 at 9.5 GHz versus incidence angle................. 62 47 The radar backscatter cross section of 30-cm-long cable #1 at 34.5 GHz versus incidence angle....................63 48 The radar backscatter cross section of 30-cm-long cable #2 at 34.5 GHz versus incidence angle.......................... 64 49 The radar backscatter cross section of 30-cm-long cable #3 at 34.5 GHz versus incidence angle........................ 65 vi

50 The radar backscatter cross section of 30-cm-long cable #4 at 34.5 GHz versus incidence angle.............................. 66 51 The radar backscatter cross section of curved 30-cm-long cable #2 at 34.5 GHz versus incidence angle (radius of curvature 10 m).. 67 52 The near field radar backscatter cross section of 120-cm-long cable #4 at 34.5 GHz versus incidence angle................ 68 53 The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 3.49 cm at 34.5 GHz versus incidence angle.. 69 54 The co- and cross-polarized signatures of cable #4 (120 cm long) at 4.75 GHz and 19~ incidence angle..................... 70 55 The co- and cross-polarized signatures of cable #4 (120 cm long) at 9.5 GHz and 43.4~ incidence angle................... 71 56 The co- and cross-polarized signatures of cable #4 (120 cm long) at 34.5 GHz and 24.4~ incidence angle.................... 72 57 The co- and cross-polarized signatures of cable #4 (120 cm long) at 34.5 GHz and 13~ incidence angle (Bragg angle)................ 73 vii

List of Tables 1 System specifications of the scatterometers................ 17 2 Electrical and geometrical specifications of the cables under test... 18 3 Radar cross section (dBsm) of smooth cylinders of 1 meter long.. 19 viii

1 Introduction Detection and collision avoidance of obstacles of small physical cross section has always been an important problem for low-flying aircrafts. High voltage powerlines and powerline towers are particularly hazardous in this respect. Many collision warning techniques have been suggested in the past. Among the most promising techniques are laser radar [Savan and Barr, 1988] and millimeter wave radar [Rembold et al., 1982], particularly the latter when used in the synthetic aperture imaging mode. Available methods, however, suffer from a number of shortcomings. A major limitation of laser systems is atmospheric attenuation under fog and cloudy conditions, which would hamper target detection considerably. The problem with microwave and millimeter wave radars lies in the fact that current models used for characterizing the scatter by powerlines are inadequate. The radar uses a linearly polarized wave and transmission lines are modeled as long perfectly conducting circular cylinders [Rembold, 1984]. The description imposes a significant restriction on the ability of radar to detect powerlines. The choice of frequency and polarization have not been examined in previous measurements and models in such a way as to optimize the detection of powerlines by radars. The fact that a high voltage powerline is made up of strands of wires in a helical arrangement can be exploited with regard to backscattering detection of the powerlines. At high frequencies the helical geometry of powerlines becomes an important factor influencing the scattering behavior of electromagnetic waves which can be taken advantage of in detecting powerlines at off-specular directions. The 1

surface of the cables is periodic along the axis of the cables and usually the period is only a fraction of the helical pitch. The effect of the helicity and the periodicity of the surface in backscatter at incidence angles away from normal incidence is investigated in this report. Detectability of targets with characteristic scattering matrices can be greatly enhanced by using polarization synthesis, which requires the radar system to have polarimetric capabilities. Polarization synthesis techniques are particularly useful for detecting targets in the presence of clutter [loannidis and Hammers, 1979]. In this report we present the polarimetric backscatter response of four different types of powerline cables at C-, X-, and Ka-band. Experimental data are collected over a wide range of incidence angles and for two different cable lengths. In one case the cable length is chosen such that the illumination is uniform, and in the other case the cable is long and the illumination is non-uniform. In the case of non-uniform illumination on a cable, the scattering matrix of a smooth cylinder of identical length and diameter is also measured for comparison. First the measurement setup and the radar configurations are discussed briefly and then a polarimetric calibration procedure used in support of these measurements is explained. Finally, the radar cross section measurements and significant results are given. The cable measurements are performed under two conditions: (1) short cables where the illumination is uniform and the radar is at the far field of the cable, (2) long cables where the illumination is tapered and the radar is in the near field. 2

2 System Configuration and Measurement Setup The polarimetric measurements of the powerline cables were performed by C-, X-, and Ka-band scatterometers. A simplified block diagram of the scatterometer system is shown in Fig. (1). The scatterometers are HP 8753-based (8753A for C- and X-band and 8753C for Ka-band) systems with both phase and amplitude measurement capability and 100 dB dynamic range. The ability of the network analyzer to generate the time domain response of the frequency measurements allows us to remove the unwanted short-range signals from the desired target response (known as software gating). It also allows us to separate the contribution of different scattering points within the target under investigation. The C- and X-band scatterometers are slightly different from the Ka-band system. The C- and X-band system are single antenna radars while the Ka-band is a dual antenna system. The sequence of polarization selection, data collection, and target orientation is performed via an HP 9000 series computer (see Fig. 1). The relay actuator energizes the frequency and polarization switches. The amplifier and pulsing network eliminates the short-range returns from the antenna and circulators to increase the dynamic range for RCS measurements [Liepa et al., 1989]. The pulsing network is not used for the Ka-band system since there is enough isolation between the transmitter and the receiver. In this scheme, the receiver is switched off during transmission and then reconnected when the target return is expected to arrive at the receiver. Since the switching is done at a much higher rate than the receiver's bandwidth, the network analyzer does not sense that the incoming signal is pulsed 3

and it is measured as if it were a continuous wave signal. The block diagram of the amplifier and pulsing network is shown in Fig. 2. The synthesized source of the network analyzer spans the frequency range 300 KHz to 3 GHz and therefore up- and down-convertors are used to transmit and receive the desired frequencies. The block diagrams of the C- and X-band microwave circuitry are given in Figs. (3) and (4), respectively. The up-convertors for the Cand X-band units are very stable microwave sources operating at 6.5 and 8 GHz respectively. The frequency range of the network analyzer is set to 1.5-2 GHz and 1.25-1.75 GHz, respectively, in order to operate the C- and X-band scatterometer at 4.5-5 and 9.25-9.75GHz. The antenna for each system is comprised of an orthomode transducer (OMT) and a dual-polarized square horn with an overall cross-polarization isolation of 20 dB. The Ka-band scatterometer can operate in both the coherent and coherent-onreceive modes [Kuga et al., 1991]. In the coherent mode the scattering matrix of the target can be measured and in the coherent-on-receive mode the scatterometer measures the Muller matrix of the target directly. In this study the coherent mode of the scatterometer is used. The dual channel capability of the HP 8753C allows simultaneous measurements of V and H channels in Coupled/Chop mode. Point by point external triggering is used for transmitting V and H sequentially and for synchronizing a polarization control circuit to create different polarizations. The block diagram of the Ka-band system is given in Fig. 5. This scatterometer is a two-antenna system with at least 70 dB isolation between the transmitter 4

and the receiver. The polarization selection in the transmitter is accomplished by a Faraday rotator and in the receiver by an OMT. The antennas in both the transmit and receive channels are lens-corrected corrugated circular horns. The local oscillator is a 32 GHz Gunn diode which is stabilized by an injection locking technique. Table 1 gives the important specifications of the scatterometer systems. To measure the backscatter of the cables with a very good signal to background ratio for all incidence angles, the cables were mounted on a styrofoam pedestal in an anechoic chamber. The correct position of the cables with respect to the antenna coordinate system was accomplished by an azimuth-over-elevation positioner as depicted in Fig. (6). The azimuth turntable is a computer controlled stepper motor with an accuracy of a fraction of a tenth of a degree and the elevation controller is a precise analog positioner. 3 Calibration Procedure To obtain accurate measurements of the scattering matrices of the cables, the measured data must be calibrated. In this study the scatterometers are calibrated using the single-target calibration technique (STCT) [Sarabandi and Ulaby, 1990]. The error in measurement of the scattering matrix using this technique is less than 0.5 dB in magnitude and 5~ in phase. With STCT the antenna cross-talk contamination and channel imbalances are obtained by measuring only a single calibration target, namely a metallic sphere. This technique is immune to errors caused by target alignment with respect to the antenna coordinate system. 5

Using a four-port network approach it can be shown that the measured scattering matrix of a target with scattering matrix S is given by 0R1 1 C 1 C Ti 0 M= S +N 0 R2 C 1 C 1 0 T2 where the R and T matrices are the receive and transmit channel imbalances, C is the antenna cross-talk contamination factor, and N is a matrix representing thermal noise and background reflections. The background contribution can be obtained by measuring the empty chamber and the effect of the thermal noise can be minimized by an integration process. By denoting the measured scattering matrix elements of the sphere and the target (cable), respectively, by m? and my., the unknown scattering matrix elements of the cables can be obtained from (1-C2)2 [-2C2( + t) + (1 + C2)(. + C2)] so Shh = -(C 2)2 [-2C2( + ) S + (1 + C2)( + C2+ )] s~ 12 21 22 vh= (C [2 + 2C21) - (1 + C2)(9 + so)] S hv = (C2)2 [2. + 2C2 ) - (1 + C2)(4 + I)] S~ where s~ is the theoretical value for the diagonal elements of the sphere's scattering matrix. The cross-talk contamination factor is given by C = (1-.-v7l) where a - m221 and the branch of the square root is chosen such that Re [v/1-] > 0. STCT is developed for single antenna radars, thus its application in the Ka-band 6

scatterometer is questionable. However, measurements of targets with known scattering matrices with the Ka-band system show that STCT is capable of improving the cross-polarization isolation of the antenna system. 4 Experimental Results High voltage transmission line cables are usually constructed from a number of aluminum strands twisted around a central core of one or more steel strands in a helical fashion. The number of layers and diameter of aluminum strands determines the current capacity of the cable. In a distribution network, however, low tension and high current cables are used which are made of copper or aluminum strands. Four different types of powerline cables were acquired for this experiment and their electrical and geometrical specifications are listed in Table 2. Also the geometry of the cross section of the powerline samples are depicted in Fig. 7. A photograph of the powerline samples and the anechoic chamber is shown in Figs. 8-10. The important parameters of the cables, as far as electromagnetic scattering is concerned, are the outer surface geometry such as the cable diameter, diameter of each strand, the pitch of the helices, and the surface period along the axis of the cable as shown in Fig. 11. The powerline cables are targets of extended length, that is the length of the cables, in all practical situations, extends beyond the footprint of the illumination area. Thus in reality the cables are illuminated with a tapered wave and the radar is in the near field of the target. In this case the radar echo is a function of not 7

only the geometry but also the radiation pattern and the distance. In contrast, the far field measurement reveals both the main scattering features and a unique quantitative value for the radar echo independent of the radiation pattern. In this study we use cables with two different lengths, short and long. For short cables uniform illumination and far field criteria are satisfied and for long cables the illumination is non-uniform and the radar is in the near field of the cables. The measured radiation pattern and radar cross section of the long cable are compared with those measured for smooth cylinders of similar lengths and diameters to study the effect of braiding on the cables. A series of scattering matrix measurements of powerline cables and smooth cylinders is performed at C-, X-, and Ka-band over the frequency ranges 4.5-5 GHz, 9.25-9.75 GHz, and 34-35 GHz, respectively. The sequence of automatic data collection is explained in Appendix A. All the data presented in this report are measurements at the center frequencies, namely 4.75 GHz for C-band, 9.5 GHz for the X-band, and 34.5 GHz for Ka-band. The scattering matrix measurements were performed in an 18-meter long anechoic chamber at a distance of 13 meters. The targets are mounted on a styrofoam pedestal to get a minimal background contribution. The styrofoam pedestal is practically invisible at C- and X-band but at Ka-band its radar cross section is considerable (about -30 dBsm). To remove the contribution of the background and the effects of multiple reflection within the radar system, the chamber and pedestal are measured in the absence of targets and then subtracted from the target response. A 30.5-cm and a 4.45-cm metallic spheres are used for C-, X-band 8

and the Ka-band system as calibration targets, respectively. The signal to noise ratio was better than 30 dB in all cases. The cables are positioned in the horizontal plane (H-plane) of the antenna system and the radiation patterns are measured in the principal plane, that is the axis of rotation is perpendicular to the horizontal plane. The accurate orientation of the cables with respect to the antenna system is achieved by a stepper motor positioner with an accuracy of a fraction of a tenth of a degree. This cable orientation is suitable for radar systems mounted on low-flying aircrafts where the powerlines are in the horizontal plane. In detection of powerlines using synthetic aperture radars, however, the results of this experiment may not be directly applicable. When a powerline cable is not in the principal plane of the radar antenna, the circular symmetry of the powerline cables can be used to obtain its scattering matrix from the scattering matrix of the cable in the principal plane. Figure 12 shows the relative positions of a radar system and a powerline. The plane of incidence, which includes the cable axis and the direction of incidence, intersects the antenna polarization plane, which includes the vertical and horizontal directions of A the antenna, along a unit vector h'. If the antenna coordinate frame is rotated by A an angle / such that h and h' coincide, then the horizontal principal plane and the plane of incidence would coincide also for which the scattering matrix is known. For known values of polar direction of the cable axis (<) and incidence angle (0), the coordinate frame rotation angle (s) can be obtained from 0 = tan-1 [cos 0 tan q]. (1) 9

The scattering matrix of the cable in this situation S, in terms of the scattering matrix of the cable in the principal plane, Sp, can be obtained from [ cos -sin cos sin 2) sin? cos 4 - sin 4 cos j We are now in a position to present the measured data and let us start with the C-band measurements. Figure 13-16 shows the radar cross section of the 30-cmlong cables #1 through #4. Measured RCS of a 30-cm-long smooth cylinder with a diameter similar to that of cable #1 is also shown in Fig. 17 for comparison. The co-polarized components (VV, HH) of the scattering matrix are more or less similar to those of the smooth cylinders except for cable #4 where ow is slightly higher than Chh. At incidence angles beyond 50 degrees scattering is dominated by the end cap of the cables. There is also a rather significant decrease in UJVV/Uhh of cables, when compared with the same ratio for smooth cylinders at normal incidence (see Table 3 for RCS of the smooth cylinders). The reason for this phenomena is that the surface of the cables shows two different surface impedances due to the corrugations and the surface impedance is higher for vertical polarization (TE case) than for horizontal polarization (TM case) [Sarabandi and Ulaby, 1991]. The decrease in the ratio of the co-polarized terms is inversely proportional to the diameter of the cables. Figures 18-27 give the near field measurements of the cables and their smooth cylinder counterparts. The fifth cable is a 1.2-meterlong prototype cable, made in the machine shop, whose cross sectional dimensions are six times larger than those of cable #1. RCS measurements of this cable 10

at C- and X-band simulate the response of cable #1 at 28.5 GHz and 57 GHz, respectively. The near field effect reduces the RCS at normal incidence, widens the RCS pattern, and enhances the increase in o(T and chh. These effects can be seen better by comparing the backscattering data of cable #4 with three different lengths: 30 cm, 120 cm, and 180 cm, as shown in Figs. 16, 24, and 28, respectively. The RCS response of cable #5 in all polarizations has a peak at approximately 15~ from the backscatter direction (see Fig. 26). This peak is one of the Bragg modes in backscatter. For a periodic target the Bragg backscatter occurs for incidence angles according to = sin-1 ( ) (3) (2L3 where A is the wavelength and L is the period (Fig. 11). Since most of the scattered energy is in the specular direction, the higher order B3ragg modes are very weak at angles away from normal incidence. Figures 29-32 gives the backscattering cross section of 30-cm-long cables at X-band and Fig. 33 shows the measurement of the cylinder counterpart of cable #1. The near field measurements of the cables and cylinders are also shown in Figs. 34-43. Similar scattering features, but more pronounced than those observed for C-band, exist in the X-band data. For the prototype cable in this case two of the Bragg modes are observable, one around 7~ and the other around 15~. The important scattering feature of interest is the increase in a,, at angles away from normal incidence. This characteristic for cables #3 and #4 are shown more clearly in Figs. 45 and 46 with a finer angular resolution of 0.25~. The increase in a, 11

can be interpreted as follows. The surface of a cable can be viewed as a cylinder with a number of parallel slanted narrow grooves on the surface. The inclination angle of the grooves is equal to the pitch angle of the helices which is around 15~. The backscatter from a metallic groove for TE case (electric field perpendicular to the groove axis) is much stronger than the TM case (electric field parallel to the groove axis) [Senior et al., 1990], because in the TE case the groove is capable of supporting TEM wave and in the TM case the groove is incapable of supporting any waveguide mode. Since the grooves are almost parallel to the axis of the cylinder the backscatter for WVV-polarization is much stronger. Figures 47-50 show the RCS of the 30-cm-long cables. In these cables only one of the Bragg modes is observable and as in the lower frequencies, the backscatter for VV-polarization is significantly higher than the other components. The effect of curvature on cable #2 has also been tested and the result is shown in Fig. 51 for a curved cable with radius of curvature of about 10 meters. The curvature lowers the RCS of the cable at normal incidence and Bragg directions and widens the scattering patterns. Also the near field measurement of cable #4 and its cylinder counterpart are shown in Figs. 52 and 53, respectively. The backscattering measurements are performed polarimetrically so that the target response to any desired transmit and receive polarization configuration can be synthesized [van Zyl and Ulaby, 1990]. Obviously for detection purposes the desired polarization is the one which maximizes the target response. Since the general scattering feature of all the cables away from normal incidence is similar, 12

polarization synthesis of cable #4 is considered only. Figures 54, 55, and 56 show the co- and cross-polarized signatures of the cable at 4.75 GHz and 19~, 9.5 GHz and 43.40, and 34.5 GHz and 24.5~ respectively. Also Fig. 57 shows the polarization signatures of the cable at the Bragg angle and 34.5 GHz. All the polarization signatures closely resembles the polarization signature of a vertical dipole. Thus the optimum polarization for detection, as expected, is VV-polarization when the cable is in the H-plane of the antenna system. If the cable were not in the H-plane, then the optimum polarization would still be a linear polarization with rotation angle b as given by (1). 5 Conclusions Near field and far field polarimetric backscattering measurements of four powerline cable samples are presented at C-,X-, and Ka-band over a wide range of incidence angles. The near field measurements of smooth cylinders with a length and diameter similar to those of the cables are also performed for comparison. The experimental results from the backscatter measurements of cables and cylinders indicate that: 1. At normal incidence there is a significant decrease in Cvv/Uhh of the cables in comparison with the ratio for the smooth cylinders. This decrease is inversely proportional to the diameter of the cables. 2. At low frequencies and for small diameter cables (D/A < 1) there is no significant backscatter at angles away from normal incidence. 13

3. The cross-polarized component of the cable backscatter is considerablely high over the entire range of incidence angles. The cross-polarized RCS level is directly proportional to the cable and the cable strand diameters. 4. When the cable diameter is comparable to the wavelength there is a considerable increase in av, in off-specular directions and this increase depends on the diameter of the cable strands. 5. At millimeter wavelengths the Bragg modes are observable at angles close to normal incidence (Oi < 15~). The VV-polarized backscatter for the Bragg modes is much higher than the other polarizations. 6. Measurement in the near field of the cables reduces the RCS at normal incidence, widens the RCS pattern, and enhances the increase in cr,, at angles away from normal incidence. 7. Curvature in cables lowers the RCS of the cables at normal incidence and Bragg directions and also widens the scattering pattern. 8. The optimum polarization to detect powerline cables is VV-polarization provided the cable is in the H-plane of the antenna. The optimum polarization in other cases is still a linear polarization and the rotation angle of the optimum polarization is a function of the relative orientation of the powerline with respect to the antenna coordinate system. 14

Acknowledgement This research was performed under sub-contract to Ressler Associates, Inc. (301) 206-3232, under DARPA/SBIR contract number DAAH01-91-C-R066. References [1] loannidis, G.A and D.E. Hammers, "Optimum antenna polarization for target discrimination in clutter," IEEE Trans. Antennas Propagat., vol. 27, no. 5, May 1979. [2] Kuga, Y., K. Sarabandi, A. Nashashibi, F.T. Ulaby, and R. Austin, "Millimeter wave polarimetric scatterometer systems: measurement and calibration techniques," Proc. AGARD, Electromag. Wave Propag. Panel 48 Symp., Montreal, May 1991. [3] Liepa, V.V., K. Sarabandi, and M.A. Tassoudji, " A pulsed network analyzer based scatterometer", Proc. of IEEE Geosci. Remote Sens. Symp., Vancouver, July 1989. [4] Rembold, B., H.G. Wippich, M. Bischoff, and W.F.X. Frank, "A MM-wave collision warning sensor for helicopters," Proc. Military Microwave., pp. 344 -351, London, 1982. [5] Rembold, B., "Radar cross section of long wires," IEEE Trans. Antennas Propagat., vol. 32, no. 10, Oct. 1984. 15

[6] Senior, T.B.A., K. Sarabandi, J.Natzke, "Scattering by a narrow gap", IEEE Trans. Antennas Propagat., vol. 38, no. 7, 1102-1110, July 1990. [7] Sarabandi, K., and F.T. Ulaby, " High frequency scattering from corrugated stratified cylinders", IEEE Trans. Antennas Propagat., vol. 39, no. 4, 512 -520, April 1991. [8] Sarabandi, K., and F.T. Ulaby, " A convenient technique for polarimetric calibration of radar systems", IEEE Trans. Geosci. Remote Sensing, submitted for publication. [9] Savan, M. and D. N. Barr, "Reflectance of wires and cables at 10.6 micrometer," Center for Night Vision and Electro-Optics, MSEL-NV-TR-0063, Jan. 1988. [10] Tassoudji, M.A., K. Sarabandi, and F.T. Ulaby, "Design consideration and implementation of the LCX polarimetric scatterometer (POLARSCAT)", Radiation Laboratory Report No. 022486-T-2, The University of Michigan, June 1989. [11] van Zyl, J. J. and F.T. Ulaby,Radar Polarimetry for Geoscience Applications (ed. F.T. Ulaby and C. Elachi), Artech House, Dedham MA, 1990. 16

C-band X-band Ka-band Center Frequency (GHz) 4.75 9.5 34.5 Bandwidth (GHz) 500 500 1000 Antenna Gain (dB) 25.3 29.5 32.5 Beamwidth (deg.) 9 6 5 Far field distance (m) 5.8 10.5 5.5 Cross-pol. isolation (dB) 25 20 25 Output power (mw) 100 100 100 Minimum detectable -35 (co-pol.) -45 (co-pol) -45 (co-pol.) target at 15 m (dBsm) -60 (cross-pol.) -65 (cross-pol.) -65 (cross-pol.) Table 1: System specifications of the scatterometers. 17

Circular Copper Current No. Mils # d D Capacity P L (MCM) St. (cm) (cm) (Amps) (cm) (cm) 1 167.8 7 0.400 1.20 420 14.60 1.95 Circular Aluminum Steel Current No. Mils # d d D Capacity P L (MCM) St. (cm) St. (cm) (cm) (Amps) (cm) (cm) 2 556.5 19 0.446 - - 2.22 730 23.5 1.52 3 954 54 0.337 7 0.337 3.01 1010 35.56 2.00 4 1431 45 0.446 7 0.301 3.52 1300 40.65 2.40 Table 2: Electrical and geometrical specifications of the cables under test. 18

4.75 GHz 9.5 GHz 34.5 GHz Diam. (cm) vv hh vv hh vv hh 1.27 -2.08 -0.68 -0.73 1.73 6.75 6.72 2.22 0.08 1.27 3.66 3.77 9.17 9.08 3.15 -0.03 2.45 5.25 5.15 10.57 10.58 3.49 1.73 2.81 5.38 5.57 11.03 11.02 7.62 5.05 5.92 8.61 8.84 14.4 14.4 Table 3: Radar cross section (dBsm) of smooth cylinders of 1 meter long. 19

Figure 1: Block diagram of the C- and X-band scatterometer system. Figure 2: Block diagram of the pulsing network. 20

From Amplifier & Pulsing Network SPDT Switch From Relay Actuator Amplifier "L From Relay Actuator V Switch To Amplifier & Pulsing Network Figure 3: Block diagram of the C-band RF circuitry. From Amplifier & Pulsing Network SPDT Switch From Relay Actuator To H-port Amplifier H V From Relay Actuator To Amplifier & Pulsing Network Figure 4: Block diagram of the X-band RF circuitry. 21

Pol. Tr. IF In - 2-4 GHz 10.66 GHz bi fF Out 2-4 GHz Re. Figure 5: Block diagram of the Ka-band RF circuitry. 22

r- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -l Anechoic Chamber, — -- -- -- -- - |- --- - - - - ------ *!^ I!.^ y!' '!!! I!! R T Azimuth Positioner | Elevation Positioner HP 9000 r - Computer Figure 6: Automatic radar cross section measurement setup. 23

3.04 cm - 1.20 cm 167.8 MCM (Copper) 954 MCM (Aluminum & Steel) 3.52 cm 2.22 cm 1431 MCM (Aluminum & Steel) 556.5 MCM (Aluminum) Figure 7: Cross section of powerline samples. 24

Prototype Large Scaled 1431 MCM (Aluminum & Steel). -~:7 954 MC(Aluminum & Steel)' 556 5 MCM (Aluminum) 167.8 MCM. (Copper) Figure 8: P)otograph of po rerline samples and their smooth cylinder counterpart.. 25

Figure 9: Photograph of calibration sphere in the chamber. 26

Figure 10: Photograph of cable samples in the chamber. 27

D d I P__ L I I d: Stranded conductor diameter D: Overall outside diameter L: Spacing between surfaces P: Spacing between turns Figure 11: Geometry of a powerline cable. z A rV A k H y c-P x A l Figure 12: Geometry of a radar system above a powerline cable. 28

vv 0. --- — -........... hh. hv -10. - a I ^5^ ~~~.-2.- '/\; ---..> - -40. o /,,, -0. -i Figure 13: The radar backscatter cross section of 30-cm-long cable #1 at 4.75 GHz versus incidence angle. -s 10.1.2.3.40 0 0 0 0 I n iec Anl (Degees ve~~~~~rssicdneng. 29

0. ----- ~hh hv -10. ~ i / \ -20. a -5. -30. 'I I, a a/:. -10. 0. 10. 20. 30. 40. 50. 60. 70. 80. Figure 14: The radar backscatter cross section of 30-cm-long cable #2 at 4.75 GHz versus incidence angle. % -30. - /, / a 6/ a I a a, a, I6 66 r \, / i \ ( -50. \I 70 Incidence Angle (Degrees) versus incidence angle. 30

10. 0. -10. E cn pq -v C) -20. -30. -40. -i I -50. -60. -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) 60. 70. 80. Figure 15: The radar backscatter cross section of 30-cm-long cable #3 at 4.75 GHz versus incidence angle. 31

10. 0.: -] --- —-.hh....- hv t \ -10. - i ' -20. -30. - - I a \ a:\ -40. - I' I I -50. 1" ~'I 32

10. 0. -. hh-.hh..hv -10. -20. I' Figure 17: The radar backscatter cross section of 3)-cm-long smooth cylinder of 33 c -30. I, I -10. 0. 10. 20. 30. 40. 0 60 70. 80. diameter 1.27 cm at 4.75 GHz versus incidence angle. 33

10. 0........... 0Ghh I \ (3'hv -10 -20. - 4: I * 'I a',.) ' a,,. II I * I * o i I \' I ' 'II,::, -40. / - / 10. 110. 20. 30. 40. Incidence Angle (Degrees) II I I II\ ni Angl (Dge e si cb 1 at 47 versus incidence angle. 34

10. 0. ---- -- Ohh -^ Ohv -10. -20. -30. I Figure 19: The near field radar backscatter cross section of 84-cm-long smooth I. X - II -10. 3 40. cylier of d eIr aIt.I,i a 35t ~~In iec Anl Dges Fi gr 1 'Th ne a fiel radr baksate cosetiono 4c-ogsot

/-Il 6 rO cn 10. 0. -10. -20. -30. -40. -50. -6 0. i I I I I I i I i I I I I -10. 0. 10. 20. 30. 40. Incidence Angle (Degrees) Figure 20: The near field radar backscatter cross section of 90-cm-long cable #2 at 4.75 GHz versus incidence angle. 36

10. 0.. hh - hv -10. - -20. 4,, 4 I -60. I I 4 c n e 2ll c a I v / t I II 31. f ' * a a 1.. 1 4 0 Incidence Angle (Degrees) -10.I 0. 10 0.3. 0 Incienc Angl (Degees Fiue2: h er il adrbcscte rossciono 0-mlngsot cylinder of dimee 2.2 cma.5Gzvrusicdneage \ 37

- vv 0....... hh -20. - /y ---I ~ -50. w it I* *I0 -0. I... I I -10. 0. 10. 20. 30. 40. Incidence Angle (Degrees) Figure 22: The near field radar backscatter cross section of 90-cm-long cable #3 at 4.75 GHz versus incidence angle. 38

10. vv 0. /- - hh 0hh a ahv s -20. I 1~h -10. -: 1of -20. * a * a * * II a' UA -30. aI60. Ii iI i t i Ii: i i II Ir I II ~i i -50.,1,I\ ji.... II I i i~ I II ~ mI I m I, I 1' \Il (I ii 11 111111 I al I, ' I 'I - 10. 0. 10. 20. 30. 40. Incidence Angle (Degrees) Figure 23: The near field radar backscatter cross section of 90-cm-long smooth cylinder of diameter 3.1.5 cm at 4.75 GHz versus incidence angle. 39

'vv 10. * %:..:.-.... i i i iI, II,, 1 ' Il -50. I -30. -10. 10..20. 30. 40. Incidence Angle (Degrees) Figure 24: The near field radar backscatter cross section of 120-cm-long cable #4 at 4.75 GHz versus incidence angle. 40

'vv 0. 7I --— ~ --- 0 -.......... h - II -- -- - ' (0hv -10. -20. ' -30., Ij "I, a 1 U I: I a i II....,, ' I, \ I It.60t. 11,.;I Il fill a, a, a I' -0. 0. 10. 20. 30. 40. I I: iI II ~ 1 ii 1 Incidence Angle (Degrees) Figure 25: The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 3.49 cm at 4.75 GHz versus incidence angle. 41 I6."Vl%\ -10. 0.10. 2',,,',' 0,niec i iI (eres Figure 25: The% iea fil Iaa akcte rs ecino 2-mog sot cylinder of d~~ ~ ~~iamtr34 ma.5Gzvru icdec l:, t ~,,l h:/ l, lll,

10. 0.......-. hh -^;!' ^hh.hv -10. - -20. It Ial l "a, (: i Incidence Angle (Degrees) cable at 4.75 GHz versus incidence angle.,,' ' I,: II I li II II Incidence Angle (Degrees)

10. 0. -- --- - hh _hv Is I-10. to to i a I is.40 a I. II -0. -)10.. 10. 20. 30. 40. Figure 27: The near field radar backscatter cross section of 120-cm-long smooth 43 " Ii I I -.30. 4 -40. 43

-- ~hv - -10., Ig -20. I I -30.,, I, I,,,,,, i, I 10. 10. 20. 30. 40. * I Incidence Angle (Degrees) Figure 28: The near field radar backscatter cross section of 180-cm-long cable #4 at 4.75 GHz versus incidence angle. II I, II -' ' Ir I I~1.-10. 0. 10. 20. 30. 40. at 4.75 GHz versus incidence angle. 44

10. 0w. ----- hh - hv -10. - -20. CI U -30. - -10. 0. 10. 20. 30. 40. 50. 60. 70. 80. versus incidence angle.,:,, I I,i I t, II I I '\ I I I a I I( i % I I ' I1 -10.. 30 4 5 6 versus incidence angle. 45

10. 0. -10. E Cu - -20. -30. -40.: -50. -60. -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) 60. 70. 80. Figure 30: The radar backscatter cross section of 30-cm-long cable #2 at 9.5 GHz versus incidence angle. 46

E C3 C) 10. 0. -10. -20. -30. -40. - I) -50. - -60. 1 --10. 0. 10. 20. 30. 40. 50. 60. 70. 80. Incidence Angle (Degrees) Figure 31: The radar backscatter cross section of 30-cm-long cable #3 at 9.5 GHz versus incidence angle. 47

0. --- —----- 10. ~hh 0 - —........hv -10.'' -3o. I, I I, a a ''I x II *I II / ', -50. versus incidence angle. II 48

10. 1 0. --- —----- Ghvv ~hh -10. a a -20. 3 -30 -,04 a a, (: a aa0. 1a a -a40. a 'a 3 0 a a,,:::, G v ai a aI -40. di a t.2 cm t 9 z vru i angl e.

0. OW 0. '' --- —- ' Ohh..., hv -10. -20. "I; * -30.: I's I of -40.I se It ', I 61 II ( I I: -10. 0. 10. 20. 30. 40. 50. 60. 70. 80. Incidence Angle (Degrees) Figure 34: The near field radar backscatter cross section of 84-cm-long cable #1 at 9.5 GHz versus incidence angle. -60[ -10.~~~~~~~~ [.1. 2. 3. 4. 0 0 0 0 J[idnc [ n I ~[ees Figre 4: he earfied rdarbacscatercros sctin o 84cmlng abl i at~~ ~~~~~~f [. [~ essicdneage 50

0........... 'i -10. 0. -20. () -30. a':: -40. I I I/! I t i.... a i - 6. I it Incidence Angle (Degrees) cylinder of diameter 1.27 cm at 9.5 GHz versus incidence angle. I 51 51

10. 0. -10..... I... I I I I I I I I -- I I I I I I I I..I.I..I.I.I..I.I.I..I I I I I.... I.... I.... I.... I I vv Ohh -. — ahv E T3 C) 0; -20. -30. I I \ it - I -40. -50. II I I I l I I II I I 0 I.. I.. I.I. I....'II*1 -60. L -1( I I... I.... I..............I.......I......I..a a I I I I I I 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) 60. 70. 80. Figure 36: The near field radar backscatter cross section of 90-cm-long cable #2 at 9.5 GHz versus incidence angle. 52

10. 0. -10. E rA 73 "0 U -20. -30. -40. - -50. -60. -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) 60. 70. 80. Figure 37: The near field radar backscatter cross section of 90-cm-long smooth cylinder of diameter 2.22 cm at 9.5 GHz versus incidence angle. 53

10. 0. -10. I I I - T -T - I I I. I V I I V I........ IIII II III IIIII 1111 111 I I..I I I I I I I. I II I I I I -------- ~w -. Ohh jI E Cr -20. -30. -40. -50. -60. -14 ':1 lj I I'r1 iiIIlI.I 9 1 i~II till. Il II I I 11 1 ii "' It _ 1 1ll I - I I II I II I I.I..I. I.... I I I I I II I 0. 1 - ~ I 1. ~ ~ ~ ~ 1 1 ~ 1 1 I 1 1 r 1 III 1I I I I 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) - - - - - - - - - - - - - 60. 70. 80. Figure 38: The near field radar backscatter cross section of 90-cm-long cable #3 at 9.5 GHz versus incidence angle. 54

0. Ohh.hv -10. 4- I -20.:,',lr ' -1 -30. -40. II 1,, ii I I 'il I II -6 0 Incidence Angle (Degrees) Figure 39: The near field radar backscatter cross section of 90-cm-long smooth cylinder of diameter 3.15 cm at 9.5 GHz versus incidence angle. 55 55

10. I I I I I I I I I I-" I I I' I I I I I' I'I' ' ' I I 1 1 1 1 (Y vv 0. Ohh.hv -10. CA -20. I II a, * I; -40. -':, - /. I I II I ' -50 - I,;, i0 L -10. 0. 10. 20. 30. 40. 50. 60. 70. 80. at 9.5 GHz versus incidence angle. 9 II 'I -10. 0. 1. 20 30 40 5 F 40: n fe r tr cro sci of c at 95G i I i 56

10. 0.. - -.hv -10. -20. c of d 3 cm a 9.5 *i vru i d angle.. -30. -40 -i iJl I L I I -10."' I II It i I " e -10. 0. 10. 20. 30. 40. 50. 60. 70. 80. cylinder of diameter 3.49 cm at 9.5 GHz versus incidence angle.

10. 0. -10. 1'' I I'I I I I I I I II '1''I I I' I I ' I' '!I II I ------— w( hh.- - - (hv E Ct zQ P4 -20. -30. I I I I I II II - 11 I I I II I i -40. -50. K I 1 II II I " I I I A I\ LI1 I I I I I I I I 1 11L L I I I I I I I.1 I 11 1 l I I I 11 1 I l I -oD. -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) 60. 70. 80. Figure 42: The near field radar backscatter cross section of 120-cm-long prototype cable at 9.5 GHz versus incidence angle. 58

10. 0. -10. -' cT CH -20. -30. -40. -50. -60. -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) 60. 70. 80. Figure 43: The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 7.62 cm at 9.5 GHz versus incidence angle. 59

10. 10. - t0 -20.. U t -30. '-?0 | ' "l I I I I - I VI I I\ )$*I I S. 11 --- —!; __ ______________ -10. 0. 10. 20. 30 40. at 9.5 GHz versus incidence angle. -50. C ' at 9.5 GIz versus incidence angle. 60

10.. ' I ' I '- I ' vv 0. —.......... O hh O- hv -10. -20. r"0 I- -30. / -40.\, ' Incidence Angle (Degrees) Figure 45 The near field radar backscatter cross section of 90-cm-long cable #3 at 9.5 Gz versus incidence angle. /,f I I,, d n le ( 61

10. --------- I -- ' - I -- ' - vv 0. ------ ~ 0. ~hh G hv -10. -20. C,) c~ -30. -, II \ ' '-,, -40.:: ';:, ': I;:: ": -50. -604. -II- I' -, I, 30. '32. 34. 36. 38. 40. Incidence Angle (Degrees) Figure 46: The near field radar backscatter cross section of 120-cm-long cable #4 at 9.5 GHz versus incidence angle. 62

10. 0. - - - - Ohh vh -10.!'a VII I I I: i::: -40.::.,:r - 1 'A ) i I 11 i i A I Incidence Angle (Degrees) Figure 47: The radar backscatter cross section of 30-cm-long cable #1 at 34.5 GHz versus incidence angle.,',~ ' "" " i!t,~tRl;i~ v I I r 63

10. 0........... 0. hh.vh -10. -20. \i i illi i^i (.. a' i ' a' 1' -30. 4 5 t -40." Iniec n les (Dges ' in.' a I I I I I I ' -0. II a jI!~ I a!a: 1,11 A. Ite Deres versu nc'"""c a"nglei' 1111 III i '1i t,,,,, 11111I~.I i/ I - I Ij i I[I I tI I I It tII Ii1l~,,1 II I It i ~~Ii4i I a a I,!a a a a a a a a a~ ~ t a a a a a a a i II a a~ -20. -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) versus incidence angle. 64

E T3 V) 10. 0. -10. -20. -30. -40. -50. I I 'I I I I I I I vv 0hh 0Ivh I I I I I I I I I I I I I I I I I A I a I I I I ~ -60. -2( I I.... I I - I- I I - I I 1 ---i I -1 - I I I I I I -10. 0. 10. 20. 30. Incidence Angle (Degrees) 40. 50. Figure 49: The radar backscatter cross section of 30-cm-long cable #3 at 34.5 GHz versus incidence angle. 65

10...I....T-T -f T T I 1......-..... y. I I I. I I i r - I I I I... I I... I I... I I.... I I.... I I I = vv -- ------ -w -hh / ~vh 0. -10. E V) V) u; -20. -30. -40. -50. -60. -20. i1 I I I I I 'I ii II II II II' i I I I II a I,, 1, I,, I,, I I I............................ -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) Figure 50: The radar backscatter cross section of 30-cm-long cable #4 at 34.5 GHz versus incidence angle. 66

10. - I I r -T- - I I I I I -I I I I I I I I I I I I vv ----- w 0hh - Ovh A 0. -10. E "C T3 C/ U 134 -20. -30. -40. - -50. - -60.-20 I II I I I I I I 1 1 1 1 1111 111.1 -W.... -10. 0. 10. 20. 30. Incidence Angle (Degrees) 40. 50. Figure 51: The radar backscatter cross section of curved 30-cm-long cable #2 at 34.5 GHz versus incidence angle (radius of curvature e10 m). 67

10. GW ---------- Ghh t (Tvh -10. ItI 5 II li i "'1''*^ ^ (L ^ -20., It. " II I' *.-30. of f -40:. e\l ~' ~ Illfa ll 'l 9i^:i1:I; I' 11! i/i.:; I, its: is l*# II, ' 1 --60. 'IO 1 ir I I, I[ -20. -1 0. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) Figure 52: The near field radar backscatter cross section of 120-cm-long cable #4 at 34.5 GHz versus incidence angle. 68

10. 0. -.......... 0hh.vh -10. -20. r^| ^ 3 a I 1 1 -4 0. -. ~ '! Ir ' I1 1 its -eI I * -20. -10. 0. 10. 20. 30. 40. 50. Incidence Angle (Degrees) Figure 53: The near field radar backscatter cross section of 120-cm-long smooth cylinder of diameter 3.49 cm at 34.5 GHz versus incidence angle. 69 69

Co-pol. Normalized 05 -90 Rot Cross-pol. Normalized.5 0\ ation Angle 4, Ellipt. Angle x 45 Ellipt. Angle x Figure 54: The co- and cross-polarized signatures of cable #4 (120 cm long) at 4.75 GHz and 19~ incidence angle. 70

Rotation Angle 0 Cross-pol. 1+ Normalizedo 0T Ellipt. Angle x 45 Ellipt. Angle X Figure 55: The co- and cross-polarized signatures of cable #4 (120 cm long) at 9.5 GHz and 43.4~ incidence angle. 71

Co-pol. Normalized0 5 or -90 R( Cross-pol. NormalizedO 0. 0* 45 Ellipt. Angle X 45 Ellipt. Angle X Rotation Angle,0 Figure 56: The co- and cross-polarized signatures of cable #4 (120 cm long) at 34.5 GHz and 24.40 incidence angle. 72

Co-pol. Normali zed -9C R Cross-r Normalized0.5 O' "45 Ellipt. Angle x 45 Ellipt. Angle X >ol. Figure 57: The co- and cross-polarized signatures of cable #4 (120 cm long) at 34.5 GHz and 13~ incidence angle (Bragg angle). 73

APPENDIX A POLARIMETRIC MEASUREMENT PROGRAMS Data for polarimetric measurements of powerline cables are acquired automatically using two programs, CABLE-LCX for 4.75 GHz and 9.5 GHz measurements using LCX Polarimetric Scatterometers and CABLE-MMW for 34.5 GHz measurement using Millimeter-Wave Polarimetic Scatterometer. These programs are written in HP BASIC to control the network analyzer based scatterometers as shown in the flowcharts of Fig. A-1 and A-2 and program lists. To generate each RCS (radar cross section) pattern of an individual powerline cable or cylinder, four data sets were collected; 1) a target (powerline cable) data, 2) background data for the target, 3) a sphere data (reference target for calibration), and 4) background data for the sphere. The background data were subtracted from target data to increase SNR (signal to noise ratio). The data were averaged to reduce the effect of thermal noise by averaging factor of four for powerline measurements and ten for sphere (reference target) measurements. Time gating technique was also used in these programs to avoid the contribution of leakage signal return to the frequency domain data. At the beginning of the program, parameters are selected manually, ie, i.e., frequencies, number of traces (angles), number of averages, gate center, gate span, Al

start angle for target rotation, increment angle, stop angle, rotation speed, etc. After parameter selection, the programs control the scatterometer systems to acquire polarimetric data automatically; i.e., rotating target, selecting frequencies and polarizations (VV, HH, HV, VH), taking data and storing the data set in disk drive, etc. The flow charts of data acquisition sequences are shown in Fig. A-i and A-2. A2

SUB Configand-poll - - SUB Hpbus_init SUB Series init Data acquisition for reference target (sphere) Similar sequence to the case of powerline cable measurements - SUB Rotate-target: Communicate between computer and motor controller - - SUB Comm Select polarizations - - SUB Pol-sw 'ake data from network nalyzer - -- - SUB Store file store data in disk drive Generate file name Generate file name L - DEF FNfilestamp$ Figure A-1. Flow chart for CABLE_LCX A3

Read data 4 - 1. Set-up system F SUB Hpnwainit I Subroutine Radarmenu Select parameters (frequency, # of sample, # of average, etc.) Subroutine Cohonrecv - - - SUB Setgates - - - SUB Rotatetarget Communicate between computer and motot controller - -- SUB Comm --- SUB Cohfreq - - - SUB Transpolset - - SUB Haveform3 -- - SUB Store file Generate file name _ _SUB Date_string DEF FNpathname$ Figure A-2. Flow chart for CABLEMMW A4

W w M V v w.cabletx. 10!***** *********************************************************************** 20! L/C/X POLARIMETER MEASUREMENT PROGRAM 30! FILE: CABLE LCX 40! *** ********************************************************************* 50! LAST EDIT: May 9, 1991 Changed for powerline cable measurements 60 70! *** ***** **************************************************************** 80 OPTION BASE 1 90 COM /Paths/ @Nwa,@Nwa datal,@Nwa data2,Netwrk analyzer,@Hpib,@Relay 100 COM /Constants/ Vel,Zero(3),Execkey$[2] 110 COM /Systemconfig/ INTEGER Printer_flag,Debug_flag,Version$[12],Mode$[10],Outtyp e$ [ 10, Sound$ [3], Bell$[1 ],Target$ [30],Ref target$ [30] 120 COM /Sys_l/ Freq$(3) [1],Freqcent (3),Freqspan(3),Gate_cent(3),Gate_span(3) 130 COM /Sys_2/ Pol$(4) [2],Polsw$(3,4) [8] 140 COM /Sys_3/ INTEGER F disp,P disp 150 COM /Sys_4/ Drivea$[15],Drive b$[15],Drive_c$[15],INTEGER Preamble,Bytes 160 COM /Sys_5/ INTEGER Nskip,Ndata 170 uCOi zSys 6/ Ref-angie,Angie,Angle$[10j, Beam 3), INTEGER Npts,Ntrace,Average_factor 180 COM /Sys 7/ INTEGER Meas flag(3) 190 COM /Com4/ INTEGER Rotationstate,REAL Inc_angle,Current_angle,Startangle,Stopan gle,Old homeangle,INTEGER Setsperpos 200 COM /Status/ INTEGER Sc,Connectflg,Eflg,Debugflg,Response$[80] 210 220 230 INTEGER F,I,J,P,T,Meas flag_old(3),Exitflag, Nt,Nst,Nskh, Npt 240 DIM Skycalfile$(3) [14],Oldtargetname$[30] 250 DATA "L", "C", "X"! FREQUENCY 260 DATA "VV","HH, "HV","VH"! POLARIZATION 270 DATA 1.25,1.75,1.5! FREQ_CENT 280 DATA.3,.5,.5! FREQ_SPAN 290 DATA 12.5,9.0,6.2! BEAMWIDTH 300 DATA "?*B3456", "?*A34B56","?*A4B356", "?*A3B456"! L 310 DATA "?*B3456", "?*A56B34","?*A6B345", "?*A5B346" C 320 DATA "?*A34B56",?*B3456 ","?*A3B456", "?*A4B356"! X 330 DATA ":,700,0",":,700,1",":MEMORY,0,7"! DRIVEA,B,C 340 DATA 100E-9,100E-9,100E-9! GATE CENTERS 350 DATA 10E-9,10E-9,10E-9! GATE SPANS 360 READ Freq$(*) 370 READ Poi$(*) 380 READ Freqcent (*) 390 READ Freqspan(*) 400 READ Beam(*) 410 READ Polsw$(*) 420 READ Drive_a$,Driveb$,Drivec$ 430 READ Gatecent(*),Gatespan(*) 440 PRINT Measflag(*) 450 460! Set up error handling routine. 470 480 LOAD KEY "NOKEY:MEMORY,0,1" 490 MASS STORAGE IS "LCX:,700,0" 500 510 520! Initialize important parameters. 530 540 DEG 550 Rotation state=-1 560 Currentangle=0. 570 MAT Meas flag= (1) 580 ModeS=" FAST ACQ" 590 F disp=l 600 P disp=l 610 Printerflag=0 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 Hp-bus init IF Printerflag=l THEN Out type$="PRINT/DISC" Vel=2. 99792458E+8 Ntrace=l Npts=401 Nskip-40 Ndata=10 Average factor=l Angle$="0"" Angle=0 Ref_angle=0 TargetS="" Sound$="ON " Debug flag=0 Bell$-CHR$(7) Execkey$=CHR$ (255) &CHR$ (88) Version$="Version 8.0 Exit flag=0 Print bannerl System_memory=VAL(SYSTEM$ ("AVAILABLE MEMORY")) IF FNAsk("INITIALIZE RAM DISK?") THEN INITIALIZE Drive c$,0 INITIALIZE Drivec$,INT((Systemmemory)/512) 880 ELSE 890 ASSIGN @] 900 IF Outcon 910 CAT Di 920 IF Ent 930 END IF 940 ASSIGN @] 950 END IF 960 970 Config_and_ 980 OUTPUT @Nwa; 990 OUTPUT @Nwa; 1000 Seriesinit 1010! 1020 1030 Startloop: 1040 1050 Print ba 1060 ON KE 1070 ON KE 1080 ON KE 1090 ON KE 1100 ON KE 1110 ON KE 1120 ON KE 1130 ON KE 1140 ON KE 1150 ON KE 1160 GOSUB Al 1170 LOOP 1180 EXIT 1190 END LOOE 1200 GOSUB De 1210 Exit fla 1220 GOTO Sta 1230! 1240 Null: RETURN 1250! 1260! --- —------- Isitthere TO DrivecS;RETURN Outcome me=0 THEN rivecS;NO HEADER,COUNT Entries:ries=0 THEN INITIALIZE Drivec$,0 Isit there TO * oll;"TIMDTRANON;LOGM;CONT;";"POIN401;" anner4 EY 0 LABEL EY 1 LABEL EY 2 LABEL EY 3 LABEL EY 4 LABEL EY 5 LABEL EY 6 LABEL EY 7 LABEL EY 8 LABEL EY 9 LABEL locate mat IF Exit fl eallocate-m ag=0 art loop o ",FNTrap level " REFERENCE CAL",FNTrap_level " TARGET RUN ",FNTraplevel " SET FREQUENCY",FNTrap level ANGLE ",FNTrap level " TARGET NAME ",FNTrap level " # OF TRACES ",FNTraplevel " OF POINTS ",FNTraplevel "# OF AVERAGES ", FNTrap level " QUIT ",FNTrap level:rix.ag=1 t rx GOSUB Null GOSUB Reftarget GOSUB Acqtarget GOSUB Freqset GOSUB Setangle GOSUB Settarget GOSUB Settraces GOSUB Set points GOSUB Setaverage GOTO Quit fast acq

M w w 1270! 1280 Reftarget:! Acquire a reference target data set. 1290 1300 OFF KEY 1310 Clear crt 1320 OUTPUT @Nwa;"TIMDTRANON; LOGM; GATEOFF;" 1330 OUTPUT @Nwa;"ELED 150NS;" 1340 OUTPUT @Nwa;"AUTO; STAR ONS; STOP 200NS;" 1350 PRINT TABXY(1,10);"Please point scatterometer 1360 PRINT TABXY(1,12);"Press CONTINUE when ready.. 1370 PAUSE 1380 GOSUB Setgates 1390 OUTPUT @Nwa;"TIMDTRANOFF; POLA; AVERFACT";VALS 1400 OUTPUT @Nwa;"AVEROON" 1410 INPUT "Enter the reference target angle: ",Ref 1420! 1430! Get the reference target response. 1440! 1450 FOR T=l TO Ntrace 1460 FOR F=l TO 3 1470 IF Measflag(F) THEN 1480 Freq set (F) 1490 Freqsw(F) 1500 OUTPUT @Nwa;"GATEOFF;" 1510 OUTPUT @Nwa; "GATECENT";VAL$(Gatece 1520 OUTPUT @Nwa; "GATESPAN";VAL$(Gatesp 1530 OUTPUT @Nwa;"GATEON;" 1540 OUTPUT @Nwa; "TIMDTRANOFF;POLA;" 1550 FOR P=1 TO 4 1560 Pol-sw(F,P) 1570 OUTPUT @Nwa;"FORM3;NUMG";VAL$(Avera 1580 OUTPUT @Nwa;"WAIT; OUTPFORM;" 1590 ENTER @Nwa datal;Preamble,Bytes,Tra 1600 MAT Targetresponse(1,P,*) Trace 1610 NEXT P 1620 Nskh=Nskip+l 1630 FOR P=1 TO 4 1640 FOR Nt-Nskh TO Npts STEP Nskip 1650 Nst-INT (Nt/Nskip) 1660 Targetdata (1, T, P, Nst) =Targe 1670 NEXT Nt 1680 NEXT P 1690 END IF 1700 NEXT F 1710 NEXT T 1720 Store file(Target data(*),"REF",FNTimestampS, 1730 1740! Get the reference target mount response. 1750! 1760 BEEP 1770 PRINT TABXY(1,10);"Please remove the reference 1780 PRINT TABXY(1,12);"Press CONTINUE when ready.. 1790 PAUSE 1800 Clear crt 1810 PRINT TABXY(1,14);"Data for the mount is being 1820 FOR T=1 TO Ntrace 1830 FOR F=l TO 3 1840 IF Measflag(F) THEN 1850 Freq set (F) 1860 Freqsw(F) 1870 OUTPUT @Nwa;"GATEOFF;" 1880 OUTPUT @Nwa;"GATECENT";VAL$(Gate ce 1890 OUTPUT @Nwa;"GATESPAN";VAL$(Gatesp 1900 OUTPUT @Nwa;"GATEON;" assembly to reference;(Average factor);";" fangle e targ ent (F) ); "S;" an (F) ); "S;" agefactor+l);";WAIT" ice (*):t_response (1, P, Nt) F) target from its mount." H collected.... " nt (F) ); "S;" an (F) ); "S;" cablele 1910 1920 1930 1940 1950 1960 1970 1980 ret." 1990 2000 2010 2020 2030 2040 2050 2060 2070 2080 2090 2100 2110 2120 RI 2130! 2140 2150! 2160 Ac 2170 2180 2190 2200 2210 2220 2230 2240 2250 2260 2270 2280 2290 2300 2310 2320 2330 2340 2350 2360 2370 2380 2390 2400 2410 2420 2430 2440 2450 2460 2470 2480 2490 2500 2510 2520 2530 2540 FOR P=1 TO 4 Pol sw(F,P) OUTPUT @Nwa;"FORM3;NUMG";VALS(Average_factor+l);";WAIT" OUTPUT @Nwa;"WAIT; OUTPFORM;" ENTER @Nwa datal;Preamble,Bytes,Trace(*) MAT Target_response(1,P,*)= Trace NEXT P Nskh=Nskip+l FOR P=1 TO 4 FOR Nt=Nskh TO Npts STEP Nskip Nst=INT (Nt/Nskip) Targetdata (l,T,P,Nst) -Target_response (1, P,Nt) NEXT Nt NEXT P END IF NEXT F NEXT T Store-file ("Ta rgetdata *), "-T",FNTimestampS, F) Polsw(F disp, Pdisp) DISP "Reference target mount response saved." Exit_flag=1 ETURN cq_target:! OFF KEY Clear crt OUTPUT @Nwa;"TIMDTRANON; LOGM; GATEOFF;" OUTPUT @Nwa;"ELED 150NS;" OUTPUT @Nwa;"STAR ONS; STOP 200NS;" PRINT TABXY(1,10);"Please point scatterometer assembly at surface target." PRINT TABXY(1,12);"Press CONTINUE when ready..." PAUSE GOSUB Setgates OUTPUT @Nwa; "TIMDTRANOFF; POLA; AVERFACT";VAL$(Averagefactor);";" OUTPUT @Nwa; "GATEOFF;AVEROON;"!! Get the target response.! FOR T=l TO Ntrace!! Get angles! IF T=l THEN Rotation state=-1 ELSE Rotation state=2 END IF SELECT Rotationstate CASE =0 Clear crt PRINT TABXY(1,4);"When ready for measurement, press CONTINUE." BEEP PAUSE Clear crt(3,16) PRINT TABXY(1,4);"Collecting data... CASE ELSE PRINT TABXY(1,4);"Current angle is ";Current_angle;" degrees." Rotate target I WAIT 1 Clear crt(3,16) PRINT TABXY(1,4);"Collecting data.

w cableil:ex 2550 2560 2570 2580 2590 2600 2610 2620 2630 2640 2650 2660 2670 2680 2690 2700 2710 2720 2730 2740 2750 2760 2770 2780 2790 2800 2810 2820 2830 2840 2850 2860 2870 2880 2890 2900 2910 2920 2930 2940 2950 2960 2970 2980 2990 3000 3010 3020 3030 3040 3050 3060 3070 3080 3090 3100 3110; 3120 3130 3140 3150 I 3160 3170 3180 END SELECT FOR F=i TO 3 IF Meas_flag(F) THEN Freqset (F) Freq_sw(F) OUTPUT @Nwa; "GATEOFF;" OUTPUT @Nwa; "GATECENT";VAL$ (Gate cent (F) ); "S;" OUTPUT @Nwa; "GATESPAN";VAL$ (Gate_span (F)); "S; ' OUTPUT @Nwa;"GATEOON; WAIT;" PRINT Npts,Ntrace,Ndata PRINT "# OF TRACES LEFT=",Ntrace-T FOR P=l TO 4 Pol _sw (F,P) OUTPUT @Nwa;"NUMG";VAL$(Average factor); ";WAIT; FORM3; OUTPFORM;" ENTER @Nwa_datal;Preamble,Bytes,Trace(*) MAT Target-response(1,P,*)= Trace NEXT P Nskh=Nsk lp+l FOR P=l TO 4 FOR Nt=Nskh TO Npts STEP Nskip Nst=INT (Nt/Nskip) Target-data (1, T, P, Nst) =Target-response (1, P, Nt) NEXT Nt NEXT P END IF NEXT F NEXT T Store-file(Target-data (*), "GND", FNTime_stamp$, F) DISP "Surface target data saved." BEEP Rotation state=4 Rot at etarget BEEP OUTPUT @Nwa; "CONT;" Exitflag=l RETURN!......... --- —--------------------------------------------------------------------- 3190 3200 3210 3220 3230 3240 3250 3260 3270 3280 3290 3300 3310 3320 3330 3340 3350 3360 3370 3380 3390 3.400 3410 3420 3430 3440 3450 3460 3470 3480 3490 3500 3510 RETURN Set-x: OFF Mea Fd ' KEY 2 s-_flag (3) =1.i sp=3 RETURN Store-band: Print-banner4 Exit_flag=l GOSUB Allocatematrix RETURN Cancel-band:! MAT Meas_flag= Meas-flag-old Exitflag=l GOSUB Allocate-matrix RETURN! --- —---------------------------------------------------------------------! Set angle: 1 INPUT "Enter measurement angle: ",Angle Angle$=VAL$(Angle)&CHR$(179) &" " Degree sign. Print-banner4 RETURN -------------------------------------------------------------------------- Set-target:! LINPUT "Enter target type or name: ",Target$ Target$=TRIM$ (Target$) Target$=Target$&RPT$ (" ".,30-LEN (Target$)) Print-banner4 RETURN! --- —--------------------------------------------------------------------- 3520! 3530 Set-traces:! 3540 It 3550 G( 3560 GP 3570 P 3580 RETURN 3590! NPUT "Enter the number of traces( or angles) desired( >=3 ): ",Ntrace OSUB Deallocate-mtrx OSUB Allocate-matrix rint_ banner4 Freq_set: GOSUB Deallocate_mtrx OFF KEY MAT Meas_flag old- Meas-flag MAT Meas_flag= (0) Exit-flag=0 ON KEY 0 LABEL " L BAND ON KEY 1 LABEL" C BAND ON KEY 2 LABEL " X BAND ON KEY 4 LABEL " STORE ON KEY 5 LABEL" ON KEY 6 LABEL" ON KEY 7 LABEL " ON KEY 8 LABEL" ON KEY 9 LABEL " CANCEL LOOP EXIT IF Exitflag=l END LOOP ",FNTrap_level ",FNTraplevel ",FNTraplevel ",FNTraplevel ",FNTrap_level ",FNTrap level ", FNTrap_level ",FNTraplevel ",FNTrap level GOSUB Set-1 GOSUB Setc GOSUB Setx GOTO Store-band GOSUB Null GOSUB Null GOSUB Null GOSUB Null GOTO Cancel-band 3600 3610 3620 3630 3640 3650 3660 3670 3680 3690 3700 3710 3720! --- —--------------------------------------------------------------------- Set-points:! INPUT "Enter the number of sample points (Npts,201): ",Npts OUTPUT @Nwa;"POIN "&VAL$(Npts)&";" INPUT "Enter the data points to be stored (Ndata,10):",Ndata Nskip=INT (Npts/Ndata) Bytes=1 6 *Ndata Print banner4 GOSUB Deallocate mtrx GOSUB Allocate-matrix RETURN! --- —--------------------------------------------------------------------- RETURN Set-1: RETURN Set-c: OFF KEY 0 Meas flag (1) =1 Fdisp=l OFF KEY 1 Meas flag(2) =l F di sp=2 3730! 3740 Set-average: 3750: 3760 E 3770 RETURN 3780! 3790! --- —------- 3800! 3810 Allocatematri 3820 INPUT "Enter averaging factor: ",Average_factor Print banner4 ix:! Allocate storage space for data.

3830 3840 3850 3860 3870 3880 3890 3900 3910 3920 3930 3940 3950 3960 3970 3980 3990 4000 4010 4020 4030 4040 4050 4060 4070 4080 4090 4100 4110 4120 4130 4140 4150 4160 4170 4180 4190 4200 4210 4220 4230 4240 4250 4260 4270 4280 4290 4300 4310 4320 4330 4340 4350 4360 4370 4380 4390 4400 4410 4420 4430 4440 4450 4460 Systemmemory=VAL(SYSTEMS("AVAILABLE MEMORY")) Avail_traces=MIN(Ntrace,INT(Systemmemory-50000-3*4*16.*Npts)/ (1*4*16.*Ndata)) IF Avail traces<Ntrace THEN BEEP PRINT TABXY(1,16);"Memory has capacity for only ";Avail_traces;" traces." PRINT "Press CONTINUE key to continue" PAUSE Ntrace=Avail traces END IF ALLOCATE COMPLEX Trace(Npts),Target response(1,4,Npts) ALLOCATE COMPLEX Targetdata(l,Ntrace,4,Ndata) RETURN Deallocatemtrx:! Return to main program.! DEALLOCATE Target response(*),Trace(*) DEALLOCATE Targetdata(*) RETURN! --- —--------------------------------------------------------------------- i Set gates:! Set gate centers and spans. FOR F=l TO 3 IF Meas flag(F) THEN Freqset(F) Freq sw(F) P=l Pol sw(F,P) OUTPUT @Nwa;"TIMDTRANON; LOGM;" OUTPUT @Nwa;"ELED 150NS;" OUTPUT @Nwa;"STAR ONS; STOP 200NS; WAIT;" OUTPUT @Nwa;"FORM3; OUTPACTI;" ENTER @Nwa;Gate cent (F) OUTPUT @Nwa;"MARKOFF;" OUTPUT @Nwa;"CONT;" OUTPUT @Nwa;"GATESPAN";VAL$(Gate span(F));"S;" OUTPUT @Nwa;"GATECENT";VAL$(Gate cent(F));"S;" OUTPUT @Nwa;"KEY41; KEY59; KEY58; KEY59;" LOCAL @Nwa DISP "Adjust gate center to suit, and press CONTINUE." PAUSE OUTPUT @Nwa;"OUTPACTI;" ENTER @Nwa;Gate cent(F) OUTPUT @Nwa;"GATESPAN";VALS(Gate_span(F));";" OUTPUT @Nwa;"KEY41; KEY59; KEY58; KEY4;" LOCAL @Nwa DISP "Adjust gate span to suit, and press CONTINUE." PAUSE OUTPUT @Nwa;"OUTPACTI;" ENTER @Nwa;Gate span(F) END IF NEXT F RETURN ------------------------------------------------------------------------ Quitfastacq:! End of program DISP "PROGRAM EXIT" GOSUB Deallocate mtrx LOAD KEY "EDITKEY:MEMORY,0,1" STOP END!************************************************************************* 4470 4480 4490 4500 4510 4520 4530 4540 4550 4560 4570 4580 4590 4600 4610 4620 4630 4640 4650 4660 4670 4680 4690 4700 4710 4720 4730 4740 4750 4760 4770 4780 4790 4800 4810 4820 4830 4840 4850 4860 4870 4880 4890 4900 4910 4920 4930 4940 4950 4960 4970 4980 4990 5000 5010 5020 5030 5040 5050 5060 5070 5080 5090 5100 DEF FNAsk(PromptS) OFF KEY DISP Prompt$; INPUT "",Yn$ Yn$=UPC$(Yn$[1,1]) SELECT Yn$ CASE ="Y" RETURN 1 CASE ="N",="" RETURN 0 CASE ELSE RETURN 0 END SELECT FNEND! ***************************************************************************** DEF FNFileloc$(FileS,Dir$) INTEGER C! for the location of the ':' in Dir$ (minus 1) LET C=POS(Dir$,":")-1 IF C<=0 THEN RETURN TRIM$(File$&Dir$) ELSE RETURN Dir$[1,C]&RPT$("/",Dir$[C,C]<>"/")&File$&Dir$[C+l,LEN(Dir$)] END IF FNEND I Fileloc! ******************************************************************* DEF FNTime stamp$(OPTIONAL Timeformat) DIM Time digits$[4],Yeardigits$[6] DIM Machine time$[8],Machinedate$[11] REAL Timedatenow Timedate now=TIMEDATE Machine date$=DATE$(Timedate now) Machine timeS=TIMES(Timedatenow) Timedigits$=Machine_time$[1,2]&Machine_time$[4,5] Year digits$[1,2]=Machine date$[10,11] IF Machinedate$[1,1]=" " THEN MachinedateS[1,1]="0" SELECT Machinedate$[4,6] CASE ="Jan" Year digits$[3,4]="01" CASE ="Feb" Year digits$[3,4]="02" CASE ="Mar" Year digits$[3,4]="03" CASE ="Apr" Year digits$[3, 4] ="04" CASE ="May" Year digits$[3,4]="05" CASE ="Jun" Year digits$[3,4] ="06" CASE ="Jul" Year digits$[3,4]="07" CASE ="Aug" Year digits$[3,4]="08" CASE ="Sep" Year digits$[3,4]="09" CASE ="Oct" Year digits[3,4] ="10"

5110 5120 5130 5140 5150 5160 5170 5180 5190 5200 5210 5220 5230 5240 5250 5260 5270 5280 5290 5300 5310 5320 5330 5340 5350 5360 5370 5380 5390 5400 5410 5420 5430 5440 5450 5460 5470 5480 5490 5500 5510 5520 5530 5540 5550 I 5560 5570 5580 5590 5600 5610 5620 5630 5640 5650 5660 5670 5680 5690 5700 5710 5720 N( 5730 5740 CASE ="Nov" Year digits$[3,4]="11" CASE ="Dec" Year digits$[3,4]="12" END SELECT! Year digits$[5, 6]=MachinedateS [1,2] SELECT NPAR CASE =0 RETURN Yeardigits$[5,6]&Timedigits$ CASE =1 IF Time format=1 THEN RETURN Year digits$&Timedigits$ END IF IF Time format=2 THEN RETURN Yeardigits$[3,6]&Time_digits$ END IF END SELECT FNEND! ************************************************************************ DEF FNTraplevel RETURN VAL(SYSTEM$ ("SYSTEM PRIORITY"))+1 FNEND!********************************* SUB Config_andpoll COM /Paths/ @Nwa,@Nwa datal, @Nwadata2,Netwrk analyzer,@Hpib,@Relay COM /System/ Systemmemory! Find out what's out there. 5750 PRINT TABXY(1,6);"Please check connections, and press the RUN key." 5760 PRINT 5770 PRINT TABXY(1,7);"If you DO NOT want to use a network analyzer, press the CONTINUE key." 5780 PAUSE 5790 END IF 5800! 5810! 5820 Check_hpib:! Check the rest of the bus 5830 ON TIMEOUT 7,.01 GOTO Nothing 5840! 5850 FOR Device=700 TO 731 5860 DISP "Checking for device at address: ";Device 5870 Device list$(Device-700)="NOTHING" 5880 ASSIGN @What is it TO Device 5890 Outcome=SPOLL(@What is it) 5900 Device listS(Device-700)="SOMETHING" 5910 PRINT nDvic "SMETHING HERE", "splr: ";0iutcnmr.e 5920 ASSIGN @Whatisit TO * 5930 Nothing:! Skip to next device 5940 NEXT Device 5950! 5960 OFF TIMEOUT 7 5970 ASSIGN @What is it TO * 5980 IF DevicelistS(1)="SOMETHING" THEN 5990 DISP "Position the printer to Top-Of-Form and press CONTINUE..." 6000 PAUSE 6010 PRINTER IS PRT 6020 PRINT CHR$(27)&"&11L";! Set Page Breaks 6030 Printer flag=1 6040 PRINTER IS CRT 6050 END IF 6060 DEALLOCATE Na ident$ 6070 DEALLOCATE Devicelist$(*) 6080 ABORT @Hpib 6090 SUBEXIT 6100 SUBEND 6110 6120 6120! ************************************************************************** 6130 6140 SUB Hpbusinit 6150 COM /Paths/ @Nwa,@Nwadatal,@Nwadata2,Netwrkanalyzer, @Hpib,@Relay 6160 COM /Sysl/ Freq$(*),Freqcent(*),Freq span(*),Gate cent (*),Gatespan(*) 6170 COM /Sys_2/ Pol$(*),Polsw$(*) 6180 COM /System config/ INTEGER Printerflag,Debugflag,Version$,ModeS,Outtype$,Soun dS,BellS, TargetS, Ref target$ 6190 6200!This subroutine configures the HP-IB bus and presets the HP8510. 6210! 6220 ASSIGN @Hpib TO 7 6230 ASSIGN @Nwa TO 716 6240 ASSIGN @Nwa datal TO 716;FORMAT OFF 6250 ASSIGN @Nwa data2 TO 716;FORMAT ON 6260 ASSIGN @Relay TO 710 6270 REMOTE @Hpib 6280 ABORT @Hpib 6290 CLEAR @Nwa 6300 IF Debugflag=l THEN OUTPUT @Nwa;"DEBUON;" 6310 IF Debug_flag=0 THEN 6320 OUTPUT @Nwa;"DEBUOFF;" 6330 OUTPUT @Nwa;"TITL """&Freq$(2)&" BAND 6340 END IF 6350 SUBEND 6360 s 0 ALLOCATE Devicelist$(0:31) [20] ALPHA PEN 4 KBD LINE PEN 3 KEY LABELS PEN 5 Clear crt Netwrk analyzer=0 ALLOCATE Na ident$[80] System memory=VAL(SYSTEMS("AVAILABLE MEMORY"))! How PRINT "AVAILABLE MEMORY: ";System memory;" BYTES" ON TIMEOUT 7,4 GOTO No na! In case there is no;na: OUTPUT @Nwa;"FORM4; OUTPIDEN;" ENTER @Nwa data2;Na_identS IF POS(Na ident$,"8510A") THEN Netwrk analyzer=l IF POS(Na ident$,"8510B") THEN Netwrk analyzer=2 IF POS (Na identS,"8720A") THEN Netwrk analyzer=3 IF POS (NaidentS,"8720B") THEN Netwrk-analyzer=4 IF POS (Na ident$,"8753A") THEN Netwrk analyzer=5 IF POS(Na identS,"8753B") THEN Netwrk analyzer=6 LOCAL @Nwa PRINT PRINT Na ident$ PRINT Netwrkanalyzer PRINT PRINT IF Netwrk analvzer=0 THEN much memory for RAM-DISK network analyzer na:! BEEP OFF CYCLE PRINT TABXY(1,5);"There is no active network analyzer on the HPIB bus."

low cabi 6370!********************* 6380 6390 SUB Series init 6400 COM /System_config/ INTEGER Printerflag,Debugflag,Version$,Mode$,Outtype$,Sound $, Bell$, Target$, Ref target$ 6410 DIM Input$[80] 6420 6430!This subroutine prints a header for the printout and sets the system 6440!date and time. 6450 6460 IF Printerflag=l THEN PRINTER IS PRT 6470 PRINT CHRS(12) 6480 Set clock 6490 LINPUT "ENTER MEASUREMENT SERIES TITLE",InputS 6500 Preface$="*"&RPTS (" ",9) 6510 PRINT RPT$("*",70) 6520 PRINT Preface$&InputS 6530 LINPUT "ENTER OPERATOR NAMF.";TnputS 6540 PRINT Preface$&InputS 6550 PRINTER IS CRT 6560 PRINT 6570 PRINT 6580 PRINT Preface$&"MEASUREMENT SERIES STARTED AT "&TIMES(TIMEDATE) 6590 PRINTER IS CRT 6600 SUBEND 6610 6620!************************************************************************* 6630! 6640 SUB Set clock 6650 OPTION BASE 1 6660 INTEGER I 6670 DIM ChronoS[12],MonthS(12)[3] 6680 Execkey$-CHR$(255) &CHRS (88) 6690 READ Month$ (*) 6700 DATA "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" 6710 OUTPUT KBD;"SCRATCH KEY "&Execkey$; 6720 Clear crt 6730 PRINT " Current system date: ";DATE$(TIMEDATE) 6740 PRINT " Current system time: ";TIME$(TIMEDATE) 6750 PRINT 6760 Ask: LINPUT "Enter date and time (YYMMDDHHMMss):",Chrono$ 6770 IF ChronoS="" AND DATE$(TIMEDATE)<>" 1 Mar 1900" THEN 6780 Clear crt 6790 SUBEXIT 6800 END IF 6810 Year$=VAL$(1900+VAL(Chrono$[1,2])) 6820 IF (VAL(Chrono$[3,4])<=O OR VAL(Chrono$[3,4])>12) THEN 6830 BEEP 6840 PRINT "Incorrect month value." 6850 GOTO Ask 6860 END IF 6870 YearS=MonthS(VAL(Chrono$[3,4]))&" "&Year$ 6880 Year$=Chrono$[5, 6]&" "&Year$ 6890 SET TIMEDATE (DATE(Year$)) 6900 IF (VAL(Chrono$[7,8]))>23 THEN 6910 BEEP 6920 PRINT "Incorrect hour value." 6930 GOTO Ask 6940 END IF 6950 Day$=Chrono$[7,8]&":" 6960 IF VAL(Chrono$[9,10])>59 THEN 6970 BEEP 6980 PRINT "Incorrect minute value." 6990 GOTO Ask 7000 7010 7020 7030 7040 7050 7060 7070 7080 7090 7100 7110 7120 7130 7140 7150 7160 7170 7180 7190 7200 7210 7220 7230 7240 7250 7260 7270 7280 7290 7300 7310 7320 7330 7340 7350 7360 7370 7380 7390 7400 7410 7420 7430 7440 7450 7460 7470 7480 7490 7500 7510 7520 7530 7540 7550 7560 7570 7580 7590 7600 7610 7620 7630.:L... END IF Day$=DayS&ChronoS[9,10] &":" IF (LEN(ChronoS)>10 AND LEN(Chrono$)=12) THEN IF VAL(Chrono$[11,12])>59 THEN BEEP PRINT "Incorrect seconds value." GOTO Ask END IF DayS=Day$&Chrono$[11,12] ELSE DayS=DayS&"00" END IF SET TIME TIME(Day$) Clearcrt SUBEXIT SUBEND! * *************************************************************************! SUB Fix error SELECT ERRN CASE ELSE PRINTER IS CRT PRINT "ERROR ";ERRN PRINT ERRMS PRINT " PROGRAM IS PAUSED. FIX ERROR, IF POSSIBLE, AND CONTINUE." PAUSE END SELECT SUBEND!! ************************************************************************ SUB Clear crt(OPTIONAL INTEGER Start line,Numoflines) INTEGER I DIM Clear line$[80] Clear lineS" IF NPAR=0 THEN OUTPUT KBD;CHRS(255)&CHR$(75); ELSE PRINT TABXY(1,Start line);" ";RPT$ (Clear_line$,Num_of_lines) PRINT TABXY(1,Startline);""; SUBEXIT END IF SUBEND!* ************************************************************************* SUB Print bannerl Clear crt PRINT PRINT PRINT TABXY (3,16) ******************* ************************** ****** PRINT TABXY(4,16);"* * PRINT TABXY(5,16);"* LCX PRINT TABXY(6,16);"* UNIVERSITY OF MICHIGAN RADIATION LAB *" PRINT TABXY(7,16);"* L/C/X MEASUREMENT PROGRAM * PRINT TABXY(8,16) "* (VERSION 8.0) PRINT TABXY(9,16);"* *" PRINT TABXY(10,16);"* May 9, 1991 PRINT TABXY (11,16);"* *" PRINT TABXY (12, 16);"************************************************ SUBEXIT SUBEND

7640 7650!*********************************************************** 7660 7670 SUB Print banner4 7680 COM /Paths/ @Nwa,@Nwadatal,@Nwa-data2,Netwrk-analyzer,@Hpib,@Relay 7690 COM /Constants/ Vel,Zero(*),Exec key$ 7700 COM /Systemconfig/ INTEGER Printerflag,Debug_flag,Version$,Mode$,Outtype$,Soun d$,Bell$,Target$S,Reftarget$ 7710 COM /Sysl/ Freq$(*),Freqcent(*),Freq_span(*),Gate-cent(*),Gate_span(*) 7720 COM /Sys_2/ Pol$(*),Polsw$(*) 7730 COM /Sys_3/ INTEGER Fdisp,P disp 7740 COM /Sys_4/ Drive_a$,Drive-b$,Drive-c$,INTEGER Preamble,Bytes 7750 COM /Sys 5/ INTEGER Nskip,Ndata 7760 COM /Sys 6/ Ref angle,Angle,Angle$,Beam(*),INTEGER Npts,Ntrace,Averagefactor 7770 COM /Sys-7/ INTEGER Meas-flag(*) 7780 7790 7800 OFF KEY 7810 Clear crt 7820 PRINT 7830 PRINT 7840 PRINT " PARAMETER CURRENT VALUE" 7850 PRINT 7860 PRINT * FREQUENCY 7870 FOR F=1 TO 3 7880 IF Meas-flag(F) THEN PRINT Freq$(F)&" "; 7890 NEXT F 7900 PRINT " 7910 PRINT " 7920 PRINT " ANTENNA ANGLE "&Angle$ 7930 PRINT " TARGET TYPE "&Target$ 7940 PRINT " MEASUREMENT MODE "&Mode$&" 7950 PRINT 7960 PRINT " # OF TRACES/SET ";Ntrace 7970 PRINT " # OF SAMPLE POINTS ";Npts 7980 PRINT " # OF DATA POINTS ";Ndata 7990 PRINT " (to be stored) 8000 PRINT " # OF AVERAGES ";Averagefactor 8010 SUBEXIT 8020 SUBEND 8030 8040!********************************************************************** 8050 8060 SUB Store-file(COMPLEX Matrix (*),File-type$,Filename$, INTEGER F) 8070 8080 COM /Sys_l1/ Freq$(*),Freq_cent(*),Freq_span(*),Gate_cent (*),Gate span(*) 8090 COM /Sys_2/ Pol$(*),Polsw$(*) 8100 COM /Sys_5/ INTEGER Nskip,Ndata 8110 COM /Sys_6/ Refangle,Angle,Angle$,Beam(*),INTEGER Npts,Ntrace,Average factor 8120 COM /Sys_7/ INTEGER Measflag(*) 8130 COM /System config/ INTEGER Printer-flag,Debug-flag,Version$,Mode$,Out_type$, S ound$,Bell$,Target$,Ref_target$ 8140 8150 8160 INTEGER Records-per-set,T 8170 REAL Bytes per set 8180 DIM Suffix$[2] 8190 ALLOCATE COMPLEX Trace(Ndata) 8200 8210 8220 DISP "Saving file." 8230 SELECT Filetype$ 8240 CASE ="REF" 8250 Bytes per-set=16*Ndata 8260 8270 8280 8290 8300 8310 8320 8330 8340 8350 8360 8370 8380 8390 8400 8410 8420 8430 8440 8450 8460 8470 8480 8490 8500 8510 8520 8530 8540 8550 8560 8570 8580 8590 8600 8610 8620 8630 8640 8650 8660 8670 8680 8690 8700 8710 8720 8730 8740 8750 8760 8770 8780 8790 8800 8810 8820 8830 8840 8850 8860 8870 8880 8890 Records per set4*SUM(Measflag)*Ntrace IF SUM(Measflag) =3 THEN Suffix$=" RA" ELSE FOR F=1 TO 3 IF Measflag(F)=l THEN Mf=F END IF NEXT F Suffix$="R"&Freq$(Mf) END IF GOSUB Save-upux CASE ="MNT" Bytes_per_set=16*Ndata Records-per-set=4*SUM(Measflag)*Ntrace IF SUM(Meas flag)j 3 THEN Suffix$="MA" ELSE FOR F=l TO 3 IF Meas-flag(F)=l THEN Mf=F END IF NEXT F Suffix$-"M"&Freq$ (Mf) END IF GOSUB Savehpux CASE ="GND" Bytes_per-set=16*Ndata Records-per-set=Ntrace*4*SUM(Meas_flag) IF SUM(Meas flag)=3 THEN Suffix$="GA" ELSE FOR F=l TO 3 IF Measflag(F)=l THEN Mf=F END IF NEXT F Suffix$="G"&Freq$ (Mf) END IF GOSUB Save-hpux END SELECT DEALLOCATE Trace(*) SUBEXIT Save hpux:!! Save data file by HP-UX type. IF NOT Debugflag THEN CREATE Filename$&Suffix$&Drive-c$,200000 END IF IF Debug flag THEN ASSIGN @Disc TO PRT OUTPUT @Disc;"FILE: ",Filename$,Suffix$ PRINT "Debug-flag= 1" ELSE ASSIGN @Disc TO Filename$&Suffix$&Drive-c$;FORMAT ON FOR T=1 TO Ntrace FOR F=l TO 3 IF Meas flag(F)=1 THEN

qw w 8900 FOR P=1 TO 4 8910 MAT Trace= Matrix(1,T,P,*) 8920 OUTPUT @Disc;Trace(*) 8930 NEXT P 8940 END IF 8950 NEXT F 8960 NEXT T 8970 END IF 8980 ASSIGN @Disc TO * 8990 RETURN 9000! 9010! --- —---------------------------------------------------------------- 9020! 9030 Savetraces: 9040! Save the ground target data file. 9050 9060 IF NOT Debugflag THEN 9070 CREATE BDAT Filename$&Suffix$&Drive c$,Recordsperset,Bytes perset 9080 Base record=0 9090 END IF 9100 IF Debugflag THEN 9110 ASSIGN @Disc TO PRT 9120 OUTPUT @Disc;"FILE: ";Filename$;Suffix$ 9130 OUTPUT @Disc USING Image_5;Ndata,Ntrace 9140 OUTPUT @Disc USING Image 3;Target$ 9150 FOR T=1 TO Ntrace 9160 FOR F=l TO 3 9170 IF Measflag(F)=l THEN 9180 OUTPUT @Disc USING Imagel;Version$,Freqcent(F),Freqspan(F) 9190 FOR P=- TO 4 9200 OUTPUT @Disc USING Image 4;Pol$(P),Gatecent(F),Gatespan (F),T 9210 MAT Trace= Matrix (,T,P,*) 9220 OUTPUT @Disc;Trace(*) 9230 NEXT P 9240 END IF 9250 NEXT F 9260 NEXT T 9270 ELSE 9280 ASSIGN @Disc TO Filename$&Suffix$&Drive cS;FORMAT OFF 9290 FOR T=1 TO Ntrace 9300 FOR F=1 TO 3 9310 IF Meas_flag(F)=1 THEN 9320 FOR P=l TO 4 9330 MAT Trace= Matrix(l,T,P,*) 9340 OUTPUT @Disc,Baserecord+P;Trace(*) 9350 NEXT P 9360 Base record=Base record+4 9370 END IF 9380 NEXT F 9390 NEXT T 9400 END IF 9410 ASSIGN @Disc TO * 9420 RETURN 9430! 9440! --- —------------------------------------- 9450! 9460 Image_l: IMAGE (lX,12A,5X,"FREQ CENTER: ",2D.4D,5X,"FREQ SPAN: ",2D.4D) 9470 Image_2: IMAGE ("NUMBER OF POINTS: ",SD,5X,"NUMBER OF AVERAGES: ",5D) 9480 Image_3: IMAGE ("TARGET: ",30A,"GATING TARGET TYPE: ",2D) 9490 Image_4: IMAGE ("POLARIZATION: ",2A,5X,"GATE CENTER: ",SD.14DE,/,SX,"GATE SPAN: ",S D.14DE, "TRACE: ", 3D) 9500 Image_5: IMAGE ("NUMBER OF POINTS: ",5D,5X,"NUMBER OF TRACES: ",5D) 9510 Image 6: IMAGE (5X,SD.14DE,5X,SD.14DE) 9520 SUBEND 9530 9540!************************************************************************** 9550! 9560 SUB Freqset(INTEGER Ifreq) 9570 COM /Paths/ @Nwa,@Nwa datal,@Nwa data2,Netwrk-analyzer,@Hpib,@Relay 9580 COM /Sys-1/ Freq$(*),Freqcent(*),Freq span(*),Gatecent(*),Gatespan(*) 9590 9600!This subroutine sets the transmit frequency for the HP8753. 9610 9620 IF Ifreq=1 THEN 9630 OUTPUT @Nwa;"POWEO" 9640 ELSE 9650 OUTPUT @Nwa;"POWEO" 9660 END IF 9670 SELECT Netwrk analyzer 9680 CASE =3,=4,=5,=6 9690 OUTPUT @Nwa;"TIMDTRANOFF;" 9700 CASE =1,=2 9710 OUTPUT @Nwa;"FREQ;" 9720 END SELECT 9730 OUTPUT @Nwa;"CENT "&VAL$(Freqcent(Ifreq))&" GHZ;" 9740 OUTPUT @Nwa;"SPAN "&VAL$(Freq span(Ifreq))&" GHZ;" 9750 SUBEND 9760 9770!********************************** 9780! 9790 SUB Freqsw(INTEGER Ifreq) 9800 COM /Paths/ @Nwa,@Nwa datal,@Nwa-data2,Netwrk analyzer,@Hpib,@Relay 9810 SELECT Ifreq 9820 CASE 1 9830 OUTPUT @Relay;"?*A2B1" 9840 CASE 2 9850 OUTPUT @Relay;"?*A1B2" 9860 CASE 3 9870 OUTPUT @Relay;"?*B12" 9880 END SELECT 9890 WAIT.1 9900 SUBEND 9910 9920!************************************************************************ 9930! 9940 SUB Pol sw(INTEGER Ifreq,Ipol) 9950 COM /Paths/ @Nwa,@Nwa datal,@Nwa-data2,Netwrkanalyzer,@Hpib,@Relay 9960 COM /Sys_l/ Freq$(*),Freq_cent(*),Freqspan(*),Gatecent(*),Gate_span(*) 9970 COM /Sys_2/ Pol$(*),Polsw$(*) 9980! 9990!This subroutine sets the transmit and receive polarization by 10000! sending the proper command over the HPIB to the polarization 10010! relays. 10020 10030 OUTPUT @Relay;Polsw$(Ifreq,Ipol) 10040 OUTPUT @Nwa;"TITL "" "&Freq$(Ifreq)&" BAND - "&Pol$(Ipol)&"""" 10050 WAIT.1 10060 SUBEND 10070 10080 **** ******************************************************************* 10090 10100 SUB Rotate target 10110 OPTION BASE 1 10120 COM /Com4/ INTEGER Rotationstate,REAL Incangle,Currentangle,Start_angle,Stop_ang le,Old home angle,INTEGER Sets_per_pos 10130 COM /Status/ INTEGER Sc,Connectflg,E flg,Debugflg,Response$[80] 10140 INTEGER Fs_flag,Ss flag,Speed,Imcstatus,Confirm answer 10150!

- 10160 10170 10180 10190 10200 10210 10220 10230 10240 10250 10260 10270 10280 10290 10300 10310 10320 1 0330 10340 10350 10360 10370 10380 10390 10400 10410 10420 10430 10440 10450 10460 10470 10480 10490 10500 10510 10520 10530 10540 10550 10560 10570 10580 10590 10600 10610 10620 10630 10640 10650 10660 10670 10680 10690 10700 10710 10720 10730 10740 10750 10760 10770 10780 10790 Confirmanswer=l Imcstatus=0 Debugflg=0 Fsflag —l Ssflag=-l Clearcrt(3,16) SELECT Rotationstate CASE — 1 IF FNAsk("Do you wish to use the rotz Connectflg=0 GOSUB Init imc GOSUB Initgraph_pos GOSUB Manual loop PRINT "Set Auto Mode Please....." L T C r Rotation state=0 GCLEAR GRAPHICS OFF END IF =0 SUBEXIT ator?") THEN CASE CASE =1 GOSUB Checkposition GOSUB Printangles GOSUB Manual_loop CASE =2 GOSUB Checkposition GOSUB Auto CASE =3 GOSUB Check_position GOSUB Manual loop GOSUB Auto CASE =4 GOSUB Checkposition GOSUB Go home CASE -5 GOSUB Checkposition Rotation state=l! Switch END SELECT SUBEXIT 10800 Current angle=0 10810 END IF 10820 Comm("4SP100")! Set speec 10830 PRINT TABXY(1,4);"SP "&RPT$(" ",] 10840 Comm("4AC500")! Set accel 10850 PRINT TABXY(1,4);"AC 10860 Comm("4DC500")! Set decel 10870 PRINT TABXY(1,4);"DC" 10880 GOSUB Checkposition 10890 Rotation state=l 10900 Clearcrt 10910 10920! 10930 PRINT TABXY(1,4);"DONE INITIALIZ 10940 PRINT TABXY(1,5);"Turntable curre 10950 PRINT TABXY(1,6) 10960 Print angles:! 10970 PRINT TABXY (1l 7) "Current angle 10980 PRINT TABXY(1,8);"Starting angle 10990 PRINT TABXY(1,9);"Stopping angle 11000 RETURN 11010! 11020! 11030 Manual loop:! Main activation loop. 11040 LOOP 11050 ON KEY 0 LABEL "FAST SLEW CW 11060 ON KEY 1 LABEL "FAST SLEW CCW 11070 ON KEY 5 LABEL "SLOW SLEW CW 11080 ON KEY 6 LABEL "SLOW SLEW CCW 11090 ON KEY 2 LABEL "MANUAL CONTROL 11100 ON KEY 3 LABEL "TARGET GO HOME' 11110 ON KEY 4 LABEL "STOP ROTATION 11120 ON KEY 7 LABEL "SET AUTO MODE 11130 ON KEY 8 LABEL "SET TARGET HOM] 11140 ON KEY 9 LABEL "RETURN 11150 GOSUB Checkposition 11160 END LOOP 11170 11180 --- —---------------------------- 11190 11200 Fs cw:! Fast slew clockwise. 11210 IF Fs flag<0 THEN 11220 Comm("4SP500") 11230 Comm ("4SFN") 11240 Fs flag=-l*Fsflag 11250 Clearcrt(3,15) 11260 PRINT TABXY(1,15);"ROTATING 11270 ELSE 11280 Comm("4ST") 11290 Fs flag=-l*Fs flag 11300 Clearcrt(3,15) 11310 PRINT TABXY(1,15);"ROTATION 11320 GOSUB Checkposition 11330 END IF 11340 RETURN 11350! 11360! --- —----------------------------- 11370 11380 Fs ccw:! Fast slew counterclockwise 11390 IF Fs flag<0 THEN 11400 Comm("4ST") 11410 Comm("4SP500") 11420 Comm("4SRN") 11430 Fs flag=-l*Fs flag d to (50pps). LEN (VAL$ (Encoder ratio)) ) Leration (500pps^2). Leration (500pps^2). ING IMC" ently in manual mode." is: ":Current angle;" degrees." is: ";Startangle;" degrees." is: ";Stop_angle;" degrees." ",FNTraplevel GOSUB Fscw ",FNTraplevel GOSUB Fs_ccw ",FNTraplevel GOSUB Ss_cw ",FNTrap level GOSUB Ssccw ",FNTrap level GOSUB Manual ",FNTraplevel GOSUB Gohome ",FNTrap level GOSUB Stopturn ",FNTrap level GOSUB Setauto E",FNTrap_level GOSUB Set_position ", FNTrap level GOTO Quit to manual mode. Init imc:! Initialize the IMC unit. GOSUB Check 4 fault PRINT TABXY(1,3);"INITIALIZING IMC" Clear crt(4,15) Comm("4WB")! Set warm boot (clear flags). PRINT TABXY(1,4);"WB" Comm("4EB")! Clear IMC buffer. PRINT TABXY(1,4);"EB" Encoder ratio=4096! 32000 Comm("4ER"&VAL$(Encoder ratio))! Load encoder ratio. PRINT TABXY (1, 4); "ER"&VAL$ (Encoder_ratio) IF FNAsk("Do you wish to set home at the current position?") THEN Comm("4RS",Confirm answer) ENTER ResponseS;Oldhome_angle Old home angle=Old_home_angle/93.3 Comm("4PIZO")! Set IMC at 0. PRINT TABXY (1,4);"PIZ"&RPT$ (" ",LEN(VAL$(Encoder_ratio))) Comm("4PIAO")! Set IMC at 0. PRINT TABXY(1,4);"PIA" CW (FAST)" STOPPED"!, -, - -

11440 11450 11460 11470 11480 11490 11500 11510 11520 11530 11540 11550 11560 11570 11580 11590 11600 11610 11620 11630 11640 11650 11660 11670 11680 11690 11700 11710 11720 11730 11740 11750 11760 11770 11780 11790 11800 11810 11820 11830 11840 11850 11860 11870 11880 11890 11900 11910 11920 11930 11940 11950 11960 11970 11980 Clear crt (3,10) PRINT TABXY(1,15);"ROTATING CCW (FAST)" ELSE Comm ("4ST") Fs_flag —l*Fs flag Clear crt(3,15) PRINT TABXY(1,15); "ROTATION STOPPED" GOSUB Check_position END IF RETURN! --- —-------------------------------------------------------------------- Sscw:! Slow slew clockwise. IF Ss flag<0 THEN Comm("4ST") INPUT "Speed?",Sp Comm l 4 SP " & ALS I T T I( I )) Comm("4SFN") Ss_flag=-l*Ss flag Clearcrt(3,15) PRINT TABXY(1,15);"ROTATING CW (SLOW)" ELSE Comm("4ST") Ssflag=-l*Ss flag Clearcrt(3,15) PRINT TABXY(1,15);"ROTATION STOPPED" GOSUB Check_position END IF RETURN! --- —-------------------------------------------------------------------- Ssccw:! Slow slew counterclockwise. IF Ss flag<0 THEN INPUT "Speed?",Sp Comm ("4SP"&VAL$(INT (Sp)) ) Comm("4SRN") Ss flag=- *Ss flag Clear crt (3,15) PRINT TABXY(1,15);"ROTATING CCW (SLOW)" ELSE Comm ("4ST") Ss_flag=-l*Ss flag Clear crt (3,15) PRINT TABXY(1,15);"ROTATION STOPPED" GOSUB Checkposition END IF RETURN! 112080 12090 12100 12110 12120 El 12130 Ir 12140 C 12150 Pl 12160 12170 12180 W 12190 12200 12210 12220 12230 12240 El 12250 I; 12260 12270 12280 C 12290 Pi 12300 WI 12310 RETURN 12320! 12330! --- —12340! 12350 Stop turn 12360 12370 12380 12390 12400 12410 12420 12430 12440 12450 RETURN 12460! Currentangle=Currentangle+Inc_angle Incangle$=VAL$(Angll) Comm("4IM"&IncangleS) Comm ("4RFI") ND SELECT mcstatus=O learcrt(3,7) RINT TABXY(1,14);"ROTATING TARGET, PLEASE WAIT." HILE NOT BIT(Imcstatus,0)! Wai Comm ("4RS", Confirm-answer) ENTER Response$;Imc status PRINT TABXY(1,15);DVAL$(Imcstatus,2) GOSUB Checkposition WAIT 1 ND WHILE mc-status=0 t for motor to stop. lear-crt(3,16) RINT TABXY(1,16);"CURRENT TARGET POSITION IS ";Current angle;" DEGREES. AIT 2! Wait for target settling. -----------------------------------------------------------------:Comm("4ST") WHILE NOT BIT(Imcstatus,0) Comm("4RS",Confirm answer) ENTER ResponseS;Imcstatus WAIT.1 END WHILE Clear crt(3,16) PRINT TABXY(1,15);"ROTATION STOPPED" GOSUB Checkposition Imc status=0! Wait for motor to stop. 12470 12480 12490 12500 12510 12520 12530 12540 12550 12560 12570 12580 12590 12600 12610 ----— anual: Manual: 11990 Auto: 12000 12010 12020 12030 12040 12050 12060 12070 INPUT "ANGLE (IN DEGREES)=?",Incangle INPUT "SPEED? (-100 —500 RECOMMENDED)",Speed Comm ("4 SP"&VAL$ (Speed)) SELECT Rotation state CASE =4 GOSUB Gohome Rotation state=2 GOTO Auto CASE ELSE Angl2=Inc_angle*93.3 Angl 1=INT(Angl2) IF Angl2-Angll>-.5 THEN Angll=Angll+l! --- —----------------------------------------------------------------- Setauto: Comm("4SP500") GOSUB Check position Clearcrt(3,16) PRINT TABXY(1,3);"Current starting angle: ";Start_angle;" degrees" PRINT TABXY(1,4);"Current increment angle: ";Incangle;" degrees" PRINT TABXY(1,5);"Current stopping angle: ";Stop angle;" degrees" PRINT TABXY(1,6);"Current rotation speed: ";Speed PRINT TABXY(1,7);RPT$ (" ",80) PRINT TABXY (1,8); "Rotator positioned at: ";Current angle;" degrees" INPUT "Enter starting angle value (degrees): ",Startangle INPUT "Enter increment angle (degrees): ",Inc angle INPUT "Enter stopping angle (degrees): ",Stop_angle INPUT "Enter rotation speed of target (-500 recommended): ",Speed Speed=INT(Speed) Comm("4SP"&VAL$(Speed)) IF ABS(Start angle-Currentangle)>.1 THEN PRINT TABXY(1,9);RPT$(" ",80) PRINT TABXY(1,10); "Rotating target to starting angle..." Tempa ngl e- Inca ngle Inc angle=Startangle-Current_angle GOSUB Auto Inca ngle=Tempa ngle 12620 12630 12640 12650 12660 12670 12680 12690 12700

w lw 12710 END IF 12720 Rotation state=2 12730 Clear crt 12740 PRINT TABXY(1,20);"Turntable is in automatic mode. (press the RETURN: tkey)" 12750 RETURN 12760! 12770! --- —-------------------------------- - 12780 12790 Set position:INPUT "LOCK IN CURRENT TARGET POSITION AS REFERENCE POSITION?",Yn$ 12800 IF Yn$="Y" OR Yn$="y" THEN 12810 Comm ("4RS", Confirm answer) 12820 ENTER Response$;Old homeangle 12830 Old_home angle=Old_homeangle/93.3 12840 Comm("4PIAO")! Set absolute position to zero. 12850 Comm("4PIZO")! Set incremental postition to zero. 12860 Currentangle=0 12870 ELSE 12880 PRINT "POSITION WAS NOT SET." 12890 END IF 12900 RETURN 12910! 12920! --------------------------------------- 12930 12940 Go home: IF Speed<200 THEN Speed=200 12950 Comm ("4SP"&VAL$ (Speed)) 12960 Comm("4AMO")! Move to zero absolute position. 12970 Comm("4RAN")! Initiate movement. 12980 Comm("4MW")! Make sure the move is completed. 12990 Imc status=0 13000 Clearcrt (3,15) 13010 PRINT TABXY(1,14);"ROTATING TARGET TO HOME POSITION, PLEASE WAIT." 13020 WHILE NOT (BIT(Imcstatus,O) AND BIT(Imc_status,5)) 13030 GOSUB Checkstatus 13040 PRINT TABXY(1,15);"CURRENT STATUS: ";DVAL$(Imc_status,2) 13050 GOSUB Checkposition 13060 WAIT.1 13070 END WHILE 13080 Clear crt (3, 16) 13090 PRINT TABXY(1,15);"TARGET AT HOME POSITION." 13100 GOSUB Check position 13110 Imcstatus-0 13120 RETURN 13130! 13140! --- —---------------------------------- 13150 13160 Checkstatus:! Keep an eye on the Whedco controller status. 13170 Cormm("4RS",Confirm answer) 13180 ENTER ResponseS;Imcstatus 13190 RETURN 13200! 13210! --- —----------------------------------------------------------------- 13220 13230 Checkposition:! Get the current turnstile position in degrees. 13240 Comm("4RP",Confirm answer) 13250 ENTER Response$;Motorposition 13260 Currentangle=Motorposition/93.3 13270! Current_angle=Currentangle+Inc angle 13280 PRINT TABXY(1,16);"CURRENT TARGET POSITION IS ";Currentangle;" DEGREES 13290 GOSUB Drawpositions 13300 RETURN 13310! 13320! --- —---------------------------------- sof 13330 13340 13350 13360 13370 13380 13390 13400 13410 13420 13430 13440 13450 13460 13470 13480 13490 13500 13510 13520 13530 13540 13550 13560 13570 13580 13590 13600 13610 13620 13630 13640 13650 13660 13670 13680 13690 13700 13710 13720 13730 13740 13750 13760 13770 13780 13790 13800 13810 13820 13830 13840 13850 13860 13870 13880 13890 13900 13910 13920 13930 13940 13950 13960 Check 4 fault:! Check the IMC for a fault condition and correct or!notify the user if necessary. Comm ("4FC",Confirm answer) ENTER ResponseS;Fault$ SELECT Fault$ CASE ="Power failure"! Loss of power RETURN CASE ="Force DAC"! Force DAC command was given BEEP PRINT "Force DAC command was given..." DISP "Press CONTINUE to resume..." PAUSE RETURN CASE ="Over-current"! Over-current condition exists. BEEP PRINT "n, ver-current condit on has been detected on the iMC." PRINT PRINT "Cycle the power to the IMC until the OV-CUR LED goes out" DISP "Press CONTINUE to reinitialize the IMC" PAUSE GOSUB Init imc RETURN END SELECT RETURN!! -------------------------------------------------------------------------,. Initgraphpos:! Creates a graphical depiction of where the target is. GINIT GCLEAR GRAPHICS ON SHOW 0,100,0,100 PENUP MOVE 90,70 PEN 1! Draw circle POLYGON 12,360,360 PENUP MOVE 90,70! Draw old home orientation. PEN 2 DRAW 90+11*COS(Oldhomeangle),70-11*SIN(Old_home_angle) PENUP MOVE 90,70! Draw current home orientation. PEN 4 DRAW 90,58 PENUP MOVE 90,70! Draw current target orienation. PEN 3 X_pos=90+11*COS(Currentangle) Ypos=70-11*SIN(Current_angle) DRAW Xpos,Y_pos RETURN ------------------------------------------------------------------------- Drawpositions:! Draws out the angular orienations. MOVE 90,70! Draw old home orientation. PEN 2 DRAW 90-11*SIN(Oldhomeangle),70-11*COS(Old_home_angle) PENUP MOVE 90,70! Draw current home orientation. PEN 4

- W w w 13970 13980 13990 14000 14010 14020 14030 14040 14050 14060 14070 14080 14090 14100 14110 14120 14130 14140 14150 14160 14170 14180 14190 14200 14210 14220 14230 14240 14250 14260 14270 14280 14290 14300 14310 14320 14330 14340 14350 14360 14370 14380 14390 14400 14410 14420 14430 14440 14450 14460 14470 14480 14490 14500 14510 14520 14530 14540 14550 14560 14570 14580 14590 14600 DRAW 90, 58 PENUP DISABLE MOVE 90,70! Draw current target orienation. PEN -3 DRAW X_pos,Ypos MOVE 90,70 PEN 3 X_pos=90-ll*SIN(Current angle) Y_pos=70-ll*COS(Current angle) DRAW Xpos,Ypos PENUP ENABLE RETURN! Quit: SUBEXIT SUBEND ** ******************************************************************** SUB Comm(C$,OPTIONAL INTEGER Confirmanswer)! PROGRAM MODULE: Comm PURPOSE: Modified version of the Comm module to be used! for direct two way communication with the WHEDCO! IMC stepping motor controller. UPDATE: 3.0 Version 3.0 checks to see if the card being used is the HP98628A (Datacomm) or the HP98626A (Serial). Depending on which card is used, the appropriate registers are selected. cablele 14610 14620 14630 14640 14650 14660 14670 14680 14690 14700 14710 14720 14730 14740 14750 14760 14770 14780 14790 14800 14810 14820 14830 14840 14850 14860 14870 14880 14890 14900 14910 14920 14930 14940 14950 14960 14970 14980 14990 15000 15010 15020 15030 15040 15050 15060 15070 15080 15090 15100 15110 15120 15130 15140 15150 15160 15170 )] 15180 15190 15200 15210 15220 15230 CONTROL Sc,34;2! 7 k CONTROL Sc,35;0! 1 CONTROL Sc,36;1!ODE Connect_flg=l ELSE Sc=8 ASSIGN @Find it TO * ASSIGN @Find it TO Sc;RETURN Outcome IF Outcome<>0 THEN PRINT "RS-232 card not installed. ASSIGN @Findit TO * STOP END IF ASSIGN @Findit TO * RESET Sc CONTROL Sc,0;1 ResE CONTROL Sc,3;Baud rate! Set CONTROL Sc,4;8+2 ' UAR; CONTROL Sc, 5;3!UARI CONTROL Sc,12;128+32+16! Disa STATUS Sc,3;B! Conf Connect_flg=1 END IF Afterinit:! Whiteprint$=CHR$(136) Crlf$=CHR (13) &CHR$(10) PRINT CHRS(128)&CHR$(136);! Set up ASSIGN eScreen TO CRT ASSIGN @Kbd TO KBD ASSIGN @Rx TO BUFFER In$ ASSIGN @Tx TO BUFFER Out$ ASSIGN @Uartout TO Sc ASSIGN @Uart in TO Sc Responseflg=0! Reset c Response$""! Null ou! bit s/ character. stop bit. ) parity. Please install and reboot." et the RS-232 interface. the baud rate. T 8 bits/char. ODD parity. T DTR line active. tble CD,DSR,CTS firm speed to user. the screen. command acknowledge flag. it response string... OPTION BASE 1 COM /Status/ INTEGER Sc,Connect flg,Eflg,Debugflg,Response$ INTEGER Baud rate,B,Num chars,Responsefig,Indexi DIM Input$[256],Term$[256],In$[256] BUFFER,From 232$[256] DIM Numchars$[6],Numltrs$[6],Out$[256] BUFFER DIM White printS[l],Crlf$[2] IF Debug flg THEN PRINT TABXY(1,1);"ENTERING Comm ON ERROR GOSUB Error!! IF Connect flg THEN After init Sc=30 ASSIGN @Find it TO Sc;RETURN Outcome IF Outcome=0 THEN ASSIGN @Find it TO * CONTROL Sc,0;1! Reset RS-232 interface. CONTROL Sc,3;1! Async link protocol. CONTROL Sc,0;1! Set Async toggle. CONTROL Sc,8;1+2! Set RTS and DTR lines. CONTROL Sc,16;0! Disable connection timeout. CONTROL Sc,17;0! Disable no activity timeout. CONTROL Sc,18;0! Disable NO CARRIER timeout. CONTROL Sc,19;0 i Disable transmit timeout. CONTROL Sc,20;14! TX baud speed - 9600 CONTROL Sc,21;14! RX baud speed = 9600 CONTROL Sc,22;0! No handshake with Whedco. CONTROL Sc,23;0! No hardwired handshake. \ ENABLE INTR Sc! Enable interrupt on card. TRANSFER @Tx TO @Uart out;CONT i Enable transfer buffers. TRANSFER @Uartin TO @Rx ON INTR Sc,FNTrap_level GOSUB Read loop! Process card interrupts. IF C$<>"" THEN GOSUB Send com! Send command out to controller. ELSE GOTO Quit END IF for it:WHILE! If null command, exit quick.! Waiting for acknowledgement.! We are waiting for data to be!sent by the Whedco controller. Wait NOT Response flg GOSUB Readloop IF NPAR=2 THEN LOOP GOSUB Read loop IF (POS(Response$,"*")) THEN Response$=Response [POS(ResponseS, "*"),LEN(Response$ Response flg=1 END IF EXIT IF ((Response flg=1) AND (POS(Response$,Crlf$))) END LOOP ELSE WHILE NOT ((POS(Response$,"*")) OR (POS(Response$,"?") ))

15240 15250 15260 15270 15280 15290 15300 15310 15320 15330 15340 15350 15360 15370 15380 15390 15400 15410 15420 15430 15440 15450 15460 15470 15480 15490 15500 15510 15520 15530 15540 15550 15560 15570 15580 15590 15600 15610 15620 15630 15640 15650 15660 15670 15680 15690 15700 15710 15720 15730 15740 15750 15760 15770 15780 15790 15800 15810 15820 15830 15840 15850 15860 15870 Read_ Send GOSUB Readloop END WHILE Indexl=POS(Response$,"*") IF Indexl=0 THEN! Must be a "?" (Whedco command error).! Must be a "?" (Whedco command error). E flg=l! Notify via error flag. Response flg=l ELSE! Normal command interpretation. E flg=O Response flg=1 END IF END IF END WHILE GOTO Quit loop:! Read in serial data from Whedco. STATUS @Rx,4;Num chars IF Num chars-0 THEN RETURN! Num chars$="#, "&VAL$ (Numchars) &"A"! ENTER @Rx USING Num chars$;From_232$ Response$SResponseS&From_232$ RETURN com:Term$=Crlf$ [1,1] &C&Crlf$ Num ltrs$="#,"&VAL$(LEN(Term$)) &"A" OUTPUT @Tx USING Numltrs$;Term$ TermS="" RETURN 15880 15890 15900 15910 15920 15930 15940 15950 15960 15970 15980 15990 16000 16010 16020 16030 16040 16050 16060 16070 16080 16090 16100 16110 16120 16130 16140 16150 16160 16170 16180 16190 16200 16210 16220 16230 16240 Other: Other: PRINT "UART error status: ";Uart error E flg=l RETURN Number of characters to receive, if 0 try again. Set up the IMAGE for ENTER.! Transfer contents.! Build up dialogue.! Update pointers. END IF Overrun:PRINT "Overrun" E flg=l RETURN Parity: PRINT "Parity" E flg=l RETURN Breakl: PRINT "Break" E flg=l RETURN Framing:PRINT "Framing" E_flg-1 RETURN Other error:PRINT "Error message: ";ERRMS PAUSE E flg=l SUBEXIT SUBEND!****************************************************************************** Quit: OFF ERROR STATUS @Tx,10;Stat STATUS @Rx,4;Numbytes ABORTIO @Uart out ASSIGN @Tx TO * CONTROL @Rx,8;0 STATUS @Rx,10;Stat STATUS @Rx,4;Numbytes ABORTIO @Uart in ASSIGN @Rx TO * DISABLE INTR Sc SUBEXIT! Error:PRINT "HANDLING Comm ERROR" IF ERRN<>167 THEN Othererror IF Sc=8 THEN! Process the simple card. STATUS Sc,10;Uart error IF BIT(Uart error,l) THEN Overrun IF BIT(Uart error,2) THEN Parity IF BIT(Uart error,4) THEN Breakl IF BIT(Uarterror,3) THEN Framing E flg=l PAUSE RETURN ELSE PRINT ERRM$ E_flg=l PAUSE RETURN

- w lw w cablemmw 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320! MILLIMETER-WAVE POLARIMETER MEASUREMENT PROGRAM! FILE: CABLE MMW VERSION 6.0 ***************************************************************************** 650 660 670! Declare variables in common blocks LAST EDIT: 12 JUN NAME DATE RTA 08 FEB 1989 MK 17 FEB 1989 RTA RTA 05 JUN 1989 AN 1 SEP 1989 MK 10 JAN 1990 1991 VER. CHANGE 5.0 Update to take advantage of BASIC 5.11 enhancements (MAT, COMPLEX). Gate setting procedure improved. Data files now in ASCII. Electrical Delay always on. 5.1 Update to create RAM disc cache for holding various key definitions and MMWCAL files. Minor bug in file-disc error handling fixed. 5.2 Extensive comments added. Documentation developed. 5.3 Added the 215 radar system,the illumination in -tegrals routine was modified to handle the 215 GHz radar. 5.4 Radiometer routine added. Better configuration poll routine. HFS capability added. 5.5 Radiometer routine was completed to control the lock in amplifier. 5.6 Modified to work on Viper card 6.0 Added subroutines of Rotatetarget, Comm, Setgates, Storefile, etc. for powerline cable measurements. 680 COM /Paths/ @Nwa,@Nwa data,Hp8510,Hp8753 690 COM /Constants/ Vel,Zero(1:4,1:4),Far_field(1:4) 700 COM /Freq data/ Freq$(1:4)[3],Freq_cent(1:4),Freq_span(1:4) 710 COM /Pol data/ Pol$(1:4)[2],Numer$(1:4) [6] 720 COM /Transpol/ Tpol$(1:6)[41 730 COM /Incoh eled/ Polz(1:2,1:6) 740 COM /Radiometerl/ Radcalstats(3,23),Rad meas stats(3,9),Calib factors(3,2),Lockin _stats(3,2) 750 COM /Radiometer2/ Coldreftemp,Hotreftemp,Pretime_const(1:11), Post_time_const(1:3) 760 COM /Labels/ Target$[30],Version$[12],Mode$[7],Out_type$[10],Debug$[3] 770 COM /Beam data/ Angle,Angle$[10],Bin_rng(1:4),Beam(1:4) 780 COM /N data/ INTEGER Npts,Ntrace 790 COM /Flags/ INTEGER Cal_flag(1:2,1:4),Measflag(1:2,1:4),Combinations,Fdef,Pdef 800 COM /Cal/ Sigc(1:4,1:4),Pwrcal(l:4,1:4),Delc(l:4),Rcal(1:4),Timc(1:4,1:4) 810 COM /Calmod/ Kp(1:4,1:4,1:401) 820 COM /Illum/ C(1:4,1:4,1:17),D(1:4,1:4,1:21),E(1:4,1:4,1:19) 830 COM /Errors/ Msi$[80],Err file$[80] 840 COM /Gatedata/ Gatecent,Gate span,INTEGER Averagefactor,Igate 850 COM /Com4/ INTEGER Rotationstate,REAL Incangle,Currentangle,Startangle,Stopang le,Old homeangle,INTEGER Setsperpos 860 COM /Status/ INTEGER Sc,Connectflg,E_flg,Debugflg,Response$[80] 870 INTEGER Endflag 880! 890! Load blank function keys (replacing the system typing-aid key defs) 900 AN AN YO 15 FEB 1990 16 MAY 1990 12 JUN 1991 ******** * ******************************************************! VARIABLES USED * ************************************************************************ 910 920 930 LOAD KEY "NOKEY:MEMORY,0,1"! Data is read and assigned to arrays 330! @Disc Addr Path used for disc I/O 340! @Nwa Addr Path used for HP8510 I/O 350! @Nwa data Addr Path used for HP8510 data transfer 360! Angle Real Angle of incidence in degrees 370! Angle$[10] Char Angle of incidence in degrees 380! Beam(l:4) Real Beamwidths of three radars 390! Debug$[3] Char ="ON" if HP8510 debug mode is enabled 400! End flag Intg Set if QUIT was selected in Main Menu 410! Err fileS[20] Char Name of current file is stored here to be 420 used in error messages in Fix error routine 430! Fdef Intg "Default" frequency (displayed at end of set) 440! Freq$(1:4) [3] Char Labels for the three frequencies ("35" etc.) 450! Freq_cent (1:4) Real Center IF frequency of three channels 460! Freq_span(1:4) Real Span of IF frequencies of three channels 470! HP8510 Intg Set if 8510 is active network analyzer 480! Hp8753 Intg Set if 8753 is active network analyzer 490! Kp(l:4,1:4,1:401) Real Cal constant for each freq/pol/trace point 500! Meas_flag(1:2,1:4) Intg Matrix denoting which channels will be used 510! in measurement (format same as Cal flag) 520! Msi$[80] Char Mass storage directory. 530! Npts Intg Number of points in HP8510 trace (def. 401) 540! Ntrace Intg Number of traces per measurement (def. 30) 550!ratio (usu. bl) 560! Out_typeS[10] Char Type of data output (printer, disc, both) 570! Pdef Intg "Default" polarization (displayed after set) 580! Pol$(1:4) [2] Char Labels for the 4 polarizations ("VV" etc.) 590! Target$[30] Char Target to be measured 600! Vel Real Free-space velocity of light 610! Version$[12] Char Program version 620! Zero(1:4,1:4) Real Position of antenna faceplate on time-domain 630!trace (varies due to differences in plumbing) 640!******** ** ********************************************************** 940 950 960 970 980 990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 DATA "035","094","140","215" DATA "W", "HV", "VH", "HH" DATA "TV ","T45 ","TH ","TLHC","T135","TRHC" DATA "NUMEB1","NUMEB1", "NUMEB1","NUMEB1" DATA 2.5,2.5,2.5,2.5 DATA 1.0,1.0,1.0,1.0 DATA 4.2,1.8,5.0,2.37 DATA 10.,0.75,0.5,.25 DATA 2.71,7.28,2.71,4.164 READ Freq$(*) READ Pol$(*) READ Tpol$(*) READ Numer$(*) READ Freq cent (*) READ Freqspan(*) READ Beam(*) READ Binrng(*) READ Farfield(*)!! Frequency! Polarization! Numerator! Freq_cent! Freq_span! Beamwidth*******!Bin rng*********! Far field*******! Enable error-trapping routine: When an error occurs, the program will jump to the Fixerror! routine. (Some errors can be fixed without stopping the program.) ON ERROR CALL Fixerror! Read illumination integral coefficients from disc.! Also define look-up table for FORM1 to FORM3 conversion.! IF FNViper THEN! Msi$="\BLP\MMW:DOS,C"! ELSE

w VW lw 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 Ms i $=" -W:CS80,700,0"!END IF MASS STORAGE IS Msi$!!Initialize important parameters DEG MAT Cal flag= (0) MAT Meas_flag= (0) Mode$="SURFACE" OuttypeS="PRINT/DISC" Debug$="OFF" Vel=2.99792458E+8 Ntrace=30 Npts=401 Angle$="" Angle=0 Fdef=l! Pdef=! Target$="" Version$="Version 8.2 Zero(1,1) =3.73E-7 Zero(1,2)=3.73E-7 Zero(1,3)=3.73E-7 Zero(1,4)=3.73E-7 Polz(1,1) =3.73E-7 Polz(1,2)=3.73E-7 Polz(1,3)=3.73E-7 Polz (1,4) =3.73E-7 Polz (1,5) =3.73E-7 Polz(1, 6) =3.73E-7 Zero(2,1)=3.7100E-7 Zero(2,2)=3.7100E-7 Zero(2,3)=3.7100E-7 Zero(2,4)=3.7100E-7 Polz(2,1) =3.71E-7 Polz(2,2)=3.71E-7 Polz(2,3)=3.71E-7 Poiz(2,4)=3.71E-7 Polz(2,5) =3.71E-7 Polz(2,6)=3.71E-7 Zero(3,1)=9.1E-9 Zero (3, 2)=9.1E-9 Zero(3,3)=9.1E-9 Zero(3,4) =9.1E-9 Zero(4,1)=3.8588E-7 Zero(4,2) =3.8588E-7 Zero (4,3)=3.8588E-7 Zero(4,4)=3.8588E-7 Measure angles in degrees Initial mode is SURFACE Initial output to printer & disc HP8510 debug mode off 30 traces/set 401 points/trace Default frequency = 35 GHz Default polarization = vv Read electrical delays. These corrections are necessary to make the antenna faceplate = 0.0 m in range. c mable mmw:::::::: —:-:-::..::: — - 1900 PRINT " * Measurement Program *" 1910 PRINT " * (Version 8.2) *" 1920 PRINT " * *" 1930 PRINT " * JAN 28 1991 *" 1940 PRINT " * * 1950 PRINT " **************************** ************** 1960 1970! Subroutine configures the HP-IB bus and presets the HP8510. 1980 1990 PRINT 2000 PRINT 2010 PRINT " 2020 PRINT "ENTER (Y) IF YOU WANT REMOTE POLARIZATION CONTROL" 2030 PRINT" 2040 PRINT " 2050 PRINT " 2060 PRINT "NOTE: FOR COH-ON-RECV MEASUREMENTS YOU MUST BE IN REMOTE" 2070 PRINT " WHILE FOR POWER MEASUREMENTS YOU MUST BE IN LOCAL" 2080 INPUT Pol cont$ 2090 CLEAR SCREEN 2100 2110 IF Pol-cont$="Y" OR Pol-cont$="y" THEN CALL Handshake 2120 2130! Establish connection with pol. control computer 2140! 2150 PRINT "Be patient! Need time to set-up..." 2160 CALL Hpnwainit (@Nwa,@Nwadata,@Hpib,Hp8510, Hp8753) 2170 2180! Print title, date, time, and comments to the printer. 2190 2200 Startloop:! Top of endless loop containing radar menu & meas. routine 2210! 2220! Radar menu is the main menu from which measurement parameters are 2230! chosen and calibration is done. The subroutine is exited when 2240! beginning a measurement or ending the program. 2250 2260 CALL Radar menu(End_flag) 2270 IF End flag THEN GOTO Program end 2280! 2290! The following routines represent the type of measurement desired. 2300! Only the surface routine is updated for use on the HP8510. 2310! 2320 IF ModeS="SURFACE" THEN CALL Surface 2330 2340 GOTO Start loop! After measurement, loop back to menu 2350 Programend:! 2360 DISP "Program exit" 2370 LOAD KEY "SYSTKEY:MEMORY,0,1"! Re-load typing aid keys from memory 2380 END! Program ends 2390!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2400 SUB Freq_set(INTEGER Ifreq,Timflag) 2410! 2420! This subroutine prompts the user to change the radar frequency 2430! on the radar control panel. It then sets the proper IF range 2440! on the HP8510. 2450! 2460! This subroutine is called from the time or frequency domain. 2470! 2480! ******************************************************************** 2490!VARIABLES USED (* denotes subroutine argument) * 2500 **************************** ********************************** 2510! @Nwa Addr Path used for HP8510 I/O 2520! Dummy Real Dummy variable; used for junk input 2530! Freq$(1:4)[3] Char Labels for the four frequencies ("35" etc.)! "Zero(I,J)" is the two-way time interval from the t=0 of the! HP8510 to the front of the antenna; i.e., if the front of the! antenna appears at t=13.7 ns, then Zero=13.7E-9. This delay is! corrected using the ELECTRICAL DELAY function of the HP8510. PRINTER IS CRT CLEAR SCREEN PRINT PRINT PRINT " PRINT " PRINT " PRINT " PRINT "! Direct printout to screen **** ********************************" * *,. * MMWAVE * " * University of Michigan Radiation Lab *" * Millimeter-Wave Polarimeter *"

lwlw w Mr w cable::mmw 2540! Freq_cent(:4) Real Center IF frequency of three channels 2550 Freqspan(l:4) Real Span of IF frequencies of three channels 2560 Hp8510 Intg Set if 8510 is the active network analyzer 2570 Hp8753 Intg Set if 8753 is the active network analyzer 2580!*Ifreq Intg Frequency (1=35, 2=94, 3=140,4=215) 2590!*Timflag Intg Set if subroutine called from time domain 2600!******************************************************* 2610 COM /Paths/ @Nwa,@Nwadata,Hp8510,Hp8753 2620 COM /Freq_data/ Freq$(*),Freqcent(*),Freqspan(*) 2630 DISP "Set to transmit "&Freq$(Ifreq)&" GHz <CONTINUE>" 2640 PAUSE! Wait for user to hit <CONTINUE> 2650 DISP "Working"! Let user know he has hit <CONTINUE> 2660 IF Timflag THEN! If in the time domain then... 2670 IF Hp8510 THEN 2680 OUTPUT @Nwa;"FREQ;"!...switch to frequency domain. 2690 END IF 2700 IF Hp8753 THEN 2710 OUTPUT @Nwa;"T1MDTRANOFF;" 2720 END IF 2730 END IF 2740 IF Hp8510 THEN OUTPUT @Nwa;"FREQ;CENT "&VAL$(Freq_cent(Ifreq))&" GHZ;SPAN "&VAL$ (Freq_span(Ifreq))&" GHZ;ENTO;"! Set the IF center & span 2750 IF Hp8753 THEN OUTPUT @Nwa;"TIMDTRANOFF;CENT "&VAL$(Freqcent (Ifreq)) &" GHZ;SPAN "&VAL$(Freq span(Ifreq)) &" GHZ;ENTO;" 2760 IF Timflag THEN! If subr. called from time domain then... 2770!...switch back to the time domain, get the trace start time 2780!from the HP8510, store it in a dummy variable, and turn off the 2790!start time display on the HP8510 screen. (Asking and waiting 2800! for the start time assures that the program will wait for the 2810!HP8510 to switch back to time domain before continuing.) 2820 IF Hp8510 THEN 2830 OUTPUT @Nwa;"TIMB;WAIT;STAR;OUTPACTI;" 2840 ENTER @Nwa;Dumrmy 2850 END IF 2860 IF Hp8753 THEN OUTPUT @Nwa;"TIMDTRANON;WAIT;" 2870 OUTPUT @Nwa;"ENTO" 2880 END IF 2890 SUBEND 2900!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2910 SUB Polariz_set (INTEGER Ipol,Ifreq) 2920 2930!This subroutine tells the user to set transmit polarization for 2940!the 35 GHz system (or transmit and receive polarization for the 2950!94 or 140 GHz systems) and gives the corresponding command 2960!to the HP8510. 2970! 2980!* ********************************************************************* 2990!VARIABLES USED (* denotes subroutine argument) * 3000!********************************************************************* 3010! @Nwa Addr Path used for HP8510 I/O 3020!*Ifreq Intg Frequency (1=35, 2=94, 3=140, 4=215) 3030!*Ipol Intg Polarization (l=vv, 2=hv, 3=vh, 4=hh) 3040! Hp8510 Intg Set if 8510 is the active network analyzer 3050! Numer$(1:4) [6] Char Channel to be used as numerator for HP8510 3060!ratio (usu. bl) 3070! Pol$(1:4)[2] Char Labels for the 4 polarizations ("W" etc.) 3080 ******* ********************************************** 3090 COM /Paths/ @Nwa,@Nwa_data,Hp8510,Hp8753 3100 COM /Pol data/ Pol$(*),Numer$(*) 3110 i!!!!!! 3120 SELECT Ifreq! Select from the following cases by frequency 3130 CASE 1,2! 35 OR 94 GHz 3140 DISP "Set to transmit "&Pol$(Ipol) [2,2]&" polarization <CONTINUE>" 3150 PAUSE! Wait for user to press <CONTINUE> 3160 3170 3180 3190 3200 3210 3220 3230 3240 3250 3260 3270 3280 3290 3300 3310 3320 3330 3340 3350 3360 3370 3380 3390 3400 3410 3420 3430 3440 3450 3460 3470 3480 3490 3500 3510 3520 3530 3540 3550 3560 3570 3580 3590 3600 3610 3620 3630 3640 3650 3660 3670 3680 3690 3700 3710 3720 3730 3740 3750 3760 3770 3780 3790 CASE 3,4! 140 or 215 GHz DISP "Set the polarization config. to "&Pol$(Ipol)[1,2]&" <CONTINUE>" PAUSE! Wait for user to press <CONTINUE> END SELECT SUBEND!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SUB Comments! This subroutine prints comments (text) on the printout.!******* *************************************************************************! VARIABLES USED (* denotes subroutine argument) *! *****************************************************************************!Input$[80] Char Stores user responses! *********************************************************************** DIM Input$[80] CLEAR SCREEN PRINT "Enter comments. When finished, begin the next line" PRINT "with a /, then <ENTER>." PRINT RPT$("*",70)! Print row of * on screen PRINTER IS 26! Direct printout to printer PRINT RPT$("*",70)! Print row of * on printer Loopstart:! LINPUT "",Input$! Get a line of input from user IF Input$[1,1]="/" THEN Loopend! If line begins with "/", we're done PRINTER IS CRT! Direct printout to screen PRINT Input$! Print input line to screen PRINTER IS 26! Direct printout to printer PRINT Input$! Print input line to printer GOTO Loop start! Go back & get another line Loopend: PRINT RPT$("*",70)! Print row of * on printer PRINTER IS CRT! Direct printout to screen CLEAR SCREEN SUBEND!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SUB Hpnwainit(@Nwa,@Nwadata,@Hpib,Hp8510,Hp8753)!This subroutine configures the HP-IB and sets several parameters.!However, it does NOT set everything. Instead, to save time at!startup, most parameters and default states are recalled from! instrument state #8. **********************************************! VARIABLES USED (* denotes subroutine argument) *! ***********************************************************************! *@Hpib! *@Nwa!*@Nwadata! Freq$(l:4)[3]!*Hp8510!*Hp8753! Pol$(1:4)[2]! Zero(l:4,1:4)! Devid$[80] Addr Path used for HP-IB control Addr Path used for HP8510 I/O Addr Path used for HP8510 data transfer Char Labels for the four frequencies ("35" etc.) Intg Set if 8510 is active network analyzer Intg Set if 8753 is active network analyzer Char Labels for the 4 polarizations ("VV" etc.) Real Position of antenna faceplate on time-domain trace which varies due to differences in plumbing Char Device identification string used to determine which network analyzer is connected and if the lock-in amplifier is there. CO /Constants/ VelZero*Far**field(************* COM /Constants/ Vel, Zero(*),Far field (*)

lw mw w w w cable:mmw 3800 3810 3820 3830 3840 3850 3860 3870 3880 3890 3900 3910 3920 3930 3940 3950 3960 3970 3980 3990 4000 4010 4020 4030 4040 4050 4060 4070 4080 4090 4100 4110 4120 4130 4140 4150 4160 or 35 4170 4180 4190 4200 4210 4220 4230 4240 4250 4260 4270 4280 4290 4300 4310 4320 4330 4340 4350 4360 4370 4380 4390 4400 4410 COM /Freq_data/ Freq$(*),Freqcent (*),Freq-span(*) COM /Pol data/ Pol$(*),Numer$(*) ASSIGN @Hpib TO 7 ALLOCATE Dev id$[80] ASSIGN @Nwa TO 716! Assign path ASSIGN @Nwa_data TO 716;FORMAT OFF! Assign path Isna:! Check for existance and type of devices on tl Netwrk analyzer=l!!!!!! OUTPUT @Nwa;"FORM4; OUTPIDEN;" ENTER @Nwa;Dev id$ IF POS(Dev_id$,"8510") THEN Hp8510=1 ELSE Hp8510=0 END IF IF POS(Dev_id$,"8753") THEN Hp8753=1 ELSE Hp8753=0 END IF LOCAL @Nwa PRINT De vid$ for HP8510 commands for data transfer he bus. Setup: OFF TIMEOUT! Continue with the setup procedures DEALLOCATE Devid$ REMOTE @Hpib ABORT @Hpib CLEAR @Nwa OUTPUT @Nwa;"DEBUOFF;"! Disable debug mode IF Hp8510 THEN OUTPUT @Nwa;"RECA8;WAIT;ENTO;"! Recall state 8 IF Hp8753 THEN OUTPUT @Nwa;"RECA5;WAIT;ENTO;" OUTPUT @Nwa;"CORROFF;"! Make sure vector corr. is off IF Hp8510 THEN OUTPUT @Nwa;"DENOA1;LOCKA1;REDD;"! Use al port END IF OUTPUT @Nwa;"REFV 0;REFP 10;"! Set ref. line position and value!OUTPUT @Nwa;"ELED "&VAL$(Zero(1,1))&" S;ENTO;"! Set electrical delay to value f GHz, vv OUTPUT @Nwa;"TITL "" FREQUENCY: "&Freq$(1)&" GHz, POLARIZATION: "&Pol$(l)&!Set default screen title SUBEND!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SUB Radar_menu(INTEGER End flag) This is the main menu subroutine. In this subroutine, measurement parameters are set, and calibration routines are called. This subroutine is exited when beginning a measurement sequence or ending the program. 4420 4430 4440 4450 4460 4470 4480 4490 4500 4510 4520 4530 4540 4550 4560 4570 4580 4590 4600 4610 4620 4630 4640 4650 4660 4670 4680 4690 4700 4710 4720 4730 4740 4750 4760 4770 4780 4790 4800 4810 4820 4830 4840 4850 4860 4870 4880 4890 4900 4910 4920 4930 4940 4950 4960 4970 4980 4990 5000 5010 5020 5030 5040 5050 Measflag(l:2,1:4) Intg Matrix denoting which channels will be used in measurement (fmt like Cal flag) Measflagold(1:2,1:4) Intg Previous values in Meas flag matrix No rec Real Used in sphere response section Npts Intg # of points in HP8510 trace (def. 401) Ntrace Intg # of traces per measurement (def. 30) OuttypeS[10] Char Type of output (printer, disc, both) Pdef Intg "Default" pol (displayed after set) Pol$(1:4) [2] Char Labels for the 4 pols ("VV" etc.) Resist Intg Inclinometer resistance Target$[80] Char Target to be measured Zero(1:4,1:4) Real Position of antenna faceplate on time-domain trace (varies due to differences in plumbing) *************************************************************************** COM /Paths/ @Nwa,@Nwa data,Hp8510,Hp8753 COM /Constants/ Vel,Zero(*),Far field(*) COM /Freq_data/ Freq$(*),Freq_cent(*), Freq_span (*) COM /Pol data/ Pol$(*),Numer$(*) COM /Labels/ Target$,Version$,ModeS,OuttypeS,Debug$ COM /Beam data/ Angle,Angle$,Bin_rng(*),Beam(*) COM /N data/ INTEGER Npts,Ntrace COM /Flags/ INTEGER Cal_flag(*),Meas_flag (*),Combinations,Fdef,Pdef COM /Gatedata/ Gatecent,Gate_span, INTEGER Averagefactor,Igate INTEGER I,J,T,Re,Im,Num,Flag,Iii ALLOCATE INTEGER Cal flagold(1:2,1:4) ALLOCATE INTEGER Measflagold(1:2,1:4) End flag=0 Menu clear:! Selections return to here when screen needs clearing OFF KEY! Turn off soft keys CLEAR SCREEN Menu:! Selections return here when clearing is not wanted OUTPUT KBD;CHR$ (255)&CHR$(84);! home display PRINT TABXY(1,1)! Set print position to upper left corner PRINT! The following lines print the main menu PRINT PRINT " MILLIMETER-WAVE" PRINT " Parameter Selection Menu" PRINT PRINT PRINT PRINT " PARAMETER CURRENT VALUE" PRINT PRINT " Frequency FOR I=1 TO 4! List all frequencies currently selected IF Meas flag(l,I) THEN PRINT Freq$(I)& " "; NEXT I PRINT" PRINT " Polarization FOR J=1 TO 4! List all polarizations currently selected IF Meas flag(2,J) THEN PRINT Pol$(J)&" "; NEXT J PRINT "!Resistance value corresponding to antenna angle is calculated. Kohm=(Angle-166.91813)/(-90.03136) PRINT " Antenna angle "&Angle$; IF AngleS<>"" THEN! If angle has been set, print the corresponding PRINT " R = "&VAL$(PROUND(Kohm,-4))&" K "! resistance, ELSE! else print blank spaces. PRINT " "!***************************************************************************** VARIABLES USED (* denotes subroutine argument) *! *********** ****************************** ****** Angle Real Angle of incidence in degrees! AngleS[10] Char Angle of incidence in degrees!Anglenow Real Angle corr. to resistance of Resist!Debug$[3] Char ="ON" if HP8510 debug mode is enabled!*End flag Intg Set if QUIT was selected in Main Menu ' Fdef Intg "Default" freq. (displayed at end of set)!Freq$(1:4)[3] Char Labels for the three freqs ("35" etc.)! Hp8510 Intg Set when 8510 is the network analyzer! Hp8753 Intg Set when 8753 is the network analyzer I Intg Frequency loop index! J Intg Polarization loop index Kohm Real Inclinometer resist. corr. to current ang

lw lw qw RW w cable mmw,.:,.. ---.:,:.:-.:..: 5060 5070 5080 5090 5100 5110 5120 5130 5140 5150 5160 5170 5180 5190 5200 5210 5220 5230 5240 5250 5260 5270 5280 5290 5300 5310 5320 5330 5340 5350 5360 5370 5380 5390 5400 5410 5420 5430 5440 5450 5460 5470 5480 5490 5500 5510 5520 5530 5540 5550 5560 5570 5580 5590 5600 5610 5620 5630 5640 5650 5660 5670 5680 5690 END IF PRINT " Target type "&Target$ PRINT PRINT PRINT " PRINT " PRINT " NOTE: Calibration & Power measurements for" PRINT " the 35 & 94 Radars are performed for only" PRINT " VV & VH Polarizations!The following sets the function keys so that the operator can!choose to set parameters, calibrate, or begin measurements. Menu 1:!Main menu, page 1! De-activate previous key definitions, if any. OFF KEY ON KEY 0 ON KEY 1! Define ON KEY 2! Define ON KEY 3! Define ON KEY 4!Define ON KEY 5!Define ON KEY 6!Define ON KEY 7 Define ON KEY 8! Define ON KEY 9! Define key 0 for selection of frequencies & polarizations LABEL " FREQ/POLARIZ " GOTO Freqpol! Define key 1 for selection of freq & pol to display immediately LABEL "DISPLAY " GOTO Display key 2 to allow selection of an angle or finding an angle LABEL "ANGLE...." GOTO Angle key 3 for entering the target LABEL "TARGET...." GOTO Target key 4 to begin a measurement (and leave the menu subroutine) LABEL "BEGIN......" GOTO Begin key 5 to switch to the 2nd set of function keys LABEL "MORE...." GOTO Menu 2 key 6 to perform a calibration LABEL "#OF AVERAGE" GOTO Setaverage key 7 for selection of measurement mode LABEL " " GOTO Null key 8 for printing of comments on printout LABEL "COMMENTS " GOTO Commentprint key 9 to quit the program (and exit menu subroutine) LABEL "QUIT " GOTO Quit 5700 ON KEY 3 LABEL "H POL " GOTO H pol 5710 ON KEY 4 LABEL "LHC POL " GOTO Lhcpol 5720 ON KEY 5 LABEL "135_POL " GOTO T135_pol 5730 ON KEY 6 LABEL "RHC POL " GOTO Rhcpol 5740 ON KEY 7 LABEL "RETURN " GOTO Menu 2 5750 GOTO Spin 5760 Vpol:! 5770 CALL Trans pol set(1) 5780 GOTO Menu 3 5790 T45_pol:! 5800 CALL Trans polset(2) 5810 GOTO Menu 3 5820 Hpol:! 5830 CALL Transpolset (3) 5840 GOTO Menu 3 5850 T135_pol:! 5860 CALL Transpolset(5) 5870 GOTO Menu 3 5880 Lhcpol:! 5890 CALL Trans polset(4) 5900 GOTO Menu 3 5910 Rhc_pol:! 5920 CALL Trans polset (6) 5930 GOTO Menu 3 5940 ---------------------------------------------------------------- 5950 Null: RETURN 5960! --- —---------------------------------- 5970 Setaverage: 5980 INPUT "Enter averaging factor:",Averagefactor 5990 GOTO Menu! Return to main menu 6000! --- —-------------------------------------------------------------- 6010 Freqpol:! Choose frequencies and polarizations for measurements 6020 OFF KEY! De-activate softkeys 6030 MAT Meas flag old= Measflag! Save old set of selected freqs & pols 6040 MAT Measflag= (0)! Clear new set of freqs & pols 6050 6060! As each frequency and polarization is selected, the corresponding 6070! softkey is blanked, indicating that the key has been pressed. 6080! Pressing "STORE" will save the new selections, "CANCEL" will 6090! restore the old selections and return to the main menu. Spin:GOTO Spin! Wait for user to press a softkey Menu 2:! Main menu, page 2! De-activate previous key definitions (from page 1) OFF KEY! Define key 1 for selection of various measurement parameters ON KEY 1 LABEL "PARAMETERS " GOTO Parameters ON KEY 3 LABEL "SIX POL.'S " GOTO Menu 3! Define key 5 to switch to 1st set of function keys ON KEY 5 LABEL "MORE " GOTO Menu ON KEY 9 LABEL "FREQUENCY " GOTO Manual frq GOTO Spin! Wait for user to press a softkey ------------------------------------------------------------------------ Manual frq:! OFF KEY CLEAR SCREEN PRINT "CHOOSE THE NUMBER CORRESPONDING FOR THE WANTED FREQUENCY" PRINT "(1) 35 GHz" PRINT "(2) 94 GHz" PRINT "(4) 215 GHz" INPUT Iii CALL Coh freq(Iii) CLEAR SCREEN GOTO Menu 2! --- —------------------------------------------------------------------ Menu 3:! OFF KEY ON KEY 1 LABEL "V POL " GOTO Vpol ON KEY 2 LABEL "45 POL " GOTO T45 pol 6100 6110 ON KEY 0 I 6120 ON KEY 1 I 6130 ON KEY 2 I 6140 ON KEY 3 I 6150 ON KEY 4 I 6160 ON KEY 5 I 6170 ON KEY 6 I 6180 ON KEY 7 I 6190 ON KEY 8 I 6200 ON KEY 9 I 6210 6220! 6230 GOTO Spin 6240 Set 35: 6250 OFF KEY 0 6260 Meas flag 6270 GOTO Spin 6280 Set 94:! 6290 OFF KEY 1 6300 Measflag 6310 GOTO Spin 6320 Set 140:! 6330 OFF KEY 2 LABEL LABEL LABEL LABEL LABEL LABEL LABEL LABEL LABEL LABEL "35 GHz...." GOTO Set 35 "94 GHz...." GOTO Set 94 "140 GHz..." GOTO Set 140 "215 GHz..." GOTO Set 215 "VV........" GOTO Vv set "HV (rt)..." GOTO Hv set "STORE...." GOTO Store "CANCEL...." GOTO Can "VH (rt)..." GOTO Vh set "HH........" GOTO Hh set Turn off 35 GHz key (l,1)=1 (1,2) =1! Set 35 GHz flag! Wait for user to press a softkey! Turn off 94 GHz key t Set 94 GHz flag!Wait for user to press a softkey! Turn off 140 GHz key

lw w VW Mr w cable mmw 6340 6350 6360 6370 6380 6390 6400 6410 6420 6430 6440 6450 6460 6470 6480 6490 6500 6510 6520 6530 6540 6550 Meass flag(l, 3) -1 GOTO Spin Set 215:! OFF KEY 3 Meas flag(1,4)=1 GOTO Spin Vvset:! OFF KEY 4 Meas flag(2,1)=1 GOTO Spin Hv set:! OFF KEY 5 Meas flag(2,2)=1 GOTO Spin Vhset:! OFF KEY 8 Meas flag(2,3)=1 GOTO Spin Hh set:! OFF KEY 9 Meas flag(2,4)=1 GOTO Spin! Set 140 GHz flag! Wait for user to press a softkey! TURN OFF 215 GHZ KEY! SET 215 GHZ FLAG!WAIT FOR USER TO PRESS A SOFTKEY! Turn off vv key! Set vv flag! Wait for user to press a softkey! Turn off hv key! Set hv flag! Wait for user to press a softkey! Turn off vh key! Set vh flag Wait for user to press a softkey! Turn off hh key! Set hh flag! Wait for user to press a softkey 6560 Can:! (cancels selections) 6570 OFF KEY! Turn off softkeys 6580 MAT Measflag= Meas-flag old! Restore old set of freqs & pols 6590 GOTO Menu! Go back to main menu 6600 Store:! (saves new set of selections) 6610 OFF KEY! Turn off softkeys 6620! Combinations=Meas flag(l,1)+Meas flag(1,2)+Meas flag(1,3)+Meas-flag(1,4) 6630 Combinations=Meas flag(l,3)+Measflag(1,4) 6640 Combinations=Combinations* (Meas-flag(2,1) +Meas flag (2,2)+Meas_flag(2,3)+Meas_fl ag(2,4)) 6650 Combinations=Combinations* (Meas fag (2, ) Measflag( 2,(2)+Meas2 sflag (2,3) +Meas fl ag(2,4))+Meas flag(1,1)+Meas flag(1,2) 6660! Combinations = # freqs x # pols 6670 GOTO Menu! Go back to main menu 6680! --- —-------------------------------------------------------------- 6690 Display:! 6700 6710! The DISPLAY softkey is the preferred method of switching frequency 6720! and polarization when not running a measurement (if you just want to 6730! look at, but not measure, 94vh, for example). Using the DISPLAY key, 6740! the computer will prompt you to switch the radar freq. & polarization 6750! and will send commands to the HP8510 to use the correct parameter 6760! and electrical delay. The selected frequency & pol will become the 6770 i default f & p, and the HP8510 will return to the default after making 6780! any measurements, if such measurements are ordered. The initial 6790! defaults are 35 GHz, vv-pol. 6800 6810 OFF KEY! Deactivate previous softkey definitions 6820 DISP "Select frequency/polarization to view on HP8510" 6830 ON KEY 0 LABEL "35 GHz....." GOTO Show 35 6840 ON KEY 1 LABEL "94 GHz....." GOTO Show 94 6850 ON KEY 2 LABEL "140 GHz...." GOTO Show 140 6860 ON KEY 3 LABEL "215 GHz...." GOTO Show 215 6870 ON KEY 4 LABEL "VV........." GOTO Show vv 6880 ON KEY 5 LABEL "HV (rt)...." GOTO Show hv 6890 ON KEY 8 LABEL "VH (rt)...." GOTO Show vh 6900 ON KEY 9 LABEL "HH........." GOTO Show hh 6910 GOTO Spin 6920 Show 35:! 6930 Fdef=l! Change default freq to 35 GHz 6940 CALL Freq set(Fdef,1)! Prompt user to switch radar to 35 GHz 6950! CALL Cohfreq(Fdef) 6960 CALL Polariz set(Pdef,Fdef)! Prompt user to check pol. switches 6970 GOTO Changecal! Skip to bottom of routine 6980 Show_94: 6990 Fdef=2! Change default freq to 94 GHz 7000 CALL Freqset(Fdef,l)! Prompt user to switch radar to 94 GHz 7010! CALL Cohfreq(Fdef) 7020 CALL Polariz set(Pdef,Fdef)! Prompt user to check pol. switches 7030 GOTO Changecal! Skip to bottom of routine 7040 Show 140:! 7050 Fdef=3! Change default freq to 140 GHz 7060 CALL Freq set (Fdef,1)! Prompt user to switch radar to 140 GHz 7070 CALL Polariz set(Pdef,Fdef)! Prompt user to check pol. switches 7080 GOTO Changecal! Skip to bottom of routine 7090 Show 215:! 7100 Fdef=4! Change defualt freq to 215 GHz 7110 CALL Freqset(Fdef,1)! Prompt user to switch radar to 215 GHz 7120! CALL Cohfreq(Fdef) 7130 CALL Polariz set(Pdef,Fdef)! Prompt user to check pol. switches 7140 GOTO Change cal! Skip to bottom of routine 7150 Show vv:! 7160 Pdef=l! Change default pol. to vv 7170 CALL Polariz set(Pdef,Fdef)! Prompt user to switch radar to vv 7180 GOTO Changecal! Skip to bottom of routine 7190 Show hv:! 7200 Pdef=2! Change default pol. to hv 7210 CALL Polariz set(Pdef,Fdef)! Prompt user to switch radar to hv 7220 GOTO Changecal! Skip to bottom of routine 7230 Show vh:! 7240 Pdef=3! Change default pol. to vh 7250 CALL Polariz set(Pdef,Fdef)! Prompt user to switch radar to vh 7260 GOTO Changecal! Skip to bottom of routine 7270 Show hh:! 7280 Pdef=4! Change default pol. to hh 7290 CALL Polariz set(Pdef,Fdef)! Prompt user to switch radar to hh 7300 Changecal:! 7310 OUTPUT @Nwa;"TITL "" FREQUENCY: "&Freq$(Fdef)&" GHz, POLARIZATION: "&Pol$(P def)&""""! Update HP8510 display title 7320 OUTPUT @Nwa;"ELED "&VAL$(Zero(Fdef,Pdef))&" S;ENTO"! Set elect. delay 7330 DISP ""! Clear prompt line on computer screen 7340 GOTO Menu! Return to main menu 7350! --- —---------------------------------------------------------- 7360 Angle:! Find radar angle or change it 7370 OFF KEY! Deactivate previous softkey definitions 7380! Press key 0 to set desired measurement angle 7390 ON KEY 0 LABEL "SET ANGLE " GOTO Setangle 7400! Press key 1 to determine current angle from inclinometer resistance 7410 ON KEY 1 LABEL "FIND ANGLE " GOTO Findangle 7420! Press key 9 to return to main menu 7430 ON KEY 9 LABEL "MAIN MENU " GOTO Menu 7440 GOTO Spin! Wait for user to press softkey 7450 Set angle: 7460 OFF KEY 7470 INPUT "Enter measurement angle",Angle 7480 Angle$=VAL$(Angle)&CHR$(179)&" "! degree sign is appended to # 7490 GOTO Menu 7500 Findangle: 7510 OFF KEY 7520 INPUT "Enter resistance value (in kilohms)",Resist 7530 Angle now=166.91813-90.03136*Resist 7540 DISP "Resistance = ";VALS(Resist);" K Current angle = ";VAL$(PROUND(Angle_n ow,-2));CHR$(179)! Display current angle & resistance 7550 GOTO Menu 7560! --- —------------------------------------ 7570 Target:

v lw qw qw w cabeI mmw 7580 7590 7600 7610 7620 7630 7640 7650 7660 7670 7680 7690 7700 7710 7720 7730 7740 7750 7760 7770 7780 7790 7800 7810 7820 7830 7840 7850 7860 7870 7880 7890 7900 7910 7920 7930 7940 7950 7960 7970 7980 7990 8000 8010 8020 rng( 8030 8040 8050 8060 8070 8080 8090 8100 8110 8120 8130 8140 8150 8160 The user is prompted to enter the target, which will be listed on the printout and in the disc file. The target name cannot exceed!30 characters.! OFF KEY LINPUT "Enter target type",Target$ Target$=TRIM$ (Target)! Trim leading & trailing blanks Target$=Target$&RPT$ ( ",30-LEN(Target$))! Pad string with blanks GOTO Menu! --- —------------------------------------------------------------------- Commentprint:!Pressing COMMENTS calls the Comments subroutine, which allows the!user to print comments on the printout. OFF KEY CALL Comments GOTO Menu! --- —------------------------------------------------------------------- Quit:! Quit the program OFF KEY CLEAR SCREEN End flag=l! Set flag which signals the end of the program GOTO Sub end! Skip to the end of the subroutine! --- —--------------------------------- Parameters:!!Pressing PARAMETERS switches from the main menu to the parameters! menu. In this menu, the operator can select the numbers of traces!per set, the number of points per trace, the output type, the debug!mode, and the electrical delays. 8210 8220 8230 8240 8250 8260 8270 8280 8290 8300 8310 8320 8330 8340 8350 8360 8370 8380 8390 8400 8410 8420 8430 8440 8450 8460 8470 8480 8490 8500 8510 8520 8530 8540 8550 8560 8570 8580 8590 8600 8610 8620 8630 8640 8650 8660 8670 8680 8690 8700 8710 8720 8730 8740 8750 8760 8770 8780 8790 8800 8810 8820 8830 8840! Press key 4 to toggle debug mode ON KEY 4 LABEL " DEBUG MODE " GOTO Debug set! Press key 5 to set the electrical delays ON KEY 5 LABEL " ELEC. DELAY " GOTO Delay! Press key 9 to return to the main menu ON KEY 9 LABEL " MAIN MENU " GOTO Menu clear GOTO Spin! Wait for user to press softkey Trace:! Select number of traces per set OFF KEY INPUT "Input the # of traces desired (integer)",Ntrace GOTO Noclear! Return to parameters menu Points:! Select number of points per trace (51,101,201,401) OFF KEY ON KEY 0 LABEL "51 POINTS " GOTO Points 51 ON KEY 1 LABEL "101 POINTS " GOTO Points 101 ON KEY 2 LABEL "201 POINTS " GOTO Points 201 ON KEY 3 LABEL "401 POINTS " GOTO Points_401 GOTO Spin Points_51: Npts=51 OUTPUT @Nwa;"POIN51"! Set HP8510 to 51 points/trace GOTO No clear! Return to parameters menu Points 101: Npts=101 OUTPUT @Nwa;"POIN101" GOTO No clear! Return to Points 201: Npts=201 OUTPUT @Nwa;"POIN201" GOTO No clear! Return to Points 401: Npts=401 OUTPUT @Nwa;"POIN401" GOTO No clear! Return to parameters menu parameters menu parameters menu No 3)! OFF KEY! Deactivate previous softkey definitions CLEAR SCREEN _clear:!! Return to this point to redraw menu without clear screen OUTPUT KBD;CHR$(255)&CHR$(84);! Home display PRINT TABXY(1,1)! Begin printing at top left corner! The following lines print the parameters menu PRINT PRINT " PARAMETER CURRENT VALUE" PRINT PRINT " # of traces/set ";Ntrace;" " PRINT " # of points ";Npts;" PRINT " Volume bin size (meters) ";Bin rng(l);Bin r rng (2);Bin Debug set:! Toggle HP8510 debug mode OFF KEY IF Debug$[1,2]="ON" THEN DebugS="OFF" OUTPUT @Nwa;"DEBUOFF" ELSE Debug$= "ON" OUTPUT @Nwa;"DEBUON" END IF GOTO Noclear! Return to parameters menu Outputset:! Output to printer, disc, or both. OFF KEY ON KEY 0 LABEL "PRINT...." GOTO Outpr ON KEY 1 LABEL "DISC....." GOTO Out d ON KEY 2 LABEL "PRINT/DISC " GOTO Outpr_d; PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT PRINT Output type Debug mode Electrical delay Electrical delay Electrical delay Electrical delay Electrical delay Electrical delay Electrical delay Electrical delay of 35 GHz: VV,HV of 35 GHz: VH,HH of 94 GHz: VV,HV of 94 GHz: VH,HH of 140 GHz: VV,HV of 140 GHz: VH,HH of 215 GHz: VV,HV of 215 GHz: VH,HH ";OuttypeS ";Debug$;" " " Zero (1, 1); Zero (1, 2) ";Zero (1, 3);Zero (1, 4) ";Zero (2,1) Zero (2, 2) ";Zero (2, 3);Zero(2, 4) ";Zero(3, ); Zero(3, 2) "; Zero (3, 3); Zero (3, 4) ";Zero(4,1); Zero(4,2) ";Zero (4, 3) Zero (4, 4)! Press key 0 to select number of traces per set ON KEY 0 LABEL " # OF TRACES " GOTO Trace! Press key 1 to select number of points per trace ON KEY 1 LABEL " # OF POINTS " GOTO Points GOTO Spin Out pr: OFF KEY OuttypeS="PRINT GOTO No clear! Out d:! OFF KEY Out_type$="DISC GOTO No clear! Outpr d: OFF KEY Return to parameters menu Return to parameters menu 8170! Press key 2 to 8180!ON KEY 2 LABEL " 8190! Press key 3 to 8200 ON KEY 3 LABEL " set bin sizes for volume measurements BIN SIZE " GOTO Bin_rng-set select output type OUTPUT TYPE " GOTO Output set Out_type$="PRINT/DISC" GOTO No clear! Return to parameters menu

lw lw IR cable mmw 8850 Delay:! Set all 12 electrical delays 8860 INPUT "Electrical delay for 35 GHz, VV, in seconds (two-way)",Zero(1,1) 8870 INPUT "Electrical delay for 35 GHz, HV, in seconds (two-way)",Zero(1,2) 8880 INPUT "Electrical delay for 35 GHz, VH, in seconds (two-way)",Zero (1,3) 8890 INPUT "Electrical delay for 35 GHz, HH, in seconds (two-way)",Zero (1,4) 8900 INPUT "Electrical delay for 94 GHz, VV, in seconds (two-way)",Zero(2,1) 8910 INPUT "Electrical delay for 94 GHz, HV, in seconds (two-way)",Zero(2,2) 8920 INPUT "Electrical delay for 94 GHz, VH, in seconds (two-way) ",Zero(2,3) 8930 INPUT "Electrical delay for 94 GHz, HH, in seconds (two-way)",Zero(2,4) 8940 INPUT "Electrical delay for 140 GHz, VV, in seconds (two-way)",Zero(3,1) 8950 INPUT "Electrical delay for 140 GHz, HV, in seconds (two-way)",Zero(3,2) 8960 INPUT "Electrical delay for 140 GHz, VH, in seconds (two-way)",Zero(3,3) 8970 INPUT "Electrical delay for 140 GHz, HH, in seconds (two-way)",Zero(3,4) 8980 INPUT "Electrical delay for 215 GHz, VV, in seconds (two-way)",Zero(4,1) 8990 INPUT "Electrical delay for 215 GHz, HV, in seconds (two-way)",Zero(4,2) 9000 INPUT "Electrical delay for 215 GHz, VH, in seconds (two-way)",Zero(4,3) 9010 INPUT "Electrical delay for 215 GHz, HH, in seconds (two-way)",Zero(4,4) 9020 PRINTER IS 26 I Direct output to printer 9030 PRINT RPT$("*",70)! Print line of "*", then all elect. delays 9040 PRINT "Electrical delay of 35 GHz in seconds (two-way)";Zero(1,1);Zero(l,2);Zero (1,3);Zero(1,4) 9050 PRINT "Electrical delay of 94 GHz in seconds (two-way)";Zero(2,1);Zero(2,2);Zero (2,3); Zero(2,4) 9060 PRINT "Electrical delay of 140 GHz in seconds (two-way)";Zero(3,1);Zero(3,2);Zer o(3,3); Zero (3,4) 9070 PRINT "Electrical delay of 215 GHz in seconds (two-way)";Zero(4,1);Zero(4,2);Zer o(4,3); Zero (4,4) 9080 PRINT RPT$("*",70)! Print line of "*" 9090 PRINTER IS CRT! Direct output to screen 9100 OUTPUT @Nwa;"ELED "&VAL$(Zero(Fdef,Pdef))&" S;ENTO"! Set elect, delay of curre nt f & p 9110 GOTO Parameters! Return to parameters menu 9120! --- —---------------------------------- 9130! 9140 Begin:! Begin measurement sequence (exit menu subroutine) 9150 OFF KEY! Deactivate softkeys 9160 CLEAR SCREEN 9170 PRINT "ENTER 'Y' IF YOU WANT COHERENT-ON-RECEIVE MEASUREMENTS" 9180 INPUT Coh$ 9190 CLEAR SCREEN 9200 IF Coh$="Y" OR Coh$="y" THEN 9210 CALL Cohon recv 9220 END IF 9230! --- —--------------------------------------------- 9240! 9250 Sub end: 9260 DEALLOCATE Measflagold(*)! Make memory used for these arrays 9270 DEALLOCATE Cal_flag old(*)! available for general use. 9280 SUBEND! Return to main program 9290!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 9300 SUB Filesrch(Filename$,Drive$,INTEGER Flag) 9310! 9320! This subroutine gets a list of all files on a disc and 9330! checks to see if a given filename already exists. If it 9340! does, then Flag is set. 9350! 9360!***** *********** *** * 9370!VARIABLES USED (* denotes subroutine argument) * 9380!********************************************************************* 9390!*Drive$ Char Specifies disc drive to search 9400! Dum$(20)[80] Char Dummy workspace for CAT 9410!*Filename$ Char Name of file to seek 9420!*Flag Intg Number of files found 9430!********************************************************************* 9440 9450 9460 9470 9480 9490 9500 9510 9520 9530 9540 9550 9560 9570 9580 9590 9600 9610 9620 9630 9640 9650 9660 9670 9680 9690 9700 9710 9720 9730 9740 9750 9760 9770 9780 9790 9800 9810 9820 9830 9840 9850 9860 9870 9880 9890 9900 9910 9920 9930 9940 9950 9960 9970 9980 9990 10000 10010 10020 10030 10040 10050 10060 10070 DIM Dum$(20) [80] CAT DriveS TO DumS(*);SELECT Filename$,NO HEADER,COUNT Flag IF Flag>l THEN...there are two files with name Filename$ on this disc, which!should be impossible. PRINT "AAACK! THHHPT! DUPLICATE FILES!" PAUSE! Wait for user to decide how to get out of this mess. END IF SUBEND!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEF FNDb(Number)! This functions converts a number to "decibels". Db=10*LGT (Number) RETURN Db FNEND! +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SUB Fixerror!This is the error correction (hopefully) routine. Certain errors,!such as a disc full error, can be fixed without stopping the program.!We have tried to anticipate such errors and include instructions!to the user to make recovery possible. Fatal errors are listed on!the computer screen.!! VARIABLES USED (* denotes subroutine argument) * *!* *** *******************************************************************!ErrfileS[80] Char Name of current file is stored here to be! used in error messages in Fix error routine I ************************************************************************ COM /Errors/ Msi$,Err file$ SELECT ERRN! Select from the following remedies, according to error # CASE 56! File not found error PRINTER IS CRT! Direct output to screen PRINT "File "&Err fileS&" has not been found in the directory: ";Msi$ PRINT "Please check the disc, then <CONTINUE>." PAUSE! Wait for user to press <CONTINUE> CASE 64! Disc full error PRINTER IS CRT! Direct output to screen PRINT "No room for file "&Err fileS&" on disc." PRINT "Please insert another disc, then <CONTINUE>." PAUSE! Wait for user to press <CONTINUE> CASE 80! Disc changed or not in drive error PRINTER IS CRT! Direct output to screen PRINT "File "&Err file$&" has not been found." PRINT "Disc changed or not in drive." PRINT "Please insert the disc, then <CONTINUE>." PAUSE! Wait for user to press <CONTINUE> CASE 83! Write-protected disc error PRINTER IS CRT! Direct output to screen PRINT "Cannot write file "&Err file$&"." PRINT "Disc is write-protected." PRINT "Disable write-protection tab, then <CONTINUE>." PAUSE! Wait for user to press <CONTINUE> CASE 85! Disc not initialized error PRINTER IS CRT! Direct output to screen PRINT "Cannot write file "&Err file$&"." PRINT "Disc has not been initialized." PRINT "Initialize disc, then <CONTINUE>." PAUSE! Wait for user to press <CONTINUE> CASE ELSE! All other errors PRINTER IS CRT! Direct output to screen! Print error code on screen

:::::::::::::::::!:i: iiii............. 10080 PRINT "ERROR ";ERRN 10090! Print error description on screen 10100 PRINT ERRMS 10110! The program will try to continue if the user presses <CONTINUE>. 10120! If the error has not been fixed, the error messge will recur. 10130 PAUSE 10140 END SELECT 10150 CLEAR ERROR 10160 CLEAR SCREEN 10170 SUBEND 10180!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 10190 DEF FNPathname$(Filein$,Dirin$) 10200 OPTION BASE 1 10210 INTEGER Char loc 10220 DIM Here$[80],Vol$[20],File$[14],Dir$ [80],Heredir$80Herevol$[80 10230 LET Dir$=TRIM$(Dirin$) 10240 LET File$=TRIM$(Filein$) 10250 LOOP 10260 LET Charloc=POS(Dir$,"\")! Fix stupid DOS directory divider 10270 EXIT IF NOT Char loc 10280 LET Dir$[Char loc,Char loc]="/"! 10290 END LOOP 10300 10310! set volume, and raw dir$ 10320 LET Charloc=POS(Dir$, ":) 10330 IF Char loc THEN 10340 LET Vol$=Dir$[Char loc] 10350 LET Dir$=Dir$[1,Charloc-1] 10360 ELSE 10370 LET Here$=SYSTEM$("MSI" ) 10380 LOOP 10390 LET Charloc=POS(Here$,"\")! Fix DOS directory divider 10400 EXIT IF NOT Char _oc 10410 LET Here$[Char loc,Char loc]="/"! 10420 END LOOP 10430 LET Herevol$=Here$[POS(Here$, ":") 10440 LET Heredir$=Here$[1,POS(Here$,":")-1] 10450 LET Vol$=Herevol$ 10460 END IF 10470 10480! filter Dir$ to standard form 10490 IF LEN(Dir$) THEN 10500 IF DirS[LEN(Dir$)]<>'>"/ THEN LET Dir$=DirS&"/"! Append divider 10510 IF Dir$[1,2]=".." THEN 10520 ALLOCATE Left$[LEN(Heredir$)]! for../somedir 10530 LET Left$=REV$(Heredir$)! find full 10540 LET Dir$=REV$(Left$[POS(Left$,"/")])&"/"&Dir$! pathname 10550 DEALLOCATE Left$! 10560 END IF 10570 IF Dir$[1,1]="." THEN LET Dir$=Heredir$&"/"&Dir$! for./somedir... 10580 IF Dir$[1,1]<>"/" THEN 10590 LET Dir$="/"&Dir$! start at root, 10600 IF HerevolS=Vol$ THEN LET Dir$=Heredir$&Dir$! whatever root beedit 10610 END IF 10620 LOOP 10630 LET Charloc=POS(Dir$,"/../")! Filter out internal 10640 EXIT IF NOT Char loc! references to 10650 ALLOCATE Left$ Char loc]! parent directory 10660 LET Left$=REV$(Dir$[l,Char loc-1])! 10670 LET Dir$=REV$(Left$[POS(LeftS,"/")])&Dir$[Char loc+3] 10680 DEALLOCATE Left! 10690 END LOOP 10700 LOOP 10710 LET Char-loc=POS(Dir$,"/./")! Filter out internal cablem.... 10720 10730 10740 10750 10760 10770 10780 10790 10800 10810 10820 10830 10840 10850 10860 10870 10880 10890 10900 10910 10920 10930 10940 10950 10960 10970 10980 10990 11000 11010 11020 11030 11040 11050 11060 11070 11080 11090 11100 11110 11120 11130 11140 11150 11160 11170 11180 11190 11200 11210 11220 11230 )250 11240 11250 11260 11270 11280 11290 11300 11310 11320 11330 11340 11350 w F FNE! — EXIT IF NOT Char ioc LET Dir$[Charloc]=Dir$[Char loc+2] END LOOP LOOP LET Char loc=POS(Dir$, "//") EXIT IF NOT Char loc LET Dir$[Charloc]=Dir$[Charloc+l] END LOOP END IF! references to! current directory! Filter out double! directory dividers! Filter Filename [F POS(Vol$,":DOS") THEN LET DirS=UPC$(Dir$)! LET FileS=UPC$(File$)! DOS recognizes only upper case IF LEN(File$)>8 AND NOT POS(File$,".") THEN! if filename is too LET File$=File$[1,8]&"."&File$[9]! long and no extension, END IF! insert a period ELSE! if not a DOS directory... LET Char_loc=POS(File$, ".")! no periods allowed in filename IF Charloc THEN LET File$=File$[1,Char loc-l]&File$[Char loc+l]:ND IF lETURN Dir$&FileS&Vol$ END! Pathname$ 10 DEF FNViper ASSIGN @Dos TO 19;RETURN Dosgone IF NOT Dosgone THEN ASSIGN @Dos TO * RETURN NOT Dosgone FNEND t++++++++++++++++++ +++++++++++++t+++++++++++++++++++++++++++++++++++++++! SUB Handshake!+++++++++++++++++++++++++++++++++++++++++++++++++++++++!This is the routine which establishes communication!with the polarization computer. It also initializes the!serial port. LET Serport=9 CONTROL Ser port,0;1!Resets the RS-232-C interface CONTROL Ser_port,l;0!Disables RS232 interrupt capability CONTROL Ser port, 3; 9600 CONTROL Serport,4;3!Parity off,l stop bit,8 bits data CONTROL Serport,5;1!Set DTR line active CONTROL Ser-port,6;46!Place handshake value in REG.!i.e. REG. is the serial port in STATUS Ser port,6;Check!Look at character in REG. DISP Check,"Waiting for confirmation from polarization control..." IF Check<>46 THEN 11200!Wait until handshake completed CONTROL Ser port,6;46 CLEAR SCREEN!Delete the DISP prompt!Serial communication is now established SUBEND! +++++++++++++++++++++++++++++++++++++++++++++++++++++++++! SUB Coh on recv COM /Freq data/ Freq$(*),Freqcent (*),Freqspan(*) COM /Paths/ @Nwa,@Nwadata,Hp8510,Hp8753 COM /Poldata/ Pol$(*),Numer$(*)

I ~.~.~.s~.~.v.~.+=~.~z.s.s~.rss.~;.tS~5'S ~~""".5~ "~'~'~ ~" " ~~~~~"~'~'~~' ~~..~.~~~~~~~~....~~.~~--.~.~~5'~=~=~'.==~ =;. ~...~ :~::=,;;::~:~:~:::~~~r~I~? """ fil:' '' ' W ~~~~~~~ 2; .~~~~~ ~~ ~~~ss~t ~~~ ' ='~'~ ~.~.. "'.... ~~~~~~~~~~~~~~~~~~~'~'~'~:~~'~'~'~'~:~f ~.~. ~~~I~ii'~'i:~'~'~'~1+5~. ~~.s~ " ".z ..s~ E%5: ~~ ~~ ~' rr —~ """ ~~~~~~ "' a:::::::::;;lucrS.:r::~, ""' '' """""""" " "` ""'"'"""'" """'""'""""""""' ' " ' ' ' " ' ' ' ' ' ' '....:-.......~~ —r.s~~ " " "" """""""""" " w w w w w...............:: -Icable&:-mmw 11360 COM /Trans_pol/ Tpoi$ *) 11370 COM /Incoh eled/ Polz(*) 11380 COM /Constants/ Vel,Zero(*),Far field(*) 11390 COM /Labels/ Target$,Version$,ModeS,Out_type$,Debug$ 11400 COM /Beamdata/ Angle,Angle$,Bin rng(*),Beam(*) 11410 COM /Flags/ INTEGER Cal flag(*),Meas flag(*),Combinations,Fdef,Pdef 11420 COM /Errors/ Msi$,Err file$ 11430 COM /N data/ INTEGER Npts,Ntrace 11440 COM /Gatedata/ Gate cent,Gatespan,INTEGER Average factor,Igate 11450 COM /Com4/ INTEGER Rotation state,REAL Inc angle,Current angle,Start angle,Stopa ngle,Old home angle,INTEGER Sets_per pos 11460 COM /Status/ INTEGER Sc,Connectflg,E flg,Debugflg,Response$S80] 11470 11480 COM /Storepath/ @Cohl,@Coh2,@Coh4 11490 COM /Traceno/ INTEGER Insamples,In trace 11500 INTEGER I,Irotate 11510 11520 PRINT "ENTER THE NUMBER OF SAMPLES TO BE TAKEN" 11530 INPUT In samples 11540 CLEAR SCREEN 11550 11560 ALLOCATE COMPLEX Pol_store(1:4,1:1l),Targetdata(In samples,4,11) 11570! PRINT "ENTER THE NUMBER OF 'TRACES' /SAMPLE/POLARIZATION TO BE TAKEN" 11580! PUT In trace 11590 In trace=l 11600 11610 IF Hp8510 THEN OUTPUT @Nwa;"FREQ;" 11620 IF Hp8753 THEN OUTPUT @Nwa;"TIMDTRANOFF;" 11630 11640 OUTPUT @Nwa; "COUCON;CHOPAB;DUACON;" 11650 11660 CLEAR SCREEN 11670 11680 OUTPUT @Nwa;"CHAN1; TIMDTRANON; LOGM;" 11690 OUTPUT @Nwa;"CHAN2; TIMDTRANON; LOGM;" 11700 BEEP 11710 PRINT TABXY(1,10);"Press CONTINUE when ready..... " 11720 PAUSE 11730 IF FNAsk("Set gates?") THEN 11740 Igate=l 11750 Setgates 11760 ELSE 11770 Igate=0 11780 END IF 11790 OUTPUT @Nwa;"CHANl;TIMDTRANOFF;POLA;GATEOFF;"! 11800 OUTPUT @Nwa;"CHAN2;TIMDTRANOFF;POLA;GATEOFF;"! 11810 IF FNAsk("Rotate target?") THEN 11820 Irotate=1 11830 ELSE 11840 Irotate=0 11850 END IF 11860 11870 FOR Ii=l TO Insamples 11880 PRINT "THE REMAINING SAMPLE NUMBER IS ",In samples-Ii 11890 11900 IF Irotate=l THEN 11910 IF Ii=l THEN 11920 Rotationstate=-l 11930 ELSE 11940 Rotation state=2 11950 END IF 11960 PRINT TABXY(1,4);"Current angle is";Currentangle;" degrees." 11970 Rotate target 11980 ELSE 11990 12000 12010 12020 12030 12040 12050 12060 12070 12080 12090 12100 12110 12120 12130 12140 12150 12160 12170 12180 12190 12200 12210 12220 1 2230 12240 12250 12260 12270 12280 12290 12300 12310 12320 12330 12340! 12350 12360 12370 12380 12390 12400 12410 12420 12430 12440 12450 12460 12470 12480 12490 12500 12510 12520 12530 12540 12550 12560 12570 12580 12590 12600 12610 12620 END IF Clearcrt(3,16) PRINT TABXY(1,1);"Collecting data.... FOR I=1 TO 4 IF Meas flag(1,I)=0 THEN Nextfreq2 IF I=1 OR 1=2 OR I-4 THEN IF Ii=l OR F counter>l THEN CALL Cohfreq (I) END IF IF Igate=l THEN OUTPUT @Nwa;"CHAN1;GATECENT";VAL$(Gate cent);"S;" OUTPUT @Nwa;"CHAN2;GATECENT";VAL$(Gate cent);"S;" OUTPUT @Nwa;"CHAN; GATESPAN";VAL$ (Gate_span);"S;" OUTPUT @Nwa;"CHAN2;GATESPAN";VAL$ (Gate_span); "S;" OUTPUT @Nwa;"CHAN1;GATEON; CHAN2;GATEON;" ELSE END IF CALL Dataaquiz(I,Pol store(*)) END IF Next freq2: NEXT I FOR Np=l TO 4 FOR Nd=1 TO 11 Target data (Ii,Np,Nd) =Polstore (Np,Nd) NEXT Nd NEXT Np NEXT Ii Storefile(Target data(*)) DEALLOCATE Target data(*),Pol store(*) OUTPUT @Nwa; "COUCOFF;ALTAB;DUACOFF;" OUTPUT @Nwa;"OPC?;CHAN1" ENTER @Nwa;Dummno PRINT "END OF SAMPLES" IF Meas flag(1,l)=l THEN ASSIGN @Cohl TO * IF Meas flag(l,2)=1 THEN ASSIGN @Coh2 TO * IF Meas flag(1,4)=l THEN ASSIGN @Coh4 TO * PRINT "END OF MEASUREMENTS" OUTPUT @Nwa;"TIMDTRANON;LOGM;CONT;GATEOFF;" SUBEND! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++! SUB Datestring(Briefdate$,Realtime) This subroutine converts the timedate as produced by the computer!to a 10-digit number YYMMDDhhmm used for various purposes. Realtime is the time at which a measurement was started, expressed in HP! format, which is seconds since midnight, Mar. 1, 1900, or something like that.!!*************************************************************************! VARIABLES USED (* denotes subroutine argument) *!**** ***** * ************** ********************************************!*Brief date$ Char 10-character string of form YYMMDDhhmm! Day$ Char Day in character format ("01"... "31") Month Intg Month (1-January, etc.)! Month$ Char Month in character format ("01"=Jan, etc.)

12630n 12640 12650 12660 12670 12680 12690 year 12700 12710 12720 12730 12740 Realdate $ Char Date in format "!DD MiM YYYY"!*Realtime Real Time/date in HP format!Realtime$ Char Time in format "15:37"! **************************************************************************** INTEGER Month Realdate$=DATE$(Realtime)! Realdate$ looks like "25 Dec 1989" BriefdateS=Realdate$[10,11]! Peel of the YY from the last two digits of the 13260 IF Ifreq=2 THEN B=NUM("W") 13270 IF Ifreq=4 THEN B=NUM("0") 13280 CONTROL 9,3;9600 13290 13300 13310 13320 13330 13340 13350 13360 13370 13380! Select the proper case according to the month portion of Realdate$ SELECT Realdate$[4,6] CASE "Jan" Month=1 CASE "Feb" 12750 Month=2 12760 CASE "Mar" 12770 Month=3 12780 CASE "Apr" 12/90 Month=4 12800 CASE "May" 12810 Month=5 12820 CASE "Jun" 12830 Month=6 12840 CASE "Jul" 12850 Month=7 12860 CASE "Aug" 12870 Month=8 12880 CASE "Sep" 12890 Month=9 12900 CASE "Oct" 12910 Month=10 12920 CASE "Nov" 12930 Month=11 12940 CASE "Dec" 12950 Month=12 12960 END SELECT 12970! Convert Month (integer) to character string Month$ 12980 Month$=VAL$(Month) 12990! Pad MonthS with a leading zero if necessary to make length=2 — > MM 13000 i' LEN(Month) =l THEN MonthS="0"&Month$ 13010! Peel off DD portion of RealdateS and make into minimum length string 13020 Day$=VAL$(VAL(RealdateS [1,2])) 13030! Pad DayS with a leading zero if necessary to make length=2 — > DD 13040 IF LEN(Day$)=1 THEN DayS="0"&Day$ 13050! Now Brief date$ has format YYMMDD 13060 Briefdate$=BriefdateS&Month$&DayS 13070! RealtimeS looks like "15:37" 13080 Realtime$=TIME$ (Realtime) 13090! Add time to Brief date$ to yield YYMMDDhhmm 13100 Briefdate$=Brief dateS&RealtimeS[1,2]&Realtime$[4,5] 13110 SUBEND 13120! 13130!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13140 13150 SUB Coh freq(INTEGER Ifreq) 13160!***************************************************************** 13170 13180 COM /Paths/ @Nwa,@Nwa data,Hp8510,Hp8753 13190 COM /Freq_data/ Freq$(*),Freq_cent(*),Freq_span(*) 13200! DISP "Set to transmit "&Freq$(Ifreq)&" GHz <CONTINUE>" 13210! PAUSE! Wait for user to hit <CONTINUE> 13220! DISP "Working"! Let user know he has.hit <CONTINUE> 13230! 13240! This section is for auto control of frequency 13250 IF Ifreq=1 THEN B=NUM("K") 13390 13400 13410 13420 13430 13440 13450 13460 13470 13480 13490 13500 13510 13520 13530 13540 13550 13560 13570 13580 13590 13600 13610 13620 13630 13640 13650 13660 13670 13680 13690 13700 13710 13720 13730 13740 13750 13760 13770 13780 13790 13800 13810 13820 13830 13840 13850 13860 13870 13880 13890 STATUS 9,6;Prev! Save current value of REG. CONTROL 9,6;B! Puts desired command in REG. STATUS 9,6;Code! Receive code from FREQ ctrl IF Code=Prev THEN 13310! Only accept a new command IF Code<>B THEN STOP Code$=CHRS(Code)! Turn value into character Prev=Code! Update storage of past code CONTROL 9,6;63! Place request for confirm. in REG. STATUS 9,6;Check! Reads REG. for confirm. char.!ASCII 46 is "." and 33 is "!" IF Check<>46 AND Check<>33 AND Check<>NUM("m") THEN 13370 IF Check=33 THEN DISP "Error in communication" IF Check=NUM("m") THEN DISP "Manual Pol. control restored" IF Check=33 THEN STOP! DAN.2 SUBEND ----------------------------------------------------------------- SUB Setgates COM /Paths/ @Nwa,@Nwa data,Hp8510,Hp8753 COM /Gatedata/ Gatecent,Gatespan,INTEGER Average_factor,Igate OUTPUT @Nwa;"CHAN1;GATEOFF;TIMDTRANON;LOGM;" OUTPUT @Nwa;"CHAN2;GATEOFF;TIMDTRANON;LOGM;" OUTPUT @Nwa;"CHAN1;GATECENT 150 NS;WAIT;" OUTPUT @Nwa;"CHAN1;KEY41; KEY59; KEY58; KEY59;" LOCAL @Nwa DISP "Adjust gate center to suit, and press CONTINUE." PAUSE DISP i REMOTE @Nwa OUTPUT @Nwa;"OUTPACTI;" ENTER @Nwa;Gate cent OUTPUT @Nwa;"ENTO;" OUTPUT @Nwa;"GATESPAN 10 NS" OUTPUT @Nwa;"CHANl;KEY41; KEY59; KEY58; KEY4;" LOCAL @Nwa DISP "Adjust gate span to suit, and press CONTINUE." PAUSE DISP REMOTE @Nwa Clear crt OUTPUT @Nwa;"OUTPACTI;" ENTER @Nwa;Gate span OUTPUT @Nwa; "ENTO;" SUBEND I ********** ************************************************************** SUB Data aquiz (INTEGER Ifreq,COMPLEX Pol_store(*))!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ COM /Paths/ @Nwa,@Nwa data,Hp8510,Hp8753 COM /Pol data/ Pol$(*),Numer$(*) COM /Trans pol/ Tpol$(*) COM /Incoh eled/ Polz(*) COM /Labels/ Target$,Version$,ModeS,Out_type$,Debug$ COM /Flags/ INTEGER Calflag(*),Meas_flag(*),Combinations,Fdef,Pdef COM /Ndata/ INTEGER Npts,Ntrace! COM /Storepath/ @Cohl,@Coh2,@Coh4 COM /Traceno/ INTEGER Insamples,In trace

lw w w w w 13900 13910 13920 13930 13940 13950 13960 13970 13980 13990 14000 14010 14020 14030 14040 14050 14060 14070 14080 14090 14100 14110 14120 14130 14140 14150 14160 14170 14180 14190 14200 14210 14220 14230 14240 14250 14260 14270 14280 14290 14300 14310 14320 14330 14340 14350 14360 14370 14380 14390 14400 14410 14420 14430 14440 14450 14460 14470 14480 14490 14500 14510 14520 14530 ALLOCATE COMPLEX Bin-arry (:Npts) ALLOCATE COMPLEX Poldata(1:4,1:Npts) INTEGER Jj,No_pol,Preamble,Bytes,Counter,Nskip,Nc,Np,Nstore IF Ifreq=l OR Ifreq=2 THEN Nopol=6 IF Ifreq=4 THEN No pol=4! FOR THE 215 GHz RADAR: Jj=l == VV, Jj=2 == HH Jj=4 == HV! Jj=3 == VH Counter=0 FOR Jj=l TO 3 STEP 2 CALL Trans polset (Jj) IF Hp8753 THEN OUTPUT @Nwa;"SING;OUTPIDEN;" ENTER @Nwa;Dumm no$ IF (Ifreq=l) OR (Ifreq=2) THEN FOR Jjj=l TO 2 Counter=Counter+l IF Jjj=l THEN OUTPUT @Nwa;"OPC?;CHAN1;" IF Jjj=2 THEN OUTPUT @Nwa;"OPC?;CHAN2;" ENTER @Nwa;Dumm no CALL Haveform3(Binarry(*),Preamble,Bytes) MAT Pol_data(Counter,1:Npts)= Bin arry NEXT Jjj END IF NEXT Jj Nskip=(Npts-1)/10 FOR Nc=l TO Counter FOR Np=l TO Npts STEP Nskip Nstore=INT (Np/Nskip)+1 Polstore(Nc,Nstore)=Poildata(Nc,Np) NEXT Np NEXT Nc! DEALLOCATE Bin arry(*),Poldata (*) SUBEND!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SUB Trans polset (INTEGER Ipol)!This subroutine prompts the user to set transmit polarization for the!incoherent measurements for certain systems.! *********************************************************************** Variables used(* denotes subroutine arguement)! *********************************************************************** @Nwa Addr Path used for Hp8510 I/O! *Ipol Intg Transmitted polarization (1=V, 2=H, 3=45L,! 4=135L, 5=LHC, 6=RHC )!Tpol$(1:6)[4] Char Labels for the six transmitted polarizations. cablej nmmw::::::::.........::.:: 14540 IF Ipol=3 THEN B=NUM("N") 14550 IF Ipol=4 THEN B=NUM("L") 14560 IF Ipol=5 THEN B=NUM("O") 14570 IF Ipol=6 THEN B=NUM("R") 14580 CONTROL 9,3;9600 14590 STATUS 9,6;Prev! Save current value of REG. 14600 CONTROL 9,6;B! Puts desired command in REG. 14610 STATUS 9,6;Code! Receive code from pol ctrl 14620 IF Code=Prev THEN 14610! Only accept a new command 14630 IF Code<>B THEN STOP 14640 Code$=CHR$(Code)! Turn value into character 14650 Prev=Code! Update storage of past code 14660 CONTROL 9,6;63 i Place request for confirm. in REG. 14670 STATUS 9,6;Check! Reads REG. for confirm. char. 14680!ASCII 46 is "." and 33 is "!" 14690 IF Check<>46 AND Check<>33 AND Check<>NUM("m") THEN 14670 14700 IF Check=33 THEN DISP "Error in communication" 14710 IF Check=NUM("m") THEN DISP "Manual Pol. control restored" 14720 IF Check=33 THEN STOP 14730 SUBEND 14740!! 14750!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 14760 14770 SUB Haveform3(COMPLEX Binarry(*),INTEGER Preamble,Bytes) 14780 14790!++++++++++++++++++++++++++++++++++++++++++++++++++++++ 14800 COM /Paths/ @Nwa,@Nwa data,Hp8510,Hp8753 14810! INTEGER PREAMBLE,BYTES 14820 Preamble=9025 14830 OUTPUT @Nwa;"FORM3;OUTPFORM;" 14840 ENTER @Nwadata;Preamble,Bytes,Binarry(*) 14850 SUBEND 14860 14870! 14880!+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 14890 14900 14910 SUB Rotate target 14920 OPTION BASE 1 14930 COM /Com4/ INTEGER Rotation_state,REAL Inc_angle,Current_angle,Start_angle,Stop-ang le,Old homeangle,INTEGER Setsper pos 14940 COM /Status/ INTEGER Sc,Connect flg,Eflg,Debugflg,Response$[80] 14950 INTEGER Fsflag,Ss flag,Speed,Imc-status,Confirm answer 14960 14970 14980 Confirm answer=l 14990 Imc status=0 15000 Debugflg=0 15010 Fsflag=-1 15020 Ssflag=-l 15030 Clearcrt(3,10) 15040 15050 15060 SELECT Rotationstate 15070 CASE =-1 15080! IF FNAsk("Do you wish to use the rotator?") THEN 15090 Connect flg=0 15100 GOSUB Init imc 15110 GOSUB Initgraph pos 15120 GOSUB Manual loop 15130 PRINT "Set Auto Mode Please..... 15140! ELSE 15150! Rotation state=0 15160! GCLEAR COM /Paths/ @Nwa,@Nwa-data,Hp8510,Hp8753 COM /Transpol/ Tpol$(*)! This section is for auto control of polarization IF Ipol=l THEN B=NUM("Z") IF Ipol=2 THEN B=NUM("F")

v w w w w..................................................................................................................... -cable _mmw ~: 6-~ ItV " 15170 15180 15190 15200 15210 15220 15230 15240 15250 15260 15270 15280 15290 15300 15310 15320 15330 15340 15350 15360 15370 15380 15390 15400 15410 15420 15430 15440 15450 15460 15470 15480 15490 15500 15510 15520 15530 15540 15550 15560 15570 15580 15590 15600 15610 15620 15630 15640 15650 15660 15670 15680 15690 15700 15710 15720 15730 15740 15750 15760 15770 15780 15790 15800 I GRAPHICS OFF END IF CASE =0 SUBEXIT CASE =1 GOSUB Check_position GOSUB Print angles GOSUB Manual-loop CASE =2 GOSUB Check position GOSUB Auto CASE =3 GOSUB Check_position GOSUB Manual loop GOSUB Auto CASE =4 GOSUB Check position GOSUB Go-home CASE =5 GOSUB Check_position Rotation state=l! Switch END SELECT SUBEXIT 15810 RETURN 15820! 15830! 15840 Manual 15850 LOOt 15860 O0 15870 Ot 15880 01 15890 O0 15900 O0 15910 ON 15920 ON 15930 O0 15940 Ob 15950 O0 -loop:! N KEY 0 N KEY 1 N KEY 5 N KEY 6 N KEY 2 N KEY 3 N KEY 4 N KEY 7 N KEY 8 N KEY 9 Main activation loop. LABEL LABEL LABEL LABEL LABEL LABEL LABEL LABEL LABEL LABEL "FAST SLEW CW ",FNTrap_level GOSUB Fs_cw "FAST SLEW CCW ",FNTrap level GOSUB Fs_ccw "SLOW SLEW CW ",FNTrap_level GOSUB Ss_cw "SLOW SLEW CCW ",FNTrap_level GOSUB Ss ccw "MANUAL CONTROL",FNTrap_level GOSUB Manual "TARGET GO HOME",FNTrap level GOSUB Go home "STOP ROTATION ",FNTrap-level GOSUB Stop_turn "SET AUTO MODE ",FNTrap_level GOSUB Set-auto "SET TARGET HOME",FNTrap_level GOSUB Set_position "RETURN ",FNTrap-level GOTO Quit to manual mode. Init imc:! Initialize the IMC unit. GOSUB Check 4 fault PRINT TABXY(1,3);"INITIALIZING IMC" Clear-crt (4, 15) Comm("4WB")! Set warm boot (clear flags). PRINT TABXY(1,4);"WB" Comm("4EB")! Clear IMC buffer. PRINT TABXY(1,4);"EB" Encoder ratio=4096! 32000 Comm("4ER"&VAL$(Encoder ratio))! Load encoder ratio. PRINT TABXY(1,4);"ER"&VAL$ (Encoder ratio) IF FNAsk("Do you wish to set home at the current position?") THEN Comm("4RS",Confirm answer) ENTER Response$;Old home_angle Old-home-angle=Old_home_angle/93.3 Comm("4PIZ0")! Set IMC at 0. PRINT TABXY (1,4); "PIZ"&RPT$ (." ",LEN(VAL$(Encoder-ratio))) Comm("4PIA0")! Set IMC at 0. PRINT TABXY (1,4);"PIA" Current angle=0 END IF Comm("4SP100")! Set speed to (50pps). PRINT TABXY(1,4);"SP "&RPT$(" ",LEN(VAL$(Encoder ratio))) Comm("4AC500")! Set acceleration (500pps^2). PRINT TABXY(1,4);"AC" Comm("4DC500")! Set deceleration (500pps^2). PRINT TABXY(1,4);"DC" GOSUB Check_position Rotation-state=l Clear-crt! PRINT TABXY(1,4);"DONE INITIALIZING IMC" PRINT TABXY(1,5);"Turntable currently in manual mode." PRINT TABXY(1,6) Print-angles:! PRINT TABXY(1,7);"Current angle is: ";Current_angle;" degrees." PRINT TABXY(1,8);"Starting angle is: ";Start_angle;" degrees." PRINT TABXY(1,9);"Stopping angle is: ";Stop angle;" degrees." 15960 GOSUB Check_position 15970 END LOOP 15980! 15990 ----------------------------------------------------------------- 16000! 16010 Fs cw:! Fast slew clockwise. 16020 IF Fs_flag<0 THEN 16030 Comm("4SP500") 16040 Comm("4SFN") 16050 Fsflag=-l*Fsflag 16060 Clear_crt (3,15) 16070 PRINT TABXY(1,15);"ROTATING CW (FAST)" 16080 ELSE 16090 Comm ("4ST") 16100 Fsflag=-l*Fsflag 16110 Clear_crt (3, 15) 16120 PRINT TABXY(1,15);"ROTATION STOPPED" 16130 GOSUB Checkposition 16140 END IF 16150 RETURN 16160! 16170! --- —------------------------------------ 16180! 16190 Fs ccw:! Fast slew counterclockwise. 16200 IF Fs flag<0 THEN 16210 Comm("4ST") 16220 Cormn("4SP500") 16230 Comm( "4SRN" ) 16240 Fsflag=-l*Fsflag 16250 Clear_crt (3, 10) 16260 PRINT TABXY(1,15);"ROTATING CCW (FAST)" 16270 ELSE 16280 Comm("4ST") 16290 Fs_flag=-l*Fs_flag 16300 Clear crt(3,15) 16310 PRINT TABXY(1,15);"ROTATION STOPPED" 16320 GOSUB Check-position 16330 END IF 16340 RETURN 16350! 16360 ------------------------------------------------------------------------- 16370! 16380 Ss cw:! Slow slew clockwise. 16390 IF Ss_flag<0 THEN 16400 Comm("4ST") 16410 INPUT "Speed?",Sp 16420 Comm ("4SP"&VAL$ (INT (Sp)) ) 16430 Comm (" 4 SFN" ) 16440 Ss flag=-l*Ss-flag

lw 16450 16460 16470 16480 16490 16500 16510 16520 16530 16540 16550 16560 16570 16580 16590 16600 16610 16620 16630 16640 16650 Clear crt (3,15) PRINT TABXY(1,15);"ROTATING CW (SLOW)" ELSE Comm("4ST") Ssflag=-l*Ss flag Clearcrt(3,15) PRINT TABXY(1,15);"ROTATION STOPPED" GOSUB Checkposition END IF RETURN -Ss Ss 17090 17100 17110 17120 RETURN 17130 17140 -- 17150 17160 Stop_tl 17170 17180 17190 17200 17210 17220 17230 17240 17250 17260 RETURN 17270! 17280! --- — irn:Comm("4-ST") urn: Comrn( " 4ST" ) ccw:! Slow slew counterclockwise. IF Ss flag<0 THEN INPUT "Speed?",Sp Comm ("4SP"&VAL$ (INT (Sp) )) Commi("4SRN") Ss flag=-l*Ss flag Clearcrt(3,15) PRINT TABXY(1,15);"ROTATING CCW (SLOW)" WHILE NOT BIT(Imc status,0) Comm("4RS",Confirm answer) ENTER Response$;Imcstatus WAIT.1 END WHILE Clear crt(3,16) PRINT TABXY(1,15);"ROTATION STOPPED" GOSUB Checkposition Imc status=0:.. -........... -. I................... -:.. -........................ -... -:........... f Clear crt(3,16) PRINT TABXY(1,16);"CURRENT TARGET POSITION IS ";Currentangle;" DEGREES. WAIT 2! Wait for target settling.! Wait for motor to stop. 16660 16670 16680 16690 16700 16710 16720 16730 16740 ELSE Comm ("4 ST") Ss flag=-l*Ss flag Clear crt(3,15) PRINT TABXY(1,15);"ROTATION STOPPED" GOSUB Checkposition END IF RETURN! 16750! ---16760 16770 Manual: 16780 16790 16800 Auto: 16810 16820 16830 16840 16850 16860 16870 16880 16890 16900 16910 16920 16930 16940 16950 16960 16970 16980 16990 17000 17010 17020 17030 17040 17050 17060 17070 17080 INPUT "ANGLE (IN DEGREES)=?",Inc angle INPUT "SPEED? (-100 —500 RECOMMENDED)",Speed Comm("4SP"&VAL$ (Speed)) SELECT Rotation state CASE =4 GOSUB Gohome Rotation state=2 GOTO Auto CASE ELSE Angl2=Incangle*93.3 Angll=INT(Angl2) IF Angl2-Angll>=.5 THEN Angll=Angll+l Current angle=Currentangle+Inc angle Incangle$=VALS (Angll) Comm("4IM"&Inc angleS) Comm ("4RFI") END SELECT Imc status=0 Clear crt(3,7) PRINT TABXY(1,14); "ROTATING TARGET, PLEASE WAIT."! 17290 17300 17310 17320 17330 17340 17350 17360 17370 17380 17390 17400 17410 17420 17430 17440 17450 17460 17470 17480 17490 17500 17510 17520 17530 17540 17550 key)" 17560 17570 17580 17590 17600 17610 17620 17630 17640 17650 17660 17670 17680 17690 17700 Set auto: Comm("4SP500") GOSUB Checkposition Clear crt(3,16) PRINT TABXY(1,3);"Current starting angle: ";Startangle;" degrees" PRINT TABXY(1,4);"Current increment angle: ";Incangle;" degrees" PRINT TABXY(1,5);"Current stopping angle: ";Stop_angle;" degrees" PRINT TABXY(1,6);"Current rotation speed: ";Speed PRINT TABXY(1,7);RPT$(" ",80) PRINT TABXY(1,8);"Rotator positioned at: ";Current angle;" degrees" INPUT "Enter starting angle value (degrees): ",Startangle INPUT "Enter increment angle (degrees): ",Incangle INPUT "Enter stopping angle (degrees): ",Stop_angle INPUT "Enter rotation speed of target (-500 recommended): ",Speed Speed=INT(Speed) Comm ("4SP"&VAL$ (Speed)) IF ABS(Startangle-Currentangle)>.1 THEN PRINT TABXY(1,9);RPT$(" ",80) PRINT TABXY(1,10);"Rotating target to starting angle..." Tempangle=Incangle Inc angle=Startangle-Currentangle GOSUB Auto Inc angle=Tempangle END IF Rotation state=2 Clear crt PRINT TABXY(1,20);"Turntable is in automatic mode. (press the RETURN soft RETURN -- ------------------ --------- -------------------- - -- - -- - - -- - --- - Set position:INPUT "LOCK IN CURRENT TARGET POSITION AS REFERENCE POSITION?",Yn$ IF Yn$="Y" OR Yn$="y" THEN Comm("4RS",Confirm answer) ENTER Response$;Old homeangle Oldhomeangle=Oldhomeangle/93.3 Comm("4PIAO")! Set absolute position to zero. Comm("4PIZ0")! Set incremental postition to zero. Current angle=0 ELSE PRINT "POSITION WAS NOT SET." END IF WHILE NOT BIT(Imc status,0)! Wait for motor to stop. Comm("4RS",Confirm answer) ENTER Response$;Imc status PRINT TABXY (1,15);DVAL$ (Imcstatus, 2) GOSUB Check-position WAIT 1 END WHILE Imcstatus=0

qw W M w w...............~................................................' ""` ' i:.. T~~~~..........................=?.. 17710 17720 17730 17740 17750 17760 17770 17780 17790 17800 17810 17820 17830 17840 17850 17860 17870 17880 17890 17900 17910 17920 17930 17940 17950 17960 17970 17980 17990 18000 18010 18020 18030 18040 18050 18060 18070 18080 18090 18100 18110 18120 18130 18140 18150 18160 18170 18180 18190 18200 18210 18220 18230 18240 18250 18260 i8270 18280 18290 18300 18310 18320 18330 RETURN! --- —-------------------------------------------------------------------- Go home: IF Speed<200 THEN Speed=200 Comm ("4SP"&VAL$ (Speed) ) Comm("4AMO")! Move to zero absolute position. Comm("4RAN")! Initiate movement. Comm("4MW")! Make sure the move is completed. Imc status=0 Clear crt (3,15) PRINT TABXY(1,14);"ROTATING TARGET TO HOME POSITION, PLEASE WAIT." WHILE NOT (BIT(Imc status,0) AND BIT(Imc status,5)) GOSUB Check status PRINT TABXY(1,15);"CURRENT STATUS: ";DVAL$(Imcstatus,2) GOSUB Checkposition WAIT.1 END WHILE Clear crt (3, 16) PRINT TABXY(1,15); "TARGET AT HOME POSITION." GOSUB Check position Imcstatus=0 RETURN! --- —--------------------------------- Checkstatus:! Keep an eye on the Whedco controller status. Comm("4RS",Confirm answer) ENTER Response$;Imcstatus RETURN! --- —--------------------------------------------------------------------:cab >:.....:<< le mm 18340 18350 18360 18370 18380 18390 18400 18410 18420 18430 18440 18450 18460 18470 18480 18490 18500 18510 18520 18530 18540 18550 18560 18570 18580 18590 18600 18610 18620 18630 18640 18650 18660 18670 18680 18690 18700 18710 18720 18730 18740 18750 18760 18770 18780 18790 18800 18810 18820 18830 18840 18850 18860 18870 18880 18890 18900 18910 18920 18930 18940 18950 18960 18970 Checkposition:! Get the current turnstile position in degrees. Comm("4RP", Confirm answer) ENTER ResponseS;Motorposition Current angle=Motor position/93.3 Current angle=Current_angle+Inc angle PRINT TABXY(1,16);"CURRENT TARGET POSITION IS ";Current angle;" DEGREES. GOSUB Drawpositions RETURN! --- —-------------------------------- Check_4 fault:! Check the IMC for a fault condition and correct or notify the user if necessary. Comm ("4FC",Confirm answer) ENTER Response$;FaultS SELECT Fault$ CASE ="Power failure"! Loss of power RETURN CASE ="Force DAC"! Force DAC command was given BEEP PRINT "Force DAC command was given..." DISP "Press CONTINUE to resume..." PAUSE RETURN CASE ="Over-current"! Over-current condition exists. BEEP PRINT "An over-current condition has been detected on the IMC." PRINT PRINT "Cycle the power to the IMC until the OV-CUR LED goes out" w,:~:T7:. DISP "Press CONTINUE to reinitialize the IMC" PAUSE GOSUB Init imc RETURN END SELECT RETURN! --- —-------------------------------------------------------------------- Init graph pos:! Creates a graphical depiction of where the target is. GINIT GCLEAR GRAPHICS ON SHOW 0,100,0,100 PENUP MOVE 90,70 PEN 1! Draw circle POLYGON 12,360,360 PENUP MOVE 90,70! Draw old home orientation. PEN 2 DRAW 90+11*COS(Oldhomeangle),70-11*SIN(Oldhomeangle) PENUP MOVE 90,70! Draw current home orientation. PEN 4 DRAW 90,58 PENUP MOVE 90,70! Draw current target orienation. PEN 3 Xpos=90+11*COS (Current_angle) Ypos=70-11*SIN(Currentangle) DRAW X_pos,Y_pos RETURN! --- — ---------------------------------- Draw positions:! Draws out the angular orienations. MOVE 90,70! Draw old home orientation. PEN 2 DRAW 90-11*SIN(Old_homeangle),70-11*COS(Old_home_angle) PENUP MOVE 90,70 I Draw current home orientation. PEN 4 DRAW 90,58 PENUP DISABLE MOVE 90,70! Draw current target orienation. PEN -3 DRAW Xpos,Ypos MOVE 90,70 PEN 3 X_pos=90-ll*SIN (Current_angle) Ypos=70-ll*COS(Currentangle) DRAW Xpos,Ypos PENUP ENABLE RETURN! --- —-------------------------------------------------------------------- Quit: SUBEXIT SUBEND

v w w w w w 18990!*** 19000 19010 SUB 19020 19030 P 19040 19050 P 19060 19070 19080 19090 U 19100 19110 19120 19130 19140 19150 19160 19170 19180 19190 19200 19210 19220 19230 19240 19250 19260 19270 19280 19290 19300 19310 19320 19330 19340 19350 19360 19370 19380 19390 19400 19410 19420 19430 19440 19450 19460 19470 19480 19490 19500 19510 19520 19530 19540 19550 19560 19570 19580 19590 19600 19610............................ s Comm (C$,( ROGRAM M( URPOSE: IPDATE:........................................................-.............h ~~~~~. ~~~~ ~~ ~............. cable mmw k*******t*~****t***~****t***********t************* ** OPTIONAL INTEGER Confirmanswer) ODULE: Comm Modified version of the ( for direct two way commui IMC stepping motor contre 3.0 Version 3.0 checks to se( is the HP98628A (Datacomr Depending on which card registers are selected. Comm module to be used iication with the WHEDCO oiller. e if the card being used n) or the HP98626A (Serial). is used, the appropriate 19620 19630 19640 19650 19660 19670 19680 19690 19700 19710 19720 19730 19740 19750 19760 STATUS Sc,3;B Connect flg=l END IF After init:! Whiteprint$=CHR$ (136) Crlf$=CHR$ (13) &CHR$ (10) PRINT CHR$(128)&CHR$(136); ASSIGN @Screen TO CRT ASSIGN @Kbd TO KBD ASSIGN @Rx TO BUFFER InS ASSIGN @Tx TO BUFFER Out$ ASSIGN @Uartout TO Sc ASSIGN @Uart in TO Sc Response_flg=0 Response$=""! Confirm speed to user.! Set up the screen.! Reset command acknowledge flag.! Null out response string. OPTION BASE 1 COM /Status/ INTEGER Sc,Connect flg,E_flg,Debugflg,Response$ INTEGER Baud rate,B,Numchars,Responseflg,Indexl DIM Input$[256],TermS[256],InS[256] BUFFER,From_232$[256] DIM Num charsS[6),Num ltrs$[6],OutS[256) BUFFER DIM Whiteprint$[l],Crlf$[2] IF Debug flg THEN PRINT TABXY(1,1);"ENTERING Comm" ON ERROR GOSUB Error IF Connect flg THEN After init Sc=30 ASSIGN @Findit TO Sc;RETURN Outcome IF Outcome=0 THEN ASSIGN @Find it TO * CONTROL Sc,0;1. Reset RS-232 interface. CONTROL Sc,3;1! Async link protocol. CONTROL Sc,0;l! Set Async toggle. CONTROL Sc,8;1+2! Set RTS and DTR lines. CONTROL Sc,16;0! Disable connection timeout. CONTROL Sc,17;0! Disable no activity timeout. CONTROL Sc,18;0! Disable NO CARRIER timeout. CONTROL Sc,19;0! Disable transmit timeout. CONTROL Sc,20;14! TX baud speed = 9600 CONTROL Sc,21;14! RX baud speed = 9600 CONTROL Sc,22;0! No handshake with Whedco. CONTROL Sc,23;0! No hardwired handshake. CONTROL Sc,34;2! 7 bits/character. CONTROL Sc,35;0 1 stop bit. CONTROL Sc,36;1! ODD parity. Connect flg=l ELSE Sc=8 ASSIGN @Find it TO * ASSIGN @Find it TO Sc;RETURN Outcome IF Outcome<>0 THEN PRINT "RS-232 card not installed. Please install and reboot." ASSIGN @Findit TO * STOP END IF ASSIGN @Find it TO * RESET Sc CONTROL Sc,0;l! Reset the RS-232 interface. CONTROL Sc,3;Baud rate! Set the baud rate. CONTROL Sc,4;8+2! UART 8 bits/char. ODD parity. CONTROL Sc,5;3! UART DTR line active. CONTROL Sc, 12;128+32+16 I Disable CD,DSR,CTS 19770 19780 19790 19800 19810 19820 19830 19840 19850 19860 19870 19880 19890 19900 19910 Wait 19920 19930 19940 19950 19960 19970 19980 ENABLE INTR Sc! Enable interrupt on card. TRANSFER @Tx TO @Uart out;CONT! Enable transfer buffers. TRANSFER @Uart in TO @Rx ON INTR Sc,FNTraplevel GOSUB Read_loop! Process card interrupts. IF CS<>"" THEN GOSUB Sendcom! Send command out to controller. ELSE GOTO Quit! If null command, exit quick. END IF for it:WHILE NOT Response flg GOSUB Readloop IF NPAR=2 THEN! Waiting for acknowledgement.! We are waiting for data to be! sent by the Whedco controller. LOOP GOSUB Read loop IF (POS(ResponseS,"*")) THEN ResponseS=Response [POS (Response$, "*"),LEN (Response$ ) ] 19990 Responseflg=l 20000 END IF 20010 EXIT IF ((Responseflg=l) AND (POS(ResponseS,Crlf$))) 20020 END LOOP 20030 ELSE 20040 WHILE NOT ((POS(Response$,"*")) OR (POS(ResponseS,"?") )) 20050 GOSUB Readloop 20060 END WHILE 20070 Indexl=POS (ResponseS, "*") 20080 IF Indexl=0 THEN! Must be a "?" (Whedco command error). 20090! Must be a "?" (Whedco command error). 20100 E flg=l! Notify via error flag. 20110 Response flg=1 20120 ELSE 20130! Normal command interpretation. 20140 Eflg=0 20150 Responseflg=l 20160 END IF 20170 END IF 20180 END WHILE 20190 GOTO Quit 20200 20210 20220 Readloop:! Read in serial data from Whedco. 20230 20240 STATUS @Rx,4;Num_chars! Number of characters to

w w!|wiin..............Z-''2"=:::~:.....,.........~I':::..........:...."'..........~ ~ ~.................. 20250 IF 20260 Nu 20270 EN 20280 Re 20290 RE 20300 20310 20320 Send co 20330 20340 20350 20360 20370! 20380 20390 Quit: 20400 20410 20420 20430 20440 20450 20460 20470 20480 20490 20500 20510 20520! 20530 Error:P 20540 20550 20560 20570 20580 20590 20600 20610 20620 20630 20640 20650 20660 20670 20680 20690 20700 20710! 20720 Other: 20730 20740 20750 20760 20770 Overrun 20780 20790 20800 20810! 20820 Parity: 208 30 20840 20850 20860 20870 Breakl: 20880 Numchars=0 THEN RETURN n chars$="#, "&VAL$ (Numchars)&"A" 4TER @Rx USING Num chars$;From 232$;sponseS=Response$&From_232$ 'TURN.m:Term$=Crlf$[1,1] &C$&Crlf$ Num ltrs$="#,"&VAL$ (LEN(Term$) &"A" OUTPUT @Tx USING Num ltrs$;TermS Term$="" RETURN receive, if 0 try again. Set up the IMAGE for ENTER.! Transfer contents.! Build up dialogue.! Update pointers. OFF ERROR STATUS @Tx,10;Stat STATUS @Rx,4;Num bytes ABORTIO @Uart out ASSIGN @Tx TO * CONTROL @Rx,8;0 STATUS @Rx,10;Stat STATUS @Rx,4;Numbytes ABORTIO @Uart in ASSIGN @Rx TO * DISABLE INTR Sc SUBEXIT RINT "HANDLING Comm ERROR" IF ERRN<>167 THEN Othererror IF Sc=8 THEN! Process the simple card. STATUS Sc,10;Uart error IF BIT (Uart error,1) THEN Overrun IF BIT(Uart error,2) THEN Parity IF BIT(Uart error,4) THEN Breakl IF BIT(Uarterror,3) THEN Framing E flg=l PAUSE RETURN ELSE PRINT ERRMS E flg=l PAUSE RETURN END IF 20890 20900 20910 20920 20930 20940 20950 20960 20970 20980 20990 21000 21010 21020 21030 21040 21050 21060 21070 21080 21090 21100 21110 21120 21130 21140 21150 21160 21170 21180 21190 21200 21210 21220 21230 21240 21250 21260 21270 21280 21290 21300 21310 21320 21330 21340 21350 21360 21370 21380 21390 21400 21410 21420 21430 21440 21450 21460 21470 21480 21490 21500 21510 21520! Framing:PRINT "Framing" E flg=l RETURN Other error:PRINT "Error message: ";ERRMS PAUSE E flg=l SUBEXIT SUBEND! 1 ******************************* DEF FNAsk (Prompt$) OFF KEY DISP PromptS; INPUT "", Yn$ Yn$=UPC$(Yn$[1,1]) SELECT Yn$ CASE ="Y" RETURN 1 CASE =*N",="" RETURN 0 CASE ELSE RETURN 0 END SELECT FNEND! ************************************************************************ SUB Clear crtt SUBEND! ************************************************************************** DEF FNTraplevel RETURN VAL (SYSTEMS ("SYSTEM PRIORITY") )+1 FNEND! ************* ***********************************************************! SUB Clearcrt(OPTIONAL INTEGER Start_line,Num_of_lines) INTEGER I DIM Clear line$(80] Clear line$=" " IF NPAR=0 THEN OUTPUT KBD;CHR$(255)&CHR$(75); ELSE PRINT TABXY(1, Start line);"";RPT$(ClearlineS,Num_of_lines) PRINT TABXY(1, Start line); ""; SUBEXIT END IF SUBEND I ** **********e **)******** **************************************** SUB Store file(COMPLEX Matrix (*))! RETURN PRINT "UART error E flg=l RETURN:PRINT "Overrun" E flg=l RETURN PRINT "Parity" E flg=l RETURN PRINT "Break" E flg=l status: ";Uart error

w w w w w cabile mmw::::.::.::::::.::..:::.::.::.:::.::.::.:::.: ~. 21530 COM /Freqdata/ Freq$(*),Freq cent(*,Freqspan *) 21540 COM /Paths/ @Nwa,@Nwa data,Hp8510,Hp8753 21550 COM /Labels/ Target$,Version$,ModeS,Out type$,Debug$ 21560 COM /Beamdata/ Angle,Angle$,Bin_rng(*),Beam(*) 21570 COM /Flags/ INTEGER Calflag(*),Measflag(*),Combinations,Fdef,Pdef 21580 COM /Errors/ Msi$,Err file$ 21590 21600 COM /Storepath/ @Cohl,@Coh2,@Coh4 21610 COM /Traceno/ INTEGER Insamples,In trace 21620 COM /Ndata/ INTEGER Npts,Ntrace 21630 21640! 21650 INTEGER Recordsperset,T 21660 REAL Bytesper set 21670 DIM SuffixS[2],Dir$[4],Vol$[11] 21680 ALLOCATE COMPLEX Trace(11) 21690 21700 21710 Time=TIMEDATE 21720 CALL Datestring(Meas keepS,Time) 21730 Suffix$="MM" 21740 Meas keep$=Measkeep$[5,10]&SuffixS 21750 ALLOCATE Temp$[80] 21760 ALLOCATE Ssss$[3] 21770 Ssss$=VAL$(In samples) 21780 Temp$=FNPathnameS(MeaskeepS,Msi$) 21790 PRINT TABXY(10,10);"Filename is "&MeaskeepS 21800 21810 DISP "Saving file." 21820 GOSUB Savehpux 21830 DEALLOCATE Trace(*) 21840 SUBEXIT 21850! 21860 21870 Savehpux:! 21880! Save data file by HPUX type. 21890 21900 CREATE Temp, 200000 21910 ASSIGN @Cohl TO Temp$;FOPMAT ON 21920 FOR T=1 TO In samples 21930 FOR P=1 TO 4 21940 MAT Trace= Matrix(T,P,*) 21950 OUTPUT @Cohl;Trace(*) 21960 NEXT P 21970 NEXT T 21980 ASSIGN @Cohl TO * 21990 RETURN 22000! 22010 SUBEND 22020! --- —---------------------------------- --