Advertisement
Ostu

Untitled

Jun 17th, 2022
1,454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.18 KB | None | 0 0
  1. function y = fcn(u, data, data1)
  2. %% Zdefiniowanie zwenetrznych funkcji, ktorych ten blok natwynie nie obsluguje
  3. % wynika to z faktu, ze nie sa to funkcje codera simulinka, z tego powodu
  4. % wykonaywane sa one z poziomu silnika Matlaba
  5. coder.extrinsic('lqi');
  6. coder.extrinsic('ss');
  7.  
  8. %% Sygnaly wpadajace do funkcji
  9. x1 = u(1);
  10. x2 = u(2);
  11. x3 = u(3);
  12. x4 = u(4);
  13. x5 = u(5);
  14. x6 = u(6);
  15. xi1 = u(7);
  16. xi2 = u(8);
  17. xi3 = u(9);
  18.  
  19. if x4 == 0 && x5 == 0
  20.     x4 = 10e-10;
  21.     x5 = 10e-10;
  22. end
  23.  
  24. %% Parametry wykorzystwane w równaniach stanu
  25. % potrzebne do macierzy powstalych po linearyzacji
  26. kzz = 0.25;
  27. a = kzz^2 + 0.0431;
  28. a4 = 0.132;
  29. b4 = 0.958;
  30. k4 = b4;
  31. c4 = 0.088;
  32. a5 = 1.402;
  33. a6 = 2.443;
  34. b5 = 0.544;
  35. k5 = b5;
  36. b6 = 7.235;
  37. d5 = 0.037;
  38. d6 = 1.534;
  39. k6 = 9.470;
  40.  
  41.  
  42. %% Macierze powstale po linearyzacji
  43. % sa one niezbedne to strzowenia macierzy F dla lokowania biegunow
  44. A = [0 0 -x5*cos(x3)-x4*sin(x3) cos(x3) -sin(x3) 0;
  45.     0 0 x4*cos(x3)-x5*sin(x3) sin(x3) cos(x3) 0;
  46.     0 0 0 0 0 1;
  47.     0 0 0 -a4*sqrt(x4^2+x5^2)-(a4*x4^2)/sqrt(x4^2+x5^2) -((a*x4*x5)/sqrt(x4^2+x5^2))+b4*x6+c4*2*x5 b4*x5;
  48.     0 0 0 (-a5*x4*x5/sqrt(x4^2+x5^2))-(b5*x6)+((x5^3*x4)/((sqrt(x4^2+x5^2)*(x4^2+x5^2)))) (-a5*(2*x5^2+x4^2)/sqrt(x4^2+x5^2))-(((3*x5^2 * x4^2)+2*x5^4)/((sqrt(x4^2+x5^2)*(x4^2+x5^2)))) -b5*x4+2*x6*d5;
  49.     0 0 0 ((a6*x4*x5)/sqrt(x4^2+x5^2))-b6*x5 (-a6*(2*x5^2+x4^2)/sqrt(x4^2+x5^2))-b6*x4 -d6*2*x6];
  50. B = [0 0 0; 0 0 0; 0 0 0; k4 0 0; 0 k5 0; 0 0 k6];
  51. C = [1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 1 0 0 0];
  52. D = [0 0 0; 0 0 0; 0 0 0];
  53.  
  54. %% Macierze dla LQI
  55. % podane były podczas zajęć na tablicy
  56. Ar = [A zeros(6,3);
  57.     -C zeros(3,3)];
  58. Br = [B;
  59.     zeros(3,3)];
  60. Cr = [C zeros(3,3)];
  61. Dr = 0;
  62.  
  63. %% Obiekt/model
  64. % xi = [xi1, xi2, xi3];
  65. % x = [x1, x2, x3, x4, x5, x6];
  66. xi = [xi1; xi2; xi3];
  67. x = [x1; x2; x3; x4; x5; x6];
  68. Ml = ss(A,B,C,D); % stworzy obiekt w przestrzeni stanu, omija to tworzenie obiektu/modelu na pojedynczych blokach Gain itp. w simulinku tak jak na zajeciach z SOIM
  69. Mr = ss(Ar,Br,Cr,Dr);
  70. %% Bieguny
  71. PSI = eye(9,9);
  72. FI = eye(3,3);
  73. F = zeros(3,9);
  74. [F,P,p] = lqi(Mr,PSI,FI);
  75.  
  76. %% Wyjscie funkcji
  77. % dodanie macierzy F do naszego obiektu
  78. y = zeros(data,data1);
  79. y = ([x;xi].*-F');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement