TÓM TẮT

1. Giới thiệu chung

Simulink là một môi trường mô phỏng đa miền mạnh mẽ, được tích hợp trong bộ phần mềm MATLAB của MathWorks. Trong các ứng dụng điều khiển tự động, Simulink cho phép người dùng xây dựng mô hình hệ thống một cách trực quan bằng cách kéo thả các khối (block) và thiết lập các tham số. SISOTool (Single Input Single Output Tool) là một công cụ trong Simulink, giúp người dùng thiết kế, phân tích và tinh chỉnh bộ điều khiển cho các hệ thống SISO (đầu vào duy nhất, đầu ra duy nhất).

Việc “vẽ Simulink trong SISOTool” thực chất là quá trình tạo một mô hình Simulink, chèn SISOTool vào mô hình đó để thực hiện thiết kế bộ điều khiển, và sau đó sử dụng các công cụ đồ họa của SISOTool để vẽ, tối ưu hoá đáp ứng tần số, đáp ứng thời gian, và các đặc tính khác của hệ thống. Bài viết này sẽ hướng dẫn chi tiết từng bước, từ chuẩn bị môi trường, tạo mô hình cơ bản, chèn SISOTool, đến việc vẽ và phân tích kết quả. Các phần sẽ được minh hoạ bằng hình ảnh (mô tả) và mã lệnh MATLAB khi cần thiết, giúp người đọc nắm vững quy trình một cách thực tiễn.

2. Chuẩn bị môi trường làm việc

2.1. Yêu cầu phần mềm

  • MATLAB R2023b hoặc mới hơn: Đảm bảo rằng bạn đã cài đặt đầy đủ Toolbox, trong đó có Control System Toolbox và Simulink.
  • Simulink: Được tích hợp trong MATLAB, cung cấp giao diện kéo thả các block.
  • SISOTool: Được tích hợp trong Control System Toolbox. Để khởi chạy, bạn chỉ cần gõ sisotool trong Command Window.

2.2. Kiểm tra cài đặt

Mở MATLAB và gõ:

ver

Kiểm tra danh sách các toolbox, chắc chắn rằng có Control System Toolbox và Simulink. Nếu không có, bạn cần cài đặt thêm thông qua MathWorks License Center.

2.3. Tạo thư mục dự án

Việc tổ chức file dự án giúp bạn quản lý các mô hình và dữ liệu một cách hiệu quả.

Cách Vẽ Simulink Trong Sisotool
Cách Vẽ Simulink Trong Sisotool
projectFolder = fullfile(pwd, 'SISO_Simulink_Project');
if ~exist(projectFolder, 'dir') mkdir(projectFolder);
end
cd(projectFolder);

3. Xây dựng mô hình Simulink cơ bản

3.1. Khởi tạo mô hình mới

  1. Mở Simulink bằng cách gõ simulink trong Command Window hoặc nhấn vào biểu tượng Simulink trên toolbar.
  2. Chọn Blank Model và lưu lại với tên siso_system.slx trong thư mục dự án.

3.2. Thêm các block cơ bản

Đối với một hệ thống SISO đơn giản, chúng ta sẽ sử dụng các block sau:

Block Mô tả
Step Tín hiệu đầu vào dạng bước, dùng để kiểm tra đáp ứng thời gian.
Transfer Function Mô tả hàm truyền của hệ thống gốc (plant).
Scope Hiển thị tín hiệu đầu ra trên đồ thị.
SISOTool Công cụ thiết kế bộ điều khiển, sẽ được chèn vào mô hình.

3.2.1. Thêm block Step

  • Kéo Sources → Step vào mô hình.
  • Double-click block để thiết lập Step time = 1, Initial value = 0, Final value = 1.

3.2.2. Thêm block Transfer Function

  • Kéo Continuous → Transfer Function.
  • Đặt hàm truyền mẫu: G(s) = 1/(s^2 + 10s + 20). Nhập vào Numerator = 1, Denominator = 1 10 20.

3.2.3. Thêm block Scope

  • Kéo Sinks → Scope để quan sát đáp ứng.

3.2.4. Kết nối các block

Kết nối Step → Transfer Function → Scope bằng cách kéo dây nối.

3.3. Kiểm tra mô hình

Nhấn Run (hoặc phím Ctrl+T). Mở Scope, bạn sẽ thấy đáp ứng bước của hệ thống gốc. Đảm bảo mô hình hoạt động bình thường trước khi chèn SISOTool.

4. Chèn SISOTool vào mô hình Simulink

4.1. Khởi chạy SISOTool

Trong Command Window, gõ:

sisotool

Giao diện SISOTool sẽ xuất hiện, gồm ba phần chính:

  1. Bộ điều khiển (Controller): Nơi bạn thiết kế và tinh chỉnh PID, Lead/Lag, hoặc các bộ điều khiển tùy chỉnh.
  2. Đáp ứng tần số (Bode, Nyquist, Nichols): Cho phép vẽ và phân tích đáp ứng tần số.
  3. Đáp ứng thời gian (Step, Impulse): Xem đáp ứng thời gian của hệ thống khi có bộ điều khiển.

4.2. Kết nối SISOTool với mô hình Simulink

Trong cửa sổ SISOTool, bạn sẽ thấy một biểu tượng Add to Simulink Model (biểu tượng mũi tên vào một khối Simulink). Thực hiện các bước sau:

Cách Vẽ Simulink Trong Sisotool
Cách Vẽ Simulink Trong Sisotool
  1. Chọn Plant: Trong phần Plant, nhấn vào biểu tượng Edit và nhập hàm truyền G(s) = 1/(s^2 + 10s + 20). Bạn cũng có thể nhập một mô hình Simulink đã có sẵn bằng cách chọn Import và duyệt tới file .slx.
  2. Nhấn nút “Add to Simulink”: SISOTool sẽ tự động tạo một subsystem trong mô hình Simulink hiện tại, chứa các block cần thiết (Plant, Controller, Feedback, và các cổng vào/ra).

Sau khi hoàn thành, quay lại Simulink. Bạn sẽ thấy một Subsystem mới có tên “SISO Controller” (hoặc tên bạn đặt). Mở subsystem để kiểm tra cấu trúc:

  • Input: Đầu vào (Signal) – thường là một block Step hoặc Signal Generator.
  • Plant: Block Transfer Function với hàm truyền đã nhập.
  • Controller: Block Gain/Transfer Function (được SISOTool tạo ra, ban đầu có thể là 1).
  • Feedback: Block Sum (độ trừ).

Kết nối Subsystem Output tới Scope để quan sát đáp ứng sau khi có bộ điều khiển.

4.3. Lưu mô hình

Nhấn Ctrl+S để lưu mô hình đã được chèn SISOTool. Đặt tên siso_system_with_controller.slx.

5. Thiết kế bộ điều khiển trong SISOTool

5.1. Chọn loại bộ điều khiển

Trong phần Controller, bạn có thể chọn:

  • PID: Thích hợp cho hầu hết các hệ thống.
  • Lead/Lag: Để cải thiện pha và tần số.
  • Custom: Nhập hàm truyền tùy chỉnh.

Giả sử chúng ta bắt đầu với PID.

5.1.1. Thiết lập PID

  • Chọn PID trong dropdown Controller Type.
  • Nhập các tham số khởi tạo: Kp = 1, Ki = 0, Kd = 0.
  • Nhấn Update để áp dụng.

Bạn sẽ ngay lập tức thấy đồ thị Bode thay đổi, và đáp ứng thời gian trong tab Step cũng được cập nhật.

5.2. Tinh chỉnh tham số bằng tay

Sử dụng các thanh trượt (sliders) hoặc nhập trực tiếp giá trị trong ô tương ứng để thay đổi Kp, Ki, Kd. Mỗi thay đổi sẽ tự động cập nhật các đồ thị.

5.2.1. Đánh giá đáp ứng thời gian

Mục tiêu thường là:

  • Thời gian lập hội (settling time) ≤ 2s.
  • Tối đa độ quá độ (overshoot) ≤ 10%.
  • Sai số tĩnh (steady-state error) ≤ 1%.

Bạn có thể quan sát các thông số này trên đồ thị Step Response. SISOTool cung cấp các công cụ đo tự động: nhấn Analyze → Performance Metrics để hiển thị các chỉ số.

5.2.2. Đánh giá đáp ứng tần số

Trong tab Bode, mục tiêu là:

  • Biên độ (gain margin) ≥ 6 dB.
  • Góc pha (phase margin) ≥ 45°.
  • Độ lợi (gain crossover) và góc pha (phase crossover) phù hợp.

Sử dụng công cụ Margin để xác định các giá trị này.

5.3. Sử dụng công cụ Auto-tuning

Cách Vẽ Simulink Trong Sisotool
Cách Vẽ Simulink Trong Sisotool

Nếu bạn muốn nhanh chóng có một bộ điều khiển “đủ tốt”, SISOTool cung cấp tính năng Auto Tune.

  • Nhấn Auto Tune → PID.
  • Chọn Design Method: Ziegler-Nichols, Cohen-Coon, hoặc Robust.
  • Nhấn Start và chờ quá trình tối ưu.

Sau khi hoàn thành, SISOTool sẽ tự động cập nhật các tham số và hiển thị kết quả. Bạn nên kiểm tra lại các tiêu chuẩn thời gian và tần số để chắc chắn.

6. Vẽ đồ thị trong SISOTool

6.1. Đồ thị Step Response

  1. Chọn tab Step.
  2. Nhấn Plot để vẽ đáp ứng bước.
  3. Để hiển thị các chỉ số, nhấn Analyze → Performance Metrics. Các chỉ số sẽ xuất hiện trên đồ thị dưới dạng chú thích.

6.2. Đồ thị Bode

  1. Chọn tab Bode.
  2. Nhấn Plot. Đồ thị sẽ bao gồm Magnitude và Phase.
  3. Đánh dấu Gain Margin và Phase Margin bằng cách nhấn Margin. Các giá trị sẽ được hiện lên.

6.3. Đồ thị Nyquist và Nichols

  • Nyquist: Chọn tab Nyquist, nhấn Plot. Đồ thị giúp kiểm tra tính ổn định cho các hệ thống có độ trễ.
  • Nichols: Chọn tab Nichols, nhấn Plot. Thích hợp để thiết kế bộ điều khiển dựa trên góc pha và độ lợi.

6.4. Lưu và xuất đồ thị

Bạn có thể lưu đồ thị dưới dạng hình ảnh hoặc dữ liệu:

% Lưu hình ảnh
saveas(gcf, 'BodePlot.png'); % Lưu dữ liệu
mag,phase,w = bode(tf(1,1 10 20));
save('bodeData.mat','mag','phase','w');

Ngoài ra, trong giao diện SISOTool, có mục File → Export để xuất ảnh trực tiếp.

7. Đưa bộ điều khiển đã thiết kế trở lại Simulink

Sau khi đã tinh chỉnh và hài lòng với bộ điều khiển trong SISOTool, bạn cần cập nhật mô hình Simulink để chạy mô phỏng toàn diện.

7.1. Cập nhật block Controller

Cách Vẽ Simulink Trong Sisotool
Cách Vẽ Simulink Trong Sisotool

Mở subsystem SISO Controller trong Simulink. Bạn sẽ thấy một block Transfer Function hoặc Gain đại diện cho bộ điều khiển. Thay đổi các tham số sao cho khớp với giá trị Kp, Ki, Kd đã thiết kế.

  • Đối với PID: Thêm block PID Controller (Control System Toolbox → Continuous → PID Controller) và nhập các tham số.
  • Đối với Transfer Function: Nhập hàm truyền mới, ví dụ C(s) = Kp + Ki/s + Kds.

7.2. Kiểm tra lại mô hình

Chạy mô phỏng một lần nữa và mở Scope. Đồ thị đáp ứng thời gian trong Simulink sẽ phải trùng khớp với đồ thị trong SISOTool. Nếu có sai lệch, kiểm tra:

  • Timestep: Đảm bảo thời gian mẫu (sample time) phù hợp.
  • Solver: Đối với hệ thống liên tục, chọn solver ode45 hoặc ode15s với Fixed-step nếu cần.

8. Thực hiện mô phỏng nâng cao

8.1. Mô phỏng với nhiễu và bất ổn

Để kiểm tra độ bền của bộ điều khiển, bạn có thể thêm:

  • Noise: Block Band-Limited White Noise vào đầu vào.
  • Parameter Variation: Sử dụng Gain block với biến thời gian (tạo một MATLAB Function trả về giá trị thay đổi theo thời gian).

8.2. Phân tích độ ổn định bằng Root Locus

Mặc dù SISOTool tập trung vào Bode và Nyquist, bạn vẫn có thể sử dụng Control System Toolbox để vẽ Root Locus:

C = pid(Kp, Ki, Kd);
L = series(C, tf(1,1 10 20)); % Mở vòng
rlocus(L);
grid on;

8.3. Tối ưu hoá đa mục tiêu

Nếu bạn có nhiều tiêu chuẩn (ví dụ: giảm tiêu thụ năng lượng đồng thời duy trì đáp ứng nhanh), bạn có thể sử dụng fmincon hoặc ga (Genetic Algorithm) để tối ưu các tham số PID.

Cách Vẽ Simulink Trong Sisotool
Cách Vẽ Simulink Trong Sisotool
objFun = @(p) performanceMetric(p, plant);
options = optimoptions('ga','Display','iter');
popt, fval = ga(objFun, 3, , , , , 0 0 0, 10 10 10, , options);

Trong đó performanceMetric tính tổng hợp các chỉ số như settling time, overshoot, control effort.

9. Lưu trữ và chia sẻ dự án

9.1. Export mô hình Simulink

  • File → Save As để lưu mô hình.
  • File → Export Model to MATLAB File để tạo file .m có thể tái tạo mô hình.

9.2. Export SISOTool settings

SISOTool cho phép lưu lại cấu hình bộ điều khiển:

save('siso_design.mat','C','G','designInfo');

Bạn có thể tải lại bằng:

load('siso_design.mat');

9.3. Tạo báo cáo tự động

MATLAB cung cấp Report Generator. Bạn có thể tạo một script để tự động tạo PDF bao gồm:

  • Mô hình Simulink (hình ảnh).
  • Đồ thị Bode, Step, Nyquist.
  • Bảng các chỉ số hiệu suất.
import mlreportgen.dom.;
d = Document('SISO_Report','pdf');
open(d);
append(d, Paragraph('Báo cáo thiết kế bộ điều khiển SISO'));
% Thêm hình ảnh
img = Image('BodePlot.png');
append(d,img);
close(d);

10. Tổng kết và lời khuyên thực tiễn

Việc vẽ Simulink trong SISOTool không chỉ là một thao tác kỹ thuật mà còn là một quy trình thiết kế hệ thống điều khiển toàn diện. Qua bài viết, chúng ta đã:

  1. Chuẩn bị môi trường: Đảm bảo MATLAB, Simulink, Control System Toolbox và SISOTool được cài đặt đầy đủ.
  2. Xây dựng mô hình Simulink cơ bản: Tạo plant, step input và scope.
  3. Chèn SISOTool: Kết nối SISOTool với mô hình để thiết kế bộ điều khiển.
  4. Thiết kế và tinh chỉnh bộ điều khiển: Sử dụng PID, Lead/Lag, hoặc Auto-tune, đồng thời đánh giá qua đáp ứng thời gian và tần số.
  5. Vẽ và phân tích đồ thị: Sử dụng các tab Step, Bode, Nyquist, Nichols trong SISOTool.
  6. Đưa thiết kế trở lại Simulink: Cập nhật block controller và chạy mô phỏng toàn bộ.
  7. Mô phỏng nâng cao: Thêm nhiễu, biến đổi tham số, và tối ưu đa mục tiêu.
  8. Lưu trữ và chia sẻ: Export mô hình, cấu hình và tạo báo cáo tự động.

Lời khuyên cuối cùng

  • Luôn kiểm tra lại đơn vị: Đảm bảo rằng các tham số (gain, thời gian) được nhập đúng đơn vị (rad/s, s, …).
  • Sử dụng Solver thích hợp: Đối với hệ thống cứng (stiff), ưu tiên solver ode15s.
  • Ghi lại mọi thay đổi: Sử dụng Version Control (Git) để quản lý các phiên bản mô hình và thiết kế.
  • Thực hành với ví dụ thực tế: Đưa mô hình vào các bài toán thực tế như điều khiển motor DC, hệ thống nhiệt, hoặc robot để củng cố kiến thức.

Hy vọng bài viết “Cách Vẽ Simulink Trong SISOTool” đã cung cấp cho bạn một hướng dẫn chi tiết, đầy đủ và thực tiễn. Khi nắm vững quy trình này, bạn sẽ tự tin thiết kế, phân tích và tối ưu các hệ thống điều khiển SISO phức tạp, đáp ứng yêu cầu công nghiệp và nghiên cứu. Chúc bạn thành công!

Rate this post
Mục nhập này đã được đăng trong Blog. Đánh dấu trang permalink.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *