Advertisement
Darioali

27/11/2013

Jan 8th, 2014
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 5.72 KB | None | 0 0
  1. %% Prova d'esame del 27/11/2013
  2. %% Alise Dario 0612701333
  3.  
  4. %% Operazioni di pulizia
  5.  
  6. clc
  7. clear all
  8. close all
  9.  
  10. %% Dati
  11.  
  12. syms k t iL
  13.  
  14. R1 = 1; R2 = 1; R3 = 1;
  15. micro = 1e-6;
  16. C = 10*micro;
  17. L = 10*micro;
  18.  
  19. %% Generatori
  20.  
  21. JS2 = k*iL;
  22. amp = 10;
  23. wg = 100;
  24. phi = pi/4;
  25. VS = amp*cos(wg*t+phi);
  26.  
  27. %% Analisi per t<0
  28.  
  29. % Meotodo dei potenziali nodali
  30.  
  31. syms Ua vC vL iC iL Vs
  32.  
  33. sol = solve((Ua+vC)/R3-iL+(Ua-Vs)/R1, 'Ua');
  34. Ua = sol;
  35. vL_m = -Ua;
  36. iC_m = solve((vC+Ua)/R3+(Vs+vC)/R2+iC, 'iC');
  37. dvCdt_m = iC_m/C;
  38. diLdt_m = vL_m/L;
  39.  
  40. % Modello di stato
  41.  
  42. % Matrice A
  43.  
  44. A11 = subs(dvCdt_m, [vC, iL, Vs], [1, 0, 0]);
  45. A12 = subs(dvCdt_m, [vC, iL, Vs], [0, 1, 0]);
  46. A21 = subs(diLdt_m, [vC, iL, Vs], [1, 0, 0]);
  47. A22 = subs(diLdt_m, [vC, iL, Vs], [0, 1, 0]);
  48.  
  49. A_m = [A11, A12; A21, A22];
  50.  
  51. % Vettore B
  52.  
  53. B1 = subs(dvCdt_m, [vC, iL, Vs], [0, 0, 1]);
  54. B2 = subs(diLdt_m, [vC, iL, Vs], [0, 0, 1]);
  55.  
  56. B_m = [B1; B2];
  57.  
  58. % Autovalori per la stabilità
  59.  
  60. lam_m = eig(A_m)
  61.  
  62. % Calcolo delle soluzioni di regime (unicamente soluzione sinusoidale
  63. % ricavata con il metodo dei fasori)
  64.  
  65. Id = eye(2);
  66. FVS = amp*exp(j*phi);
  67. FX = inv(j*wg*Id-A_m)*B_m*FVS;
  68.  
  69. vC_m = abs(FX(1))*cos(wg*t+angle(FX(1)));
  70. iL_m = abs(FX(2))*cos(wg*t+angle(FX(2)));
  71. X_m = [vC_m; iL_m];
  72. X_m_0 = subs(X_m, 't', 0);
  73.  
  74. % Calcolo della grandezza di interesse
  75.  
  76. IR3_m = subs((Ua+vC)/R3, [vC, iL, Vs], [vC_m, iL_m, VS]);
  77. PR3_m = (IR3_m)^2*R3;
  78.  
  79. %% Analisi per t>0
  80.  
  81. clear Ua vC vL iC iL Vs
  82. syms Ua Ub vC vL iC iL Vs
  83.  
  84. eq1 = (Ua-Vs)/R1-iL+(Ua+vC)/R3;
  85. eq2 = -k*iL+(Ub+vC)/R2;
  86. sol = solve(eq1, eq2, 'Ua, Ub');
  87. vL_p = -sol.Ua;
  88. eq1 = (sol.Ua+vC)/R3+k*iL+iC;
  89. iC_p = solve(eq1, 'iC');
  90. dvCdt_p = iC_p/C;
  91. diLdt_p = vL_p/L;
  92.  
  93. % Modello di stato
  94.  
  95. % Matrice A
  96.  
  97. A11 = subs(dvCdt_p, [vC, iL, Vs], [1, 0, 0]);
  98. A12 = subs(dvCdt_p, [vC, iL, Vs], [0, 1, 0]);
  99. A21 = subs(diLdt_p, [vC, iL, Vs], [1, 0, 0]);
  100. A22 = subs(diLdt_p, [vC, iL, Vs], [0, 1, 0]);
  101.  
  102. A_p = [A11, A12; A21, A22];
  103.  
  104. % Vettore B
  105.  
  106. B1 = subs(dvCdt_p, [vC, iL, Vs], [0, 0, 1]);
  107. B2 = subs(diLdt_p, [vC, iL, Vs], [0, 0, 1]);
  108.  
  109. B_p = [B1; B2];
  110.  
  111. % Autovalori per la stabilità
  112.  
  113. lam_p = eig(A_p)
  114.  
  115. % Per la stabilità k deve essere k>-1/2
  116. % Pongo k = 1;
  117. k = 1;
  118. A_p = subs(A_p);
  119. B_p = subs(B_p);
  120. lam_p = subs(lam_p);
  121.  
  122. % Calcolo delle soluzioni particolari
  123.  
  124. FVS = amp*exp(j*phi);
  125. FX = inv(j*wg*Id-A_p)*B_p*FVS;
  126. vCP_p = abs(FX(1))*cos(wg*t+angle(FX(1)));
  127. iLP_p = abs(FX(2))*cos(wg*t+angle(FX(2)));
  128.  
  129. % Soluzione generale
  130.  
  131. syms KC1 KC2 KL1 KL2
  132.  
  133. vCG_p = KC1*exp(lam_p(1)*t)+KC2*exp(lam_p(2)*t);
  134. iLG_p = KL1*exp(lam_p(1)*t)+KL2*exp(lam_p(2)*t);
  135.  
  136. % Soluzione completa
  137.  
  138. vC_p = vCG_p + vCP_p;
  139. iL_p = iLG_p + iLP_p;
  140.  
  141. % Calcolo delle costanti
  142.  
  143. U = VS;
  144. U_0 = subs(U, 't', 0);
  145. dX0_dt = A_p*X_m_0+B_p*U_0;
  146.  
  147. KC1 = solve(subs(vC_p, 't', 0)-X_m_0(1), 'KC1');
  148. vC_p = subs(vC_p);
  149. KC2 = solve(subs(diff(vC_p), 't', 0)-dX0_dt(1), 'KC2');
  150. vC_p = subs(vC_p);
  151.  
  152. KL1 = solve(subs(iL_p, 't', 0)-X_m_0(2), 'KL1');
  153. iL_p = subs(iL_p);
  154. KL2 = solve(subs(diff(iL_p), 't', 0)-dX0_dt(2), 'KL2');
  155. iL_p = subs(iL_p);
  156.  
  157. % Calcolo della grandezza di interesse
  158.  
  159. IR3_p = subs((sol.Ua+vC)/R3, [vC, iL, Vs], [vC_p, iL_p, VS]);
  160. PR3_p = (IR3_p)^2*R3;
  161.  
  162. % Grafici
  163.  
  164. max = max(eval(lam_p));
  165.  
  166. figure(1)
  167. subplot(211), ezplot(PR3_m, [-5*pi/wg, 0]), grid on
  168. title('Potenza istantanea resistore R3 con t<0')
  169. subplot(212), ezplot(PR3_p, [0, 5*pi/wg]), grid on
  170. title('Potenza istantanea resistore R3 con t>0')
  171.  
  172. %% Frequenza di risonanza
  173.  
  174. s = tf('s');
  175.  
  176. % Caso t<0
  177.  
  178. Hs_m = inv(s*Id-eval(A_m))*eval(B_m);
  179. HCs_m = zpk(minreal(Hs_m(1)));
  180. figure(2), bode(HCs_m), grid on
  181.  
  182. syms w
  183. G = -150000; Z = 3.333e004; P = 1e005;
  184. MHw_m = abs(G)*sqrt((w^2+Z^2)/(w^2+P^2)^2);
  185. MHw_m2 = MHw_m^2;
  186. wr = eval(solve(diff(MHw_m2), 'w'));
  187. wr_m = wr(2)
  188.  
  189. % Caso t>0
  190.  
  191. Hs_p = inv(s*Id-eval(A_p))*eval(B_p);
  192. HCs_p = zpk(minreal(Hs_p(1)));
  193. figure(3), bode(HCs_p), grid on
  194.  
  195. G = -50000; Z = -1e005; W02 = 1e010; R = 1e005;
  196.  
  197. MHw_p = abs(G)*sqrt((w^2+Z^2)/((W02-w^2)^2+w^2*R^2));
  198. MHw_p2 = MHw_p^2;
  199. wr = eval(solve(diff(MHw_p2), 'w'));
  200. wr_p = wr(2)
  201.  
  202. %% Potenza massima pilotato
  203.  
  204. IP = k*iLP_p;
  205. VP = R2*IP-vCP_p;
  206. P = IP*VP;
  207. figure(4), ezplot(P,[0,5*pi/wg]), grid on, title('Potenza pilotato t>0')
  208.  
  209. % Considero esclusivamente la soluzione particolare, da cui si evidenzia un
  210. % massimo
  211.  
  212. tmax = eval(solve(diff(P,'t')));
  213. t0 = tmax(2)
  214.  
  215. % La potenza massima è all'istante t0, per cui sostituisco
  216.  
  217. digits(3)
  218. Pmax = eval(subs(P, 't', t0))
  219.  
  220. %% Percentuale componente media
  221.  
  222. VM = 0.25;
  223. X0 = inv(A_p)*(-B_p)*VM;
  224. VC0 = X0(1);
  225.  
  226. FF = 500;
  227. T = 1/FF;
  228. wq = 2*pi/T;
  229. AH = 1;
  230. AL = 0;
  231. dc = 0.25;
  232. TH = T*dc;
  233. perc = 0.05;
  234.  
  235. syms n
  236.  
  237. An = (2/T)*int(AH*cos(n*wq*t), t, 0, TH);
  238. Bn = (2/T)*int(AH*sin(n*wq*t), t, 0, TH);
  239. FCn = An-j*Bn;
  240.  
  241. HXn_p = inv(j*wq*n*Id-A_p)*(B_p);
  242. Hn_p = HXn_p(1);
  243. H0_p = abs(subs(Hn_p,'n',0));
  244.  
  245. Hlim = perc*H0_p;
  246. wlim = solve(MHw_p2-Hlim^2, 'w');
  247. nmax = round(wlim(1)/wq);
  248.  
  249. for n=1:nmax
  250.     FVC = subs(Hn_p)*subs(FCn);
  251.     if(abs(FVC)>perc*VC0)
  252.     nmax = n;
  253.     end
  254. end
  255.  
  256. % Il mio ragionamento è questo: poichè ho determinato l'nmax che
  257. % rappresenta il numero massimo di armoniche del generatore in ingresso che
  258. % non sono inferiori al 5% della sua componente media sono sicuro che se
  259. % controllando le ampiezze dell'uscita (la tensione del condensatore) salvo
  260. % l'indice dell'ultima ampiezza avente modulo maggiore della percentuale di
  261. % componente media di interesse mi risparmio tutte quelle osservazioni
  262. % grafiche che possono risultare insidiose
  263.  
  264. VCQ = VC0;
  265. for n=1:nmax
  266.     FVCn = subs(Hn_p)*subs(FCn);
  267.     VCQ = VCQ+abs(FVCn)*cos(n*wq*t+angle(FVCn));
  268. end
  269.  
  270. % Il grafico della tensione del condensatore costituito dalle
  271. % prime 46 armoniche è riportato in Figura E9
  272. figure(5), ezplot(VCQ,[0,2*T]), grid on, title('vC(t)')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement