Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab
Lệnh if end
Nhiều khi chúng ta cần những câu lệnh được thực hiện theo một điều kiện nào đó.
Trong ngôn ngữ lập trình, logic này được cung cấp bởi cấu trúc if end. Cú pháp của
cấu trúc này như sau:
If < biểu="" thức="" điều="" kiện="">
khối các lệnh.
end
Khối các lệnh giữa hai trạng thái if và end được thực hiện khi tất biểu thức điều kiện
là đúng. Trong trường hợp điều kiện bao gồm các điều kiện con, thì tất cả các điều kiện
con được tính và trả về một trạng thái logic của điều kiện.
Ví dụ:
apple = input('nhap vao so tao:')
cost = apple*25;
if apple > 5
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à:
if Biểu thức điều kiện
Khối các lệnh được thực hiện nếu điều kiện là đúng
else
Khối các lệnh được thực hiện nếu điều kiện là sai
end
Khi có ba hoặc nhiều điều kiện thay đổi, cấu trúc của nó sẽ là:
if Biểu thức điều kiện 1
Khối các lệnh được thực hiện nếu điều kiện 1 là đúng
elseif Biểu thức điều kiện 2
Khối các lệnh được thực hiện nếu điều kiện 2 là đúng
elseif Biểu thức điều kiện 3
Khối các lệnh được thực hiện nếu điều kiện 3 là đúng
elseif Biểu thức điều kiện 4
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab
. - Nối hai khối: Dùng phím chuột trái nháy vào đầu ra của một khối, sau đó di mũi tên của chuột tới đầu vào cần nối. Sau khu thả ngón tay khỏi phím chuột, đường nối tự động được tạo ra. Có thể rẽ nhánh tín hiệu bằng cách nháy phím chuột phải vào một đường nối có sẵn và kéo đường nối mới xuất hiện tới đầu vào cần nối. - Di chuyển đường nối: Để lưu đồ tín hiệu thoáng và dễ theo dõi, nhiều khi ta phải di chuyển, bố trí lại vị trí các đường nối. Khi nháy chọn bằng chuột trái ta có thể di chuyển tuỳ ý các điểm góc hoặc di chuyển song song từng đoạn thẳng của đường nối. - Tạo vector đường nối: Để dễ phân biệt giữa đường nối đơn và đường nối các tín hiệu theo định dạng vector, hoặc ma trận, hoặc mảng, ta có thể chọn menu Format / Wide nonscalar lines để tăng bề dày của đường nối. - Chỉ thị kích cỡ và dạng dữ liệu của tín hiệu: Lệnh chọn qua menu Format / Signal dimensions sẽ hiện thị kích cỡ của tín hiệu đi qua đường nối. Lệnh menu Format / Port data types chỉ thị thêm loại dữ liệu của tín hiệu qua đường nối. 63 - Định dạng cho một khối: Sau khi nháy phím chuột phải vào một khối, cửa sổ định dạng khối sẽ mở ra. Tại mục Format ta có thể lựa chọn kiểu và kích cỡ chữ, cũng như vị trí của tên khối, có thể lật hoặc xoay khối. Hai mục Foreground Color và Background Color cho phép ta đặt chế độ mầu bao quang cũng như mầu nền của khối. - Định dạng cho đường nối: Sau khi nháy phím chuột phải vào một đường nối, cửa sổ định dạng đường sẽ mở ra. Tại đây có các lệnh cho phép cắt bỏ, chép hoặc xoá đường nối. - Hộp đối thoại về đặc tính của khối: Hoặc đi theo menu của cửa sổ mô phỏng Edit / Block Properties, hoặc chọn mục Block Properties của cửa sổ định dạng khối, ta sẽ thu được hộp đối thoại cho phép đặt một vài tham số tổng quát về đặc tính của khối. - Hộp đối thoại về đặc tính của tín hiệu: Có thể tới được hộp thoại Signal Properties của một đường nối hoặc bằng cách nháy chuột đánh dấu đường nối trên cửa sổ mô phỏng, sau đó đi theo menu Edit / Signal Properties từ cửa sổ định dạng đường. Trong hộp đối thoại ta có thể đặt tên cho đường nối một cách đơn giản hơn: Nháy kép phím chuột trái vào đường nối ta sẽ tự động tới được chế độ nhập văn bản. 7.3 Thư viện Sources, Sinks Thư viện Sources a. Constant Khối constant tạo nên một hằng số thực hoặc phức, hằng số có thể là scalar, vector hay ma trận tuỳ theo cách ta khai báo tham số Constant Value và ô Interpret vector parameters as 1-D có được chọn hay không. Nếu ô đó được chọn, ta có thể khai báo tham số Constant Value là vector hang hay cột với kích cỡ [1×n] hay [n×1] dưới dạng ma trận. Nếu ô đó không được chọn, các vector hang cột đó chỉ được sử dụng như vector với chiều dài n, tức là tín hiệu 1-D. 64 b. Step và Ramp Nhờ hai khối Stemp và Ramp ta có thể tạo nên các tín hiệu dạng bậc thang hay dạng dốc tuyến tính, 53 at để kích thích các mô hình Simulink. Trong đó hộp thoại Block Parameters của khối Step ta có thể khai báo giá trị đầu / giá trị cuối và cả thời điểm bắt đầu của tín hiệu bước nhảy. Đối với Ramp ta có thể khai báo độ dốc, thời điểm và giá trị xuất phát của tín hiệu ở đầu ra. Đối với cả hai khối, ta có thể sử dụng tham số tuỳ chọn Interpret vector parameters as 1-D để quyết định các tín hiệu dạng bước nhảy hay dạng dốc tuyến tính có giá trị scalar hay vector hay ma trận. Chú ý: Hai khối Step và Ramp không phải chỉ tạo ra một tín hiệu như nhiều người vẫn hiểu nhầm, mà có thể tạo ra một tập các tín hiệu được xử lý dưới dạng vector hàng hay cột hoặc ma trận. c. Signal Generator và Pulse Generator Bằng Signal Generator ta tạo ra các dạng tín hiệu kích thước khác nhau. 65 Cung cấp cho 4 dạng song khác nhau: + Sóng Sin + Sóng vuông (Square) + Sóng răng cưa (Sawtood) + Sóng ngẫu nhiên (Random) Với Pulse Generator tạo chuỗi xung hình chữ nhật: Biên độ và tần số có thể khai báo tuỳ ý. Đối với Pulse Generator ta còn có khả năng chọn tỷ lệ cho bề rộng xung (tính bằng phần trăm cho cả chu kỳ). Đối với cả hai khối ta có thể sử dụng tham số tuỳ chọn Interpret vector parameters as 1-D để quyết định các tín hiệu có giá trị scalar hay vector ma trận. 66 d. Repeating Sequence Khối Repeating Sequence cho phép ta tạo nên một tín hiệu tuần hoàn tuỳ ý. Tham số Time values phải là một vector thời gian với các giá trị đơn điệu tăng. Vector biến ra Output values phải có kích cỡ phù hợp với chiều dài của tham số Time values. Giá trị lớn nhất của vector thời gian quyết định chu kỳ lặp lại của vector biến ra. 67 e. Sine Wave Khối Sine Wave được sử dụng để tạo tín hiệu hình sin cho cả hai loại mô hình: liên tục (tham số Simple time = 0) và gián đoạn (tham số Simple time = 1). Tín hiệu đầu ra y phụ thuộc vào 56at tham số chọn: Amplitude, Frequency và Phase trên cơ sở quan hệ y = Amplitude.sin (Frequency.time + Phase). Vì đơn vị của Phase là [rad], ta có thể khai báo trực tiếp giá trị của Phase là một hệ số nào đó nhân với pi. Giống như khối Constant, ta có thể sử dụng tham số tuỳ chọn Interpret vector parameters as 1-D để quyết định các tín hiệu có giá trị calar hay vector hay ma trận. f. From Workspace 68 Khối From Workspace có nhiệm vụ lấy số liệu từ cửa sổ Matlab Workspace để cung cấp cho mô hình Simulink. Các số liệu lấy vào phải có dạng của biểu thức Matlab, khai báo tại dòng Data. g. From File Bằng khối From File ta có thể lấy số liệu từ một MAT-File có sẵn. MAT-File có thể là kết quả của một lần mô phỏng trước đó, đã được tạo nên và cất đi nhờ khối To file trong sơ đồ Simulink. Thư viện Sinks 69 Thư viện này bao gồm các khối xuất chuẩn của Simulink. Ngoài khả năng hiển thị đơn giản bằng số, còn có các khối dao động kí để biểu diễn các tín hiệu phụ thuộc thời gian hay biểu diễn hai tín hiệu trên hệ toạ độ XY. a. Scope Nhờ khối Scope ta có thể hiển thị các tín hiệu của quá trình mô phỏng. Khi nhấn vào nút Properties, hộp thoại Scope Properties (đặc điểm của Scope) sẽ mở ra. Chọn general ta có thể đặt chế độ cho các trục. Khi đặt Number of axes > 1, cửa sổ Scope sẽ có nhiều đồ thị con giống tương tự như lệnh Subplot của Matlab. Nếu điền một số cụ thể vào ô time range, đồ thị sẽ chỉ được biểu diễn tại thời điểm do giá trị của số xác định. b. XY Graph Khối này biểu diễn hai tín hiệu đầu vào trên hệ toạ độ XY dưới dạng đồ hoạ Matlab đầu vào thứ nhất (bên trên). Ứng với trục X đầu thứ hai ứng với trục Y. c. To Workspace 70 Khối To Workspace gửi số liệu ở đầu vào của khối tới môi trường Matlab Workspace dưới dạng mảng (Array), Stracture hay Stracture with time và lấy chuỗi kí tự khai tại variable name để đặt tên cho tập số liệu được ghi. d. To File Khối này giúp ta cất tập số liệu (mảng hay ma trận) ở đầu vào của khối cùng với vector thời gian dưới dạng Mat-File. Array định dạng giống như định dạng mà khối From File cần, vì vậy số liệu do To File cất có thể được From File đọc trực tiếp mà không cần phải xử lý gì. 7.4 Khai báo tham số và mô phỏng Trước khi tiến hành mô phỏng ta phải có những thao tác chuẩn bị nhất định: Đó là khai báo tham số và phương pháp mô phỏng. Các thao tác chuẩn bị được thực hiện tại hộp thoại Simulation Parameters. Tại đó tất cả các tham số đều đã có một giá trị mặc định sẵn, nghĩa là: Có thể khởi động mô phỏng tốt nhất, phải thực hiện chuẩn bị, đặt các tham số phù hợp với mô hình Simulink cụ thể. Hộp thoại Simulation Parameters bao gồm các trang: a. Solver (thuật toán) 71 Tại trang này ta có thể khai báo thời điểm bắt đầu và kết thúc, thuật toán tích phân và phương pháp xuất kết quả của mô phỏng. Simulink cung cấp cho ta một số thuật toán khác nhau để giải bằng số phương trình vi phân. Đáp ứng một phổ khá rộng các bài toán đặt ra. Đối với hệ gián đoạn ta có thể chọn thuật toán discrete với bước tích phân linh hoạt (Variable- Step) hay cố định (Fixed- step). Thuật toán Variable-step làm việc với bước tích phân linh hoạt. Việc giải các phương trình vi phân được bắt đầu với bước tích phân khai báo tại Initial step size. Nếu ngay khi vừa bắt đầu, đạo hàm của các biến trạng thái đã quá lớn, Solver sẽ chọn giá trị bé hơn giá trị ghi tại Intial step size. Trong quá trình mô phỏng, Simulink sẽ cố gắng giải phương trình vi phân bằng bước cho phép lớn nhất ghi tại Max step size. Do có khả năng thích nghi bước tích phân, thuật toán Slover với Variable- step có thể giám sát biến thiên của các biến trạng thái từ thời điểm vừa qua tới thời điểm hiện tại. Thêm vào đó, thuật toán có thể nhận biết các vị trí không liên tục của hàm như các đột biến dạng bước nhảy. b. Giám sát sai số Để có thể thích nghi bước tích phân với động học của các biến trạng thái, tại mỗi bước tích phân, Simulink lại tính độ biến thiên của biến trạng thái từ thời điểm vừa qua tới thời điểm hiện tại. Độ biến thiên đó được gọi là sai số cục bộ local error ei (i = 1 : số 72 biến trạng thái của hệ. Cứ mỗi bước tích phân, thuật toán Solver (dạng Variable-step) lại kiểm tra xem local error của mỗi biến trạng thái có thoả mãn điều kiện acceptable error (sai số có thể chấp nhận) được xác định bởi tham số Relative tolerance và Absolute tolerance ở hộp thoại Simulation Parameters (viết tắt là eltol và abstol). Điều kiện acceptable error được mô tả bằng công thức sau: Nếu một trong số các 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 được giảm và quá trình tính của bước sẽ được lặp lại. Việc acceptable error được xác định trên cơ sở lựa chọn tối đa có nguyên do như sau: Giá trị khai báo tai Relative tolerance là ứng với biến thiên cho phép tính bằng % của giá trị tức thời của biến trạng thái xi. Nếu acceptable error chỉ được quyết định bởi Relative tolerance, vậy khi |xi| bé thì relation tolerance có thể trở nên quá bé, đồng nghĩa với việc: Biến trạng thái không được phép biến thiên gì nữa. Điều này không xảy ra nếu acceptable error được chọn theo công thức ở trên. Nếu ta khai báo cho Absolute tolerance giá trị auto, khi ấy Simulink sẽ bắt đầu bằng 10-6. Sau đó abstol được đặt về reltol.max(|xi|). Nhờ cách chọn bước linh hoạt như vậy, Simulink cho phép các biến trạng thái vẫn được c. Zero crossing detection Khái niệm zero crossing trong Simulink được hiểu là tính không liên tục trong diễn biến của trạng thái hay là các điểm không thông thường. Các tín hiệu không liên tục thường do một số khối nhất định gây ra như Abs, Backslash, Dead Zone, Saturation hay Switch. Mỗi khối hàm loại này có kèm theo một biến zero crossing, phụ thuộc vào các biến trạng thái không liên tục và đổi dấu mỗi khi gặp điểm không liên tục. Cứ sau mỗi bước tích phân, Simulink lại kiểm tra các biến zero crossing và qua đó nhận biết: Trong bước hiện tại có xảy ra zero crossing hay không. Nếu có Simulink sẽ tính chính xác tối đa thời điểm xuất hiện bằng phương pháp nội suy giữa giá trị vừa qua và giá trị hiện tại của biến zero crossing đó. Khi đã biết chính xác, Simulink bắt đầu tính tiếp từ cận phải. Vì vậy, nếu chọn sai số quá thô sẽ có nguy cơ bỏ sót các đ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 là Solver với Variable-step sẽ chọn bước tính đủ nhỏ. Solver với Fixed-step hoạt động với bước cố định và việc giám sát – phát hiện các điểm không liên tục là không thể. Song vì biết chính xác số lượng bước tích phân, ta có thể ước lượng khá chính xác thời gian tính của mô hình mô phỏng. Điều này đặc biệt có ý nghĩa nếu ta dự kiến cài đặt mô hình (sau khi mô phỏng thành công) trên một cấu hình Hardware nào đó. d. Workspace I/O 73 Nhờ khai báo thích hợp tại trang Workspace I/O ta có thể gửi số liệu vào, hoặc đọc số liệu từ môi trường Matlab Workspace mà không cần sử dụng các khối như To Workspace, From Workspace trong mô hình Simulink. Ngoài ra ta có thể khai báo giá trị ban đầu cho các biến trạng thái tại đây. Input: tên của các tập số liệu cần đọc từ Workspace, các tập số liệu có thể định dạng Array, Structure và Structure with time. Initial State: tên của biến đang giữ giá trị ban đầu, biến đó có thể có định dạng Array hay Structure. Việc tận dụng khả năng khai báo biến giữ giá trị ban đầu là rất quan trọng khi ta cần sử dụng các giá trị trạng thái của một lần mô phỏng trước đó, đang còn nằm trong Workspace nhờ đã kích hoạt ô Save to Workspace và khai báo Final state. Biến ra của mô hình Simulink được cất bằng cách điền tên biến ra vào ô Output, sau khi đã 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 khi nhấn nút Configure của ô Inline parameters, ta thu được cửa sổ mới để khai báo cấu trúc tham số của mô hình. Việc kích hoạt ô Inline parameters sẽ phủ định khả năng thay đổi tham số của các khối trong quá trình mô phỏng. Duy nhất những tham số liệt kê trong danh sách Global (tunable) parameters là vẫn có thể thay đổi được. Vì những tham số không thay đổi được sẽ bị coi là hằng số, thời gian sẽ giảm đi đáng kể. Mô phỏng bộ điều khiển PID: Nội dung: Dùng Matlab Simulink mô phỏng bộ điều khiển PID cho đối tượng có hàm truyền bên dưới, sử dụng các khối sau: + Khối Step; + Khối điều khiển PID; + Khối Transfer Fcn; + Khối scope; + Khối Sum. 74 Thiết kế: Thiết kế hệ thống như Hình 7.2 và 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 được hình 7.3 Hình 7.3: Cửa sổ giao diện - Lần lượt tạo các khối theo cách sau: Chọn các khối bằng cách kéo thả biểu tượng sang giao diện hình 3. + Khối Step: Simulinksources, kéo thả biểu tượng Step sang giao diện (Hình 7.4) 75 Hình 7.4: Tạo khối Step Tương tự như trên lần lượt vẽ các 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 như hình dưới đây: Hình 7.5: Nhập hàm truyền vào khối Fcn 76 Bây giờ tiếp tục hiệu chỉnh các thông số của bộ điều khiển PID như sau: + Kích vào bộ PID được dao diện sau: + Tiếp tục kích vào Tune để tìm được các thống số của bộ PID như sau: 77 + Ta được các thông số của của bộ điều khiển PID như bên dưới: Kết quả điều khiển của bộ PID như sau: Câu hỏi ôn tập chương 7 Câu 7.1: Simulink là gì? Câu 7.2: Trình bày cách khởi động Simulink? Câu 7.3: Trình bày các thao tác cơ bản đối với Simulink? Hãy thực hành trên Matlab với các thao tác này. Câu 7.4: Hãy trình bày cách khai báo các tham số mô phỏng trong Simulation Parameters? ---------------------- TÀI LIỆU THAM KHẢO [1] Nguyễn Phùng Quang, 2004. Matlab và Simulink giành cho kỹ sư điều khiển tự động. Nhà xuất bản Khoa học và kỹ thuật. [2] Trần Văn Chính, Giáo trình Matlab và simulink. Đại học Đà Nẵng. [3] Bài giảng mô phỏng và mô hình hóa. Đại học Thái Nguyên
File đính kèm:
- giao_trinh_mo_phong_matlap_chuong_4_cac_lenh_dieu_khien_tron.pdf