Bài giảng Giải tích mạch và mô phỏng trên máy tính: Phần 2 ĐH Phạm Văn Đồng

49 206 0
Bài giảng Giải tích mạch và mô phỏng trên máy tính: Phần 2  ĐH Phạm Văn Đồng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

(NB) Phần 2 Bài giảng Giải tích mạch và mô phỏng trên máy tính gồm có 4 chương trình bày các nội dung sau Chương 4: Các lệnh điều khiển trong MATLAB, Chương 5: Đồ họa trong MATLAB, Chương 6: Các bài toán đại số tuyến tính và phương trình vi phân, Chương 7: Simulink.

Chương CÁC LỆNH ĐIỀU KHIỂN TRONG MATLAB 4.1 Các lệnh rẽ nhánh: 4.1.1 Lệnh if … end if end, switch end Nhiều cần câu lệnh thực theo điều kiện Trong ngơn ngữ lập trình, logic cung cấp cấu trúc if … end Cú pháp cấu trúc sau: If < biểu thức điều kiện> khối lệnh end Khối lệnh hai trạng thái if end thực tất biểu thức điều kiện Trong trường hợp điều kiện bao gồm điều kiện con, tất điều kiện tính trả trạng thái logic điều kiện Ví dụ: apple = input('nhap vao so tao:') cost = apple*25; if apple > cost = (1-20/100)*cost; end Trong trường hợp có hai điều kiện thay đổi, cấu trúc if-else-end là: Biểu thức điều kiện if Khối lệnh thực điều kiện else Khối lệnh thực điều kiện sai end Khi có ba nhiều điều kiện thay đổi, cấu trúc là: if Biểu thức điều kiện Khối lệnh thực điều kiện elseif Biểu thức điều kiện Khối lệnh thực điều kiện elseif Biểu thức điều kiện Khối lệnh thực điều kiện elseif Biểu thức điều kiện 31 else Khối lệnh thực khơng có điều kiện End Trong mẫu dạng biểu thức điều kiện câu lệnh sau khơng kiểm tra nữa, cấu trúc if-else-end lại bỏ qua Hơn câu lệnh else cuối khơng cần cho vào Ví dụ 1: Giải phương trình bậc dạng tổng quát sau: ax + b = Nhận xét: Khi a ≠ phương trình có nghiệm x = -b/a Khi a = xét hệ số b Nếu b ≠ 0: phương trình vơ nghiệm b = 0: phương trình có vơ số nghiệm Từ ta xây dựng chương trình matlab sau: a=input('nhap a='); b=input('nhap b='); if a~=0 x=-b/a; fprintf('nghiem so x=%9.5g\n',x); else if b~=0 disp('ptvn') else disp('ptvsn') end end Tương tự ta xét ví dụ 2: Giải phương trình bậc có dạng tổng qt sau: ax2 + bx + c = (a ≠ 0) Lập luận đưa tới chương trình sau: disp('giai phuong trinh bac hai') a=input('nhap a='); b=input('nhap b='); c=input('nhap c='); delta=b^2-4*a*c; d=delta; if d lẽ tính tổng s1=1+3+5+ +n, n số lẽ c) Nếu n > chẵn s2=2+4+6+ +n, n chẵn d) Nếu n = dừng chương trình lại Giải: n=input('nhap n= '); % nhap so n du=rem(n,2); % kiem tra so n la chan hay le % neu n le =1, n chan du = if n0) & (du==1) % neu n>0 le i=1; % gan i=1; s1=1; %gan tong s1=1 while i0) & (du==0) i=0; s2=0; while i 1, cửa sổ Scope có nhiều đồ thị giống tương tự lệnh Subplot Matlab Nếu điền số cụ thể vào ô time range, đồ thị biểu diễn thời điểm giá trị số xác định b XY Graph Khối biểu diễn hai tín hiệu đầu vào hệ toạ độ XY dạng đồ hoạ Matlab đầu vào thứ (bên trên) Ứng với trục X đầu thứ hai ứng với trục Y c To Workspace 69 Khối To Workspace gửi số liệu đầu vào khối tới môi trường Matlab Workspace dạng mảng (Array), Stracture hay Stracture with time lấy chuỗi kí tự khai variable name để đặt tên cho tập số liệu ghi d To File Khối giúp ta cất tập số liệu (mảng hay ma trận) đầu vào khối với vector thời gian dạng Mat-File Array định dạng giống định dạng mà khối From File cần, số liệu To File cất From File đọc trực tiếp mà không cần phải xử lý 7.4 Khai báo tham số mô Trước tiến hành mô ta phải có thao tác chuẩn bị định: Đó khai báo tham số phương pháp mô Các thao tác chuẩn bị thực hộp thoại Simulation Parameters Tại tất tham số có giá trị mặc định sẵn, nghĩa là: Có thể khởi động mơ tốt nhất, phải thực chuẩn bị, đặt tham số phù hợp với mơ hình Simulink cụ thể Hộp thoại Simulation Parameters bao gồm trang: a Solver (thuật toán) 70 Tại trang ta khai báo thời điểm bắt đầu kết thúc, thuật tốn tích phân phương pháp xuất kết mô Simulink cung cấp cho ta số thuật toán khác để giải số phương trình vi phân Đáp ứng phổ rộng toán đặt Đối với hệ gián đoạn ta chọn thuật tốn discrete với bước tích phân linh hoạt (Variable- Step) hay cố định (Fixedstep) Thuật tốn Variable-step làm việc với bước tích phân linh hoạt Việc giải phương trình vi phân bắt đầu với bước tích phân khai báo Initial step size Nếu vừa bắt đầu, đạo hàm biến trạng thái lớn, Solver chọn giá trị bé giá trị ghi Intial step size Trong q trình mơ phỏng, Simulink cố gắng giải phương trình vi phân bước cho phép lớn ghi Max step size Do có khả thích nghi bước tích phân, thuật tốn Slover với Variable- step giám sát biến thiên biến trạng thái từ thời điểm vừa qua tới thời điểm Thêm vào đó, thuật tốn nhận biết vị trí khơng liên tục hàm đột biến dạng bước nhảy b Giám sát sai số Để thích nghi bước tích phân với động học biến trạng thái, bước tích phân, Simulink lại tính độ biến thiên biến trạng thái từ thời điểm vừa qua tới thời điểm Độ biến thiên gọi sai số cục local error ei (i = … : số 71 biến trạng thái hệ Cứ bước tích phân, thuật tốn Solver (dạng Variable-step) lại kiểm tra xem local error biến trạng thái có thoả mãn điều kiện acceptable error (sai số chấp nhận) xác định tham số Relative tolerance Absolute tolerance hộp thoại Simulation Parameters (viết tắt eltol abstol) Điều kiện acceptable error mô tả công thức sau: Nếu số biến trạng thái không thoả mãn điều kiện trên, bước tích phân tự động giảm q trình tính bước lặp lại Việc acceptable error xác định sở lựa chọn tối đa có nguyên sau: Giá trị khai báo tai Relative tolerance ứng với biến thiên cho phép tính % giá trị tức thời biến trạng thái xi Nếu acceptable error định Relative tolerance, |x i| bé relation tolerance trở nên bé, đồng nghĩa với việc: Biến trạng thái khơng phép biến thiên Điều không xảy acceptable error chọn theo công thức Nếu ta khai báo cho Absolute tolerance giá trị auto, Simulink bắt đầu 10-6 Sau abstol đặt reltol.max(|xi|) Nhờ cách chọn bước linh hoạt vậy, Simulink cho phép biến trạng thái c Zero crossing detection Khái niệm zero crossing Simulink hiểu tính không liên tục diễn biến trạng thái điểm khơng thơng thường Các tín hiệu khơng liên tục thường số khối định gây Abs, Backslash, Dead Zone, Saturation hay Switch Mỗi khối hàm loại có kèm theo biến zero crossing, phụ thuộc vào biến trạng thái không liên tục đổi dấu gặp điểm không liên tục Cứ sau bước tích phân, Simulink lại kiểm tra biến zero crossing qua nhận biết: Trong bước có xảy zero crossing hay khơng Nếu có Simulink tính xác tối đa thời điểm xuất phương pháp nội suy giá trị vừa qua giá trị biến zero crossing Khi biết xác, Simulink bắt đầu tính tiếp từ cận phải Vì vậy, chọn sai số q thơ có nguy bỏ sót điểm khơng Nếu có nghi vấn bỏ sót điểm không, cần phải giảm sai số khai báo để đảm bảo Solver với Variable-step chọn bước tính đủ nhỏ Solver với Fixed-step hoạt động với bước cố định việc giám sát – phát điểm khơng liên tục khơng thể Song biết xác số lượng bước tích phân, ta ước lượng xác thời gian tính mơ hình mơ Điều đặc biệt có ý nghĩa ta dự kiến cài đặt mơ hình (sau mơ thành cơng) cấu hình Hardware d Workspace I/O 72 Nhờ khai báo thích hợp trang Workspace I/O ta gửi số liệu vào, đọc số liệu từ môi trường Matlab Workspace mà không cần sử dụng khối To Workspace, From Workspace mơ hình Simulink Ngồi ta khai báo giá trị ban đầu cho biến trạng thái Input: tên tập số liệu cần đọc từ Workspace, tập số liệu định dạng Array, Structure Structure with time Initial State: tên biến giữ giá trị ban đầu, biến có định dạng Array hay Structure Việc tận dụng khả khai báo biến giữ giá trị ban đầu quan trọng ta cần sử dụng giá trị trạng thái lần mơ trước đó, nằm Workspace nhờ kích hoạt Save to Workspace khai báo Final state Biến mơ hình Simulink cất cách điền tên biến vào ô Output, sau kích hoạt Output Tương tự State để cất biến trạng thái vào Workspace e Advance (khai báo nâng cao) Sau nhấn nút Configure ô Inline parameters, ta thu cửa sổ để khai báo cấu trúc tham số mơ hình Việc kích hoạt ô Inline parameters phủ định khả thay đổi tham số khối q trình mơ Duy tham số liệt kê danh sách Global (tunable) parameters thay đổi Vì tham số khơng thay đổi bị coi số, thời gian giảm đáng kể Mô điều khiển PID: Nội dung: Dùng Matlab Simulink mô điều khiển PID cho đối tượng có hàm truyền bên dưới, sử dụng khối sau: + Khối Step; + Khối điều khiển PID; + Khối Transfer Fcn; + Khối scope; + Khối Sum 73 Thiết kế: Thiết kế hệ thống Hình 7.2 lưu tập tin với tên: pid.mdl Hình 7.2: Hệ thống điều khiển dùng PID - Trong command window đánh lệnh: simulink - Tiếp tục ta chọn Files NewModel ta hình 7.3 Hình 7.3: Cửa sổ giao diện - Lần lượt tạo khối theo cách sau: Chọn khối cách kéo thả biểu tượng sang giao diện hình + Khối Step: Simulinksources, kéo thả biểu tượng Step sang giao diện (Hình 7.4) 74 Hình 7.4: Tạo khối Step Tương tự vẽ khối sau: - Khối PID: SimulinkContinuousPID controller - Khối Transfer Fcn: SimulinkContinuous Transfer Fcn - Khối Sum: SimilinkCommonly Used blocksSum - Khối Scope: SimilinkSinksScope Tiếp tục ta double click vào khối Fcn để nhập hàm truyền G(s) vào hình đây: Hình 7.5: Nhập hàm truyền vào khối Fcn 75 Bây tiếp tục hiệu chỉnh thông số điều khiển PID sau: + Kích vào PID dao diện sau: + Tiếp tục kích vào Tune… để tìm thống số PID sau: 76 + Ta thông số của điều khiển PID bên dưới: Kết điều khiển PID sau: 77 Câu hỏi ôn tập chương Câu 7.1: Simulink gì? Câu 7.2: Trình bày cách khởi động Simulink? Câu 7.3: Trình bày thao tác Simulink? Hãy thực hành Matlab với thao tác Câu 7.4: Hãy trình bày cách khai báo tham số mô Simulation Parameters? TÀI LIỆU THAM KHẢO [1] Nguyễn Phùng Quang, 2004 Matlab Simulink giành cho kỹ sư điều khiển tự động Nhà xuất Khoa học kỹ thuật [2] Trần Văn Chính, Giáo trình Matlab simulink Đại học Đà Nẵng [3] Bài giảng mơ mơ hình hóa Đại học Thái Nguyên ... x1=-b/ (2* a); x2=x1; fprintf('nghiem kep x1=x2=%9.5g ',x1); else x1=(-b-sqrt(d))/ (2* a); x2=(-b+sqrt(d))/ (2* a); fprintf('nghiem so x1=%9.5g ',x1); fprintf('nghiem so x2=%9.5g ',x2); end end 4.1 .2. .. delta=b ^2- 4*a*c; d=delta; if d

Ngày đăng: 08/06/2020, 19:04

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan