64 lines
1.5 KiB
Matlab
Executable File
64 lines
1.5 KiB
Matlab
Executable File
clc;
|
|
close all;
|
|
clear all;
|
|
|
|
Q0=3.7958e-5;
|
|
C10=11.08e-5;
|
|
C20=8.43e-5;
|
|
C30=8.28e-5;
|
|
H10=(Q0/C10)^2;
|
|
H20=(Q0/C20)^2;
|
|
H30=(Q0/C30)^2;
|
|
s=0.25*0.035;
|
|
|
|
A=[-C10*(1/(2*s*sqrt(H10))), 0, 0; C10*(1/(2*s*sqrt(H10))), -C20*(1/(2*s*sqrt(H20))), 0; 0, C20*(1/(2*s*sqrt(H20))), -C30*(1/(2*s*sqrt(H30)))];
|
|
B=[-sqrt(H10)*(1/s), 0, 0; sqrt(H10)*(1/s), -sqrt(H20)*(1/s), 0; 0, sqrt(H20)*(1/s), -sqrt(H30)*(1/s)];
|
|
C=[1,0,0;0,1,0;0,0,1];
|
|
D=zeros(3, 3);
|
|
A
|
|
B
|
|
C
|
|
D
|
|
I=[1 0 0; 0 1 0; 0 0 1];
|
|
|
|
model=ss(A, B, C, D)
|
|
[NUM1, den1]=ss2tf(A,B,C,D,1);
|
|
[NUM2, den2]=ss2tf(A,B,C,D,2);
|
|
[NUM3, den3]=ss2tf(A,B,C,D,3);
|
|
|
|
TFM(1,1)=tf(NUM1(1,:),den1);
|
|
TFM(2,1)=tf(NUM1(2,:),den1);
|
|
TFM(3,1)=tf(NUM1(3,:),den1);
|
|
TFM(1,2)=tf(NUM2(1,:),den2);
|
|
TFM(2,2)=tf(NUM2(2,:),den2);
|
|
TFM(3,2)=tf(NUM2(3,:),den2);
|
|
TFM(1,3)=tf(NUM3(1,:),den3);
|
|
TFM(2,3)=tf(NUM3(2,:),den3);
|
|
TFM(3,3)=tf(NUM3(3,:),den3);
|
|
TFM;
|
|
|
|
if rank([B, B*A, B*A^2])==3
|
|
disp('is completely state controllable');
|
|
end
|
|
|
|
if rank([C*B, C*A*B, C*(A^2)*B, D])==3
|
|
disp('is completely output controllable');
|
|
end
|
|
|
|
if rank([C', A'*C', ((A')^2)*C'])==3
|
|
disp('is completely observable');
|
|
end
|
|
|
|
% u is composed of C1 C2 C3
|
|
% u = -k x(t)
|
|
% K = k11 k12 k13; k21 k22 k23..
|
|
% X is H1-H10 ; H2-H20..
|
|
P=eig(A);
|
|
% p=[P(1,1); P(2,1); P(3,1)];
|
|
% unstable pole should be stabilized
|
|
% real part of the pole should be negative time domain or in discrete pole should be in the unit circle
|
|
p=[-14.5;-9.0;-23];
|
|
K = place(A,B,p);
|
|
eig(A-B*K)
|
|
% q=[];
|
|
% L = place(A',C',q).'; |