MÔ HÌNH HÓA VÀ MÔ PHỎNG VỚI MATLAB/SIMULINK

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:32

1
1.172
lượt xem
449
download

MÔ HÌNH HÓA VÀ MÔ PHỎNG VỚI MATLAB/SIMULINK

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Vai trò của mô hình hóa và mô phỏng Mô hình toán và phương pháp số Mô hình toán của hệ vật lý Phương pháp số giải phương trình vi phân Công cụ MATLAB/Simulink MATLAB Simulink Phân tích, mô phỏng một số mô hình thiết bị điện với MATLAB/Simulink

Chủ đề:
Lưu

Nội dung Text: MÔ HÌNH HÓA VÀ MÔ PHỎNG VỚI MATLAB/SIMULINK

  1. MÔ HÌNH HÓA VÀ MÔ PHỎNG VỚI MATLAB/SIMULINK Soạn bởi: Trần Vĩnh Thái B/m Thiết bị điện – điện tử ĐHBK Hà nội Mô hình hóa và mô phỏng thiết bị điện – dành cho sinh viên chuyên ngành TBĐ-ĐT 1 NỘI DUNG Vai trò của mô hình hóa và mô phỏng Mô hình toán và phương pháp số Mô hình toán của hệ vật lý Phương pháp số giải phương trình vi phân Công cụ MATLAB/Simulink MATLAB Simulink Phân tích, mô phỏng một số mô hình thiết bị điện với MATLAB/Simulink ĐHBK Hànội 2 B/m Thiết bị điện – điện tử
  2. Yêu cầu với sinh viên Tham dự lớp đầy đủ Làm các bài tập về nhà Hoàn thành bài tập lớn Thi cuối học kỳ ĐHBK Hànội 3 B/m Thiết bị điện – điện tử 1. Vai trò của mô hình hóa và mô phỏng Mô hình – dạng biểu diễn đơn giản hóa của một hệ vật lý. Chương trình này giới hạn mô hình ở dạng thức mô tả toán học, mô hình toán. Mô hình hóa và mô phỏng – là kỹ thuật cho phép xây dựng mô hình của hệ vật lý và thực hiện thực nghiệm trên mô hình đó. Môn học này sử dụng công cụ MATLAB/Simulink để biểu diễn mô hình toán của hệ trên máy tính số và cho phép phân tích, nghiên cứu nó. Vai trò của mô hình hóa và mô phỏng Được sử dụng khi hệ vật lý không tồn tại, tốn kém và/hoặc tốn thời gian xây dựng… Cho phép quan sát quá trình, đáp ứng động của hệ thống thiết kế trước khi thực nghiệm trên thiết bị thực Là công cụ hữu hiệu với chi phí thấp cho nghiên cứu, dễ sử dụng, dễ dàng thay đổi phương án… ĐHBK Hànội 4 B/m Thiết bị điện – điện tử
  3. 2. Mô hình toán và phương pháp số Phân loại mô hình toán Mô hình tuyến tính, phi tuyến Mô hình thông số tập trung, thông số rải Mô hình tĩnh, động Mô hình liên tục, gián đoạn Mô hình xác định, bất định Trình tự xây dựng mô hình Xác định mục tiêu và điều kiện của bài toán Đặt giả thiết đơn giản hóa và loại bỏ các yếu tố không quan trọng Xác định các tham số cho mô hình theo mục tiêu và điều kiện Kiểm chứng mô hình về mức độ phù hợp với hệ thống vật lý ĐHBK Hànội 5 B/m Thiết bị điện – điện tử 2. Mô hình toán và phương pháp số Mô tả toán học thường gặp Phương trình vi phân Hàm truyền Không gian trạng thái ĐHBK Hànội 6 B/m Thiết bị điện – điện tử
  4. 2. Mô hình toán và phương pháp số Phương trình vi phân – Thí dụ 1: Phân tích mạch điện trên hình vẽ. Nguồn DC 1 V, điều kiện đầu i(0) = 0 A, uc(0) = 0 V. Xác định quá trình quá độ của i(t), uc(t) khi đóng công tắc. BTVN: Xây dựng mô hình toán động cơ DC kích thích độc lập. ĐHBK Hànội 7 B/m Thiết bị điện – điện tử 2. Mô hình toán và phương pháp số Hàm truyền Định nghĩa: The transfer function of a linear, time-invariant, differential equation system is defined as the ratio of the Laplace transform of the output variable to the Laplace transform ofthe input variable, with all initial conditions assumed to be zero. Tiếp theo thí dụ 1 – mô tả bài toán ở dạng hàm truyền di Ri + L + vC = Vs Biểu thức: dt VC ( s) Y ( s) = VS ( s) d 2v dvC + LC 2C + vC = Vs RC dt dt BTVN: Chuyển mô hình toán động cơ DC kích thích độc lập về dạng hàm truyền. Điều kiện: Mạch từ tuyến tính, kích thích không đổi. ĐHBK Hànội 8 B/m Thiết bị điện – điện tử
  5. 2. Mô hình toán và phương pháp số Mô tả không gian trạng thái Dạng thức Tiếp theo thí dụ 1 – mô tả bài toán ở dạng thức không gian trạng thái Đặt Từ đó tìm được ma trận A, B, C, D BTVN: Chuyển mô hình toán động cơ DC kích thích độc lập về mô hình không gian trạng thái. Điều kiện: Mạch từ tuyến tính, kích thích không đổi. ĐHBK Hànội 9 B/m Thiết bị điện – điện tử 2. Mô hình toán và phương pháp số Phương pháp số giải phương trình vi phân Phương pháp Euler: Giải phương trình y’ = f(t,y) trong khoản [a,b], với y(a) = y(0) = y0: – Chia đoạn [a,b] thành n khoảng h đủ nhỏ – Giá trị của y tại y(k) được tính theo giá trị đã biết y(k-1) và hàm f(tk, yk) theo biểu thức: yk = yk −1 + h. f (t k −1 , yk −1 ) với k = 1..n ĐHBK Hànội 11 B/m Thiết bị điện – điện tử
  6. Thí dụ về ph.pháp Euler viết trong MATLAB ĐHBK Hànội 12 B/m Thiết bị điện – điện tử Sai số của phương pháp Euler Sai số tỉ lệ với h2. ĐHBK Hànội 13 B/m Thiết bị điện – điện tử
  7. 2. Mô hình toán và phương pháp số Các phương pháp số khác Phương pháp Runge-Kutta bậc 2 – trong MATLAB là ODE23 Phương pháp Runge-Kutta bậc 4 – trong MATLAB là ODE45 Phương pháp chuỗi Taylor Các phương pháp Predictor-Correctors … Thí dụ ODE45: ĐHBK Hànội 14 B/m Thiết bị điện – điện tử Thí dụ: Runge-Kutta Order 4 ĐHBK Hànội 15 B/m Thiết bị điện – điện tử
  8. 3. MATLAB/Simulink Tại sao chọn MATLAB/Simulink? Đây là một công cụ: Mạnh cho việc thực hiện mô phỏng các mô hình toán Dễ học, dễ sử dụng tốn ít thời gian đầu tư cho công cụ Các công cụ khác Dymola với ngôn ngữ Modelica 20-Sim với phương pháp Bond Graph Maple, Mathematica, ACSL, Saber, Dynast… Tài liệu tham khảo MATLAB/Simulink dành cho kỹ sư điều khiển tự động – Nguyễn Phùng Quang … ĐHBK Hànội 16 B/m Thiết bị điện – điện tử MATLAB Môi trường MATLAB, demo và help Tạo biến trong MATLAB Thao tác với ma trận, toán tử logic và các hàm toán học Công cụ hiển thị M-file Viết chương trình trong MATLAB Lưu biến và buổi làm việc; thư mục và đường dẫn GUI Giải hệ phương trình vi phân với MATLAB … ĐHBK Hànội 17 B/m Thiết bị điện – điện tử
  9. Môi trường MATLAB To get started, select "MATLAB Help" from the Help menu. ĐHBK Hànội 18 B/m Thiết bị điện – điện tử Tạo biến trong môi trường MATLAB Gán các biến trong MATLAB MATLAB – máy tính tay Tác dụng của dấu » -5/(4.8+5.32)^2 » a = 2; » -5/(4.8+5.32)^2 » a = 2; “;” ans = » b = 5; ans = » b = 5; -0.0488 -0.0488 » a^b » a^b » (3+4i)*(3-4i) » (3+4i)*(3-4i) Kết quả được ans = ans = ans = ans = gán cho “ans” 32 32 25 25 nếu không đặt » cos(pi/2) » x = 5/2*pi; » cos(pi/2) » x = 5/2*pi; tên biến ans = » y = sin(x) ans = » y = sin(x) 6.1230e-017 y= 6.1230e-017 y= » exp(acos(0.3)) » exp(acos(0.3)) 11 ans = ans = Dấu () để truy cập » z = asin(y) » z = asin(y) 3.5470 3.5470 hàm z= z= 1.5708 1.5708 ĐHBK Hànội 19 B/m Thiết bị điện – điện tử
  10. Một số lệnh tiện ích Các lệnh tiện ích who và whos – liệt kê các biến clear, clear x, clear all – xóa biến close – xóa cửa sổ đồ họa hiện hành cd – đổi thư mục hiện hành dir – liệt kê nội dung thư mục hiện hành format – đặt định dạng biến lưu trong môi trường help “tên hàm” – tra cứu nhanh clc – xóa màn hình lệnh … ĐHBK Hànội 20 B/m Thiết bị điện – điện tử Thao tác với ma trận 3 khái niệm trong đại số tuyến tính Vô hướng – là một số hay một từ (có giá trị đơn nhất) Véc-tơ – là mảng 1-D chứa một dãy các vô hướng, biến hoặc biểu thức Ma trận – là mảng n-D chứa các vô hướng, biến hoặc biểu thức Trong MATLAB Vô hướng – là ma trận 1x1 Véc-tơ – là ma trận 1xn hoặc nx1 Ma trận nxm ĐHBK Hànội 21 B/m Thiết bị điện – điện tử
  11. Thao tác với ma trận » a=[1 2;3 4] » a=[1 2;3 4] Dùng dấu a= a= ngoặc [ ] 1 2 1 2 3 4 3 4 Tách dòng với » b=[-2.8, sqrt(-7), (3+5+6)*3/4] » b=[-2.8, sqrt(-7), (3+5+6)*3/4] dấu (;) b= b= -2.8000 -2.8000 0 + 2.6458i 10.5000 0 + 2.6458i 10.5000 Tách cột với dấu » b(2,5) = 23 » b(2,5) = 23 trống / phảy (,) b= b= -2.8000 0 + 2.6458i 10.5000 0 0 -2.8000 0 + 2.6458i 10.5000 0 0 0 0 0 0 23.0000 0 0 0 0 23.0000 ĐHBK Hànội 22 B/m Thiết bị điện – điện tử Thao tác với ma trận Cột (n) 1 2 3 4 5 A= 1 6 11 16 21 4 10 1 6 2 A (2,4) 1 2 7 12 17 22 8 1.2 9 4 25 2 7.2 3 5 7 1 11 23 8 13 18 A (17) Dòng (m) 3 0 0.5 9 4 5 56 24 4 14 19 4 5 10 15 20 25 23 83 13 0 10 5 Ma trận: Vô hướng: 1-by-1 array Véc tơ: m-by-1 array 1-by-n array Ma trận: m-by-n array ĐHBK Hànội 23 B/m Thiết bị điện – điện tử
  12. Thao tác với ma trận Cộng vô hướng » w=[1 2;3 4] + 5 » w=[1 2;3 4] + 5 w= w= 6 7 6 7 8 9 8 9 Tạo dãy trình tự: » x = 1:5 » x = 1:5 dùng dấu (:) x= x= 1 2 3 4 5 1 2 3 4 5 » y = 2:-0.5:0 » y = 2:-0.5:0 y= y= 2.0000 2.0000 1.5000 1.5000 1.0000 0.5000 0 1.0000 0.5000 0 » z = rand(2,4) Các hàm tiện ích tạo » z = rand(2,4) z= ma trận z= 0.9501 0.6068 0.8913 0.4565 0.9501 0.6068 0.8913 0.4565 0.2311 0.4860 0.7621 0.0185 0.2311 0.4860 0.7621 0.0185 ĐHBK Hànội 24 B/m Thiết bị điện – điện tử Thao tác với ma trận Xóa dòng, cột của ma trận » A=[1 5 9;4 3 2.5; 0.1 10 3i+1] » A=[1 5 9;4 3 2.5; 0.1 10 3i+1] A= A= 1.0000 5.0000 9.0000 1.0000 5.0000 9.0000 4.0000 3.0000 2.5000 4.0000 3.0000 2.5000 0.1000 10.0000 1.0000+3.0000i 0.1000 10.0000 1.0000+3.0000i » A(:,2)=[] » A(:,2)=[] A= A= 1.0000 9.0000 1.0000 9.0000 4.0000 2.5000 4.0000 2.5000 0.1000 1.0000 + 3.0000i 0.1000 1.0000 + 3.0000i » A(2,2)=[] » A(2,2)=[] ??? Indexed empty matrix assignment is not allowed. ??? Indexed empty matrix assignment is not allowed. ĐHBK Hànội 25 B/m Thiết bị điện – điện tử
  13. Thao tác với ma trận Truy cập các thành phần trong ma trận 1 2 3 4 5 A= 1 6 11 16 21 4 10 1 6 2 1 8 1.2 7 9 12 4 25 22 2 17 2 A(1:5,5) A(1:end,end) A(:,5) A(:,end) 7.2 5 7 1 11 3 8 13 18 23 3 A(21:25) A(21:end)’ 0 0.5 9 4 14 5 56 24 4 19 4 A(3,1) A(3) 23 83 10 1315 0 10 25 5 20 5 A(4:5,2:3) A([9 14;10 15]) ĐHBK Hànội 26 B/m Thiết bị điện – điện tử Thao tác với ma trận Nhân chia ma trận [2x4] » a = [1 2 3 4; 5 6 7 8]; » a = [1 2 3 4; 5 6 7 8]; [4x3] » b = ones(4,3); » b = ones(4,3); [2x4]*[4x3] [2x3] » c = a*b » c = a*b c= c= 10 10 10 10 10 10 a(2nd row).b(3rd column) 26 26 26 26 26 26 » a = [1 2 3 4; 5 6 7 8]; » a = [1 2 3 4; 5 6 7 8]; » b = [1:4; 1:4]; » b = [1:4; 1:4]; » c = a.*b » c = a.*b c= c= 1 4 9 16 1 4 9 16 c(2,4) = a(2,4)*b(2,4) 5 12 21 32 5 12 21 32 ĐHBK Hànội 27 B/m Thiết bị điện – điện tử
  14. Thao tác với ma trận Các hàm tiện ích ⎡1 0 0 ⎤ ⎢0 1 0⎥ zeros – tạo ma trận rỗng ⎢ ⎥ ones – tạo ma trận 1 ⎢0 0 1 ⎥ ⎣ ⎦ eye – tạo ma trận đơn vị rand – tạo ma trận các phần tử ngẫu nhiên ⎡1 0 0 ⎤ diag – tạo ma trận đường chéo ⎢0 2 0 ⎥ size – hàm trả về kích thước của ma trận ⎢ ⎥ fliplr – đảo cột ma trận trái phải ⎢0 0 3⎥ ⎣ ⎦ flipud – đảo hàng ma trận trên dưới rot90 – xoay ma trận 90 độ (ngược chiều kim đồng hồ) transpose (‘) – chuyển vị ma trận cross & dot – nhân ma trận det – định thức ma trận inv – nghich đảo ma trận rank – hạng ma trận… ĐHBK Hànội 28 B/m Thiết bị điện – điện tử Các toán tử logic » Mass == [-2 10 NaN 30 -11 Inf 31]; = = equal to » Mass [-2 10 NaN 30 -11 Inf 31]; » each_pos == Mass>=0 » each_pos Mass>=0 > greater than each_pos = each_pos = < less than 0 1 0 1 0 1 1 0 1 0 1 0 1 1 » all_pos == all(Mass>=0) » all_pos all(Mass>=0) >= Greater or equal all_pos = all_pos = 0 <= less or equal 0 » all_pos == any(Mass>=0) » all_pos any(Mass>=0) ~ not all_pos = all_pos = 1 & and 1 » pos_fin == (Mass>=0)&(isfinite(Mass)) » pos_fin (Mass>=0)&(isfinite(Mass)) | or pos_fin = pos_fin = 0 1 0 1 0 0 1 0 1 0 1 0 0 1 isfinite(), etc. . . . all(), any() Lưu ý: 1 = TRUE find 0 = FALSE ĐHBK Hànội 29 B/m Thiết bị điện – điện tử
  15. Một số hàm toán học Các hàm toán học abs, sign – hàm trả về trị tuyệt đối và dấu sin, cos, asin, acos… – hàm lượng giác exp, log, log10 – hàm mũ e, log tự nhiên, log hệ 10 ceil, floor, fix, round – các hàm làm tròn số sqrt – hàm căn bậc hai gcd – ước số chung lớn nhất lcm – bội số chung nhỏ nhất real, img – hàm trả về phần thực, phần ảo của số phức rem, mod – các hàm lấy phần nguyên và phần dư của phép chia max, min, means – các hàm tìm max, min và trị trung bình sort – hàm sắp xếp … ĐHBK Hànội 30 B/m Thiết bị điện – điện tử Công cụ hiển thị - Visualizing data 2-D Plotting Hàm plot() – cú pháp plot(x1, y1, 'clm1', x2, y2, 'clm2', ...) plot(x1, y1, 'clm1', x2, y2, 'clm2', ...) Thí dụ sử dụng hàm plot() x=[0:0.1:2*pi]; x=[0:0.1:2*pi]; y=sin(x); y=sin(x); z=cos(x); z=cos(x); plot(x,y,x,z,'linewidth',2) plot(x,y,x,z,'linewidth',2) title('Sample Plot','fontsize',14); title('Sample Plot','fontsize',14); xlabel('X values','fontsize',14); xlabel('X values','fontsize',14); ylabel('Y values','fontsize',14); ylabel('Y values','fontsize',14); legend('Y data','Z data') legend('Y data','Z data') grid on grid on ĐHBK Hànội 31 B/m Thiết bị điện – điện tử
  16. Công cụ hiển thị - Visualizing data Title Sử dụng TEX cho phép hiển thị ký tự Hy Lạp, các ký tự toán học… Ylabel Grid Legend Xlabel ĐHBK Hànội 32 B/m Thiết bị điện – điện tử Công cụ hiển thị - Visualizing data subplot subplot(rows,cols,index) subplot(rows,cols,index) Vẽ nhiều đồ Cú pháp thị trên cùng cửa »subplot(2,2,1); »subplot(2,2,1); sổ »… »… »subplot(2,2,2) »subplot(2,2,2) » ... » ... »subplot(2,2,3) »subplot(2,2,3) » ... » ... »subplot(2,2,4) »subplot(2,2,4) » ... » ... ĐHBK Hànội 33 B/m Thiết bị điện – điện tử
  17. Công cụ hiển thị - Visualizing data 3-D plotting x = 0:0.1:2; x = 0:0.1:2; y = 0:0.1:2; y = 0:0.1:2; [xx, yy] = meshgrid(x,y); [xx, yy] = meshgrid(x,y); zz=sin(xx.^2+yy.^2); zz=sin(xx.^2+yy.^2); surf(xx,yy,zz) surf(xx,yy,zz) xlabel('X axes') xlabel('X axes') ylabel('Y axes') ylabel('Y axes') ĐHBK Hànội 34 B/m Thiết bị điện – điện tử Công cụ hiển thị - Visualizing data Các dạng vẽ contour và 3-D contourf contour3 plot3 waterfall mesh surf ĐHBK Hànội 35 B/m Thiết bị điện – điện tử
  18. Công cụ hiển thị - Visualizing data Một số thí dụ hiển thị khác bar bar3h hist area pie3 rose ĐHBK Hànội 36 B/m Thiết bị điện – điện tử M-files Script files Là một tập lệnh lưu trong tệp tin m-file (tệp tin có đuôi .m). Tiện lợi hơn việc phải gõ từng lệnh vào dấu nhắc MATLAB (>>). Các biến tạo ra khi chạy m-file được lưu trữ trong Workspace của MATLAB Function files Cho phép người dùng tạo hàm riêng của mình Tất cả các biến bên trong hàm có tính chất local (Muốn biến có tính chất global, phải dùng từ khóa global khi khai báo biến) Thông tin đưa vào hàm dưới dạng thông số MATLAB hỗ trợ nhiều tính năng cho hàm xem thêm help function ĐHBK Hànội 37 B/m Thiết bị điện – điện tử
  19. M-files Cửa sổ soạn thảo M-file: Editor/Debugger Select Workspace Set Auto- Breakpoints tips ĐHBK Hànội 38 B/m Thiết bị điện – điện tử M-files Function file Tên hàm (phải trùng với tên file) Tham số vào Tham số ra Các dòng này sẽ xuất hiện khi gõ function y = mean (x) lệnh help mean % MEAN Average or mean value. % For vectors, MEAN(x) returns the mean value. % For matrices, MEAN(x) is a row vector % containing the mean value of each column. [m,n] = size(x); if m == 1 Nội dung hàm m = n; end y = sum(x)/m; ĐHBK Hànội 39 B/m Thiết bị điện – điện tử
  20. Viết chương trình trong MATLAB Các điều khiển chương trình Lệnh điều kiện if if ((attendance >= 0.90) & (grade_average >= 60)) if ((attendance >= 0.90) & (grade_average >= 60)) pass = 1; pass = 1; end; end; Vòng lặp while eps = 1; eps = 1; while (1+eps) > 1 while (1+eps) > 1 eps = eps/2; eps = eps/2; end end eps = eps*2 eps = eps*2 ĐHBK Hànội 40 B/m Thiết bị điện – điện tử Viết chương trình trong MATLAB Vòng lặp for aa == zeros(k,k) %% Preallocate matrix zeros(k,k) Preallocate matrix for mm == 1:k for 1:k for nn == 1:k for 1:k a(m,n) == 1/(m+n -1); a(m,n) 1/(m+n -1); end end end end Lệnh điều kiện switch method == 'Bilinear'; method 'Bilinear'; switch lower(method) switch lower(method) case {'linear','bilinear'} case {'linear','bilinear'} disp('Method is linear') disp('Method is linear') case 'cubic' case 'cubic' disp('Method is cubic') disp('Method is cubic') otherwise otherwise disp('Unknown method.') disp('Unknown method.') ĐHBK Hànội 41 end end B/m Thiết bị điện – điện tử
Đồng bộ tài khoản