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 826 2

Đ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 166,27 KB

Nội dung

bài tập lớn mô hình hóa hệ thống có chương trình mô phỏng trên visulbasic Đề 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ự độngCho hệ thống điều khiển tự động có sơ đồ cấu trúc như sau:Thông số: K¬1=100;K2=0,1;T1=0,2;T2=0,1sTì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.

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:

W (s)=

K 1

S(T1S+1)(T2S +1)

S(T1S +1)(T2S+1)

T1T2S3+ (T1+T2)S2+S+K1+K2

Trang 3

Thay s=2

T

z−1 z+1

T1T2(2(Z−1)

T (Z +1))

3

+ (T1+T2)(2(Z−1)

T (Z +1))

2

+ ¿ ¿

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

W(z)= K T3(Z3+3 Z2+1)

A Z3+B Z2+CZ +D

Trong đó:

A=8T1T2+4 T1T +4 T2T +2 T2+K1K2T3

B=-24T1T2−4 T1T −4 T2T +2 T2+3 K1K2T3

C=24T1T2−4 T1T −4 T2T −2T2

+3 K1K2T3

D=-8T1T2+4 T1T +4 T2T −2T2

+K1K2T3

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

Y (z)

U (z)=

K1T3

(Z3 +3 Z 2

+3 Z +1)

A Z3

+B Z2

+CZ+ D

Y (Z)

U (Z)

Az3Y ( z )+B z2Y ( z )+CzY¿ ) + D Y(z)=K1T3(Z3U ( z )+3 Z2U ( z )+3 z Uz+U (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]=K1T3¿

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]=8K1T3

Trang 4

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]+8K1T3)/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

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 '

Trang 5

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)

Trang 6

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

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

Trang 7

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)

Trang 8

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

Trang 9

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

Trang 10

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)

Trang 11

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

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

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

End Sub

Private Sub txtT1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Graph1.Visible = False

vedothi

End If

End Sub

Trang 16

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

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)

")

Trang 17

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á độ:

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 =

Trang 18

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 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: 05/11/2014, 21:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w