Gi¸o tr×nh M« h×nh ho¸
Bé m«n Tù ®éng ho¸ http://www.ebook.edu.vn Khoa §iÖn
72
Ch¬ng 6- øng dông matlab-simulink m« pháng c¸c
hÖ thèng ®iÒu khiÓn tù ®éng
6.1- Kh¸i niÖm chung
Nh ®· tr×nh bµy ë c¸c ch¬ng tríc ®©y, ph¬ng ph¸p m« pháng ®îc øng dông vµo
nhiÒu lÜnh vùc kh¸c nhau. Ngµy nay ngêi ta ®· ph¸t triÓn nhiÒu phÇn mÒm chuyªn dông dïng
cho m« h×nh ho¸ vµ m« pháng. Mét trong nh÷ng phÇn mÒm ®îc øng dông réng r·i hiÖn nay
lµ MATLAB - SIMULINK ®îc dïng ®Ó m« pháng c¸c hÖ thèng ®éng häc. PhÇn mÒm nµy
cung cÊp cho c¸c kü s, c¸c c¸n bé kü thuËt mét c«ng cô tÝnh to¸n m¹nh, mét ph¬ng tiÖn m«
pháng, ph©n tÝch vµ tæng hîp c¸c hÖ thèng ®éng häc.
MATLAB (Matrix Laboratory) lµ mét m«i trêng tÝnh to¸n trªn ma trËn rÊt m¹nh.
Matlab ®îc tÝch hîp mét sè Toolbox, ®ã lµ th viÖn cña c¸c hµm hç trî cho Matlab gi¶i c¸c
øng dông riªng biÖt nh: hÖ thèng ®iÒu khiÓn, xö lý tÝn hiÖu, tèi u ho¸, nhËn d¹ng, ®iÒu khiÓn
bÒn v÷ng v.v…
SIMULINK (tríc ®©y gäi lµ SIMULAB) lµ mét m«i trêng m« pháng dùa trªn nÒn
Matlab vµ c¸c Toolbox hÖ thèng ®iÒu khiÓn (Control System) vµ xö lý tÝn hiÖu (Signal
Processing). V× vËy Simulink ®îc coi lµ phÇn më réng cña Matlab ®îc dïng ®Ó m« pháng
hÖ thèng ®éng häc. Simulink cho phÐp lËp tr×nh ë d¹ng s¬ ®å cÊu tróc cho nªn rÊt thuËn tiÖn
trong viÖc m« pháng vµ kh¶o s¸t c¸c hÖ thèng ®iÒu khiÓn tù ®éng.
6.2- Giíi thiÖu vÒ Matlab- Simulink
6.2.1- Matlab
Matlab ®îc ph¸t triÓn bëi c«ng ty MathWork Inc - lµ mét ch¬ng tr×nh ph©n tÝch vµ
lµm to¸n trªn ma trËn, thiÕt kÕ hÖ thèng ®iÒu khiÓn, nhËn d¹ng hÖ thèng, ®å ho¹ 2D, 3D.
Matlab lµ mét m«i trêng më, cung cÊp c¸c thuËt to¸n vµ kh¶ n¨ng lËp tr×nh cho phÐp ngêi
sö dông t¹o ra c¸c øng dông, c¸c ch¬ng tr×nh riªng cña m×nh.
Matlab cã mét th viÖn lín gåm h¬n 500 hµm to¸n häc tõ ®¹i sè tuyÕn tÝnh, c¸c hµm ma
trËn ®Õn ph©n tÝch biÕn ®æi Fourier vµ c¸c ph¬ng ph¸p sè phi tuyÕn. Matlab cã mét sè
Toolbox ®ã lµ nh÷ng th viÖn hµm chuyªn dông nh»m gi¶i c¸c bµi to¸n trong c¸c lÜnh vùc
chuyªn m«n kh¸c nhau.
Lµm viÖc víi Matlab rÊt ®¬n gi¶n vµ thuËn tiÖn. Cã hai c¸ch lµm viÖc: lµm viÖc víi cöa
sæ lÖnh vµ lµm viÖc víi c¸c M-file. Khi lµm viÖc víi cöa sæ lÖnh, sau dÊu nh¾c (prompt) cña
Matlab “>>” ngêi sö dông ®a vµo c¸c c«ng thøc, c¸c hµm, c¸c lÖnh ®Ó tÝnh to¸n vµ Matlab
tr¶ lêi ngay sau mçi lÖnh. C¸ch lµm viÖc nµy gièng nh tÝnh to¸n trªn trang giÊy, cho phÐp
ngêi sö dông thö c¸c phÐp tÝnh c¸c thuËt to¸n rÊt thuËn tiÖn.
Lµm viÖc víi M-file: Matlab cho phÐp lËp tr×nh, ch¬ng tr×nh lµ mét d·y lÖnh thùc hiÖn
mét sè nhiÖm vô tÝnh to¸n nhÊt ®Þnh. Ch¬ng tr×nh ®îc ghi thµnh file cã phÇn më réng lµ .m
víi tªn file (filename) tù ®Æt ®îc gäi lµ M.file. §Ó ch¹y ch¬ng tr×nh, sau dÊu nh¾c “>>” ta
Gi¸o tr×nh M« h×nh ho¸
Bé m«n Tù ®éng ho¸ http://www.ebook.edu.vn Khoa §iÖn
73
gâ vµo tªn file kh«ng cã phÇn më réng. Lóc nµy Matlab coi M-file nh command file hay
script file vµ ch¬ng tr×nh ®îc thùc hiÖn theo tuÇn tù c¸c lÖnh ®· x¸c ®Þnh. B×nh thêng khi
ch¹y ch¬ng tr×nh c¸c lÖnh kh«ng hiÓn thÞ trªn mµn h×nh.
Matlab cã c¸c lo¹i lÖnh c¬ b¶n sau:
+ C¸c lÖnh chung vµ gì rèi
+ C¸c lÖnh lµm viÖc víi ma trËn vµ vect¬
+ C¸c lÖnh lµm viÖc víi c¸c hµm vµ ®a thøc
+ C¸c lÖnh ®å ho¹ 2D vµ 3D
+ C¸c lÖnh xö lý tÝn hiÖu vµ ph©n tÝch hÖ thèng
Ng÷ ph¸p lËp tr×nh cña Matlab rÊt ®¬n gi¶n vµ gÇn gièng c¸c ng«n ng÷ bËc cao kh¸c nh
C, Basic vµ Fortran. Sau ®©y lµ mét sè lÖnh, hµm vµ cÊu tróc thêng dïng trong lËp tr×nh.
+ C¸c phÐp to¸n quan hÖ:
< nhá h¬n <= nhá h¬n hoÆc b»ng = = b»ng
> lín h¬n >= lín h¬n hoÆc b»ng
= kh«ng b»ng
+ C¸c phÐp to¸n logic: AND, OR vµ NOT
+ C¸c lÖnh ®iÒu kiÖn vµ vßng lÆp: for, while vµ if-else
LÖnh vßng lÆp for cã có ph¸p nh sau:
For biÕn = biÓu thøc, lÖnh, lÖnh, ..., end
C¸c vßng for ... end cã thÓ lång vµo nhau
LÖnh vßng lÆp while cã có ph¸p nh sau:
While biÓu thøc, lÖnh, lÖnh, ..., end
LÖnh rÏ nh¸nh cã ®iÒu kiÖn if ... else ... end. Cã ba d¹ng cÊu tróc rÏ nh¸nh vµ cã có ph¸p
nh sau:
If biÓu thøc, lÖnh, lÖnh, ... end
If biÓu thøc, lÖnh, lÖnh, ... else lÖnh, lÖnh, ... end
If biÓu thøc 1, lÖnh, lÖnh, ... elseif biÓu thøc 2, lÖnh, lÖnh, ... end
+ M file: Script file vµ Function file
Hai d¹ng cña M.file lµ Script file vµ Function file.
Script file chøa ch¬ng tr×nh gåm mét sè lÖnh ®Ó thùc hiÖn nhiÖm vô tÝnh to¸n ®· ®Þnh.
Khi ch¹y ch¬ng tr×nh chØ cÇn gâ tªn file (filename) kh«ng cã ®u«i më réng .m.
Function file lµ lÖnh më réng cña Matlab, tÊt c¶ c¸c lÖnh trong c¸c Toolbox ®Òu cã d¹ng
function. Function cã có ph¸p nh sau:
Function [biÕn ra 1, biÕn ra 2, ] = filename (biÕn vµo 1, biÕn vµo 2 ]
Gi¸o tr×nh M« h×nh ho¸
Bé m«n Tù ®éng ho¸ http://www.ebook.edu.vn Khoa §iÖn
74
Kh¸c nhau c¬ b¶n gi÷a Script vµ Function lµ Function chØ dïng biÕn riªng cña m×nh vµ
kh«ng t¸c ®éng tíi toµn bé ch¬ng tr×nh. Dßng ®Çu tiªn cña Function file ph¶i cã ch÷
“Function”
6.2.2- Simulink
Simulink ®îc coi lµ phÇn më réng cña Matlab. Simulink ®îc dïng ®Ó m« pháng c¸c
hÖ ®éng häc c¸c hÖ tuyÕn tÝnh, phi tuyÕn, c¸c m« h×nh trong thêi gian liªn tôc hoÆc gi¸n ®o¹n.
§Æc ®iÓm næi bËt cña Simulink lËp tr×nh ë d¹ng s¬ ®å cÊu tróc, sö dông c¸c ®èi tîng ®å häa
(Graphic Programming). Lo¹i lËp tr×nh híng ®èi tîng nµy cã u ®iÓm lµ tÝnh trùc quan, dÔ
viÕt vµ h×nh dung nhÊt lµ ®èi víi nh÷ng ngêi lËp tr×nh kh«ng chuyªn nghiÖp. Simulink cung
cÊp giao diÖn ®å häa ®Ó x©y dùng m« h×nh ë d¹ng s¬ ®å khèi. B»ng thao t¸c “nhÊn vµ kÐo
chuét” ngêi sö dông cã thÓ kÐo c¸c khèi chuÈn trong th viÖn cña Simulink ra vïng lµm viÖc
cña m×nh ®Ó x©y dùng m« h×nh m« pháng.
Ngêi sö dông cã thÓ thay ®æi hoÆc t¹o ra khèi riªng cña m×nh vµ bæ sung vµo th viÖn
nh lµ mét khèi øng dông míi. Simulink cã c¸c th viÖn sau: th viÖn c¸c khèi nguån tÝn hiÖu
(Sources), th viÖn c¸c khèi xuÊt vµ hiÓn thÞ d÷ liÖu (Sink), th viÖn c¸c phÇn tö tuyÕn tÝnh
(Linear), th viÖn c¸c phÇn tö phi tuyÕn (Nonlinearr), th viÖn c¸c khèi gi¸n ®o¹n (Discrete),
th viÖn c¸c khèi nèi (Connections), th viÖn c¸c khèi phô (Extras).
M« h×nh trong Simulink ®îc x©y dùng theo kiÓu ph©n cÊp ®iÒu ®ã cho phÐp ngêi sö
dông cã thÓ x©y dùng m« h×nh theo híng tõ díi lªn trªn hoÆc tõ trªn xuèng díi. Dïng
chøc n¨ng t¹o “mÆt n¹” (Mask) cña Simulink ngêi ta cã thÓ x©y dùng c¸c hÖ con (ph©n hÖ)
b»ng c¸ch t¹o hép tho¹i vµ biÓu tîng míi cho khèi. øng dông quan träng cña mÆt n¹ lµ t¹o ra
hép tho¹i ®Ó tiÕp nhËn th«ng sè cña c¸c khèi trong hÖ con, ngoµi ra mÆt n¹ cßn lµm cho m«
h×nh ®¬n gi¶n, râ rµng vµ b¶o vÖ néi dung cña khèi khái sù x©m nhËp cña ngêi l¹. Khi thùc
hiÖn m« pháng b»ng Simulink ngêi sö dông võa cã thÓ quan s¸t hÖ thèng ë møc tæng quan,
võa cã thÓ xem xÐt chi tiÕt ho¹t ®éng cña tõng khèi b»ng c¸ch nh¸y ®óp chuét vµo khèi ®ã.
C¸c khèi Scope vµ khèi hiÓn thÞ kh¸c (lÊy trong th viÖn Sinks) cho phÐp ngêi sö dông quan
s¸t kÕt qu¶ trong khi ®ang ch¹y m« pháng. H¬n n÷a ngêi sö dông cßn cã thÓ trùc tiÕp thay
®æi th«ng sè trong khi ®ang ch¹y m« pháng ®Ó biÕt ®îc ¶nh hëng cña c¸c th«ng sè ®ã ®èi
víi kÕt qu¶ cña m« pháng.
Simulink cã mét ®Æc tÝnh quan träng lµ khi ta x©y dùng m« h×nh d¹ng s¬ ®å khèi th×
Simulink tù ®éng t¹o ra mét M.file (function) cho m« h×nh ®ã. Hµm nµy ®îc gäi lµ S-
function. Còng gièng nh c¸c hµm kh¸c cña Matlab, hµm S-function lµ mét file më, ngêi sö
dông cã thÓ truy nhËp vµo vµ so¹n th¶o. LÖnh ®Ó më mét S-function lµ sfun. §iÒu ®ã cã nghÜa
lµ cã thÓ so¹n th¶o ch¬ng tr×nh m« pháng mµ kh«ng cÇn th«ng qua giao diÖn ®å thÞ. MÆt
kh¸c, Simulink cho phÐp chuyÓn ®æi tõ S-function sang s¬ ®å khèi vµ ngîc l¹i. Nh vËy rÊt
thuËn tiÖn cho ngêi sö dông.
Gi¸o tr×nh M« h×nh ho¸
Bé m«n Tù ®éng ho¸ http://www.ebook.edu.vn Khoa §iÖn
75
6.3- øng dông Matlab - Simulink ®Ó ph©n tÝch vµ kh¶o s¸t hÖ thèng ®iÒu
khiÓn tù ®éng trong miÒn thêi gian vµ tÇn sè
Trong phÇn nµy sÏ tr×nh bµy mét sè lÖnh cña Matlab dïng ®Ó ph©n tÝch c¸c hÖ ®iÒu khiÓn
kinh ®iÓn, c¸c lÖnh nµy còng cã trong Control System Toolbox cña Matlab.
Cho hµm truyÒn cña mét hÖ ®iÒu khiÓn tù ®éng G(s) = B(s)/A(s), trong ®ã B(s) - biÓu
thøc tö sè (numerator) vµ A(s) - biÓu thøc mÉu sè (denominator). Chóng ta quan t©m ®¸p øng
cña hÖ thèng trong miÒn thêi gian còng nh trong miÒn tÇn sè ®èi víi c¸c tÝn hiÖu vµo kh¸c
nhau nh hµm xung, hµm bíc nh¶y, hµm ®iÒu hßa v.v
a). MiÒn thêi gian
ChÊt lîng cña c¸c hÖ thèng tù ®éng ®iÒu khiÓn thêng ®îc ®¸nh gi¸ dùa trªn ®¸p øng
thêi gian øng víi c¸c tÝn hiÖu vµo kh¸c nhau. V× vËy ®¸p øng thêi gian cã vai trß quan träng
trong viÖc ph©n tÝch vµ tæng hîp hÖ thèng.
§Ó t×m ®¸p øng cña hÖ G(s) khi tÝn hiÖu vµo lµ hµm bËc thang ®¬n vÞ 1(t) Matlab dïng
lÖnh step. Có ph¸p nh sau:
>> y = step(num, den, t)
Tríc tiªn ph¶i x¸c ®Þnh trôc thêi gian t lµ mét vect¬. Gi¸ trÞ ®¸p øng ra còng lµ mét
vect¬ cã cïng kÝch thíc víi vect¬ t. VÝ dô vÏ ®êng cong ®¸p øng cña hµm 1(t) trong qu·ng
thêi gian tõ t = 0 ®Õn t = 10 sec, mçi bíc tÝnh lµ 0,1 sec cña hÖ thèng cã hµm truyÒn ®¹t sau
®©y:
2
10
G(s) s2s10
=++
C¸c dßng lÖnh sau ®©y sÏ vÏ ®êng cong ®¸p øng nãi trªn:
>>num = 10; den = [1 2 10];
>>t = [0:0.1:10]; y = step (num, den, t); plot(t,y) ;
LÖnh impulse sÏ cho ta ®¸p øng ra khi tÝn hiÖu ®Çu vµo lµ xung. Có ph¸p nh sau :
>>y = impulse (num, den, t);
Trong trêng hîp ®Çu vµo lµ hµm bÊt kú th× dïng lÖnh lsim. Có ph¸p nh sau :
>>y = lsim (num, den, u, t);
Trong ®ã u lµ vect¬ tÝn hiÖu ®Çu vµo. VÝ dô ®Çu vµo lµ hµm dèc ramp, có ph¸p nh sau :
>> ramp = t ; y = lsim (num, den, ramp, t) ;
NÕu hµm vµo lµ hµm rand(m,n) sÏ sinh ra ma trËn m×n sè ngÉu nhiªn ph©n bè ®Òu trong
kho¶ng (0,1), có ph¸p nh sau :
>>noise = rand(m,n) ; y = lsim (num, den, rand, t) ;
Gi¸o tr×nh M« h×nh ho¸
Bé m«n Tù ®éng ho¸ http://www.ebook.edu.vn Khoa §iÖn
76
§¸p øng ®Çu ra khi ®Çu vµo lµ hµm 1(t), khi ®iÒu kiÖn ®Çu b»ng kh«ng, ®îc gäi lµ ®Æc
tÝnh qu¸ ®é h(t) cña hÖ thèng. Tõ ®Æc tÝnh qu¸ ®é cã thÓ x¸c ®Þnh ®îc c¸c chØ tiªu chÊt lîng
cña hÖ thèng sau :
- §é qu¸ ®iÒu chØnh (Percent Overshoot)
max
hh
% 100%
h
δ=
- Thêi gian cùc ®¹i tmax (Peak time) lµ qu·ng thêi gian ®Ó ®êng qu¸ ®é ®¹t gi¸ trÞ
cùc ®¹i hmax
- Thêi gian t¨ng tr (Rise time) lµ qu·ng thêi gian tõ khi ®êng qu¸ ®é ®¹t 10%h
®Õn 90%h
- Thêi gian qu¸ ®é (Settling time) lµ qu·ng thêi gian tõ t = 0 ®Õn khi ®êng h(t) ®i
vµo vïng ±5%h.
Cã thÓ lËp ch¬ng tr×nh ®Ó tÝnh c¸c chØ tiªu chÊt lîng cña hÖ thèng díi d¹ng mét M-
files.
VÝ dô 1 díi ®©y sÏ minh häa ®¸p øng cña hÖ thèng víi hµm truyÒn =++
2
5
G(s) s3s20
trong thêi gian tõ 0 ®Õn 10 gi©y, thêi gian lÊy mÉu lµ 0,1s øng víi 3 trêng hîp: (1) tÝn hiÖu
®Çu vµo lµ bíc nh¶y, (2) tÝn hiÖu ®Çu vµo lµ xung hoÆc (3) tÝn hiÖu ®Çu vµo lµ ngÉu nhiªn.
Ch¬ng tr×nh viÕt díi d¹ng Scripts
% Dap ung cua he thong voi cac tin hieu dau vao khac nhau
% Ten chuong trinh: gtmh1.m
num=5; den=[1, 3, 20];
t=[1: 0.1: 10];
disp(‘Bam phim 1 neu tin hieu vao la xung’);
disp(‘Bam phim 2 neu tin hieu vao la buoc nhay’);
disp(‘Bam phim 3 neu tin hieu vao la tin hieu ngau nhien’);
a=input(‘Ban chon dang tin hieu nao:’);
switch a
case 1
y= impulse(num,den,t);
plot(t,y,‘m’) ;
title(‘Dap ung he thong voi tin hieu xung’) ;
case 2
y=step(num,den,t) ;