Ngày nay với sự phát triển vượt bậc của máy tính điện tử mà mô hình hoá được ứng dụng trong nhiều ngành, kĩ thuật, lĩnh vực khác nhau.. Nhờ sự giúp đỡ của máy tính có tốc độ nhanh, bộ nh
Trang 1LỜI MỞ ĐẦU
Phương pháp mô phỏng được phát triển từ những năm 40 của thế kỉ 20 Lúc
đó người ta ứng dụng mô hình hoá để nghiên cứu phản ứng hạt nhân chế tạo bom nguyên tử Ngày nay với sự phát triển vượt bậc của máy tính điện tử mà mô hình hoá được ứng dụng trong nhiều ngành, kĩ thuật, lĩnh vực khác nhau
Ngày nay, mô hình hoá là một phương pháp nghiên cứu khoa học được ứng dụng rất rộng rãi: từ thiết kế đến chế tạo, vận hành Nhờ sự giúp đỡ của máy tính
có tốc độ nhanh, bộ nhớ lớn mà phương pháp mô hình hoá được phát triển mạnh mẽ
Mô hình hoá và mô phỏng được ứng dụng không những vào lĩnh lực khoa học, công nghệ mà còn ứng dụng hiệu quả vào các lĩnh vực khác như kinh tế, quân
sự, xã hội
Hiểu được những vấn đề đó và để đáp ứng kịp thời tiến bộ khoa học kĩ
thuật, đáp ứng được thực tiễn mà chúng em được giao đề tài: Mô phỏng để khảo sát tính ổn định của hệ thống
Em xin chân thành cảm ơn cô Phạm Thị Hồng Anh đã hướng dẫn nhóm
em hoàn thành bài tập lớn này Do thời gian còn hạn chế nên bài còn nhiều thiếu sót, em mong được sự góp ý của cô và các bạn để bài của nhóm em được hoàn thiện hơn
Trang 2MỤC LỤC
1 Viết phương trình sai phân tuyến tính của hệ thống -4
2 Viết chương trình khảo sát quá trình của hệ điều khiển tự động bằng phần mềm Visual Basic 6 2.1 Thiết kế giao diện -6
2.2 Code lệnh trong chương trình -6
2.3 Kết quả mô phỏng sử dụng phần mềm Visual Basic -11
2.4 Các giá trị Y(k) -11
2.5.Các chỉ tiêu chất lượng của hệ -12
3 Mô phỏng và kiểm tra lại quá trình khảo sát bằng phần mềm Matlab & Simulink -13
3.1.Sơ đồ khối hệ điều khiển tự động -13
3.2 Kết quả mô phỏng -14
KẾT LUẬN -15
TÀI LIỆU THAM KHẢO -16
Trang 3Đề số 1: 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:
K2
y(t)
s
1
1 Ts.1 T s.
K
2 1
1
U(t)
( - )
Thông số: K1=100; K2=0,1; T1=0,2s; T2=0,1s
Trang 41 Viết phương trình sai phân tuyến tính của hệ thống
1
s .
K 1
(1+T 1 S )(1+T 2 S)
1+1
S .
K 1
(1+T 1 S )(1+T 2 S) K 2= S (1+T 1 S ) (1+T 2 S )+K 1 K 2 K 1
=T 1.T 2 S3 K 1
+(T 1+T 2) S2+S+K 1 K 2 (*)
Thay s= (T2.
Z−1 Z+1)T2.
Z−1
W(Z)=
K 1
T 1T 2.(T2.
Z−1
Z +1)3+ (T 1+T 2) (T2 .
Z −1 Z+1)2+ 2
T .
Z−1
Z +1+K 1 K 2
=
K 1
8 T 1 T 2
T3 .(Z−1 Z +1)3+4 (T 1+T 2)
T2 .(Z−1 Z +1)2+ 2
T .
Z−1 Z+1+K 1 K 2
3
( Z+1)3
8.T 1T 2 ( Z−1)3+¿4 T(T 1+T 2) (Z −1)2.(Z +1) +2T 2.
(Z−1) (Z+1 )2
+K 1 K 2 T3.¿¿
¿
=
K 1 T3 (Z +1)3
8.T 1T 2(Z3 −3 Z 2 +3 Z −1)+¿4 T(T 1 +T 2)(Z3−Z2−Z +1)¿+2 T2
(Z3 +Z2
−Z−1)+K 1 K 2T3.(Z3 +3 Z 2 +3 Z+1)
=
K 1T3(Z3+3 Z2+3 Z+1)
Z3.[8 T 1T 2+4 T (T 1+T 2)+2T2+K 1 K 2T3]+Z2[−24 T 1T 2−4 T (T 1+T 2)+2 T2+3 K 1 K 2 T3]
+Z[24 T 1 T 2−4 T (T 1+T 2)−2 T2+3 K 1 K 2 T3]−8 T 1 T 2+4 T (T 1+T 2 )−2T2+K 1 K 2 T3
Đặt:
8 T 1 T 2+4 T (T 1+T 2 )+2 T2
+K 1 K 2T3 =A
−24 T 1T 2−4 T (T 1+T 2)+2 T2+3 K 1 K 2 T3 =B
24 T 1 T 2−4 T (T 1+T 2)−2T2+3 K 1 K 2T3 = C
−8 T 1 T 2+ 4 T (T 1+T 2 )−2T2+K 1 K 2 T3=D
Trang 5¿≫W(z)=K 1 T
3 (Z3 +3 Z 2 +3 Z +1)
Z3A+ Z2B+CZ + D
Ta có: W(z) =U (Z) Y (Z)
¿≫Y(Z).Z3 A +Y (Z ) Z2 B+Y (Z ) C Z+Y (Z) D=U(Z).K 1T3 Z3 +3.U(Z).K 1T3 Z2 +3.U(Z).
K 1T3 Z +K 1T3U(Z)
¿≫ A.Z{y (k +3)} +B Z{y (k +2)}+C Z{y (k +1)}+D Z{y (k)}=Z {K 1 T3[u (k +3)+3 u (k +2 )+3 u (k +1 )+u (k )]} (**)
Vì u(t)=1t ¿≫ u (k +3 )=u(k+2)=u(k+1)=u(k)=1
y(k+3)= 8 K 1 T3
A - B y (k +2)
A -C y (k +1)
A -D y (k)
A
+)Cách chọn bước cắt mẫu cho quá trình mô phỏng cho phần mô phỏng
=> chọn T = 0.001
Tra bảng 2.33-sách Mô hình hoá hệ thống
Bảng 2.2 Chọn bước cắt mẫu
Trang 72 Viết chương trình khảo sát quá trình của hệ điều khiển tự động bằng phần mềm Visual Basic
2.1 Thiết kế giao diện
Hình 2.1 giao diện trên bằng phần mềm Visual Basic
2.2 Code lệnh trong chương trình
Dim h, w As Integer
Dim A, B, C, D As Double
Dim K1, K2 As Double
Dim T, T1, T2 As Double
Dim x0, y0 As Double
Dim Ymax, Yod, Tod, Tmax, Sigma As Double
Dim Y(2000) As Double
Dim Xmin, Xmax, Ymin As Integer
Dim k, i As Double
Dim Z, J As Double
Private Sub Thoat_Click()
MsgBox " An OK de thoat"
End
Trang 8End Sub
Private Sub Timer1_Timer()
Text3 = Time & " " & Date
End Sub
Private Sub Ve_Click()
K1 = Val(txtK1)
K2 = Val(txtK2)
T1 = Val(txtT1)
T2 = Val(txtT2)
T = Val(txtT.Text)
Time = Time.Text
Y(0) = 0
A = 8 * T1 * T2 + 4 * T * (T1 + T2) + 2 * T ^ 2 + (K1 * K2 * T ^ 3)
B = -24 * T1 * T2 - 4 * T * (T1 + T2) + 2 * T ^ (2) + 3 * K1 * K2 * T ^ (3)
C = 24 * T1 * T2 - 4 * T * (T1 + T2) - 2 * T ^ (2) + 3 * K1 * K2 * T ^ (3)
D = -8 * T1 * T2 + 4 * T * (T1 + T2) - 2 * T ^ (2) + K1 * K2 * T ^ (3)
Ymax = Y(0)
For k = 0 To 1500
Y(k + 3) = (8 * K1 * T ^ 3) / A - (B * Y(k + 2)) / A - (C * Y(k + 1)) / A - (D * Y(k)) / A
If Y(k) > Ymax Then
Ymax = Y(k)
Tmax = k * T
End If
Next k
' ve truc toa do
Trang 9Xmin = 600
Ymin = 400
h = Graph.Height
w = Graph.Width
Xmax = w - 400
' ve truc toa do
Graph.DrawStyle = 0
Graph.Line (Xmin, h - 500)-(Xmax, h - 500) ' ve tia ox Graph.Line (Xmax, h - 500)-(Xmax - 100, h - 500 + 50) ' mui ten tren truc ox Graph.Line (Xmax, h - 500)-(Xmax - 100, h - 500 - 50) ' mui ten duoi truc ox Graph.Line (Xmin, h - 500)-(Xmin, 350) ' ve tia oy
Graph.Line (Xmin, 300)-(Xmin - 50, 400) ' mui ten trai truc oy Graph.Line (Xmin, 300)-(Xmin + 50, 400) ' mui ten phai truc oy ' dat ten truc oy
Graph.CurrentX = Xmin - 300
Graph.CurrentY = Ymin
Graph.Print ("y(t)")
' dat ten truc ox
Graph.CurrentX = Xmax - 200
Graph.CurrentY = h - 500
Graph.Print ("time(s)")
' danh dau goc toa do
Graph.CurrentX = Xmin - 150
Graph.CurrentY = h - 500
Graph.Print ("0")
' khac do Ox
Z = (w - 400 - 600 - 500) / 5
For i = 1 To 5
Graph.Line (Z * i + 600, h - 450)-(Z * i + 600, h - 550)
Trang 10Graph.CurrentX = Z * i + 600
Graph.CurrentY = h - 400
Graph.Print CStr(Time * i / 5)
Next i
' khac do Oy
J = ((h - 500) - 800) / 5
For i = 0 To 4
Graph.Line (Xmin - 50, J * i + 800)-(Xmin + 50, J * i + 800)
Graph.CurrentX = Xmin - 400
Graph.CurrentY = J * i + 800
Graph.Print Format(CStr(Ymax * (5 - i) / 5), "#0.00")
Next i
' Ve do thi va hien thi 100 gia tri
' goc toa do
x0 = Xmin
y0 = h - 1500
' in 100 gia tri
txty = ""
For i = 0 To 999 Step 1
If i Mod 10 = 0 Then
Text1.Text = Text1.Text + "y[" + CStr(i) + "] = " + Format(CStr(Y(i)),
"#0.0000") + vbNewLine
End If
Graph.DrawStyle = vbSolid
Graph.Line (x0, y0)-(Xmin + (i + 1) * T * (w - 1500) / Time, h - 1500 - Y(i + 1) * (h - 2300) / Ymax), vbBlue
x0 = Xmin + (i + 1) * T * (w - 1500) / Time
y0 = h - 1500 - Y(i + 1) * (h - 2300) / Ymax
Next i
Trang 11' ve duong Ymax,Tmax
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) - 100
Graph.CurrentY = 600
Graph.Print "Ymax=" + Format(CStr(Ymax), "#0.000")
Graph.CurrentX = Xmin + (Tmax / Time) * (w - 1500) - 200
Graph.CurrentY = h - 300
Graph.Print "Tmax=" + CStr(Tmax)
Yod = K1 / (K1 * K2)
i = k
Do While Abs(Y(i) - Yod) / Yod <= 0.02
i = i - 1
Loop
Tod = i * T
' hien thi cac chi tieu chat luong
textymax.Text = Format(CStr(Ymax), "#0.000")
texttmax.Text = Format(CStr(Tmax), "#0.000")
textyod.Text = Format(CStr(Yod), "#0.000")
texttod.Text = Format(CStr(Tod), "#0.000")
End Sub
Private Sub Xoa_Click()
Graph.Cls
textymax.Text = ""
texttmax.Text = ""
textyod.Text = ""
texttod = ""
End Sub
Trang 122.3 Kết quả mô phỏng sử dụng phần mềm Visual Basic
Hình 2.2 Kết quả mô phỏng với thông số cho trước
2.4 Các giá trị Y(k)
y[0] = 0.0000
y[10] = 0.4330
y[20] = 2.8927
y[30] = 7.1906
y[40] = 11.9333
y[50] = 15.5632
y[60] = 17.0031
y[70] = 15.9929
y[80] = 13.1036
y[90] = 9.4702
y[100] = 6.3629
y[110] = 4.7559
y[120] = 5.0339
y[130] = 6.9230
y[140] = 9.6442
y[150] = 12.2195
y[160] = 13.8136 y[170] = 13.9957 y[180] = 12.8423 y[190] = 10.8630 y[200] = 8.7906 y[210] = 7.3176 y[220] = 6.8718 y[230] = 7.5008 y[240] = 8.8933 y[250] = 10.5161 y[260] = 11.8117 y[270] = 12.3844 y[280] = 12.1152 y[290] = 11.1745 y[300] = 9.9374 y[310] = 8.8406
y[320] = 8.2323 y[330] = 8.2659 y[340] = 8.8682 y[350] = 9.7855 y[360] = 10.6848 y[370] = 11.2712 y[380] = 11.3817 y[390] = 11.0257 y[400] = 10.3659 y[410] = 9.6492 y[420] = 9.1176 y[430] = 8.9284 y[440] = 9.1110 y[450] = 9.5691 y[460] = 10.1250 y[470] = 10.5859
Trang 13y[480] = 10.8090
y[490] = 10.7436
y[500] = 10.4394
y[500] = 10.4394
y[510] = 10.0196 y[520] = 9.6340 y[530] = 9.4064 y[540] = 9.3966
y[550] = 9.5868 y[560] = 9.8948 y[570] = 10.2078 y[580] = 10.4219 y[590] = 10.4762
y[600] = 10.3681
y[610] = 10.1491
y[620] = 9.9021
y[630] = 9.7113
y[640] = 9.6341
y[650] = 9.6851
y[660] = 9.8350
y[670] = 10.0248
y[680] = 10.1881
y[690] = 10.2735
y[700] = 10.2605
y[710] = 10.1628
y[720] = 10.0208
y[730] = 9.8858 y[740] = 9.8014 y[750] = 9.7908 y[760] = 9.8501 y[770] = 9.9532 y[780] = 10.0617 y[790] = 10.1394 y[800] = 10.1636 y[810] = 10.1315 y[820] = 10.0591 y[830] = 9.9743 y[840] = 9.9061 y[850] = 9.8755 y[860] = 9.8889
y[870] = 9.9377 y[880] = 10.0023 y[890] = 10.0599 y[900] = 10.0921 y[910] = 10.0909 y[920] = 10.0598 y[930] = 10.0120 y[940] = 9.9648 y[950] = 9.9339 y[960] = 9.9277 y[970] = 9.9460 y[980] = 9.9803 y[990] = 10.0178
2.5.Các chỉ tiêu chất lượng của hệ
Ymax=17.009
Tmax=0.610
Tod = 8.3
Yod= 10
Trang 141 Mô phỏng và kiểm tra lại quá trình khảo sát bằng phần mềm Matlab & Simulink 3.1.Sơ đồ khối hệ điều khiển tự động
Hình 3.1 Mô hình hệ điều khiển tự động trong Matlab & Simulink
Trang 153.2 Kết quả mô phỏng
Hình 3.2 Kết quả mô phỏng đặc tính của hệ thống trên Matlab & Simulink
Kết luận :dựa vào đường đặc tính của kết quả mô phỏng trên ta có thể kết
luận hệ thống ổn định vì do giá trị xác lập dần về 10 ( ≠0)
Trang 16KẾT LUẬN
Trong thời gian làm đồ án, nhóm em đã đưa ra được phương trình sai phân tuyến
Simulink Do kiến thức và thời gian còn hạn chế nên bài tập lớn của nhóm em còn
nhiều thiết sót, em mong được sự góp ý của cô và các nhóm khác để bài nhóm em được hoàn thiện hơn
Trang 17TÀI LIỆU THAM KHẢO
1 Biên soạn: TS.Nguyễn Khắc Khiêm-TS.Phạm Tâm Thành,Sách Mô hình hoá hệ thống