Mô hình hóa kèm file visualbasic các file mềm khácNhó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:K1K2TT1T21000.10.0010.20.1Nhiệm vụ: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.
Trang 1Bà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:
Nhiệm vụ:
-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
Trang 21.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
z p
T z
−
=
+ vào công thức 1.1 ta được
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
1 2
AY(k+2)+BY(k+1)+CY(k) = 4K K T
2 Thiết kế giao diện.
Trang 33 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
Trang 4Dim 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
Trang 5Private 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 = ""
Trang 6tetx13 = ""
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
Trang 7If (((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
Trang 8ymax = 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
Trang 9'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
Trang 10' 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()
Trang 11Skin1.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()
Trang 12st1 = 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
Trang 13End Sub
4 Chọn bước tính k=1000.
5 In kết quả tính toán.
6 Vẽ h(t).
Trang 147 In ra các chỉ tiêu chất lương của hệ thống.
8 Dùng MATLAB vẽ h(t).
Trang 15Chươ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