1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn mô hình hóa hệ thống để số 2

20 2 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 182,43 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

"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"

Trang 1

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 Việt Nam Để 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.

Trang 2

Đề bài: 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:

Thông số: K 1 =100;K 2 =0,1;T 1 =0,2;T 2 =0,1s

Tìm hàm truyền kín của hệ, viết phương trình sai phân của hệ thống In ra 100 kết quả bằng số, vẽ đường cong quá độ y(t), dùng phần mềm MATLAB để kiểm tra kết quả đã tính.

1.Viết phương trình sai phân của hệ thống:

Hàm truyền của hệ thống:

Thay

Trang 3

Biến đổi hàm truyền trên ta có:

W(z)=

Trong đó:

A=8 B=-24 C=24 D=-8

Ta có hàm sai phân như sau:

A) + D Y(z)=

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:

AY[K+3]+BY[K+2]+CY[K+1]+DY[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ó:

AY[K+3]+BU[K+2]+CY[K+1]+DY[K]=8

Cuối cùng ta tìm được phương trình sai phân của hệ điều khiển tự động là:

Y[K+3]=(-BY[K+2]-CY[K+1]-DY[K]+8)/A

2 Chương trình được viết bằng 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

Trang 4

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)

Trang 5

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 = 8 * T1 * T2 + 4 * T1 * t + 4 * T2 * T1 + 2 * t ^ 2 + K1 * K2 *

t ^ 3

Trang 6

B = -24 * T1 * T2 - 4 * T1 * t - 4 * T2 * T1 + 2 * t ^ 2 + 3 * K1 * K2 * t ^ 3

C = 24 * T1 * T2 - 4 * T1 * t - 4 * T2 * T1 - 2 * t ^ 2 + 3 * K1 * K2 * t ^ 3

D = -8 * T1 * T2 + 4 * T1 * t + 4 * T2 * T1 - 2 * t ^ 2 + K1 * K2 *

t ^ 3

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) = (8 * K1 * t ^ 3 - 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 <> 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

Trang 7

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

Trang 8

'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)

Trang 9

'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%

Trang 10

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"

Trang 11

' 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

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

vedothi

End If

End Sub

Private Sub txtnhom2_Change()

End Sub

Private Sub txtT1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Graph1.Visible = False

vedothi

End If

End Sub

Private Sub txtT2_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Graph1.Visible = False

vedothi

End If

End Sub

Private Sub txtT3_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Trang 16

Graph1.Visible = False

vedothi

End If

End Sub

Private Sub txtthoigian_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Graph1.Visible = False

If Val(txtthoigian.Text) <= 10 Then

lblymax.Caption = "Ymax :"

vedothi

Else

MsgBox (" Thoi gian khao sat phai be hon hoac bang 10(s)

")

End If

End If

End Sub

3.Chọn số bước tính đủ để hệ thống ổn định:

Chọn k=1000

4 In kết quả:

5.Đường cong quá trình quá độ:

Trang 17

6.Chỉ tiêu chất lượng của hệ ĐKTĐ:

7.Dùng MATLAB SIMULINK vẽ đường cong quá trình quá độ của

hệ đã cho:

Hàm truyền đạt trên miền liên tục

Code lệnh trong Matlab như sau:

>> k1=100

k1 =

100

>> k2=0.1

k2 =

0.1000

>> t1=0.2

t1 =

0.2000

>> t2=0.1

Trang 18

t2 =

0.1000

>> num=[k1];

>> den=[t1*t2 t1+t2 k1*k2];

>> step(num,den);title('dac tinh qua do cua he DKTD');

>> grid on

Được hàm truyền:

Transfer function:

100

-0.02 s^2 + 0.3 s + 10

Ta thu được đường cong quá độ:

Trang 19

Mô phỏng trên Simulink:

Ta thu được kết quả như sau:

Trang 20

Hình: đường cong QTQĐ do Matlab vẽ

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 đương nhau,trong đó phần mềm chuyên dụng là Matlab thì đễ 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:

Ngày đăng: 16/06/2020, 22:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w