Báo cáo thí nghiệm matlab và simulink
Trang 1Lời Núi ĐầuMatlab là một ngôn ngữ bậc cao để giải các bài toán về kỹ thuật Nó tích hợpcác phép tính ma trận, phân tích số dựa trên các hàm cơ bản hơn nữa cấu trúc
đồ hoạ hớng tới đối tơng của Matlab cho phép tạo ra các hình vẽ có chất lợngcao, cho phép lập trình giao diện làm việc rất dễ dàng cho ngời sử dụng, dễdàng ứng dụng nó trong thực tế, cho phép:
+ Sử dung các hàm có sẵn trong th viện nh:
Control system (điều khiển tự động)
Finacial( lĩnh vực kinh tế )
fuzzylogic (điều khiển mờ ),
Symbolic (tính toán biểu thức)…
+cho phép lập tình tạo ra ứng dụng mới (M-file )
+cho phép phân tich mô phỏng mô hình thực tế (simulink)
+phân tích khảo sát và hiển thị dữ liệu
+phần mềm đồ hoạ 2D, 3D
+ứng dung phát triển giao tiếp với các phần mềm khác nh C++, fotran…
Ưu điểm của MatLab:
+ Được tớch hợp sẵn rất nhiều cỏc toolbox và cỏc hàm tớnh toỏn phức tạp, ta chỉ việc ỏp dụng
+ Thời gian tớnh toỏn tương đối nhanh (nếu biết tối ưu chương trỡnh: MatLabtớnh toỏn dựa trờn dạng Matrận nờn nếu biết đưa cỏc vũng lặp về dạng
Matrận sẽ rỳt ngắn được nhiều về thời gian tớnh toỏn)
+ Cú thể tự học, tự mày mũ để ỏp dụng (MatLab cú rất nhiều Toolbox do nú
hỗ trợ cho rất nhiều lĩnh vực khỏc nhau, tựy theo nhu cầu của bản thõn mà tatỡm hiểu phần nào cần thiết, đừng để bị choỏng trước sự "khổng lồ" của MatLab)
+ Cú thể thiết kế giao diện cho người dựng (GUI)
Nhược điểm:
Giao diện cho người dựng (GUI) khụng thể chuyển thành file exe nờn mỗi lần chạy phải chạy từ MatLab Chớnh vỡ khuyết điểm này, cỏc chương trỡnh viết bằng MatLab chỡ dựng để Mụ phỏng trong quỏ trỡnh học hoặc để tự khảo sỏt trong quỏ trỡnh nghiờn cứu vấn đề gỡ đú chứ khụng được đưa thành chương trỡnh sử dụng trong thực tế
Nội dung báo cáo bao gồm:
Bài 1: Viết chơng trình giải mạch điên trên M-File
Bài 2: Khảo sát hệ thống điều khiển trên công cụ Control System Toolbox
Trang 2Bài 3: Mô phỏng hệ thống điều khiển tự động trên công cụ Simulink
Bài 1 Viết chơng trình giải mạch điện trên M-File
Khái quát M file
Các M-file l các file ASCII (file text) bình thà các file ASCII (file text) bình th ờng chứa các câu lệnh của Matlab).một yêu cầu cần thiết là các file có phần mở rộng là ‘.m’ và vì lí do
này nên nó cái tên M-file.-có 2 loại m file : Script v à các file ASCII (file text) bình th Function Các Script
v Function file cũng hoạt động nhà các file ASCII (file text) bình th các Procedures v Functions trong cỏc à các file ASCII (file text) bình thngôn ngữ lập trình thông thờng khác.Về cơ bản nội dung của một script đợc hiểu nh chính nội dung đó đợc gõ vào đầu đấu nhắc của cửa sổ lệnh.hiểu đơngiản thì nó chỉ thực hiện một câu lệnh của Matlab, tức chơng trình gồm tập hợp các câu lệnh viết dới dạng liệt kê ,không có biến dữ liêu vào và ra
Trang 3Ưu điểm của script là: Tạo ra va sửa và xem xét một chuỗi câu lệnh có thể
dễ dàng xem lại hoặc thực hiện lại của công việc đã thực hiện.Function là các file có chứa biến dữ liệu vào và ra
Matlab cung cấp cho ta một công cụ biên soạn các Mfile khá tốt đó là các Matlab Editor
-Có thể khởi động Matlab Editor bằng cách : Từ menu File/New/M-file hoặcnhấn tổ hợp phím ‘Ctrl – N’,cửa sổ Editor hiện ra soạn thảo các câu lệnh của bạn và Save
-H m à các file ASCII (file text) bình th M-file dựng cho các h m phà các file ASCII (file text) bình th ức tạp hơn, chẳng hạn chứa các vòng lặp,các câu điều kiện
để biết trong th mục hiện tại có những m_file nào bạn có thể sử dụng lệnh What
Một số toán tử và câu lệnh trong M-file
Câu lệnh : disp(‘nội dung cần hiển thị’)
3.2 Các câu lệnh điều kiện ,rẽ nhánh
Câu lệnh điều kiện if
Trang 4Cấu trúc đơn giản nhất
Cấu trúc : if expression (các toán tử quan hệ)
Statements (nội dung)
Break : thoát khỏi vòng lặp
Error : dùng thông báo lỗi ,hiển thị cho ngời lập trình biết đó là lỗi gì
Return : cho phép quay trở về thực thi những lệnh nằm trong tác dung của
Clc : xoá tất cả lệnh trong cửa sổ commandwindow
Clear : xoá danh sách biến đợc liệt kê
Exit(quit): thoát khỏi chơng trình
Whos : cho biết tất cả các biến hiện thời
Trang 5Chương trình giải mạch điện (7 nhánh song song )
%%% bai thi nghiem so 1 %%%
%%% GVHD: Tong Thi ly %%%
%%% SVTH: Nguyen Dinh Hong Lop LTTC-DH Dien1-K1 %%%
Trang 6disp(' nhap cac thong so mach dien va tinh toan')
W = input ('Nhap Gia Tri W = ') ;
%%% Nhap tan so goc
if W == 0
disp ('Mach Dien Mot Chieu')
N = input (' Nhap So Nhanh Mach Dien = ')
for i = 1 : N
Nhanh = i
J(i) = input (' Nhap Gia Tri nguon dong J = ') ;
if J(i) ==0
E(i) = input (' Nhap Gia Tri hieu dung E = ') ;
R(i) = input (' Nhap Gia Tri thuan tro R = ') ;
Trang 7disp('cong suat toan mach')
P=sum (P)%%cong suat toan mach
else
disp('mach dien xoay chieu')
N = input (' Nhap So Nhanh Mach Dien = ')
for i = 1 : N
Nhanh = i
J0(i) = input (' Nhap Gia Tri J0 = ') ;
G(i) = input (' Nhap Gia Tri Pha J = ') ;
if J0(i)==0
E0(i) = input (' Nhap Gia Tri E0 = ') ;
F(i) = input (' Nhap Gia Tri Pha E = ') ;
R(i) = input (' Nhap Gia Tri R = ') ;
L(i) = input (' Nhap Gia Tri L = ') ;
C(i) = input (' Nhap Gia Tri C = ') ;
Trang 8E(i) = E0(i)/sqrt(2);%%% Lay gia tri hieu dung
J(i) = J0(i)/sqrt(2);%%% Lay gia tri hieu dung
Pa=K/G %%the o nut
disp ('dien the o nut ')
Trang 9disp ('cong suat tac dung toan mach')
P=sum(P)%%cong suat toan mach
disp ('cong suat phan khang toan mach')
Q= sum(P)
disp ('cong suat toan phan cua mach')
S=sqrt(P^2+Q^2)
End
Hiển thị kết quả ra màn hình sau khi dã nhập các thông số.
nhap cac thong so mach dien va tinh toan
nhap so nut mach dien d=2
Nhap Gia Tri W = 100
mach dien xoay chieu
Nhap So Nhanh Mach Dien = 7
N =
7
Nhanh =
1
Nhap Gia Tri J0 = 10
Nhap Gia Tri Pha J = 0
Nhanh =
Trang 102
Nhap Gia Tri J0 = 0
Nhap Gia Tri Pha J = 0
Nhap Gia Tri E0 = 10
Nhap Gia Tri Pha E = 10
Nhap Gia Tri R = 5
Nhap Gia Tri L = 2
Nhap Gia Tri C = 10
Nhanh =
3
Nhap Gia Tri J0 = 0
Nhap Gia Tri Pha J = 0
Nhap Gia Tri E0 = 20
Nhap Gia Tri Pha E = 0
Nhap Gia Tri R = 5
Nhap Gia Tri L = 4
Nhap Gia Tri C = 9
Nhanh =
4
Nhap Gia Tri J0 = 10
Nhap Gia Tri Pha J = 45
Nhanh =
5
Nhap Gia Tri J0 = 0
Nhap Gia Tri Pha J = 0
Nhap Gia Tri E0 = 25
Nhap Gia Tri Pha E = 60
Nhap Gia Tri R = 10
Nhap Gia Tri L = 2
Trang 11Nhap Gia Tri C = 5
Nhanh =
6
Nhap Gia Tri J0 = 0
Nhap Gia Tri Pha J = 0
Nhap Gia Tri E0 = 10
Nhap Gia Tri Pha E = 30
Nhap Gia Tri R = 20
Nhap Gia Tri L = 3
Nhap Gia Tri C = 45
Nhanh =
7
Nhap Gia Tri J0 = 10
Nhap Gia Tri Pha J = 0
Trang 13Num: vecto chứa các hệ số đa thức ở tử số bậc từ cao xuống thấp
Den: vecto chứa các hệ số đa thức ở mẫu số bậc từ cao xuống thấp
T : chu kỳ lấy mẫu của hệ gián đoạn
1.2) Điểm zezo - Điểm cực
Câu lệnh : sys=zpk(Z,P,K,T)
Z,P : là hệ số hàng chứa danh sách các điểm Zezo và điểm cực hệ thống
K : hệ số khuếch đại
Trang 141.3) Phơng trình trạng thái
Câu lệnh : sys=ss(A,B,C,D,T)
A,B,C,D : các ma trận trạng thái của hệ thống
1.4) Chuyển đổi giữa các trạng thái
- Từ hàm truyền sang trạng thái
Sys_dis,sys : hệ thống gián đoạn và liên tục tơng ứng
Method: phơng pháp lấy mẫu
Trang 15K Gs
Trong đó: H=1.5; Gs=1/s(s+1)(s+2)
4-Một Số Hàm Đặc Biệt
4.1) Hàm ctrl
Câu lệnh: C_com=ctrl(A,B) hoặc C_com=ctrl(sys)
tính ma trận điều khiển đợc của hệ thống
Sơ đồ khối của mô hình có hàm truyền
Lưu đồ thuật toỏn
Trang 17Mô phỏng hệ thống điều khiển tự động trên công cụ Simulink
Kh¸i qu¸t chung
Trang 18Động cơ một chiều được ứng dụng rộng rãi trong rất nhiều lĩnh vực.Các đề t i và các file ASCII (file text) bình th ề thiết kế bộ điều khiển cho đông cơ một chiều cũng được đề cậprất nhiều trong cac sách, tạp chí v trên Internet Trong nhià các file ASCII (file text) bình th ều t i lià các file ASCII (file text) bình th ệu, b ià các file ASCII (file text) bình thtoán điều khiển động cơ điện một chiều thường được ứng để minh họa chocác ví dụ thiết kế và tính đơn giản v khá thiết thực Mô hình toán à các file ASCII (file text) bình th động cơđiện một chiều khá đơn giản m là các file ASCII (file text) bình th ại có thể minh họa b i toán à các file ASCII (file text) bình th điều khiển vớinhiều mạch vòng.
Chúng ta sẽ áp dụng lý thuyết điều khiển cơ bản theo từng bước mộtthông qua b i toán à các file ASCII (file text) bình th điều khiển tốc độ động cơ một chiều Công cụMatlab/Simulink được sử dụng trong thiết kế vừa giúp chúng ta nhanh chúngtìm ra được mô hình cần thiết nhờ các h m toán hà các file ASCII (file text) bình th ọc mạnh mẽ của Matlabvừa minh họa cho các lệnh của Matlab thông qua Control system toolbox.Với mục tiêu l không nhà các file ASCII (file text) bình th ững cụ thể, giải quyết một cách thấu đáo b i toánà các file ASCII (file text) bình thđiều khiển tốc độ động cơ một chiều trên không gian trạng thái m cònà các file ASCII (file text) bình ththông qua đó l m sáng tà các file ASCII (file text) bình th ỏ thêm phần lý thuyết cơ bản trong một ứng dụng cụthể Chính vì lý đó đã nên phần phân tích v thià các file ASCII (file text) bình th ết kế nói chung sẽ được thựchiện nhiều trên nền các lệnh của Matlab Đồng thời phần Simulink cũngđược sử dụng một cách thích hợp.Do b i toán à các file ASCII (file text) bình th điều khiển tốc độ động cơmột chiều có thể được mở rộng ra, sử dụng nhiều loại điều khiển khác nhaunhư PID tương tự, PID số, điều khiển theo phương pháp đặt cực, quan sáttrạng thái, điều khiển tối ưu, LQG
tổng quan về simulinkSimulink tích hợp vào Matlab nh một công cụ để mô phỏng hệ thống giúp ngời phân tích và tổng hợp hệ thống 1 cách trực quan ,trong Simulink hệ thống không đợc mô tả dới dòng lệnh theo kiểu truyền thống mà ở dới dạng sơ đồ khối.Với dạng sơ đồ khối này ,ta có thể quan sát các đáp ứng thời gian của hệ thống với nhiều tín hiệu khác nhau nh tín hiệu bậc thangtín hiệu sinus, xung chữ nhật…
Simulink cho phép ngời sử dụng tạo ra các th viện khối riêng chứa đựng các mô hình ứng dụng và nó có thể tự mô phổng thí nghiệm ,quan sát kết
quả,kiểm chứng với lí thuyết trớc khi tiến hành thí nghiệm
Để khởi động Simulink từ môi trờng Matlab trong của sổ Commandonw gõ lệnh simulink
Để bắt đầu làm việc ta tạo cửa sổ bằng cách vào file-new-model.
Trong th viện Simulink có 8 th viện chính :
-Continuous : hệ thống tuyến tính và liên tục
-Discrete : hệ thống tuyến tính gián đoạn
-Nonlinear : mô hình hoá những phần tử tuyến tính nh rơle ,phần tử bão hoà
Trang 19-Source : các khối nguồn tín hiệu
-Sinks : các khối thu nhận tín hiệu
-Function & table : các hàm bậc cao của Matlab
-Math : các khối của Simulink với các hàm toán học tơng ứng của Matlab -Signals & system : các khối liên hệ tín hiệu ,hệ thống con…
Mô phỏng hệ thống tự động động cơ một chiều
trên công cụ SimulinkXét động cơ một chiều trong trờng hợp từ thông là hằng số và có giá tri danh
-Ra=Ru+Rf La
Trang 20(n tÝnh theo vßng/gi©y), nªn ta cã thể viết
Trang 22minfo(G_m) % cho biết thụng tin về mụ hỡnh đối tượng
MATLAB ss object: 2 states 2 outputs 2 inputs
MATLAB ss object: 2 states 2 outputs 2 inputs
Hàm có 2 đầu vào 2 đầu ra
figure(1); % biểu đồ thứ nhất
Trang 2310-1 100 101 102 103 104 105-120
System: untitled1 Frequency (rad/sec): 8.6 Magnitude (dB): -27.1
Trang 24Biểu đồ Bode phản ¸nh mối quan hệ giữa tần số - biªn độ v cà c¸c file ASCII (file text) b×nh th ả pha nữa nếu
vẽ đầy đủ nªn gọi l à c¸c file ASCII (file text) b×nh th đặc tÝnh tần-biªn-pha
Ví dụ, bodemag(G_m(2,1)) cho biết biªn độ của tÝn hiệu ra ở kªnh 2 theotần số ở đầu v o kªnh 1 Nghà c¸c file ASCII (file text) b×nh th ĩa l sà c¸c file ASCII (file text) b×nh th ự phụ thuộc của tốc độ đầu ra theo tần sốcủa tÝn hiệu điều khiển U_a ở đầu v o sà c¸c file ASCII (file text) b×nh th ố 1
Đã chÝnh l ý nghà c¸c file ASCII (file text) b×nh th ĩa của biểu đồ Bode Nªn cã vai trß rất quan trọng trong việc khảo s¸t
Ch¬ng tr×nh viÕt díi d¹ng M-file
(kh¶o s¸t hÖ thèng)
function bai_thi_nghiem_3
Ru=input('nhap gia tri dien tro phan ung Ru=');
Rf=input('nhap gia tri dien to phu Rf=');
Ra=Ru+Rf;
La=input('nhap gia tri dien cam phan ung La=')
Phi = 0.04;
J =input('nhap gia tri momen quan tinh cua dong co J=');
Km=input('nhap gia tri hang so dong co Km=')
Ke = 2*pi*Km;
Trang 25A_m = [-Ra/La -Ke*Phi/La; Km*Phi/2/pi/J 0];
Trang 26Lưu ý nhập các ma trận của mô hình bằng cách kích đúp chuột lên khối
v à các file ASCII (file text) bình th
Tiến hành mô phỏng bằng cách click vào Simulation/simulation parmeters
để cài đặt các thông số mô phỏng
Của sổ Simulation/simulation parmeters hiện ra ta chọn những thông số
nh sau:
Startime : thời điểm bắt đầu mô phỏng chọn=0;
Stoptime thời gian quá độ của hệ thống thờng chọn giá trị lớn;
Chạy mô phỏng bằng cách :
Vào menu Simulation/star- click double vào khối scope để quan sát mô
phỏng
Trang 27KÕt m« pháng
Tænghîpm¹chvßng
®iÒukhiÓnPID
ThiiÕt kÕ bé ®iÒu khiÓn Pid t¬ng tù
- Thiết kế bằng Simulink: Có thể coi l phà c¸c file ASCII (file text) b×nh th ương pháp thực nghiệm
Phương ph¸p thiết kế đơn giản, nhanh, mọi thứ đều cã sẵn, cứ nối v o à c¸c file ASCII (file text) b×nh thnhau rồi xem kết quả -> chọn kết quả tốt nhất
Trang 28- Thiết kế bằng Matlab: Đßi hỏi phải hiểu b i to¸n, lý thuyà c¸c file ASCII (file text) b×nh th ết v phà c¸c file ASCII (file text) b×nh th ải biết lập tr×nh một chót -> khã hơn một chót nhưng sẽ hiểu s©u hơn về lý thuyết v c¸ch thà c¸c file ASCII (file text) b×nh th ực hiện Cho phÐp khảo s¸t nhiều đặc tÝnh hơn ngay trong qu¸ tr×nh thiết kế cũng như hiểu thªm về c¸c lệnh Matlab øng dôngtrong thiết kế.
chóng ta bắt đầu với bộ điều khiển dßng (vßng lặp trong)
Ở đ©y ta chưa cần quan t©m đến tốc độ vội, dï bằng bao nhiªu cũng được, miễn là đặt chóng bằng bao nhiªu th× nã phải ra bấy nhiªu!
Để sử dụng hàm connect ta vẽ lại sơ đồ điều khiển, trong đã đ¸nh số thứ tự c¸c đầu vào của c¸c khối trong h×nh trªn, số thứ tự của c¸c đầu racủa c¸c khối trong h×nh kÝ hiÖu như h×nh sau:
Trang 29Sau đã sử dụng lệnh append để b¸o cho Matlab biết c¸c khối cần kết hợp
và thứ tự của chóng như sau:
Sys=apepend(sys1,sys2,sys3);
Tiếp theo ta phải khai b¸o c¸c điểm nối của c¸c khèi Nếu để ý sẽ thấy, đầu vào của khối là có số thứ tự là 2, nã là hiệu của đầu ra số 1 của khối và đầu ra số 3 của DCM Vậy nªn khi khai b¸o ma trận ta sẽ phải cã dßng:
[đầu vào số 2 = đầu ra số 1 - đầu ra số 3]
Tương tự, đầu vào của khối DCM cã số thứ tự là 3 được nối với đầu ra số
2 của khối Vậy nªn khi khai b¸o ma trận ta sẽ phải cã dßng:
[đầu vào số 3 = đầu ra số 2]
ta khai b¸o ma trận như sau:
Đến đ©y ta được m« h×nh kh«ng gian trạng th¸i tổng hợp của hệ kÝn gồm
cả bộ điều khiển và đối tượng điều khiển Đầu vào là dßng điện đặt
(
) và m«men tải , đầu ra là dßng
B©y giờ ta có thể vẽ đồ thị Bode và step như sau:
figure(3);
bodemag(sysc(1,1),'r ', sysc(1,2),'b ', sysc(2,1),'g ', sysc(2,2),'m ',
logspace(-1,5,500));
title('Bieu do Bode - Dieu khien dong tuong tu');
legend('i_a^{ref} - i_a', 'T_L - i_a', 'i_a^{ref} - n', 'T_L - n', 3);
Trang 30title('Dap ung buoc nhay cua vong lap dieu khien dong');
legend('i_a^{ref} - i_a', 'i_a^{ref} - n', 'T_L - i_a', 'T_L - n', 2
axis([0, 0.001, -0.2, 1.25]);
grid on;
Bây giờ là lúc ta cần phân tích các đáp ứng thu được Từ đó có thể đưa ra một
số kết
luận sơ bộ về việc chọn các hệ số
Để đỡ nhầm lẫn ta có thể thay sysc bằng một cái tên khác, chẳng hạn hekindcd- (hệ kín với bộ điều chỉnh dòng) Khi đó lệnh dùng là:
-Hekindcd=connect(sys,Q,input,output)’
Sau đú tính [yc, tc] để vẽ như sau:
[yc,tc]=step(hekindcd,0.05);
Lưu ý rằng đối với biểu đồ Bode thì trục tung biểu thị cho logarit của biển
đồ Cụ thể, nếu gọi là biên độ của tín hiệu đầu ra thì giá trị ghi trên trục tung là vậy:
Đáp ứng bước nhảy vòng lặp điều khiển dòng