trường đại học bkhn
bộ môn :tự động hoá
-
Lời nói đầu
Ngày nay khó có thể tìm thấy lĩnh vưc hoạt động nào của con người mà
không sử dụng phương pháp mô hình hoá ở những mức độ khác nhau. Điều
này đặc biệt quan trọng đối với lĩnh vực điều khiển các hệ thống kỹ thuật và
xã hội, bỏi vì điêu khiển chính là quá trình thu nhận thông tin từ hệ thống,
nhận dạng hệ thống theo một mô khình nào đố và đưa ra quyết định thích hợp
để điều khiển hệ thống. Qúa trình này được tiếp diễn liên tục nhằm đưa hệ
thống vận động theo một muc tiêu định trước.
Phương pháp mô hình hoá và mô phỏng được phát triển từ đại chiến thế giới
lần thứ hai vào những năm 40 của thế kỷ XX. Lúc đó người ta ứng dụng
phương pháp mô phỏng để nghiên cứu phản ứng hạt nhân nhằm chế tạo bom
nguyên tử. Nhờ có máy tính điện tử mà phương pháp mô khìng hoá và mô
phỏng phát triển nhanh chóng và được ứng dụng vào nhiều lĩnh vực khoa học
kỹ thuật cũng như khoa học xã hội khác nhau.
Nhờ có phương pháp mô khình hoá và mô phỏng, người ta có thể phân tích,
nghiên cứu hệ thống liên tục, phi tuyến, ngẫu nhiên … một cách chính xác,
hiệu quả mà nhiều khi phương pháp giải tích truyền thống không cho ta lời
giải chính xác được.
Trong phần bài tập về mô hình hoá hệ liên tục: “ Khảo sát quá trình quá độ
của hệ điều khiển tự động ” do thời gian chuẩn bị có hạn nên chắc chắn bài
làm của chúng em còn có nhiều thiếu sót, em mong có được sự chỉ bảo thêm
của các thầy, các cô giảng dạy trong bộ môn: “ Tự động hoá xí nghiệp công
nghiệp ”- Khoa Điện-Trường Đại học Bách Khoa Hà Nội.
Một lần nữa, em xin chân thành cảm ơn thầy giáo: GS.TS.Nguyễn Công
Hiền, Thạc sỹ.Nguyễn Danh Huy đã tận tình hướng dẫn để em có thể hoàn
thành bài tập này.
-Chương 1. Lý thuyết về mô phỏng
thiếu của chúng ta. Trong lĩnh vực mô hình hoá, máy tính là công cụ chủ yếu
để thực hiện việc mô phỏng hệ thống. Sau đây chúng ta sẽ đi tìm hiểu máy
tính làm việc như thế nào trong việc mô hình hoá hệ thống.
1.4)Phương trình máy tính:
Giả sử dãy tín hiệu vào máy tính:
[X
k
] = x(0), x(T), x(2T), … x(kT)
Dãy tín hiệu ra của máy tính
[Y
k
] = y(0), y(T), y(2T), … y(kT)
trong đó T là bước cắt mẫu hay nhịp làm việc của máy tính
Tín hiệu ra ở thời điểm k tức y(kT) phụ thuộc vào giá trị của n tín hiệu ra
của m+1 tín hiệu vào xảy ra trước đó. Các giá trị của m tín hiệu vào và n tín
hiệu ra được lưu trữ trong bộ nhớ của máy tính.
Như vậy quan hệ giữa tín hiệu ra và tín hiệu vào của máy tính được viết như
sau:
2
trường đại học bkhn
bộ môn :tự động hoá
y(kT) =
)()(
10
jTkTyaiTkTxb
n
j
jn
m
i
∑∑
=
−
=
−
(1-2)
Khai triển ra ta có:
y(k) + a
n-1
y(k-1) + a
n-2
y(k-2) + … + a
1
y(k- n+1) + a
0
y(k- n) +
= b
m
x(k) + b
m-1
x(k-1) + … + b
1
x(k-2) + b
0
y(k-m) (1-3)
⇔
y(k) = - a
n-1
y(k-1) - a
n-2
phương trình sai phân của hệ để giải trên máy tính số để tìm đặc tính mô
phỏng của hệ liên tục.
*) Các tính chất biến đổi Z
1. Tính tuyến tính
Z{a[v(k)] + b[w(k)]} = aV(z) + b.W(z)
2.Dịch hàm gốc f(k) về phía trước m bước
Z[f(k)] = F(z) =
∑
∞
=
−
0
))
k
k
Zkf
⇒
Z[f(k+1)] = ZF(z) – Zf(0);
Z[f(k+2)] = Z
2
F(z) – Z
2
f(0) – Zf(1);
Tổng quát dịch m bước
∑
−
=
−
−=+
1
)(lim)0( ZFf
z ∞→
=
4
trường đại học bkhn
bộ môn :tự động hoá
Chương 2. lập trình trên máy tính để khảo sát
quá trình quá độ của hệ điều khiển tự động
Đề Bài:
2.1.Xác định hàm truyền của hệ:
Từ cấu trúc của hệ thống, ta có hàm truyền của hệ hở là:
)12)(11)(11(
21
+++
=
sTsTsT
KK
W
h
Từ đó, ta có hàm truyền của hệ kín là:
)(
)(
13.2.1)2()2(
2.1
3.1
21
2
21
23
2
k
ta được
)(
)()12(
2
2
zU
zY
CBzAz
zzD
W
Z
=
++
++
=
(2-1)
trong đó:
3
21
2
2112
2
1
)3211()2.(.2).2(.4.8 TKKKTTTTTTTTTA ++++++=
5
Tham s sinh viên t ch nố ự ọ
K1, K2 - h s khu ch iệ ố ế đạ
T1 - h ng s th i gianằ ố ờ
T2 - H ng s th i gianằ ố ờ
233
21
23
+++=+++ zzzTKKzDYzCzYzYBzzYAz
3
21
23
8)()()()( TKKzDYzCzYzYBzzYAz =+++
Dùng tính chất biến đổi Z ta tìm được phương trình sai phân tương ứng với
phương trình trên:
[ ]
3
21
8]1[]2[]3[ TKKkDYkCYkBYkAY =++++++
Vì tín hiệu là nhảy cấp U(t)=1(t) nên ta có
U[k+2] = U[k+1] = U[k] = 1
Vậy ta có
3
21
8 TKKE =
A.Y[k+3] + B.Y[k+2] + C.Y[k+1] + D.Y[k] = E
⇒
Y[k+3]=(-B.Y[k+2] - C.Y[k+1] - D.Y[k] +E)/A
2.3. Viết chương trình mô phỏng bằng ngôn ngữ Visual Basic
Sau đây là chương trình Visual Basic mô hình hoá hệ điều khiển tự động đã
cho. Chương trình cho kết quả là tín hiệu ra Y[k] dưới dạng số, cứ cách 10 số
in ra một số liệu. Chương trình cũng cho kết quả dưới dạng đường cong quá
trình quá độ của hệ ĐKTĐ và tính các đặc tính quá độ như:
Private Sub mnuNhom_Click()
MsgBox "Lưu Thiện Trường" _
& vbCrLf & vbCrLf & "Nguyễn Văn Tiến" _
& vbCrLf & vbCrLf & "Phạm Anh Tuấn", , "Nhóm thực hiện:25"
End Sub
Private Sub Mnuthoat_Click()
End
End Sub
Private Sub MnuTL_Click()
MsgBox "1. Mô hình hoá hệ thống và mô phỏng - Nguyễn Công Hiền" _
& vbCrLf & vbCrLf & "2. Ngôn ngữ lập trình Visual Basic 6.0" _
& vbCrLf & vbCrLf + "3. Lý thuyết điều khiển tự động " _
& "- Phạm Công Ngô", , "Tài liệu tham khảo"
End Sub
Private Sub Text9_click()
Dim sta As Integer
sta = MsgBox("Thời gian lấy mẫu đã được giữ cố định!", , "Thông báo")
If sta = vbOK Then
Text9.Enabled = False
End If
End Sub
*)Phần code của form 2:
Private Sub cmdChiTieuChatLuong_Click()
ChiTieuChatLuong
End Sub
7
trường đại học bkhn
bộ môn :tự động hoá
Private Sub cmdInGiaTri_Click()
CIndex = 0
Public CI As Integer
Dim Tod, Yod, Ymax, Tmax As Double
Public Sub ChapNhan()
Dim s As Integer
With frm1
K1 = Val(.Text5.Text)
8
trường đại học bkhn
bộ môn :tự động hoá
K2 = Val(.Text6.Text)
K3 = Val(.Text7.Text)
T1 = Val(.Text8.Text)
T2 = Val(.Text12.Text)
T = Val(.Text9.Text)
If K3 = 0 Then
s = MsgBox("Bạn đã nhập hệ số phản hồi bằng zero!" _
& vbCrLf & vbCrLf & " Hãy nhập lại dữ liệu (Yes/No)", 16 +
vbYesNo, "Thông báo")
If s = vbNo Then
Unload frm1
Unload frm2
Else
frm1.Show
End If
End If
.Text1.Text = Str(K1)
.Text2.Text = Str(K2)
.Text3.Text = Str(K3)
.Text4.Text = Str(T1)
.Text10.Text = Str(T1)
For I = 0 To 5999
.picDoThi.Line -(.Line1.X1 + I, .Line2.Y2 - Y(I) * 3000), vbRed
Next I
.picDoThi.DrawWidth = 1
End With
End Sub
Public Sub KhacTruc()
'Khac do truc t
Dim K As Integer
For K = 0 To 6
With frm2
.picDoThi.Line (K * 1000 + .Line2.X1, .Line2.Y1 - 80) _
-(K * 1000 + .Line2.X1, .Line2.Y1 + 80)
.Label10(K).Top = 6000
.Label10(K).Left = .Line2.X1 + K * 1000 - 300
.Label10(K).Caption = Str(K * T * 1000)
End With
Next K
'Khac do truc y
For K = 7 To 0 Step -1
Yod = K1 * K2 / (1 + K1 * K2 * K3)
With frm2
.picDoThi.Line (.Line2.X1 + 80, .Line1.Y2 - Int(Yod * 3000 * K / 4)) _
-(.Line2.X1 - 80, .Line1.Y2 - Int(Yod * 3000 * K / 4))
.Label9(K).Top = .Line1.Y2 - Int(3000 * Yod * K / 4) - 200
.Label9(K).Left = 360
.Label9(K).Caption = Str(Round((Yod * K / 4), 3))
End With
Next K
End Sub
.Text4.Text = Str(Tmax)
.Text5.Text = Str(Tod)
' Duong gia tri dat
.picDoThi.Line (.Line1.X1, .Line2.Y2 - Int(Yod * 3000)) _
-(.Line1.X1 + 3200 * 2, .Line2.Y2 - Int(Yod * 3000)), vbRed
.picDoThi.DrawStyle = vbDot
' Cac duong giong diem
.picDoThi.Line (Int(Tod / T) + .Line1.X1, .Line2.Y2 - Int(3000 * Yod)) _
-(Int(Tod / T) + .Line1.X1, .Line2.Y2), vbBlack
.picDoThi.Line (.Line1.X1, .Line2.Y2 - Int(Yod * 3000 * 1.02)) _
-(.Line1.X1 + 3000 * 2, .Line2.Y2 - Int(Yod * 3000 * 1.02)), vbBlack
.picDoThi.Line (.Line1.X1, .Line2.Y2 - Int(Yod * 3000 * 0.98)) _
-(.Line1.X1 + 3000 * 2, .Line2.Y2 - Int(Yod * 3000 * 0.98)), vbBlack
.picDoThi.Line (Int(Tmax / T) + .Line1.X1, .Line2.Y2 - Int(3000 *
Ymax)) _
-(Int(Tmax / T) + .Line1.X1, .Line2.Y2), vbBlack
.picDoThi.Line (.Line1.X1, .Line2.Y2 - Int(Ymax * 3000)) _
-(.Line1.X1 + Int(Tmax / T), .Line2.Y2 - Int(Ymax * 3000)), vbBlack
.picDoThi.DrawStyle = vbSolid
' Ve mui ten
.picDoThi.Line (Int(Tod / T) + .Line1.X1 + 500, .Line2.Y2 - Int(Yod *
3000 * 1.02)) _
11
trường đại học bkhn
bộ môn :tự động hoá
-(Int(Tod / T) + .Line1.X1 + 500, .Line2.Y2 - Int(Yod * 3000 * 1.02) -
500)
.picDoThi.Line (Int(Tod / T) + .Line1.X1 + 500, .Line2.Y2 - Int(Yod *
3000 * 0.98)) _
-(Int(Tod / T) + .Line1.X1 + 500, .Line2.Y2 - Int(Yod * 3000 * 0.98) +
.Label15.Top = .Line2.Y2 - 400
.Label15.Left = Int(Tod / T) + .Line1.X1 + 50
.Label15.Caption = "Tôđ"
End With
End Sub
'Hien thi 100 gia tri vao day
Public Sub InGiaTriNext()
Dim K As Integer
12
trường đại học bkhn
bộ môn :tự động hoá
frm3.cmdNext.Enabled = True
For K = 0 To 9
frm3.Text1(K).Text = Str(Y(CI))
frm3.Label1(K).Caption = "Y(" + Str(CI) + ")"
CI = CI + 10
Next K
If (CI >= 1000) Then
frm3.cmdNext.Enabled = False
End If
End Sub
Sau khi cho chạy chương trình ta có đường cong quá trình quá độ của hệ
ĐKTĐ và tính các đặc tính quá độ như:
odod
TTyy ,,,,
maxmaxmax
σ
Ta cho thử K1 = 12;K2 =0.1; K3 = 1 ; T1=0.5; T2 =0.5
Từ đồ thị trên ta có:
bộ môn :tự động hoá
17
trường đại học bkhn
bộ môn :tự động hoá
18
trường đại học bkhn
bộ môn :tự động hoá
19
trường đại học bkhn
bộ môn :tự động hoá
2.5.Mô phỏng trên phần mền Matlab
*Sử dụng simukinkmô phỏng hệ thống
20
trường đại học bkhn
bộ môn :tự động hoá
*Chương trình Matlab:
>> w1=tf([0 12],[.5 1])
Transfer function:
12
0.5 s + 1
>> w2=tf([0 .1],[.25 1 1])
Transfer function:
0.1
0.25 s^2 + s + 1