Tải bản đầy đủ (.docx) (22 trang)

BÀI tập lớn mô HÌNH hóa PHẠM TÂM THÀNH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (332.65 KB, 22 trang )

BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

BÀI TẬP LỚN

MÔ HÌNH HÓA HỆ THỐNG
SINH VIÊN THỰC HIỆN :

ĐỀ TÀ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Đ”
Cho hệ thống điều khiển tự động có các thông số:
K1=100; K2=0,1; T1=0,2; T2=0,1s
và sơ đồ cấu trúc như sau:

Nhiệm vụ của sinh viên:
- Tìm hàm truyền kín của hệ
- Viết phương trình sai phân của hệ
- Viết chương trình mô phỏng
- Kết quả mô phỏng, nhận xét, bình luận

1. XÁC ĐỊNH HÀM TRUYỀN CỦA HỆ THỐNG

Từ đề bài ta có thể mô hình lại hệ thống như sau :
1


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Hình 1.1: Mô tả rút gọn của hệ thống
Từ đây ta tính toán ra mô hình hệ thống như sau :
G(s) =
Gsys(s) = =


= =
= =
Thay s = vào , ta được hàm truyền theo toán tử z như sau :
Gsys(z) =
=
= =
Vậy chính là hàm truyền hệ thống cần tìm.

2. XÁC ĐỊNH PHƯƠNG TRÌNH SAI PHÂN CỦA HỆ THỐNG

Ta có : = 


Dựa vào tính chất dịch trái của hàm gốc, biến đối z hai vế, ta
được :
2


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG



Xét tín hiệu đầu vào là hàm xung đơn vị u(t) = 1(t) :
 u(k+3) = u(k+2) = u(k+1) = u(k) = 1

Lấy T = 0.001s, vậy ta có phương trình sai phân là:

Với :

= 0.16120201

= - 0.48119797
= 0.46799803
= -0.15880199
= 0.0008
= 0.02
= 0.0012
= 0.000002
= 0.00000001

3


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

3. CHƯƠNG TRÌNH THỰC HIỆN DÙNG VISUAL BASIC 6.0
3.1.

THIẾT KẾ GIAO DIỆN CHƯƠNG TRÌNH

a. Form1: Giao diện mô phỏng

Hình 3.1: Giao diện của chương trình trên VB6
CODE thực hiện Form1:
'Khai bao bien dung trong chuong trinh'
Dim y() As Double
Public i, k As Long
Public Ymax, Yod, Tmax, Tod, DQDC As Single
Public n, f, p As Single
Public K1, K2, T1, T2, A, B, C, D, E, T As Double
Public dem, dem1, dem2, dem3, dem4, dem5 As Integer

'Chuong trinh chay ngay khi nhan nut Run'
Private Sub Form_Load()
Luoi.Enabled = False
ChiTieuCL.Enabled = False
TrucTG.Enabled = False
4


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

dem1 = dem2 = dem3 = dem4 = dem5 = dem = 0
End Sub
'Code Khao sat he thong'
Public Sub KhaoSat()
Ymax = Yod = Tmax = Tod = DQDC = 0
'Lay cac gia tri cua he thong nhap tu man hinh'
K1 = Val(Text1.Text)
K2 = Val(Text2.Text)
T1 = Val(Text3.Text)
T2 = Val(Text4.Text)
T = 0.001
'So diem ve mong muon, cang nhieu diem ve, dac tinh
se cang min'
k = Text13.Text
'Cac gia tri duoc tinh toan tu phuong trinh sai phan'
A = (8 * T1 * T2) + (4 * T * (T1 + T2)) + (2 * T ^ 2) +
(K1 * K2 * T ^ 3)
B = (-24 * T1 * T2) - (4 * T * (T1 + T2)) + (2 * T ^ 2)
+ (3 * K1 * K2 * T ^ 3)
C = (24 * T1 * T2) - (4 * T * (T1 + T2)) - (2 * T ^ 2) +

(3 * K1 * K2 * T ^ 3)
D = (-8 * T1 * T2) + (4 * T * (T1 + T2)) - (2 * T ^ 2) +
(K1 * K2 * T ^ 3)
E = 8 * K1 * T ^ 3
'Khai bao so phan tu mang dong co do lon 15000 phan
tu, de lay diem ve tren Picture'
ReDim y(k + 14999)
5


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

'Tinh cac y(k)'
'Do PTSP bat dau tu phan tu y(k) thu 3, nen vong lap
se lay i (0-14996)'
For i = 0 To k + 14996
'Lan luot tinh tung gia tri y(k)'
y(i + 3) = (E - B * y(i + 2) - C * y(i + 1) - D *
y(i)) / A
'Neu gia tri sau lon hon gia tri Ymax thi gia tri do se
tro thanh Ymax'
If Ymax < y(i) Then
Ymax = y(i)
p=i
End If
Next
'Khi do gia tri Tmax se nam tai thoi diem xuat hien
Ymax'
Tmax = p * T
'Gia tri Yod duoc xac dinh bang cach co gia tri s --> 0,'

'thay s = 0 vao ham truyen dat G(s) ban dau, thu duoc
cong thuc Yod'
Yod = K1 / (K1 * K2)
f = Ymax
i=k
'Khi gia tri Yod dat den duoi 5% Yod thi diem do la gia tri
Tod tren truc time'
Do While Abs(y(i) - Yod) / Yod <= 0.05
i=i-1
Loop
6


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

n=i
Tod = n * T
'Tinh toan do qua dieu chinh'
DQDC = ((Ymax - Yod) * 100) / Yod
'Lam tron ket qua sau dau cham phay'
text_DQDC = Round(DQDC, 2)
text_Ymax = Round(Ymax, 4)
text_Yod = Round(Yod, 4)
text_Tmax = Round(Tmax, 3) & " (s)"
text_Tod = Round(Tod, 3) & " (s)"
End Sub
'Code Ve Truc'
Public Sub Vetruc()
Picture1.DrawStyle = 6
Picture1.Cls

'Thay doi ten cua truc khi tick vao Truc(t)'
If TrucTG.Value = 0 Then
k=k
Else
k=k*T
End If
'Dat toa do Picture1'
Picture1.Scale (-0.15 * k, 1.45 * f)-(1.15 * k, -f / 7.5)
've hai truc'
Picture1.Line (0, 0)-(1.1 * k, 0)
Picture1.Line (0, 0)-(0, 1.375 * f)
7


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

've mui ten 2 truc'
Picture1.Line (1.08 * k, 0.02 * f)-(1.1 * k, 0)
Picture1.Line (1.08 * k, -0.02 * f)-(1.1 * k, 0)
Picture1.Line (-0.01 * k, 1.33 * f)-(0, 1.375 * f)
Picture1.Line (0.01 * k, 1.33 * f)-(0, 1.375 * f)
'viet dai luong truc'
Picture1.CurrentX = 1.08 * k
Picture1.CurrentY = -0.05 * f
If TrucTG.Value = 0 Then
Picture1.Print "K"
Else
Picture1.Print "t(s)"
End If
Picture1.CurrentY = 1.375 * f

Picture1.CurrentX = -0.08 * k
Picture1.Print "Y(k)"
'Khac truc toa do x'
For i = 0 To k Step k / 10
Picture1.Line (i, 0)-(i, -0.025 * f)
Picture1.CurrentX = i - k * 0.015
Picture1.CurrentY = -0.05 * f
Picture1.Print i
Next

8


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

'Khac truc toa do y'
For i = f / 8 To f + f / 4 Step f / 8 'Khac truc y'
Picture1.Line (0, i)-(-0.01 * k, i)
Picture1.CurrentX = -0.13 * k
i = Round(i, 4)
Picture1.Print i
Next
'Ve Luoi Grid neu duoc tick'
Picture1.DrawStyle = 2
If Luoi.Value = 1 Then
For i = 0 To k Step k / 10
Picture1.Line (i, 0)-(i, 1.25 * f)
Next
For i = f / 8 To f + f / 3 Step f / 8
Picture1.Line (0, i)-(k, i)

Next
End If
End Sub
'Code Ve do thi'
Public Sub Vedothi()
Dim time As Integer
'Thoi gian the hien dac tinh bang so diem ve x thoi gian
trich mau'
time = Text13
Text6.Text = time * T & " (s)"
Picture1.DrawStyle = 6
Picture1.PSet (0, y(0))
9


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

If TrucTG.Value = 0 Then
For i = 1 To k
Picture1.Line -(i, y(i)), vbBlue
Next
If ChiTieuCL.Value = 1 Then
' Ve Ymax,Tmax'
Picture1.DrawStyle = 2
Picture1.Line (0, Ymax)-(p, Ymax)
Picture1.Line (p, Ymax)-(p, 0)
Picture1.CurrentY = Ymax + 0.1 * f
Picture1.CurrentX = p + k * 0.03
Picture1.Print "Ymax"
Picture1.CurrentY = 0.1 * f

Picture1.CurrentX = p + k * 0.03
Picture1.Print "Kmax"
'Ve Tod va 2 dg tiem can'
Picture1.CurrentY = 0.1 * f
Picture1.CurrentX = n + k * 0.03
Picture1.Print "Kod"
Picture1.Line (0, Yod + Yod * 0.05)-(k, Yod + Yod *
0.05)
Picture1.Line (0, Yod - Yod * 0.05)-(k, Yod - Yod *
0.05)
Picture1.Line (n, y(n))-(n, 0)
Picture1.DrawStyle = 6
Picture1.Line (0, Yod)-(k, Yod), vbRed
10


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

'DQDC'
Picture1.Line (0.85 * k, Yod + Yod * 0.05)-(0.85 * k,
Yod + f / 4)
Picture1.Line (0.85 * k, Yod - Yod * 0.05)-(0.85 * k,
Yod - f / 4)
'Mui Ten'
Picture1.Line (0.85 * k, Yod + Yod * 0.05)-(0.84 * k,
Yod + Yod * 0.08)
Picture1.Line (0.85 * k, Yod + Yod * 0.05)-(0.86 * k,
Yod + Yod * 0.08)
Picture1.Line (0.85 * k, Yod - Yod * 0.05)-(0.84 * k,
Yod - Yod * 0.08)

Picture1.Line (0.85 * k, Yod - Yod * 0.05)-(0.86 * k,
Yod - Yod * 0.08)
'The hien chu DQDC'
Picture1.CurrentX = 0.88 * k
Picture1.CurrentY = Yod + f / 4
Picture1.Print "DQDC"
Picture1.CurrentX = 0.88 * k
Picture1.CurrentY = Yod + f / 6
Picture1.Print "5% Yod"
End If
Else
k = Text13.Text
For i = 1 To k
Picture1.Line -(i * T, y(i)), vbBlue
Next

11


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

If ChiTieuCL.Value = 1 Then
' Ve Ymax,Tmax'
Picture1.DrawStyle = 2
Picture1.Line (0, Ymax)-(Tmax, Ymax)
Picture1.Line (Tmax, Ymax)-(Tmax, 0)
Picture1.CurrentY = Ymax + 0.1 * f
Picture1.CurrentX = Tmax + (k * T) * 0.03
Picture1.Print "Ymax"
Picture1.CurrentY = 0.1 * f

Picture1.CurrentX = Tmax + (k * T) * 0.03
Picture1.Print "Tmax"
'Ve Tod va 2 dg tiem can'
Picture1.CurrentY = 0.1 * f
Picture1.CurrentX = Tod + (k * T) * 0.03
Picture1.Print "Tod"
Picture1.Line (0, Yod + Yod * 0.05)-(k * T, Yod + Yod
* 0.05)
Picture1.Line (0, Yod - Yod * 0.05)-(k * T, Yod - Yod *
0.05)
Picture1.Line (Tod, y(n))-(Tod, 0)
Picture1.DrawStyle = 6
Picture1.Line (0, Yod)-(k * T, Yod), vbRed
'DQDC'
Picture1.Line (0.85 * k * T, Yod + Yod * 0.05)-(0.85 *
k * T, Yod + f / 4)
Picture1.Line (0.85 * k * T, Yod - Yod * 0.05)-(0.85 *
k * T, Yod - f / 4)
'Mui Ten'
Picture1.Line (0.85 * k * T, Yod + Yod * 0.05)-(0.84 *
k * T, Yod + Yod * 0.08)
12


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Picture1.Line (0.85 * k * T, Yod + Yod * 0.05)-(0.86 *
k * T, Yod + Yod * 0.08)
Picture1.Line (0.85 * k * T, Yod - Yod * 0.05)-(0.84 *
k * T, Yod - Yod * 0.08)

Picture1.Line (0.85 * k * T, Yod - Yod * 0.05)-(0.86 *
k * T, Yod - Yod * 0.08)
'Chu DQDC'
Picture1.CurrentX = 0.88 * k * T
Picture1.CurrentY = Yod + f / 4
Picture1.Print "DQDC"
Picture1.CurrentX = 0.88 * k * T
Picture1.CurrentY = Yod + f / 6
Picture1.Print "5% Yod"
End If
End If
End Sub

'Khi tick chon Luoi Grid'
Private Sub Luoi_Click()
Call KhaoSat
Call Vetruc
Call Vedothi
End Sub
'Khi tick chon Truc (t)'
Private Sub TrucTG_Click()
Call KhaoSat
Call Vetruc
Call Vedothi
13


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

End Sub

'Khi tick chon Chi tieu chat luong'
Private Sub ChiTieuCL_Click()
Call KhaoSat
Call Vetruc
Call Vedothi
End Sub
'Khi chon In ket qua'
Private Sub Print_Click()
If dem = 0 Then
MsgBox "Chua co ket qua mo phong!" & vbCrLf & " An
nut 'Ve' de lay ket qua mo phong", vbOKOnly, "Error!"
Else
Form2.Text1.Text = ""
Form2.Show
End If
End Sub
'Khi thuc hien lenh Ve dac tinh'
Private Sub Ve_Click()
If Text1.Text = "" Then
MsgBox "Chua nhap K1", vbOKOnly, "Error!"
Text1.SetFocus
Exit Sub
ElseIf Text2.Text = "" Then
MsgBox "Chua nhap K2", vbOKOnly, "Error!"
Text2.SetFocus
Exit Sub
ElseIf Text3.Text = "" Then
MsgBox "Chua nhap T1", vbOKOnly, "Error!"
14



BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Text3.SetFocus
Exit Sub
ElseIf Text4.Text = "" Then
MsgBox "Chua nhap T2", vbOKOnly, "Error!"
Text4.SetFocus
Exit Sub
ElseIf Text13.Text = "" Then
MsgBox "Chua nhap So Diem Ve", vbOKOnly,
"Error!"
Text13.SetFocus
Exit Sub
ElseIf Val(Text13) < 1000 Then
MsgBox "So diem ve qua nho" & vbCrLf & "Ban nen
tang so diem ve lon hon" & vbCrLf & "de hien thi day du
chi tieu chat luong", vbOKOnly, "Chu y!"
Text13.SetFocus
Exit Sub
End If
'Neu chua thay doi gia tri ma van nhan nut Ve, thi gia tri so
lan khao sat se khong thay doi'
Call KhaoSat
If dem1 <> K1 Or dem2 <> K2 Or dem3 <> T1 Or
dem4 <> T2 Or dem5 <> k Then
dem1 = K1
dem2 = K2
dem3 = T1
dem4 = T2

dem5 = k
dem = dem + 1
15


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Text12.Text = dem
End If
Call Vetruc
Call Vedothi
Luoi.Enabled = True
TrucTG.Enabled = True
ChiTieuCL.Enabled = True
If n > k Then
MsgBox "So diem ve qua nho" & vbCrLf & "Ban nen tang
so diem ve de hien thi day du chi tieu chat luong",
vbOKOnly, "Chu y!"
End If
End Sub
'Doan lenh nay cho phep nguoi dung su dung cac phim
len/xuong/trai/phai va nut Enter tren ban phim '
'De nhap gia tri K1, K2, T1, T2 su dung cac phim
len/xuong/trai/phai de di chuyen'
'De ve dac tinh su dung nut Enter ma khong can click nut
Ve'
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As
Integer)
If KeyCode = 40 Then Text2.SetFocus
End Sub

Private Sub Text2_KeyDown(KeyCode As Integer, Shift As
Integer)
If KeyCode = 40 Then
Text3.SetFocus
ElseIf KeyCode = 38 Then
Text1.SetFocus
16


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

End If
End Sub
Private Sub Text3_KeyDown(KeyCode As Integer, Shift As
Integer)
If KeyCode = 40 Then
Text4.SetFocus
ElseIf KeyCode = 38 Then
Text2.SetFocus
End If
End Sub
Private Sub Text4_KeyDown(KeyCode As Integer, Shift As
Integer)
If KeyCode = 38 Then Text3.SetFocus
End Sub
Private Sub Ve_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then Call Ve_Click
End Sub
Private Sub inKQ_Click()
Form3.Show

End Sub
Private Sub inFO_Click()
Form2.Show
End Sub
'Thuc hien thoat chuong trinh'
Private Sub THOAT_Click()
If MsgBox("Do you really want to exit?", vbOKCancel,
"Exit program") = vbOK Then Unload Form1
17


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Unload Form2
Unload Form3
End Sub
b.

Giao diện mở rộng
Form2: Thông tin người dùng

Hình 3.2: Giao diện thông tin người dùng
Form3: Xem và in kết quả

18


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Hình 3.2: Giao diện Xem và in kết quả

CODE thực hiện: “tham khảo trong chương trình”
3.2.

KẾT QUẢ MÔ PHỎNG

Hình 3.4: Kết quả mô phỏng trên VB6.0

19


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Để kiểm chứng kết quả mô phỏng trên, sử dụng phần mềm
MATLAB – Simulink & mat.file để vẽ đặc tính như sau:

Hình 3.5: Xây dựng chương trình mô phỏng trên Simulink
Khai báo các giá trị tham số K1, K2, T1, K2 để phục vụ mô
phỏng sử dụng mat.file:
FILE_MOPHONG.m
K1
K2
T1
T2

=
=
=
=

100

0.1
0.2
0.1

;
;
;
;

Hình 3.6: Dạng đặc tính mô phỏng được trên Simulink
3.3.
-

KẾT QUẢ MÔ PHỎNG

Bậc của hàm truyền
20


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

Từ phương trình (1) ta có hàm truyền của hệ thống

Gsys(z) =
Ta có m = 0 và n = 3 với m là bậc của tử số và n là bậc
của mẫu số.
Với n > m như vậy đường đặc tính sẽ xuất phát từ điểm
gốc tọa độ
-


Giá trị xác lập h∞


-

,

như vậy giá trị xác lập h∞ ≠ 0

Hằng số thời gian
Từ phương trình (1) ta gọi Tt là hằng số thời gian của tử, T m
là hằng số thời gian của mẫu (với T m là tổng các hằng số
thời gian nhỏ).
=> Tt = 1 và Tm = T1 + T2 = 0.3 => Tt > Tm
=> Đường đặc tính có quá điều chỉnh
Hệ không có thời gian trễ nên đường đặc tính của hệ sẽ có
dạng

Hình 3.7: Dạng đặc tính dự đoán của hệ thống
21


BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG

3.4. NHẬN XÉT
-

Hệ thống có độ quá điều chỉnh lớn. Số lần dao động lớn,
thời gian tăng tốc tới Tmax = 17. Như vậy ta thấy hệ


-

thống có chất lượng khá kém.
Hệ thống mất thời gian lớn để ổn định, thời gian xét đặc

-

tính lớn, giá trị ổng định được xác định là Yod = 10.
Đường cong nhận được bằng cách dùng phần mềm
MATLAB để tính hoàn toán trùng với đường cong mô
hình hoá trên máy tính, điều đó chứng tỏ tính đúng đắn
của phương pháp đã dùng để mô hình hoá hệ điều
khiển tự động trên máy tính.

22



×