Gmd2lc.m
上传用户:eighthdate
上传日期:2014-05-24
资源大小:270k
文件大小:9k
源码类别:

其他行业

开发平台:

Matlab

  1. % This function obtains the parameters of a transposed transmission
  2. % line from line configuration.
  3. % Copyright (C) 1998 H. Saadat
  4. function [L, C] = gmd2lc
  5. global resp model par1 par2 linelngt freq
  6. clc
  7. parx = [
  8. ' Parameters of transposed transmission lines              '
  9. '                                                          '
  10. '     Number of three-phase circuits            Enter      '
  11. '     ------------------------------            -----      '
  12. '     Single-circuit line                         1        '
  13. '     Double-circuit vertical configuration       2        '
  14. '     Double-circuit horizontal configuration     3        '
  15. '     To quit                                     0        '
  16. '                                                          '];
  17. disp(parx)
  18. nc = -1;
  19.   while nc ~=1 & nc ~= 2 & nc ~=3 & nc~=0
  20.   nc = input('Select number of menu ');
  21.     if nc ~= 1 & nc ~= 2 & nc ~=3 & nc~=0
  22.      disp('Enter 1, 2 3 or 0'), end
  23.   end
  24. fprintf(' n')
  25. clc
  26. if nc == 0, return, end
  27. if nc == 1
  28.    ckt1 = [
  29.    '            Ob                                                 '
  30.    '           /                             For spacing unit use '
  31.    '          /                              m within quotes or   '
  32.    '         /                               ft within quotes.    '
  33.    '        D12    D23                                             '
  34.    '       /                     a           b           c        '
  35.    '      /                      O----D12----O----D23----O        '
  36.    '    a/             c                                          '
  37.    '    O------D13------O    OR    ----------D13-----------        '];
  38.    disp(ckt1)
  39.    unit ='z';
  40.    while strcmp(unit,'m')~=1 & strcmp(unit,'M') ~=1 & strcmp(unit,'ft')~=1 & strcmp(unit,'FT') ~=1
  41.       unit = input('Enter spacing unit within quotes ''m'' or ''ft''-> ');
  42.    if strcmp(unit,'m')~=1 & strcmp(unit,'M') ~=1 & strcmp(unit,'ft')~=1 & strcmp(unit,'FT') ~=1
  43.       disp('Incorrect spacing unit, try again'),end
  44.    end
  45.    space = 0;
  46.    while length(space) ~= 3
  47.    space = input('Enter row vector [D12, D23, D13] = ');
  48.      if length(space) ~= 3
  49.      disp(' Values of D12, D23, D13 must be entered within brackets, try again.'), end
  50.    end
  51.    D12 = space(1); D23 = space(2);D13=space(3);
  52.    GMD = (D12*D23*D13)^(1/3);
  53. elseif nc == 2
  54.    ckt2 = [
  55.    '                           a             c`(a`)                         '
  56.    ' Circuit Arrangements      O-----S11-----O         For spacing unit use '
  57.    ' --------------------      |                       m within quotes or   '
  58.    ' (1)  abc-c`b`a`          H12                      ft within quotes.    '
  59.    ' (2)  abc-a`b`c`        b  |                b`(b`)                      '
  60.    '                        O--------S22--------O                           '
  61.    '                            |                                           '
  62.    '                           H23                                          '
  63.    '                           c|           a`(c`)                          '
  64.    '                            O----S33----O                               '];
  65.    disp(ckt2)
  66.    nph = 0;
  67.    while nph ~= 1 & nph ~= 2
  68.    nph = input('Enter (1 or 2)  -> ');
  69.    end
  70.    fprintf('  n')
  71.    unit = 0;
  72.    while strcmp(unit,'m')~=1 & strcmp(unit,'M') ~=1 & strcmp(unit,'ft')~=1 & strcmp(unit,'FT') ~=1
  73.      unit = input('Enter spacing unit within quotes ''m'' or ''ft''-> ');
  74.    if strcmp(unit,'m')~=1 & strcmp(unit,'M') ~=1 & strcmp(unit,'ft')~=1 & strcmp(unit,'FT') ~=1
  75.      disp('Incorrect spacing unit, try again'),end
  76.    end
  77.    S  =  0;
  78.    while length(S) ~= 3
  79.    S = input('Enter row vector [S11, S22, S33] = ');
  80.      if length(S) ~= 3
  81.      disp(' Values of S11, S22, S33 must be entered within brackets, try again.'), end
  82.    end
  83.    H =  0;
  84.    while length(H) ~= 2
  85.    H = input('Enter row vector [H12, H23] = ');
  86.      if length(H) ~= 2
  87.      disp('Values of H12, H23 must be entered within brackets, try again.'), end
  88.    end
  89.    S11 = S(1); S22 = S(2); S33 = S(3); H12 = H(1); H23 = H(2);
  90.    a1 = -S11/2 + j*H12;
  91.    b1 = -S22/2 + j*0;
  92.    c1 = -S33/2 - j*H23;
  93.    if nph == 1
  94.      a2 = S33/2 - j*H23;
  95.      b2 = S22/2 + j*0;
  96.      c2 = S11/2 + j*H12;
  97.      elseif nph == 2
  98.      a2 = S11/2 + j*H12;
  99.      b2 = S22/2 + j*0;
  100.      c2 = S33/2 - j*H23;
  101.    end
  102. elseif nc == 3
  103.    ckt3 = [
  104.    '        a         b         c             a`(c`)    b`(b`)   c`(a`) '
  105.    '        O---D12---O---D23---O-----S11------O---D12---O--D23---O     '
  106.    '         ---------D13--------               --------D13--------     '
  107.    '                                                                    '
  108.    ' Circuit Arrangements                        For spacing unit use   '
  109.    ' --------------------                        m within quotes or     '
  110.    ' (1) abc-a`b`c`                              ft within quotes.      '
  111.    ' (2) abc-c`b`a`                                                     '];
  112.    disp(ckt3)
  113.    nph = 0;
  114.    while nph ~= 1 & nph ~= 2
  115.      nph = input('Enter (1 or 2)  -> ');
  116.    end
  117.    fprintf('  n')
  118.    unit = 0;
  119.    while strcmp(unit,'m')~=1 & strcmp(unit,'M') ~=1 & strcmp(unit,'ft')~=1 & strcmp(unit,'FT') ~=1
  120.      unit = input('Enter spacing unit within quotes ''m'' or ''ft''-> ');
  121.    if strcmp(unit,'m')~=1 & strcmp(unit,'M') ~=1 & strcmp(unit,'ft')~=1 & strcmp(unit,'FT') ~=1
  122.      disp('Incorrect spacing unit, try again'),end
  123.    end
  124.    S  =  0;
  125.    while length(S) ~= 3
  126.    S = input('Enter row vector [D12, D23, D13] = ');
  127.       if length(S) ~= 3
  128.       disp(' Values of D12, D23, D13 must be entered within brackets, try again.'), end
  129.    end
  130.    S11 = input('Enter Distance between two circuits, S11 = ');
  131.    D12 = S(1); D23 = S(2); D13 = S(3);
  132.    a1 = -(D13+S11/2);
  133.    b1 = -(D23+S11/2);
  134.    c1 = -S11/2;
  135.      if nph == 1
  136.      a2 = S11/2;
  137.      b2 = D12+S11/2;
  138.      c2 = D13+S11/2;
  139.      elseif nph == 2
  140.      a2 = D13+S11/2;
  141.      b2 = D12+S11/2;
  142.      c2 = S11/2;
  143.      end
  144. end
  145.      if nc==2 | nc == 3
  146.        Da1b1 = abs(a1 - b1);   Da1b2 = abs(a1 - b2);
  147.        Da1c1 = abs(a1 - c1);   Da1c2 = abs(a1 - c2);
  148.        Db1c1 = abs(b1 - c1);   Db1c2 = abs(b1 - c2);
  149.        Da2b1 = abs(a2 - b1);   Da2b2 = abs(a2 - b2);
  150.        Da2c1 = abs(a2 - c1);   Da2c2 = abs(a2 - c2);
  151.        Db2c1 = abs(b2 - c1);   Db2c2 = abs(b2 - c2);
  152.        Da1a2 = abs(a1 - a2);
  153.        Db1b2 = abs(b1 - b2);
  154.        Dc1c2 = abs(c1 - c2);
  155.        DAB=(Da1b1*Da1b2* Da2b1*Da2b2)^0.25;
  156.        DBC=(Db1c1*Db1c2*Db2c1*Db2c2)^.25;
  157.        DCA=(Da1c1*Da1c2*Da2c1*Da2c2)^.25;
  158.        GMD=(DAB*DBC*DCA)^(1/3);
  159.      end
  160.   unitc = 0;
  161.   while strcmp(unitc,'cm')~=1 & strcmp(unitc,'CM') ~=1 & strcmp(unitc,'in')~=1 & strcmp(unitc,'IN') ~=1
  162.   unitc = input('Cond. size, bundle spacing unit: Enter ''cm'' or ''in''-> ');
  163.   if strcmp(unitc,'cm')~=1 & strcmp(unitc,'CM') ~=1 & strcmp(unitc,'in')~=1 & strcmp(unitc,'IN') ~=1
  164.      disp('Incorrect conductor unit, try again'),end
  165.   end
  166. if unitc == 'cm' | unitc == 'CM'
  167. dia = input('Conductor diameter in cm = '); r=dia/2;
  168. Ds  = input('Geometric Mean Radius in cm = ');
  169. elseif unitc == 'in' | unitc == 'IN'
  170. dia = input('Conductor diameter in inch = '); r=dia/2;
  171. Ds  = input('Geometric Mean Radius in inch = ');
  172. end
  173. nb = 0;
  174.    while nb ~= 1 & nb ~= 2 & nb ~= 3 & nb ~= 4
  175.    nb =  input('No. of bundled cond. (enter 1 for single cond.) = ');
  176.      if nb ~= 1 & nb ~= 2 & nb ~= 3 & nb ~= 4
  177.      disp('You can only enter 1 or 2 or 3 or 4'), end
  178.      end
  179. if nb > 1
  180. %  fprintf(' n')
  181.    if unitc == 'cm' | unitc == 'CM'
  182.      d = input('Bundle spacing in cm = ');
  183.      elseif unitc == 'in' | unitc == 'IN'
  184.      d = input('Bundle spacing in inch = ');
  185.      end
  186. else d = 0; end
  187. if unit == 'm'| unit =='M'
  188.      if unitc == 'cm'| unitc == 'CM', Ds = Ds/100; r = r/100; d = d/100;
  189.      elseif unitc == 'in'| unitc == 'IN', Ds = 2.54*Ds/100; r = 2.54*r/100; d = 2.54*d/100;
  190.      end
  191. elseif unit == 'ft' | unit == 'FT'
  192.      if unitc == 'in'| unitc == 'IN', Ds = Ds/12; r = r/12; d = d/12;
  193.      elseif unitc == 'cm'| unitc == 'CM', Ds = Ds/(2.54*12); r = r/(2.54*12); d = d/(2.54*12);
  194.      end
  195. end
  196. if nb == 1, Dsb = Ds;  rb = r;
  197. elseif nb == 2, Dsb = (d*Ds)^(1/2); rb = (d*r)^(1/2);
  198. elseif nb == 3, Dsb = (d^2*Ds)^(1/3); rb = (d^2*r)^(1/3);
  199. elseif nb == 4, Dsb = 2^0.125*(d^3*Ds)^(1/4); rb = 2^0.125*(d^3*r)^(1/4);
  200. end
  201. if nc == 1
  202. GMRL = Dsb; GMRC = rb;
  203. elseif nc == 2 | nc == 3
  204. DSA=sqrt(Dsb*Da1a2);      rA = sqrt(rb*Da1a2);
  205. DSB=sqrt(Dsb*Db1b2);      rB = sqrt(rb*Db1b2);
  206. DSC=sqrt(Dsb*Dc1c2);      rC = sqrt(rb*Dc1c2);
  207. GMRL=(DSA*DSB*DSC)^(1/3); GMRC = (rA*rB*rC)^(1/3);
  208. end
  209. L = 0.2*log(GMD/GMRL);
  210. C = 2*pi*.00885/log(GMD/GMRC);
  211. fprintf('  nn')
  212. if unit == 'm' | unit =='M'
  213. fprintf(' GMD  = %8.5f mn',GMD)
  214. fprintf(' GMRL = %8.5f m',GMRL),  fprintf('   GMRC = %8.5f mn', GMRC)
  215. fprintf(' L = %g mH/km',L); fprintf('    C = %g micro F/km n', C);
  216. elseif unit == 'ft' | unit == 'FT'
  217. fprintf(' GMD  = %8.5f ftn',GMD)
  218. fprintf(' GMRL = %8.5f ft',GMRL), fprintf('   GMRC = %8.5f ftn', GMRC)
  219. fprintf(' L = %g mH/km',L); fprintf('    C = %g micro F/km n', C);
  220. end