"Bài tập lớn mô hình hóa hệ thống có thể được phân tích chi tiết bằng cách: 1. Xác định yêu cầu của hệ thống: Để mô hình hóa hệ thống, bạn cần phải xác định các yêu cầu của hệ thống. Điều này bao gồm các yêu cầu về tính năng, hiệu suất, độ tin cậy, an toàn, v.v. 2. Xác định các thành phần của hệ thống: Sau khi xác định các yêu cầu của hệ thống, bạn cần phải xác định các thành phần của hệ thống. Điều này bao gồm các thành phần phần cứng, phần mềm, dữ liệu, v.v. 3. Xây dựng mô hình hóa hệ thống: Sau khi xác định các th"
LỜI MỞ ĐẦU Mơ hình hố phương pháp nghiên cứu khoa học ứng dụng rộng rãi: từ nghiên cứu, đến thiết kế chế tạo, vận hành Ngày nhờ trợ giúp máy tính có tốc độ cao, nhớ lớn mà phương pháp mô hình hố phát triển mạnh mẽ đưa lại hiệu lớn Mơ hình hố mơ công cụ mạnh cán nghiên cứu, cán kỹ thuật để giải toán kỹ sư, quy hoạch, tối ưu hóa v.v… Phương pháp mơ hình hóa mơ dùng phổ biến trường đại học, viện nghiên cứu sở sản xuất đưa lại hiệu to lớn Ngày khó tìm thấy lĩnh vực hoạt động người mà không sử dụng phương pháp mơ hình hóa mức độ khác Với tầm quan trọng trên, mơn mơ hình hố đưa vào chương trình giảng dạy dành cho sinh viên Đại Học Hàng Hải Việt Nam Để nắm bắt cách có hiệu kiến thức môn học này, em giao tiến hành làm tập lớn Do lần tiếp xúc với dạng tập nên khơng thể tránh khỏi sai sót định, em mong nhận ý kiến đóng góp thầy, giáo Đề bài: Dùng máy tính khảo sát trình độ 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 sau: Thơng số: K1=100;K2=0,1;T1=0,2;T2=0,1s Tìm hàm truyền kín hệ, viết phương trình sai phân hệ thống In 100 kết số, vẽ đường cong độ y(t), dùng phần mềm MATLAB để kiểm tra kết tính 1.Viết phương trình sai phân hệ thống: Hàm truyền hệ thống: Thay Biến đổi hàm truyền ta có: W(z)= Trong đó: A=8 B=-24 C=24 D=-8 Ta có hàm sai phân sau: A) + D Y(z)= Dùng tính chất dịch hàm gốc biến đổi Z ta tìm phương trình sai phân tương ứng với phương trình trên: AY[K+3]+BY[K+2]+CY[K+1]+DY[K]= Vì tín hiệu vào 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ó: AY[K+3]+BU[K+2]+CY[K+1]+DY[K]=8 Cuối ta tìm phương trình sai phân hệ điều khiển tự động là: Y[K+3]=(-BY[K+2]-CY[K+1]-DY[K]+8)/A Chương trình viết Visual Basic 6.0: Option Explicit Dim A, B, C, D As Double Dim t, T1, T2, K1, K2 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 ' 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) T1 = Val(txtt1.Text) T2 = Val(txtt2.Text) t = 0.001 If (K1 = 0) Or (K2 = 0) Or (T1 = 0) Or (T2 = 0) Then MsgBox (" Chua nhap so lieu ") Else A = * T1 * T2 + * T1 * t + * T2 * T1 + * t ^ + K1 * K2 * t^3 B = -24 * T1 * T2 - * T1 * t - * T2 * T1 + * t ^ + * K1 * K2 * t ^ C = 24 * T1 * T2 - * T1 * t - * T2 * T1 - * t ^ + * K1 * K2 * t ^ D = -8 * T1 * T2 + * T1 * t + * T2 * T1 - * t ^ + K1 * K2 * t^3 Y(3) = Y(4) = Ymax = time = CStr(txtthoigian.Text) ' THoi gian khao sat (s) For i = To 998 * time Step Y(i + 3) = (8 * K1 * t ^ - B * Y(i + 2) - C * Y(i + 1) - D * Y(i)) /A If Y(i) > Ymax Then Ymax = Y(i) Tmax = i * t End If Next i If Ymax Then 'Tranh truong hop Ymax =0 thi bao loi Hsoy = (Graph.Height - 1000) / (Ymax) ' ' Them 700 de khong vuot khoi graph Else: Ymax = 0.001 End If Hsox = 5.4 / time 'Tim yod gan nhat Yod = 'Tim 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 - Loop 'Khac truc hoanh Si = time / (t * 5) For i = To 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 truc tung Ky = Ymax * Hsoy / 'sumy = Round(5 + (Graph.Height - 500 - Round(Ymax * Hsoy)' For i = To Graph.Line (350, Graph.Height - 400 - Round(Ky * i))-(450, Graph.Height - 400 - Round(Ky * i)) Graph.CurrentX = Graph.CurrentY = Graph.Height - 400 - Round(Ky * i) - 100 Graph.Print Format(CStr(Ky * i / Hsoy), "#0.00") Next 'Ve duong ymax Graph.DrawStyle = 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 = '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 thi ' Xcurrent = Xmin Ycurrent = (Graph.Height - 400) txty = "" For i = To 997 * time Step 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 = To 991 Step If i Mod 10 = 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) k1=100 k1 = 100 >> k2=0.1 k2 = 0.1000 >> t1=0.2 t1 = 0.2000 >> t2=0.1 t2 = 0.1000 >> num=[k1]; >> den=[t1*t2 t1+t2 k1*k2]; >> step(num,den);title('dac tinh qua cua he DKTD'); >> grid on Được hàm truyền: Transfer function: 100 0.02 s^2 + 0.3 s + 10 Ta thu đường cong độ: Mô Simulink: Ta thu kết sau: Hình: đường cong QTQĐ Matlab vẽ Kết luận: Từ đồ thị nhận q trình mơ phần mềm chun dụng phần mềm Visualbasic ta thấy kết tưong đương nhau,trong phần mềm chuyên dụng Matlab đễ sử dụng code lệnh đơn giản,dễ thực 8.Nhận dạng hệ thống: 9.Thiết kế giao diện ,nhập thông số,lấy kết vào ra: 10.Tài liệu tham khảo: ... Graph.Width - 200 ' Ve truc toa ' 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 - 500 - Round(Ymax * Hsoy)' For i = To Graph.Line (350, Graph.Height - 400 - Round(Ky * i) )-( 450, Graph.Height - 400 - Round(Ky * i)) Graph.CurrentX = Graph.CurrentY = Graph.Height - 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)