Bài tập lớn
Mô hình hóa
Nhóm 6(đề 2b).
Đề bài:
Cho hệ thống có sơ đồ cấu trúc như hình vẽ:
Trong đó có các tham số như bảng dưới:
K1
100
Nhiệm vụ:
K2
0.1
T
0.001
T1
0.2
T2
0.1
-Viết phương trình sai phân của hệ ĐKTĐ.
-Dùng ngôn ngữ lập trình nào đó viết chương trình chạy trên máy tính.
-Chọn bước tính k=1000.
-In 100 giá trị bằng số của y(k).
-Tính và in ra các chỉ tiêu đánh giá chất lượng sau:
Y(k)max :giá trị cực đại của tín hiệu ra.
δmax % : độ quá điều chỉnh.
Y(k)ôd : giá trị ổn định của tín hiệu ra.
tmax : thời gian đạt giá trị y(k)max.
tôd : thời gian đạt giá trị y(k)ôd.
-Vẽ đường cong quá trình quá độ.
-Dùng phần mềm MALAB,SIMULINK… vẽ đường cong quá trình quá
độ.
-So sánh các kết quả.Nhận xét,rút ra kết luận.
1
1.Viết phương trình sai phân.
+ Hàm truyền mạch hở:
+ Hàm truyền mạch kín:
(1.1)
Thay p =
2 z −1
vào công thức 1.1 ta được
T z +1
Trong đó:
A = 4T1T2+2T(T1+T2)+(1+K1K2)T2
B = -8T1T2+2T2(1+K1K2)
C = 4T1T2-2T(T1+T2)+(1+K1K2)T2
Ta có hàm sai phân:
Phương trình sai phân tương ứng là:
Theo giả thiết u(t) = 1(t) nên U(k+2) =U(k+1) =U(k) =1
Ta có:
AY(k+2)+BY(k+1)+CY(k) = 4K1 K 2T 2
2. Thiết kế giao diện.
2
3. Code
Dim k1 As Double
Dim k2 As Double
Dim k3 As Double
Dim t As Double
Dim T1 As Double
Dim t2 As Double
Dim y(2002) As Double
Dim A As Double
Dim B As Double
3
Dim c As Double
Dim Kmax, Tmax, denta, ymax As Double
Dim toop As Long
Private Sub exit_Click()
End
End Sub
Private Sub Form_Load()
Frm1.Show
Frm.Enabled = False
Frm.Hide
kt = False
End Sub
Private Sub in_Click()
Call inKQ_Click
End Sub
'in 100 ket qua
Private Sub inKQ_Click()
For k = 10 To 1000 Step 10
i=i+1
Text14.Text = Text14 & "y(" & k & ")=" & y(k * 2) & " "
Next k
End Sub
Private Sub mnuve_Click()
Call vedothi_click
End Sub
Private Sub mnuxoa_Click()
Call xoa_Click
End Sub
4
Private Sub Opbatluoi_Click()
pic1.DrawWidth = 1
For i = 0 To 20 Step 0.1
For j = 2 To 20 Step 1
pic1.PSet (i + 1, j)
Next
Next
For i = 1 To 20 Step 0.1
For j = 1 To 20 Step 1
pic1.PSet (j + 1, i)
Next
Next
End Sub
Private Sub Optatluoi_Click()
For i = 0 To 20 Step 0.1
For j = 1 To 20 Step 1
pic1.PSet (i + 1, j), vbWhite
Next
Next
For i = 1 To 20 Step 0.1
For j = 1 To 20 Step 1
pic1.PSet (j + 1, i), vbWhite
Next
Next
End Sub
Private Sub xoa_Click()
Text9 = ""
Text10 = ""
5
tetx13 = ""
Text11 = ""
Text12 = ""
Text13 = ""
Text15 = ""
Text14 = ""
Text16 = ""
pic1.Refresh
Optatluoi.Value = True
End Sub
Private Sub thoat_Click()
End
End Sub
Private Sub vedothi_click()
pic1.DrawWidth = 2
k1 = Text1
k2 = Text2
t = Text4
T1 = Text5
t2 = Text6
pic1.Scale (0, 20)-(20, 0)
pic1.Line (1, 1)-(1, 20)
pic1.Line (1, 1)-(20, 1)
'khac truc t
For i = 0 To 18 Step 1
pic1.DrawWidth = 2
pic1.CurrentX = i + 0.7
pic1.CurrentY = 0.9
6
If (((i / 10) >= 1) Or i = 0) Then
pic1.Print Str(i / 10)
Else
pic1.Print "0" & Str(i / 10)
End If
pic1.Line (i + 1, 0.8)-(i + 1, 1.2)
Next
pic1.CurrentX = 19.5
pic1.CurrentY = 0.9
pic1.Print "t(s)"
'khac truc y
For i = 0 To 18
pic1.DrawWidth = 2
pic1.CurrentX = 0.06
pic1.CurrentY = i + 1 + 0.2
pic1.Print Str(i)
pic1.Line (0.8, i + 1)-(1.2, i + 1)
Next
pic1.CurrentX = 0.2
pic1.CurrentY = 20
pic1.Print "Y"
've dac tinh
A = 4 * T1 * t2 + 2 * t * (T1 + t2) + (t ^ 2) * (1 + k1 * k2)
B = -8 * T1 * t2 + 2 * (t ^ 2) * (1 + k1 * k2)
c = 4 * T1 * t2 - 2 * t * (T1 + t2) + (t ^ 2) * (1 + k1 * k2)
y(0) = 0
y(1) = 0
'tim ymax,ve dac tinh
7
ymax = y(0)
For k = 0 To 2000
pic1.DrawWidth = 2
y(k + 2) = (-B * y(k + 1) - c * y(k) + 4 * k1 * (t ^ 2)) / A
pic1.Line (k / 100 + 1, y(k) + 1)-((k + 1) / 100 + 1, y(k + 1) + 1),
vbBlue
If y(k + 2) > ymax Then
ymax = y(k + 2)
Kmax = k + 2
Text10.Text = ymax
Tmax = t * (k + 2)
Text11.Text = Tmax
End If
Next
'gia tri xac lap, ve duong on dinh
Yod = y(2002)
Text9.Text = Yod
Text16.Text = Kmax / 2
For i = 0 To 2002 Step 10
pic1.DrawWidth = 1
pic1.PSet (i / 100 + 1, Yod + 1), vbGreen
Next
pic1.CurrentX = 17
pic1.CurrentY = Yod + 1.5
pic1.Print "Yod=" & Mid(Str(Yod), 1, 8)
'do qua dieu chinh
denta = (ymax - Yod) * 100 / Yod
Text12 = denta
8
've duong thoi gian cuc dai
For i = 0 To Kmax Step 10
pic1.DrawWidth = 1
pic1.PSet (i / 100 + 1, ymax + 1)
pic1.CurrentX = 1.5
pic1.CurrentY = ymax + 1.5
pic1.Print "Ymax=" & Mid(Str(ymax), 1, 8)
Next
For i = 1 To ymax + 1 Step 0.1
pic1.PSet (Kmax / 100 + 1, i)
pic1.CurrentX = Kmax / 100 + 1
pic1.CurrentY = 1.7
pic1.Print "Tmax"
Next
've duong +_5%
xaclap1 = 0.95 * Yod
For i = 0 To 2002 Step 10
pic1.DrawWidth = 1
pic1.PSet (i / 100 + 1, xaclap1 + 1), vbRed
Next
pic1.CurrentX = 15
pic1.CurrentY = 1.2 * Yod
pic1.Print "5%Yod"
xaclap2 = 1.05 * Yod
For i = 0 To 2002 Step 10
pic1.DrawWidth = 1
pic1.PSet (i / 100 + 1, xaclap2 + 1), vbRed
Next
9
' tim Tod
i = 2002
For k = 0 To 2002
i=i-1
If y(i) < 0.95 * Yod Or y(i) > 1.05 * Yod Then
kod = i - 1
Text15 = kod / 2
Text13 = t * (i - 1)
Exit For
End If
Next
've duong thoi gian on dinh
For k = 0 To 0.95 * Yod Step 0.1
pic1.DrawWidth = 1
pic1.PSet (kod / 100 + 1, k + 1)
Next
pic1.CurrentX = kod / 100 + 1
pic1.CurrentY = 1.7
pic1.Print "Tod"
End Sub
Private Sub ve_Click()
Call vedothi_click
End Sub
Private Sub skin8_Click()
Skin1.LoadSkin App.Path + "\B-Studio.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub skin7_Click()
10
Skin1.LoadSkin App.Path + "\chizh.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub skin6_Click()
Skin1.LoadSkin App.Path + "\galaxy.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub skin5_Click()
Skin1.LoadSkin App.Path + "\green.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub skin4_Click()
Skin1.LoadSkin App.Path + "\TopSecret.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub skin3_Click()
Skin1.LoadSkin App.Path + "\Paper.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub skin2_Click()
Skin1.LoadSkin App.Path + "\Web-II.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub skins1_Click()
Skin1.LoadSkin App.Path + "\Media.skn"
Skin1.ApplySkin Me.hWnd
End Sub
Private Sub Timer1_Timer()
11
st1 = Left(Frm.Caption, 1)
st2 = Right(Frm.Caption, Len(Frm.Caption) - 1)
Frm.Caption = st2 & st1
End Sub
Private Sub Timer2_Timer()
If Second(Time) Mod 4 = 0 Then
Txt2.Text = "Bai tap Mo hinh hoa"
Txt2.BackColor = vbRed
End If
If Second(Time) Mod 4 = 1 Then
Txt2.Text = "Giao vien huong dan: ThS Pham Tam Thanh"
Txt2.BackColor = vbYellow
End If
If Second(Time) Mod 4 = 2 Then
Txt2.Text = "Nhom sinh vien thuc hien: Van -Du'c, Xuan -Du'c, Tien
Diep"
Txt2.BackColor = vbGreen
End If
If Second(Time) Mod 4 = 3 Then
Txt2.Text = "Hai Phong, thang 3, nam 2010"
Txt2.BackColor = vbBlue
End If
End Sub
Private Sub Timer3_Timer()
Text7.Text = Now
Pic2.Top = toop
toop = toop - 30
If toop <= -5800 Then toop = Frame4.Height
12
End Sub
4. Chọn bước tính k=1000.
5. In kết quả tính toán.
6. Vẽ h(t).
13
7. In ra các chỉ tiêu chất lương của hệ thống.
8. Dùng MATLAB vẽ h(t).
14
Chương trình viết trên m-file:
k1=100;
k2=0.1;
t1=0.2;
t2=0.1;
t=0.001;
num=[k1];
den=[t1*t2 t1+t2 1+k1*k2];
step(num,den);
title('Bai tap mo hinh hoa so 1');
xlabel('t');
ylabel('y');
9. Nhận dạng hệ thống.
-Đây là khâu dao động bậc 2.
-Bậc của hàm truyền W(p) : m>n nên h(t) xuất phát từ 0.
10. Tài liệu tham khảo.
[1]. Nguyễn Phùng Quang: Matlab & simulink dành cho kĩ sư điều khiển tự
động. NXB khoa học kĩ thuật-2006
[2]. Nguyễn Công Hiền : Mô hình hóa hệ thống và mô phỏng.
15
- Xem thêm -