1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Lập trình và ứng dựng matlab cho điều khiển tự động

168 591 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Lập trình và ứng dụng matlab cho điều khiển tự động
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Kỹ thuật phần mềm
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 168
Dung lượng 2,14 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hướng dẫn lập trình Matlab và ứng dụng Matlab vào lập trình hệ thống điều khiển tự động hóa.

Trang 1

  Để khởi động MATLAB ta nhấn đúp vào icon của nó trên màn hình. 

 

2.Đánh lệnh trong cửa sổ lệnh : Khi ta đánh lệnh vào cửa sổ lệnh, nó sẽ được 

thi hành ngay và kết quả hiện lên màn hình. Nếu ta không muốn cho kết quả hiện lên màn hình thì sau lệnh ta đặt thêm dấu “;”. Nếu lệnh quá dài, không vừa  một  dòng  dòng  có  thể  đánh  lệnh  trên  nhiều  dòng  và  cuối  mỗi  dòng  đặt thêm dấu   rồi xuống dòng. Khi soạn thảo lệnh ta có thể dùng các phím tắt :   ↑    Ctrl‐P    gọi lại lệnh trước đó 

home   Ctrl‐A    về đầu dòng 

end    Ctrl‐E    về cuối dòng 

esc    Ctrl‐U    xoá dòng 

Trang 3

  Muốn  lấy  tổng  của  các  hàng  ta  cần  chuyển  vị  ma  trận  bằng  cách  đánh vào lệnh: 

Trang 4

Ngoài ra toán tử “:” tham chiếu tới tất cả các phần tử của một hàng hay một cột. 

ta  tạo  được  ma  trận  B  từ  ma  trận  A  bằng  cách  đổi  thứ  tự  các  cột  từ  [1 2 3 4] thành [ 1 3 2 4 ] 

Trang 5

pascal(n) tạo ra ma trận xác định dương mà các phần tử lấy từ tam giác Pascal. 

Trang 6

  f.  M‐file:  M‐file  là  một  file  text  chứa  các  mã  của  MATLAB.  Để  tạo  một 

ma  trận  ta  viết  một  m‐file  và  cho  MATLAB  đọc  file  này.  Ví  dụ  ta  tạo  file 

Trang 10

1. Script file: Kịch bản là M‐file đơn giản nhất, không có đối số. Nó rất có ích 

khi thi hành một loạt lệnh MATLAB theo một trình tự nhất định. Ta xét ví dụ hàm fibno để tạo ra các số Fibonnaci. 

  •   Phần văn bản trợ giúp để giúp người dùng hiểu tác dụng của hàm. 

  •  Thân hàm chứa mã MATLAB  

  •  Các lời giải thích dùng để cho chương trình sáng rõ. Nó được đặt sau dấu %. 

Trang 11

Các biến khai báo trong một hàm của MATLAB là biến địa phương. Các hàm  khác  không  nhìn  thấy  và  sử  dụng  được  biến  này.  Muốn  các  hàm  khác dùng được biến nào đó của hàm ta cần khai báo nó là global. Ví dụ ta cần giải 

hệ phương trình : 

2 1 2

2

2 1 1

1

yyy

y

yyy

y

β+

format short e  5 digit floating point  3.1416e+00

format long e  15 digit floating point  3.141592653589793e+00format short g  Best of 5 digit fixed or floating  3.1416

Trang 13

.0)3.0x(

1)

Trang 16

 

6. Chỉ vẽ các điểm số liệu: Để vẽ các điểm đánh dấu mà không nối chúng lại với nhau ta dùng đặc tả nói rằng không có các đường nối giữa các điểm ta gọi 

 

8. Vẽ với hai trục y: Lệnh plotyy cho phép tạo một đồ thị có hai trục y. Ta cũng 

Trang 17

để vẽ. Tuy nhiên ta có thể mô tả lại phạm vi giá trị trên trục và khoảng cách đánh dấu theo ý riêng. Ta có thể dùng các lệnh sau: 

Trang 20

Ví  dụ:  Khảo  sát  nhịp  độ  sinh  học  liên  quan  đến  mật  độ  trichloetylene(TCE) cho số liệu: 

Trang 21

Ví dụ:   

Trang 23

Ví dụ: Ta khảo sát hàm sin(r)/r. Để tính hàm trong khoảng ‐8 và 8 theo x và y 

ta chỉ cần chuyển một vec tơ đối số cho meshgrid : 

Trang 24

  contour3   hiển thị các mặt đẳng mức tạo bởi một giá trị cho trước của 

ma trận Z. 

  contourf   hiển thị đồ thị contour 2D và tô màu vùng giữa 2 các đường   contourc   hàm cấp thấp để tính ma trận contour  

Trang 25

Các  hàm  contour(z,n)  và  contour(z,v)  cho  phép  ta  chỉ  rõ  số  lượng  mức contour  hay  một  mức  contour  cần  vẽ  nào đó với z là ma trận số liệu, n là số đường contour và v là vec tơ các mức contour. MATLAB không phân biệt giữa đại lượng vec tơ một phần tử hay đại lượng vô hướng. Như vậy nếu v là vec tơ 

một  phần  tử  mô  tả  một  contour  đơn  ở  một  mức  hàm  contour  sẽ  coi  nó  là  số  lượng  đường  contour  chứ  không  phải  là  mức  contour.  Như  vậy,contour(z,v)  cũng  như  contour(z,n).  Để  hiển  thị  một  đường  đẳng  mức  ta  cần  cho  v  là  một 

vec tơ có 2 phần tử với cả hai phần tử bằng mức mong muốn.V í dụ để tạo ra một đường đẳng mức 3D của hàm peaks 

Trang 26

r = ones(size(theta)); 

Trang 27

attv)

Trang 29

hệ đầy đủ bằng 0 gọi là hệ underdetermined. Một hệ như vậy có thể có vô số nghiệm với một hay nhiều biến phụ thuộc vào các biến còn lại. Với một hệ như vậy phương pháp Cramer hay phương pháp ma trận nghịch đảo không dùng được.  Khi  số  phương  trình  nhiều  hơn  số  ẩn  phương  pháp  chia  trái  cũng  cho nghiệm  với  một  vài  ẩn  số  được  cho  bằng  0.  Một  ví  dụ  đơn  giản  là  phương trình x + 3y = 6. Phương trình này có rất nhiều nghiệm trong đó có một nghiệm 

Ví dụ: Cho hệ phương trình      

  x + 2y + z = 8 

  0x + y + 0z = 2 

  x + y + z = 6  

Trang 30

143

Nếu ta loại trừ một hàng và một cột của ma trận chúng ta còn lại ma trận 2×2. Tuỳ theo hàng và cột bị loại ta có 9 ma trận con. Định thức của các ma trận này gọi là định thức con. Ví dụ nếu ta bỏ hàng 1 và cột 1 ta có: 

37

210

=

Trang 31

Các  định  thức  con  có  thể  dùng  để  xác  định  hạng  của  ma  trận.  Hạng  của  ma 

trận được định nghĩa như sau: Một ma trận A m×n có hạng r  1 nếu và chỉ nếu  định thức của A chứa một định thức r × r và mọi định thức con vuông có r+1 hàng  hay hơn bằng 0. 

Trang 32

Ví  dụ:  Giải  mạch điện gồm 3 nhánh nối song song: nhánh 1 có tổng trở Z1 = 5+2j và nguồn e = 100 sin(314t + 300), nhánh 2 có tổng trở Z2 = 3+4j và nhánh 3 

có tổng trở 5+6j. Ta viết phương trình của mạch điện theo dòng nhánh. Sau đó rút ra ma trận A và B. Các lệnh MATLAB: 

Trang 33

1 .Nội suy hàm một biến :MATLAB dùng 2 kiểu nội suy : nội suy đa thức và nội suy trên cơ sở biến đổi Fourrier nhanh, 

    a. Nội suy đa thức : MATLAB dùng hàm interp1(x,y,xi,< phương pháp>) 

với x, là giá trị của hàm tại những điểm đã cho và xi là giá trị mà tại đó ta cần nội suy ra giá trị yi. <phương pháp> có thể là một trong các giá trị sau : 

  ‘nearest’‐  phương  pháp  này  đặt  giá  trị  nội  suy  vào  giá  trị  đã  cho  gần nhất, Phương pháp này nhanh nhưng kết quả kém chính xác nhất 

Ví dụ:   yi = interp1(x,y,1.6,ʹsplineʹ) 

 yi = 

   24.9782   ‘cubic’‐ phương pháp này coi đường cong qua 2 điểm là đường cong bậc 

Trang 34

2.  Nội  suy  hàm  hai  biến  :  Hàm  interp2  thực  hiện  nội  suy  hàm  2  biến.Dạng hàm tổng quát : 

Trang 35

có thể đưa về hệ phương trình vi phân cấp 1 bằng cách đặt y1 = y ; y2 = y’ , . . , 

yn = y(n‐1). Như vậy:  

)y.,,

y,y,tfy

yy

yy

n 2 1 n

3 2

2 1

3 2

2 1

yyy3

Trang 36

   [ t , y] = ode45( ‘f’,[ 0   1],[0 ; 1 ; ‐1]) 

Mỗi hàng trong vec tơ nghiệm tương ứng với một thời điểm trong vec tơ cột t. Như  vậy  trong  ví  dụ  trên,  y(:,1)  là  nghiệm,  y(:,1)  là  đạo  hàm  bậc  nhất  của nghiệm và y(:,2) là đạo hàm bậc hai của nghiệm. 

Ví dụ: Tìm dòng qua độ khi đóng mạch RC nối tiếp vào nguồn một chiều biết tích số RC = 0.1, điện áp nguồn là 10V và điện áp ban đầu trên tụ là 2V. 

  Phương trình của mạch là: 

dt

du +  Thay số vào ta có: 

Trang 39

  b = tril(a) tạo ra ma trận b cùng cỡ với ma trận a, chứa các phần tử của 

ma trận a nằm dưới  đường chéo chính. Các phần tử khác bằng 0.  

  b = tril(a, k) tạo ra ma trận b cùng cỡ với ma trận a, chứa các phần tử của 

ma trận a ngay trên đường chéo và phía dưới đường chéo thứ k. Các phần tử khác bằng 0.  

Ví dụ:   P(x) = x3 – 2x – 5 

Trang 42

 

       

Các lệnh sau(lưu vào file ct3_1.m) thực hiện công việc trên: 

Trang 43

  ‐ Khung thứ nhất có góc trái dưới tại điểm có toạ độ 10% chiều ngang và 10% chiều cao của khung ngoài Figure. 

Trang 44

  ‐ Khung thứ 2 có góc trái phía dưới tại điểm có toạ đọ ứng với 10% chiều ngang và 60% chiều cao của khung ngoìa Figure. 

text_ f = uicontrol(gcf,ʹStyleʹ,ʹTextʹ,ʹStringʹ,ʹFahrenheit: ʹ,  

       ʹPositionʹ,[0.3 0.7 0.2 0.05],ʹHorizontalAlignmentʹ,ʹLeftʹ); 

Chuỗi  kí  tự  “Fahrenhaeit”  được  đặt  vào  đúng  vị  trí  dồn  trái  của  ô  có Position  ghi  trong  đoạn  chương  trình  trên.  Đoạn  lệnh  sau  dùng  Edit  để  viết chuỗi  kí  tự  “68.0”  vào  vị  trí  bên  cạnh  của  “Fahrenheit”.  Chuỗi  kí  tự  có  vị  trí dồn phải trong ô (Position Box). 

       [0.6 0.3 0.1 0.05],ʹHorizontalAlignmentʹ,ʹLeftʹ); 

 

3.  Tự  động  cập  nhật  giá  trị  lên  GUI:  Để  hoàn  thiện  ví  dụ  GUI  ta  thực  hiện 

chương trình với nhiệm vụ tính quy đổi từ độ K sang độ C và tự động điền kết quả vào các ô bên cạnh chuỗi Celcius. Đoạn mã sau phục vụ mục đích callback 

Trang 45

    set(text_c2,ʹStringʹ,c); 

Đoạn mã trên nhận giá trị do lệnh uicontrol “edit” đọc vào dưới dạng chuỗi (string) và sau đó: 

Trang 48

mã trên, giá trị ‘Value’ đặt sẵn là 2. Khi Callback gọi ct3_8.m: 

Trang 50

set(frame_1,ʹBackgroundColorʹ,  [0.5 0.5 0.5]); 

set(frame_2,ʹBackgroundColorʹ,  [0.5 0.5 0.5]); 

text_f = uicontrol(gcf,ʹStyleʹ,  ʹTextʹ, ʹStringʹ,  ʹFahrenheit: ʹ,ʹPositionʹ,          [0.3 0.7 0.2 0.05],ʹHorizontalAlignmentʹ,ʹLeftʹ); 

Trang 51

tử thì radiobutton có thể đồng thời chứa nhiều phần tử.  

Cuối cùng ta xét phương án dùng listbox. Giao diện cần tạo như sau:  

  

Trang 52

Vùng thiết 

kế Các phần tử 

 

Việc đầu tiên là ta thiết kế giao diện mong muốn. Ta sẽ dùng chuột kéo các  phần  tử  cần  dùng  từ  bên  trái  và  thả  vào  layout  rỗng  bên  phải.  Ta  có  thể dịch chuyển các phần tử này đế các vị trí mong muốn và cân chỉnh bằng công 

cụ  Alignment.  Với  mỗi  phần  tử  ta  cấn  xác  định  thuộc  tính  cho  nó  bằng  cách bấm đúp vào phần tử hay bấm vào công cụ soạn thảo thộc tính 

Sau khi thiết kế xong ta lưu nó lại. Lúc này MATLAB tự động tạo ra file 

*.fig  dùng  lưu  giao  diện  vừa  tạo  và  file  *.m  chưa  các  mã  lệnh  cần  thực  hiện. Việc cuối cùng là viết các mã lện vào file *.m. Trong quá trình thiết kế  ta có thể chạy thử xem sau mỗi bước thiết kế đã đạt yêu cầu chưa bằng cách bấm vào ô chạy thử  

 

2. Một số ví dụ tạo GUI: 

  a. Đếm số lần bấm chuột: Ta thiết kế một giao diện như sau: 

Trang 53

        

 

Ta muốn là khi bấm chuột, số lần bấm sẽ được đếm và ghi lại. Trước hết 

ta gọi guide và có được một layout rỗng. Vào Property Inspector (ô soạn thảo thuộc tính) và ghi vào Name chuỗi ʺct3_17ʺ và chấp nhận thuộc tích Tag mặc định  của  nó  là  figure1;  dùng  Font  chữ  mặc  định,  cỡ  chữ  12,  bold.  Ta  dùng  ô Edit Text để ghi lại số lần bấm. Ta vào Property Inspector rồi chọn String. Ta nhập vào ô này chuỗi ʺSo lan bam chuot: 0ʺ. Ta ghi vào ô Tag chuỗi ʺeditmotʺ 

và cũng dùng Font chữ mắc định, cỡ chữ 12 và bold. Tiếp theo kéo Pushbutton vào layout và soạn thảo thuộc tính cho nó với Font chữ mặc định, cỡ chứ 12, bold.  Trong  thuôc  tính  String  ghi  chuỗi  ʺ  Bam  chuotʺ;  ghi  và  Tag  chuỗi ʺpushbuttonmotʺ. Như vậy là ta đã thiết kế xong. Bây giờ ta lưu lại với tên là ct3_17.fig và ct3_17.m. 

Nhiệm vụ tiếp theo là ghi các lệnh cần thiết vào file ct3_17.m. File này đã được MATLAB tự động tạo ra. Ta phải thêm vào đó các mã lệnh để khi bấm chuột thì số lần bấm được thể hiện trên ô Edit Text. Ta sẽ ghi các mã lệnh này vào phần: 

Trang 54

    varargout{1} = fig; 

end  elseif  

  b. Chuyển đổi từ độ Fahrenheit sang độ Celcius: Ta thiết kế một GUI để 

chuyển đổi nhiệt độ. Giao diện có dạng như sau: 

 

Trang 56

đổi thuộc tính của mô hình. Các khối nhìn thấy được, ngược lại, không đóng vai  trò  quan  trọng  trong  mô  hình  hoá.  Chúng  chỉ  giúp  ta  xây  dựng  mô  hình một  cách  trực  quan  bằng  đồ  hoạ.  Một  vài  khối  của  Simulink  có  thể  là  thấy được  trong  một  số  trường  hợp  và  lại  không  thấy  được  trong  một  số  trường hợp khác. Các khối như vậy được gọi là các khối nhìn thấy có điều kiện

3.  Mô  tả  thông  số  của  khối:  Để  mô  tả  thông  số  của  khối  ta  dùng  hộp  thoại 

Block  Properties.  Để  hiển  thị  hộp  thoại  này  ta  chọn  khối  và  chọn  Block  Properties  từ  menu  Edit.  Ta  có  thể  nhắp  đúp  chuột  lên  khối  để  hiên  thị  hộp  thoại này. Hộp thoại Block Properties gồm : 

Trang 57

7. Xử lí tên khối: Mỗi khối có tên, phải là duy nhất và phải chứa ít nhất một kí 

tự. Mặc định tên khối nằm dưới khối. Với tên khối ta có thể thực hiện các thao tác sau đây: 

  Thay  đổi  tên  khối  bằng  cách  bấm  chuột  vào  tên  đã  có  và nhập lại tên 

mới.  Nếu  muốn  thay  đổi  font  chữ  dùng  cho  tên  khối  hãy  chọn  khối  và  vào 

menu Format và chọn Font. 

• Thay đổi vị trí đặt tên khối từ dưới lên trên hay ngược lại bằng cách kéo   tên khối tới vị trí mong muốn. 

• Không cho hiển thị tên khối bằng cách vào menu Format và chọn Hide Names hay Show Names 

Trang 58

ta thây đổi mô hình sau khi chọn Wide Vector Lines ta phải cập nhật hình vẽ  bằng cách chọn Update Diagram từ menu Edit. Khởi động lại Simulink cũng 

  • Mở rộng đầu vào: khi dùng khối với nhiều đầu vào ta có thể trộn lẫn các  đại  lượng  vec  tơ  và  đại  lượng  vô  hướng  Khi  này  các  đầu  vào  vô  hướng được mở rộng thành vec tơ với số phần tử như của đầu vào vec tơ,các phần tử đều có trị số như nhau   

• Mở rộng thông số: ta có thể đặc tả các thông số đối với khối được vec tơ hoá thành đại lượng vec tơ hay đại lượng vô hướng. Khi ta đặc tả các thông số vec tơ, mỗi một phần tử thông số được kết hợp với phần tử tương ứng trong vec tơ đầu vào. Khi ta đặc tả các thông số vec tơ, Simulink áp dụng mở rông vô hướng để biến đổi chúng thành vec tơ có kích thước phù hợp. 

 

12.  Gán  độ  ưu  tiên  cho  khối:  Ta  có  thể  gán  độ  ưu  tiên  cho  khối  không  nhìn 

thấy trong mô hình. Khối có độ ưu tiên cao hơn được đánh giá trước khối có 

độ ưu tiên nhỏ hơn. Ta có thể gán độ ưu tiên bằng cách dùng lệnh tương tác hay dùng chương trình. Để dùng chương trình ta dùng lệnh: 

  set_param(b,ʹPriorityʹ,ʹnʹ) 

Trong đó b là khối và n là một số nguyên, số càng thấp, độ ưu tiên càng cao. 

Để gán độ ưu tiên bằng lệnh ta nhập độ ưu tiên vào trường Priority trong hộp  thoại Block Priorities của khối. 

Trang 59

Các đường mang các tín hiệu. Mỗi đường mang một tín hiệu vô hướng hay  vec  tơ.  Mỗi  đường  nối  cổng  ra  của  một  khối  với  cổng  vào  của  một  hay nhiều khối khác. 

3.  Chèn  khối  vào  một  đường:  Ta  có  thể  chèn  một khối vào một đường bằng 

cách  kéo  và  thả  khối  đó  lên  đường  nối.  Khối  mà  ta  chèn  vào  chỉ  có  một  đầu vào và một đầu ra. 

 

4. Nhãn của tín hiệu: Ta có thể gán nhãn cho tín hiệu để ghi chú cho mô hình. 

Nhãn có thể nằm trên hay dưới đường nối nằm ngang, bên phải hay bên trái đường nối thẳng đứng. 

Trang 60

và ghi nhãn. Để di chuyển nhãn, sửa một nhãn, click lên nhãn rồi đánh nhãn mới sau khi xóa nhãn cũ 

 

§6. GHI CHÚ 

  Ghi chú là đoạn văn bản cung cấp thông tin về mô hình. Ta có thể thêm ghi chú vào bất kì trông nào của mô hình. Để tạo một ghi chú, nhấn đúp chuột vào vùng trống của mô hình. Khi này trên màn hình xuất hiện một hình chữ nhật có con nháy ở trong. Ta có thể đánh văn bản ghi chú vào khung này. Khi muốn di chuyển phần ghi chú đến một vị trí khác, ta bấm chuột vào đó và kéo đến vị trí mới rồi thả chuột. Để sửa một ghi chú, bấm chuột vào nó để hiển thị khung văn bản và bắt đầu sửa. 

Trang 61

• tạo một khối hằng trong mô hình và cho nó giá trị phức. 

• tạo một tín hiệu thực tương ứng với phần thực và phần ảo của tín hiệu phức  và  kết  hợp  các  phần  này  thành  tín  hiệu  phức  bằng  cách  sử  dụng  khối biến đổi tín hiệu thực‐ảo thành tín hiệu phức. 

Ta có thể xử lí tín hiệu phức nhờ các khối chấp nhận tín hiệu phức. Phần lớn các khối của Simulink chấp nhận tín hiệu vào là số phức. 

Trang 62

cách  chọn  khối  hệ  thống  con  rồi  chọn  Hide  Port  Labels  từ  menu  Format.  Ta 

cũng  có  thể  dấu  một  hay  nhiều  nhãn  bằng  cách  chọn  các  khối  inport  hay 

outport  thích  hợp  trong  khối  hệ  thống  con  và  chọn  Hide  Name  từ  menu  Format 

 

§10. MÔ HÌNH HOÁ 

  Một trong những vấn đề xuất hiện khi dùng Simulink là làm thế nào để xây dựng một mô hình từ các phương trình hay hệ thống đã cho đã cho. Sau đây là một số ví dụ về cách xây dựng mô hình.  

nhiệt độ Celcius biến đổi từ 0 đến 10o. 

Trang 63

=+

1zz

1zz

2 1

2 1

Trang 64

• khối Sum trong thư viện Math để tạo phép tính 

• khối Scope trong thư viện Sink để xem kết quả 

• khối Signal Generator trong thư viện Sources để tạo nguồn 

• khối Integrator trong thư viện Continuous để tích phân 

Sơ đồ mô  phỏng như sau(lưu trong ct4_4.mdl): 

 

Ngày đăng: 20/11/2013, 15:37

HÌNH ẢNH LIÊN QUAN

8  hình hoá hệ phi tuyến : - Lập trình và ứng dựng  matlab cho điều khiển tự động
8  hình hoá hệ phi tuyến : (Trang 67)
Bảng sau tổng hợp hàm diff và hàm jacobian - Lập trình và ứng dựng  matlab cho điều khiển tự động
Bảng sau tổng hợp hàm diff và hàm jacobian (Trang 78)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN