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

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 1

Trang 1

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 2

Trang 2

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 3

Trang 3

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 4

Trang 4

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 5

Trang 5

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 6

Trang 6

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 7

Trang 7

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 8

Trang 8

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 9

Trang 9

Giáo trình Mô phỏng Matlap - Chương 4: Các lệnh điều khiển trong Matlab trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 49 trang duykhanh 10860
Bạn đang xem 10 trang mẫu của 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

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

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:

  • pdfgiao_trinh_mo_phong_matlap_chuong_4_cac_lenh_dieu_khien_tron.pdf