You are on page 1of 48

Matlab & Simulink

cho điều khiển tự động

Vo Nhu Thanh
1 do not copy without author agreement
Mục lục
1. Giới thiệu phần mềm MatLab
2. Tổng quan về Matlab
3. Các phép toán cơ bản
4. Các hàm toán
5. Một số lệnh cơ bản hay dùng
6. Vector và ma trận
7. Một số phép tính đại số
8. Một số lệnh đồ họa
9. Symbolic tool box
10. M-file & function
11. Hàm truyền và các thông số cơ bản
12. Simulink tool boxes
13. Bộ điều khiển PID
2 do not copy without author agreement
Phần mềm Matlab
 Matlab là một phần mềm tính toán số và lập trình, được
thiết kế bởi công ty MathWorks.
 Matlab cho phép tính toán số với ma trận, vẽ đồ thị hàm
số hay biểu đồ thông tin, thực hiện thuật toán…
 MatLab có thể tạo các giao diện người dùng và liên kết
với những chương trình máy tính viết trên nhiều ngôn ngữ
lập trình khác nhau.

3 do not copy without author agreement


Phần mềm MatLab
 Matlab là viết tắt từ "MATrix LABoratory", được Cleve Moler phát
minh vào cuối thập niên 1970, tại Đại học New Mexico.
 MATLAB, nguyên sơ được viết bởi ngôn ngữ Fortran,
 Năm 1983 MATLAB được viết bằng ngôn ngữ C và nó được xây
dựng thêm các thư viện phục vụ cho thiết kế hệ thống điều khiển, hệ
thống hộp công cụ (tool box). MATLAB trở thành mô hình ngôn ngữ
lập trình trên cơ sở ma trận (matrix-based programming language).
 năm 1984 - công ty The MathWorks ra đời
 Năm 1990 Simulink 1.0 được phát hành gói chung với MATLAB.
 Năm 1992 MATLAB 4 thêm vào hỗ trợ 3-D đồ họa màu.
 Năm 1993 MATLAB cho MS Windows ra đời. Đồng thời công ty
này có trang web là www.mathworks.com
 Năm 2008, phiên bản 7.7 được phát hành với cải thiện Simulink.
 Năm 2009 cho ra đời 2 phiên bản 7.8 (R2009a) và 7.9 (R2009b).
 Năm 2010 phiên bản 7.10 (R2010a) cũng đã được phát hành.

4 do not copy without author agreement


Tổng quan về Matlab
 Yêu cầu cài đặt phần mềm Matlab 2008 trở lên. Tốt nhất
là cài đặt phần mềm mới nhất có thể
 Khởi động bằng cách nhấn vào biểu tượng Matlab
 Thoát ra có thể bằng
 Ctrl+Q
 Vào File->exit
 Click vào dấu chéo góc màn hình
 >> quit
 Thực hiện 1 lệnh bằng cách gõ enter

5 do not copy without author agreement


Tổng quan về Matlab
 Giao diện chuẩn của Matlab gồm các cửa sổ
 Current directory
 Command window
 Workspace
 Command History
 Các phím đặc biệt
 Enter % thực hiện lệnh
 Esc % xóa dòng lệnh
 Các nút mũi tên lên xuống % gọi lệnh trước và sau
 Home, End % về đầu hay cuối dòng

6 do not copy without author agreement


Tổng quan về Matlab

7 do not copy without author agreement


Tổng quan về Matlab
 Các biến (variables)
 Có thể sử dụng các ký tự a-z (A-Z) và số 0-9 cùng dấu gạch
dưới _ để khai các biến nhưng phải bắt đầu bằng ký tự.
 Nếu khai biến không đúng sẽ hiện dòng chữ
Error: Unexpected MATLAB expression.
 Matlab phân biệt chữ in thường và in hoa
 Ví dụ: Biến a khác với A

 Các kiểu dữ liệu MatLab có đầy đủ các kiểu dữ liệu đơn


giản như: số nguyên, số thực, kí tự, logic ( boolean)

8 do not copy without author agreement


Tổng quan về Matlab
 Workspace
 Tất cả các biến trong quá trình làm việc sẽ được tạo ra ở trong
workspace cho đến khi bị xóa.
 Lệnh who hoặc là whos – để xem các biến trong workspace.
 Lệnh clear xóa các biến
 Ví dụ: g = 9.8; % acceleration due to gravity
avo = 6.023e23; % Avogadro’s number
e = exp(1); % base of natural log
pi_4=pi/4;
log10e = log10( e );
bar_to_kP = 101.325; % atmospheres to kilo Pascals

9 do not copy without author agreement


Các phép tính cơ bản trong matlab
 +,-,*,/,\,^,=
 i,j toán tử ảo
 Inf vô cùng
 Nan not a number
 pi hằng số pi

 Chú ý matlab sử dụng case sensitive pi khác Pi, pI, PI

10 do not copy without author agreement


Các phép tính cơ bản trong matlab
 Ví dụ
 a=1,b=2 >> 1/0
>> sin(pi/2)
>> a+b
ans = ans =
ans =
Inf 1
3
>> ans*4 >> inf/ans

ans = ans =

12
NaN

11 do not copy without author agreement


Các phép tính cơ bản trong matlab
 Format hiển thị: cấu trúc >> format ******
 Short (mặc định) = 4 chữ số thập phân
 Long=15 chữ số thập phân
 Bank = 2 chữ số thập phân
 Rat = phân số

12 do not copy without author agreement


Các hàm toán trong matlab
 Hàm built-in (có sẵn trong matlab)
 Sqrt(), exp() , log(), log10(), abs(), sign(), real(), imag(), round(), ceil(),
floor() % sử dụng cho biến hay số
 Sum(),min(),max(),mean() % sử dụng cho vector hay matrix
 Hàm lượng giác:
 Sin(),asin(),cos(),acos(),tang(),atang() % tính theo radian
 Chú ý: khi đặt dấu ; ở cuối câu lệnh để khỏi hiện thị kết quả lên màn hình
 Hàm do người sử dụng viết (bằng M-file)

13 do not copy without author agreement


Các hàm toán trong matlab
 Ví dụ:
clc
clear
a=1
sqrt(a)
exp(a)
log(a)
abs(a)
a=-5
sign(a)
round(a)
a=0.64
round(a)
ceil(a)
floor(a)

14 do not copy without author agreement


Một số lệnh cơ bản hay dùng
 ans cho kết quả phép tính gần nhất
 clc xóa màn hình
 clear xóa các giá trị trong bộ nhớ
 clear name, clear name1 name2 name3, clear functions, clear
variables, clear all
 delete xóa tập tin và đồ họa
 Help hiển thị hướng dẫn
 load nạp file
 Who,whos hiển thị thông tin trong bộ nhớ
 % chú thích
 Size() cỡ ma trận
 Length() chiều dài vector
 Norm() độ lớn vector

15 do not copy without author agreement


Vector và ma trận
 Khai báo
A=[a b c d] hoặc [a,b,c,d] vector hàng
B=[a;b;c;d] vector cột
C=[start:increase:end] tạo chuỗi
D=[a b; c d] tạo ma trận 2x2
A’ đảo hàng <-> cột
ones(line, column) ma trận 1
zeros(line, column) ma trận 0
rand(line, column) ma trận ngẫu nhiên
diag(v), diag(v,a) tạo ma trận với đường
chéo là vector v
eye(n), eye(n,m) ma trận đơn vị
linspace(a,b,n) tạo vector tuyến tính
giá trị từ a->b, n phần tử
magic(n) tạo ma trận vuông n có
tổng các hàng = nhau
16 do not copy without author agreement
Ví dụ

Mat=[1,2,3;3,4,5] -> tạo ma trận 2x3


size(Mat) -> hiện 2x3
Vek=[11 22] -> tạo vector hàng
matnew=[Mat,Vek'] -> tạo ma trận 2x4
NewMatrix=[Mat,Mat] -> tạo ma trận 2x6
matnew(:,2)=[] -> xóa cột 2
= ma trận 2x3
det(matnew) -> tính định thức
= không tính được
matnew(:,1)=[] -> tạo ma trận vuông
det(matnew) -> tính đinh thức = OK
inv(matnew) -> ma trận nghịch

17 do not copy without author agreement


Vector và ma trận
 Các phép toán
+,-,*,/ cộng, trừ, nhân, chia hằng số hoặc 2 ma
trận có số hàng = số cột
.+,.-,.* , ./ , .^ cộng, trừ, nhân, chia, mũ ma
trận cùng kích thước
() phép toán ưu tiên
A(i,j) giá trị tại vị trí i,j của ma trận A
A(:,j) vector cột j của ma trận A
A(i;:) vector hàng i của ma trận A
>,<,>=,<=,== các phép so sánh
 Các lênh
All,any kiểm tra có giá trị 0 trong ma trận
Det() tính định thức ma trận
Ivn() nghịch đảo ma trận
Rand() ma trận ngẫu nhiên giá trị phần tử từ 0-1
Eig() trị riêng của ma trận
Diff() vector sai phân
18 do not copy without author agreement
Vector và ma trận
– Ví dụ Chú ý
Mat1=[1 2 3; 4 5 6]
X=A/B=A*Binv
Mat2=[1 2 ; 3 4 ; 5 6]
MatMul1=Mat1*Mat2 X=A\B=Ainv*B
Mat3=[3 3;4 4]
MatMul2=Mat3*Mat1
MatMul3=Mat1*Mat3 %lỗi
MatMul3=Mat3*Mat1
Mat4=[2 2;4 4]
MatMul4=Mat3.*Mat4
Mat5=[1 2 3; 4 5 6]
Mat6=[2 3 4; 4 5 6]
MatDev1= Mat5./Mat6

19 do not copy without author agreement


Vector và ma trận
– Ví dụ Chú ý
a=[1 2 3] dot product
b=[2 4 6] dot(a,b)
x=norm(a)
⇒phi=acos(dot(a,b)/norm(a
y=norm(b)
)/norm(b)) = góc giữa 2
c=a-b
vectors
z=norm(c)
⇒Cross product
cross(a,b)
=>Poly
P=poly(a) % chuyển thành
hàm đại số với các nghiệm
là các giá trị của vector a
20 do not copy without author agreement
Một số phép tính đại số
 Các hàm
Conv nhân 2 đa thức
Deconv chia 2 đa thức
Roots() tìm nghiệm đa thức
Sort() xếp thứ tự tăng dần
Sum() tính tổng
Cumsum() cộng dồn
Cumprod() nhân dồn

21 do not copy without author agreement


Một số lệnh đồ họa
 Các hàm
Axes() đặt trục tọa độ
Axis() chia trục tọa độ
fplot() Vẽ đồ thị hàm số
Plot() Vẽ đồ thị
Subplot() đồ thị con
Grid tạo lưới grid
Bar() vẽ đồ thị cột
CLA xóa tất cả chừa lại trục
tọa độ
CLF chỉ xóa đồ thị
Figure tạo đồ thị mới
Hold vẽ thêm vào đọ thị đang vẽ
semylogx(), semylogy() vẽ đồ thị theo logarith
Polar() vẽ đồ thị tọa độ cực
Mesh(),meshc() vẽ đồ thị 3D
Title, xlabel, ylabel, zlabel đặt tên đồ thị và các trục

22 do not copy without author agreement


Một số lệnh đồ họa
– ví dụ:
t=[0:0.01:2]*pi
y=sin(t)
plot(t,y,'r.')
figure
y1=cos(t);
subplot(2,1,1);
plot(t,y,'r')
subplot(2,1,2);
plot(t,y1,'g')

23 do not copy without author agreement


Symbolic tool box
Syms
Cấu trúc: syms x y z a b c -> tạo biến x,y,z,a,b,c
Vi dụ: Tạo hàm fx va lấy đạo hàm và nguyên hàm
clear, syms a b c x;
f=x^5+a*x^3+b*x+c
f'=diff(f,x)
f1=diff(f,x)
f2=diff(f1,x) hoặc fxx=diff(f,x,2)
fi1=int(f,x)
fi1=int(f,x,0,1)
- giải phương trình
solve('a*x^2 + b*x + c')

24 do not copy without author agreement


Symbolic tool box
 Laplace va inverse laplace
 Laplace
syms t s
f = 1/sqrt(t);
laplace(f, t, s)
 Inverse laplace
syms a s t
F = 1/(s - a)^2;
ilaplace(F, t)

25 do not copy without author agreement


M-file & function
 File -> New -> m-File
 File -> set path để chọn folder làm việc

26 do not copy without author agreement


Ví dụ M-file & function
 Tính giá trị trung bình RMS của hàm sin:
function[URMS]= uRMS(T)
syms x P;
F=sin(x);
URMS=sqrt(int(1/P*F^2,x,0,P));
U_RMS_Value=subs(URMS,P,T)
 Vòng lặp aloop
function [aloop]=aloop(T,i)
for i=1:i
T=T+1
end

27 do not copy without author agreement


Thiết lập hàm truyền
 Lệnh TF
num=[1 2]
den=[1 2 3]
A=tf(num,den) -> tạo hàm truyền A

28 do not copy without author agreement


Biểu đồ Bode và nichole
 Lệnh TF
num=[1 2]
den=[1 2 3]
A=tf(num,den) % tạo hàm truyền A
bode(A) % hoặc bode(num,den)
grid
 Lệnh nichols
num=3*[1];
den=[poly([-1 -1 -1])];
nichols(num,den);
grid;

29 do not copy without author agreement


Root locus (quỹ đạo nghiệm số) và nyquist
 Lệnh rlocus và nyquist dùng để xét độ ổn định của
hàm truyền
 Lý thuyết:
 Hệ thống ổn định ở trạng thái hở sẻ ổn định ở trạng thái kín
nếu biểu đồ nyquist không bao điểm (-1+0i) trên mặt phẳng
phức
 Hệ thống không ổn định ở trạng thái hở sẻ ổn định ở trạng
thái kín nễu biểu đồ nyquist bao điểm (-1+0i) n lần ngược
chiều kim đồng hồ (n là số nghiệm của GH nằm bên phải
mặt phẳng phức)
 Hệ kín ổn định nếu các điểm cực nằm bên trái mặt phẳng
phức của biểu đồ root locus

30 do not copy without author agreement


Root locus (quỹ đạo nghiệm số) và nyquist
 Vi dụ
Num=[1 2]
Den=[1 2 2]
A=tf(num,den)
Rlocus(a)
Rlocus(a,2)
Nyquist(a)

31 do not copy without author agreement


Simulink tool boxes
 Gõ lệnh simulink trong command window hay click vao
biểu tượng icon simulink trên thanh tool bar

32 do not copy without author agreement


Simulink tool boxes
 Các khối hàm thường dùng có trong
“commonly used blocks”

33 do not copy without author agreement


Simulink tool boxes
 Ví dụ: thiết lập sơ đồ khối và mô phỏng hệ thống lò xo –
giảm xóc

Lò xo
Trọng khối
k

m
d

Giảm xóc
Ma sát = 0

34 do not copy without author agreement


Simulink tool boxes
 Ví dụ: thiết lập sơ đồ khối và mô phỏng hệ thống lò xo
– giảm xóc
k

m
d

k Xo
FS
m
d FD
35 do not copy without author agreement
Simulink tool boxes
 Ví dụ: thiết lập sơ đồ khối và mô phỏng hệ thống lò xo
– giảm xóc

FS = k ⋅ x
Các lực: FD = d ⋅ x
Fi = m ⋅ x

Phương trình: m ⋅ x + d ⋅ x + k ⋅ x = 0


Điều kiện đầu x(0) = x0 , x (0) = 0

36 do not copy without author agreement


Simulink tool boxes
 Ví dụ: thiết lập sơ đồ khối và mô phỏng hệ thống lò xo
– giảm xóc với Xo=10,X’o=0, d=0.1,m=1,k=1

x'' x' x
1 1
1
s s

1/mass Integrator Integrator 1 Scope

d
0.1

37 do not copy without author agreement


Simulink tool boxes
 Ví dụ: thiết lập sơ đồ khối và mô phỏng hệ thống lò xo
– giảm xóc

Sơ đồ trên tương đương

1
s2 +0.1s+1
Step Transfer Fcn Scope1

38 do not copy without author agreement


Simulink tool boxes
 Ví dụ: Mạch RLC

Mô hình toán : U=RI+L(di/dt)+1/C(∫Idt)

Biến đổi Laplace: U(s)=RI(s)+sLI(s)+I/(C.s)


⇒ Hàm truyền I(s)/U(s) = C.s/(LC.s2+RCs+1)

C.s

⇒ Mô hình simulink Step


L*C.s2 +R*C.s+1
Scope
Transfer Fcn

Scope1
39 do not copy without author agreement
Simulink tool boxes
 Ví dụ: động cơ 1 chiều

40 uM do not copy without author agreement


Simulink tool boxes
 Ví dụ: động cơ 1 chiều di
u M = R ⋅ i + L ⋅ + kG ⋅ ω
dt
M M − M L = J ⋅ ϕ
M M = kG ⋅ i, M L = b.ω

MM : Moment động cơ[Nm] kG : Hệ số sức phản điện động


ML : Moment tải[ Nm]

f : Ma sát[Nm] =0

J: Giá trị moment quán tính[kg m2]

ϕ : Gia tốc góc[rad/sec]

41 do not copy without author agreement


Simulink tool boxes
 Ví dụ: động cơ 1 chiều (tt)
Biến đổi laplace

(J.s^2+b.s).θ(s) = K.I(s) Pt1


(L.s+R).I(s)+K.s. θ(s) = u(s) Pt2

Thay I(s) từ pt1 vào pt2


Ta được
(L.s+R). (J.s^2+b.s).θ(s)/K +K.s. θ(s) = u(s)

=> hàm truyền G= θ’(s) /u(s) = K/((Js+b)(Ls+R)+K2)

42 do not copy without author agreement


Simulink tool boxes
 Ví dụ: động cơ 1 chiều (tt)
Mô hình simulink J=0.01,b=0.1,R=1,K=0.01,L=0.5

K
J*L.s2 +(J*R+L*b)s+(R*b+K^2)
Step Scope

Transfer Fcn

Scope1

43 do not copy without author agreement


PID controller
 Kp+Ki/s+Kd.s

Gain

1
1
s
Step Gain1 Integrator

1 du/dt

Gain2 Derivative

44 do not copy without author agreement


PID controller- lọc thông thấp cấp 1
 Trường hợp chỉ dung Kp
1
K
s+1
Step Gain Transfer Fcn

 Trường hợp chỉ dùng Ki

1 1
K
s s+1
Step Integrator Gain Transfer Fcn

45 do not copy without author agreement


PID controller- lọc thông thấp cấp 1
 Kết hợp Kp,Ki

1 K
Ki
s s+1
Step Integrator Gain Transfer Fcn

Kp

Gain1

Kết quả:
Kp: ổn định, không bị nhảy quá, không chính xác, đáp ứng nhanh
Ki: ổn định, có thể bị nhảy quá, chính xác, đáp ứng chậm hơn
=> kết hợp cả 2 cho kết quả tốt hơn

46 do not copy without author agreement


PID controller- lọc thông thấp cấp 2

K
1 PID 1
T^2.s2 +2*T*ds+b
In1 Out1
PID Controller
G(s)

47 do not copy without author agreement


PID controller- lọc thông thấp cấp 2

 Ban đầu chọn K=1,T=1,d=1,b=1


 Nếu thay đổi giá trị Ki,Kp,Kd
 Tại Kp=4,Ki=1,Kd=2 sẽ cho đáp ứng tốt nhất
K
PID
T^2.s2 +2*T*ds+b
Step PID Controller Scope
G(s)

K
T^2.s2 +2*T*ds+b

G(s)1

48 do not copy without author agreement

You might also like