Bài tập lớn mô hình háo hệ thống đề số 8

17 701 9
Bài tập lớn mô hình háo hệ thống đề số 8

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

bài tập lớn mô hình hóa hệ thống Đề số 8 :Cho hệ điều khiển tự động có sơ đồ cấu trúc như sau: U(t) y(t)Thông số : K1 = 50 ; K2 = 5 ; K3 = 0,5 ; T1 = 0,01 ; T2 = 0,1 ; T3 = 0,2Chọn chu kỳ trích mẫu T = 0,001 (s)

LỜI MỞ ĐẦU 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ừ nghiên cứu, đến thiết kế chế tạo, vận hành. Ngày nay nhờ sự trợ giúp của máy tính có tốc độ cao, bộ nhớ lớn mà phương pháp mô hình hoá được phát triển mạnh mẽ và đưa lại hiệu quả lớn. Mô hình hoá và mô phỏng là một công cụ mạnh của cán bộ nghiên cứu, cán bộ kỹ thuật để giải các bài toán kỹ sư, quy hoạch, tối ưu hóa v.v… Phương pháp mô hình hóa và mô phỏng được dùng phổ biến trong các trường đại học, các viện nghiên cứu cũng như các cơ sở sản xuất và đã đưa lại hiệu quả to lớn. Ngày nay khó có thể tìm thấy lĩnh vực hoạt động nào của con người mà không sử dụng phương pháp mô hình hóa ở những mức độ khác nhau. Với tầm quan trọng trên, môn mô hình hoá đã được đưa vào trong chương trình giảng dạy dành cho sinh viên Đại Học Hàng Hải. Để có thể nắm bắt một cách có hiệu quả các kiến thức của môn học này, em đã được giao và tiến hành làm bài tập lớn. Do đây là lần đầu tiên tiếp xúc với dạng bài tập này nên không thể tránh khỏi những sai sót nhất định, em rất mong nhận được các ý kiến đóng góp của thầy, cô giáo. ST K .1 1 1 + ).1( 2 2 ST K + ).1( 3 3 ST K + Đề số 8 : Cho hệ điều khiển tự động có sơ đồ cấu trúc như sau: U(t) y(t) Thông số : K1 = 50 ; K2 = 5 ; K3 = 0,5 ; T1 = 0,01 ; T2 = 0,1 ; T3 = 0,2 Chọn chu kỳ trích mẫu T = 0,001 (s) 1.Viết phương trình sai phân của hệ thống Hàm truyền của hệ thống: ( )( ) ( )( ) ( )( )( ) ( ) ( )( ) ( ) ( ) 321321 2 133221 3 321 21321 321321 321 321 321321 21 21 3 3 2 2 1 1 2 2 1 1 1 ).1(.1.1 .1 .1.1.1 ).1(.1.1 .1.1 . .1.1.1 1 .1.1 )( )( )( KKKSTTTSTTTTTTSTTT KKSTKK KKKSTSTST STKK STSTST KKKSTSTST STST KK ST K ST K ST K ST K ST K SU SY SG ++++++++ + = ++++ + = +++ ++++ ++ = +++ + ++ == Theo phương pháp Tustin thay 1 12 + − = Z Z T S ta được: ( ) ( ) 321321 2 133221 3 321 21321 1 1 12 . 1 12 1 12 . 1 12 )( )( )( KKK Z Z T TTT Z Z T TTTTTT Z Z T TTT KK Z Z T TKK ZU ZY ZW ++       + − +++       + − +++       + − +       + − = = Biến đổi hàm truyền trên ta có: HZGZFZE DZCZBZA ZU ZY ZW +++ +++ == )( )( )( 23 23 Trong đó: A = 2 32121 3 .2 TTKKKKT + B = 2 32121 3 .2 3 TTKKKKT + C = 2 32121 3 .2 3 TTKKKKT − D = 2 32121 3 .2 TTKKKKT − E = ( ) ( ) ( ) 321 3 321 2 323121321 12 4 8 KKKTTTTTTTTTTTTTTT ++++++++ F = ( ) ( ) ( ) 321 3 321 2 323121321 1.32 4 24 KKKTTTTTTTTTTTTTTT +++++++−− G = ( ) ( ) ( ) 321 3 321 2 323121321 1.32 4 24 KKKTTTTTTTTTTTTTTT ++++−++− H = ( ) ( ) ( ) 321 3 321 2 323121321 12 4 8 KKKTTTTTTTTTTTTTTT ++++−+++− Ta có hàm sai phân như sau : ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ZUDZUZCZUZBZUZAZYHZYZGZYZFZYZE 2323 +++=+++ Dùng tính chất dịch hàm gốc của biến đổi Z ta tìm được phương trình sai phân tương ứng với phương trình trên : E.Y(k+3) + F.Y(k+2) + G.Y(k+1) + H.Y(k) = A.U(k+3) + B.U(k+2) + C.U(k+1) + D.U(k) Vì tín hiệu vào là tín hiệu nhảy cấp U(t) = 1(t) nên ta có : U(k+3) = U(k+2) = U(k+1) = U(k) = 1 Vậy ta có : E.Y(k+3) + F.Y(k+2) + G.Y(k+1) + H.Y(k) = A + B + C + D >> Y(k+3) = (-F.Y(k+2) – G.Y(k+1) –H.Y(k) + A + B + C + D) / E 2. Viết phương trình mô phỏng bằng Visual Basic 6.0 Option Explicit Dim A, B, C, D, E, F, G, H As Double Dim t, T1, T2, T3, K1, K2, K3 As Double Dim Y(10000) As Double Dim Xmax, Ymax, Hsox, Hsoy, Si, Ky As Double Dim Xmin, Ymin As Integer Dim Xsum, Ysum As Integer Dim sumy As Integer Dim Xcurrent, Ycurrent As Long Dim Tmax, Yod As Double Dim time As Double Dim i As Integer Public Sub vedothi() Dim Dem As Integer Dim Tod As Double Dim xichma As Double Graph.Cls Xmin = 400 Ymin = 300 Xmax = Graph.Width - 200 ' Ve truc toa do ' Graph.Line (Xmin, (Graph.Height - 400))-(Xmax, (Graph.Height - 400)) Graph.Line (Xmax - 100, (Graph.Height - 400) - 50)-(Xmax, (Graph.Height - 400)) Graph.Line (Xmax - 100, (Graph.Height - 400) + 50)-(Xmax, (Graph.Height - 400)) Graph.Line (Xmin, Graph.Height - 400)-(Xmin, Ymin) Graph.Line (Xmin - 50, Ymin + 100)-(Xmin, Ymin) Graph.Line (Xmin + 50, Ymin + 100)-(Xmin, Ymin) Graph.CurrentX = Xmax - 400 Graph.CurrentY = (Graph.Height - 400) + 100 Graph.Print ("t(sec)") Graph.CurrentX = Xmin - 250 Graph.CurrentY = Ymin - 100 Graph.Print ("y(t)") Graph.CurrentX = Xmin - 200 Graph.CurrentY = (Graph.Height - 400) + 100 Graph.Print ("0") ' Tinh cac gia tri Y' K1 = Val(txtk1.Text) K2 = Val(txtk2.Text) K3 = Val(txtk3.Text) T1 = Val(txtt1.Text) T2 = Val(txtt2.Text) T3 = Val(txtt3.Text) t = 0.001 If (K1 = 0) Or (K2 = 0) Or (K3 = 0) Or (T1 = 0) Or (T2 = 0) Or (T3 = 0) Then MsgBox (" Chua nhap so lieu ") Else A = t ^ 3 * K1 * K2 + K1 * K2 * T3 * 2 * t ^ 2 B = 3 * t ^ 3 * K1 * K2 + 2 * t ^ 2 * K1 * K2 * T3 C = 3 * t ^ 3 * K1 * K2 - K1 * K2 * T3 * 2 * t ^ 2 D = t ^ 3 * K1 * K2 - K1 * K2 * T3 * 2 * t ^ 2 E = 8 * T1 * T2 * T3 + 4 * t * (T1 * T2 + T2 * T3 + T1 * T3) + 2 * t ^ 2 * (T1 + T2 + T3) + t ^ 3 * (1 + K1 * K2 * K3) F = -24 * T1 * T2 * T3 - 4 * t * (T1 * T2 + T2 * T3 + T1 * T3) + 2 * t ^ 2 * (T1 + T2 + T3) + 3 * t ^ 3 * (1 + K1 * K2 * K3) G = 24 * T1 * T2 * T3 - 4 * t * (T1 * T2 + T2 * T3 + T1 * T3) - 2 * t ^ 2 * (T1 + T2 + T3) + 3 * t ^ 3 * (1 + K1 * K2 * K3) H = -8 * T1 * T2 * T3 + 4 * t * (T1 * T2 + T2 * T3 + T1 * T3) - 2 * t ^ 2 * (T1 + T2 + T3) + t ^ 3 * (1 + K1 * K2 * K3) Y(3) = 0 Y(4) = 0 Ymax = 0 time = CStr(txtthoigian.Text) ' THoi gian khao sat (s) For i = 2 To 998 * time Step 1 Y(i + 3) = (A + B + C + D - F * Y(i + 2) - G * Y(i + 1) - H * Y(i)) / E If Y(i) > Ymax Then Ymax = Y(i) Tmax = i * t End If Next i If Ymax <> 0 Then 'Tranh truong hop Ymax =0 thi bao loi Hsoy = (Graph.Height - 1000) / (Ymax) ' ' Them 700 de khong vuot ra khoi graph Else: Ymax = 0.001 End If Hsox = 5.4 / time 'Tim yod gan nhat Yod = 1 'Tim do qua dieu chinh' xichma = (Abs(Ymax - Yod) / Yod) * 100 'Tim Tod Tod = 998 * time Do While (Abs(Y(Tod) - Yod) / Yod < 0.05) Tod = Tod - 1 Loop 'Khac do truc hoanh Si = time / (t * 5) For i = 1 To 5 Graph.Line (i * Si * Hsox + 300, Graph.Height - 350)-(i * Si * Hsox + 300, Graph.Height - 450) Graph.CurrentX = i * Si * Hsox + 200 Graph.CurrentY = Graph.Height - 300 Graph.Print CStr(i * Si * t) Next 'Khac do truc tung Ky = Ymax * Hsoy / 5 'sumy = Round(5 + (Graph.Height - 500 - Round(Ymax * Hsoy)' For i = 1 To 5 Graph.Line (350, Graph.Height - 400 - Round(Ky * i))-(450, Graph.Height - 400 - Round(Ky * i)) Graph.CurrentX = 0 Graph.CurrentY = Graph.Height - 400 - Round(Ky * i) - 100 Graph.Print Format(CStr(Ky * i / Hsoy), "#0.00") Next 'Ve duong ymax Graph.DrawStyle = 2 Graph.Line ((Tmax / t - 2) * Hsox + 400, Graph.Height - 400)-((Tmax / t - 2) * Hsox + 400, Graph.Height - 400 - Round(Hsoy * Ymax)) Graph.Line ((Tmax / t - 2) * Hsox + 400, Graph.Height - 400 - Round(Hsoy * Ymax))-(400, Graph.Height - 400 - Round(Hsoy * Ymax)) Graph.CurrentX = (Tmax / t - 2) * Hsox + 400 Graph.CurrentY = Graph.Height - 600 - Round(Hsoy * Ymax) Graph.Print "Ymax = " + Format(CStr(Ymax), "####0.0000") Graph.CurrentX = (Tmax / t - 2) * Hsox + 450 Graph.CurrentY = Graph.Height - 700 Graph.Print "Tmax = " + CStr(Tmax) 'Ve duong on dinh Graph.Line (400, Graph.Height - 400 - Round(Hsoy * Yod))-(Graph.Width - 400, Graph.Height - 400 - Round(Hsoy * Yod)) Graph.CurrentX = Tod * Hsox + 900 Graph.CurrentY = Graph.Height - 800 - Round(Yod * Hsoy) Graph.Print "Yôd = " + Format(CStr(Yod), "####0.0000") 'Ve duong sai so Graph.Line (400, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod))-(Graph.Width - 400, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod)) Graph.Line (400, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod))-(Graph.Width - 400, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod)) 'Ve duong Tod Graph.Line ((Tod - 2) * Hsox + 400, Graph.Height - 400)-((Tod - 2) * Hsox + 400, Graph.Height - 400 - Hsoy * Yod) Graph.CurrentX = (Tod - 2) * Hsox + 400 Graph.CurrentY = Graph.Height - 900 Graph.Print "Tôd = " + CStr(Tod * t) + " " Graph.DrawStyle = 0 'Ve mui ten 5% Graph.Line ((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod))-((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod) - 300) Graph.Line ((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod))-((Tod - 2) * Hsox + 410 - 100, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod) - 100) Graph.Line ((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod))-((Tod - 2) * Hsox + 410 + 100, Graph.Height - 400 - Round(Hsoy * 1.05 * Yod) - 100) Graph.Line ((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod))-((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod) + 300) Graph.Line ((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod))-((Tod - 2) * Hsox + 410 - 100, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod) + 100) Graph.Line ((Tod - 2) * Hsox + 410, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod))-((Tod - 2) * Hsox + 410 + 100, Graph.Height - 400 - Round(Hsoy * 0.95 * Yod) + 100) Graph.CurrentX = (Tod - 2) * Hsox + 450 Graph.CurrentY = Graph.Height - 400 - Round(Hsoy * 0.95 * Yod) + 200 Graph.Print "5% Yôd" ' Hien thi cac gia tri thoi gian txtymax.Text = Format(CStr(Ymax), "#0.00000") txtyod.Text = Format(CStr(Yod), "#0.00000") txtxichma.Text = Format(CStr(xichma), "#0.00000") txttod.Text = Format(CStr(Tod * t), "#0.00000") txttymax.Text = Format(CStr(Tmax), "#0.00000") ' ve do thi ' Xcurrent = Xmin Ycurrent = (Graph.Height - 400) txty = "" For i = 0 To 997 * time Step 1 Graph.Line (Xcurrent, Ycurrent)-(Xmin + (i + 1) * Hsox, Round((Graph.Height - 400) - Y(i + 1) * Hsoy)) Xcurrent = Xmin + i * Hsox Ycurrent = Round((Graph.Height - 400) - Y(i) * Hsoy) Next i For i = 1 To 991 Step 1 If i Mod 10 = 0 Then txty.Text = txty.Text + "y[" + CStr(i) + "] = " + Format(CStr(Y(i)), "#0.00000") + vbNewLine End If Next i End If End Sub Private Sub cmddothi_Click() Graph1.Visible = False If Val(txtthoigian.Text) < 10 Then vedothi Else MsgBox (" Thoi gian khao sat phai be hon 10(s) ") End If End Sub Private Sub cmdsodo_Click() Graph1.Visible = True End Sub Private Sub Command5_Click() End End Sub Private Sub dothi1_Click(Index As Integer) Graph1.Visible = False If Val(txtthoigian.Text) <= 11 Then lblymax.Caption = "Ymax :" vedothi Else MsgBox (" Thoi gian khao sat phai be hon hoac bang 10(s) ") End If End Sub Private Sub exit1_Click(Index As Integer) End End Sub Private Sub sodo1_Click(Index As Integer) Graph1.Visible = True End Sub Private Sub Command1_Click(Index As Integer) Graph1.Visible = False vedothi End Sub Private Sub exit_Click(Index As Integer) End End Sub Private Sub txtK1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Graph1.Visible = False vedothi End If End Sub Private Sub txtK2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Graph1.Visible = False vedothi End If End Sub Private Sub txtK3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Graph1.Visible = False vedothi End If End Sub Private Sub txtnhom2_Change() [...]... 12495. 985 48 y[320] = 29.54457 y [82 0] = 85 94.23070 y[330] = 60.60001 y [83 0] = -523.15336 y[340] = 70.37794 y [84 0] = -11642.0 781 5 y[350] = 48. 76724 y [85 0] = -19761. 788 38 y[360] = -1.33241 y [86 0] = -20124.110 18 y[370] = -62.21740 y [87 0] = -10626.03 386 y[ 380 ] = -106.46127 y [88 0] = 6 482 .07020 y[390] = -1 08. 06294 y [89 0] = 24629.36050 y[400] = -55.65503 y[900] = 35101.61774 y[410] = 38. 24692 y[910] = 3 081 7.94743... -6. 986 95 y[710] = 4242.04201 y[220] = 3.96761 y[720] = 4113.432 58 y[230] = 16.6 583 4 y[730] = 1920.24446 y[240] = 25.241 58 y[740] = -1765.24743 y[250] = 24.45513 y[750] = -5491.05 180 y[260] = 12.36406 y[760] = -7425.14444 y[270] = -7 .85 746 y[770] = -6166.96274 y[ 280 ] = - 28. 2 284 0 y[ 780 ] = -1546 .84 304 y[290] = - 38. 71452 y[790] = 4 984 .82 794 y[300] = -31. 680 01 y [80 0] = 10672 .89 594 y[310] = -6.25750 y [81 0]... = 1.29396 y[ 580 ] = -83 2.63270 y[90] = -1.33790 y[590] = -331.74655 y[100] = -2. 980 09 y[600] = 4 58. 35744 y[110] = -2.57527 y[610] = 12 18. 782 96 y[120] = 0. 184 10 y[620] = 1566.2 184 1 y[130] = 4.51774 y[630] = 1226.46912 y[140] = 8. 67353 y[640] = 197.07974 y[150] = 10.552 78 y[650] = -1 184 .0 589 0 y[160] = 8. 661 78 y[660] = -2321.35362 y[170] = 3.00040 y[670] = -2592.05594 y[ 180 ] = -4.56747 y[ 680 ] = -1647.41160... 137.5 089 5 y[920] = 10236.6 186 6 y[430] = 194. 385 67 y[930] = -205 08. 964 48 y[440] = 170.24564 y[940] = - 487 39.11204 y[450] = 56.93096 y[950] = -5 987 3.11 489 y[460] = -111.65193 y[960] = -44166.42152 y[470] = -265 .86 321 y[970] = -2727.69959 y[ 480 ] = -325 .89 723 y[ 980 ] = 50337.62054 y[490] = -2 38. 71 689 y[990] = 91677.73526 5 Vẽ đường cong quá trình quá độ 6 Tính và in ra các chỉ tiêu chất lượng của hệ điều... Chọn số bước tính đủ để hệ thống ổn định chọn k = 1000 4 In kết quả In 100 giá trị của Y(k) cách 10 giá trị in 1 số y[0] = 0.0 y[500] = -10.91373 y[10] = 0.05762 y[510] = 279.76264 y[20] = 0.63931 y[520] = 505.19599 y[30] = 1.91635 y[530] = 537.75235 y[40] = 3.51 482 y[540] = 313.50134 y[50] = 4.74567 y[550] = -120.3 780 8 y[60] = 4.91463 y[560] = -601.36 686 y[70] = 3.67620 y[570] = -903.34959 y [80 ] =... 0.0002 s^3 + 0.023 s^2 + 0.31 s + 126 Transfer function: 0.05922 z^3 + 0.05952 z^2 - 0.0 586 3 z - 0.0 589 3 z^3 - 2 .88 9 z^2 + 2. 781 z - 0 .89 12 Sampling time: 0.001 - Đường cong quá độ : - Chuyển sang mô phỏng miền z ta thu được đồ thị như hình dưới: Kết luận: Từ đồ thị nhận được trong quá trình mô phỏng bằng phần mềm chuyên dụng cũng như phần mềm Visualbasic ta thấy 2 kết quả là tưong... tưong đương nhau,trong đó phần mềm chuyên dụng là Matlab thì dễ sử dụng hơn cả vì code lệnh đơn giản,dễ thực hiện 8, Nhận dạng hệ thống 9,Thiết kế giao diện ,nhập thông số, lấy kết quả vào ra 10,Tài liệu tham khảo [1] Nguyễn Công Hiền , Nguyễn Phạm Thục Anh [2] Mô hình hoá và mô phỏng hệ thống, NXB Khoa Học Kỹ Thuật 2006 [3] Nguyễn Phùng Quang, Matlab & Simulink dành cho kỹ sư Điều Khiển Tự Động, NXB... - Giá trị ổn định của tín hiệu ra: y(k)ôđ = 1.00000 - Độ quá điều chỉnh: σmax = 93575 % - Thời gian đạt giá trị cực đại Tmax = 9.928s - Thời gian hệ thống ổn định (sai số là 5%): Tôđ = 9. 98 s - Hệ không ổn định 7 Dùng MATLAB SIMULINK vẽ đường cong quá trình quá độ của hệ đã cho 7.1 Hàm truyền đạt trên miền liên tục Code lệnh trong Matlab như sau: >> k1=50; k2=5; k3=0.5; t1=0.01; t2=0.1; t3=0.2; t=0.001;

Ngày đăng: 05/11/2014, 21:13

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan