62
Thực hành KTĐK http://coltech.vnu.edu.vn/ ~tantd/ktdk.htm

Thuchanh Ktdk-matlab

  • Upload
    mark

  • View
    9.870

  • Download
    11

Embed Size (px)

DESCRIPTION

slide gioi thieu ve matlab

Citation preview

Page 1: Thuchanh Ktdk-matlab

Thực hành KTĐK

http://coltech.vnu.edu.vn/~tantd/ktdk.htm

Page 2: Thuchanh Ktdk-matlab

Giới thiệu về MATLAB

• M – file

• SISOTOOL

• SIMULINK

Page 3: Thuchanh Ktdk-matlab

Giới thiệu về MATLAB

Page 4: Thuchanh Ktdk-matlab

Giới thiệu về MATLAB

Page 5: Thuchanh Ktdk-matlab

Giới thiệu về MATLAB

Một số lệnh cơ bản- Tạo 1 vectơ hang: a=[1 2 3]- Tao 1 vecto cot: a=[1;2;3]- Tao 1 ma tran: a=[1 2;4 5]- Truy cap vao hang thu nhat cua

ma tran a: a(1,:)- Truy cap vao cot thu nhat cua

ma tran a: a(:,1)- Tao 1 vecto hang co buoc nhay

xac dinh: a=1:2:10Gia tri 1: khoi dauGia tri 10: ket thucGia tri 2: buoc nhay

- Tao 1 vecto hang dung lenh linspace : a=linspace(1,5,9)

Gia tri 1: khoi dauGia tri 5: ket thucGia tri 9: so diem can chia- Nhan 2 ma tran:a=[1 2;4 5];b=[1 6;8 5];c=a*b;- Nhan tung thanh phan cua 2 ma

trana=[1 2;4 5];b=[1 6;8 5];c=a.*b;

Page 6: Thuchanh Ktdk-matlab

» x = 5; % giá trị thực

» x = 5+10i; % giá trị ảo

» x = 5+10j; % tương đương dòng trên

» x = [1 2 3]; % vector hàng

» x = [1; 2; 3]; % vector cột

» x = [1 2 3; 4 5 6; 7 8 9]; % ma trận 33

Page 7: Thuchanh Ktdk-matlab

» x = 5x =

5» x = [1 2 3]x =

1 2 3» x = [1; 2; 3]x =

123

Page 8: Thuchanh Ktdk-matlab

» x = 3+4i % gán giá trị phức cho xx =

3.0000 + 4.0000i» real(x) % phần thực của xans =

3» imag(x) % phần ảo của xans =

4» abs(x) % độ lớn (magnitude) của xans =

5» angle(x) % góc pha của x, tính bằng radianans =

0.9273» conj(x) % liên hợp phức của xans =

3.0000 4.0000i

Page 9: Thuchanh Ktdk-matlab

Lệnh [x1:s:x2]: sinh một vector x bao gồm các giá trị cách đều nhau trong khoảng [x1, x2] với bước là s. Ví dụ:

» x = [0:0.5:10]; % sinh vector x có 21 giá trị từ 0 đến 10, bước 0,5

x =

Columns 1 through 8

0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000

Columns 9 through 16

4.0000 4.5000 5.0000 5.5000 6.0000 6.5000 7.0000 7.5000

Columns 17 through 21

8.0000 8.5000 9.0000 9.5000 10.0000

Page 10: Thuchanh Ktdk-matlab

Hàm linspace(x1,x2,N): sinh một vector gồm N giá trị cách đều nhau trong khoảng [x1, x2]. Ví dụ:

» x = linspace(0,10,21); % kết quả giống như ví dụ trên

Hàm logspace(d1,d2,N): sinh một vector gồm N giá trị cách đều nhau theo thang logarithm (cơ số 10) trong khoảng [10d1,10d2], trừ phi d2 bằng pi (), khi đó khoảng giá trị sẽ là [10d1, ]. Ví dụ:

» x = logspace(0,3,4)x =

1 10 100 1000» x = logspace(0,pi,4)x =

1.0000 1.4646 2.1450 3.1416

Page 11: Thuchanh Ktdk-matlab

Các phần tử của ma trận được truy nhập tới bằng các chỉ số (indexes) của hàng và cột. Trong MATLAB, chỉ số bắt đầu từ 1. Ví dụ:

» A = [1 2 3; 4 5 6; 7 8 9]; % ma trận 33» x = A(3,1) % phần tử ở hàng 3, cột 1x =

7Để truy nhập tới một ma trận con của ma trận, người ta thường sử dụng tới ký hiệu :, ví

dụ:» x = A(:,2) % toàn bộ cột thứ 2 của Ax =

258

» x = A(2:3,1:3) % ma trận con của A gồm hàng 2-3, cột 1-3x =

4 5 67 8 9

Page 12: Thuchanh Ktdk-matlab

• Cộng ma trận: A+B• Trừ ma trận: AB• Nhân ma trận: A*B• Chia ma trận: có hai phép chia ma trận được định nghĩa

như sau, nếu A*x = B thì x = A\B (phép chia trái, ký hiệu là \), còn nếu x*A = B thì x = B/A (phép chia phải, ký hiệu là /) với điều kiện ma trận A lấy nghịch đảo được và kích thước các ma trận phù hợp.

• Lấy mũ: A^k (tương đương A*A*...*A, tất cả k lần)• Chuyển vị liên hợp: A' hoặc ctranspose(A)• Nhân các phần tử tương ứng của 2 ma trận cùng kích

thước: A.*B, kết quả là một ma trận cùng kích thước, phần tử ở hàng i cột j bằng A(i,j)*B(i,j)

Page 13: Thuchanh Ktdk-matlab

• MATLAB có các cấu trúc tương tự các ngôn ngữ lập trình bậc cao khác, như các lệnh if, for, while và các phép toán logic and (hay &), or (hay |), not (hay ~). Hãy sử dụng lệnh help để tìm hiểu cách sử dụng các lệnh này.

Page 14: Thuchanh Ktdk-matlab

• MATLAB cung cấp một số lớn các hàm toán học cơ sở. Các hàm thường dùng là sin, cos, tan, asin, acos, atan, exp (lấy mũ của e), log (logarithm tự nhiên), log10 (logarithm cơ số 10), sqrt (căn bậc 2), abs (giá trị tuyệt đối). Khi biến vào của các hàm nay là các ma trận, chúng sẽ được thực hiện cho từng phần tử của ma trận.

Page 15: Thuchanh Ktdk-matlab

script file

• % script file: vidu.m• % vẽ đồ thị của hàm số x = te-tcos(2t) trong

khoảng [0,8]• clear all % xóa tất cả các biến và hàm• % do người dùng định nghĩa trước

trước đó• t = linspace(0,8,401);• x = t.*exp(–t).*cos(2*pi*t);• plot(t,x)

Page 16: Thuchanh Ktdk-matlab
Page 17: Thuchanh Ktdk-matlab
Page 18: Thuchanh Ktdk-matlab
Page 19: Thuchanh Ktdk-matlab

functionM-files chứa hàm được bắt đầu bằng một định nghĩa hàm như sau:function [output1, output2,...] = function_name(input1, input2,...)Tiếp theo định nghĩa hàm là các lệnh MATLAB như trong scripts. Tuy

nhiên, các lệnh đó chỉ có phạm vi bên trong hàm và các biến được định nghĩa trong phạm vi hàm là các biến cục bộ trừ phi chúng được khai báo là biến toàn cục bằng cách sử dụng lệnh global. Sau đây là một ví dụ về hàm:

% file: f1.m% tính s = f1(a,b) = exp(a+2|b|)function s = f1(a,b)if b > 0,

k = a+2*b;else

k = a2*b;ends = exp(k);

Page 20: Thuchanh Ktdk-matlab

f1(2,3)

ans = 2.9810e+003

y=f1(3,2)

y = 1.0966e+003

Page 21: Thuchanh Ktdk-matlab

Vẽ đồ thị

• plot: vẽ đồ thị dưới dạng đường liên tục• stem: vẽ đồ thị dưới dạng các điểm rời rạc• loglog: tương tự plot, nhưng hai trục tọa độ X

và Y đều chia theo thang logarithm (cơ số 10)• semilogx: tương tự plot, nhưng trục tọa độ X

chia theo thang logarithm (cơ số 10)• semilogy: tương tự plot, nhưng trục tọa độ Y

chia theo thang logarithm (cơ số 10)• bar: vẽ biểu đồ cột• histogram: vẽ biểu đồ tần suất• polar: vẽ đồ thị trong hệ tọa độ cực

Page 22: Thuchanh Ktdk-matlab

• xlabel: gắn nhãn cho trục X• ylabel: gắn nhãn cho trục Y• title: gắn tiêu đề cho đồ thị• grid: hiển thị lưới tọa độ• text: đặt xâu ký tự vào đồ thị• axis: điều chỉnh thang và thuộc tính của các trục tọa độ• figure: tạo một cửa sổ mới cho lệnh vẽ, hàm sẽ trả về số hiệu của cửa sổ

mới được tạo. Nếu lệnh figure có tham số figure(n), cửa sổ vẽ có số hiệu n sẽ được kích hoạt và lệnh vẽ tiếp theo sẽ vẽ vào cửa sổ này.

• hold on: cho phép giữ lại hệ tọa độ và đồ thị đang hiển thị khi có lệnh vẽ mới trong cùng cửa sổ. Các lệnh vẽ mới sẽ chỉ vẽ thêm đồ thị, các trục tọa độ và thuộc tính của chúng vẫn giữ nguyên

• hold off: xóa bỏ tác dụng của lệnh trên, mỗi khi có lệnh vẽ mới, hình vẽ đang hiển thị trong cùng cửa số sẽ bị xóa

• close(n): đóng cửa sổ vẽ có số hiệu n• subplot: lấy một phần của đồ thị đang hiển thị

Page 23: Thuchanh Ktdk-matlab

% vẽ đồ thị của các hàm số x1 = te-tcos(2t) và x2 = te-tsin(2t)

% trong khoảng [0,8]t = linspace(0,8,401);x1 = t.*exp(–t).*cos(2*pi*t);x2 = t.*exp(–t).*sin(2*pi*t);plot(t,x1);hold onplot(t, x2, ‘r’);xlabel('Time (s)');ylabel('Amplitude');

Page 24: Thuchanh Ktdk-matlab
Page 25: Thuchanh Ktdk-matlab

Thiết lập các mô hình tuyến tính bất biến theo thời gian

Mô hình hàm chuyển của một hệ thống tuyến tính G(s) = Y(s)/X(s) trong CST được thiết lập bằng hàm tf(X,Y), ở đó X là vector biểu diễn đa thức X(s) và Y là vector biểu diễn đa thức Y(s). Đa thức P(s) = a1sn + a2sn-1 + a3sn-2 + ... + ans + an+1 được biểu diễn bằng vector P = [a1 a2 a3 ... an an+1]. Ví dụ, hệ thống có hàm chuyển G(s) = s/(s2 + 2s + 10) được thiết lập bằng lệnh sau:

» G = tf([1 0],[1 2 10])Transfer function: s-------------------s^2 + 2 s + 10

Page 26: Thuchanh Ktdk-matlab

Thiết lập các mô hình tuyến tính bất biến theo thời gian

Các mô hình zero-pole-gain sử dụng hàm chuyển được biểu diễn dưới dạng:

ở đó, gia số k (gain) là một giá trị, zi (i = 1..m) là các điểm không (zeros) của G(s) và pj (j = 1..n) là các điểm cực (poles) của G(s). Vì vậy, các mô hình zero-pole-gain được biểu diễn bằng giá trị k và hai vector Z = [z1 z2 ... zm] và P = [p1 p2 ... pn], thiết lập bởi hàm zpk(Z,P,k). Ví dụ:

» G = zpk(3,[–1 –2],2)Zero/pole/gain: 2 (s-3)---------------(s+1) (s+2)» G = zpk(0,[–1+3i –1–3i],1)Zero/pole/gain: s--------------------(s^2 + 2s + 10)

Page 27: Thuchanh Ktdk-matlab

1. Hai cach khai bao 1 ham truyenKhai dung ham tfG=tf([1,5],[1 3 2]) % khai bao cac he so tren Tu va MauKet qua:s + 5-------------s^2 + 3 s + 2Khai bao dung ham zpkF=zpk([-5],[-1 -2],1) % khai bao diem khong, diem cuc, he so khuech

daiKet qua(s+5)-----------(s+1) (s+2)

Page 28: Thuchanh Ktdk-matlab

2. Chuyen doi giua TF va PK>> zpk(G)Zero/pole/gain:(s+5)-----------(s+2) (s+1)>> tf(F)Transfer function:s + 5-------------s^2 + 3 s + 2

Page 29: Thuchanh Ktdk-matlab

3. Ghep noi he thong>> C=tf([1],[1 1])>> G=tf([1,5],[1 3 2])Mac noi tiep>> C*GTransfer function:s + 5---------------------s^3 + 4 s^2 + 5 s + 2

Page 30: Thuchanh Ktdk-matlab

Mac song song>> C+GTransfer function:2 s^2 + 9 s + 7---------------------s^3 + 4 s^2 + 5 s + 2Mac phan hoi>> feedback(G,C,-1) % phan hoi amTransfer function:s^2 + 6 s + 5---------------------s^3 + 4 s^2 + 6 s + 7

Page 31: Thuchanh Ktdk-matlab

4. Khao sat he thong di dua vao cac tin hieu thu

Tin hieu thu la tin hieu nhay bac

>> step(C)

Page 32: Thuchanh Ktdk-matlab

>> step(C,10) % quan sat trong 10 s

Page 33: Thuchanh Ktdk-matlab

Tin hieu thu la xung don vi

>> impulse(C,10) % quan sat trong 10 s

Page 34: Thuchanh Ktdk-matlab

Mô hình trong không gian trạng thái (mô hình biến trạng thái)

• Các mô hình trong không gian trạng thái sử dụng các phương trình vi phân mô tả động lực của hệ thống dưới dạng:

• ở đó, x là vector chứa các biến trạng thái, u là vector chứa các biến vào và y là vector chứa các biến ra. A, B, C, D là các ma trận hệ số của hệ phương trình.

DuCxy

BuAxx

dt

d

Page 35: Thuchanh Ktdk-matlab

mô hình biến trạng thái

• Một mô hình trong không gian trạng thái được thiết lập bởi lệnh ss(A,B,C,D). Ví dụ, một hệ thống được mô tả bởi phương trình sau:

• Chuyển phương trình này sang dạng ở trên, chúng ta có x = [ ; ], u = I, , A = [0 1; 5 2], B = [0 ; 3], C = [0 1] và D = 0.

Idt

d

dt

d352

2

2

Page 36: Thuchanh Ktdk-matlab

mô hình biến trạng thái» sys = ss([0 1 ; 5 2],[0 ; 3],[0 1], 0)a = x1 x2 x1 0 1 x2 5 2b = u1 x1 0 x2 3c = x1 x2 y1 0 1d = u1 y1 0Continuous-time model.

Page 37: Thuchanh Ktdk-matlab

Chuyển đổi giữa các loại mô hình Các hàm tf, zpk và ss cũng được dùng để chuyển đổi từ một loại mô hình sang một loại mô hình khác. Ví dụ:» G = tf([1 3],[1 –3 2]) % mô hình hàm chuyểnTransfer function: s + 3-----------------s^2 - 3 s + 2» G = zpk(G) % chuyển sang mô hình zero-pole-gainZero/pole/gain: (s+3)-------------(s-2) (s-1)» sys = ss(G) % chuyển sang mô hình trong không gian trạng tháia = x1 x2 x1 2 1.118 x2 0 1b = u1 x1 0 x2 2c = x1 x2 y1 2.236 0.5d = u1 y1 0Continuous-time model.

Page 38: Thuchanh Ktdk-matlab
Page 39: Thuchanh Ktdk-matlab

Trễ của tín hiệu vào CST cho phép tính tới trễ của tín hiệu vào cho các hệ thống theo thời

gian liên tục trong giới hạn kiểm soát được. Trong không gian trạng thái, một hệ thống theo thời gian liên tục có độ trễ của các tín hiệu vào đều là

» G = tf([1 0],[1 2 10])Transfer function: s-------------------s^2 + 2 s + 10» set(G,’InputDelay’,0.05) % đặt trễ của tín hiệu vào là 0,05» GTransfer function: sexp(-0.05*s) * ------------------- s^2 + 2 s + 10

Page 40: Thuchanh Ktdk-matlab

Đáp ứng của hệ thống theo thời gian

• step(sys): tính toán và vẽ đồ thị đáp ứng theo thời gian của hệ thống biểu diễn bởi mô hình sys với tín hiệu vào của hệ thống là hàm nhảy bậc đơn vị. Để vẽ đồ thị đáp ứng của mô hình sys trong một khoảng thời gian từ 0 đến một thời điểm t, dùng lệnh step(sys,t). Ví dụ: step(sys,1) sẽ vẽ đồ thị của đáp ứng trong 1 giây đầu.

• step(sys1,sys2,...): tính toán và vẽ đồ thị đáp ứng theo thời gian của các hệ thống biểu diễn bởi nhiều mô hình trong cùng một hình vẽ với tín hiệu vào của hệ thống là hàm nhảy bậc đơn vị.

• y = step(sys,t): tính toán các giá trị rời rạc của đáp ứng theo thời gian của hệ thống biểu diễn bởi mô hình sys với tín hiệu vào của hệ thống là hàm nhảy bậc đơn vị, theo vector thời gian t. Điều đó có nghĩa y là một vector mà mỗi phần tử y(i) là giá trị của đáp ứng tại thời điểm t(i).

Page 41: Thuchanh Ktdk-matlab

Đáp ứng của hệ thống theo thời gian

• impulse(sys): tính toán và vẽ đồ thị đáp ứng theo thời gian của hệ thống biểu diễn bởi mô hình sys với tín hiệu vào của hệ thống là hàm xung đơn vị. Để vẽ đồ thị đáp ứng của mô hình sys trong một khoảng thời gian từ 0 đến một thời điểm t, dùng lệnh impulse(sys,t). Ví dụ: impulse(sys,1) sẽ vẽ đồ thị của đáp ứng trong 1 giây đầu.

• impulse(sys1,sys2,...): tính toán và vẽ đồ thị đáp ứng theo thời gian của các hệ thống biểu diễn bởi nhiều mô hình trong cùng một hình vẽ với tín hiệu vào của hệ thống là hàm xung đơn vị.

• y = impulse(sys,t): tính toán các giá trị rời rạc của đáp ứng theo thời gian của hệ thống biểu diễn bởi mô hình sys với tín hiệu vào của hệ thống là hàm xung đơn vị, theo vector thời gian t. Điều đó có nghĩa y là một vector mà mỗi phần tử y(i) là giá trị của đáp ứng tại thời điểm t(i).

• lsim(sys,u,t):

Page 42: Thuchanh Ktdk-matlab

Các điểm không và điểm cực của hàm chuyển

• z = zero(sys): hàm trả về vector z là giá trị các điểm không của hàm chuyển của hệ thống biểu diễn bởi mô hình sys.

• p = pole(sys): hàm trả về vector p là giá trị các điểm cực của hàm chuyển của hệ thống biểu diễn bởi mô hình sys.

• pzmap(sys): vẽ đồ thị các điểm không và điểm cực của hàm chuyển của hệ thống biểu diễn bởi mô hình sys trong mặt phẳng s (mặt phẳng phức).

Page 43: Thuchanh Ktdk-matlab

Thiết kế hệ thống điều khiển

• Lệnh sisotool của CST sẽ mở một giao diện đồ họa cho phép người sử dụng thiết kế một hệ thống điều khiển phản hồi đơn biến (SISO) bằng các phương pháp bù trong miền tần số, bao gồm phương pháp sử dụng quỹ tích nghiệm và phương pháp bù trên đồ thị Bode. Hệ thống phản hồi được thiết kế bằng sisotool bao gồm bốn thành phần: quá trình G, bộ tiền lọc (prefilter) F, mạch bù C và khối phản hồi H. Mạch bù C có thể được đặt phía trước G (bù nối tiếp) hoặc đặt trên nhánh phản hồi (bù phản hồi). Để thay đổi giữa hai mô hình bù đó, chúng ta chỉ cần nhấn chuột vào nút FS (Feedback Structure) trong cửa sổ con biểu diễn mô hình hệ thống. Nút +/ trong cửa sổ con đó cho phép chuyển đổi giữa hai kiểu phản hồi âm và dương

Page 44: Thuchanh Ktdk-matlab

Thiết kế hệ thống điều khiển

• » sisotool(G)

• » sisotool(G,C)

• » sisotool(G,C,H,F)

Page 45: Thuchanh Ktdk-matlab

SISOTOOL – Ví dụ

Tạo ra hàm truyềnGiả sử hệ thống có hàm truyền là:

Khai báo tạo hàm truyền bằng lệnh: G = tf(4*[-1 1],[10 7 1]); % có nhiều cách

khai báo hàm truyền này

Page 46: Thuchanh Ktdk-matlab

Tạo bộ điều khiểnGiả sử hệ thống có bộ điều khiển phản hồi

loại PI với các giá trị ban đầu của hệ số khuếch đại và hằng số thời gian tích phân là

Khai báo tạo hàm điều khiển bằng lệnh: Gc = tf(1*[3 1],[3 0]);

Page 47: Thuchanh Ktdk-matlab

Mở SISOTOOL

Thực hiện lệnh

sisotool(G, Gc);

Khi của sổ SISO xuất hiện, dung menu View để loại bỏ chức năng hiển thị Open-Loop Bode, chỉ để hiện thị phần Root Locus mà thôi

Page 48: Thuchanh Ktdk-matlab

1. Hai biểu tượng x màu xanh là điểm cực

của G(s) tại s = -0.5, -0.2. 2. Biểu tượng o màu xanh là điểm không

của G(s) tại s = 1. 3. Hàm truyền của hệ kín là bậc 3, vì thế

có thể thấy 3 điểm cực màu hồng hình vuông: .

a. Có hai điểm cực là liên hợp phức, nhận xét thành phần thục là dương, nên hệ thong là không ổn định.

b. Để xác định chính xác vị trí các điểm cực thì nhấn chuột vào điểm cục đó.

4. Tại mục Current Compensator hiển thị giá trị Gc chúng ta vừa nạp. Lưu ý tới hộp EDIT BOX đang hiển thị giá trị của . Chương trình SISO tạo ra đồ thị quỹ tích nghiệm (đường màu xanh) một cách tự động.

5. Các điểm cực và điểm không của bộ điều khiển các kí hiệu x và o màu cam.

Page 49: Thuchanh Ktdk-matlab
Page 50: Thuchanh Ktdk-matlab

Thay đổi bộ điều khiển

Vì hệ thống lúc đầu là không ổn định nên ta cố gắng thay đổi bộ điều khiển như sau: nhấn chuột vào vị trí điểm cực, kéo vào khu vực có thành phần thực < 0 (đưa hệ thống về ổn định). Hệ thống lúc này ổn định vói

Page 51: Thuchanh Ktdk-matlab

Chúng ta cũng có thể thay đổi các điểm cực, điểm không của bộ điều khiển, có 2 cách:

1. Gõ vào Current Compensator và thay đổi giá trị mong muốn

2. Kéo các kí hiêu x hay o tới các vị trí mong muốn

Page 52: Thuchanh Ktdk-matlab
Page 53: Thuchanh Ktdk-matlab

Bài 1

Page 54: Thuchanh Ktdk-matlab
Page 55: Thuchanh Ktdk-matlab
Page 56: Thuchanh Ktdk-matlab

Bài 2

Page 57: Thuchanh Ktdk-matlab
Page 58: Thuchanh Ktdk-matlab

Bài 3

Page 59: Thuchanh Ktdk-matlab

Cách thực hiệnHệ thống điều khiển và hệ thống phản hồi đều có

thời gian trễ là 0.2 giây. Trong matlab không hỗ trợ truyền trễ do đó phai đặt trễ vào các hàm chuyển và hàm phản hồi. rồi xấp xỉ lại các ham này băng câu lệnh.

set(G,'InputDelay',td);N=4;G=pade(G,N);Lúc đó G sẽ là mộ hàm chuyền có bậc N tương

đương hàm G cũ có trễ td giây.

Page 60: Thuchanh Ktdk-matlab

PI

Page 61: Thuchanh Ktdk-matlab

PID

Page 62: Thuchanh Ktdk-matlab

Bài 4