Đề số 06: Dùng máy tính khảo sát quá trình quá độ của hệ thống điều khiển
tự động
Cho hệ thống điều khiển tự động có sơ đồ cấu trúc như sau:
K
1
=100; K
2
=0,5
-Các bước thực hiện
Bước 1: Phương trình sai phân của hệ thống
( )
( )
1
1
1 2
1 2
4
W( )
4
1
( 4)
K
s s
K
s
K K
s s K K
s s
+
⇒ = =
+ +
+
+
Thay
2 1
1
z
s
T z
−
=
+
vào G(s) ta có:
1
1 2
( )
( )
2 1 2 1
( )
4
1 1
K
Y z
W z
z z
U z
K K
T z T z
= =
− −
+ +
÷ ÷
+ +
( )
2 2
1
2 2 2 2
1 2
2 1
4( 1) 8 ( 1) ( 1)
K T z z
z T z K K T z
+ +
=
− + − + +
( )
2 2
1
2
2 1K T z z
Az Bz C
+ +
=
+ +
Trong đó:
2 2
1 2
2
1 2
2
1 2
4 8
8 2
4 8
A T K K T
B K K T
C T K K T
= + +
= − +
= − +
1
( )
2 2
1
2
2 1
( )
( )
K T z z
Y z
U z Az Bz C
+ +
⇒ =
+ +
( ) ( )
2 2 2
1
( ) ( ). 2 1Y z Az Bz C U z K T z z
⇒ + + = + +
2 2 2 2 2
1 1 1
. ( ) . ( ) . ( ) ( ) 2 ( ) ( )Az Y z Bz Y z C Y z K T z U z K T zU z K T U z
⇒ + + = + +
Áp dụng tính chất của phép biến đổi Z ta có:
2 2 2
1 1 1
. ( 2) . ( 1) . ( ) ( 2) 2 ( 1) ( )AY k BY k C Y k K T U k K T U k K T U k
+ + + + = + + + +
Chọn
( ) 1( ) ( 2) ( 1) ( ) 1u t t U k U k U k
= ⇒ + = + = =
2
1
. ( 2) . ( 1) . ( ) 4AY k B Y k C Y k K T
+ + + + =
Phương trình sai phân của hệ thống có dạng :
2
1
4
( 2) . ( 1) . ( )
K TB C
Y k Y k Y k
A A A
⇒ + = − + − +
Bước 2: Viết chương trình mô phỏng bằng Visual Basic 6.0
Option Explicit
Dim h, w As Integer
Dim A, B, C, K1, K2 As Double
Dim T As Double
Dim Y(1000) As Double
Dim Xmin, Xmax, Ymin As Integer
Dim k, i As Integer
Dim m, n, time As Double
2
Private Sub Cmd_thoat_Click()
End
End Sub
Private Sub Cmd_Ve_Click()
Dim Ymax, Yod, Tod, Tmax, sigma As Double
Xmin = 600
Ymin = 400
h = graph.Height
w = graph.Width
Xmax = w - 400
graph.DrawStyle = 0
graph.Line (Xmin, (h - 400))-(Xmax, (h - 400))
graph.Line (Xmax - 100, h - 450)-(Xmax, h - 400)
graph.Line (Xmax, h - 400)-(Xmax - 100, h - 350)
graph.Line (Xmin, h - 400)-(Xmin, 400)
graph.Line (Xmin, 400)-(Xmin - 50, 500)
graph.Line (Xmin, 400)-(Xmin + 50, 500)
graph.CurrentX = Xmin - 300
graph.CurrentY = Ymin
graph.Print ("y(t)")
graph.CurrentX = Xmax - 200
graph.CurrentY = h - 260
graph.Print ("time(s)")
graph.CurrentX = Xmin - 150
graph.CurrentY = h - 350
graph.Print ("0")
K1 = txtK1.Text
K2 = txtK2.Text
T = 0.01
3
time = 10
A = 4 + 8 * T + K1 * K2 * T * T
B = -8 + 2 * K1 * K2 * T * T
C = 4 - 8 * T + K1 * K2 * T * T
Ymax = 0
For k = 1 To 997
Y(k + 2) = (-B / A) * Y(k + 1) - (C / A) * Y(k) + 4 * K1 * T * T / A
If Y(k) > Ymax Then
Ymax = Y(k)
Tmax = k * T
End If
Next k
Yod = 1 / K2
sigma = 100 * (Ymax - Yod) / Yod
Tod = 1000
Do While (Abs(Y(Tod) - Yod) / Yod) < 0.05
Tod = Tod - 1
Loop
Tod = Tod * T
m = (w - 1500) / 5
For i = 1 To 5
graph.Line (m * i + 400, h - 350)-(m * i + 400, h - 450)
graph.CurrentX = m * i + 400
graph.CurrentY = h - 300
graph.Print CStr(time * i / 5)
Next i
n = (h - 1200) / 5
For i = 0 To 4
graph.Line (Xmin - 50, n * i + 800)-(Xmin + 50, n * i + 800)
graph.CurrentX = Xmin - 400
4
graph.CurrentY = n * i + 800
graph.Print Format(CStr(Ymax * (5 - i) / 5), "#0.00")
Next i
graph.DrawStyle = 2
graph.Line (Xmin, 800)-(w - 500, 800)
graph.Line (Xmin + (Tmax / time) * (w - 1500), 800)-(Xmin + (Tmax / time) *
(w - 1500), h - 400)
graph.CurrentX = Xmin + (Tmax / time) * (w - 1500)
graph.CurrentY = 400
graph.CurrentX = Xmin + (Tmax / time) * (w - 1500) - 200
graph.CurrentY = h - 600
graph.DrawStyle = 2
graph.Line (Xmin + (Tod / time) * (w - 1500), 1100)-(Xmin + (Tod / time) * (w
- 1500), h - 400)
graph.CurrentX = Xmin + (Tod / time) * (w - 1500) - 200
graph.CurrentY = h - 400
graph.Print "Tod=" + CStr(Tod)
txtYmax = Ymax
txtYod = Yod
txtsigma = sigma
txtTmax = Tmax
txtTod = Tod
Dim x0, y0 As Double
x0 = Xmin
y0 = h - 400
txty = ""
For i = 0 To 997 Step 1
If i Mod 10 = 0 Then
txty.Text = txty.Text + "y[" + CStr(i) + "] = " + Format(CStr(Y(i)),
"#0.00000")
5
End If
graph.DrawStyle = 0
graph.Line (x0, y0)-(Xmin + (i + 1) * T * (w - 1500) / time, h - 400 - Y(i + 1) *
(h - 1200) / Ymax)
x0 = Xmin + i * T * (w - 1500) / time
y0 = h - 400 - Y(i) * (h - 1200) / Ymax
Next i
End Sub
Bước 3: Chọn bước tính k =1000
Bước 4: In kết quả
y[0] = 0.0000000
y[10] = 4.5467847
y[20] = 11.6413671
y[30] = 12.1835091
y[40] = 7.5850282
y[50] = 4.8341400
y[60] = 6.5738528
y[70] = 9.3652775
y[80] = 9.6124627
y[90] = 7.8206686
y[100] = 6.7240721
y[110] = 7.3891682
y[120] = 8.4872311
y[130] = 8.5977075
y[140] = 7.8997170
y[150] = 7.4627841
y[160] = 7.7168264
y[170] = 8.1486747
y[180] = 8.1973001
y[190] = 7.9254702
y[200] = 7.7514568
y[210] = 7.8484008
y[260] = 7.9011958
y[270] = 7.9679456
y[280] = 7.9770493
y[290] = 7.9358543
y[300] = 7.9082902
y[310] = 7.9223649
y[320] = 7.9485989
y[330] = 7.9524867
y[340] = 7.9364564
y[350] = 7.9254929
y[360] = 7.9308471
y[370] = 7.9411553
y[380] = 7.9428042
y[390] = 7.9365680
y[400] = 7.9322092
y[410] = 7.9342435
y[420] = 7.9382931
y[430] = 7.9389883
y[440] = 7.9365630
y[450] = 7.9348307
y[460] = 7.9356027
y[470] = 7.9371932
y[510] = 7.9361463
y[520] = 7.9367708
y[530] = 7.9368926
y[540] = 7.9365261
y[550] = 7.9362528
y[560] = 7.9363635
y[570] = 7.9366087
y[580] = 7.9366594
y[590] = 7.9365170
y[600] = 7.9364085
y[610] = 7.9364503
y[620] = 7.9365465
y[630] = 7.9365675
y[640] = 7.9365122
y[650] = 7.9364692
y[660] = 7.9364849
y[670] = 7.9365227
y[680] = 7.9365314
y[690] = 7.9365099
y[700] = 7.9364928
y[710] = 7.9364988
y[720] = 7.9365136
[760] = 7.9365043
y[770] = 7.9365101
y[780] = 7.9365116
y[790] = 7.9365083
y[800] = 7.9365056
y[810] = 7.9365065
y[820] = 7.9365088
y[830] = 7.9365094
y[840] = 7.9365081
y[850] = 7.9365070
y[860] = 7.9365074
y[870] = 7.9365083
y[880] = 7.9365085
y[890] = 7.9365080
y[900] = 7.9365076
y[910] = 7.9365077
y[920] = 7.9365081
y[930] = 7.9365082
y[940] = 7.9365080
y[950] = 7.9365078
y[960] = 7.9365078
y[970] = 7.9365080
6
y[220] = 8.0182012
y[230] = 8.0393449
y[240] = 7.9335099
y[250] = 7.8642380
y[480] = 7.9374849
y[490] = 7.9365419
y[500] = 7.9358537
y[730] = 7.9365172
y[740] = 7.9365088
y[750] = 7.9365020
y[980] = 7.9365080
y[990] = 7.9365079
y[1000] = 7.9365079
Bước 5: Đường cong quá độ
Bước 6: Chỉ tiêu chất lượng của hệ thống ĐKTĐ
Bước 7: Đặc tính quá độ trên Matlab – Simulink
7
Kết luận:
Hệ đã cho ổn định theo thời gian.
Kết quả khảo sát bằng Matlab-Simulink hoàn toàn trùng với kết quả thu
được trên VB,chứng tỏ tính đúng đắn của phương pháp đã dùng để mô hình hóa
hệ thống.
Bước 8.Nhận dạng hệ thống
Từ đường cong quá độ thu được nhờ các phần mềm mô phỏng ta nhận thấy:
-Đường cong xuất phát từ gốc tọa độ cho thấy trong hàm truyền kín của hệ bậc
của tử số nhỏ hơn bậc của mẫu số.
8
-Giá trị xác lập ổn định là 1 số khác 0 nên dễ thấy hàm quá độ đơn điệu tăng và
không có độ quá điều chỉnh nên có thể kết luận hằng số thời gian của tử nhỏ hơn
hằng số thời gian của mẫu.
So với hàm truyền đã cho:
W(s)=
2
100
4 50s s
+ +
+,Bậc của tử (=0 ) < bậc của mẫu (=2) nên hàm số xác lập tại 1 giá trị
khác 0
+,Hằng số thời gian của tử (=0) < hằng số hằng số thời gian của mẫu nên
hàm quá độ sẽ đơn điệu tăng
Kết quả trên hoàn toàn phù hợp
Bước 9.Thiết kế giao diện
Bước 10.Tài liệu tham khảo
[1]. Nguyễn Công Hiền, Nguyễn Phạm Thục Anh ,”Mô hình hóa hệ thống và
mô phỏng”, NXB Khoa học và kỹ thuật.
[2]. Nguyễn Phùng Quang,”Matlab và Simulink dành cho kỹ sư điều khiển tự
động”, NXB Khoa học và kỹ thuật.
9