thuchanh ktdk-matlab

Post on 06-Dec-2014

9.870 Views

Category:

Education

11 Downloads

Preview:

Click to see full reader

DESCRIPTION

slide gioi thieu ve matlab

TRANSCRIPT

Thực hành KTĐK

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

Giới thiệu về MATLAB

• M – file

• SISOTOOL

• SIMULINK

Giới thiệu về MATLAB

Giới thiệu về 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;

» 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

» x = 5x =

5» x = [1 2 3]x =

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

123

» 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

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

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

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

• 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)

• 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.

• 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.

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)

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);

f1(2,3)

ans = 2.9810e+003

y=f1(3,2)

y = 1.0966e+003

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

• 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ị

% 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');

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

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)

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)

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

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

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

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

Tin hieu thu la tin hieu nhay bac

>> step(C)

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

Tin hieu thu la xung don vi

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

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

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

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.

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.

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

Đá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).

Đá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):

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).

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

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

• » sisotool(G)

• » sisotool(G,C)

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

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

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]);

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

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.

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

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

Bài 1

Bài 2

Bài 3

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.

PI

PID

Bài 4

top related