You are on page 1of 30

BÀI 1: MỘT SỐ LỆNH CƠ BẢN CỦA MATLAB

1.1 Vector
Mỗi phần tử (element) của vector cách nhau bởi một khoảng trống (space) và chúng
nằm ở giữa dấu ngoặc vuông.
Tạo một vector a bằng cách nhập vào cửa sổ lệnh MATLAB (MATLAB command
window) như sau:
a = [1 2 3 4 5 6]
Tạo một vector với các phần tử từ 0 đến 20 và cách nhau 2 đơn vị (cách này thường
xuyên được dùng để tạo một vector thời gian):
t = 0:2:20
Cộng thêm 2 vào mỗi phần tử của vector a để có vector b:
b=a+2
Cộng, trừ hai vector nếu chúng có độ dài như nhau:
c=a+b
d=a–b
1.2 Đa thức (polynomial)
Trong MATLAB, một đa thức được biểu diễn bởi một vector. Để tạo ra một đa thức
trong MATLAB, nhập từng hệ số (coefficience) của đa thức vào vector theo thứ tự
giảm dần (descending order). Ví dụ, để biểu diễn đa thức:
s4+3s3-15s2-2s+9
trong MATLAB, nhập vào vector sau:
x = [1 3 -15 -2 9]
MATLAB có thể dịch một vector với độ dài n+1 như một đa thức bậc n. Do đó, nếu
một đa thức mất đi bất kỳ hệ số nào, người dùng phải điền 0 vào vị trí thích hợp
trong vector. Ví dụ,
s4+1
sẽ được biểu diễn trong MATLAB như:
y = [1 0 0 0 1]
Ta có thể tìm giá trị (value) của một đa thức bằng hàm polyval. Ví dụ, để tìm giá trị
của đa thức trên ở s=2,
polyval([1 0 0 0 1],2)
Ta cũng có thể tìm nghiệm (root) của một đa thức bằng lệnh roots:
roots([1 3 -15 -2 9])
Nhân (multiply) hai đa thức với nhau sử dụng lệnh conv:
a = [1 2];

1
b = [1 4 8];
c = conv(a,b)
Chia (divide) hai đa thức c cho b bằng lệnh deconv:
[aa, R]=deconv(c, b)
Kết quả (result) được lưu trong biến aa và phần thừa (remainder) được lưu ở biến R
Hãy nhập các đa thức sau vào MATLAB:
1) X = 8s3-6s2-2s+18
2) Y = s6+6s4+11s2-2s
Sau đó thực hiện:
a) Tìm nghiệm của các đa thức trên
b) Tìm giá trị của từng đa thức với s = 3
c) Nhân hai đa thức với nhau
d) Kiểm tra lại phép nhân bằng cách thay s=3 vào đa thức vừa có được
1.3 Đa thức sử dụng biến s (polynomials using s variable)
Một cách khác để biểu diễn một đa thức là sử dụng biến Laplace s trong MATLAB.
Phương pháp này được sử dụng chủ yếu trong suốt quá trình hướng dẫn này. Định
nghĩa một biến số s trong MATLAB được thực hiện như sau:
s = tf('s')
Do đó, đa thức
s4+3s3-15s2-2s+9
sẽ được nhập vào:
C = s^4+3*s^3-15*s^2-2*s+9
Thay vì sử dụng hàm roots, ta có thể sử dụng hàm zero để tìm nghiệm của đa thức.
zero(C)
Ta cũng có thể nhân hai đa thức với nhau sử dụng biến số s. Ví dụ:
i = s+2;
j = s^2+4*s+8;
k = i*j
Hãy nhập đa thức sau vào MATLAB sử dụng biến s:
5s4 +5s3-8s2+15s+1
5s6+s3-18s2+7s
Tìm nghiệm của các đa thức trên sử dụng lệnh zero
1.4 Ma trận
Biểu diễn ma trận trong MATLAB cũng giống như của một vector, ngoại trừ việc
mỗi hàng của phần tử được tách bởi một dấu chấm phẩy (;).

2
B = [1 2 3 4; 5 6 7 8; 9 10 11 12]
Ma trận trong MATLAB có thể được biến đổi theo nhiều cách:
Tìm ma trận chuyển vị của B bằng cách:
C = B'
Nhân các phần tử tương ứng của ma trận với nhau bằng cách sử dụng toán tử .*
E = [1 2; 3 4]
F = [2 3; 4 5]
G = E.*F
Tìm nghịch đảo của một ma trận bằng lệnh inv
X = inv(E)
Truy xuất tất cả các hàng của cột 1 trong ma trận B
Z = B(:,1)
Truy xuất tất cả các hàng của cột cuối trong ma trận B
Z1 = B(:,end)
Truy xuất tất cả các cột của hàng 1 trong ma trận B
W = B(1,:)
Truy xuất tất cả các cột của hàng cuối trong ma trận B
W1 = B(end,:)
Tìm giá trị riêng của ma trận bằng lệnh eig
eig(E)
1.5 Vẽ đồ thị (plotting)
Việc vẽ một đồ thị cũng dễ dàng với MATLAB. Ví dụ, để vẽ đồ thị sóng sin theo
thời gian:
Tạo một vector thời gian (time vector) (dấu “;” cho MATLAB biết ta không muốn
thấy tất cả các giá trị)
Tính giá trị sin theo thời gian
Các lệnh sau hàm plot (title, xlabel, ylabel) sẽ thêm các chú thích vào đồ thị
t = 0:0.25:7;
y = sin(t)
plot(t,y)
title('Sóng sin như một hàm theo thời gian')
xlabel('Thời gian (s)')
ylabel('Độ lớn')

3
1.6 Bài tập thực hành
1) Cho ma trận A, B và C
10 2   3 1
 3 4 
A   20 4  ; B   10 2  ; C   
 3 6   0 5   6 1

a) Nhập các ma trận A, B, C vào MATLAB.


b) Tạo ma trận D có giá trị là cột 2 của ma trận A
c) Truy xuất giá trị hàng 2, cột 2 của ma trận B
d) Tìm ma trận nghịch đảo của ma trận C
e) Chứng minh rằng (A+B)C=AC+BC
2) Cho phương trình x2-4x+5=0, giải phương trình theo hai cách, sau đó so sánh
kết quả.
 Cách 1: Nhập các lệnh tính theo phương pháp cổ điển (tính delta)
 Cách 2: Dùng hàm root và zero
3) Vẽ đồ thị hàm số y1 = sinx.cos2x và hàm số y2=sinx2 trong đoạn [0 2], trên
cùng một hệ trục tọa độ.

4
BÀI 2: GIỚI THIỆU VỀ SIMULINK TOOLBOX
Simulink là một mở rộng đồ họa (graphical extension) cho MATLAB để mô
hình hóa và mô phỏng các hệ. Một trong những thuận lợi chính của Simulink là khả
năng mô hình hóa một hệ không tuyến tính, việc mà một hàm truyền không thể làm.
Một thuận lợi khác của Simulink là khả năng tiếp nhận các điều kiện ban đầu. Khi
một hàm truyền được xây dựng, các điều kiện ban đầu được giả định là 0.
Trong Simulink, các hệ thống được vẽ trên màn hình như các sơ đồ khối
(block diagram). Nhiều phần tử của sơ đồ khối có sẵn, như là hàm truyền (transfer
function), điểm tổng (summing junctions) … cũng như các thiết bị đầu vào và đầu
ra ảo (virtual input/output devices) như là bộ phát (generator) và máy hiện sóng
(oscilloscope). Simulink được tích hợp với MATLAB và dữ liệu có thể được truyền
dễ dàng giữa hai chương trình. Trong phần hướng dẫn này và các phần tiếp theo, ta
sẽ áp dụng Simulink đối với các ví dụ từ MATLAB để mô hình các hệ, xây dựng bộ
điều khiển, và mô phỏng hệ.
2.1 Những phần tử cơ bản
Có hai lớp lớn các phần tử trong Simulink: khối (blocks) và đường (lines).
Các khối được sử dụng để tạo ra (generate), điều chỉnh (modify), kết hợp
(combine), ngõ ra (output) và hiện tín hiệu. Các đường được sử dụng để truyền tín
hiệu (signal) từ môt khối đến khối khác.
Những khối hay sử dụng trong Simulink
Khối Step (ở thư viện Simulink \ Sources) có chức năng xuất ra tín
hiệu hàm nấc. Double click vào khối này để cài đặt các thông số:
 Step time: khoảng thời gian ngõ ra chuyển sang mức Final
value kể từ lúc bắt đầu mô phỏng.
 Initial value: Giá trị đầu.
 Final value: Giá trị cuối. Cài đặt theo giá trị ta muốn tác
động tới hệ thống. Nếu là hàm nấc đơn vị thì giá trị này
bằng 1.
 Sample time : thời gian lấy mẫu.
Khối Mux (ở thư viện Simulink \ Signals Routing) là bộ ghép
kênh nhiều ngõ vào 1 ngõ ra, từ ngõ ra này ta đưa vào Scope để
xem nhiều tín hiệu trên cùng một cửa sổ. Double click vào khối
này để thay đổi số kênh đầu vào (trong mục Number of inputs).

Khối Sum (ở thư viện Simulink \ Math Operations) là bộ tổng


(cộng hay trừ) các tín hiệu, thường dùng để lấy hiệu số của tín
hiệu đặt với tín hiệu phản hồi. Double click để thay đổi dấu của bộ
tổng.

Khối PID controller (ở thư viện Simulink Extras \ Additional


Linear) là bộ điều khiển PID

5
Khối Saturation (ở thư viện Simulink \ Discontinuities) là một
khâu bão hòa. Các thông số cài đặt:
 Upper limit : giới hạn trên. Nếu giá trị đầu vào lớn hơn
upper limit thì ngõ ra luôn bằng giá trị Upper limit.

 Lower limit : giới hạn dưới. Nếu giá trị đầu vào nhỏ hơn
Lower limit thì ngõ ra luôn bằng giá trị Lower limit
Khối Transfer Fcn (ở thư viện Simulink \ Continuous) là hàm
truyền của hệ tuyến tính. Double click để thay đổi bậc và các hệ
số của hàm truyền. Cài đặt các thông số:
 Numerator : các hệ số của đa thức tử số
 Denominator : các hệ số của đa thức mẫu số
Khối Scope (ở thư viện Simulink \ Sinks) là cửa sổ xem các tín
hiệu theo thời gian, tỉ lệ xích của các trục được điều chỉnh tự động
để quan sát tín hiệu một cách đầy đủ.
2.2 Các bước xây dựng mô hình trên Simulink
Khởi động Simulink bằng cách click vào biểu tượng trên thanh công cụ hoặc gõ
lệnh >>simulink.

Tiếp đó, chọn Blank Model, sẽ hiện ra giao diện làm việc simulink

6
Môi trường làm việc của simulink

Chọn biểu tượng để đi đến thư viện của simulink

Cửa sổ này cho phép “nhấp-kéo-thả” vào từng khối chức năng trong thư viện
simulink vào môi trường làm việc của simulink.

7
2.3 Bài tập thực hành
1) Dựa vào các khối ở bảng trên sinh viên hãy xây dựng mô hình sau:

Sau đó nhấp đúp vào khối Step thay đổi các thông số và bấm Run sau đó quan sát
đáp ứng trong khối Scope.
2) Xây dựng mô hình sau trên simulink

8
BÀI 3: MÔ TẢ TOÁN HỌC CỦA HỆ THỐNG
Bước đầu tiên trong quá trình thiết kế điều khiển là phát triển mô hình toán
học thích hợp của hệ thống được điều khiển. Các mô hình này có thể được rút ra từ
các định luật vật lý (physical laws) hoặc dữ liệu thực nghiệm (experimental data).
Trong phần này, cách biểu diễn bằng hàm truyền (transfer function) và không gian
trạng thái (state-space) của các hệ động học được giới thiệu.
3.1 Hệ động học (Dynamic systems)
Các hệ động học là các hệ mà thay đổi hoặc tiến triển theo thời gian theo một quy
luật cố định. Đối với nhiều hệ vật lý, quy luật này có thể được phát biểu như một
tập hợp các phương trình vi phân bậc nhất (first-order differential equations):

 f  x  t  , u  t  , t  1
dx
x
dt
Trong đó:
 x(t) là vector trạng thái (state vector), là một tập hợp các biến (variables)
biểu diễn trạng thái của hệ ở thời điểm t. Ví dụ, trong một hệ lò xo đơn giản
(mass-spring damper system), hai biến trạng thái có thể là vị trí (position) và
vận tốc (velocity) của khối lượng (mass).
 u(t) là vector đầu vào đối với hệ ở thời điểm t
 f là một hàm số (có thể không tuyến tính) mà tạo ra đạo hàm theo thời gian
(time derivative) hay tốc độ thay đổi (rate of change) của vector trạng thái
dx/dt, trong một thời điểm cụ thể.
3.2 Mô tả bằng không gian trạng thái (state-space representation)
Đối với các hệ tuyến tính bất biến theo thời gian – LTI, phép biểu diễn không gian
biến trạng thái chuẩn được cho bởi:
x  Ax  Bu
(2)
y  Cx  Du
Trong đó:
 x là vector các biến trạng thái (vector of state variables);
 ̇ là đạo hàm theo thời gian (time derivative) của vector trạng thái;
 u là đầu vào hoặc vector điều khiển (control vector);
 y là vector đầu ra (output vector);
 A là ma trận hệ thống (system matrix);
 B là ma trận đầu vào (input matrix);
 C là ma trận đầu ra;
 D là ma trận truyền trực tiếp (feedthrough/feedforward matrix).
Mô tả bằng không gian trạng thái, còn được xem như mô tả ở miền thời gian (time-
domain representation), có thể dễ dàng giải quyết các hệ nhiều đầu vào/nhiều đầu ra
(multi-input/multi-output (MIMO)), các hệ với các điều kiện ban đầu khác 0 (non-
zero initial conditions), và các hệ không tuyến tính thông qua phương trình (1). Do

9
vậy, mô tả bằng không gian trạng thái được dùng rộng rãi trong lý thuyết điều khiển
“hiện đại” (modern control theory).
3.3 Bài tập thực hành 1
Cho phương trình trạng thái:
 x1  1 2  x1  0
 x   3 4   x    1  u
 2   2  
Và phương trình ngõ ra
x 
y  1 0  1 
 x2 
Biểu diễn phương trình trạng thái trong MATLAB
A=[ 1 2; 3 4];
B=[0;1];
C=[1 0];
D=0;
sys=ss(A,B,C,D)
sys =

A =
x1 x2
x1 1 2
x2 3 4

B =
u1
x1 0
x2 1

C =
x1 x2
y1 1 0

D =
u1
y1 0

Biểu diễn phương trình trạng thái trong simulink


Để biểu diễn phương trình trạng thái trong simulink ta sử dụng khối State-Space

10
Nhấp đôi vào khối trên để nhập các ma trận A, B, C và D

3.4 Biểu diễn bằng hàm truyền (Transfer function representation)


Hàm truyền của hệ tuyến tính, hệ bất biến theo thời gian và hệ liên tục được định
nghĩa là tỉ số giữa biến đổi Laplace của ngõ ra (đáp ứng của hệ thống) so với với
biến đổi Laplace của ngõ vào (tín hiệu điều khiển) với các giả thuyết ban đầu bằng
không.
Xét hệ thống tuyến tính bất biến theo thời gia được mô tả bởi phương trình vi phân:
a0 y ( n )  a1 y ( n 1)  ...  a0 y  an y
 b0 x ( m )  b1 x ( m1)  ...  bm1 x  bm x
Trong đó y là tín hiệu ngõ ra, x là tín hiệu ngõ vào.
Hàm truyển của hệ thống được biểu diễn:
Y ( s) b0 s m  b1s m1  ...  bm1s  bm
G( s)  
X ( s) a0 s n  a1s n 1  ...  an1s  an
3.5 Bài tập thực hành 2
Cho hàm truyền:
1
G( s) 
s  2s  4
2

Biểu diễn hàm truyền trong MATLAB


num=[1];
den=[1, 2, 4];
h=tf(num,den)
h =
1
-------------
s^2 + 2 s + 4

11
Biểu diễn hàm truyền trong simulink
Để biểu diễn hàm truyền trong simulink ta sử dụng khối Transfer Fcn

Nhấp đôi vào khối trên để nhập hàm truyền

3.6 Bài tập thực hành 3


1) Nhập các hàm truyền sau vào MATLAB, sau đó vẽ đáp ứng nấc (sử dụng
lệnh step) và đáp ứng xung (sử dụng lệnh impluse) của hệ vòng hở.
5
a) G( s) 
s  3s  4
2

s 1
b) G( s)  2
5s  8s  3
s2  1
c) G( s)  3
s  2s  4
2) Xây dựng mô hình sau trên simulink
a) Mô hình 1

12
b) Mô hình 2

3) Nhập các hàm truyền ở câu 1 vào khối Transfer Fcn và xây dựng mô hình
simulink như mô hình 2 (câu 2). Quan sát đáp ứng.

13
BÀI 4: KHẢO SÁT TÍNH ỔN ĐỊNH CỦA HỆ THỐNG
4.1 Các tiêu chuẩn ổn định
 Tiêu chuẩn đại số
 Tiêu chuẩn Routh
 Tiêu chuẩn Hurwitz
 Phương pháp quỹ đạo nghiệm số
 Tiêu chuẩn ổn định tần số
 Tiêu chuẩn ổn định Nyquist
 Tiêu chuẩn ổn định Bode
Trong phạm vi bài thực hành này, chúng ta dùng phương pháp quỹ đạo nghiệm số
và tiêu chuẩn Bode để xét tính ổn định của hệ thống.
4.2 Phương pháp quỹ đạo nghiệm số
Hệ thống có tất cả các cực có phần thực âm (tất cả các cực đều nằm bên trái mặt
phẳng phức Re{pi} < 0)  hệ thống ổn định.

14
Bài toán ví dụ 1:
Cho hệ thống điều khiển có hàm truyền như sau:
1
G( s) 
s( s  2)( s 2  s  1)
Xét tính ổn định của hệ thống trên.
>> num=1
>> den=convn([1],[1 1],[1 1 1])
>> G=tf(num,den)
>> rlocus(G) %lenh ve quy dao nghiem so

Kết luận: hệ thống ổn định


4.3 Tiêu chuẩn ổn định Bode
Hệ thống kín ổn định nếu hệ hở G(s) có độ dự trữ biên và độ dự trữ pha dương.
GM  0

 M  0
Bài toán ví dụ 2:
Cho hệ thống điều khiển có hàm truyền như sau:
10
G( s) 
2s  3s  1
2

15
>> num = 10
>> den = [2 3 1]
>> G=tf(num,den)
>> bode(G)
>> margin(G) %lenh tim do du tru bien, do du tru pha

Kết luận: hệ thống ổn định


4.4 Bài tập thực hành
Xét tính ổn định của hệ thống bằng phương pháp quỹ đạo nghiệm số và tiêu chuẩn
bode, cho bởi hàm truyền sau:
5
a) G( s) 
s  3s  4
2

s 1
b) G( s)  2
5s  8s  3
s2  1
c) G( s)  3
s  2s  4
10
d) G( s) 
s( s  1)( s  2)

16
BÀI 5: THIẾT KẾ BỘ ĐIỀU KHIỂN PID

Trong phần này, ta sẽ tìm hiểu về một cấu trúc bộ bù hồi tiếp hay phản hồi
(feedback compensator structure) đơn giản nhưng linh hoạt: Bộ điều khiển tỉ lệ-tích
phân-vi phân (Proportional-Integral-Derivative). Bộ điều khiển PID được ứng dụng
rộng rãi bởi vì nó rất dễ hiểu (understandable) và hiệu quả (effective). Một điểm
mạnh khác của nó là tất cả các kỹ sư đều có khái niệm về vi phân (differentiation)
và tích phân (integration), do đó họ có thể áp dụng hệ thống điều khiển ngay cả khi
không hiểu sâu về lý thuyết điều khiển. Hơn nữa, mặc dù bộ bù là đơn giản, nó có
thể thu thập lịch sử của hệ (thông qua việc tích phân) và dự đoán (anticipate) hành
vi của hệ (thông qua việc vi phân). Ta sẽ thảo luận sự ảnh hưởng của mỗi tham số
PID lên động học của hệ vòng kín (closed-loop system) và sẽ trình bài cách sử dụng
một bộ điều khiển PID để cải thiện hoạt động của một hệ thống.
5.1 Tổng quát về PID
Trong phần thực hành này, ta sẽ xem xét hệ hồi tiếp âm đơn vị (unity-feedback
system) sau:

Hình 1: Mô hình điều khiển


Trong đó tín hiệu ngõ ra của controller được tính theo công thức (1):
t
d
u (t )  K p e(t )  Ki  e(t )dt  K d e(t )
0
dt

Đầu tiên, hãy xem bộ điều khiển PID làm việc như thế nào trong một hệ vòng kín
(closed-loop system) bằng cách sử dụng sơ đồ trên. Biến e biểu thị sự sai lệch
(error), là sự khác biệt giữa đầu ra mong muốn r (desired output or reference) và
đầu ra thực tế y (actual output). Tín hiệu sai lệch này e được cấp tới bộ điều khiển
PID, và bộ điều khiển tính toán cả đạo hàm và tích phân của tín hiệu sai lệch này
theo thời gian (error signal with respect to time). Tín hiệu điều khiển u (control
signal) tới plant (đối tượng điều khiển) bằng với độ lợi tỉ lệ Kp (proportional gain)
nhân với độ lớn của sai lệch cộng với độ lợi tích phân Ki (integral gain) nhân với
tích phân của sai lệch cộng với độ lợi vi phân Kd (derivative gain) nhân với vi phân
của sai lệch.
Tín hiệu điều khiển u được cấp tới plant và đầu ra mới y được thu thập. Đầu ra mới
này sau đó được cấp ngược về (hồi tiếp) và so sánh với giá trị tham chiếu đầu ra
mong muốn (reference) để tìm tín hiệu sai lệch mới. Bộ điều khiển lấy tín hiệu sai

17
lệch mới này và tính toán để có một giá trị đầu vào điều khiển mới. Quá trình
(process) này cứ như vậy tiếp tục.
Hàm truyền của một bộ điều khiển PID được trình bày như sau (2):
Ki
GPID ( s)  K p   Kd s
s
trong đó:
Kp = độ lợi tỉ lệ (proportional gain)
Ki = độ lợi tích phân (integral gain)
Kd = độ lợi vi phân (derivative gain)
Cho Kp=1, Ki=1, Kd=1, hãy nhập mô hình hàm truyền của bộ điều khiển PID vào
MATLAB.
Kp = 1;
Ki = 1;
Kd = 1;
s = tf('s');
C = Kp + Ki/s + Kd*s
5.2 Những tính chất của hạng tử (term) P, I, D
Tăng độ lợi tỉ lệ (Kp) làm tăng tín hiệu điều khiển đối với cùng mức độ sai
lệch. Bộ điều khiển sẽ tác động mạnh hơn cho cùng một mức độ sai lệch, do đó có
xu hướng làm cho hệ vòng kín phản ứng nhanh hơn, nhưng cũng làm tăng độ vọt lố
(overshoot). Một ảnh hưởng khác của việc tăng Kp là nó có xu hướng làm giảm,
nhưng không loại trừ, sai lệch trạng thái ổn định (steady-state error).
Việc thêm vào hạng tử vi phân (Kd) vào bộ điều khiển giúp thêm vào khả
năng “dự đoán” (“anticipate”) sai lệch của bộ điều khiển. Với điều khiển tỉ lệ đơn
giản, nếu Kp là cố định (fixed), cách duy nhất để tín hiệu điều khiển tăng là khi sai
lệch tăng. Với điều khiển vi phân, tín hiệu điều khiển có thể lớn nếu sai lệch bắt đầu
tăng lên, ngay cả khi độ lớn của sai lệch vẫn còn tương đối nhỏ. Sự “dự đoán” này
có xu hướng thêm vào hệ thống sự tắt dần (add damping), do đó làm giảm độ vọt lố.
Tuy nhiên, việc thêm vào hạng tử vi phân không có ảnh hưởng đến sai lệch trạng
thái ổn định.
Thêm vào bộ điều khiển hạng tử tích phân (Ki) có xu hướng làm giảm sai
lệch trạng thái ổn định. Nếu có một sai lệch ổn định, kéo dài, bộ tích phân tích lũy
và tích lũy (build and build), do đó làm tăng tín hiệu điều khiển và làm giảm sai
lệch xuống. Một hạn chế (drawback) của hạng tử tích phân là nó có thể làm cho hệ
trì truệ (sluggish) và dao động (oscillatory).
Những ảnh hưởng tổng thể của các thông số Kp, Kd, Ki của bộ điều khiển lên
một hệ vòng kín được tóm tắt trong bảng dưới. Chú ý rằng, bảng này đúng trong
nhiều trường hợp nhưng ko phải tất cả. Nếu bạn thật sự muốn biết ảnh hưởng của
từng độ lợi, bạn phải làm nhiều phân tích hơn, hoặc là thực hành trên hệ thống thực.

18
5.3 Các tiêu chí chất lượng hệ thống

5.3.1 Sai số xác lập (Steady-state error)


 Sai số: là hiệu số giữa tín hiệu đặt và tín hiệu hồi tiếp.

e(t )  yref (t )  yht (t )


 Sai số xác lập: là sai số của hệ thống khi thời gian tiến đến vô cùng.

exl  lim e(t )  lim sE (s)


t  t 

5.3.2 Độ vọt lố (POT – Percent of Overshoot)


 Hiện tượng vọt lố là hiện tượng đáp ứng của hệ thống trong quá trình quá độ
vượt quá giá trị xác lập của nó.
 Công thức:

ymax  yxl
POT %  .100%
yxl
5.3.3 Thời gian đáp ứng
 Thời gian tăng - tr (rise time): là thời gian đáp ứng của hệ thống tăng từ
10% đến 90% giá trị xác lập của nó.

19
 Thời gian quá độ - ts (settling time): là thời gian mà sau đó đáp ứng của hệ
thống có sai số nằm trong khoảng ε% (ε thường là 2% hoặc 5%) quanh giá trị
xác lập.

5.4 Giới thiệu phương pháp thực nghiệm Ziegler và Nichols


Có hai phương pháp được gọi là quy tắc điều chỉnh Ziegler và Nichols. Trong phần
thực hành này sẽ trình bày ngắn gọn hai phương pháp trên:
5.4.1 Phương pháp Ziegler và Nichols dựa trên đáp ứng vòng hở
Phương pháp này áp dụng cho các hệ ổn định vòng hở, với các bước như sau:
 Áp một hàm nấc đơn vị tại ngõ vào của hệ thống và xác định thời gian trễ L
và thời hằng T của đường cong đáp ứng (hình 2a);
 Thông số bộ điều khiển PID được xác định:
T T
K p _ ZN  1.2 ; Ki _ ZN  0.6 2 ; K d _ ZN  0.6T
L L

Hình 2: Các thông số đo đạc được từ phương pháp Ziegler-Nichols


5.4.2 Phương pháp Ziegler và Nichols dựa trên đáp ứng vòng kín
Một phương pháp khác để xác định các thông số của bộ điều khiển PID có các bước
như sau:
 Thiết lập vòng hồi tiếp âm đơn vị, với bộ điều khiển tỉ lệ có độ lợi Kp;
 Tăng độ lợi Kp đến giá trị Ku mà ở đó đáp ứng bắt đầu dao động và đo chu kì
dao động P của đáp ứng (hình 2b);
 Thông số bộ điều khiển PID được xác định:
Ku
K p _ ZN  0.6 Ku ; Ki _ ZN  1.2 ; K d _ ZN  0.075Ku P
P

20
5.5 Bài toán ví dụ (example problem)
Giả sử ta có hệ bộ giảm chấn-lò xo-khối lượng (mass-spring-damper system) đơn
giản:

Hình 3: Mô hình lò xo giảm chấn


Phương trình chủ đạo (governing equation) của hệ là:
mx  bx  kx  F
Biến đổi Laplace phương trình chủ đạo, ta có:
ms 2 X  s   bsX  s   kX  s   F  s 

Hàm truyền giữa lực đầu vào F(s) (input force) và độ chuyển vị đầu ra X(s) (output
displacement) trở thành:
X s 1
 2
F  s  ms  bs  k

Cho m = 1 kg
b = 10 N s/m
k = 20 N/m
F=1N
Hãy thay các giá trị trên vào hàm truyền vừa có được.
Hãy tạo một m-file để tìm đáp ứng step của hàm truyền vừa tìm được.
Vào File/New/M-File để tạo một m-file
Nhập vào:
s=tf('s');
s=1/(s^2+10*s+20);
step(G)
Lưu file với tên bất kỳ và gọi tên file ở cửa sổ lệnh
Thực hiện lại việc này bằng cách sử dụng Simulink.

21
Quan sát đáp ứng khi sử dụng M-file và simulink,

Ta thấy, độ lợi (DC gain) của hàm truyền của plant (đối tượng điều khiển) là 1/20,
do đó 0.05 là giá trị sau cùng (final value) của đầu ra đối với một đầu vào step đơn
vị. Điều này có nghĩa là sai lệch ở trạng thái ổn định (steady-state error) là 0.95, khá
lớn. Hơn thế nữa, thời gian tăng (rise time) là khoảng 1s, và thời gian quá độ
(settling time) là khoảng 1.5s. Ta hãy thiết kế một bộ điều khiển mà sẽ làm giảm
thời gian tăng, giảm thời gian quá độ, và loại bỏ sai lệch trạng thái ổn định.
Điều chỉnh các thông số PID
1) Điều khiển tỉ lệ (Proportional control)
Từ bảng trên, ta thấy rằng bộ điều khiển tỉ lệ (Kp) làm giảm thời gian tăng (rise
time), và tăng độ vọt lố, và giảm sai lệch trạng thái ổn định. Hàm truyền vòng kín
T(s) của hệ hồi tiếp đơn vị với bộ điều khiển tỉ lệ có dạng sau, trong đó X(s) là đầu
ra (bằng với Y(s)) và tham chiếu R(s) (reference)) là đầu vào (chú ý, không phải
F(s)).
X s Kp
T s   2
R  s  s  10s   20  K p 

Hàm truyền vòng kín T(s) đã được rút ra như thế nào ?
X s C  s  .G  s  Kp
T s    2
R  s  1  C  s  .G  s  s  10s   20  K p 

22
Cho độ lợi tỉ lệ Kp = 300:
Hãy thay đổi m-file để tìm hàm truyền vòng kín của hệ sử dụng lệnh feedback?
Tìm đáp ứng step của hàm truyền vòng kín (thời gian mô phỏng từ 0 đến 2s)?
s=tf('s');
G=1/(s^2+10*s+20);
Kp=300;
C=Kp;
sys=feedback(G*C,1)
t=0:0.1:2;
step(sys,t)
Hãy dùng simulink để biểu diễn toàn bộ hệ trên ?

Hình 4: Mô hình điều khiển tỉ lệ


2) Điều khiển Vi phân -Tỉ lệ (Proportional-Derivative control)
Từ bảng trên, ta thấy rằng việc thêm vào điều khiển vi phân (Kd) có xu hướng làm
giảm độ vọt lố và thời gian quá độ.
Hãy kiểm chứng lại điều này bằng cách:
Hãy tìm hàm truyền vòng kín của hệ với bộ điều khiển PD (dựa vào hình 1) bằng
cách thủ công (manually)? Cho Kp = 300, Kd=10
X s C  s  .P  s 
T s  
R  s  1  C  s  .P  s 
 
K p Kd s   2
 s 
1
10s  20



 
1   K p  Kd s   2
1

 s  10s  20 
K p  Kd s
 2
s  10s  20  K p  K d s

23
K p  Kd s

s  10  K d  s  20  K p
2

10s  300

s  20s  320
2

Hãy thay đổi m-file để tìm hàm truyền vòng kín của hệ sử dụng lệnh feedback?
Tìm đáp ứng step của hàm truyền vòng kín (thời gian mô phỏng từ 0 đến 2s)?
s=tf('s');
G=1/(s^2+10*s+20);
Kp=300;
Kd=10;
C=Kp + Kd*s;
sys=feedback(G*C,1)
t=0:0.1:2;
step(sys,t)
Hãy dùng simulink để biểu diễn toàn bộ hệ trên?

Hình 5: Mô hình điều khiển tỉ lệ-vi phân


3) Điều khiển Tích phân-Tỉ lệ (Proportional-Integral control)
Từ bảng, ta thấy rằng việc thêm vào điều khiển tích phân (Ki) có xu hướng làm
giảm thời gian tăng, tăng cả độ vọt lố và thời gian quá độ, và giảm sai lệch trạng
thái ổn định.
Hãy tìm hàm truyền vòng kín của hệ với bộ điều khiển PI bằng cách thủ công
(manually)? Cho Kp = 30, Ki=70
X s C  s  .P  s 
T s  
R  s  1  C  s  .P  s 

24
 1  1 
 K p  Ki  2 
s  s  10s  20 
 
 1  1 
1   K p  Ki  2 
 s  s  10s  20 
K p s  Ki
 3
s  10s   20  K p  s  Ki
2

Hãy thay đổi m-file để tìm hàm truyền vòng kín của hệ sử dụng lệnh feedback?
Tìm đáp ứng step của hàm truyền vòng kín (thời gian mô phỏng từ 0 đến 2s)?
s=tf('s');
G=1/(s^2+10*s+20);
Kp=30;
Ki=70;
C=Kp + Ki*(1/s);
sys=feedback(G*C,1)
t=0:0.1:2;
step(sys,t)
Hãy dùng simulink để biểu diễn toàn bộ hệ trên?

Hình 6: Mô hình điều khiển tỉ lệ-tích phân


4) Điều khiển Tỉ lệ-Tích phân-Vi phân (Proportional-Integral-Derivative
control)
Cho độ lợi tỉ lệ Kp = 350, Ki=300, Kd=50
Hãy thay đổi m-file để tìm hàm truyền vòng kín của hệ sử dụng lệnh feedback?
Tìm đáp ứng step của hàm truyền vòng kín (thời gian mô phỏng từ 0 đến 2s)?
s=tf('s');
G=1/(s^2+10*s+20);
Kp = 350;

25
Ki = 300;
Kd = 50;
C=Kp + Ki*(1/s) + Kd*s;
sys=feedback(G*C,1)
t=0:0.1:2;
step(sys,t)
Hãy dùng simulink để biểu diễn toàn bộ hệ trên?

Hình 7: Mô hình điều khiển tỉ lệ-vi phân-tích phân


Hướng dẫn chung để thiết kế một bộ điều khiển PID
Khi ta thiết kế một bộ điều khiển PID cho một hệ thống đã cho, làm theo các bước
sau để đạt được đáp ứng mong muốn.
 Tìm đáp ứng vòng hở và quyết định xem thứ gì cần được cải thiện
 Thêm vào một điều khiển tỉ lệ để cải thiện thời gian tăng (rise time)
 Thêm vào một điều khiển vi phân để giảm độ vọt lố (overshoot)
 Thêm vào một điều khiển tích phân để giảm sai lệch trạng thái ổn định
(steady-state error)
Điều chỉnh từng độ lợi của Kp, Ki, và Kd cho đến khi đạt được đáp ứng tổng thể
mong muốn.
Cuối cùng, nên nhớ rằng, ta không cần phải sử dụng tất cả 3 loại điều khiển (tỉ lệ, vi
phân, và tích phân) vào một hệ, nếu không cần thiết. Ví dụ, nếu một bộ điều khiển
PI thỏa mãn các yêu cầu đề ra (như ví dụ ở trên), thì ta không cần dùng điều khiển
vi phân vào hệ. Nên để cho bộ điều khiển càng đơn giản càng tốt.
5.6 Bài tập thực hành
Cho hàm truyền sau:
10
G( s) 
( s  1)( s  5)
Hãy thiết kế bộ điều khiển PID cho đối tượng được mô tả bởi hàm truyền trên trong
MATLAB và simulink.

26
BÀI 6: ỨNG DỤNG SIMULINK TRONG MÔ PHỎNG ĐIỀU KHIỂN

6.1 Xây dựng mô hình hệ thống xe tải

Hình 8: Mô hình xe tải


1
Cho bởi phương trình vi phân: v  (u  bv)
m
Trong đó, m là khối lượng xe, u là lực tác động của động cơ (ngõ vào của mô hình),
b là hệ số ma sát và v là vận tốc đạt được (ngõ ra của mô hình).
Các bước tiến hành:
1) Xuất phát điểm của việc xây dựng các mô hình hệ thống từ các phương trình
vi phân tương ứng là các khối tích phân (Integrator). Nếu trong phương trình
mô tả hệ thống có vi phân bậc n thì ta sẽ đặt vào mô hình n khối tích phân,
dv
do quan hệ  dt  v
 Mở một cửa sổ mô hình mới;
 Đặt vào mô hình khối „Integrator‟ từ thư viện „Continuous‟;
 Đặt nhãn „vdot‟ (dv/dt) cho cho đường nối đến ngõ vào và „v‟ cho đường nối
đến ngõ ra bằng cách nhấp đúp chuột ngay phía trên các đường này.

2) Từ phương trình hệ thống ta thấy dv/dt (vdot) bằng tích của thành phần
(1/m) và thành phần tổng (u-bv), nên ta thêm khối 1/m ngay trước khối
tích phân
 Đặt vào khối „Gain‟ trong thư viện Math;
 Nhấp đúp chuột vào khối này để thay đổi độ lợi thành 1/m.

27
3) Đặt khối tổng với 2 ngõ vào „+-„, ngõ vào „+‟ sẽ được nối với u, ngõ vào „-‟
sẽ được nối với thành phần bv để được (u-bv)
 Đặt vào mô hình khối „Sum‟ trong thư viện Math;
 Nhấp đúp vào khối này để đổi ngõ vào từ „++‟ sang „+-‟

4) Đặt thêm khối ngõ vào „Step‟ (ngõ vào u) và khối ngõ ra „Scope‟ (ngõ ra v)
cho mô hình
 Đặt khối „Step‟ trong thư viện „Sources‟ biên độ u ngay ngõ vào;
 Đặt khối „Scope‟ trong thư viện „Sink‟ ngay ngõ ra v.

Nhập m, b và u để tiến hành mô phỏng


>> m=1000
>> b=50
>> u=500
Để chạy mô phỏng ta có thể thực hiện một trong cách sau:

 Nhấp chuột vào biểu tượng


 Chọn Simulation -> Start
 Bấm tổ hợp Ctrl+T
Nhấp đúp vào Scope để xem kết quả mô phỏng.

28
6.2 Xây dựng mô hình điều khiển vị trí động cơ DC

Hình 9: Mô hình điều khiển vị trí động cơ DC


Mô hình động cơ DC được mô tả bởi phương trình vi phân:
1
 ( Ki i  b )
J
1
i  ( Ri  V  K e )
L
Trong đó:
J=0.01 Kgm2/s2, là moment quán tính của rotor
b=0.1 Mms, là hệ số ma sát
K=Ke=Kt=0.01 Nm/A, là hằng số sức điện động
R=10 ohm, là điện trở dây quấn
L=0.5 H, là hệ số tự cảm.
Quan sát từng phương trình mô tả hệ thống ta thấy cấu trúc của chúng cũng tương
tự như phương trình của “Mô hình xe tải”. Sinh viên lần lượt thực hiện trên từng
phương trình để được mô hình như hình bên dưới:

29
Kết hợp 2 phương trình:

Đặt vào mô hình khối „Step‟ để làm tín hiệu tham khảo, khối „Scope‟ để quan sát
đáp ứng.

Hãy gán trị cho tất cả các thông số của mô hình, thực hiện mô phỏng và quan sát
đáp ứng.
Hãy thay đổi ngõ vào mô hình bằng khối tạo xung vuông. Mô phỏng, quan sát kết
quả và nhận xét.
6.3 Xây dựng mô hình con lắc ngược
Cho bởi phương trình vi phân:

x
1
M m
F  ml 2 sin  ml cos  bx 
1
  mlxcos  mglsin 
I  ml 2
Trong đó: M = dd/15; m = mm/10; l = yyyy/1000; b = 0.1; I = 0.006; g = 9.8;
Với dd là ngày sinh, mm là tháng sinh, yyyy là năm sinh của sinh viên.
Yêu cầu: Xây dựng mô hình và mô phỏng con lắc ngược trên Simulink.

30

You might also like