B5_Feedback Controller with observer

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VỚI BỘ QUAN SÁT TRẠNG THÁI

(OBSERVER DESIGN FOR THE CONTROLLED PROCESS)

Xét hệ thống gồm một bi sắt được điều khiển bởi lực từ trường thông qua lõi sắt được quấn bên
ngoài bởi cuộn dây và nguồn cấp mạch điện như sau:

1. Phương trình toán học của hệ thống:

(1)

(2)
Với là vị trí độ cao của viên bi, là dòng điện qua mạch, điện thế cung cấp, là khối lượng
của bi, là gia tốc trọng trường, là cuộn dây, điện trở, và là hệ số được xác định bằng cách
dùng lực điện từ tác động lên viên bi.
Giả sử ta có các thông số của hệ:
= 0.05 kg, = 0.0001, = 0.01 H, = 1 Ohm, = 9.81 m/s^2.
Hệ thống đạt cân bằng (viên bi đạt ở vị trí lơ lững ở đoạn giữa trên không) với mọi
lúc = (tại vị trí mà đạo hàm = 0). Giả sử ta thực hiện tuyến tính hóa hệ phương
trình trên tại vị trí = 0.01 m (với dòng điện khoảng 7 Amps) và hệ phương trình trong không gian
trạng thái của hệ thống được biểu diễn như sau:

(3)
(4)
Trong đó:

(5)
là tập các biến trạng thái của hệ thống (là vector 3x1), là đại lượng biến thiên của ngõ vào điện
áp ( ) tại điểm cân bằng; phương trình ngõ ra là đại lượng biến thiên của độ cao viên bi ( )
tại điểm cân bằng. Các ma trận A, B, C, D của hệ như sau (nhập và lưu vào m-file MATLAB):
A = [ 0 1 0
980 0 -2.8
0 0 -100];
B = [ 0
0
100 ];
C = [1 0 0];
2. Xét tính ổn định của hệ:
Các cực của hệ hở có thể tìm được bằng cách giải nghiệm của phương trình đặc
trưng . Ta có thể dùng lệnh eig(A) để tìm các cực, nhập vào m-file lệnh tiếp theo:
poles = eig(A)
Khi đó ta sẽ có kết quả hiển thị là:
poles =
31.3050
-31.3050
-100.0000
Ta dễ dàng nhận thấy hệ trên có 1 cực nằm bên phải mặt phẳng phức (p1 = 31.3050), do đó hệ
thống đã cho là không ổn định.
Để quan sát được những gì xảy ra với đáp ứng hệ thống khi có một điều kiện ban đầu khác 0, ta
thêm vào m-file các lệnh sau, lưu lại và cho chạy lại file:
t = 0:0.01:2;
u = zeros(size(t))
x0 = [0.01 0 0]; % có 1 dữ kiện ban đầu khác 0
sys = ss(A,B,C,0)
[y,t,x] = lsim(sys,u,t,x0);
plot(t,y)
title('Open-Loop Response to Non-Zero Initial Condition')
xlabel('Time (sec)')
ylabel('Ball Position (m)')

Kết quả là đáp ứng của hệ được hiển thị như hình sau:

Điều này có thể được hình dung là vị trí viên bi càng tiến ra xa vô cực so với vị trí lõi sắt, hoặc đã
rơi xuống đất (vượt ra ngoài vùng đã được tuyến tính hóa tại điểm cân bằng).
Vì vậy, ta cần phải thiết kế bộ điều khiển và bộ quan sát trạng thái hệ thống sao cho viên bi luôn
luôn được điều khiển treo lơ lững ổn định với khoảng cách h bằng lực từ trường.
3. Xét tính điều khiển được và tính quan sát được của hệ:
Xét ma trận điều khiển :
(6)
Đối với hệ thống đã cho, ta có thể tìm hạng của ma trận điều khiển bằng cách thêm vào m-file lệnh
sau (nếu hạng của ma trận bằng n tức bằng 3 thì hệ thống là điều khiển được trạng thái hoàn
toàn):
rank(ctrb(A,B)) % Hoặc dùng lệnh:
rank(ctrb(sys))
Tương tự, xét ma trận quan sát :

(7)
Nếu hạng của ma trận bằng n, tức bằng 3 thì hệ thống là quan sát được trạng thái hoàn toàn.
Từ m-file của MATLAB, ta có thể thêm vào lệnh sau để kiểm tra tính quan sát được của hệ:
rank(obsv(A,C)) % Hoặc dùng lệnh:
rank(obsv(sys))

Với hạng của ma trận và đều bằng 3, ta có thể tiến hành thiết kế bộ điều khiển hồi tiếp K sao
cho u = -Kx, và thiết kế bộ quan sát L bằng phương pháp phân bố cực theo yêu cầu cho trước.

4. Thiết kế bộ điều khiển bằng phương pháp phân bố cực:


Hệ thống với bộ điều khiển hồi tiếp K có sơ đồ biểu diễn như sau:

Để đơn giản hóa khi thiết kế, ta giả sử tín hiệu tham chiếu = 0. Khi đó ta có:
(8)
Và do đó hệ phương trình trong KGTT của hệ hồi tiếp vòng kín được viết như sau:
(9)
(10)
Cụ thể, với các tiêu chí đưa ra khi thiết kế bộ điều khiển cần phải thỏa mãn:
- Thời gian xác lập txl < 0.5
- Độ vọt lố MP < 5%,
- Ta có thể chọn 2 cực phức mong muốn là p1 = -10 + 10i; p2 = -10 - 10i (tại = 0.7 hay 45°
với = 10 > 4.6*2). Cực thứ 3 có thể được chọn tại vị trí p3 = -50 (sao cho hệ thống đủ đáp
ứng nhanh mà không ảnh hưởng nhiều đến đặc tính động học của hệ thống).
Từ đây, ta có thể thêm các lệnh sau vào m-file hiện hành:

p1 = -10 + 10i;
p2 = -10 - 10i;
p3 = -50;
K = place(A,B,[p1 p2 p3]); % hoặc có thể dùng lệnh: K = acker(A,B,[p1 p2 p3])
sys_cl = ss(A-B*K,B,C,0);
lsim(sys_cl,u,t,x0);
xlabel('Time (sec)')
ylabel('Ball Position (m)')

Và kết quả hiển thị như sau:

Ta cũng có thể chọn bộ 3 cực mong muốn khác (có phần thực âm nhiều hơn hoặc ít hơn) để quan
sát sự thay đổi đáp ứng của hệ thống.

Bây giờ, ta có thể thay tín hiệu ngõ vào r là hàm nấc đơn vị (biên độ nhỏ hơn 1), và tín hiệu u điều
khiển hệ thống như sau để xem đáp ứng của hệ:

t = 0:0.01:2;
u = 0.001*ones(size(t)); %tín hiệu điều khiển khác 0
sys_cl = ss(A-B*K,B,C,0);
lsim(sys_cl,u,t);
xlabel('Time (sec)')
ylabel('Ball Position (m)')
axis([0 2 -4E-6 0])

Khi đó ta sẽ có kết quả hiển thị như sau:


Rõ ràng, hệ thống chưa bám theo tín hiệu tham chiếu r như mong muốn. Điều này xảy ra là do các
tín hiệu r và Kx hồi tiếp về chưa có sự đồng nhất.

Vì vậy, hệ thống cần có sự đồng nhất của giá trị hai tín hiệu r và Kx hồi tiếp về. Hệ thống được
biểu diễn lại như sơ đồ khối sau:

Với Nbar có thể được xác định thông qua hàm rscale của MATLAB (hàm này được gõ sau lệnh
K = place(A,B,[p1 p2 p3]). Cụ thể, ta thêm vào m-file lệnh sau đây:

Nbar = rscale(sys,K)

Lưu ý: hàm rscale cần phải download về để có thể được sử dụng. Link tham khảo để downlaod:
https://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=ControlStateSpa
ce#24
Sau đó, ta có thể kết hợp giá trị Nbar vừa tìm được để áp dụng vào hệ thống như sau:
lsim(sys_cl,Nbar*u,t)
title('Linear Simulation Results (with Nbar)')
xlabel('Time (sec)')
ylabel('Ball Position (m)')
axis([0 2 0 1.2*10^-3])

5. Thiết kế bộ quan sát trạng thái cho hệ điều khiển:


Sơ đồ mô tả như sau, với L là ma trận quan ước lượng trạng thái cần tìm:

Ta có phương trình ngõ ra của bộ quan sát trạng thái là ; với trạng thái ước lượng là .

(11)
(12)
Sai số động học đối với bộ quan sát được xác định bởi các giá trị riêng (các cực) của ma
trận .

(13)
Giả sử với 3 cực mong muốn của bộ quan sát cần thiết kế được chọn là op1, op2, và op3:
op1 = -100;
op2 = -101;
op3 = -102;

Sinh viên hãy tìm ma trận L cho bộ quan sát và sau đó thực hiện lại file mô phỏng trên
Simulink /MATLAB để xem tín hiệu ngõ ra cũng như tín hiệu ước lượng so với trạng thái
x của hệ thống.
Gợi ý tìm ma trận L trong MATLAB command window như sau (hoặc nhập thêm trong m-file):
L = place(A',C',[op1 op2 op3])';

Với sai số ước lượng: và tín hiệu điều khiển: , ta có các ma trận trong hệ
phương trình trạng thái mới với bộ quan sát được tính toán cập nhật như sau:

At = [ A-B*K B*K
zeros(size(A)) A-L*C ];

Bt = [ B*Nbar
zeros(size(B)) ];

Ct = [ C zeros(size(C)) ];

Sinh viên có thể thêm vào m-file các lệnh sau đây để xem đáp ứng cũng như các trạng thái ước
lượng được của hệ thống.
sys = ss(At,Bt,Ct,0);
lsim(sys,zeros(size(t)),t,[x0 x0]);
title('Linear Simulation Results (with observer)')
xlabel('Time (sec)')
ylabel('Ball Position (m)')

Đáp ứng của các biến trạng thái được vẽ như sau nếu thêm các lệnh sau đây vào m-file (Lưu ý:
lệnh lsim cho ta và ; do đó để có trạng thái ước lượng , chúng ta cần tính giá trị ).
t = 0:1E-6:0.1;
x0 = [0.01 0.5 -5];
[y,t,x] = lsim(sys,zeros(size(t)),t,[x0 x0]);
n = 3;
e = x(:,n+1:end);
x = x(:,1:n);
x_est = x - e;
% Save state variables explicitly to aid in plotting
h = x(:,1); h_dot = x(:,2); i = x(:,3);
h_est = x_est(:,1); h_dot_est = x_est(:,2); i_est = x_est(:,3);
plot(t,h,'-r',t,h_est,':r',t,h_dot,'-b',t,h_dot_est,':b',t,i,'-
g',t,i_est,':g')
legend('h','h_{est}','hdot','hdot_{est}','i','i_{est}')
xlabel('Time (sec)')

Hình trên cho thấy các biến trạng thái ước lượng là hội tụ, tức là các tín hiệu ước lượng đã bám sát
với các biến trạng thái của hệ thống. Điều này làm cũng chứng tỏ hệ thống điều khiển hồi tiếp
trạng thái với bộ quan sát trạng thái đã hoạt động ổn định.
Sinh viên nộp file Simulink /MATLAB (Kèm theo những chú thích & nhận xét trong file)

You might also like