BÀI TẬP LỚN MÔ HÌNH HÓA HỆ THỐNG Sinh viên Bùi Quang Huy Lớp ĐTĐ57 ĐH MSV 67034 Đề 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ố K1 =50; K2 =0 2; T1 =0,2; T2 =0,1s Nhiệm vụ của sinh viên 1) Viết phương trình sai phân Hàm truyền kín của hệ thống W = = Thay s = vào hàm truyền của hệ thống ta được W(z) = Trong đó A = 4 + 8T + K1K2 T2 B = 8 16T + 2K1K2 T2 C = 4 + 8T + K1K2 T2 U(t) = 1 Ta có Az2 + Bz + C = K1.
Trang 2Nhiệm vụ của sinh viên:
1) Viết phương trình sai phân
Thay s = T2 z−1 z+1 vào hàm truyền của hệ thống ta được:
Trang 32 Viết phương trình mô phỏng
'Khai bao bien dung trong chuong trinh'
Dim Y() As Double
Public i, k As Long
Public Ymax, Yod, Tmax, Tod, DQDC As Double
Public n, j, p As Double
Public K1, K2, A, B, C, D, T As Double
Public dem, dem1, dem2, dem3 As Integer
'Chuong trinh chay ngay khi nhan nut Run'
Private Sub Form_Load(
'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'
Trang 4'Cac gia tri duoc tinh toan tu phuong trinh sai phan'
'Tinh cac y(k)'
'Do PTSP bat dau tu phan tu y(k) thu 3, nen vong lap se lay i'
For i = 0 To k * 0.1
'Lan luot tinh tung gia tri y(k)'
Y(i + 2) = (-B * Y(i + 1) - C * Y(i) + D) / A
'Neu gia tri sau lon hon gia tri Ymax thi gia tri do se tro thanh Ymax'
If Ymax < Y(i) Then
'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'
Trang 5Yod = 1 / K2
j = 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
n = i
Tod = n * T
'Tinh toan do qua dieu chinh'
DQDC = (Abs(Ymax - Yod) / Yod) * 100
text_Tmax = Round(Tmax, 3) & " (s)"
text_Tod = Round(Tod, 3) & " (s)"
Trang 6've hai truc'
'viet dai luong truc'
Trang 7'Khac truc toa do y'
For i = -j * 0.6 To j + j / 4 Step j / 8 'Khac truc y' Picture1.Line (0, i)-(-0.01 * k, i)
Trang 8Next
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)"
Trang 9Picture1.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 (0.85 * k, Yod + Yod * 0.05)-(0.85 * k, Yod + j / 4)
Picture1.Line (0.85 * k, Yod - Yod * 0.05)-(0.85 * k, Yod - j / 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 + j / 4
Picture1.Print "DQDC"
Trang 10Picture1.Line (0, Ymax)-(Tmax, Ymax)
Picture1.Line (Tmax, Ymax)-(Tmax, 0)
Trang 11Picture1.Line (0, Yod - Yod * 0.05)-(k * T, Yod - Yod * 0.05)
Picture1.Line (Tod, Y(n))-(Tod, 0)
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)
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)
Trang 12Private 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
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
Trang 13End 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 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 lonhon" & vbCrLf & "de hien thi day du chi tieu chat luong", vbOKOnly, "Chu y!" Text13.SetFocus
Trang 14'De nhap gia tri K1, K2 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 Ve_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then Call Ve_Click
Trang 15'Thuc hien thoat chuong trinh'
Private Sub THOAT_Click()
If MsgBox("Do you really want to exit?", vbOKCancel, "Exit program") =vbOK Then Unload Form1
Trang 205 Vẽ đường cong quá trình quá độ
Kết quả chạy chương trình như sau:
Hình 1: Kết quả mô phỏng trên Visual Basic
6 Các chỉ tiêu chất lượng của hệ
Trang 217 Dùng Matlab – Simulink mô phỏng lại hệ thống
Hình 2: Mô hình hệ thống trong Simulink
Hình 3: Kết quả mô phỏng bằng Matlab
Kết luận: Hệ đã cho ổn định theo thời gian Kết quả khảo sát bằng Matlab hoàn
toàn trùng với kết quả thu được trên Visual Basic, chứng tỏ tính đúng đắn của phương pháp đã dùng để mô hình hóa hệ thống
8.Nhận dạng hệ thống
Trang 22Kết quả tương đối giống nhau giữa hệ thống mô phỏng trong Visual Basic và kiểmtra lại bằng Matlab
9 Thiết kế giao diện
Hình 4: Giao diện mô phỏng hệ thống trong Visiual Basic
10.Tài liệu tham khảo
[1] TS Nguyễn Khắc Nghiệm – TS Phạm Tâm Thành (2017), Mô hình hóa hệ thống, Nhà xuất bản Hàng Hải
[2] Hồ Thanh Tâm (2014), Lập trình Visual Basic bộ môn Điều khiển tự động, Trường Nông Lâm TP.HCM