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

DÙNG MÁY TÍNH KHẢO SÁT QUÁ TRÌNH QUÁ ĐỘ CỦA HỆ ĐIỀU KHIỂN TỰ ĐỘNG.

11 21 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 11
Dung lượng 88,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

Để đảm bảo một hệ thống tự động hoạt động tốt và ổn đinh, chúng ta cần khảo sát quá trình quá độ để xem đặc tính theo thời gian của hệ, từ đó có thể điều chỉnh các tham số phù hợp để đáp ứng đúng cho ứng dụng thực tế.

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI.

KHOA ĐIỆN

BỘ MÔN TỰ ĐỘNG HOÁ XÍ NGHIỆP CÔNG NGHIỆP.

BÀI TẬP DÀI MÔ HÌNH HOÁ SỐ 1

DÙNG MÁY TÍNH KHẢO SÁT QUÁ TRÌNH QUÁ ĐỘ

CỦA HỆ ĐIỀU KHIỂN TỰ ĐỘNG

Chủ nhiệm bộ môn : TS.Nguyễn Mạnh Tiến

Thầy giáo hướng dẫn : GS.TS.Nguyễn Công Hiền

Th.S.Nguyễn Danh Huy

Sinhviên : Võ Quang Hưng

Nguyễn Hữu Đông Phạm Tuấn Diện Đinh Quang Tuận Lớp : TĐH3_K46

Nhóm : 2

Hà Nội……… 9-2004

Trang 2

1) Đề bài:

Dùng máy tính khảo sát quá trình quá độ của hệ điều khiển tự động

a)Sơ đồ cấu trúc của hệ thống:

u(t) y(t)

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

+ u(t) = 1(t),

+ Ki ,Ti -theo đề bài đã cho,

+ T- bước cắt mẫu,tự chọn

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

) 1 )(

1 (

1

) 1 )(

1 ( ) (

2 1

2 1

2 1

1

s T s T

K K

s T s T

K s

W

) 1 )(

1 (

) 1 )(

1 (

) 1 )(

1 ( )

(

2 1

2 1 2

1

2 1

1

s T s T

K K s

T s T

s T s T

K s

W

2 1 2

1

2 2 1

1

1 ).

( ) (

K K s

T T s T T

K s

W

K2

Trang 3

Thay

1

1

2

Z

Z T

s Vào biểu thức trên ta có:

2 1 2

1

2 2

1

1

1 ) 1 (

) 1 ( 2 ) (

) 1 (

) 1 (

2

)

(

K K Z

T

Z T T Z

T

Z T T

K Z

W

C BZ AZ

Z Z

T K

2 2

Với A = 4.T1.T2 + 2.T.T1 + 2.T.T2 + K1.K2.T2 + 2.T2

B = -8.T1.T2 + 2.K1.K2.T2 + 2.T2

C = 4.T1.T2 - 2.T.T1 - 2.T.T2 + K1.K2*T*T + T*T

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

C BZ AZ

Z Z T

K

Z

U

Z

Y

2 2

)

(

)

(

 A.Z2.Y(Z) + B.Z.Y(Z) + C.Y(Z) = K1.T2.(Z2.U(Z) + 2.Z.U(Z) + U(Z))

Dùng tính chất 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:

KB YKC Y K K TUKUKU K

Y

A  2   1   2  2  2  1 

1

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

UK 2 UK  1 U K  1

1 4

1

2 Y K B Y K C Y K K T

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

YK 2 ( B.YK 1 C.Y K 4 K .T2 ) /A

1

Từ phương trình sai phân của hệ thống điều khiển tự động ,ta viết phương trình máy tính để tìm đáp ứng ra của hệ y(t) khi tín hiệu vào là hàm nhảy cấp 1(t)

Trang 4

3 Chương trình Matlab

>> K1 = 4;

>> K2 = 1;

>> T1 = 0.1;

>> T2 = 0.1;

>> num =[K1]

>> den =[T1*T2,T1+T2,K1*K2 + 1];

>> step(num,den)

>> Step(num,den);title('Dac tinh qua do cua he thong');

>> ylabel('y(t)');xlabel('t,sec');

Kêt luận :

Theo phơưng trình đặc tính của hệ thống va tiêu chuẩn Routh-hơpit ta thay đẻ hệ thống ổn định thì (K1*K2 + 1)>0 do đó tuỳ tong thông số mà ta có đạc điểm khác nhau

Vứi số liệu trên thì hệ thống ổn định

Trang 5

3) Viết phương trình mô phỏng bằng Visual Basic.

Option Explicit

Dim A, B, C 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

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

Trang 6

T1 = Val(txtt1.Text)

T2 = Val(txtt2.Text)

t = 0.001

If (K1 * K2 + 1) <= 0 Then

MsgBox (" He thong khong on dinh ")

Else

MsgBox (" He thong on dinh ")

End If

If (K1 = 0) Or (K2 = 0) Or (T1 = 0) Or (T2 = 0) Then

MsgBox (" Chua nhap so lieu ")

Else

A = 4 * T1 * T2 + 2 * T1 * t + 2 * t * T2 + K1 * K2 * t * t + t * t

B = (-8) * T1 * T2 + 2 * K1 * K2 * t * t + 2 * t * t

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

Y(0) = 0

Y(1) = 0

Ymax = 0

time = CStr(txtthoigian.Text) ' THoi gian khao sat (s)

For i = 2 To 1000 * time Step 1

Y(i) = (4 * K1 * t * t - B * Y(i - 1) - C * Y(i - 2)) / 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)

Else: Ymax = 0.001

End If

Hsox = 5.4 / time

'Tim xicma

xichma = Abs(Ymax - Y(1000 * time)) / Ymax * 100

'Tim yod gan nhat

i = 0

While (Abs(Y(i) - Y(1000 * time)) > 0.0001) And (i < 1000 * time - 1)

i = i + 1

Tod = i

Wend

Yod = Y(i)

'Khac do truc hoanh

Si = time / (t * 5)

Trang 7

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 * Y(1000 *

(Graph.Width - 400, Graph.Height - 400 - Round(Hsoy * Y(1000 * time))) Graph.CurrentX = Tod * Hsox + 450

Graph.CurrentY = Graph.Height - 800 - Round(Yod * Hsoy)

Graph.Print "Yôđ = " + Format(CStr(Y(1000 * time)), "####0.0000")

'Ve duong sai so

Graph.Line (400, Graph.Height - 400 - Round(Hsoy * 0.95 * Y(1000 *

time)))-(Graph.Width - 400, Graph.Height - 400 - Round(Hsoy * 0.95 * ‘ Y(1000 * time)))

Graph.Line (400, Graph.Height - 400 - Round(Hsoy * 1.05 * Y(1000 *

time)))-(Graph.Width - 400, Graph.Height - 400 - Round(Hsoy * 1.05 * Y(1000 * time)))

Trang 8

'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ôđ = " + 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ôđ"

' 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 999 * time Step 1

Trang 9

If i Mod 10 = 0 Then

txty.Text = txty.Text + "y[" + CStr(i) + "] = " + Format(CStr(Y(i)), "#0.00000") + vbNewLine

End If

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

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

vedothi

End Sub

Private Sub exit1_Click()

End

End Sub

Private Sub sodo1_Click()

Graph1.Visible = True

End Sub

Private Sub txtK1_KeyPress(KeyAscii As Integer)

Trang 10

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

If (K1 * K2 + 1) <= 0 Then

MsgBox (" He thong khong on dinh ")

Else

MsgBox (" He thong on dinh ")

End If

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 10(s) ")

End If

End If

End Sub

Trang 11

Đặc tính quá độ hệ thống điều khiển chạy bằng Visual Basic

Ngày đăng: 04/12/2021, 23:54

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w