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

Bài tập mô hình hóa mô phỏng

12 28 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 12
Dung lượng 161,5 KB

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

Nội dung

Chương trình mô phỏng được viết trên ngôn ngữ Visual Basic, gồm có 4 form: Form Main: Giao diện chính của chương trình, đề bài và nhập dữ liệu. Form Dothi: Gồm một đối tượng PictureBox để vẽ đồ thị, mô tả quá trình quá trình quá độ của hệ thống Form Solieu: Gồm một đối tượng TextBox, chứa các giá trị biên độ ứng tương ứng với các giá trị thời gian, cũng là các điểm được thể hiện trên đồ thị Form Tacgia: Ghi tên, lớp của các sinh viên làm bài tập này. Module Variable: Khai báo các biến toàn cục

Trang 1

u(t) y(t)

I Đề bài: Dùng máy tính để khảo sát quá trình quá độ của hệ

thống.

a) Sơ đồ nguyên lí:

b) Tham số của hệ thống:

+ U(t) = 1(t) + K 1 , K 2 – Tham số tự chọn.

+ T – Bước cắt mẫu tự chọn.

II Phương trình sai phân của hệ thống :

2 1 2

1 2

1

1 2

1

1

4

) 4 (

) 4 (

1

) 4 (

) (

K K s s

K K

K s

s

K s

s

K K

s s

K s

W

Thay

1

1

2

z

z T

2 1 2

1

1

1 2 4 1

1 2 ) (

K K z

z T z

z T

K z

W

2 1 2

2 2

1

) 1 ( )

1 )(

1 ( 8 ) 1 ( 4

) 1 (

z T K K z

z T z

z T K

C Bz Az

z z T K

2 2

1 ( 2 1 )

Trong đó:

8 2

4 8

2 2 1

2 2 1

T K K B

T T K K A

4 8

2

K K T T C

Suy ra: ( ) ( ) ( ) 2  2 ( ) 2 ( ) ( )

1

2y z B z y z c y z K T z u z z u z u z z

) 4 (

1

s s K

2

K

Trang 2

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:

 ( 2 ) 2 ( 1 ) ( )

)

( ) 1 ( ) 2 (

1T u k u k u k K

k y C k

y B k

y

Vì tín hiệu vào là tín hiệu nhảy cấp: u(t)  1 (t) nên ta có :

1 ) ( ) 1 ( ) 2 (k u k u k

u

Vậy ta có:

2 1

4 ) ( ) 1 ( ) 2 ( y k B y k Cy k K T

A T K k y C k

y B k

y( 2) (  1 )  ( )  4 1 2

III Chương trình mô phỏng bằng ngôn ngữ VB:

Chương trình mô phỏng được viết trên ngôn ngữ Visual Basic, gồm có 4 form:

- Form Main: Giao diện chính của chương trình, đề bài và nhập dữ liệu

- Form Dothi: Gồm một đối tượng PictureBox để vẽ đồ thị, mô tả quá trình quá trình quá độ của hệ thống

- Form Solieu: Gồm một đối tượng TextBox, chứa các giá trị biên độ ứng tương ứng với các giá trị thời gian, cũng là các điểm được thể hiện trên đồ thị

- Form Tacgia: Ghi tên, lớp của các sinh viên làm bài tập này

- Module Variable: Khai báo các biến toàn cục

Giao diện và mã lệnh của từng Form như sau:

Form Main:

Trang 3

Các đối tượng chính và thuộc tính như sau:

Mã nguồn của Form main như sau:

Private Sub Tinhtoan()

Dim K1 As Double

Dim X As Integer

K1 = Val(K1txt)

K2 = Val(K2txt)

T = Val(Ttxt)

A = K1 * K2 * T * T + 8 * T + 4

B = 2 * T * T * K1 * K2 - 8

C = K1 * K2 * T * T - 8 * T + 4

y(0) = 0

y(1) = 0

For X = 0 To 998

y(X + 2) = (-B * y(X + 1) - C * y(X) + 4 * K1 * T * T) / A Next X

ymax = 0

ymin = 0

For X = 0 To 998

If y(X) > ymax Then

ymax = y(X)

xmax = X

End If

If y(X) < ymin Then

Trang 4

ymin = y(X)

xmin = X

End If

Next X

For X = 0 To 1000

If y(1000 - X) > (1 / K2) * 105 / 100 Or y(1000 - X) < (1 / K2) * 95 / 100 Then Xod = 1000 - X

Exit For

End If

Next X

End Sub

Private Sub Command1_Click()

Call Tinhtoan

Unload Dothi

Dothi.Show

Call Dothi.Vedothi

End Sub

Private Sub Command2_Click()

Dim X As Integer

Dim V, U As String

Call Tinhtoan

solieu.Show

For X = 0 To 1000

If X Mod 10 = 0 Then

V = "y[" + Str(X) + "]=" + Str(Round(y(X), 4)) + Chr(9)

If X Mod 40 = 0 Then V = V + Chr(13) + Chr(10)

U = U + V

End If

Next X

U = U + Chr(13) + Chr(10) + Chr(13) + Chr(10) + Chr(13) + Chr(10)

U = U + "Gia tri cuc dai Ymax: " + Str(ymax) + Chr(13) + Chr(10)

U = U + "Gia tri cuc tieu Ymin: " + Str(ymin) + Chr(13) + Chr(10)

U = U + "Thoi gian de dat cuc dai Tmax: " + Str(xmax * T) + " s" + Chr(13) + Chr(10)

U = U + "Thoi gian de dat on dinh Tod: " + Str(Xod * T) + " s" + Chr(13) + Chr(10)

U = U + "Do qua on dinh: " + Str((ymax - 1 / K2) * K2 * 100) + Chr(13) + Chr(10) solieu.hien.Text = U

Trang 5

End Sub

Private Sub Command3_Click()

End

End Sub

Private Sub Command4_Click()

tacgia.Show

End Sub

Private Sub Form_Unload(Cancel As Integer)

End

End Sub

Form Dothi:

Mã nguồn của Form Dothi như sau:

Trang 6

Public Sub Vedothi()

Dim tamthoiX, tamthoiY As Double

Dim Vach As Double

nen.CurrentX = 0

nen.CurrentY = nen.Height - 100 ' Truc hoanh cach day 100

nen.DrawWidth = 2 'Dat do day net ve la 2 de ve truc toa do

nen.Line (30, 250)-(100, 100)

nen.Line (180, 250)-(100, 100)

nen.Line (100, 100)-(100, nen.Height - 100) ' ve truc tung tu tren xuong

tamthoiY = nen.CurrentY

tamthoiX = nen.Width - 100

nen.Line (nen.CurrentX, nen.CurrentY)-(nen.Width - 100, nen.CurrentY) ' Ve truc hoanh

nen.Line (tamthoiX, tamthoiY)-(tamthoiX - 150, tamthoiY - 80)

nen.Line (tamthoiX - 150, tamthoiY + 60)-(tamthoiX, tamthoiY)

dodaix = Round((nen.Width - 200) / 10) ' Do dai mot vach tren truc

dodaiy = Round((nen.Height - 200) / 11)

Dothi.CurrentY = nen.Height + nen.Top + 100

Dothi.CurrentX = nen.Width + nen.Left

Dothi.Print ("T")

For a1 = 1 To 9 ' Khac vach truc X

nen.Line (nen.CurrentX - dodaix, nen.Height - 150)-(nen.CurrentX - dodaix, nen.Height - 50)

Dothi.CurrentX = nen.Left + nen.CurrentX - 100

Dothi.CurrentY = nen.Height + nen.Top + 100

Dothi.Print ((10 - a1) * 100 * T)

Next a1

nen.CurrentY = nen.Height - 100

If ymax <= 0.05 Then Vach = 0.005

If ymax > 0.05 And ymax <= 0.5 Then Vach = 0.05

If ymax > 0.5 And ymax <= 1 Then Vach = 0.1

If ymax > 1 And ymax <= 2 Then Vach = 0.2

If ymax > 2 And ymax <= 3 Then Vach = 0.3

If ymax > 3 And ymax <= 4 Then Vach = 0.4

If ymax > 4 And ymax <= 5 Then Vach = 0.5

If ymax > 5 And ymax <= 6 Then Vach = 0.6

For a1 = 1 To 10 ' Vong lap khac vach truc Y

nen.Line (30, nen.CurrentY - dodaiy)-(130, nen.CurrentY - dodaiy)

Dothi.CurrentX = nen.Left - 500

Dothi.CurrentY = nen.CurrentY + nen.Top - 50

Trang 7

Dothi.Print (Round(a1 * Vach, 2))

Next a1

Dothi.CurrentY = Dothi.CurrentY - 900

Dothi.Print ("Bien do")

nen.CurrentX = 100

nen.CurrentY = nen.Height - 100

hesox = 1000 / (nen.Width - 200)

hesoY = Vach * 10 / (nen.Height - 200 - dodaiy)

For X = 0 To 998 'Bat dau ve do thi

nen.Line (nen.CurrentX, nen.CurrentY)(Round(X / hesox) + 100, nen.Height

-100 - Round(y(X) / hesoY))

Next X

nen.ForeColor = &HFF0000

nen.DrawWidth = 1

nen.Line (100, nen.Height - 100 - (1 / Val(Main.K2txt)) / hesoY)-(nen.Width, nen.CurrentY)

nen.ForeColor = &H0

nen.DrawStyle = 2

nen.Line (100, nen.Height - 100 - (1 / K2) * 105 / 100 / hesoY)-(nen.Width, nen.Height - 100 - (1 / K2) * 105 / 100 / hesoY)

nen.Line (100, nen.Height - 100 - (1 / K2) * 95 / 100 / hesoY)-(nen.Width, nen.Height - 100 - (1 / K2) * 95 / 100 / hesoY)

nen.ForeColor = &HFFFFFF

nen.Line (xmax / hesox + 100, nen.Height - 100 - ymax / hesoY)-(xmax / hesox +

100, nen.Height - 100)

nen.Line (100, nen.Height 100 ymax / hesoY)(xmax / hesox + 100, nen.Height

-100 - ymax / hesoY)

nen.Line (Xod / hesox + 100, nen.Height - 100 - y(Xod) / hesoY)-(Xod / hesox +

100, nen.Height - 100)

nen.ForeColor = &H1000FF

nen.FillColor = &H1000FF

nen.FillStyle = 0

nen.Circle (xmax / hesox + 100, nen.Height - 100 - ymax / hesoY), 30

hic.Caption = "Tmax=" + Str(xmax * T) + " ,Ymax=" + Str(Round(ymax, 3))

'X = X / 0

End Sub

Trang 8

Form Solieu:

Form Tacgia:

Trang 9

Module Variable:

Global y(0 To 2000) As Double

Global A, B, C, T, T1, T2, K2, Xod, ymax, xmax, xmin, ymin As Double

IV Chọn bước tính đủ để hệ ổn định : Ở đây ta chọn bước tính K=1000

V In kết quả 100 giá trị (mỗi giá trị cách nhau 10 bước) :

Sau khi chạy chương trình mô phỏng ta được 100 giá trị :

Trang 10

VI Vẽ đường cong quá độ :

Sau khi chạy chương trình với K1=100, K2=0.3, T=0.003 như các giá trị mặc định lúc khởi động chương trình, ta được kết quả như sau:

Trang 11

Mô phỏng do MatLab vẽ:

Trang 12

So sánh kết quả, ta thấy giống nhau Như vậy, thuật toán mô phỏng là đúng

VII Tính và in các chỉ tiêu chất lượng của hệ thống điều khiển tự động:

Kết quả tính được sau khi chạy mô phỏng:

Gia tri cuc dai Ymax: 4.30555236391241 Gia tri cuc tieu Ymin: 0

Thoi gian de dat cuc dai Tmax: 618 s Thoi gian de dat on dinh Tod: 1.428 s

Do qua on dinh: 29.1665709173723

Các phần còn lại như thiết kế giao diện, nhập thông số từ bàn phím, in và lấy kết quả dưới dạng số, dưới dạng đường cong của quá trình quá độ Vào và ra khỏi chương trình mô phỏng đã được trình bày chi tiết ở các phần trên

Tài liệu tham khảo:

- Giáo trình mô hình hoá hệ thống và mô phỏng - GS.TS Nguyễn Công Hiền

- Lí thuyết điều khiển tự động

- Tài liệu về ngôn ngữ lập trình VB

Ngày đăng: 04/12/2021, 22:57

TỪ KHÓA LIÊN QUAN

w