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

其他行业

开发平台:

Matlab

  1. % This program is called by trans  and obtains the transformer performance
  2. % characteristics.
  3. %
  4. % Copyright (C) 1998 by H. Saadat.
  5. if Rclv == inf | Rclv == 0
  6. Pi = input(' Enter transformer core loss in Watt, Pi = ');
  7. else, Pi = Elv^2/Rclv;
  8. end
  9. S2m = input(' Enter load kVA, S2 = ');
  10. pf  = input(' Enter load power factor, pf = ');
  11. if pf ~= 1
  12.    ldlg = 0;
  13.    while strcmp(ldlg, 'lg')~=1 & strcmp(ldlg, 'LG')~=1 & strcmp(ldlg, 'ld')~=1 & strcmp(ldlg, 'LD')~=1
  14.    fprintf(' Enter ''lg'' within quotes for lagging pf n')
  15.    ldlg = input(' or ''ld'' within quotes for leading pf -> ');
  16.    if strcmp(ldlg, 'lg')~=1 & strcmp(ldlg, 'LG')~=1 & strcmp(ldlg, 'ld')~=1 & strcmp(ldlg, 'LD')~=1
  17.    fprintf('n Incorrect reply, try again nn'), end
  18.    end
  19. else, end
  20. V2m = input(' Enter load terminal voltage in volt, V2 = ');
  21. V2 = V2m + j*0;
  22. pf = abs(pf);
  23. ang2 = acos(pf);
  24. if ldlg == 'ld' | ldlg == 'LD'
  25.     ang2 = -ang2; elseif ldlg == 'lg' | ldlg == 'LG', end
  26. ang2d = ang2*180/pi;
  27. S2 = S2m*1000*(pf + j*sin(ang2));
  28. I2 = conj(S2)/V2;
  29. I2m = abs(I2); angI2d = angle(I2)*180/pi;
  30. Dvl = abs(Elv - V2m); Dvh = abs(Ehv - V2m);
  31. if Dvl < Dvh
  32.     V1r = (Ehv/Elv)*V2;       I1r = (Elv/Ehv)*I2; I1rm=abs(I1r);
  33.     V1 = V1r + Zehv*I1r;
  34.     V1m = abs(V1); ang1 = angle(V1); ang1d = ang1*180/pi;
  35.     if Rchv == inf | Rchv == 0, Ior = 0;
  36.     else, Ior= V1m/Rchv; end
  37.     if Xmhv == inf | Xmhv == 0, Ioi = 0;
  38.     else, Ioi= V1m/Xmhv;end
  39.     Io = Ior -j*Ioi;
  40.     I1 = I1r + Io;
  41.     Pcu = real(Zehv)*I1rm^2;
  42.     else, V1r = (Elv/Ehv)*V2; I1r = (Ehv/Elv)*I2; I1rm = abs(I1r);
  43.     V1 = V1r + Zelv*I1r;
  44.     V1m = abs(V1); ang1 = angle(V1); ang1d = ang1*180/pi;
  45.     if Rclv == inf | Rclv == 0, Ior = 0;
  46.     else, Ior= V1m/Rclv; end
  47.     if Xmlv == inf | Xmlv == 0, Ioi = 0;
  48.     else, Ioi= V1m/Xmlv;end
  49.     Io = Ior -j*Ioi;
  50.     I1 = I1r + Io;
  51.     Pcu = real(Zelv)*I1rm^2;
  52. end
  53. I1rm = abs(I1r);
  54. Iom = abs(Io); angIod = angle(Io)*180/pi;
  55. I1m = abs(I1); angI1d = angle(I1)*180/pi;
  56. VR = (V1m - abs(V1r))/abs(V1r)*100;
  57. eff = (S2m*1000*pf)/(S2m*1000*pf+Pi+Pcu)*100;
  58. Smax = sqrt(Pi/Pcu)*S2m;
  59. effmax = (Smax*1000*pf)/(Smax*1000*pf+Pi+Pi)*100;
  60. fprintf('n Secondary load voltage  = %10.3f V n', V2m)
  61. fprintf(' Secondary load current  = %10.3f A', I2m)
  62. fprintf('  at %5.2f degreesn', angI2d)
  63. fprintf(' Current ref. to primary = %10.3f A', I1rm)
  64. fprintf('  at %5.2f degrees n', angI2d)
  65. fprintf(' Primary no-load current = %10.3f A ', Iom)
  66. fprintf(' at %5.2f degrees n', angIod)
  67. fprintf(' Primary input current   = %10.3f A', I1m)
  68. fprintf('  at %5.2f degrees n', angI1d)
  69. fprintf(' Primary input voltage   = %10.3f V ', V1m)
  70. fprintf(' at %5.2f  degrees n', ang1d)
  71. fprintf(' Voltage regulation      =  %9.3f percent n', VR)
  72. fprintf(' Transformer efficiency  =  %9.3f percent n', eff)
  73. fprintf('n Maximum  efficiency is%7.3f percent,', effmax)
  74. fprintf(' occurs at%9.3f kVA', Smax)
  75. fprintf(' with%5.2f pfn', pf)
  76. %fprintf('nn Hit return to continue n')
  77. %pause
  78. Sl = 0.25*S2m:.01*S2m:1.25*S2m;
  79. PCU = (Pcu/S2m^2)*Sl.^2;
  80. Po = pf*Sl;
  81. PI = Pi*ones(1,length(Sl));
  82. EFF = 1000*Po./(1000*Po+PI+PCU)*100;
  83. figure
  84. plot(Po, EFF), grid
  85. title(['Transformer Efficiency, pf = ', num2str(pf)])
  86. xlabel('Output power, kW')
  87. ylabel('Percent')
  88. res=0;
  89. while strcmp(res, 'n')~=1 & strcmp(res, 'N')~=1 & strcmp(res, 'y')~=1 & strcmp(res, 'Y')~=1
  90. fprintf('n Would you like the analysis for another load?'),
  91. res = input(' Enter ''Y'' or ''N'' within quotes -> ');
  92. if strcmp(res, 'n')~=1 & strcmp(res, 'N')~=1 & strcmp(res, 'y')~=1 & strcmp(res, 'Y')~=1
  93. fprintf('n Incorrect reply, try again nn'), end
  94. end
  95. if res == 'y' | res == 'Y', tperf
  96. elseif res =='n' | res == 'N', trans, end