(NB) Bài giảng Giải tích mạch và mô phỏng trên máy tính: Phần 1 gồm có 3 chương cung cấp kiến thức về Chương 1: Các khái niệm cơ bản, Chương 2: Tính toán trên các mảng số, Chương 3: Nhập xuất dữ liệu trong MATLAB.
Trang 11
TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG
KHOA KỸ THUẬT CÔNG NGHỆ
BÀI GIẢNG GIẢI TÍCH MẠCH
VÀ MÔ PHỎNG TRÊN MÁY TÍNH
Bậc học: CAO ĐẲNG
(BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI)
Bộ môn: Điện - Điện tử
Khoa: Kỹ thuật - Công nghệ
Quảng Ngãi - 05/ 2019
Trang 22
TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG
KHOA KỸ THUẬT CÔNG NGHỆ
BÀI GIẢNG GIẢI TÍCH MẠCH
VÀ MÔ PHỎNG TRÊN MÁY TÍNH Bậc học: CAO ĐẲNG (45 TIẾT)
(BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI)
GV: Trương Quang Sanh
Bộ môn: Điện - Điện tử
Khoa: Kỹ thuật - Công nghệ
Quảng Ngãi - 05/ 2019
Trang 33
LỜI NÓI ĐẦU
Điều khiển tự động hóa đóng vai trò quan trọng trong sự phát triển của khoa học và
kỹ thuật Lĩnh vực này sử dụng rất rộng rãi từ hệ thống phi thuyền không gian, hệ thống điều khiển tên lửa, máy bay không người lái, robot, người máy tay, máy trong các quá trình sản xuất hiện đại và ngay cả trong đời sống hàng ngày: Điều khiển nhiệt độ, độ ẩm,
…
Khi các máy móc hiện đại ngày nay càng phức tạp hơn nhiều tín hiệu vào và ra thì việc mô tả hệ thống điều khiển đòi hỏi cần phải tính toán nhanh và xử lý một lượng lớn các lệnh phức tạp
Nhằm tạo kỹ năng lập trình và mô phỏng để giải quyết các bài toán đại số, phương trình vi phân, ma trận, các bài toán về phương trình toán lý, trong kỹ thuật điện, điện tử, tự
động… Bài giảng “GIẢI TÍCH MẠCH VÀ MÔ PHỎNG TRÊN MÁY TÍNH” sẽ giúp
cho chúng ta tìm hiểu những nội dung cơ bản nhất về Matlab và Simulink cũng như ứng dụng giải quyết những bài toán kỹ thuật điện đơn giản
Nội dung của bài giảng gồm 8 chương:
Chương 1: Các khái niệm cơ bản Chương 2: Tính toán trên các mảng số Chương 3: Nhập - xuất dữ liệu trong MATLAB 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
Do thời gian biên soạn có hạn nên không tránh được những sai sót, mong những góp ý xin gửi về Bộ môn Điện - Điện tử, khoa Kỹ thuật - Công nghệ, Trường Đại học Phạm Văn Đồng Trân trọng cảm ơn!
Tác giả!
Trang 44
MỤC LỤC
MỤC LỤC 4
Chương 1 CÁC KHÁI NIỆM CƠ BẢN 6
1.1 Giới thiệu phần mềm matlab 6
1.2 Làm việc trong môi trường Matlab 7
1.3 Các lớp dữ liệu 8
Chương 2 TÍNH TOÁN TRÊN CÁC MẢNG SỐ 10
2.1 Khởi tạo các mảng số 10
2.2 Các phép tính trên mảng số 12
2.3 Các hàm toán học và logic 16
2.4 Xử lý, tính toán các mảng số 19
Chương 3 NHẬP - XUẤT DỮ LIỆU TRONG MATLAB 23
3.1 Nhập dữ liệu từ bàn phím bằng hàm input 23
3.2 Nhập dữ liệu từ chuột bằng hàm menu 23
3.3 Xuất dữ liệu ra cửa sổ lệnh bằng hàm disp Hàm format và các khuôn dạng số24 3.4 Xuất dữ liệu ra cửa sổ lệnh bằng hàm sprintf 26
3.5 Xuất dữ liệu ra file bằng lệnh save 27
3.6 Nhập dữ liệu từ file bằng lệnh load 27
3.7 Nhập xuất dữ liệu với các file văn bản có định dạng bằng các hàm
fopen, fscanf, fprintf, fclose 28
Chương 4 CÁC LỆNH ĐIỀU KHIỂN TRONG MATLAB 31
4.1 Các lệnh rẽ nhánh: if end, switch end 31
4.2 Các lệnh lặp: for end, while end 34
4.3 Các lệnh chuyển trong vòng lặp 37
4.4 Hàm tạm dừng 39
Chương 5 ĐỒ HỌA TRONG MATLAB 41
Trang 55
5.1 Cơ sở đồ họa Matlab 41
5.2 Đồ họa 2 chiều 42
5.3 Đồ họa 3 chiều 44
5.4 Thiết kế giao diện đồ họa 46
Chương 6 CÁC BÀI TOÁN ĐẠI SỐ TUYẾN TÍNH VÀ 51
PHƯƠNG TRÌNH VI PHÂN 51
6.1 Tính toán với vectơ và ma trận 51
6.2 Hệ phương trình đại số tuyến tính 53
6.3 Giải thuật giải phương trình vi phân 54
6.4 Giải thuật giải bài toán kỹ thuật điện 56
Chương 7 SIMULINK 60
7.1 Khởi động Simulink 60
7.2 Thao tác cơ bản với Simulink 62
7.3 Thư viện Sources, Sinks 63
7.4 Khai báo tham số và mô phỏng 70
TÀI LIỆU THAM KHẢO 79
Trang 66
Chương 1 CÁC KHÁI NIỆM CƠ BẢN
1.1 Giới thiệu phần mềm matlab
Đối với lĩnh vực điều khiển - tự động hóa nói riêng và trong lĩnh vực khoa học - kỹ thuật nói chung, mô phỏng là công cụ quan trọng cho phép khảo sát các đối tượng, hệ thống hay quá trình kỹ thuật - vật lý, mà nhất thiết không phải có đối tượng hay hệ thống thực Matlab - simulink được trang bị công cụ mô phỏng mạnh và các phương pháp mô hình hóa
Matlab là một bộ chương trình phần mềm lớn của lĩnh vực tính toán số Tên bộ
chương trình chính là chữ viết tắt từ MATric LABoratory, thể hiện định hướng chính của
chương trình là các phép toán vector và ma trận Phần cốt lõi của chương trình bao gồm một số hàm toán, các chức năng nhập/xuất cũng như các khả năng điều khiển chu trình mà nhờ đó ta có thể dựng nên các đoạn chương trình để thực thi
Thêm vào phần cốt lõi là các Toolbox (bộ công cụ) với phạm vi chức năng chuyên dụng mà người sử dụng cần Trong phạm vi giáo trình này chỉ giới thiệu một số Toolbox liên quan đến mô phỏng mạch, điều khiển - tự động hóa Đặc biệt, Simulink là một Toobox có vai trò đặc biệt quan trọng: Một công cụ mạnh phục vụ mô hình hóa và mô phỏng các hệ thống kỹ thuật - vật lý trên cơ sở sơ đồ cấu trúc dạng khối
Trước khi khởi động Matlab, thì người dùng phải tạo một thư mục làm việc để chứa các file chương trình của mình (ví dụ: E:/thuchanh_matlab)
Matlab sẽ thông dịch các lệnh được lưu trong file có dạng *.m Sau khi cài đặt Matlab thì việc khởi động chạy chương trình này chỉ đơn giản là nhấp vào biểu tượng của
nó trên desktop , hoặc vào Start\All Programs\Matlab\Matlab
Sau khi đã khởi động Matlab xong, thì bước kế tiếp là chỉ thư mục làm việc của mình cho Matlab Nhấn vào biểu tượng trên thanh công cụ và chọn thư mục làm việc của mình (ví dụ: E:/thuchanh_matlab)
Cửa sổ làm việc của Matlab sẽ như hình 1.1 Nó bao gồm 3 cửa sổ làm việc chính: Cửa sổ lệnh (Command Window), cửa sổ thư mục hiện tại (Current Directory) và cửa sổ chứa tập các lệnh đã được sử dụng (Command History)
Trang 77
Hình 1.1 Giao diện làm việc của phần mềm Matlab
Để tạo một file ***.m trong thư mục làm việc, ta có thể thực hiện:
Nhấn vào biểu tượng hoặc vào File\New\M-file
Cửa sổ soạn thảo xuất hiện, gõ chương trình cần thiết vào file Sau khi đã hoàn tất nhấn vào biểu tượng để lưu vào thư mục hiện tại (E:/thuchanh_matlab)
Để thực thi tập lệnh có trong ***.m trong thư mục làm việc thì người dùng chỉ cần
gõ tên file đó và Matlab sẽ tự động thực thi các dòng lệnh có trong ***.m này
1.2 Làm việc trong môi trường Matlab
Matlab là một môi trường tính toán số và lập trình Giống như một máy tính cơ bản,
nó làm tất cả các phép tính toán học cơ bản như cộng, trừ, nhân, chia; giống như máy tính
kỹ thuật, nó bao gồm: số phức, căn thức, số mũ, logarit, các phép toán lượng giác như: sin, cos, tang,…; nó cũng giống như máy tính có thể lập trình, có thể lưu trữ, tìm kiếm lại dữ liệu, cũng có thể tạo, bảo vệ và ghi trình tự các lệnh để tự động phép toán khi giải quyết các vấn đề, có thể so sánh logic, điều khiển thực hiện lệnh để đảm bảo tính đúng đắn của phép toán Giống như các máy tính hiện đại nhất, nó cho phép biểu diễn dữ liệu dưới nhiều dạng như: biểu diễn thông thường, ma trận đại số, các hàm tổ hợp và có thể thao tác với dữ liệu thường cũng như đối với ma trận
Matlab cung cấp một môi trường phong phú cho biểu diễn dữ liệu và có khả năng mạnh mẽ về đồ họa, tạo các giao diện riêng cho người sử dụng GUIs Thêm vào đó
Trang 88
Matlab đưa ra những công cụ để giải quyết những vấn đề đặc biệt, gọi là Toolbox Ngoài
ra ta còn có thể tạo ra các Toolbox cho riêng mình
1.3 Các lớp dữ liệu
Dữ liệu của Matlab thể hiện dưới dạng ma trận (hoặc mảng) và có các kiểu dữ liệu được liệt kê sau đây:
- Kiểu đơn single: Dữ liệu số với độ chính xác đơn, kiểu này có lợi về mặt bộ nhớ
nhưng không được sử dụng trong các phép tính toán học vì có độ chính xác kém
- Kiểu double: Dữ liệu số với độ chính xác kép, kiểu này là kiểu thông dụng nhất của
các biến trong Matlab
- Kiểu uint8, uint16, …
- Kiểu char
- Matlab còn có một số kiểu dữ liệu khác cao cấp hơn: kiểu cell, kiểu struct (bản
ghi)
Biến và cách đặt tên cho biến
Biến (variable): trong Matlab là 1 kí hiệu được sử dụng để chứa 1 giá trị Gồm biến
toàn cục (global), biến cục bộ (local)
Tên biến (variable name): bắt đầu bằng một chữ cái, tiếp theo là các chữ cái, chữ số
hoặc kí tự gạch chân ( _ )
Tên_biến = giá trị hoặc biểu thức
Tên biến phải tuân thủ theo các quy tắc sau:
Tên biến có phân biệt chữ hoa và chữ thường
Ví dụ: Iterms, iterms, itErms và ITERMS là các biến khác nhau
Tên biến có thể chứa nhiều nhất 31 kí tự, sau kí tự thứ 31 sẽ bị lờ đi
Trang 99
Các hằng
Câu hỏi ôn tập Chương 1
Câu 1.1: Làm thế nào để khởi động Matlab?
Câu 1.2: Cách tạo và lưu một file ***.m vào thư mục đã tạo trước?
Câu 1.3: Làm thế nào để định nghĩa một biến?
Câu 1.4: Các quy định khi đặt tên biến là gì?
Câu 1.5: Trình bày các lớp dữ liệu trong Matlab?
-
Trang 10Với mảng có số lượng phần tử ít thì ta có thể nhập vào trực tiếp, nhưng với mảng có
số lượng lớn các phần tử thì ta dùng một trong hai cách sau:
- Tạo một mảng bắt đầu là phần tử 0, sau bằng phần tử trước cộng với 0.1, phần tử cuối là 1, tất cả các phần tử của mảng được nhân với pi:
Trang 11Các mảng trên là các mảng mà các phần tử của nó được tạo lên theo một quy luật nhất định Nhưng đôi khi mảng được yêu cầu, nó không thuận tiện tạo các phần tử bằng các phương pháp trên, không có một mẫu chuẩn nào để tạo các mảng này Tuy nhiên ta có thể tạo mảng bằng cách vào nhiều phần tử cùng một lúc
Trang 1212
a là mảng gồm các phần tử [1 3 5], mảng d là mảng gồm các phần tử của a và ghép thêm các phần tử [1 0 1]
Tóm lại ta có bảng cấu trúc các mảng cơ bản:
x=[ 2 2*pi sqrt(2)
2-3j ]
Tạo vector hàng x chứa các phần tử đặc biệt
x = first : last Tạo vector hàng x bắt đầu tại first, phần tử sau bằng
phần tử trước cộng với 1, kết thúc là phần tử có giá trị bằng hoặc nhỏ hơn last
x = first : increment :
last
Tạo vector hàng x bắt đầu tại first, giá trị cộng là increment, kết thúc là phần tử có giá trị bằng hoặc nhỏ hơn last
Ðể tạo vectơ cột, ta dùng dấu chấm phẩy để phân cách các phần tử Ngoài ra, ta
cũng có thể dùng các hàm linspace hay từ các vectơ hàng, sau đó dùng phương pháp chuyển vị.
Trang 132.2.2 Phép toán giữa mảng với mảng
Thuật toán thực hiện phép toán giữa các mảng không phải đơn giản như trên mà nó còn bị ràng buộc bởi các điều kiện khác như đối với hai mảng kích cỡ như nhau thì ta có các phép toán sau: phép cộng, phép trừ, phép nhân, chia tương ứng giữa các phần tử của của hai mảng
Trang 1515
Chú ý ta chỉ có thể dùng phép nhân_chấm hay phép chia_chấm đối với các mảng g và
h mà không thể dùng phép nhân ( * ) hay phép chia ( / hoặc \ ) vì đối với các phép toán
này yêu cầu số cột và số hàng của hai ma trận phải tương thích
2.2.3 Mảng với lũy thừa
MATLAB dùng toán tử ( ^ ) để định nghĩa luỹ thừa của mảng
Ví dụ ta có hai mảng g và h như ở trên, ta có thể tạo các mảng mới bằng toán tử
Trang 16Sau đây là bảng một số phép toán cơ bản của mảng:
Dữ liệu minh hoạ: a = [a1 a2 an] , b = [b1 b2 bn] ,
c là số vô hướng Cộng với số đơn A+c = [a1 +c a2 +c an+c]
Nhân với số đơn A*c = [a1 *c a2 *c an*c]
Cộng mảng A+b = [ a1+b1 a2+b2 an+bn ]
Nhân mảng a.*b = [ a1*b1 a2*b2 an*bn ]
Chia phải mảng a./ b = [ a1/ b1 a2/ b2 an/ bn ]
Chia trái mảng a.\ b = [ a1\ b1 a2\ b2 an\ bn ]
Luỹ thừa mảng a.^c = [ a1^c a2^c an^c ]
c.^a = [ c^a1 c^a2 c^an ] a.^b = [ a1^b1 a2^b2
Trang 1717
và thuật toán, nó rất hữu ích để giải quyết các vấn đề khoa học Tất cả các hàm được liệt
kê trong menu help Ở đây chỉ đề cập đến các hàm thông dụng nhất
2.3.1.1 Hàm toán học cơ bản
abs(x) Hàm tính giá trị tuyệt đối của x
sqrt(x) Hàm tính căn bậc hai của x
round(x) Làm tròn x về số nguyên gần nhất
fix(x) Làm tròn số x về 0
floor(x) Làm tròn về phía -∞
ceil(x) Làm tròn về phía ∞
sign(x) Hàm cho giá trị là -1 nếu x nhỏ hơn 0, giá trị bằng 0 nếu x bằng
0, có giá trị là 1 nếu x lớn hơn 0
rem (x,y) Hàm trả lại số dư của phép chia x cho y
exp(x) Hàm tính giá trị của ex
log(x) Hàm tính giá trị ln(x)
log10(x) Hàm tính giá trị log10(x)
2.3.1.2 Hàm lượng giác cơ bản
Ðơn vị của các tham số phải là radian
sin(x) Tính sin của góc x
cos(x) Tính cos của góc x
tan(x) Tính tan của góc x
2.3.2 Các toán tử logic và quan hệ
Ðối với các số thì trong toán tử và quan hệ quy định các số khác không là True còn
số không là False Kết quả của phép toán logic và quan hệ đưa ra là 1 cho True, 0 cho False
2.3.2.1 Toán tử quan hệ
Toán tử quan hệ Matlab bao gồm các phép so sánh:
Trang 18Toán tử logic cung cấp một cách diễn đạt mối quan hệ phủ định hay tổ hợp:
Biểu thức logic với các toán tử tổ hợp được xác định theo qui luật sau:
Ðôi khi gặp những biểu thức phức tạp chứa cả toán tử & lẫn toán tử | , MATLAB
sẽ có qui luật về trình tự xử lý như sau:
Ðầu tiên là xử lý các tính toán số học Sau đó, các toán tử logic được xem xét từ trái sang phải Những biểu thức con có trong biểu thức cần xử lý (có các toán tử & và | ) cũng được xem xét từ trái sang phải với các toán tử & được xử lý trước các toán tử |
Ví dụ:
Trang 2020
Ở trên ta dùng dấu hai chấm ( : ) để chỉ tất cả các hàng
>> A = [1 2 3; 4 5 6; 7 8 9]; % Gán lại các giá trị của ma trận A
>> B = A(3:-1:1,1:3) % Tạo ma trận B bằng cách đảo ngược các hàng của ma trận A
Trang 2222
2 2 2 2
4 4 4 4
8 8 8 8
Câu hỏi ôn tập chương 2
Câu 2.1: Trình bày cách tạo mạng đơn? Cho ví dụ?
Câu 2.2: Vectơ hàng và vectơ cột là gì? Cho ví dụ?
Câu 2.3: Trình bày cách tạo mảng số?
Câu 2.4: Cho mảng g dưới đây:
Trang 23- input: Từ khóa của hàm nhập dữ liệu;
- x: Tên biến được gán giá trị nhập vào;
- prompt: Dòng text mà người sử dụng đánh vào;
Khi đó biến x sẽ có giá trị bằng giá trị mà người sử dụng nhập vào
Ngoài ra ta có hàm: x = input (‘prompt’ , ‘s’) trả về chuổi kí tự Trong khi thực hiện
lệnh ta có thể sử dụng một số ký hiệu đặc biệt như dấu ngắt xuống dòng \n, dấu móc trên cao ‘ ’(khi thực hiện ta thu được trên màn hình duy nhất một dấu ‘) và gạch nghiêng chéo
\\( khi thực hiện ta thu được trên màn hình duy nhất một dấu\)
Sau đây là một ví dụ về một Script có khúc đối thoại nhập văn bản:
Price = input ([‘What does the exchange rate \n , …
‘looke like today ?’ ]);
Currency = input (‘ DEM\\EUR ?’ , ‘s’);
Sau khi gọi Script và nhập số liệu, ví dụ ta có thể nhận kết quả như sau
What does the exchange rate
Look like today ? 1.93
3.2 Nhập dữ liệu từ chuột bằng hàm menu
Để thực hiện nhập dữ liệu từ chuột bằng hàm menu, từ của sổ chính của Matlab ta
thực hiện File/ Import Data như sau:
Khi đó sẽ xuất hiện một cửa sổ import data như sau:
Trang 2424
Sau đó ta chọn đường dẫn đến thư mục chứa file dữ liệu cần nhập, và chọn nút open
để nạp dữ liệu
3.3 Xuất dữ liệu ra cửa sổ lệnh bằng hàm disp Hàm format và các khuôn dạng số
Để xuất dữ liệu ra cửa sổ lệnh ta dùng hàm disp có cấu trúc như sau:
disp(x) disp(‘text’)
Trong đó,
disp : Từ khoá của hàm xuất dữ liệu,
x : tên biến hoặc các giá trị số cần xuất ra màn hình,
text : dòng text mà người sử dụng cần xuất ra màn hình
Khi xuất số liệu hay chuỗi ký tự ra màn hình ta đều có thể đặt định dạng cho việc
xuất Lệnh disp(string) có tác dụng xuất chuỗi ký tự Lệnh này có thể sử dụng cho chuỗi
ký tự chứa văn bản động, trong đó các chữ số phải được biến thành chuỗi ký tự nhờ lệnh
num2str(variable [,format])
Đối với số liệu vector ta có thể lập định dạng xuất nhờ string = sprintf(string,
variable), sau đó xuất bằng lệnh disp Khi sử dụng hai lệnh num2str và sprintf, cú pháp
lập định dạng về cơ bản cũng giống như ngôn ngữ lập trình C Tất cả các biến phải được khai báo chung trong một ma trận duy nhất, và mỗi cột là một bộ tham số xuất
Ví dụ: Thành lập hàm M-file, nhập vào giá trị tiết diện dây dẫn, nhập vào chiều dài
và xuất ra giá trị điện trở của đoạn dây Cho dây dẫn bằng đồng (ρ=18.84 Ω mm2/km).Thành lập hàm M-file