1000   ! RE-SAVE "C_COMPEN"
1010   !*************************************************
1020   !*
1030   !* FILE       :  C_COMPEN
1040   !* DESCRIPTION:  Capacicitance Compensation Routine
1050   !* AUTHOR     :  Tomohiko Matsui
1060   !* CREATED    :  11/07/1995
1070   !* MODIFIED   :
1080   !* PRODUCT    :  HP E5250A
1090   !* REVISION   :  Rev.A.01.00
1100   !*
1110   !*   (c) Copyright 1995 Hewlett-Packard Co,
1120   !*              All rights reserved.
1130   !*
1140   !*************************************************
1150   !
1160 Ccompen_5250: SUB Ccompen_5250(Freq,L_hptrx,L_usrtrx_h,L_usrtrx_l,L_usrcoax_h,L_usrcoax_l,R_c,R_g,C_c,C_g)
1170      !==================================================
1180      !    Capacitance Compensation Routine
1190      !==================================================
1200      ! Parameter : M_freq       : Measured frequency [Hz]
1210      !           : L_hptrx      : HP Triax Cable Length [m]
1220      !           : L_usrtrx_h   : User Triax Cable Length (High) [m]
1230      !           : L_usrtrx_l   : User Triax Cable Length (Low) [m]
1240      !           : L_usrcoax_h  : User Coax Cable Length (High) [m]
1250      !           : L_usrcoax_l  : User Coax Cable Length (Low) [m]
1260      !           : R_c          : Raw Capacitance Data
1270      !           : R_g          : Raw Conductance Data
1280      !           : C_c          : Compensated Capacitance Data
1290      !           : C_g          : Compensated Conductance Data
1300      !==================================================
1310      !
1320      DIM Coef(4)
1330      DIM Factor(1:10,1:3)
1340      !
1350 Rlc_data:   !
1360      !       R [ohm]       L [H]         C [F]
1370      DATA   74.65E-3,  140.00E-9,   58.44E-12  ! Frame Path 1
1380      DATA   75.41E-3,   90.00E-9,   67.13E-12  ! Frame Path 2
1390      DATA  231.41E-3,  450.00E-9,  178.85E-12  ! Card Path High
1400      DATA  177.56E-3,  390.00E-9,  135.45E-12  ! Card Path Low
1410      DATA  100.70E-3,  400.00E-9,   80.00E-12  ! HP Triax Cable   [/m]
1420      DATA  100.70E-3,  400.00E-9,   80.00E-12  ! User Triax Cbl H [/m]
1430      DATA  100.70E-3,  400.00E-9,   80.00E-12  ! User Triax Cbl L [/m]
1440      DATA  114.00E-3,  544.00E-9,  130.00E-12  ! User Coax Cbl H  [/m]
1450      DATA  114.00E-3,  544.00E-9,  130.00E-12  ! User Coax Cbl L  [/m]
1460      DATA    0.00E-3,    0.00E-9,    1.20E-12  ! Stray Capacitance
1470      !
1480      RESTORE Rlc_data
1490      READ Factor(*)
1500      !
1510      !***** Check Parameter Value *****
1520      Max_freq=1.E+6
1530      Min_freq=1.E+3
1540      !
1550      IF L_hptrx<0. OR L_usrtrx_h<0. OR L_usrtrx_l<0. OR L_usrcoax_h<0. OR L_usrcoax_l<0. THEN 
1560        BEEP 
1570        DISP "Parameter Out of Range"
1580        GOTO Error_end
1590      END IF
1600      !
1610      IF Freq<Min_freq OR Freq>Max_freq THEN 
1620        BEEP 
1630        DISP "Parameter Out of Range"
1640        GOTO Error_end
1650      END IF
1660      !
1670      !***** Adjust Factor Value *****
1680      FOR N=1 TO 3
1690          Factor(5,N)=Factor(5,N)*L_hptrx
1700          Factor(6,N)=Factor(6,N)*L_usrtrx_h
1710          Factor(7,N)=Factor(7,N)*L_usrtrx_l
1720          Factor(8,N)=Factor(8,N)*L_usrcoax_h
1730          Factor(9,N)=Factor(9,N)*L_usrcoax_l
1740      NEXT N
1750      !
1760      !***** Calculate Coef Value *****
1770      Tmp1=2*Factor(1,3)+4*Factor(2,3)+2*Factor(3,3)+2*Factor(4,3)+4*Factor(5,3)+2*Factor(6,3)+2*Factor(7,3)+2*Factor(8,3)+2*Factor(9,3)
1780      Tmp2=2*Factor(2,3)+2*Factor(3,3)+2*Factor(4,3)+4*Factor(5,3)+2*Factor(6,3)+2*Factor(7,3)+2*Factor(8,3)+2*Factor(9,3)
1790      Tmp3=1*Factor(3,3)+2*Factor(5,3)+2*Factor(6,3)+2*Factor(8,3)
1800      Tmp4=1*Factor(4,3)+2*Factor(5,3)+2*Factor(7,3)+2*Factor(9,3)
1810      Tmp5=2*Factor(5,3)+2*Factor(6,3)+2*Factor(7,3)+2*Factor(8,3)+2*Factor(9,3)
1820      Tmp6=1*Factor(6,3)+2*Factor(8,3)
1830      Tmp7=1*Factor(7,3)+2*Factor(9,3)
1840      Tmp8=1*Factor(8,3)*Factor(8,2)+1*Factor(9,3)*Factor(9,2)
1850      !
1860      Coef(0)=-2*PI*PI*(Tmp1*Factor(1,2)+Tmp2*Factor(2,2)+Tmp3*Factor(3,2)+Tmp4*Factor(4,2)+Tmp5*Factor(5,2)+Tmp6*Factor(6,2)+Tmp7*Factor(7,2)+Tmp8)
1870      Tmp8=1*Factor(8,3)*Factor(8,1)+1*Factor(9,3)*Factor(9,1)
1880      Coef(1)=PI*(Tmp1*Factor(1,1)+Tmp2*Factor(2,1)+Tmp3*Factor(3,1)+Tmp4*Factor(4,1)+Tmp5*Factor(5,1)+Tmp6*Factor(6,1)+Tmp7*Factor(7,1)+Tmp8)
1890      Coef(2)=2*Factor(1,1)+2*Factor(2,1)+1*Factor(3,1)+1*Factor(4,1)+2*Factor(5,1)+1*Factor(6,1)+1*Factor(7,1)+1*Factor(8,1)+1*Factor(9,1)
1900      Coef(3)=PI*(4*Factor(1,2)+4*Factor(2,2)+2*Factor(3,2)+2*Factor(4,2)+4*Factor(5,2)+2*Factor(6,2)+2*Factor(7,2)+2*Factor(8,2)+2*Factor(9,2))
1910      Coef(4)=Factor(10,3)
1920      !
1930      !***** Setup Complex Value *****
1940      Y0_r=0
1950      Y0_i=2*PI*Freq*Coef(4)
1960      !
1970      Coef1_r=Coef(0)*Freq*Freq+1
1980      Coef1_i=Coef(1)*Freq
1990      Coef2_r=Coef(2)
2000      Coef2_i=Coef(3)*Freq
2010      !
2020      !***** Convert : Cp-G to G-B[Ym] *****
2030      Ym_r=R_g
2040      Ym_i=2*PI*Freq*R_c
2050      !
2060      !***** Compen : Ym to Yt *****
2070      Ynof_r=Ym_r-Y0_r
2080      Ynof_i=Ym_i-Y0_i
2090      !
2100      Nume_r=Ynof_r*Coef1_r-Ynof_i*Coef1_i
2110      Nume_i=Ynof_r*Coef1_i+Ynof_i*Coef1_r
2120      Deno_r=1-(Ynof_r*Coef2_r-Ynof_i*Coef2_i)
2130      Deno_i=-1*(Ynof_r*Coef2_i+Ynof_i*Coef2_r)
2140      Yt_r=(Nume_r*Deno_r+Nume_i*Deno_i)/(Deno_r*Deno_r+Deno_i*Deno_i)
2150      Yt_i=(Nume_i*Deno_r-Nume_r*Deno_i)/(Deno_r*Deno_r+Deno_i*Deno_i)
2160      !
2170      !***** Convert : G-B[Yt] to Cp-G *****
2180      C_g=Yt_r
2190      C_c=Yt_i/(2*PI*Freq)
2200      SUBEXIT
2210 Error_end:!
2220      PAUSE
2230      C_c=MAXREAL
2240      C_g=MAXREAL
2250 SUBEND
