Hiểu một cách cơ bản về hai công cụ mạnh và hữu hiệu của Matlab, đó là Symbolic và Simulink, để từ đó sinh viên có thể tự mình phát huy các chức năng cao hơn của hai công cụ này trong tính toán và mô phỏng hệ thống.
Summary: Đây là giáo trình về symbolic và simulink
Hiểu một cách cơ bản về hai công cụ mạnh và hữu hiệu của Matlab, đó là Symbolic và Simulink, để từ đó sinh viên có thể tự mình phát huy các chức năng cao hơn của hai công cụ này trong tính toán và mô phỏng hệ thống.
[1].The Mathworks Inc., Matlab Notebook User’s Guide, 2003.
[2].Nguyễn Hoài Sơn - Đỗ Thanh Việt - Bùi Xuân Lâm, Ứng dụng MATLAB trong tính toán kỹ thuật, Tập 1, NXB ĐHQG Tp. HCM, 2000
[3]. Nguyễn Chí Ngôn, Bài thí nghiệm Kỹ thuật mô phỏng trong Điều khiển tự động, Bộ môn Viễn Thông & Tự động hóa, khoa Công nghệ thông tin, Đại học Cần thơ, 2002.
[4].Nguyễn Công Định, Phân tích và tổng hợp các hệ thống điều khiển bằng máy tính, NXB Khoa học và Kỹ thuật, 2002.
[5].http://www-h.eng.cam.ac.uk/help/tpl/programs/Matlab/Symbolic.html
Symbolic và Simulink đều chứa thư viện chức năng rất phong phú, bài thí nghiệm này chỉ có thể đề cập đến những gì gọi là cơ bản nhất. Từ đó, sinh viên có thể tự mình nghiên cứu và phát triển tiếp.
Phiên bản mới nhất của Symbolic toolbox được Mathworks giới thiệu trong Matlab 6.5 vào tháng 6-2003. Đó là một thư viện toán học kiểu ký tự, được phát triển từ Symbolic Maple của trường Đại học Waterloo, Canada. Để có cái nhìn tổng quát về các chức năng của Symbolic, sinh viên hãy gõ:
>>help symbolic
Một số hàm thông dụng của Symbolic:
| Tên hàm | Chức năng | Tên hàm | Chức năng |
| diff | Đạo hàm | fourier | Biến đổi Fourier |
| int | Tích phân | ifourier | Biến đổi Fourier ngược |
| taylor | Khai triển Taylor | laplace | Biến đổi Laplace |
| det | Định thức của ma trận | laplace | Biến đổi Laplace ngược |
| numden | Tử và mẫu của phân số | ezplot | Vẽ hàm, plot |
| subs | Thay biến sym bằng trị số | ezpolar | Vẽ hàm, tọa độ cực polar |
| dsolve | Giải phương trình vi phân | ezmesh | Vẽ mặt lưới mesh |
| solve | Giải phương trình đại số | ezsurf | Vẽ mặt surf |
Để biến đổi một số, một biến hay một đối tượng nào đó thành kiểu Symbolic ta có thể sử dụng một trong các cách sau:
>>s=sym(A)
>>x=sym(x)
>>syms x y z% khai báo kết hợp x, y và z là biến symbolic
Tính đạo hàm bằng hàm diff của symbolic: Nếu S là biểu thức symbolic thì:
diff(S)đạo hàm của S theo biến tự do
diff(S,’v’)đạo hàm của S theo biến v
diff(S,’v’,n)đạo hàm cấp n của S theo v.
Ví dụ: Tính đạo hàm của y = sinx3.
>> syms x% khai bao x la bien kieu symbolic
>> y=sin(x^3);
>> z=diff(y)% dao ham cua y
z =
3*cos(x^3)*x^2% sinh vien kiem tra ket qua
>>pretty(z)% hien thi dang quen thuoc
3 cos(x3) x2
>>ezplot(x,y)% ve y theo x
Hình 3.1 – Vẽ đồ thị hàm symbolic
Tính vi phân bằng hàm int - Nếu S là biểu thức Symbolic thì:
int(S)tích phân không xác định của S theo biến mặc nhiên (muốn biết biến mặc nhiên này ta dùng hàm findsym).
int(S,v)tích phân không xác định của S theo v.
int(S,a,b)tích phân xác định của S trên cận [a,b]
int(S,v,a,b)tích phân xác định của S theo v trên cận [a,b]
Ví dụ: Tính
>>syms x
>>S=2*x^2*(19+12*x^2)/(7*(x^2+1))
>>y=int(S,x,0,1)% tích phân S theo x trên cận [0,1]
>>subs(y)% đổi sang kiểu số
Giải hệ phương trình bằng hàm solve:
>>help solve
>>syms x y
>>[x,y]= solve('x^2*sin(x^2)-3*y=7','x+y=1')
Sau khi thu được nghiệm x và y, sinh viên hãy thay vào 2 phương trình trên và nhận xét kết quả.
Vẽ mặt 3D bằng hàm ezsurf: Ví dụ vẽ mặt
>>syms x y
>>S=y/(1+x^2+y^2)
>>ezsurf(S, [-5 5 –2*pi 2*pi])
![]() |
Hình 3.2 – Vẽ đồ thị 3D cho hàm số symbolic
Simulink 5.0 (Simulation and Link - R13) được MatWorks giới thiệu vào tháng 6 năm 2003. Nó cho phép phân tích, mô hình hóa và mô phỏng các hệ thống động tuyến tính và phi tuyến, liên tục và rời rạc một cách trực quan trong môi trường giao tiếp đồ họa, bằng các thao tác chuột đơn giản. Có thể nói, không tận dụng được Simulink là một thiệt thòi lớn cho người làm công tác mô phỏng!
Khởi động Simulink bằng một trong các cách sau:
nhập: >>simulink
hoặc nhấp chuột vào trên menubar của Matlab
Thư viện simulink hiện ra như hình 3.3:
Trước tiên, sinh viên hãy nhấp chuột vào các thanh cuộn của thư viện để có cái nhìn thân thiện về simulink.
Từ đây, để có thể tạo mô hình bằng simulink, hãy:
![]() |
Hình 3.3 – Cửa sổ chính của thư viện Simulink
![]() |
Hình 3.4 – Môi trường soạn thảo của Simulink
Cửa sổ này (hình 3.4) cho phép ta ‘nhấp - kéo - thả’ vào từng khối chức năng trong thư viện simulink. Ví dụ, đặt vào đây khối ‘Sine Wave’ trong thư viện của (hình 3.5):
Hình 3.5 – Lấy một khối từ thư viện
Sau khi đặt tất cả các khối cần thiết của mô hình, ta nối chúng lại bằng cách ‘nhấp - giữ’ và kéo một đường từ ngõ ra của khối này đến ngõ vào của khối khác rồi thả phím trái chuột, một kết nối sẽ được thiết lập.
Xây dựng mô hình hệ thống xe tải:
![]() |
Hình 3.6 – Mô hình xe tải
cho bởi phương trình:
Trong đó m là khối lượng xe, u là lực tác động của động cơ (ngõ vào của mô hình), b là hệ số ma sát và v là vận tốc đạt được (ngõ ra của mô hình).
Xuất phát điểm của việc xây dựng các mô hình hệ thống từ các phương trình vi phân tương ứng là các khối tích phân (Integrator). Nếu trong phương trình mô tả hệ thống có vi phân bậc n thì ta sẽ đặt vào mô hình n khối tích phân, do quan hệ
![]() |
Từ phương trình hệ thống ta thấy dv/dt (vdot) bằng tích của thành phần (1/m) và thành phần tổng (u-bv), nên ta thêm khối 1/m ngay trước khối tích phân:
![]() |
Bây giờ ta đặt khối tổng với 2 ngõ vào ‘+-‘, ngõ vào ‘+’ sẽ được nối với u, ngõ vào ‘-’ sẽ được nối với thành phần bv để được (u-bv)
***SORRY, THIS MEDIA TYPE IS NOT SUPPORTED.***
Để được thành phần bv ta chỉ cần đặt thêm khối ‘Gain’ với độ lợi b:
***SORRY, THIS MEDIA TYPE IS NOT SUPPORTED.***
Đến đây việc xây dựng mô hình xe tải với ngõ vào u và ngõ ra v coi như hoàn thành. Tuy nhiên, để mô phỏng mô hình này, ta cần đặt thêm khối ‘Step’ vào u và hiển thị v trên khối ‘Scope’
***SORRY, THIS MEDIA TYPE IS NOT SUPPORTED.***
Nhớ rằng m, b và u là các biến cần được gán trị trước khi mô phỏng.
>>m=1000
>>b=50
>>u=500
Thời gian mô phỏng hệ thống tùy thuộc vào thông số ‘Stop time’ trong menu ‘SimulationSimulation paramrters’, giả sử đặt 120 (Hình 3.7).
Để chạy mô phỏng, ta có thể thực hiện bằng 1 trong các cách:
Nhấp đúp vào ‘Scope’ để xem kết quả mô phỏng.
![]() |
Hình 3.7 – Thay đổi thông số mô phỏng
Xây dựng mô hình hệ thống điều khiển vị trí motor DC cho bởi phương trình vi phân sau:
Trong đó:
J = 0.01 Kgm2/s2 là moment quán tín của rotor
b = 0.1 Mms là hệ số ma sát của các bộ phận cơ khí
K = Ke = Kt = 0.01 Nm/A là hằng số sức điện động
R = 10 ohm là điện trở dây quấn
L = 0.5 H là hệ số tự cảm
V là điện áp đặt lên cuộn dây của motor
là vị trí trục quay (ngõ ra của mô hình)
i là dòng điện chạy trong cuộn dây của motor.
Hình 3.8 – Mô hình toán hệ điều khiển vị trí motor DC
Quan sát từng phương trình mô tả hệ thống ta thấy cấu trúc của chúng cũng tương tự như phương trình của câu . Sinh viên lần lượt thực hiện trên từng phương trình để được (hình 3.9):
![]() |
(Hình 3.9)
Kết hợp 2 phương trình:
![]() |
(Hình 3.10)
Đặt vào mô hình khối ‘Step’ để làm tín hiệu tham khảo, khối ‘Scope’ để quan sát đáp ứng. Sinh viên hãy gán trị cho tất cả các thông số của mô hình, thực hiện mô phỏng và quan sát đáp ứng (Hình 3.11).
Hãy thay đổi ngõ vào mô hình bằng khối tạo xung vuông. Mô phỏng, quan sát kết quả và nhận xét.
Sinh viên hãy tính đạo hàm cấp 2 của hàm
Tính tích phân sau và kiểm chứng kết quả bằng symbolic:
![]() |
Hình 3.11 - Mô hình Simulink hoàn chỉnh của hệ điều khiển vị trí motor DC
Xây dựng mô hình hệ thống xe lửa cho bởi phương trình:
![]() |
(Hình 3.12 Photo courtesy: Dr. Howard Blackburn)
Trong đó các thông số tượng trưng như sau:
M1=1 kg là khối lượng toa kéo;
M2=0.5 kg là khối lượng toa khách;
k=1 N/sec là độ cứng lò xo kết nối giữa 2 toa;
F=1 N là lực tác động của đầu máy (ngõ vào mô hình);
=0.002 sec/m là hệ số ma sát lăn;
g = 9.8 m/s^2 là gia tốc trọng trường
x1, x2 vị trí 2 toa (ngõ ra).
![]() |
Hình 3.13 – Mô hình toán của hệ thống xe lửa