You are on page 1of 269

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA


KHOA CƠ KHÍ

PBL 2: MÔ PHỎNG ĐIỀU KHIỂN VÀ


TỰ ĐỘNG HÓA
Giảng viên hướng dẫn: VÕ NHƯ THÀNH

NGÔ THANH NGHỊ

Sinh viên thực hiện: TRẦN ANH QUÂN

PHAN VĂN KHẢI

Lớp: 20CDTCLC2 (20.06)

Đà Nẵng, tháng 9/2022

1
LỜI NÓI ĐẦU
PBL2: Mô phỏng điều khiển và tự động hóa là đồ án liên môn quan
trọng của sinh viên ngành cơ điện tử. Đồ án này giúp cho sinh viên có thể áp
dụng các kiến thức đã được học vào thực tế và có cái nhìn tổng quan hơn về
ngành học của mình. PBL2 là đồ án cơ sở rất quan trọng cho các môn học sau
này của sinh viên.
Trong môn học này chúng em được giao gồm 8 chủ đề khác nhau. Bài
báo cáo này của chúng em trình bày về các vấn đề, các bài toán, cách tính toán
và giải quyết vấn đề.
Do lần đầu làm quen với công việc này, cùng với kiến thức và hiểu biết
còn hạn hẹp cho nên đề tài của chúng em còn nhiều sai sót và hạn chế. Chúng
em mong sự đóng góp và chỉ bảo để đề tài này của bọn em mang tính cải thiện
hơn.
Chúng em xin chân thành cảm ơn các thầy trong bộ môn đã hướng dẫn
chúng em hoàn thành chuyên đề này.

Người soạn
Phan Văn Khải
Trần Anh Quân

2
MỤC LỤC

Nội dung thuyết minh sẽ bao gồm:


Lời nói đầu

PROJECT 1: 6

Task 1- Introduction: Simulink Modeling 6

Task 2- Introduction: Simulink Modeling 17

Task 3- Introduction: Simscape Modeling 27

Task 4 - DC motor speed: Simulink Modeling 31

Task 5 - DC Motor Speed: Simulink Controller Design 37

Task 6 - DC Motor Speed: Simscape Modeling (Set up the controller) 47

Task 7 - DC Motor Speed: PID Controller design 53

Task 8 - DC Motor position: PID Controller Design 59

Task 9 - DC Motor Position: Simulink Controller Design 67

Task 10 - DC Motor Position: Simulink Controller Design 72

PROJECT 2: 83

Task 1 - Cruise Control: System Modeling 83

Task 2 - Cruise Control: System Analysis 85

Task 3 - Cruise Control: PID Controller Design 88

Task 4 - Cruise Control: Simulink Modeling 94

Task 5 - Cruise Control: Simulink Controller Design 99

Task 6: Cruise Control: Simscape Modeling 104

3
Task 7: Suspension: System Modeling 113

Task 8 Suspension: System Analysis 117

Task 9 Suspension: PID Controller Design 120

Task 10 Suspension: Simulink Modeling 126

Task 11 Suspension: Simulink Controller Design 130

Task 12 Suspension: Simscape Modeling 135

Task 13 Ball & Beam: System Modeling. 142

Task 14 Ball & Beam: System Analysis 147

Task 15 Ball & Beam: PID Controller Design 148

Task 16 Ball & Beam: Simulink Modeling 152

Task 17 Ball & Beam: Simulink Controller Design 154

PROJECT 3: 157

Task 1: Inverted Pendulum: System Modeling 157

Task 2: Inverted Pendulum: System Analysis: 166

Task 3: Inverted Pendulum: PID Controller Design 173

Task 4: Inverted Pendulum: State-Space Methods for Controller Design


179

Task 5: Inverted Pendulum: Simulink Modeling 190

Task 6: Inverted Pendulum: Simulink Controller Design 200

Task 7: Inverted Pendulum: Simscape Modeling 203

Task 8: Aircraft Pitch: System Modeling 211

Task 9: Aircraft Pitch: System Analysis 214

4
Task 10: Aircraft Pitch: PID Controller Design 221

Task 11 Aircraft Pitch: Simulink Controller Design 229

Task 12: Aircraft Pitch: Simulink Modeling 237

PROJECT 4: ĐIỀU KHIỂN XILANH 241

PROJECT 5: PHÂN LOẠI SẢN PHẨM 244

PROJECT 6: BÃI ĐỖ XE TỰ ĐỘNG 251

PROJECT 7: HỆ THỐNG LÒ SƯỞI 264

5
Project 1:
Task 1- Introduction: Simulink Modeling
Trong Simulink, rất đơn giản để biểu diễn và sau đó mô phỏng một mô
hình toán học đại diện cho một hệ thống vật lý. Các mô hình được biểu diễn
bằng đồ thị trong Simulink dưới dạng sơ đồ khối. Một loạt các khối có sẵn
cho người dùng trong các thư viện được cung cấp để biểu diễn các hiện tượng
và mô hình khác nhau ở nhiều định dạng. Một trong những lợi thế chính của
việc sử dụng Simulink (và mô phỏng nói chung) để phân tích các hệ thống
động là nó cho phép chúng ta phân tích nhanh phản ứng của các hệ thống phức
tạp có thể khó phân tích một cách nghiêm ngặt. Simulink có thể tính toán gần
đúng bằng số các giải pháp cho các mô hình toán học mà chúng ta không thể
hoặc không muốn, giải "bằng tay". Nói chung, các phương trình toán học đại
diện cho một hệ thống nhất định làm cơ sở cho mô hình Simulink có thể được
suy ra từ các định luật vật lý.
Nội dung cần tìm hiểu:
• Hệ thống xe lửa
• Sơ đồ vật thể tự do và ĐL II Newton
• Xây dựng mô hình Simulink
• Chạy mô hình
1) Hệ thống xe lửa

Hình 1.1 Mô hình tàu hỏa

Trong ví dụ này, chúng ta sẽ xem xét một đoàn tàu đồ chơi bao gồm
một động cơ và một toa. Giả sử rằng đoàn tàu chỉ di chuyển theo một chiều
(dọc theo đường ray), chúng ta muốn áp dụng điều khiển cho đoàn tàu để nó
khởi động và dừng lại một cách trơn tru và để nó có thể theo dõi lệnh tốc độ
không đổi với sai số tối thiểu ở trạng thái ổn định.
Khối lượng của động cơ và ô tô sẽ được biểu thị bằng M1 và M2, tương
ứng. Hơn nữa, động cơ và toa tàu được kết nối thông qua một khớp nối có độ
cứng k. Nói cách khác, khớp nối được mô phỏng như một lò xo với hằng số
6
lò xo k. Lực F thể hiện lực sinh ra giữa các bánh xe của động cơ và đường ray,
đồng thời thể hiện hệ số ma sát lăn.
2) Sơ đồ vật thể tự do và ĐL II Newton
Bước đầu tiên trong việc suy ra các phương trình toán học chi phối một
hệ thống vật lý là vẽ các biểu đồ vật thể tự do đại diện cho hệ thống.

Hình 2.1 Sơ đồ vật thể

Áp dụng định luật II Newton theo phương ngang dựa trên sơ đồ vật thể
tự do ở trên, ta có phương trình cho hệ thống xe lửa.

∑ 𝐹1 = 𝐹 − 𝑘(𝑥1 − 𝑥2 ) − 𝜇𝑀1 𝑔𝑥1̇ = 𝑀1 𝑥1̈

∑ 𝐹2 = 𝑘(𝑥1 − 𝑥2 ) − 𝜇𝑀2 𝑔𝑥2̇ = 𝑀2 𝑥2̈

3) Xây dựng mô hình Simulink

7
Đầu tiên, mở Simulink và mở một cửa sổ mô hình mới. Sau đó kéo hai
block Sum (từ thư viện Math Operations) vào cửa sổ mô hình.

Hình 2.2 Thêm 2 khối Sum

Thêm 2 khối Gain vào mô hình và nối chúng là theo thứ tự với Sum,
tiến hành sửa giá trị Block Parameters khối Gain lần lượt “1/M1” và “1/M2”
như hình.
Đặt tên cho 2 mũi tên tín hiệu là “Sum_F1" và "Sum_F2” cho để rõ
ràng hơn.

8
Hình 2.4. Điều chỉnh giá trị khối gain

Hình 2.3. Thêm 2 khối Gain

Ta có đầu ra của khối Gain sẽ là gia tốc, ta tiến hành tích phân bằng
khối Integrator để có được vận tốc, tích phân lần nữa sẽ có được vị trí, như
vậy ta có mô hình sau:

Hình 2.5. Thêm 4 khối Integrator

9
Thêm 2 khối Scopes để hiển thị tín hiệu đầu ra.

Hình 2.6. Thêm 2 khối Scope

Để thêm các lực tác dụng lên mỗi Mass, cần điều chỉnh các đầu vào trên
mỗi khối Sum để thể hiện số lượng Lực. Vì có tổng ba lực tác dụng Mass 1,
nên nhấp đúp vào khối Sum tương ứng và thay đổi trường List of signs thành
"| +++". Chỉ có 2 lực tác dụng trên Mass 2, do đó chúng ta có thể để nguyên
khối Sum đó.

10
Hình 2.6. Điều chỉnh khối Sum

Sau khi chỉnh sửa lại ta sẽ được như hình sau:

Hình 2.7. Sau khi điều chỉnh khối Sum

11
Lực đầu tiên tác dụng Mass 1 chỉ là lực đầu vào, kéo khối Signal
Generator từ thư viện Sources và kết nối nó với đầu vào trên cùng của khối

Hình 2.8. Thêm khối Signal Generator

Sum tương ứng. Gắn tên tín hiệu này là "F".


Lực tiếp theo tác dụng lên khối lượng 1 là lực cản lăn. Lực này được mô
phỏng như sau:
𝐹𝑟𝑟,1 = 𝜇𝑔𝑀1 𝑥1̇
Tiến hành sửa khối Sum thành |+-+ vì lực đây là lực cản, tạo thêm cổng Gain
cho lực cản với thông số là mu*g*M1.

12
Hình 2.9. Điều chỉnh khối Gain và Sum

Chúng ta cần tạo ra một tín hiệu mà sau đó có thể được nhân với khối
gain để tạo ra lực. Kéo khối Subtract bên dưới

Hình 2.10. Thêm khối Subtract

13
Nối Subtract với 1 khối Gain đại lượng K và tiến hành nối lại với

Hình 2.11. Nối khối Subtract với khối Gian đại lượng K

nhau:

Lực cuối cùng cần mô phỏng là lực cản lăn tác dụng lên khối Mass 2,
tạo 1 khối Gain với đại lượng mu*g*M2 nối đến đầu âm khối sum thứ 2.

14
Nối thêm một scope x1_dot để hiện thị toàn bộ mô phỏng

Hình 2.12. Thêm 1 khối Scope

3) Chạy mô hình
Sau khi đã lưu mô hình lại, ta tiến hành tạo Script file mới để khai báo các
đại lượng vào WorkSpace:

15
Ta tiến hành chỉnh thông số cho Signal generator như hình bên dưới:

Hình 3.1. Điều chỉnh thông số Signal generator

Tiếp theo ta chỉnh thời gian mô phỏng là 1000 ở góc phải giao diện:

Hình 3.2. Điều chỉnh thời


gian mô phỏng là 1000

Bấm nút Run để chạy và click vào x1_dot để hiển thị biểu đồ mô phỏng
Đây là kết quả sau khi ta chạy được và màn hình sẽ hiển thị như hình sau:

Hình 3.2. Kết quả của x1_dot

16
Task 2- Introduction: Simulink Modeling
Nội dung cần tìm hiểu:
• The open-loop plant model
• Implementing a PID controller in Simulink
• Running the closed-loop model
• Extracting a model into MATLAB
• Controller design within Simulink
1) The open-loop plant model
Trong phần Giới thiệu: Trang Mô hình Simulink, Simulink có thể được sử
dụng để mô phỏng một hệ thống vật lý. Tổng quát hơn, Simulink cũng có thể
mô phỏng hệ thống điều khiển hoàn chỉnh, bao gồm cả thuật toán điều khiển
ngoài nhà máy vật lý. Như đã đề cập trước đây, Simulink đặc biệt hữu ích để
tạo ra các giải pháp gần đúng của các mô hình toán học mà có thể rất khó giải
quyết "bằng tay". Ví dụ, hãy xem xét rằng bạn có một nhà máy phi tuyến. Một
cách tiếp cận phổ biến là tạo ra một giá trị gần đúng tuyến tính của nhà máy
và sau đó sử dụng mô hình tuyến tính hóa để thiết kế một bộ điều khiển bằng
các kỹ thuật phân tích. Simulink sau đó có thể được sử dụng để mô phỏng
hiệu suất của bộ điều khiển của bạn khi áp dụng cho mô hình phi tuyến đầy
đủ.
2) Implementing a PID controller in Simulink
Thay đổi đầu vào là In1, 3 khối đầu ra Out1, Ctrl + A chọn Create
Subsystem ta sẽ được như sau:

17
Hình 2.1. Thay đổi đầu vào và đầu ra

Hình 2.2. Gộp các khối

Tiếp theo thêm khối PID controller, kích đúp vào khối PID và cài
Integral (I) là 0, Proportional (P) là 1, Derivative (D) là 0. Thêm khối Sum
và đổi dấu thành “+-”

Hình 2.3. Thêm khối PID

18
Hình 2.4. Điều chỉnh thông số khối PID

Thêm 1 khối Signal Builder. Ta thử vận tốc lên 1 m/s sau đó lùi
xuống 0m/s

Hình 2.5. Thêm khối Signal Builder

Click đúp vào khối Signal Builder, sau đó click chuột phải chọn
Change time range từ Axes cài max time là 300s. Tiếp theo đặt step
up là 10s và step down là 150s bằng cách nhấn vào các đường tương
ứng và kéo đường đó đến vị trí mong muốn như hình:

19
Hình 2.6. Điều chỉnh khối Signal Builder

Thêm 1 Scope thay cho khối Out1 cho vận tốc của tàu.

Hình 2.7. Thêm khối Scope

3) Running the closed-loop model


Tạo m file với thông số sau:
M1 = 1;
M2 = 0.5;
k = 1;
F = 1;
20
mu = 0.02;
g = 9.8;
Thay đổi thời gian mô phỏng thành 300s, nhấn Scope ở x1_dot để

chạy.
Hình 3.1. Kết quả của x1_dot

4) Extracting a model into MATLAB


Đầu vào của hệ thống xe lửa là lực F, nhấn chuột phải vào tín hiệu đại
diện F (đầu ra của khối PID) chọn Linear Analysis Points > Open-loop

Hình 4.1. Thêm các Open loop

21
Input. Kích chuột phải vào tín hiệu “x1_dot” chọn Linear Analysis Points >
Open-loop Output.

Ta có thể trích xuất mô hình bằng cách mở Linear Analysis Tool như
hình sau:

Hình 4.2. Linear Analysis tool

Tiếp theo ta chọn vào và kết quả sẽ hiện ra như sau:

22
Hình 4.3. Step

5) Controller design within Simulink


Vào Analysis → Control design → Control System Designer, sau đó
ấn Add Blocks. Tick vào tickbox dưới Tune.

Hình 5.1. Control System Designer

23
Trước khi điều chỉnh bộ điều khiển, cần xác định các đầu vào và đầu ra
của hệ thống vòng kín mà chúng ta muốn phân tích. Nhấp chuột phải vào tín
hiệu lệnh vận tốc (đầu ra của khối Signal Builder). Chọn Linear Analysis
Points > Input Perturbation. Tiếp theo, nhấp chuột phải vào tín hiệu vận tốc
động cơ tàu ("x1_dot") chọn Linear Analysis Points > Output Measurement.

Hình 5.2. Điều chỉnh mô hình

Chọn OK trong hộp Edit Architecture. Sau đó ta chọn Tuning


Methods→ Root Locus Editor.

Hình 5.3. Root Locus Editor

24
Tiếp theo ta ấn plot, sau đó ấn vào New Plot. Nhấn vào Plot.

Hình 5.4. New Step to Plot

Sau đó nhấn chuột phải vào đồ thị chọn Add Pole or Zero→
Integrator. Tương tự ta thêm số 0 bằng cách Add Pole or Zero→ Real Zero.
Nhấn chuột phải vào đồ thị gốc chọn Edit Compensator để hiển thị
như hình bên. Ta sẽ đặt một Integrator, một Real Zero là -0.15 và sẽ chọn độ
lợi vòng lặp bằng 0.05.

25
Hình 5.5. Compensator editor

Ta có kết quả như sau và ấn Update Blocks

Hình 5.6. Control System Designer

Click vào khối Scope thu được tàu như hình sau:

26
Hình 5.7. Đồ thị Train System

Nhìn chung, phản hồi này đáp ứng các mục tiêu là đưa tàu tăng tốc độ
và trở lại trạng thái êm ái, đồng thời duy trì tối thiểu trạng thái ổn định. Phản
hồi này khớp với kết quả được tạo bằng Control System ở trên vì phân tích đó
và Mô hình Simulink đã sử dụng cùng một mô hình tuyến tính.

Task 3- Introduction: Simscape Modeling

Nội dung cần tìm hiểu:


• Physical setup
• Create the model
• Results
1) Physical Setup
Thêm các khối sau:
• 1 Solver configuration block
• 2. PS-Simulink and Simulink-PS blocks
• 3. Scope connected to PS-Simulink block
27
Hình 1.1. Thêm các khối Converter

2) Create the model


-Tiếp tục thêm các khối sau:
• 2 Mass blocks (đổi tên thành "M1" và "M2")
• 1 Translational Spring block (đổi tên thành "spring")
• 1 Mechanical Translational Reference block
• 2 Translational Damper blocks (đổi tên thành "M1 friction" và "M2
friction")

28
Hình 2.1. Thêm các khối mô phỏng lò xò và bộ giảm chấn

- Tiếp tục thêm các khối sau:


• An Ideal Force Source block (đổi tên thành "Force Source")
• A Signal Generator block (đổi tên thành "Force input")
• A Translational Motion Sensor block
- Ở Signal Generator block, chọn Waveform là "square" với Amplitude
of "-1" và Frequency là "0.001 Hz"

Hình 2.2. Điều chỉnh thông số khối Signal Generator

29
- Điền các đại lượng sau cho từng khối:
(M1) Engine Mass 1 kg
(M2) Car Mass 0.5 kg
(k) Spring Constant 1 N/m
(mu) Friction Coefficient 0.02
(F) Force 1 N
(g) Acceleration due to gravity 9.8 m/s^2z

Hình 2.3. Mô hình sau khi hoàn thành

3) Kết quả
Ta được kết quả sau:

30
Task 4 - DC motor speed: Simulink Modeling

Một cơ cấu chấp hành phổ biến trong hệ thống điều khiển là động cơ DC.
Nó trực tiếp cung cấp chuyển động quay và cùng với bánh xe hoặc trống
và dây cáp có thể cung cấp chuyển động tịnh tiến.
Nội dung cần tìm hiểu:
• Physical setup
• Building the model with Simulink

31
• Building the model with Simscape (Simscape cho phép tạo các mô
hình hệ thống vật lý trong môi trường Simulink.
1) Building the model with Simulink
- Hệ thống này sẽ được mô hình hóa bằng cách tổng hợp các mô-men xoắn
tác dụng lên quán tính rôto và tích phân gia tốc để đưa ra vận tốc. Các định
luật Kirchoff sẽ được áp dụng cho mạch phần ứng. Đầu tiên, Lập mô hình
tích phân của gia tốc quay và tốc độ sự thay đổi của dòng điện phần ứng

- Mở blank model trong Simulink và tiến hành thêm các khối:


• Thêm Integrator block
• Đặt tên đường input "d2/dt2(theta)" và đường output "d/dt(theta)“
• Thêm Integrator block khác ở dưới
• Đặt tên đường input "d/dt(i)" và đường output "i"

Hình 1.1. Vẽ khối tích phân

- Tiếp theo, chúng ta sẽ áp dụng định luật Newton và định luật Kirchoff cho
hệ động cơ

32
- Gia tốc góc bằng 1 / J nhân với tổng của hai số hạng (một dương, một âm).
Tương tự, đạo hàm của dòng điện bằng 1 / L nhân với tổng của ba số hạng
(một dương, hai âm).
- Tiếp tục lập mô hình:
• 2 Gain blocks, mỗi khối nối với 2 Integrator.
• Chỉnh giá trị Gain blocks thành "1/L“, đây là khối đại diện cho điện cảm
• Chỉnh giá trị Gain blocks thành "1/J“, đây là khối đại diện cho quán tính
• Thêm 2 khối Add blocks nối với 2 Gain, chỉnh sửa 2 khối add với giá trị
lần lượt "-+-“ và "+-“

Hình 1.2. Vẽ khối động cơ

33
- Để lưu tất cả thành phần này thành 1 hệ thống con, Ctrl A và kích chuột
phải Create Subsystem from Selection

Hình 1.3. Subsystem DC motor

2) Building the model with Simscape


- Phần này sẽ tìm hiểu cách khác để mô hình DC motor bằng các khối mô
hình vật lý (Simscape).
- Tiến hành mở Simulink và thêm các khối sau:
• Resistor, Inductor và Rotational Electromechanical Converter blocks từ
Simscape/Foundation Library/Electrical/Electrical Elements.
• Rotational Damper (Bộ giảm chấn xoay) và Inertia blocks
• 4 Connection Port blocks từ thư viện Simscape/Utilities, Nhấp đúp vào
khối Connection Port để đặt vị trí cổng 1 và 2 là Left và vị trí của cổng 3 và
4 là Right.

34
Hình 2.1. Các khối sau khi được sắp xếp

- Tiến hành gán biến cho từng khối thành phần, click đúp vào từng thành
phần và gán biến sau :
• Resistance = R [Ohm]
• Inductance = L [H]
• Inertia = J [kg*m^2]
• Constant of Proportionality = K [V/(rad/s)]
• Damping coefficient = b [N*m/(rad/s)]
- Dùng file m để khai báo các biến vào workspace:

- Tiến hành Ctrl A và chuột phải ở mô hình, chọn “Create Subsystem from
Selection” để nhóm DC Motor thành hệ thống con:

35
Hình 2.2. Hệ thống DC motor

- Để mô phỏng phản ứng của hệ thống này, cần thêm các khối cảm biến vào
mô hình để mô phỏng phép đo các thông số vật lý khác nhau và nguồn điện
áp để cung cấp cho động cơ.
- Thêm vào các khối sau:
• Current Sensor block
• Controlled Voltage Source block
• 3 PS-Simulink Converter blocks, 1 Simulink-PS block và 1 Solver
Configuration block
• Electrical Reference block
• Ideal Rotational Motion Sensor block, sửa giá trị Initial angle là “0”
• Mechanical Rotational Reference block
• 3 Out1 blocks và 1 In1 block

36
Hình 2.3. Thêm các cảm biến

- Ta nhấn Ctrl A và chuột phải ở mô hình, chọn “Create Subsystem from


Selection” để nhóm Motor Model thành hệ thống con:

Hình 2.4. Motor Model Simscape

Task 5 - DC Motor Speed: Simulink Controller Design


Nội dung cần tìm hiểu:
37
• Extracting a linear model into MATLAB
• Open-loop response
• Closed-loop response with lag compensator
• Closed-loop response with lead compensator
Từ trang Tốc độ Động cơ DC: Mô hình Simulink, chúng tôi đã tạo hai
kiểu động cơ DC khác nhau trong Simulink. Sử dụng những mô hình
trong Simulink để mô phỏng phản ứng của hệ thống và thiết kế các cách
tiếp cận khác nhau để kiểm soát.
1) Extracting a linear model into MATLAB
- Chúng ta tiến hành sử dụng lại Dc Motor Model ở bài DC Motor Speed:
Simulink Modeling

- Chạy lại Script file:

38
- Chuột phải vào đường tín hiệu đầu vào của mô hình, chọn Linear Analysis
Points > Open-loop Input
- Chuột phải vào đường tín hiệu đầu ra của mô hình, chọn Linear Analysis
Points > Open-loop Output
2) Open-loop response

Hình 2.1. Open-loop

- Để thực hiện việc khai thác, chọn Analysis > Control Design > Linear
Analysis, để mặc định và chọn Step như hình:

39
Hình 2.2. Linear Analysis Tool

- Ta được hình sau :

40
Hình 2.3. Step Response

- Vào Model Configuration Parameters -> Simulation menu -> Chỉnh


“Stop Time” thành “3s”
- Xoá khối In1 and Out1.
- Thêm khoá Step, chỉnh Step time là “0”
- Thêm 1 Scope để xem Speed Output

41
Hình 2.4. Open-loop response

- Bấm Ctrl T để chạy và click vào Scope để hiển thị:

Hình 2.5. Scope

3) Closed-loop response with lag compensator


- Trong DC Motor Speed, có 1 bộ bù độ trễ được thiết kế với hàm truyền
sau:

42
- Để thêm hàm truyền, thêm khối Transfer Fcn với thông số Numerator
coefficients là "[44 44]“ và Denominator coefficients là "[1 0.01]".
- Thêm khối Sum với List of signs là "|+-" .

Hình 3.1. Closed-loop response with lag compensator

- Ctrl T để và click đúp Scope để bắt đầu:

Hình 3.2. Scope-lag compensator

4) Closed-loop response with lead compensator:


- Sự khác biệt trong đáp ứng sẽ đến ở tần số giao nhau có độ lợi lớn hơn
được cung cấp bởi bộ bù chì sẽ giúp hệ thống phản hồi nhanh hơn so với với
bộ bù độ trễ. Bộ bù chì có công thức sau:
43
- Tiếp tục làm việc với mô hình câu C:
• Ngắt kết nối Step và Scope.
• Copy 3 khối DC Motor, Transfer Fcn và Sum (Chỉnh thông số Transfer FCN:
Numerator coefficients thành "[160000 5.6e6]" và Denominator
coefficients là "[1 1035]".)
- Thêm 1 khối Mux, và kết nối lại như sau:

Hình 4.1. Closed-loop response with lead compensator

- Tiến hành chạy m file và Ctrl T, click đúp vào khối Scope để hiển thị:

44
Hình 4.2. Scope-lead compensator

5) So sánh mức độ kiểm soát của bộ bù trễ và bộ bù dẫn.


- Thêm 2 khối “To Workspace” và điều chỉnh như hình vẽ (ulag tương tự
ulead).
-Ta được sơ đồ mới:

Hình 5.1. Sơ đồ mới

45
Hình 5.2. Điều chỉnh khối ulag

- Nhập code như sau và ta có kết quả:


subplot(2,1,1)
plot(tout,ulag);
xlabel('time (seconds)')
ylabel('control effort (volts)')
title('Control Effort Under Lag Compensation')
subplot(2,1,2)
plot(tout,ulead);
xlabel('time (seconds)')
ylabel('control effort (volts)')
46
title('Control Effort Under Lead Compensation')

Hình 5.3. Biểu đồ mô phỏng

Task 6 - DC Motor Speed: Simscape Modeling (Set up the


controller)
Nội dung cần tìm hiểu:
• Physical setup
• Create the motor model
• Create a subsystem
• Set up the controller: lag compensation
• Set up controller: lead compensation
• Lead compensation vs. lag compensation
47
1) Physical setup:
- Như đã được tìm hiểu ở bài 6 và 7, ở bài 8 chúng ta sẽ xây dựng mô hình
DC Motor 1 cách ngắn gọn nhất như sau:
- Thêm các khối sau:
• DC Motor block
• Current Sensor block
• Controlled Voltage Source block
• Electrical Reference block
• Ideal Rotational Motion Sensor block
• Mechanical Rotational Reference block
• Step
- Ta tiến hành sửa các thông số như hình sau :

Hình 1.1. Chỉnh sửa các thông số

48
2) Create the motor model
- Ta tiếp tuc thêm các khối và cuối cùng chúng ta được như hình sau :

Hình 2.1. Simscape DC Motor

- Tiến hành bấm Run và click vào khối Scope ở đầu ra Speed

Hình 2.2. Biểu đồ Speed

3) Create a subsystem
49
- Tiến hành Ctrl A + Chuột phải, giữ nút Shift, bỏ chọn Step block và Scope
block của Speed, chuột phải chọn Create a subsystem.

Hình 3.1. Motor model subsystem

- Ta tiến hành thêm các khối


- Thêm Subtract block
- Thêm Transfer Fcn block, click đúp điều chỉnh Numerator coefficients
thành "[44 44]" , Denominator coefficients thành "[1 0.01]“, đổi tên thành
"Lag Compensator“.
- Thêm khối Scope, kết nối lại các khối như hình sau:

Hình 3.2. Bộ điều khiển bù trễ

- Tiến hành bấm Run và click vào khối Scope ở đầu ra :

50
Hình 3.3. Voltage-lag

- Từ mô hình lag compensation, ta tiếp tục thực hiện tạo ra lead


compensation:
- Copy Motor Model Subsystem, Subtract, Lag Compensator
- Tiến hành chỉnh sửa Lag Compensator1: Numerator coefficients thành
"[160000 - 5.6e6]“, Denominator coefficients thành "[1 1035]“
- Điều chỉnh lại các kết nối, ta có:

51
Hình 3.4. Bộ điều khiển bù dẫn

- Tiến hành bấm run và click vào khối Scope ở đầu ra:

Hình 3.5. Voltage, lag, lead.

- Ưu điểm của bộ bù trễ trong trường hợp này là do phản hồi chậm hơn, nó
đòi hỏi ít mức năng lượng hơn bộ bù dẫn. Ít nỗ lực kiểm soát hơn có nghĩa là
52
tiêu thụ ít điện năng hơn và các thành phần khác có thể có kích thước nhỏ
hơn vì chúng không cần nhiều năng lượng hoặc chịu được điện áp và dòng
điện cao hơn yêu cầu của dây dẫn máy bù chì.

Task 7 - DC Motor Speed: PID Controller design


Nội dung cần tìm hiểu:
• Proportional control
• Pl control
• Tuning the gains
- Từ phương trình động lực học trong miền laplace và hàm chuyền vòng hở
của động cơ điện một chiều như sau:

- Cấu trúc hệ điều khiển có dạng như hình dưới đây.

Sơ đồ khối.

1- Thiết kế bộ điều khiển PID


- Tạo file m và nhập dữ liệu sau

53
- Chức năng truyền cho bộ điều khiển PID là :

- Tiếp theo ta cho C (s) = 100. Để xác định hàm truyền vòng kín, chúng ta sử
dụng lệnh phản hồi. Thêm mã sau vào cuối tệp m :

- Chạy chương trình ta được :

Hình 1.1. Proportional control

54
- Control Design > Linear Analysis from under the Analysis menu at the top
of the model window:

Hình 1.2. Linear Analysis.

Chọn Edit Compensator. Sau đó, bạn có thể thay đổi mức tăng điều
- Chọn - -
khiển trong trình chỉnh sửa bộ bù và xem hiệu ứng.

55
Hình 1.3. Compensator editor

-Tạo file m và nhập giá trị sau :

- Khi chạy Run ta sẽ được như hình dưới :

56
Hình 1.4. PID control with small Ki and Kd

- Ta tiếp tục tao file m và chạy chương trình:

- Kết quả hiển thị:

57
Hình 1.5. PID control with large Ki and small Kd

- Tiếp túc thêm đoạn code sau:

58
- Kết quả khi chạy được như sau:

Hình 1.6. PID control with large Ki and large Kd

Task 8 - DC Motor position: PID Controller Design


Nội dung cần tìm hiểu:
• Proportional control
59
• Pl control
• PID control
Từ bài toán chính, hàm truyền vòng hở của Động cơ một chiều được đưa ra
như sau.

Ta xây dựng sơ đồ khối sau

1) Điều khiển tỉ lệ
- Nhập đoạn code sau vào matlab, đặt tên là file 8.m:

60
- Thêm code này vào file 8.m và chạy chương trình:

- Kết quả khi chạy chương trình

Hình 1.1. Hàm truyền tỉ lệ

- Sau đí thêm đoạn code này và chạy chương trình

- Kết quả khi chạy chương trình:

61
Hình 1.2. Response to a Step Reference with Different Values of Kp.

Chúng ta cũng hãy xem xét phản ứng của hệ thống đối với sự xáo trộn
bước. Trong trường hợp này, chúng ta sẽ giả định một tham chiếu bằng 0
và xem xét cách hệ thống tự ứng phó với sự xáo trộn
- Thay thế đoạn code sau:

- Kết quả sau khi chạy chương trình:

62
Hình 1.3. Response to a Step Reference

2) Điều khiển PID


- Thay đổi 8.m thành đoạn code sau:

- Kết quả sau khi chạy chương trình:

63
Hình 2.1. Kp =200

- Thay đổi các lệnh sau trong tệp 8.m và chạy lại chương trình:

- Kết quả sau khi chạy chương trình trên:

- Thêm Hình 2.2.


Hình 2.2. Disturbance
Disturbance with
with Kp
Kp =21.
=21 một
biến phái sinh
64
vào bộ điều khiển có nghĩa là bây giờ chúng ta có tất cả ba biến của bộ điều
khiển PID:

- Ta có kết quả sau:

Hình 2.3. Bộ điều khiển PID 3 biến

- Thay đổi các lệnh sau trong tệp 8.m và chạy lại chương trình:

65
- Kết quả sau khi chạy chương trình trên:

- Dùng lệnh stepinfo để đưa ra bên dưới Command Window

- Kết quả:

66
Task 9 - DC Motor Position: Simulink Controller Design
Nội dung cần tìm hiểu:
• Building the model with Simulink
• Building the model with Simscape
• Building the model through its LTI representation
1) Building the model with Simulink:
-Hệ thống này sẽ được mô hình hóa bằng cách tổng các mômen tác
dụng lên quán tính của rôto và tích hợp gia tốc góc của rôto để cho vận tốc,
và tích phân vận tốc để có được vị trí.

Mở blank model trong Simulink và tiến hành thêm các khối:


• Thêm Integrator block
• Đặt tên đường input "d2/dt2(theta)" và đường output "d/dt(theta)“
• Thêm Integrator block khác ở dưới
• Đặt tên đường input "d/dt(i)" và đường output "i".
• Gia tốc góc bằng 1 / J nhân với tổng của hai số hạng (một dương, một
âm).
Tương tự, đạo hàm của dòng điện bằng 1 / L nhân với tổng của ba số hạng
(một dương, hai âm).
• 2 Gain blocks, mỗi khối nối với 2 Integrator.
• Chỉnh giá trị Gain blocks thành "1/L“, đây là khối đại diện cho điện
cảm
67
• Chỉnh giá trị Gain blocks thành "1/J“, đây là khối đại diện cho quán
tính
• Thêm 2 khối Add blocks nối với 2 Gain, chỉnh sửa 2 khối add với giá
trị lần lượt "-+-“ và "+-“
• Thêm Gain block ở dưới "Inertia" block, đổi giá trị "b" và đổi tên
"Damping".
• Thêm khối Gain K thể hiện cho hằng số motor, đổi tên thành “Kt”
• Chỉnh giá trị Gain blocks thành "1/J“, đây là khối đại diện cho quán
tính
• Thêm 2 khối Add blocks nối với 2 Gain, chỉnh sửa 2 khối add với giá
trị lần lượt "-+-“ và "+-“
• Thêm Gain block ở dưới “Inductance" block, đổi giá trị “R" và đổi tên
“Resistance“ (Điện trở).
• Thêm Gain block, đổi giá trị “K" và đổi tên “Ke” (Suất điện động
motor).
• Thêm In1 và Out1 trong Simulink/Ports & Subsystems library và đặt
tên là "Voltage" và “posison".
-Kết nối các thành phần lại như hình:

Hình 1.1. Motor Pos

Để lưu tất cả thành phần này thành 1 hệ thống con, Ctrl A và kích
chuột phải Create Subsystem from Selection

68
Hình 1.2. Dc motor subsystem

2) Building the model with Simscape:


Trong phần này, chúng tôi hướng dẫn cách xây dựng mô hình DC Motor
bằng cách sử dụng các khối mô hình vật lý của phần mở rộng Simscape cho
Simulink. Các khối trong thư viện Simscape đại diện cho các thành phần vật
lý thực tế; do đó, các mô hình đa miền phức tạp có thể được xây dựng mà
không cần phải xây dựng các phương trình toán học từ các nguyên lý vật lý
như đã được thực hiện ở trên bằng cách áp dụng các định luật Newton và
Kirchoff. Mở Simscape và thêm các khối sau:
• DC Motor từ Simscape/Electronics/Actuators & Drivers/Rotational
Actuators.
• Current Sensor từ Simscape/Foundation Library/Electrical/Electrical
Sensors.
• Electrical Reference từ Simscape/Foundation
Library/Electrical/Electrical Elements.
• Ideal Rotational Motion Sensor từ Simscape/Foundation Library /
Mechanical / Mechanical Sensors.
• Mechanical Rotational Reference từ Simscape/Foundation
Library/Mechanical / Rotational Elements.
• 3 Out1 và 1 In1 từ Simulink/Ports & Subsystems library.
Gắn đơn vị cho từng khối thành phần:

69
Kết nối các thành phần ta được:

Hình 2.1. Motor Pos Simscape

Nhập đoạn code sau vào command window của Matlab:


R = 4;
L = 2.75E-6;
K = 0.0274;
J = 3.2284E-6;
b = 3.5077E-6;

70
Tạo hệ thống con như hình dưới:

Hình 2.2. Motor Pos Simscape subsystem

3) Building the model through its LTI representation


Nhập đoạn code sau vào command window của matlab:
A = [0 1 0
0 -b/J K/J
0 -K/L -R/L];
B = [0 ; 0 ; 1/L];
C = [1 0 0];
D = 0;
- Sử dụng khối LTI System và thay đổi thông số LTI system variable là
“ss(A,B,C,D)”
- Thêm khối in và out

Hình 3.1. Motor pos LTI

71
Task 10 - DC Motor Position: Simulink Controller Design
Sử dụng mô hình Motor Pos ở Task 9 trong Simulink để mô phỏng và
thiết kế các cách tiếp cận khác nhau để kiểm soát. Cụ thể, chúng ta sẽ tìm
hiểu thiết kế của hệ thống điều khiển kỹ thuật số.
1) Phản hồi vòng lặp mở:
Sử dụng Motor Pos được lưu dưới dạng hệ thống con, thay thế cổng In và
cổng Out bằng khối Step và Scope, đặt thông số Step time là “0”, ta được
hình sau:

Hình 1.1. Motor pos subsystem

Chọn Model Configuration Parameters từ Simulation menu và điều chỉnh


như hình dưới:

72
Hình 1.2. Configuration Parameters

Nhập đoạn code sau vào command window của Matlab:


J = 3.2284E-6;
b = 3.5077E-6;
K = 0.0274;
R = 4;
L = 2.75E-6;
Chạy mô phỏng (ấn tổ hợp phím Ctrl+T hoặc nút Run ở simulation menu), ta
có kết quả:

73
Hình 1.3. Mô phỏng Motor Pos

Đầu ra sau đây không ổn định và rõ ràng là không đáp ứng yêu cầu thiết kế.
2) Trích xuất một mô hình được lấy mẫu tuyến tính vào MATLAB:
Nhấp chuột phải vào tín hiệu đại diện cho đầu vào chọn Linear Analysis
Points > Open-loop Input. Tương tự, nhấp chuột phải vào tín hiệu đại diện
cho đầu ra Tốc độ và chọn Linear Analysis Points > Open-loop Output. Ta
được kết quả như hình:

Hình 2.1. Subsystem open-loop

Để thực hiện việc trích xuất, hãy chọn từ các menu ở đầu cửa sổ mô hình
Analysis > Control Design > Linear Analysis
74
- Từ cửa sổ Linear Analysis Tool, click vào nút More Options, từ ô kết quả,
thay đổi Sample time thành “0.001”, phương pháp chuyển đổi tỷ lệ rate
conversion method vẫn là mặc định Zero-Order Hold

Hình 2.2. More options

- Trong của sổ Linear Analysis Tool, điểm hoạt động Operating Point được
tuyến tính hóa có thể vẫn là mặc định, Model Initial Condition. Để thực hiện
tuyến tính hóa / tùy ý hóa, tiếp theo hãy nhấp vào nút Step, kết quả của sự
tuyến tính hóa / tùy biến này là đối tượng linsys1 hiện xuất hiện trong Linear
Analysis Workspace. Mô hình này có thể được xuất bằng cách kéo đối tượng
vào MATLAB Workspace.

Hình 2.3. Step

75
Hình 2.4. Step plot 1

Đối tượng này sau đó có thể được sử dụng trong MATLAB theo cách tương
tự như một đối tượng được tạo trực tiếp từ dòng lệnh MATLAB.
Cụ thể, nhập lệnh zpk(linsys1) trong cửa sổ lệnh MATLAB chứng tỏ rằng
mô hình kết quả có dạng sau:

76
Để xác minh thêm tính hợp lệ của việc trích xuất mô hình, chúng tôi sẽ tạo
phản hồi bước vòng mở của hàm truyền thời gian rời rạc trong MATLAB.
Nhập các lệnh sau tại dấu nhắc của command window trong matlab. Bạn sẽ
thấy biểu đồ sau phù hợp với kết quả đầu ra từ mô hình Simulink liên tục được
đánh giá ở trên.

77
Hình 2.5. Kết quả trả về

3) Thực hiện kiểm soát kỹ thuật số trong Simulink


Một bộ điều khiển kỹ thuật số được thiết kế với hàm truyền sau:

Sử dụng mô hình Motor Pos subsystem (hình 10.1) và thêm các khối sau:
- Hai khối Zero Order Hold từ Simulink/Discrete library, điều chỉnh Sample
time về “0.001”
- Khối Discrete Zero Pole từ Simulink/Discrete library, đổi tên thành
“controller” và chỉnh thông số như hình sau:

78
Hình 3.1. Controller

- Khối Sum từ Simulink/Math Operations library, điều chỉnh thành |+-


-Ta được mô hình sau:

Hình 3.2. Motor Pos cl

- Trước khi chạy mô phỏng, mở Model Configuration Parameters… từ


Simulation menu và chỉnh Stop time về “0.08” và nhập đoạn code sau vào
command window của Matlab:
J = 3.2284E-6;
b = 3.5077E-6;
K = 0.0274;
R = 4;
79
L = 2.75E-6;
- Chạy mô phỏng và ta được kết quả sau:

Hình 3.2. Kết quả

-Từ hình trên cho thấy độ vọt lố nhỏ hơn 16% và thời gian lắng nhỏ hơn 0,04
giây theo yêu cầu. Điều này phù hợp với phân tích được sử dụng trong việc
thiết kế bộ điều khiển kỹ thuật số. Tuy nhiên, chúng tôi chưa đánh giá phản
ứng của hệ thống với sự xáo trộn hiện tại. Có thể thêm nhiễu bước theo cách
tương tự như cách thêm tham chiếu bước như thể hiện trong hình sau. Tính
tổng nhiễu giữa bộ điều khiển và nhà máy theo khối Zero Order Hold vì tín
hiệu nhiễu là liên tục.

Hình 3.3. Disturbance

Cài Step time của khối Disturbance là “0.03” và chạy lại , ta được kết quả
sau:
80
Hình 3.4. Kết quả

Từ việc kiểm tra ở trên, bạn có thể thấy rằng có một sự va chạm nhẹ bắt đầu
từ 0,03 giây do nhiễu động, nhưng hệ thống có thể từ chối hiệu ứng của nó và
lỗi trạng thái ổn định vẫn về 0 như yêu cầu.
4) Chuyển đổi mô hình thời gian liên tục thành thời gian rời rạc
trong Simulink
Trong phần này, chúng tôi sẽ tạo ra một mô hình thời gian rời rạc của mô hình
mà không sử dụng các khối Zero Order Hold. Cách tiếp cận này cung cấp một
loạt các kỹ thuật tùy biến rộng hơn có thể đạt được thông qua các khối
Simulink, được giới hạn ở Zero Order và First Order Hold. Điều này đặc biệt
hữu ích trong việc tạo ra một bộ điều khiển kỹ thuật số từ một thiết kế liên
tục.
- Nhớ lại rằng khối Hệ thống LTI nhập một mô hình từ không gian làm việc
MATLAB. Do đó, bạn cần nhập các lệnh sau:
A = [0 1 0
0 -b/J K/J
0 -K/L -R/L];
B = [0 ; 0 ; 1/L];
C = [1 0 0];
D = 0;
81
Hình 4.1. Motor Pos LTI

Để tùy chỉnh mô hình này:


- Loại bỏ các cổng In1 và Out1.
- Nhấp vào Analysis > Control Design > Model Discretizer và khối Hệ
thống LTI sẽ chuyển sang màu đỏ.
- Nhập Thời gian lấy mẫu là 0,001 và để phương thức Chuyển đổi là Zero-
order hold.. Sau đó, chọn Discretize các khối đã chọn từ menu Discretize

Hình 4.2. Motor Pos LTI cl

Chạy mô phỏng và ta được kết quả sau:

82
Hình 4.3. Kết quả LTIcl

Project 2:
Task 1 - Cruise Control: System Modeling
Nội dung:
• Thiết lập vật lý
• Hệ phương trình
• Hệ thống tham số toán học
• Mô hình không gian trạng thái
• Chuyển mô hình chức năng
1. Thiết lập vật lý

83
Kiểm soát hành trình tự động là một ví dụ tuyệt vời về hệ thống kiểm soát
phản hồi được tìm thấy trong nhiều phương tiện hiện đại. Mục đích của hệ
thống điều khiển hành trình là duy trì tốc độ xe không đổi bất chấp các tác
động bên ngoài, chẳng hạn như thay đổi hướng gió hoặc cấp đường. Điều này
được thực hiện bằng cách đo tốc độ xe, so sánh nó với tốc độ mong muốn
hoặc tốc độ tham chiếu và tự động điều chỉnh ga theo luật điều khiển.

2. Hệ phương trình
Với những giả định này, chúng ta chỉ còn lại một hệ thống giảm chấn khối
lượng bậc nhất. Tổng hợp các lực theo phương x và áp dụng định luật 2
Newton, chúng ta đi đến phương trình hệ sau:
𝑚𝑣̇ + 𝑏𝑣 = 𝑢
Vì chúng ta quan tâm đến việc kiểm soát tốc độ của xe, phương trình đầu ra
được chọn như sau:
𝑦=𝑣
3. Mô hình không gian trạng thái
Nhập mô hình không gian trạng thái này vào MATLAB bằng các lệnh sau:

84
4. Chuyển mô hình chức năng
Nhập mô hình hàm truyền vào MATLAB bằng các lệnh sau:

Task 2 - Cruise Control: System Analysis


Nội dung:
• Thông số kỹ thuật hiệu suất
• Phản hồi bước trong vòng lặp mở
• Các cực / số không vòng hở
• Biểu đồ Bode vòng mở
1. Mô hình thông số và các thông số
Các tham số được sử dụng trong ví dụ này như sau:
(m) khối lượng xe là 1000kg
(b) Hệ số giảm chấn là 50Ns/m
(u) Lực điều khiển danh nghĩa 500N
2. Thông số kỹ thuật hiệu suất
Khi động cơ tạo một lực 500N, ô tô sẽ đạt vận tốc tối đa 10 m / s (22 dặm /
giờ), xem phần phản ứng bước vòng hở dưới đây. Một ô tô có thể tăng tốc

85
đến vận tốc đó trong thời gian ít hơn 5 giây. Trong ứng dụng này, 10% độ
vọt lố và 2% sai số trạng thái ổn định trên vận tốc là đủ.
Ghi nhớ những điều trên, các tiêu chí thiết kế sau đã được đề xuất cho vấn
đề này:
• Thời gian tăng <5%
• Vượt quá <10%
• Lỗi trạng thái ổn định <2%

3. Phản hồi bước trong vòng lặp mở


Các vòng hở phản ứng của hệ thống, mà không cần bất kỳ điều khiển phản
hồi, để một lực lượng đầu vào bước của 500 Newtons được mô phỏng trong
MATLAB như sau:

Hình 3.1. Phản hồi bước

86
Ta thấy rằng hệ thống vòng hở không biểu hiện độ vọt quá hoặc dao động (đặc
trưng của hệ thống bậc nhất) và đạt được tốc độ ổn định mong muốn là 10
m/s. Tuy nhiên, thời gian tăng quá chậm (gần 60s). Do đó, chúng ta cần thiết
kế một bộ điều khiển phản hồi giúp tăng tốc độ phản hồi một cách đáng kể mà
không ảnh hưởng đến các chỉ số hiệu suất động khác.
Hệ thống điều khiển hành trình có một cực duy nhất tại s = -b / m mà chúng
ta có thể thấy được vẽ trên mặt phẳng s bằng cách sử dụng các lệnh MATLAB
sau:

Hình 3.2. Pole-Zero Map

87
Tần số vòng mở của hệ thống được tìm thấy bằng cách sử dụng lệnh
MATLAB sau:

Hình 3.3. Biểu đồ Bode

Task 3 - Cruise Control: PID Controller Design


Nội dung:
• Mô hình hệ thống và các thông số
• Thông số kỹ thuật hiệu suất
• Tổng quan về PID
• Kiểm soát tỷ lệ
• Kiểm soát PI
• Kiểm soát PID
1. Mô hình hệ thống và các thông số
Mô hình chức năng chuyển giao cho vấn đề kiểm soát hành trình được đưa
ra dưới đây :

88
𝑉(𝑠) 1 𝑚/𝑠
𝑃(𝑠) = = [ ]
𝑈(𝑠) 𝑚𝑠 + 𝑏 𝑁
Với các thông số được sử dụng như sau:
(m) khối lượng xe 1000 kg
(b) hệ số giảm chấn 50 Ns/m
(r) tốc độ tham chiếu 10 m/s
2. Thông số kỹ thuật hiệu suất
Rise time <5s
Overshoot <10%
Steady-state error <2%
3. Tổng quan về PID
Ta có sơ đồ của một hệ thống phản hồi thống nhất như sau:

Hình 3.1. Sơ đồ

Chức năng của bộ điều khiển PID là:


𝐾𝑖 𝐾𝑑 𝑠 2 + 𝐾𝑝 𝑠 + 𝐾𝑖
𝐶(𝑠) = 𝐾𝑝 + + 𝐾𝑑 𝑠 =
𝑠 𝑠
Chúng ta có thể xác định bộ điều khiển PID trong MATLAB bằng cách sử
dụng hàm truyền trực tiếp như sau:

89
Ngoài ra chúng ta còn có thể sử dụng đối tượng bộ điều khiển PID của
MATLAB:

4. Kiểm soát tỉ lệ
Đầu tiên chúng ta phải tìm một hàm truyền vòng kín có thêm điều khiển tỷ
lệ (𝐶 = 𝐾𝑝 )
Bằng cách giảm sơ đồ khối phản hồi thống nhất có tỉ lệ như sau:
𝑌(𝑠) 𝑃(𝑠)𝐶(𝑠) 𝐾𝑝
𝑇(𝑠) = = =
𝑅(𝑠) 1 + 𝑃(𝑠)𝐶(𝑠) 𝑚𝑠 + 𝑏 + 𝐾𝑝
Tiếp theo cần tạo file m và nhập các lệnh sau :

90
Hình 4.1. Phản hồi bước

91
Thay đổi m-file hiện có sao cho 𝐾𝑝 = 5000 và chạy lại nó trong cửa sổ lệnh
MATLAB.

Hình 4.2. Phản hồi bước

5. Kiểm soát PID


Ta có chức năng chuyển vòng kín của hệ thống điều khiển hành trình này
với bộ điều khiển PI
(𝐶 = 𝐾𝑝 + 𝐾𝑖 /𝑠):
92
𝑌(𝑠) 𝑃(𝑠)𝐶(𝑠) 𝐾𝑝 𝑠 + 𝐾𝑖
𝑇(𝑠) = = =
𝑅(𝑠) 1 + 𝑃(𝑠)𝐶(𝑠) 𝑚𝑠 2 + (𝑏 + 𝐾𝑝 )𝑠 + 𝐾𝑖

Tiếp theo chúng ta thay đổi m-file như sau:

Hình 5.1. Phản hồi bước

93
Chúng ta thay đổi tỷ lệ của 𝐾𝑏 = 800 và 𝐾𝑖 = 40 để có được phản hồi mong
muốn.

Hình 5.2. Phản hồi bước

Task 4 - Cruise Control: Simulink Modeling


Nội dung
• Thiết lập vật lý và phương trình hệ thống
94
• Xây dựng mô hình
• Phản hồi vòng lặp mở
1. Thiết lập vật lý và phương trình hệ thống
Mô hình của hệ thống kiểm soát hành trình tương đối đơn giản. Nếu giả định
rằng lực cản lăn và lực cản của không khí tỷ lệ thuận với tốc độ của ô tô, thì
vấn đề được quy về khối lượng đơn giản và hệ thống giảm chấn như hình bên
dưới

Sử dụng định luật thứ 2 của Newton, phương trình chính của hệ thống này
trở thành:
𝑚𝑣̇ = 𝑢 − 𝑏𝑣
Trong đó 𝑢 là lực được tạo ra giữa giao diện đường/lốp xe và có thể được điều
khiển trực tiếp. Đối với ví dụ này, hãy giả sử rằng:
𝑁𝑠
𝑚 = 1000 𝑘𝑔; 𝑏 = 50 ; 𝑢 = 500 𝑁
𝑚
2. Xây dựng mô hình
Hệ thống này sẽ được mô hình hóa bằng cách tổng hợp các lực tác dụng lên
khối lượng và tích phân gia tốc để cho ra vận tốc. Đầu tiên, chúng ta sẽ lập
mô hình tích phân của gia tốc:
𝑑𝑣
∫ 𝑑𝑡 = 𝑣
𝑑𝑡

95
Chèn một khối Integrator (từ thư viện Continuous) và vẽ các đường dẫn từ
đầu vào và đầu ra

Hình 2.1. Chèn khối Integrator

Vì gia tốc (dv/dt) bằng tổng lực chia cho khối lượng, nên chúng ta sẽ chia tín
hiệu đến cho khối lượng.
• Chèn một khối Gain (từ thư viện Math Operations) được kết nối với
đầu vào của khối Integrator và vẽ một đường dẫn đến đầu vào của khối
Gain.
• Chỉnh sửa khối Gain bằng cách nhấp đúp vào nó và thay đổi giá trị của
nó thành "1/m".
• Thay đổi nhãn của khối Gain thành "inertia"

Hình 2.2. Chèn khối Gain

Bây giờ, chúng ta sẽ cộng các lực được biểu diễn trong phương trình (1).
Đầu tiên, chúng ta sẽ thêm vào lực giảm chấn.
• Gắn khối Sum (từ thư viện Math Operations) vào đường dẫn đến khối
inertia Gain.
96
• Thay đổi các dấu của khối Sum thành "+-".
• Chèn một khối Gain bên dưới khối Inertia
• Đặt giá trị của khối thành "b" và đổi tên khối này thành "damping".
• Nhấn vào một đường (giữ Ctrl trong khi vẽ) đầu ra của khối Integrator
và kết nối nó với đầu vào của khối damping Gain.
• Vẽ một đường thẳng từ đầu ra khối damping Gain đến đầu vào âm của
khối Sum.
Lực thứ hai tác dụng lên khối lượng là đầu vào điều khiển, u. Chúng ta sẽ
áp dụng một bước đầu vào.

Hình 2.3.

• Chèn một khối Step (từ thư viện Sources) và kết nối nó bằng một
đường thẳng với đầu vào dương của khối Sum.

97
• Để xem vận tốc đầu ra, hãy chèn một khối Scope (từ thư viện Sinks)
được kết nối với đầu ra của Integrator.

Hình 2.4. Chèn khối Scope

Chúng ta thay đổi các thông số của khối Step như sau:
Hình 2.5. Thay đổi thông số khối Step

Để mô phỏng hệ thống này, trước tiên, phải đặt thời gian mô phỏng thích
hợp.

98
• Thay đổi Stop time bằng 120

Hình 2.6. Thay đổi thông số stop time

• Tiếp theo đến bước thiết lập thông số nhập vào như sau:

Hình 2.7. Kết quả

Task 5 - Cruise Control: Simulink Controller Design

99
1. Trích xuất mô hình tuyến tính vào Matlab.
- Mô hình tuyến tính của hệ thống (trong không gian trạng thái hoặc dạng hàm
truyền) có thể được trích xuất từ mô hình Simulink thành MATLAB. Điều
này được thực hiện thông qua việc sử dụng các khối In1 và Out1 và hàm
MATLAB linmod.
- Thay thế khối Step và Khối Scope bằng khối In1 và Out1.

Hình 1.1: ccmodel.


- Lưu với tên “ccmodel.slx”, tại Command window của Matlab, nhập các
lệnh sau: m = 1000;
b = 50;
u = 500;
[A,B,C,D] = linmod('ccmodel') cruise_ss = ss(A,B,C,D);

100
Hình 1.2: linmod.

- Để xác minh việc trích xuất mô hình, chúng tôi sẽ tạo một phản hồi bước
vòng mở của hàm truyền được trích xuất trong MATLAB. Chúng ta sẽ nhân
tử số với 500 để mô phỏng đầu vào bước là 500 N. Nhập lệnh sau vào
MATLAB.
step(u*cruise_ss)

Hình 1.3: Phản hồi.


2. Thực hiện kiểm soát PI.
- Ở mục Kiểm soát PI của Task 3: Cruise Control: PID Controller
Design, với Kp = 800 và Ki = 40 để đưa ra phản hồi mong muốn. Chúng
tôi sẽ thực hiện điều này trong Simulink bằng cách chứa hệ thống vòng
lặp mở từ trước đó vào một khối Subsystem.
• Tạo một mô hình mới;
• Thêm một khối Subsystem, bấm đúp vào khối này.
Bạn sẽ thấy một cửa sổ trống thể hiện nội dung của hệ
thống con (hiện đang trống).
• Mở mô hình hệ thống điều khiển hành trình đã lưu
trước đó, ccmodel.slx.
101
• Chọn Select All từ Edit menu (hoặc Ctrl-A), và chọn
Copy từ Edit menu (hoặc Ctrl-C).
• Chọn cửa sổ hệ thống con trống từ mô hình mới của
bạn và chọn Paste từ menu Edit (hoặc Ctrl-V). Bạn sẽ
thấy hệ thống ban đầu của mình trong cửa sổ hệ thống
con mới này. Đóng cửa sổ này.

Hình 2.1: Plant model.


- Bây giờ, chúng ta sẽ xây dựng một bộ điều khiển PI xung quanh “plant
model”. Đầu tiên, chúng tôi sẽ cung cấp lại đầu ra cho “plant model”.
- Đầu ra của khối Sum sẽ cung cấp tín hiệu báo lỗi. Từ đó, chúng ta sẽ tạo ra
các thành phần tỷ lệ và tích phân.
- Chúng ta sẽ thêm các thành phần tỷ lệ và tích phân và áp dụng tổng cho
“plant model”.
- Cuối cùng, chúng tôi sẽ áp dụng đầu vào bước và xem đầu ra với khối
Scope.
- Nhấp đúp vào khối Step và đặt Step Time thành "0" và Final value
thành"u". Điều này cho phép thay đổi độ lớn đầu vào bên ngoài Simulink

102
Hình 2.2: ccpi.

- Trong ví dụ này, chúng tôi đã xây dựng một bộ điều khiển PI từ các khối cơ bản.
Để thay thế, chúng tôi có thể đã sử dụng khối Transfer Function để thực hiện
điều này trong một bước, như được hiển thị bên dưới

Hình 2.3: ccpitf.


3. Phản hồi vòng kín.
- Để mô phỏng hệ thống này, trước tiên, phải đặt thời gian mô phỏng thích
hợp. Chọn Parameters từ menu Simulation và nhập "10" vào trường Stop
time. Các yêu cầu thiết kế bao gồm thời gian tăng ít hơn 5 giây, vì vậy
chúng tôi mô phỏng trong 10 giây để xem kết quả đầu ra.
- Các thông số vật lý bây giờ phải được thiết lập. Chạy các lệnh sau tại dấu
nhắc MATLAB:
m = 1000;
b = 50;
r = 10;
Kp = 800;
Ki = 40;
- Chạy mô phỏng và ta có kết quả sau:

103
Hình 3.1: Kết quả.

Task 6: Cruise Control: Simscape Modeling


1. Thiết lập vật lý:
- Trong phần này, chúng tôi hướng dẫn cách xây dựng mô hình điều khiển
hành trình bằng cách sử dụng các khối mô hình vật lý của Simscape
Multibody. Các khối trong thư viện Simscape đại diện cho các thành phần vật
lý thực tế; do đó, các mô hình động đa thể phức tạp có thể được xây dựng mà
không cần phải xây dựng các phương trình toán học từ các nguyên lý vật lý
như đã được thực hiện bằng cách áp dụng các định luật Newton trong Task 4

104
Hình 1.1: Mô hình vật lý.

105
- Các thông số hệ thống như sau:
+ (m) Khối lượng 1000kg

+ (b) Hệ số giảm chấn 50N.s/m

+ (u) Lực tác động lên xe 500N

+ (r) Tốc độ mong muốn 10m/s

+ (Kp) Điều khiển tỷ lệ 800

+ (K i ) Điều khiển tích phân 40

2. Tạo mô hình mới:


- Mở mô hình Simscape Multibody mới bằng cách nhập “smnew” trong cửa sổ lệnh
MATLAB.

Hình 2.1: Simscape.


- Kích đúp vào khối Mechanism Configuration và đặt Gravity thành [0, 0, -9.81].
- Mở khối Solver Configuration và chắc chắn rằng hộp chọn Use local solver không
được chọn.
- Nhấn Ctrl-E để mở hộp thoại Configuration Parameters và chỉnh như hình dưới:

106
Hình 2.2: Configuration Parameters.

3. Miêu tả phương tiện và bậc tự do:


- Chúng tôi sẽ mô hình hóa chiếc xe như một khối điểm chuyển động dọc theo một trục.
Chúng tôi sử dụng World Frame để xác định trục mà xe sẽ di chuyển.
• Kết nối cổng B của Rigid Transform tới cổng W của World Frame
• Kích đúp vào Rigid Transform, trong khối Rotation, đặt Method
thành “Standard Axis”, Axis thành “+Y”, và Angle thành “90 deg”. Đổi
tên thành “Transform Vehicle Axis”

Hình 3.1: Rigid transform.

- Thêm 2 khối sau: Prismatic Joint và Step.


107
- Prismatic Joint chỉ cho phép một bậc tự do tịnh tiến, và sẽ được kích hoạt bởi 1 lực
vào.
+ Kích đúp vào Prismatic Joint, và đặt thành như sau:

Hình 3.2: Prismatic joint.

+ Đổi tên khối Prismatic Joint to "Prismatic Vehicle"


+ Kết nối Prismatic Joint với phần còn lại của mô hình.
- Vì chúng tôi đang mô hình hóa chiếc xe dưới dạng khối lượng điểm, nên chỉ
khối lượng chiếc xe sẽ ảnh hưởng đến kết quả mô phỏng
+ Kích đúp vào khối Solid, đặt tham số Dimensions thành “[0.2,0.2,0.4]”; trong nhóm
Inertia, đặt Type thành “ Point Mass” và Mass thành “1000kg”.
+ Đổi tên thành “Vehicle”

108
Hình 3.3: Solid.
- Ta có mô hình sau:

Hình 3.4: Simscape model.


- Chạy mô phỏng và ta có kết quả sau:

109
Hình 3.5: vị trí và vận tốc
4. Tạo một hệ thống con:
- Chúng ta sẽ đặt mọi thứ ngoại trừ đầu vào Force và Scope vào một hệ thống con.

Hình 4.1: Vehicle Subsystem.


5. Thiết kế bộ điều khiển:
- Thiết kế một vòng điều khiển cho mô hình này để mô phỏng hệ thống kiểm soát hành
trình. Nhiệm vụ điều khiển là đảm bảo xe di chuyển với tốc độ không đổi.
- Thêm các khối sau: Step, Scope, Subtract, PID Controller, Manual Switch.
- Công tắc cho phép bạn định cấu hình mô hình cho hoạt động vòng kín và vòng hở.
Mục tiêu của bộ điều khiển là giữ tốc độ ổn định ở 10 m / s.

110
• Đổi tên khối Step mới thành “Desired Speed”, đặt Step time thành “0”,
Initial value thành “0”, Final value thành “0”.
• Mở khối PID Controller và tùy chọn để nó thành bộ điều khiển PI.
• Đặt Proportional (P) thành “800” và Integral (I) thành “40”

Hình 4.2: Close loop.


5. Phản hồi vòng lặp mở:
- Nhấp đúp vào công tắc cho đến khi khối Force là đầu vào được chọn:

Hình 5.1: Open-loop.


- Chạy mô phỏng (gõ CTRL-T hoặc nhấn nút chạy mũi tên màu xanh lá cây). Vận tốc
xe tăng từ không và cuối cùng đạt vận tốc ổn định 10 m/s, ta có kết quả sau:

111
Hình 5.2: Open-loop speed.

Hình 5.3: Open-loop position.

6. Phản hồi của hệ thống được kiểm soát:


- Với công tắc được kết nối với đầu ra PI, hãy chạy mô phỏng (gõ CTRL-T hoặc nhấn
nút chạy mũi tên màu xanh lá cây). Cốt truyện cho thấy phản ứng có kiểm soát của hệ
thống. Tốc độ chuyển động ở trạng thái dừng 10 m / s đạt được trong vài giây.

112
Hình 6.1: Controlled-system response.

Task 7: Suspension: System Modeling


1. Mô hình vật lý:

Hình 1.1: Xe buýt.

Khi hệ thống treo được thiết kế, mô hình 1/4 (một trong bốn bánh xe) được sử dụng
để đơn giản hóa vấn đề thành hệ thống giảm chấn 1-D nhiều lò xo. Sơ đồ của hệ thống
này được hiển thị dưới đây. Mô hình này dành cho một hệ thống treo chủ động trong
đó có một bộ truyền động có khả năng tạo ra lực điều khiển U để điều khiển chuyển
động của thân xe buýt.

113
Hình 1.2: Mô hình hệ thống treo của xe buýt (1/4 bus).

2. Thông số hệ thống:
(M1) 1/4 khối lượng xe buýt: 2500 kg
(M2) Khối lượng treo: 320 kg
(k1) Hệ số đàn hồi của hệ thống treo: 80000 N/m
(k2) Hệ số đàn hồi của bánh và lốp xe: 500000 N/m
(b1) Hệ số giảm xóc của hệ thống treo: 350 N.s/m
(b2) Hệ số giảm xóc của bánh và lốp: 15020 M.s/m
(U) Lực điều khiển
3. Phương trình chuyển động
Ta có phương trình động lực học như sau:
𝑀1 𝑋1̈ = −𝑏1 (𝑋1̇ − 𝑋2̇ ) − 𝐾1 (𝑋1 − 𝑋2 ) + 𝑈 (1)
𝑀2 𝑋2̈ = 𝑏1 (𝑋1̇ − 𝑋2̇ ) + 𝐾1 (𝑋1 − 𝑋2 )+𝑏2 (𝑊̇ − 𝑋2̇ )𝑈 + 𝐾2 (𝑊 − 𝑋2̇ ) − 𝑈 (2)
4. Mô hình hàm truyền:
Giả sử rằng tất cả các điều kiện ban đầu đều bằng 0, để các phương trình này biểu diễn
tình huống mà bánh xe đi lên một đoạn đường xóc. Các phương trình động ở trên có
thể được biểu diễn dưới dạng các hàm truyền bằng cách lấy Phép biến đổi Laplace.
Nguồn gốc cụ thể từ các phương trình trên đến các hàm truyền G1 (s) và G2 (s) được
hiển thị bên dưới, trong đó mỗi hàm truyền có đầu ra là X1-X2, và đầu vào của U và
114
W, tương ứng.
(𝑀1 𝑠 2 + 𝑏1 𝑠 + 𝐾1 )𝑋1 (𝑠) − (𝑏1 𝑠 + 𝐾1 )𝑋2 (𝑠) = 𝑈(𝑠) (3)

−(𝑏1 𝑠 + 𝐾1 )𝑋1 (𝑠) + ( 𝑀2 𝑠 2 + (𝑏1 + 𝑏2 )𝑠 + (𝐾1 + 𝐾2 ))(𝑠)


= (𝑏2 𝑠 + 𝐾2 )𝑊(𝑠) − 𝑈(𝑠) (4)

( 𝑀1 𝑠 2 + 𝑏1 𝑠 + 𝐾1 ) −(𝑏1 𝑠 + 𝐾1 ) 𝑋 (𝑠)
[ 2 ][ 1 ] =
−(𝑏1 𝑠 + 𝐾1 ) ( 𝑀2 𝑠 + (𝑏1 + 𝑏2 )𝑠 + (𝐾1 + 𝐾2 )) 𝑋2 (𝑠)
𝑈(𝑠)
[ ] (5)
(𝑏2 𝑠 + 𝐾2 )𝑊(𝑠) − 𝑈(𝑠)

( 𝑀1 𝑠 2 + 𝑏1 𝑠 + 𝐾1 ) −(𝑏1 𝑠 + 𝐾1 )
𝐴=[ 2 ]
−(𝑏1 𝑠 + 𝐾1 ) ( 𝑀2 𝑠 + (𝑏1 + 𝑏2 )𝑠 + (𝐾1 + 𝐾2 ))
(6)
( 𝑀1 𝑠 2 + 𝑏1 𝑠 + 𝐾1 ) −(𝑏1 𝑠 + 𝐾1 )
∆= 𝑑𝑒𝑡 [ 2 ]
−(𝑏1 𝑠 + 𝐾1 ) ( 𝑀2 𝑠 + (𝑏1 + 𝑏2 )𝑠 + (𝐾1 + 𝐾2 ))
(7)
Hoặc
∆= ( 𝑀1 𝑠 2 + 𝑏1 𝑠 + 𝐾1 ). ( 𝑀2 𝑠 2 + (𝑏1 + 𝑏2 )𝑠 + (𝐾1 + 𝐾2 )) − (𝑏1 𝑠 + 𝐾1 )(𝑏1 𝑠 + 𝐾1 )
(8)
Tìm nghịch đảo của ma trận A rồi nhân với các đầu vào U(s) và W(s) ở phía bên phải như
sau:
𝑋 (𝑠)
[ 1 ]=
𝑋2 (𝑠)
2
1 ( 𝑀2 𝑠 + (𝑏1 + 𝑏2 )𝑠 + (𝐾1 + 𝐾2 )) (𝑏1 𝑠 + 𝐾1 ) 𝑈(𝑠)
[ ] [ ]
∆ (𝑏1 𝑠 + 𝐾1 ) ( 𝑀1 𝑠 2 + 𝑏1 𝑠 + 𝐾1 ) (𝑏2 𝑠 + 𝐾2 )𝑊(𝑠) − 𝑈(𝑠)
(9)

𝑋1 (𝑠)
[ ]=
𝑋2 (𝑠)
2
1 (𝑀2 𝑠 + 𝑏2 𝑠 + 𝐾2 ) (𝑏1 𝑏2 𝑠 2 + (𝑏1 𝐾2 + 𝑏2 𝐾1 )𝑠 + 𝐾1 𝐾2 ) 𝑈(𝑠)
[ ] [ ]
∆ −𝑀1 𝑠 2 ( 𝑀1 𝑏2 𝑠 3 + (𝑀1 𝐾2 + 𝑏1 𝑏2 )𝑠 2 + (𝑏1 𝐾2 + 𝑏2 𝐾1 )𝑠 + 𝐾1 𝐾2 𝑊(𝑠)
(10)
Khi chúng ta chỉ muốn xem xét đầu vào điều khiển U (s), chúng ta đặt W (s) =
0. Do đó chúng ta nhận được hàm truyền G1 (s) như sau:
𝑋1 (𝑠) − 𝑋2 (𝑠) (𝑀1 +𝑀2 )𝑠 2 +𝑏2 𝑠+𝐾2
𝐺1 (𝑠) = = (11)
𝑈(𝑠) ∆
Khi chúng ta chỉ muốn xem xét đầu vào nhiễu W (s), chúng ta đặt U (s) = 0. Do đó
115
chúng ta nhận được hàm truyền G2 (s) như sau:
𝑋1 (𝑠) − 𝑋2 (𝑠) −𝑀1 𝑏2 𝑠 3 − 𝑀1 𝐾2 𝑠 2
𝐺2 (𝑠) = = (12)
𝑊(𝑠) ∆

5. Nhập phương trình vào Matlab:


- Chúng ta có thể tạo các mô hình hàm truyền trên trong MATLAB bằng cách nhập các
lệnh sau vào cửa sổ lệnh MATLAB.
M1 = 2500;
M2 = 320;
K1 = 80000;
K2 = 500000;
b1 = 350;
b2 = 15020;
s = tf('s'); G1 =
((M1+M2)*s^2+b2*s+K2)/((M1*s^2+b1*s+K1)*(M2*s^2+(b1+b2)*s+(K1+K2))-
(b1*s+K1)*(b1*s+K1));
G2 = (-M1*b2*s^3M1*K2*s^2)/((M1*s^2+b1*s+K1)*(M2*s^2+(b1+b2)*s+(K1+K2))-
(b1*s+K1)*(b1*s+K1));
- Để quan sát kết quả, ta dùng lệnh Step(G1) hoặc Step(G2)

Hình 5.1: Step(G1).

116
Hình 5.2: Step(G2).

Task 8 Suspension: System Analysis


- Chúng tôi có thể sử dụng MATLAB để hiển thị cách hệ thống vòng mở ban đầu hoạt
động (không có bất kỳ điều khiển phản hồi nào). Thêm các lệnh sau vào tệp m và chạy
nó trong cửa sổ lệnh MATLAB để xem phản hồi của đầu vào lực tác động theo bước đơn
vị, (các). Lưu ý rằng lệnh Step sẽ tạo đầu vào bước đơn vị cho mỗi đầu vào.
M1 = 2500;
M2 = 320;
K1 = 80000;
K2 = 500000;
b1 = 350;
b2 = 15020;
s = tf('s'); G1 =
((M1+M2)*s^2+b2*s+K2)/((M1*s^2+b1*s+K1)*(M2*s^2+(b1+b2)*s+ (K1+K2))-
(b1*s+K1)*(b1*s+K1));
step(G1)
117
Hình 1.1: Step (G1).
- Từ đồ thị này của phản ứng vòng hở đối với lực tác động theo bước đơn vị, chúng ta có
thể thấy rằng hệ thống đang bị giảm xóc. Những người ngồi trong xe buýt sẽ cảm thấy
một lượng dao động rất nhỏ. Hơn nữa, xe buýt phải mất một thời gian dài không thể chấp
nhận được để đạt đến trạng thái ổn định (thời gian lắng là rất lớn). Bây giờ, hãy nhập các
lệnh sau để xem phản hồi cho đầu vào nhiễu bước, W (s), với cường độ 0,1 m.
G2 = (-M1*b2*s^3-
M1*K2*s^2)/((M1*s^2+b1*s+K1)*(M2*s^2+(b1+b2)*s+(K1+K2))-
(b1*s+K1)*(b1*s+K1));step(0.1*G2)

118
Hình 1.2: Step(G2).

- Từ biểu đồ phản ứng vòng hở này đối với nhiễu động bước 10 cm, chúng ta có thể thấy rằng
khi xe buýt đi qua một đoạn đường 10 cm, thân xe buýt sẽ dao động trong một thời gian dài
không thể chấp nhận được (~ 50 giây) với thời gian ban đầu biên độ 8 cm. Những người ngồi
trong xe buýt sẽ không thấy thoải mái với sự dao động như vậy do độ vượt quá lớn và thời gian
lắng đọng lâu.
- Giải pháp cho những vấn đề này là thêm một bộ điều khiển phản hồi vào hệ thống để cải thiện
hiệu suất. Sau đây là sơ đồ của hệ thống vòng kín, sẽ được thảo luận chi tiết hơn trong các phần
thiết kế bộ điều khiển.

119
Hình 1.3: Hệ thống vòng kín.

Task 9 Suspension: PID Controller Design


1. Nội dung:
- Từ bài toán chính, ta có các phương trình động ở dạng hàm truyền như sau:
𝑋1 (𝑠) − 𝑋2 (𝑠) (𝑀1 +𝑀2 )𝑠 2 +𝑏2 𝑠+𝐾2
𝐺1 (𝑠) = = (1)
𝑈(𝑠) ∆

𝑋1 (𝑠) − 𝑋2 (𝑠) −𝑀1 𝑏2 𝑠 3 − 𝑀1 𝐾2 𝑠 2


𝐺2 (𝑠) = = (2)
𝑊(𝑠) ∆

- Nên ta có:
∆= ( M1 s 2 + b1 s + K1 ). ( M2 s 2 + (b1 + b2 )s + (K1 + K 2 )) − (b1 s + K1 )(b1 s +
K1 ) (3)

- Chúng tôi muốn thiết kế bộ điều khiển phản hồi để khi nhiễu động đường (W) được mô
phỏng bằng đầu vào bước đơn vị, đầu ra (X1-X2) có thời gian lắng nhỏ hơn 5 giây và độ
vọt lố nhỏ hơn 5%. Ví dụ, khi xe buýt chạy trên bậc thang 10 cm, thân xe buýt sẽ dao
động trong phạm vi +/- 5 mm và sẽ ngừng dao động trong vòng 5 giây.
- Nhập đoạn code sau để biểu diễn mô hình hệ thống:
m1 = 2500;
m2 = 320;k1 = 80000;
120
k2 = 500000;
b1 = 350;
b2 = 15020;
nump=[(m1+m2) b2 k2];
denp=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2)
(b1*k2)+(b2*k1) k1*k2];
G1=tf(nump,denp);
num1=[-(m1*b2) -(m1*k2) 0 0];
den1=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2)
(b1*k2)+(b2*k1) k1*k2];
G2=tf(num1,den1); numf=num1; denf=nump; F=tf(numf,denf);
2. Thêm khối điều khiển PID:
- Hàm truyền của bộ điều khiển PID là:
𝐾𝑖 𝐾𝑠 𝑠 2 + 𝐾𝑝 𝑠 + 𝐾𝑖
𝐶(𝑠) = 𝐾𝑝 + + 𝐾𝑑 𝑠 = (4)
𝑠 𝑠
- Trong đó, 𝐾𝑝 là giá trị tỉ lệ, 𝐾𝑖 là giá trị tích phân, 𝐾𝑑 là giá trị đạo hàm. Giả sử rằng chúng
ta sẽ cần cả ba giá trị này trong bộ điều khiển của chúng ta, nhập đoạn code sau:
Kd = 208025;
Kp = 832100;
Ki = 624075;
C = pid(Kp,Ki,Kd);
- Bây giờ, hãy mô phỏng phản ứng của hệ thống (khoảng cách X1-X2) đối với sự xáo trộn
bước trên đường. Từ sơ đồ trên, chúng ta có thể tìm hàm truyền từ nhiễu đường W đến
đầu ra (X1-X2) và mô phỏng:
sys_cl=F*feedback(G1,C);
3. Lập biểu đồ phản hồi vòng kín:
- Bây giờ chúng ta đã tạo hàm truyền vòng kín trong MATLAB sẽ đại diện cho máy, vùng
nhiễu động, cũng như bộ điều khiển. Hãy xem phản ứng bước vòng kín cho hệ thống
này trông như thế nào trước khi chúng ta bắt đầu quá trình kiểm soát. Hãy nhớ rằng
chúng ta sẽ sử dụng bước 0,1 m làm sự xáo trộn của chúng ta, để mô phỏng điều này, tất
cả những gì chúng ta cần làm là nhân sys_cl với 0,1.
- Nhập đoạn code sau:

121
t=0:0.05:5;
step(0.1*sys_cl,t)
title('Response to a 0.1-m Step under PID Control')

Hình 3.1: Phản hồi.


- Từ biểu đồ, độ vọt lố phần trăm là 9mm, lớn hơn yêu cầu 5mm, nhưng thời gian giải
quyết được thỏa mãn, ít hơn 5 giây. Để chọn độ lợi thích hợp mang lại đầu ra hợp lý
ngay từ đầu, chúng ta bắt đầu với việc chọn một cực và hai số không cho bộ điều khiển
PID. Một cực của bộ điều khiển này phải ở 0 và một trong các số không phải rất gần với
cực tại gốc, ở 1. Số 0 còn lại, chúng ta sẽ đặt xa hơn từ 0 đầu tiên, ở 3, thực sự chúng ta
có thể điều chỉnh vị trí thứ hai không để hệ thống đáp ứng yêu cầu.
- Nhập đoạn code sau:
z1=1; z2=3; p1=0;
s = tf('s');
C = ((s+z1)*(s+z2))/(s+p1); rlocus(C*G1)
title('root locus with PID controller')

122
Hình 3.2: Biểu đồ quỹ tích gốc.

- Thêm code [k,poles]=rlocfind(C*G1)vào cuối tệp m của bạn để giúp bạn chọn độ lợi
vòng lặp cụ thể. Sau khi chạy trong cửa sổ lệnh, hãy chuyển đến biểu đồ quỹ tích gốc và
chọn một điểm gần những điểm được chỉ ra bằng dấu thập trên biểu đồ bên dưới.

123
Hình 3.3: Chọn.
- Sau khi thực hiện việc này, bạn sẽ thấy kết quả sau trong cửa sổ lệnh MATLAB.

Hình 9.4: Kết quả.

124
4. Chọn độ tăng cho bộ điều khiển PID:
- Bây giờ, chúng ta đã có hàm truyền vòng kín, việc điều khiển hệ thống chỉ đơn giản là
thay đổi các giá trị 𝐾𝑝 , 𝐾𝑑 , 𝐾𝑖 . Từ hình trên ta thấy hệ thống có giảm chấn lớn hơn yêu
cầu nhưng thời gian lắng rất ngắn. Phản hồi này vẫn không đáp ứng yêu cầu vượt quá
5%. Như đã đề cập trước đây, điều này có thể được khắc phục bằng cách điều chỉnh các
giá trị 𝐾𝑝 , 𝐾𝑑 , 𝐾𝑖 . để được 1 kết quả tốt hơn.
Kd=2*Kd;
Kp=2*Kp;
Ki=2*Ki;
C=pid(Kp,Ki,Kd);
sys_cl=F*feedback(G1,C); step(0.1*sys_cl,t)
title('Response to a 0.1-m Step w/ High-Gain PID')

Hình 4.1: Phản hồi.


- Để so sánh đồ thị này với đồ thị của bộ điều khiển PID có độ lợi thấp, bạn có thể thay
đổi trục:
axis([0 5 -.01 .01])

125
Hình 4.2: Phản hồi.
- Bây giờ chúng ta thấy rằng phần trăm vượt quá và thời gian giải quyết đáp ứng các
yêu cầu của hệ thống. Phần trăm vượt quá là khoảng 5% biên độ của đầu vào và thời
gian giải quyết là 2 giây, ít hơn yêu cầu 5 giây.
- Đối với vấn đề này, nó chỉ ra rằng phương pháp thiết kế PID kiểm soát đầy đủ hệ
thống. Có thể thấy điều này bằng cách nhìn vào biểu đồ quỹ tích gốc. Một nhiệm vụ
như vậy có thể đạt được bằng cách chỉ thay đổi giá trị của bộ điều khiển PID.
Task 10 Suspension: Simulink Modeling
1. Yêu cầu thiết kế:
- Có khả năng bám đường tốt, đồng thời mang lại sự thoải mái trên các đoạn đường
gồ gề;
- Thân xe không được có dao động quá lớn, và dao động phải nhanh chóng biến
mất;
- Vì khoảng cách X1-W rất khó đo và độ biến dạng của lốp (X2-W) là không đáng
kể, chúng tôi sẽ sử dụng khoảng cách X1-X2 thay vì X1-W làm ước tính đầu ra.
2. Thiết kế mô hình:

126
- Hệ thống này sẽ được mô hình hóa bằng cách tổng hợp các lực tác dụng lên cả hai
khối lượng (vật thể và hệ thống treo) và tích phân gia tốc của mỗi khối lượng hai
lần để đưa ra vận tốc và vị trí. Định luật Newton sẽ được áp dụng cho từng khối
lượng:

𝑑 2 𝑥1 𝑑𝑥1
∬ 2 𝑑𝑡 = ∫ 𝑑𝑡 = 𝑥1 (1)
𝑑𝑡 𝑑𝑡
𝑑 2 𝑥2 𝑑𝑥2
∬ 2 𝑑𝑡 = ∫ 𝑑𝑡 = 𝑥2 (2)
𝑑𝑡 𝑑𝑡
- Đầu tiên, chúng ta sẽ lập mô hình tích phân của các gia tốc của khối lượng.

Hình 2.1: Tích phân.


- Tiếp theo, chúng ta sẽ bắt đầu mô hình hóa định luật Newton. Định luật Newton
cho mỗi khối lượng này có thể được biểu thị bằng:
1 𝑑 2 𝑥1
∑ 𝐹= (3)
𝑀1 1 𝑑𝑡 2

1 𝑑 2 𝑥2
∑ 𝐹= (4)
𝑀2 2 𝑑𝑡 2

.
Hình 2.2: Khối lượng.

127
- Bây giờ, chúng ta sẽ thêm vào các lực tác dụng lên mỗi khối lượng. Đầu tiên,
chúng ta sẽ thêm vào lực từ Lò xo 1. Lực này bằng một hằng số, k1 lần hiệu số
X1-X2. chúng ta sẽ thêm vào lực từ Bộ giảm chấn 1. Lực này bằng b1 lần V1-V2

Hình 2.3: Sping1 & Damper1.


- Bây giờ chúng ta sẽ thêm vào lực từ lò xo 2. Lực này chỉ tác dụng lên khối lượng
2, nhưng phụ thuộc vào mặt đất, W. Lực của lò xo 2 bằng X2-W. Chúng ta sẽ
thêm lực từ Damper 2. Lực này bằng b2 lần V2-d / dt (W). Vì không có tín hiệu
hiện có đại diện cho đạo hàm của W nên chúng ta sẽ cần tạo ra tín hiệu này. Lực
cuối cùng là U đầu vào tác dụng giữa hai khối lượng.

128
Hình 2.4: Damper2 & U.
3. Phản hồi vòng kín
- Để mô phỏng hệ thống này, trước tiên, phải đặt thời gian mô phỏng thích hợp. Chọn
Model Configuration Parameters từ menu Simulation và nhập "50" vào trường Thời
gian dừng. 50 giây đủ dài để xem phản hồi của vòng lặp mở. Nhập các dòng lệnh sau vào
Command Window:
m1 = 2500;
m2 = 320;
k1 = 80000;
k2 = 500000;
b1 = 350;
b2 = 15020;
Chạy mô phỏng và ta được:

129
Hình 3.1: X1-X2.

Task 11 Suspension: Simulink Controller Design


1. Trích xuất mô hình tuyến tính vào MATLAB:
- Chúng tôi sẽ chỉ trích xuất mô hình từ đầu vào U đến đầu ra X1-X2. Và đổi tên
thành "suspmod.slx"

130
Hình 1.1: Trích xuất.

- Nhập đoạn code sau:


[A,B,C,D]=linmod('suspmod')
[num,den]=ss2tf(A,B,C,D)
- Ta có kết quả sau:

131
Hình 1.2: Linmod.
- Để xác minh việc trích xuất mô hình, chúng tôi sẽ tạo một phản hồi bước vòng mở của
hàm truyền được trích xuất trong MATLAB. Nhập lệnh sau vào MATLAB:
step(num,den);

132
Hình 1.3: Step.

2. Thực hiện kiểm soát phản hồi trạng thái đầy đủ:

- Bộ điều khiển phản hồi trạng thái đầy đủ được thiết kế cung cấp lại năm trạng thái sau:
T
𝑇
𝑑𝑋1 𝑑𝑌1
[𝑋1 𝑌 = 𝑋1 − 𝑋2 ∫ 𝑌1 𝑑𝑡]
𝑑𝑡 1 𝑑𝑡
- Bộ điều khiển đã sử dụng ma trận độ lợi phản hồi sau:
𝐾 = [0 2.3𝐸6 5𝐸8 0 8𝐸6]
- Để thực hiện điều này trong Simulink, chúng tôi sẽ chứa hệ thống vòng lặp mở từ trước
đó trong trang này trong một khối Hệ thống con:

133
Hình 2.1: Suspension model.

- Bây giờ, chúng ta sẽ xây dựng một bộ điều khiển phản hồi trạng thái đầy đủ xung
quanh mô hình nhà máy

Hình 2.2: Suspmod_control.


3. Phản hồi vòng kín:

134
- Mở Model Configuration Parameters và đặt giá trị “2” ở Stop Time. Chạy đoạn code
sau:
m1 = 2500;
m2 = 320;
k1 = 80000;
k2 = 500000;
b1 = 350;
b2 = 15020;
K = [ 0 2.3e6 5e8 0 8e6 ];

Hình 3.1: y1.

Task 12 Suspension: Simscape Modeling


1. Lắp ráp hệ thống đại diện cho đầu vào lốp và đường:
- Thêm các khối sau:
+ Mechanical Translational Reference;
+ Ideal Translational Velocity Source;
+ Translational Spring (Spring rate = "k2");
135
+ Translational Damper (Damping coefficient = "b2");
+ Mass (Mass = "m2");
+ Pulse Generator (Amplitude = "1"; Period = "100";Pulse Width = "0.1");
- Ta có mô hình sau:

Hình 1.1

2. Nhận biết các giá trị chính và mô phỏng:


Làm theo các bước sau để hiển thị mô phỏng lên Scope:
1. Nối cổng R của Ideal Translational Motion Sensor như hình.
2. Sao chép Mechanical Translational Reference để nối với cổng C của cảm biến.
3. Nối cổng V của cảm biến tới PS-Simulink converter.
4. Copy PS-Simulink converter, và nối cổng P tới Scope.
5. Trước khi mô phỏng, đặt Max step size = "1e-2"

136
Hình 2.1: Mô phỏng lên Scope.
Ta có kết quả như sau:

Hình 2.2: Scope Road.

Hình 2.3: Scope Suspention.

137
3. Xác định hệ thống xe
Bạn có thể sao chép và dán các khối lò xo, van điều tiết, khối lượng và cảm biến để
mô hình hóa nhiều hơn chiếc xe với bộ giảm chấn lò xo khối lượng thứ hai. Ta có
mô hình hình 12.5 sau:

Hình 12.5
Đặt thời gian là 50s và chạy mô phỏng, ta có kết quả sau:

Hình 12.6: Scope Vehicle.

138
4. Xác định đầu vào điều khiển và đo lường các trạng thái bổ sung:
Bây giờ chúng ta thêm một Nguồn lực lý tưởng như được hiển thị bên dưới để hệ
thống điều khiển của chúng ta có thể tác động một lực để nhanh chóng làm giảm các
dao động từ vết va chạm. Để thực hiện kiểm tra vòng hở của cơ cấu chấp hành, hãy
thêm khối Bước và đặt Thời gian bước thành "0". Tắt đầu vào đường bằng cách đặt
Biên độ của Bộ tạo xung thành "0".

Hình 4.1.
Chạy mô phỏng, phản hồi tạm ngưng trên Scope Suspention Deflection sẽ xuất hiện
như sau:

Hình 12.8: Scope Suspention Deflection.


139
5. Tạo điều khiển vòng kín:
Để rõ ràng hơn, hãy đặt mô hình hệ thống treo vào một hệ thống con theo các bước
bên dưới:
1. Thay khối Scope bằng và 2 khối đầu vào bằng khối In1.
2. Chọn các khối ngoại trừ Step, Pulse Generator, Scope Vehicle, và Scope
Suspension Deflection
3. Nhấn CTRL-G để tạo hệ thống con.

Hình 5.1.

Hình 5.2

140
Đặt K = [ 0 2.3E6 5E8 0 8E6 ] trong command window, Final value ="0",
Amplitude to "1".
Chạy mô phỏng với thời gian 2s ta được:

Hình 12.11: Displacement.

141
Task 13 Ball & Beam: System Modeling.
1. Thiết lập vật lý.
Một quả bóng được đặt trên một thanh xà, xem hình dưới đây, nó được phép lăn với
1 bậc tự do dọc theo chiều dài của thanh xà. Một cánh tay đòn được gắn vào dầm ở
một đầu và một bánh răng servo ở đầu kia. Khi bánh răng servo quay một góc, cần gạt
sẽ thay đổi góc của chùm tia. Khi thay đổi góc so với vị trí nằm ngang, trọng lực làm
cho quả bóng lăn dọc theo chùm tia. Một bộ điều khiển sẽ được thiết kế cho hệ thống
này để có thể điều khiển vị trí của quả bóng.

Hình 13.1: Physical setup.

2. Thông số hệ thống.
Đối với bài toán này, chúng ta sẽ giả sử rằng quả bóng lăn mà không bị trượt và ma
sát giữa chùm sáng và quả bóng là không đáng kể. Các hằng và biến cho ví dụ này
được định nghĩa như sau:
- (m) Khối lượng của quả bóng 0.11 kg

- (R) Bán kính của quả bóng 0.015 m

- (d) Sai trục của cánh tay đòn 0.03 m

- (g) Gia tốc trọng trường 9.8 m/s^2

- (L) Chiều dài của dầm 1.0 m

- (J) Momen quán tính của bóng 9.99e-6 kg.m^2

- (r) Tọa độ vị trí bóng


- (alpha) Tọa độ góc dầm
142
- (theta) Góc bánh răng servo 13.3:
Tiêu chuẩn thiết kế:
Thời gian lắng < 3s;
Sai số < 5%;
4. Hệ phương trình.
- Bỏ qua tác động của đạo hàm bậc 2 góc α đối với đạo hàm bậc 2 của r, phương
trình chuyển động Lagrangian của quả bóng:

J
0=( + 𝑚) 𝑟̈ + 𝑚𝑔 sin 𝛼 − 𝑚𝑟𝛼̇ 2 (1)
𝑅2

- Sự tuyến tính hóa của phương trình này về góc dầm, cho chúng ta sự gần đúng
tuyến tính của hệ thống sau:
J
( 2 + 𝑚) 𝑟̈ = −𝑚𝑔𝛼 (2)
𝑅
- Phương trình liên hệ giữa góc dầm với góc của bánh răng có thể được gần đúng
như
tuyến tính bằng phương trình dưới đây:
𝑑
𝛼= 𝜃 (3)
𝐿
- Thay thế điều này vào phương trình trước đó, chúng ta nhận được:
J 𝑑
( + 𝑚) 𝑟̈ = −𝑚𝑔 𝜃 (4)
𝑅2 𝐿

143
a. Hàm truyền:
- Biến đổi Laplace ta được phương trình sau:
J 2
𝑑
( + 𝑚) 𝑅(𝑠)𝑠 = −𝑚𝑔 𝜃(𝑠) (5)
𝑅2 𝐿
- Sắp xếp lại ta tìm được hàm truyền từ góc bánh răng (𝜃(s)) tới tọa độ quả bóng
(R(s))
𝑅(𝑠) 𝑚𝑔𝑑 1 𝑚
𝑃(𝑠) = =− [ ] (6)
θ(s) 𝐽 𝑠 2 𝑟𝑎𝑑
𝐿 ( 2 + 𝑚)
𝑅
- Nhập các hàm sau vào Matlab, tạo file bai13p1pr2.m:
m = 0.111;
R = 0.015;
g = -9.8;
L = 1.0;
d = 0.03;
J = 9.99e-6;
s = tf('s');
P_ball = -m*g*d/L/(J/R^2+m)/s^2
- Ta có kết quả sau:

Hình 4.1: P_ball.

b. Không gian trạng thái:


- Hệ phương trình tuyến tính hóa cũng có thể được biểu diễn dưới dạng không gian
trạng thái. Điều này có thể được thực hiện bằng cách chọn vị trí của quả bóng (r)
và vận tốc (𝑟̇ ) 𝑙à𝑚 𝑏𝑖ế𝑛 trạng thái và góc bánh răng (θ) làm đầu vào. Biểu diễn
không gian trạng thái được hiển thị bên dưới:

144
0
𝑟̇ 0 1 𝑟 𝑚𝑔𝑑
[ ]=[ ] [ ] + [− ] 𝜃 (7)
𝑟̈ 0 0 𝑟̇ 𝐽
𝐿 ( 2 + 𝑚)
𝑅
- Tuy nhiên, đối với ví dụ không
] gian trạng thái của chúng tôi, chúng tôi sẽ sử dụng
một mô hình hơi khác. Phương trình tương tự cho quả bóng vẫn được áp dụng
nhưng thay vì điều khiển vị trí thông qua góc bánh răng, chúng ta sẽ điều khiển
trực tiếp mô-men xoắn tác dụng lên dầm. Dưới đây là đại diện của hệ thống này:

0 1 0 0
𝑟̇ −𝑚𝑔 𝑟 0
0 0 0 𝑟̇
𝐽 0
[ 𝑟̈ ] = 𝐿( 2 + 𝑚) [ ] + [ ] 𝑢 (8)
𝛼̇ 𝑅 𝛼 0
𝛼̈ 0 0 0 1 𝛼̇ 1
[0 0 0 0]
- Lưu ý: Đối với hệ thống này, cần số và tay đòn sẽ không được sử dụng, thay vào
đó một động cơ ở tâm dầm sẽ tác dụng mô-men xoắn lên dầm để điều khiển vị trí
của quả bóng. Các phương trình trạng thái-không gian có thể được biểu diễn trong
MATLAB bằng các lệnh sau (các phương trình này dành cho mô hình điều khiển
mô-men xoắn).
- Nhập các lệnh sau vào matlab, tạo file b13p2pr2.m:
H = -m*g/(J/(R^2)+m); A = [0 1 0 0
00H0
0001
0 0 0 0];
B = [0 0 0 1]';
C = [1 0 0 0];
D = [0];
ball_ss = ss(A,B,C,D)
- Ta được kết quả sau:

145
Hình 4.2: Ball_ss.

146
Task 14 Ball & Beam: System Analysis
1. Mô hình hệ thống: Sử dụng file “bai13p1pr2.m” đã tạo ở Task 13 .
2. Biểu đồ Pole/Zero:
- Hệ thống Bóng và dầm là một hệ thống loại II có hai cực tại điểm gốc, như được
thấy trong biểu đồ pole/zero bên dưới.
- Sử dụng lệnh “pzmap(P_ball)” để mở biểu đồ. Vì các cực không nằm trong nửa
mặt phẳng bên trái, hệ thống vòng hở sẽ không ổn định như được thấy trong
phản ứng bước dưới:

Hình 2.1: pole/zero map.


3. Phản hồi bước trong vòng lặp mở:
- Bây giờ, chúng ta muốn quan sát phản ứng của quả bóng với đầu vào bước trên
góc bánh răng servo động cơ (bước 1 radian). Sử dụng lệnh sau: step(P_ball)

147
Hình 3.1: Step response.

- Từ biểu đồ này, rõ ràng là hệ thống không ổn định trong vòng lặp hở khiến quả
bóng lăn ngay khỏi dầm. Do đó, cần phải có một số phương pháp kiểm soát vị trí
của quả bóng trong hệ thống này. Một số ví dụ về thiết kế bộ điều khiển được
cung cấp trong các hướng dẫn này để giải quyết vấn đề này.
Task 15 Ball & Beam: PID Controller Design
1. Biểu diễn vòng kín:
- Sơ đồ khối cho ví dụ này với một bộ điều khiển và phản hồi thống nhất về vị trí
của quả bóng được hiển thị bên dưới:

Hình 1.1: Sơ đồ khối.


- Đầu tiên, chúng ta sẽ nghiên cứu phản ứng của hệ thống được trình bày ở trên
khi sử dụng bộ điều khiển tỷ lệ. Sau đó, điều khiển đạo hàm và / hoặc tích phân
sẽ được thêm vào nếu cần.
- Ta có hàm truyền của bộ điều khiển PID như sau:
148
𝐾𝑖 𝐾𝑠 𝑠 2 + 𝐾𝑝 𝑠 + 𝐾𝑖
𝐶(𝑠) = 𝐾𝑝 + + 𝐾𝑑 𝑠 = (1)
𝑠 𝑠
2. Kiểm soát P (tỷ lệ)
Hàm truyền vòng kín để điều khiển tỷ lệ với độ lợi tỷ lệ Kp = 100 có thể mô hình hóa bằng
đoạn mã sau, tạo tệp b15p1pr2.m:
m = 0.111;
R = 0.015;
g = -9.8;
L = 1.0;
d = 0.03;
J = 9.99e-6;
s = tf('s');
P_ball = -m*g*d/L/(J/R^2+m)/s^2; Kp = 1;
C = pid(Kp); sys_cl=feedback(C*P_ball,1);
- Bây giờ, chúng ta có thể lập mô hình phản ứng của hệ thống với đầu vào bước là
0,25 m. Thêm dòng mã sau vào tệp b15p1pr2.m của bạn và chạy nó. Ta có kết quả
sau:
step(0.25*sys_cl) axis([0 70 0 0.5])

Hình 2.1: Phản hồi kiểm soát tỷ lệ.


149
- Như bạn có thể thấy, hệ thống vẫn ổn định một chút với việc bổ sung một mức tăng
tỷ lệ. Hãy thử thay đổi giá trị của Kp và lưu ý rằng hệ thống vẫn không ổn định.

3. Kiểm soát PI (tỷ lệ-đạo hàm):


- Thêm một lượng đạo hàm vào bộ điều khiển, tạo tệp b15p2pr2.m sau:
m = 0.111;
R = 0.015;
g = -9.8;
L = 1.0;
d = 0.03;
J = 9.99e-6;
s = tf('s');
P_ball = -m*g*d/L/(J/R^2+m)/s^2; Kp = 10;
Kd = 10;
C = pid(Kp,0,Kd); sys_cl=feedback(C*P_ball,1); t=0:0.01:5;
step(0.25*sys_cl)
- Phản ứng của hệ thống đối với phương pháp điều khiển này:

Hình 3.1: Phản hồi kiểm soát tỷ lệ-đạo hàm.

- Bây giờ hệ thống đã ổn định nhưng độ vọt lố quá cao (Lố 20%) và thời gian giải
quyết cần giảm xuống một chút. Chúng ta thấy bằng cách tăng Kd chúng ta có thể

150
giảm độ vọt lố và một ít thời gian giải quyết. Vì thế, ta đặt Kd = 20 trong tệp
b15p2pr2.m và chạy lại, ta có kết quả sau:

Hình 3.2: Khi thay đổi Kd = 20.

- Tiêu chí vượt quá được đáp ứng nhưng thời gian giải quyết cần giảm xuống một
chút. Để giảm thời gian lắng, chúng ta có thể thử tăng một chút Kp để tăng thời
gian. Độ lợi đạo hàm (Kd) cũng có thể được tăng lên để loại bỏ một số quá mức
mà việc tăng sẽ gây ra.
- Sửa lại tệp b15p2pr2.m với 𝐾𝑑 = 40 & 𝐾𝑝 = 15, ta được kết quả sau:

151
Hình 3.3: Khi thay đổi 𝐾𝑑 = 40 & 𝐾𝑝 = 15.

- Như bạn có thể thấy từ biểu đồ trên, tất cả các mục tiêu điều khiển đã được đáp
ứng mà không cần sử dụng bộ điều khiển tích hợp (thời gian giải quyết cho ví dụ
này được coi là đạt được khi đáp ứng nhỏ hơn 2% giá trị cuối cùng của nó)

Task 16 Ball & Beam: Simulink Modeling


1. Xây dựng mô hình trong Simulink:
- Trong ví dụ này, thay vì thể hiện tất cả các lực và các ràng buộc hình học (khó mô
hình hóa trong Simulink đối với các hệ thống động có các ràng buộc), chúng ta sẽ
mô hình hóa trực tiếp phương trình Lagrangian phi tuyến của chuyển động.
- Đầu tiên, chúng ta phải thể hiện các dẫn xuất của đầu ra, r:

Hình 1.1: Dẫn xuất của đầu ra, r.

152
Ta thêm hàm lấy vector [r ṙ α α̇] và trả về 𝑟̈ . Thêm 1 khối Fnc từ thư viện
User-Defined Functions và kết nối đầu ra của nó với đầu vào của khối Integrator, đổi
hàm của khối Fnc như sau:
𝑟̈ = (−1/(𝐽/𝑅2 + 𝑚))(𝑚𝑔 sin(𝛼) − 𝑚𝑟𝛼̇ 2 )

Hình 1.2: Thông số khối fcn.

Hình 1.3: ball-beam Lagrangian model.


- Bây giờ, chúng ta sẽ bắt đầu xây dựng vectơ đầu vào hàm u bằng cách cung cấp
lại các tín hiệu trạng thái từ các bộ tích phân và hình thành một vectơ từ chúng
với một khối Mux.

Hình 1.4: Xây dựng vecto đầu vào.


- Xây dựng các tín hiệu 𝛼 và 𝛼̇ từ đầu vào θ và đặt tên là bai16_simulink

153
Hình 1.5: ball and beam model.
2. Phản hồi vòng hở:
- Để tạo phản hồi vòng mở, điều hữu ích trước tiên là chứa mô hình này trong một
khối hệ thống con:

Hình 2.1: hệ thống con.

Task 17 Ball & Beam: Simulink Controller Design


1. Phản hồi vòng hở:
- Sử dụng tệp bai16_simulink.slx đã làm ở Task 16
- Thiết lập thông số vật lý bằng cách nhập đoạn code sau vào b17p1pr2.m
m = 0.111;
R = 0.015;
g = -9.8;
L = 1.0;
d = 0.03;
J = 9.99e-6;

154
- Chạy mô phỏng và ta được kết quả sau:

Hình 1.1: Phản hồi vòng mở.


- Từ biểu đồ này, rõ ràng là hệ thống không ổn định trong vòng lặp hở khiến quả
bóng lăn ngay khỏi đầu tia. Do đó, cần phải có một số phương pháp kiểm soát vị
trí của quả bóng trong hệ thống này. Phần sau của hướng dẫn này, chúng tôi sẽ
triển khai bộ bù sớm.
2. Trích xuất mô hình tuyến tính vào MATLAB:
- Mô hình Simulink có thể được trích xuất thành mô hình không gian trạng thái hoặc
chức năng truyền tương đương. Điều này được thực hiện thông qua việc sử dụng
các khối In1 và Out1 và hàm linmod.
- Gõ dòng lệnh dưới đây vào command, ta có thể thấy mô hình vòng lặp mở của hệ
thống:
[A,B,C,D] = linmod('ball')
[num,den] = ss2tf(A,B,C,D)

155
Hình 2.1: Mô hình vòng lặp hở.

- Chúng tôi có thể xác minh mô hình này bằng cách nhận được phản hồi bước trong
vòng lặp mở. Nhập lệnh sau tại dấu nhắc MATLAB. Bạn sẽ thấy phản hồi vòng
lặp mở sau đây:
step(num,den);

Hình 2.2: Phản hồi.

156
3. Xây dựng bộ bù sớm:
- Một bộ bù sớm được thiết kế với lỗ trống ở -0.01 và cực ở -5 và tăng 37,1.
Bây giờ chúng ta sẽ xây dựng bộ điều khiển này trong Simulink.

Hình 3.1: ballcl.


4. Phản hồi vòng kín: Chạy mô phỏng và ta được kết quả sau:

Hình 4.1: Phản hồi vòng kín.

Project 3:
Task 1: Inverted Pendulum: System Modeling
Nội dung:
• Đặt vấn đề và yêu cầu thiết kế

157
• Giải tích lực và phương trình hệ
• Biểu diễn MATLAB
1. Đặt vấn đề và yêu cầu thiết kế:
- Thiết lập vấn đềvà yêu cầu thiết kế:
- Hệ thống trong ví dụ này bao gồm một con lắc ngược được gắn vào một xe đẩy có
động cơ.
- Động lực học của hệ thống là phi tuyến tính. Mục tiêu của hệ thống điều khiển là
cân bằng con lắc ngược bằng cách tác dụng một lực lên xe đẩy mà con lắc được gắn
vào.
- Một ví dụ trong thế giới thực liên quan trực tiếp đến hệ thống con lắc ngược này là
điều khiển thái độ của tên lửa đẩy khi cất cánh.
- Trong trường hợp này, chúng ta sẽ xem xét một bài toán hai chiều trong đó con lắc
bị hạn chế chuyển động trong mặt phẳng thẳng đứng được thể hiện trong hình dưới.
Đối với hệ thống dưới, đầu vào là lực F theo phương ngang và đầu ra là góc θ của
con lắc và vị trí nằm ngang x của xe đẩy.

Hình 1.1. Mô hình

Đối với ví dụ này, hãy giả sử các đại lượng sau:


(M) khối lượng của xe đẩy 0,5 kg
(m) khối lượng của con lắc 0,2 kg
(b) hệ số ma sát của xe đẩy 0,1 N/m/giây

158
(l) chiều dài đến khối tâm con lắc 0,3 m
(I) mômen quán tính khối lượng của con lắc 0,006 kg.m^2
(F) lực tác dụng lên xe đẩy
(x) tọa độ vị trí giỏ hàng
(theta) góc con lắc từ thẳng đứng (xuống)
- Đối với PID, quỹ tích gốc và phần đáp ứng tần số của bài toán này, chúng ta sẽ chỉ
quan tâm đến việc điều khiển vị trí của con lắc. Điều này là do các kỹ thuật được sử
dụng trong các phần này phù hợp nhất cho các hệ thống một đầu vào, một đầu ra
(SISO). Yêu cầu thiết kế cho hệ thống này là:
+ Thời gian θ ổn định nhỏ hơn 5 giây;
+ Góc θ không bao giờlệch quá 0.05 rad so với phương thẳng đứng.
-Sửdụng các kỹthuật thiết kếkhông gian trạng thái, chúng tôi có thểdễdàng giải quyết
một hệ thống đa đầu ra. Trong trường hợp của chúng tôi, hệthống con lắc ngược là
một đầu vào, nhiều đầu ra (SIMO).Các yêu cầu thiết kếcho ví dụkhông gian trạng
thái con lắc ngược là:
+ Thời gian để x và θ ổn định nhỏhơn 5s;
+ Góc θ không lệch quá 20 độ (0.35 rad) so với trục thẳng đứng;+ Lỗi trạng thái ổn
định của x và θ dưới 2%.
2. Phân tích lực và hệ phương trình
-Dưới đây là sơ đồ vật thể tự do của hai phần tử của hệ thống con lắc ngược.

159
Hình 2.1. Mô hình về lực

- Tổng hợp các lực trong sơ đồ vật thể tự do của xe đẩy theo hướng nằm ngang, bạn
sẽ có được phương trình chuyển động sau.
𝑀𝑥̈ + b𝑥̇ + N = F (1)
- Lưu ý rằng bạn cũng có thể tính tổng các lực theo hướng thẳng đứng cho xe đẩy,
nhưng sẽ không thu được thông tin hữu ích nào.
- Tổng hợp các lực trong sơ đồ cơ thể tự do của con lắc theo hướng nằm ngang, bạn
nhận được biểu thức sau cho phản ứng lực N
N = 𝑚𝑥̈ + 𝑚𝑙𝜃̈𝐶𝑜𝑠𝜃 - 𝑚𝑙𝜃̇ 2 𝑠𝑖𝑛𝜃 (2)
- Nếu ta thay thế phương trình này vào phương trình đầu tiên, ta sẽ nhận được một
trong hai phương trình chính của hệ thống này.
(𝑀 + 𝑚)𝑥̈ + 𝑏𝑥̇ + 𝑚𝑙𝜃̈𝑐𝑜𝑠𝜃 - 𝑚𝑙𝜃̇ 2 𝑠𝑖𝑛𝜃 = 𝐹 (3)
- Để có được phương trình chuyển động thứ hai cho hệ thống này, hãy tính tổng các
lực vuông góc với con lắc. Giải hệ dọc theo trục này đơn giản hóa rất nhiều toán học.
Bạn sẽ nhận được phương trình sau.
𝑃𝑠𝑖𝑛𝜃 + 𝑁𝑐𝑜𝑠𝜃 − 𝑚𝑔𝑠𝑖𝑛𝜃 = 𝑚𝑙𝜃̈ + 𝑚𝑥̈ cos𝜃 (4)
- Để loại bỏ các số hạng và trong phương trình trên, hãy tính tổng các khoảnh khắc
xung quanh trọng tâm của con lắc để có được giá trị sau phương trình.
−𝑃𝑙𝑠𝑖𝑛𝜃 − 𝑁𝑙𝑐𝑜𝑠𝜃 = 𝐼𝜃̈ (5)
160
- Kết hợp hai biểu thức cuối cùng này, bạn sẽ có được phương trình chính thứ hai.
(𝐼 + 𝑚𝑙 2 )𝜃̈ + 𝑚𝑔𝑙𝑠𝑖𝑛𝜃 = −𝑚𝑙𝑥̈ cos𝜃 (6)
- Vì các kỹ thuật phân tích và thiết kế điều khiển mà chúng ta sẽ sử dụng trong ví dụ
này chỉ áp dụng cho các hệ thống tuyến tính, nên tập phương trình này cần được
tuyến tính hóa. Cụ thể, chúng ta sẽ tuyến tính hóa các phương trình về vị trí cân bằng
hướng lên theo phương thẳng đứng 𝜃= 𝜋 và sẽ giả sử rằng hệ thống nằm trong một
vùng lân cận nhỏ của trạng thái cân bằng này. Giả định này phải có giá trị hợp lý vì
dưới sự kiểm soát, chúng tôi mong muốn con lắc không lệch quá 20 độ so với phương
thẳng đứng hướng lên trên. Hãy biểu diễn độ lệch của vị trí của quả lê khỏi vị trí cân
bằng, nghĩa là 𝜃= 𝜋+∅ . Một lần nữa giả sử một độ lệch nhỏ ( ∅) từ trạng thái cân
bằng, chúng ta có thể sử dụng như sau các xấp xỉ góc nhỏ của các hàm phi tuyến
trong các phương trình hệ thống của chúng ta:

𝑐𝑜𝑠𝜃 = cos (𝜋 + ∅) ≈ −1 (7)


𝑠𝑖𝑛𝜃 = sin (𝜋 + ∅) ≈ −∅ (8)
𝜃̇ 2 = ∅̇2 ≈ 0 (9
- Sau khi thay các phép tính gần đúng ở trên vào các phương trình điều khiển phi
tuyến tính của chúng ta, chúng ta đi đến hai phương trình chuyển động tuyến tính
hóa. Lưu ý đã được thay thế cho đầu vào F.
(𝐼 + 𝑚𝑙 2 )∅̈ − 𝑚𝑔𝑙∅ = 𝑚𝑙𝑥̈ (10)
(𝑀 + 𝑚)𝑥̈ + 𝑏𝑥̇ + 𝑚𝑙∅̈ = 𝑢 (11)
❖ Chức năng chuyển giao
- Để có được các hàm truyền của các phương trình hệ thống được tuyến tính hóa,
trước tiên chúng ta phải thực hiện phép biến đổi Laplace của các phương trình hệ
thống. Giả sử điều kiện ban đầu bằng không. Kết quả biến đổi Laplace được hiển thị
bên dưới.
(𝐼 + 𝑚𝑙 2 )Φ(𝑠)𝑠 2 − 𝑚𝑔𝑙Φ(𝑠) = 𝑚𝑙𝑋(𝑠)𝑠 2 (12)
(𝑀 + 𝑚)𝑋(𝑠)𝑠 2 + 𝑏𝑋(𝑠)𝑠 − 𝑚𝑙Φ(𝑠)𝑠 2 = 𝑈(𝑠) (13)
- Nhớ lại rằng một hàm truyền đại diện cho mối quan hệ giữa một đầu vào và một
đầu ra duy nhất tại một thời điểm. Để tìm chuyển khoản đầu tiên của chúng tôi

161
-Hàm cho đầu ra Φ(𝑠) và đầu vào U(s) của chúng ta cần loại bỏ X(s) khỏi các phương
trình trên. Giải phương trình đầu tiên cho X(s)
𝐼 + 𝑚𝑙 2 𝑔
𝑋(𝑠) = [ − ] Φ(𝑠) (14)
𝑚𝑙 𝑠2

- Sau đó thay thế ở trên vào phương trình thứ hai.

𝐼 + 𝑚𝑙 2 𝑔 𝐼 + 𝑚𝑙 2 𝑔
(𝑀 + 𝑚) [ − 2
] Φ(𝑠)𝑠 2 + 𝑏 [ − ] Φ(𝑠)𝑠 − 𝑚𝑙Φ(𝑠)𝑠 2 = 𝑈(𝑠)
𝑚𝑙 𝑠 𝑚𝑙 𝑠2
(15)

- Sắp xếp lại, chức năng truyền sau đó là như sau

𝑚𝑙 2
Φ(𝑠) 𝑠
𝑞
= 𝑏(𝐼+𝑚𝑙2 ) 3 (𝑀+𝑚)𝑚𝑔𝑙 2 𝑏𝑚𝑔𝑙
(16)
𝑈(𝑠) 𝑠4 + 𝑠 − 𝑠 − 𝑠
𝑞 𝑞 𝑞

Ở đó: 𝑞 = [(𝑀 + 𝑚)(𝐼 + 𝑚𝑙 2 ) − (𝑚𝑙)2 ] (17)

- Từ hàm truyền ở trên, có thể thấy rằng có cả một cực và một số 0 tại gốc tọa độ.
Chúng có thể bị hủy bỏ và quá trình chuyển chức năng trở thành như sau
𝑚𝑙
Φ(𝑠) 𝑠 rad
𝑞
𝑃𝑝𝑒𝑛𝑑 (𝑠) = = 𝑏(𝐼+𝑚𝑙2 ) 2 (𝑀+𝑚)𝑚𝑔𝑙 𝑏𝑚𝑔𝑙
[ ] (18)
𝑈(𝑠) 𝑠3 + 𝑠 − 𝑠 − 𝑁
𝑞 𝑞 𝑞

- Thứ hai, hàm truyền với đầu ra là vị trí X(s) giỏ hàng có thể được suy ra theo cách
tương tự để đạt được kết quả sau.
(𝐼+𝑚𝑙2 )𝑠2 −𝑔𝑚𝑙
X(𝑠) 𝑞 m
𝑃𝑐𝑎𝑟𝑡 (𝑠) = = 𝑏(𝐼+𝑚𝑙2 ) 3 (𝑀+𝑚)𝑚𝑔𝑙 2 𝑏𝑚𝑔𝑙
[ ] (19)
𝑈(𝑠) 𝑠4 + 𝑠 − 𝑠 − 𝑠 𝑁
𝑞 𝑞 𝑞

3. Không gian trạng thái

162
- Các phương trình tuyến tính hóa của chuyển động nhìn từ trên xuống cũng có thể
được biểu diễn dưới dạng không gian trạng thái nếu chúng được sắp xếp lại thành
một chuỗi các phương trình vi phân bậc. Vì các phương trình là tuyến tính nên chúng
có thể được đưa vào dạng ma trận tiêu chuẩn dưới đây.
0 1 0 0 𝑥 0
𝑥̇ −(𝐼+𝑚𝑙 2 )𝑏 𝑚2 𝑔𝑙 2 𝐼+𝑚𝑙 2
𝑥̈ 0 0 𝑥̇
𝐼(𝑀+𝑚) + 𝑀𝑚𝐼 2 𝐼(𝑀+𝑚) + 𝑀𝑚𝐼 2 𝐼(𝑀+𝑚)+𝑀𝑚𝐼 2
𝜙̇ = 0 1 [∅] + 𝑢
0 0 0
[𝜙̈] 0 −𝑚𝑙𝑏 𝑚𝑔𝑙(𝑀+𝑚) ̇ 𝑚𝑙
[ 𝐼(𝑀+𝑚) + 𝑀𝑚𝐼 2 𝐼(𝑀+𝑚) + 𝑀𝑚𝐼 2
0] ∅ [𝐼(𝑀+𝑚)+𝑀𝑚𝐼2 ]
(20)

𝑥
1 0 0 0 𝑥̇ 0
Y= [ ] [∅] + [ ] 𝑢
0 0 1 0 0
∅̇
(21)
- Ma trận C có 2 hàng vì cả vị trí của xe đẩy và vị trí của con lắc đều là một phần của
đầu ra 𝑌. Cụ thể, giỏ hàng của vị trí là phần tử đầu tiên của đầu ra và độ lệch của con
lắc so với vị trí cân bằng của nó là phần tử thứ hai của 𝑌.
4. Biểu diễn trong Matlab
a. Hàm truyền
- Chúng ta có thể biểu diễn các hàm truyền dẫn ở trên cho hệ thống con lắc ngược
trong MATLAB bằng cách sử dụng các lệnh sau, lưu tệp với tên b1p1pr3.m
M = 0.5;
m = 0.2;
b = 0.1;
I = 0.006;
g = 9.8;
l = 0.3;
q = (M+m)*(I+m*l^2)-(m*l)^2;
s = tf('s');

163
P_cart = (((I+m*l^2)/q)*s^2 -(m*g*l/q))/(s^4 + (b*(I + m*l^2))*s^3/q -((M +
m)*m*g*l)*s^2/q -b*m*g*l*s/q);
P_pend = (m*l*s/q)/(s^3 + (b*(I + m*l^2))*s^2/q -((M + m)*m*g*l)*s/q -
b*m*g*l/q);
sys_tf = [P_cart ; P_pend];
inputs = {'u'};outputs =
{'x';'phi'};set(sys_tf,'InputName',inputs)set(sys_tf,'OutputName',outputs)sys_tf
- Ta có kết quả sau:

b. Không gian trạng thái:


-Chúng ta cũng có thể biểu diễn hệ thống bằng cách sử dụng các phương trình
trạng thái-không gian.Sửdụng các lệnh sau đây, lưu tệp với tên b1p2pr3.m
M = .5;
m = 0.2;
b = 0.1;
I = 0.006;
g = 9.8;
l = 0.3;
p = I*(M+m)+M*m*l^2; %denominator for the A and B matrices A = [0 1 0 0;
0 -(I+m*l^2)*b/p (m^2*g*l^2)/p 0;
0 0 0 1;

164
0 -(m*l*b)/p m*g*l*(M+m)/p 0];
B = [ 0;
(I+m*l^2)/p;
0;
m*l/p];
C = [1 0 0 0;
0 0 1 0];
D = [0;
0];
states = {'x''x_dot''phi''phi_dot'};
inputs = {'u'};
outputs = {'x'; 'phi'};
sys_ss = ss(A,B,C,D,'statename',states,'inputname',inputs,'outputname',outputs)
-Ta có kết quả sau:

165
- Mô hình không gian trạng thái ở trên cũng có thể được chuyển đổi thành dạng hàm
truyền bằng cách sử dụng lệnh tf như hình dưới đây. Ngược lại,mô hình hàm truyền
có thể được chuyển đổi thành dạng không gian trạng thái bằng lệnh
ss.sys_tf = tf(sys_ss)

Task 2: Inverted Pendulum: System Analysis:


Nội dung
• Đáp ứng xung vòng hở
• Phản ứng bước vòng lặp mở
- Từ bài toán chính, ta suy ra các hàm truyền vòng hở của hệ con lắc ngược như sau.
𝑚𝑙
Φ(𝑠) 𝑠 rad
𝑞
𝑃𝑝𝑒𝑛𝑑 (𝑠) = = 𝑏(𝐼+𝑚𝑙2 ) 2 (𝑀+𝑚)𝑚𝑔𝑙 𝑏𝑚𝑔𝑙
[ ] (1)
𝑈(𝑠) 𝑠3 + 𝑠 − 𝑠 − 𝑁
𝑞 𝑞 𝑞

(𝐼+𝑚𝑙2 )𝑠2 −𝑔𝑚𝑙


X(𝑠) 𝑞 m
𝑃𝑐𝑎𝑟𝑡 (𝑠) = = 𝑏(𝐼+𝑚𝑙2 ) 3 (𝑀+𝑚)𝑚𝑔𝑙 2 𝑏𝑚𝑔𝑙
[ ] (2)
𝑈(𝑠) 𝑠4 + 𝑠 − 𝑠 − 𝑠 𝑁
𝑞 𝑞 𝑞

Ở đó: 𝑞 = (𝑀 + 𝑚)(𝐼 + 𝑚𝑙 2 ) − (𝑚𝑙)2 (3)


- Nhắc lại hai hàm truyền trên chỉ có giá trị với giá trị nhỏ của góc 𝜙, đó là độ dời
góc của con lắc từ vị trí thẳng đứng đi lên. Ngoài ra, góc con lắc 𝜃 tuyệt đối bằng
𝜋 + 𝜙.
- Để thiết lập vấn đề ban đầu và dẫn xuất của các hàm truyền ở trên, vui lòng tham
khảo Con lắc ngược: Mô hình hóa hệ thống trang.

166
- Xem xét phản ứng của con lắc đối với xung lực 1N.s tác dụng lên xe đẩy, các yêu
cầu thiết kế đối với con lắc là:
✓ Thời gian giải quyết 𝜃 dưới 5 giây
✓ Góc con lắc 𝜃 không bao giờ lớn hơn 0,05 radian so với phương thẳng đứng
Ngoài ra, các yêu cầu đối với phản hồi của hệ thống đối với lệnh bước 0,2 mét ở vị
trí xe đẩy là:
✓ Thời gian giải quyết trong 𝑥 và 𝜃 dưới 5 giây
✓ Thời gian tăng 𝑥 ít hơn 0,5 giây
✓ Góc con lắc 𝜃 không bao giờ lớn hơn 20 độ (0,35 radian) so với phương thẳng
đứng
1. Đáp ứng xung vòng hở:
- Chúng ta sẽ bắt đầu bằng cách xem xét đáp ứng vòng hở của hệ thống con lắc
ngược. Tạo một m-file mới và gõ như sau các lệnh để tạo mô hình hệ thống (tham
khảo vấn đề chính để biết chi tiết về cách nhận các lệnh này).

- Bây giờ chúng ta có thể kiểm tra đáp ứng xung vòng hở của hệ thống. Cụ thể, chúng
tôi sẽ kiểm tra cách hệ thống phản ứng với một lực xung áp dụng cho xe đẩy sử dụng
xung lệnh MATLAB. Thêm các lệnh sau vào cuối m-file và chạy nó trong cửa sổ
lệnh MATLAB để có biểu đồ liên quan được hiển thị bên dưới.

167
- Như bạn có thể thấy từ cốt truyện, phản hồi của hệ thống hoàn toàn không đạt yêu
cầu. Trên thực tế, nó không ổn định trong vòng lặp mở. Mặc dù con lắc của vị trí
được hiển thị để tăng 100 radian qua (15 vòng quay), mô hình chỉ có giá trị đối với

168
nhỏ. Bạn cũng có thể thấy rằng giỏ hàng của vị trí di chuyển xa vô tận về bên phải,
mặc dù không có yêu cầu về vị trí xe đẩy đối với đầu vào lực đẩy.
- Các cực của một hệ thống cũng có thể cho chúng ta biết về phản ứng thời gian của
nó. Vì hệ thống của chúng tôi có hai đầu ra và một đầu vào nên nó được mô tả bằng
hai chức năng chuyển giao. Nói chung, tất cả các hàm truyền từ mỗi đầu vào đến
mỗi đầu ra của hệ thống đa đầu vào, đa đầu ra (MIMO) sẽ có các cực giống nhau
(nhưng khác số không) trừ khi có sự triệt tiêu cực-không. Chúng tôi sẽ kiểm tra cụ
thể các cực và số không của hệ thống sử dụng chức năng MATLAB zpkdata. Tham
số 'v' hiển thị bên dưới trả về các điểm cực và số 0 dưới dạng vectơ cột chứ không
phải như các mảng ô.
- Các điểm không và cực của hệ thống mà vị trí con lắc là đầu ra được tìm thấy như
hình dưới đây:

Tương tự như vậy, các điểm không và điểm cực của hệ thống trong đó vị trí xe
hàng là đầu ra được tìm thấy như sau:

169
2 Phản hồi bước trong vòng lặp mở:
Vì hệ thống có một cực với phần thực dương nên phản ứng của nó đối với đầu vào
bước cũng sẽ tăng lên không giới hạn. Chúng tôi sẽ xác minh điều này bằng lsim
lệnh có thể được sử dụng để mô phỏng phản ứng của các mô hình LTI đối với các
đầu vào tùy ý. Trong trường hợp này, đầu vào bước 1 Newton sẽ là đã sử dụng.
Thêm đoạn mã sau vào m-file của bạn và chạy nó trong cửa sổ lệnh MATLAB sẽ
tạo ra đồ thị dưới đây.

170
Bạn cũng có thể xác định một số đặc điểm quan trọng của phản hồi bằng cách sử
dụng lệnh lsiminfo như được hiển thị.

171
Các kết quả trên xác nhận kỳ vọng của chúng ta rằng phản hồi của hệ thống đối với
đầu vào bước là không ổn định.
Rõ ràng từ phân tích ở trên rằng một số loại kiểm soát sẽ cần được thiết kế để cải
thiện phản ứng của hệ thống. Bốn các bộ điều khiển ví dụ được bao gồm trong các
hướng dẫn này: PID, quỹ tích gốc, đáp ứng tần số và không gian trạng thái. Bạn có
thể chọn một lựa chọn từ menu bên trái để biết thêm chi tiết.
Lưu ý: Các giải pháp được hiển thị trong các ví dụ về PID, quỹ tích gốc và đáp ứng
tần số có thể không mang lại bộ điều khiển khả thi cho đảo ngược bài toán con lắc.
Như đã nêu trước đây, khi coi con lắc ngược là một hệ thống một đầu vào, một đầu
ra, chúng ta bỏ qua vị trí của giỏ hàng, . Nếu có thể trong các ví dụ này, chúng tôi
sẽ chỉ ra điều gì xảy ra với vị trí của xe đẩy khi bộ điều khiển được thực hiện trên
hệ thống.

172
Task 3: Inverted Pendulum: PID Controller Design
Nội dung

• Cấu trúc hệ thống


• Điều khiển PID
• Điều gì xảy ra với vị trí của giỏ hàng?
1. Kết cấu hệ thống
- Vì chúng ta đang cố gắng điều khiển vị trí của con lắc, vị trí này sẽ trở về phương
thẳng đứng sau lần nhiễu động ban đầu, nên tín hiệu tham chiếu mà chúng ta đang
theo dõi phải bằng không. Ngoại lực tác dụng vào xe đẩy có thể được coi là một
xung động nhiễu loạn. Sơ đồ cho vấn đề này được mô tả dưới đây.

Hình 1.1

- Việc phân tích và thiết kế hệ thống này sẽ dễ dàng hơn nếu trước tiên chúng ta
sắp xếp lại sơ đồ như sau:

173
Hình 1.2

- Hàm truyền kết quảT(s) cho hệthống vòng kín từđầu vào của lực F đến đầu ra của
góc con lắc 𝜙 được xác định như sau:

- Tạo tệp b3p1pr3.m và nhập dòng lệnh sau:


M = 0.5;
m = 0.2;
b = 0.1;
I = 0.006;
g = 9.8;
l = 0.3;
q =(M+m)*(I+m*l^2)-
(m*l)^2; s = tf('s');
P_pend = (m*l*s/q)/(s^3 + (b*(I + m*l^2))*s^2/q - ((M + m)*m*g*l)*s/q
- b*m*g*l/q);
2 Bộ điều khiển PID
- Hàm truyền vòng kín này có thể được mô hình hóa bằng cách thêm mã sau vào
tệp b3p1pr3.m.
Kp = 1;
Ki = 1;
Kd = 1;
C = pid(Kp,Ki,Kd);
T = feedback(P_pend,C);
- Bây giờ chúng ta có thể bắt đầu điều chỉnh bộ điều khiển của mình. Thêm mã

174
sau vào tệp b3p1pr3 và ta có đồ thị sau:
t=0:0.01:10;
impulse(T,t)
title({'Response of Pendulum Position to an Impulse Disturbance';'under
PID Control: Kp = 1, Ki = 1, Kd = 1'});

Hình 2.1

- Phản hồi này vẫn chưa ổn định. Hãy bắt đầu sửa đổi phản ứng bằng cách
tăng mức tăng tỷ lệ. Tăng Kp = 100 để xem nó ảnh hưởng gì đến phản hồi:
Kp = 100;
Ki = 1;
Kd = 1;
C = pid(Kp,Ki,Kd);
T=
feedback(P_pend,
C); t=0:0.01:10;
impulse(T,t)
axis([0, 2.5, -0.2, 0.2]);
title({'Response of Pendulum Position to an Impulse Disturbance';'under
PID Control: Kp = 1, Ki = 1, Kd = 1'});

175
Hình 2.2.

- Thời gian giải quyết phản hồi được xác định là 1,64 giây, tức là ít hơn so với yêu
cầu là 5 giây. Vì sai số trạng thái ổn định tiến về 0 một cách đủ nhanh, nên không
cần thực hiện thêm hành động tích phân nào. Tuy nhiên, phản hồi cao nhất lớn hơn
yêu cầu 0,05 radian. Tăng giá trị Kd=20 để giảm thiểu độ vọt lố.
Kp = 100;
Ki = 1;
Kd = 20;
C = pid(Kp,Ki,Kd);
T = feedback(P_pend,C);
t=0:0.01:10;
impulse(T,t)
axis([0, 2.5, -0.2, 0.2]);
title({'Response of Pendulum Position to an Impulse Disturbance';'under
PID Control: Kp = 100, Ki = 1, Kd = 20'});

176
Hình 2.3

3. Điều gì xảy ra với tọa độ xe đẩy?


- Sơ đồ không hoàn toàn hoàn chỉnh. Khối đại diện cho phản hồi về vị trí của
xe đẩy không được bao gồm vì biến đó không được kiểm soát. Để thấy
được nó, chúng ta cần xem xét sơ đồ khối hệ thống đầy đủ như trong hình
sau.

Hình 3.1

177
- Sắp xếp lại và ta được sơ đồ sau:

Hình 3.2.

- Ở trên, khối C(s) là bộ điều khiển được thiết kế để duy trì phương thẳng đứng
của con lắc. Do đó, hàm truyền vòng kín từ lực đầu vào tác dụng vào giỏ hàng
sang đầu ra của vị trí giỏ hàng được đưa ra bởi như sau.

- Ta lại có hàm truyền của Pcart(s) như sau:

- Việc thêm các lệnh sau vào tệp m của bạn (giả sử Pcart(s) và C(s) vẫn được xác
định) sẽ tạo ra phản hồi về vị trí của xe hàng đối với cùng một xung mà chúng
tôi đã xem xét.
P_cart = (((I+m*l^2)/q)*s^2 - (m*g*l/q))/(s^4 + (b*(I +
m*l^2))*s^3/q - ((M + m)*m*g*l)*s^2/q - b*m*g*l*s/q);
T2 = feedback(1,P_pend*C)*P_cart;
t = 0:0.01:5;
impulse(T2, t);
title({'Response of Cart Position to an Impulse Disturbance';'under PID
Control: Kp = 100, Ki = 1, Kd = 20'})

178
Hình 3.3

- Như bạn có thể thấy, xe chuyển động theo chiều âm với vận tốc gần như
không đổi. Do đó, mặc dù bộ điều khiển PID ổn định góc của con lắc, thiết kế
này sẽ không khả thi để thực hiện trên một hệ thống vật lý thực tế.

Task 4: Inverted Pendulum: State-Space Methods for


Controller Design

Nội dung
• Cực vòng mở
• Quy định bậc hai tuyến tính (LQR)
• Thêm tiền bù
• Kiểm soát dựa trên người quan sát
Từ bài toán chính, phương trình động lực học của hệ con lắc ngược ở dạng không
gian trạng thái như sau:
𝑥̇ 0 1 0 0 𝑥 0
𝑥̈ 0 −0.1818 2.6727 𝑥̇
0] [ ] + [1.8182] 𝑢
𝜙̇ = [ 0 0 0 1 ∅ 0
̈
[𝜙] 0 −0.4545 31.1818 0 ∅ ̇ 4.5455
(1)

179
𝑥
1 0 0 0 𝑥̇ 0
Y= [ ] [∅] + [ ] 𝑢
0 0 1 0 0
̇∅
(2)
Để xem vấn đề này ban đầu được thiết lập như thế nào và các phương trình hệ thống
được suy ra, hãy tham khảo Con lắc ngược: Mô hình hóa hệ thống trang. Đối với
vấn đề này, kết quả đầu ra là độ dịch chuyển của xe ( 𝑥 tính bằng mét) và góc con
lắc ( 𝜙 tính bằng radian) đại diện cho 𝜙 độ lệch của vị trí của pedulum khỏi trạng
thái cân bằng, nghĩa là 𝜃 = 𝜋 + 𝑥
Các tiêu chí thiết kế cho hệ thống này đối với bước 0,2 m ở vị trí 𝑥 xe đẩy mong
muốn như sau:
✓ Thời gian giải quyết trong 𝑥 và 𝜃 dưới 5 giây
✓ Thời gian tăng 𝑥 ít hơn 0,5 giây
✓ Góc con lắc 𝜃 không bao giờ lớn hơn 20 độ so với phương thẳng đứng
✓ Lỗi trạng thái ổn định dưới 2% cho 𝑥 và 𝜃

Như bạn có thể nhận thấy nếu xem qua một số ví dụ về con lắc ngược khác, tiêu chí
thiết kế cho ví dụ này là khác nhau. Trong các ví dụ khác, chúng tôi đã cố gắng giữ
cho con lắc thẳng đứng để phản ứng với một lực nhiễu xung tác dụng lên xe đẩy.
Chúng tôi đã không cố gắng kiểm soát vị trí của xe đẩy. Trong ví dụ này, chúng tôi
đang cố gắng giữ cho con lắc thẳng đứng trong khi điều khiển vị trí của xe di chuyển
0,2 mét về bên phải. Cách tiếp cận thiết kế không gian trạng thái rất phù hợp với
việc kiểm soát nhiều đầu ra như chúng ta có ở đây.
Vấn đề này có thể được giải quyết bằng phản hồi toàn trạng thái. Sơ đồ của loại hệ
thống điều khiển này được hiển thị bên dưới, trong đó 𝐾 là ma trận của kiểm soát lợi
nhuận. Lưu ý rằng ở đây chúng tôi phản hồi tất cả các trạng thái của hệ thống, thay
vì sử dụng đầu ra của hệ thống để phản hồi.

180
1. Cực vòng mở
Trong vấn đề này, đại diện cho lệnh bước của vị trí của xe đẩy. 4 trạng thái đại diện
cho vị trí và vận tốc của xe và góc và vận tốc góc của con lắc. Đầu ra chứa cả vị trí
của xe đẩy và góc của con lắc. Chúng tôi muốn để thiết kế một bộ điều khiển sao
cho khi một bước tham chiếu được cấp cho hệ thống, con lắc sẽ dịch chuyển, nhưng
cuối cùng quay trở lại vị trí ban đầu. không (tức là theo phương thẳng đứng) và xe
đẩy sẽ di chuyển đến vị trí được chỉ định mới. Để xem phản hồi vòng lặp mở của hệ
thống, vui lòng tham khảo Con lắc ngược: Trang phân tích hệ thống.
Bước đầu tiên trong việc thiết kế bộ điều khiển phản hồi trạng thái đầy đủ là xác
định các cực vòng hở của hệ thống. Nhập các dòng sau của mã vào một m-file. Sau
khi thực hiện trong cửa sổ lệnh MATLAB, kết quả xuất ra sẽ liệt kê các cực của
vòng lặp hở (giá trị riêng của ) như hình vẽ phía dưới.

181
Như ta có thể thấy, có một cực ở nửa mặt phẳng bên phải tại 5,5651. Điều này sẽ
xác nhận trực giác của bạn rằng hệ thống không ổn định trong vòng lặp mở.
2 Quy định bậc hai tuyến tính (LQR)
Bước tiếp theo trong quy trình thiết kế là tìm vectơ của mức tăng kiểm soát phản hồi
trạng thái giả sử rằng chúng ta có quyền truy cập (tức là có thể đo) tất cả bốn biến
trạng thái. Điều này có thể được thực hiện theo một số cách. Nếu bạn biết cực vòng
kín mong muốn vị trí, bạn có thể sử dụng lệnh place hoặc acker trong MATLAB.
Một tùy chọn khác là sử dụng lệnh lqr trả về giá trị tối ưu mức tăng của bộ điều
khiển giả sử một nhà máy tuyến tính, hàm chi phí bậc hai và tham chiếu bằng 0
Trước khi chúng tôi thiết kế bộ điều khiển của mình, trước tiên chúng tôi sẽ xác
minh rằng hệ thống có thể điều khiển được. Sự hài lòng của tài sản này có nghĩa là
chúng ta có thể lái xe trạng thái của hệ thống ở bất cứ đâu chúng ta muốn trong thời
gian hữu hạn (dưới các ràng buộc vật lý của hệ thống). Để hệ thống hoàn toàn trạng
thái có thể kiểm soát được, ma trận khả năng kiểm soát phải có thứ hạng trong đó
thứ hạng của ma trận là số hàng độc lập tuyến tính (hoặc cột). Ma trận khả năng điều
khiển của hệ thống có dạng dưới đây. Số tương ứng với số trạng thái biến của hệ

182
thống. Việc thêm các thuật ngữ bổ sung vào ma trận 𝐴 khả năng kiểm soát với lũy
thừa cao hơn của ma trận sẽ không làm tăng thứ hạng của ma trận khả năng kiểm
soát vì các thuật ngữ bổ sung này sẽ chỉ là sự kết hợp tuyến tính của các thuật ngữ
trước đó.
𝐶 = [𝐵 𝐴𝐵 𝐴2 𝐵 … 𝐴𝑛−1 𝐵] (3)
Vì ma trận khả năng kiểm soát của chúng tôi là 4x4, thứ hạng của ma trận phải là 4.
Chúng tôi sẽ sử dụng lệnh MATLAB ctrb để tạo ma trận khả năng kiểm soát và lệnh
MATLAB rank để kiểm tra thứ hạng của ma trận. Thêm các lệnh bổ sung sau vào
tệp m của bạn và chạy trong cửa sổ lệnh MATLAB sẽ tạo ra kết quả sau.

Do đó, chúng tôi đã xác minh rằng hệ thống của chúng tôi có thể điều khiển được và
do đó chúng tôi có thể thiết kế một bộ điều khiển đạt được mục tiêu đã cho yêu cầu.
Cụ thể, chúng tôi sẽ sử dụng phương pháp điều chỉnh bậc hai tuyến tính để xác định
ma trận độ lợi điều khiển phản hồi trạng thái của chúng tôi.
Hàm MATLAB lqr cho phép bạn chọn hai tham số 𝑅 và 𝑄 , sẽ cân bằng tầm quan
trọng tương đối của nỗ lực kiểm soát ( 𝑢) và lỗi (độ lệch so với 0), tương ứng, trong
hàm chi phí mà bạn đang cố gắng tối ưu hóa. Trường hợp đơn giản nhất là giả sử
𝑅 = 1, và 𝑄 = 𝐶′𝐶. Hàm chi phí tương ứng với điều này 𝑅 và 𝑄 đặt tầm quan trọng
như nhau đối với điều khiển và các biến trạng thái là đầu ra (góc của con lắc và vị
trí của xe đẩy). Về cơ bản, phương pháp lqr cho phép kiểm soát cả hai đầu ra. Trong
trường hợp này, nó là khá dễ dàng để làm. Bộ điều khiển có thể được điều chỉnh
bằng cách thay đổi các phần tử khác không trong 𝑄 ma trận để đạt được phản hồi
mong muốn. Đến quan sát cấu trúc của , nhập thông tin sau vào cửa sổ lệnh
MATLAB để xem đầu ra dưới đây.

183
Phần tử ở vị trí (1,1) đại diện cho trọng lượng trên vị trí 𝑄 của xe đẩy và phần tử ở
vị trí (3,3) đại diện cho trọng lượng lên góc của con lắc. Trọng số đầu vào 𝑅 sẽ duy
trì ở mức 1. Cuối cùng, điều quan trọng là giá trị tương đối của 𝑄 và 𝑅 , không phải
của chúng các giá trị tuyệt đối. Bây giờ chúng ta đã biết cách diễn giải ma trận 𝑄,
chúng ta có thể thử nghiệm để tìm ra ma trận 𝐾 sẽ mang lại cho chúng ta "tốt" bộ
điều khiển. Chúng ta sẽ tiếp tục tìm ma trận 𝐾 và vẽ biểu đồ phản hồi tất cả trong
một bước để có thể thực hiện các thay đổi trong điều khiển và nhìn thấy tự động
trong phản ứng. Thêm các lệnh sau vào cuối tệp m của bạn và chạy trong cửa sổ lệnh
MATLAB để nhận giá trị K sau cho và biểu đồ phản hồi được hiển thị bên dưới.

184
Đường cong màu đỏ biểu thị góc của con lắc tính bằng radian và đường cong màu
xanh lam biểu thị vị trí của xe đẩy tính bằng mét. Như bạn có thể xem, âm mưu này
là không thỏa đáng. Độ vọt lố của con lắc và xe đẩy có vẻ ổn, nhưng thời gian ổn
định của chúng cần được cải thiện và xe đẩy thời gian tăng cần phải giảm. Như tôi
chắc rằng bạn đã nhận thấy, vị trí cuối cùng của xe đẩy cũng không ở gần vị trí mong
muốn mà trên thực tế có di chuyển theo hướng ngược lại. Lỗi này sẽ được xử lý
trong phần tiếp theo và ngay bây giờ chúng ta sẽ tập trung vào thời gian ổn định và
thời gian tăng. Quay lại tệp m của bạn và thay đổi ma trận 𝑄 để xem liệu bạn có thể
nhận được phản hồi tốt hơn không. Bạn sẽ thấy rằng việc tăng (1,1) và (3,3) các phần
tử làm cho thời gian ổn định và thời gian tăng giảm xuống, đồng thời làm giảm góc
chuyển động của con lắc. Nói cách khác, bạn đang đặt nhiều hơn trọng lượng trên
các lỗi với chi phí tăng cường nỗ lực kiểm soát 𝑢. Sửa đổi tệp m của bạn sao cho
phần tử (1,1) của 𝑄 là 5000 và (3,3) phần tử là 100, sẽ tạo ra giá trị 𝐾 và phản hồi
bước được hiển thị bên dưới.

185
186
Bạn có thể đã lưu ý rằng nếu bạn tăng giá trị của các phần tử thậm chí cao hơn thì
bạn có thể cải thiện phản hồi nhiều hơn nữa. Các lý do trọng số này được chọn là vì
nó chỉ đáp ứng các yêu cầu thiết kế tạm thời. Tăng cường độ của nhiều hơn nữa sẽ
làm cho lỗi theo nhỏ hơn nhưng sẽ yêu cầu lực điều khiển lớn hơn. Nỗ lực kiểm soát
nhiều hơn thường tương ứng với chi phí lớn hơn (nhiều năng lượng hơn, bộ truyền
động lớn hơn, v.v.).
3 Thêm tiền bù
Bộ điều khiển chúng tôi đã thiết kế cho đến nay đáp ứng các yêu cầu tạm thời của
chúng tôi, nhưng bây giờ chúng tôi phải giải quyết lỗi trạng thái ổn định. Trái ngược
với các phương pháp thiết kế khác, trong đó chúng tôi phản hồi đầu ra và so sánh nó
với đầu vào tham chiếu để tính lỗi, với trạng thái đầy đủ bộ điều khiển phản hồi,
chúng tôi đang phản hồi lại tất cả các trạng thái. Chúng ta cần tính toán giá trị trạng
thái ổn định của các trạng thái nên là bao nhiêu, nhân số đó với mức tăng đã chọn 𝐾
và sử dụng một giá trị mới làm "tham chiếu" của chúng tôi để tính toán đầu vào.
Điều này có thể được thực hiện bằng cách thêm một mức tăng không đổi 𝑁 sau khi
tham chiếu. Sơ đồ dưới đây cho thấy mối quan hệ này:

Chúng ta có thể tìm thấy yếu tố này bằng cách sử dụng hàm rscale.m được xác định
như hình bên dưới. Ma trận được sửa đổi để phản ánh thực tế rằng tài liệu tham khảo
chỉ là một lệnh trên vị trí giỏ hàng.

187
188
189
Task 5: Inverted Pendulum: Simulink Modeling
❖ Nội dung
• Thiết lập vật lý và phương trình hệ thống
• Xây dựng mô hình phi tuyến với Simulink
• Xây dựng mô hình phi tuyến với Simscape
• Tạo phản hồi vòng lặp mở
1. Thiết lập vật lý và phương trình hệ thống:
- Đối với hệ thống này, đầu vào điều khiển là lực F di chuyển xe đẩy theo phương
ngang và đầu ra là vị trí góc của con lắc θ và vị trí nằm ngang của xe đẩy x.
- Cả xe đẩy và con lắc đều có một bậc tự do. Chúng tôi sẽ tạo ra các phương trình vi
phân cho các bậc tự do này từ các nguyên lý đầu tiên sử dụng định luật thứ hai của
Newton được mô tả dưới đây.

190
- Tuy nhiên, cần phải bao gồm các lực tương tác N và P giữa xe đẩy và con lắc để
mô hình hóa đầy đủ động lực học của hệ thống. Việc bao gồm các lực này yêu cầu
mô hình hóa các thành phần x-và y của phép tịnh tiến khối tâm của con lắc cùng với
động lực quay của nó.
- Chúng tôi sẽ mô hình hóa phương trình thành phần x- và y- bổ sung cho con
lắc như hình dưới đây.

- Tuy nhiên, tọa độ vị trí xp và yp là các hàm chính xác của θ. Do đó, chúng ta có
thể biểu diễn các đạo hàm của chúng dưới dạng các đạo hàm của θ. Đầu tiên giải
quyết các phương trình thành phần x, chúng ta đến phần sau.

- Sau đó giải quyết các phương trình thành phần y cho chúng ta những điều sau
đây.

- Sau đó, các biểu thức này có thể được thay thế thành các biểu thức cho N và P
từ trên như sau.

191
- Chúng ta có thểxây dựng mô hình con lắc ngược trong Simulink sửdụng các
phương trình được suy ra ởtrên bằng cách làm theo các bước đã cho.
+ Thêm 4 khối Fcn đểxây dựng các phương trình cho xḋ, 𝜃̇, P,N.
+ Thêm 4 khối Integrator, đầu ra của chúng sẽđại diện cho biến trạng thái x, ẋ, θ,
𝜃̇.
+ Thêm 4 khối Mux nối với mỗi khối Fcn
-Ta có phương trình:

- Ta có

192
2. Xây dựng mô hình phi tuyến với Simscape:
- Trong phần này, chúng tôi hướng dẫn cách xây dựng mô hình con lắc ngược
bằng cách sử dụng các khối mô hình vật lý của Simscape. Các khối trong thư viện
Simscape đại diện cho các thành phần vật lý thực tế; do đó, các mô hình động đa
thể phức tạp có thể được xây dựng mà không cần phải xây dựng các phương trình
toán học từ các nguyên lý vật lý như đã được thực hiện ở trên bằng cách áp dụng
các định luật Newton.
- Theo quy ước chuẩn, chiều dương z hướng ra ngoài mặt phẳng chuyển động.
+ Thêm một khối Body đại diện cho xe đẩy, đặt các tham số Mass thành 0.5
kg. Khối Body theo mặc định bao gồm hai cổng. Vì chúng ta cần các cổng để
xác định nơi con lắc được kết nối với xe đẩy và nơi tác dụng ngoại lực và lực
ma sát, nên một cổng thứ ba phải được thêm vào.

193
+ Thêm một khối đại diện cho con lắc ngược, đặt tham số Mass thành 0.2kg,
Inertia thành 0.006*eye(3) kg*m^2. Xác định điểm của tệp đính kèm CS1 để
có vị trí "[0 0 0]" và điểm gốc là Liền kề và xác định CG cách tệp đính kèm
CS1 0,3 mét

194
+ Thêm 1 khối Revolute để kết nối con lắc với xe đẩy.
+ Thêm 1 khối Joint Condition và Joint Sensor để kết nối các khối khác
đến Revolute.
+ Thêm 2 khối Prismatic để xác định bậc tự do chuyển động của xe đẩy
và tác dụng của các lực lên xe.
+ Thêm 2 khối Ground để xác định cơ sở cho chuyển động của xe đẩy.
+ Thêm 2 khối Joint Actuator để tạo ra lực tác dụng bên ngoài và lực ma
sát, trong khi khối Joint Sensor sẽ cảm nhận sự chuyển động của xe.
+ Thêm 1 khối Gain để biểu diễn hệ số ma sát nhớt P. Đặt giá trị của Gain
thành 0.1.
+ Thêm 2 khối Out1 và 1 khối In1. Ta được mô hình sau:

195
4. Tạo phản hồi vòng mở:
- Bây giờ chúng ta sẽ mô phỏng phản ứng của hệ thống con lắc ngược đối với một
lực xung tác dụng lên xe đẩy.
+ Thêm một khối Pulse Generator và thay đổi các tham sốsau: Period thành 10,
Amptitude thành 1000 và Pulse Width (% of period) thành 0.01

196
Hình 4.1.

+ Thêm 1 khối Scope có 2 cổng vào

Hình 4.2.

- Lưu bài với tên Pend_Openloop.slx, trước khi chạy mô phỏng, mở Model

197
Configuration Parameters, sau đó, từ thư mục bên trái của cửa sổ, chọn
Simscape Multibody 1G. Sau đó, chọn hộp Show animation during
simulation như trong hình bên dưới.
- Chạy mô phỏng, hình ảnh động của con lắc ngược như hình bên dưới sẽ hình
dung chuyển động của hệ thống

Hình 4.3.

Hình 4.4.

198
- Lưu ý rằng con lắc liên tục dao động theo các vòng quay hoàn toàn tại nơi có
góc lăn bằng ±π rad. Hơn nữa, vị trí của xe đẩy không bị giới hạn, nhưng dao
động dưới tác dụng của con lắc dao động.
5. Trích xuất mô hình tuyến tính từ mô phỏng:
-Ngoài việc so sánh mô hình mô phỏng của chúng tôi với các kết quả trước đó
của chúng tôi, cũng có thể mong muốn trích xuất một mô hình tuyến tính cho
mục đích phân tích và thiết kế. Trích xuất một mô hình tuyến tính gần đúng từ
mô hình mô phỏng phi tuyến. Chúng tôi sẽ thực hiện điều này từ bên trong
Simulink.
+ Để bắt đầu, mở 1 trong các mô hình simulink đã được tạo ở trên.
+ Nếu bạn đã tạo mô hình mô phỏng của mình bằng cách sử dụng các biến, cần
phải xác định các hằng số vật lý trong không gian làm việc MATLAB trước khi
thực hiện tuyến tính hóa
M = 0.5;
m = 0.2;
b = 0.1;
I = 0.006;
g = 9.8;
l = 0.3;
+ Mở cửa sổ Linear Analys Tool, để thực hiện tuyến tính hóa, trước tiên chúng
ta cần xác định các đầu vào và đầu ra cho mô hình và điểm hoạt động mà chúng
ta muốn thực hiện tuyến tính hóa.

Hình 5.1.

199
+ Xác định điểm hoạt động để được tuyến tính hóa. Từ Operating Point
chọn Trim Model,chọn Start trimming sẽ tạo điểm op_trim1. Sau đó,
chọn Impulse như hình dưới

Hình 5.3.

Task 6: Inverted Pendulum: Simulink Controller Design


❖ Nội dung
• Đặt vấn đề và yêu cầu thiết kế
• Thực hiện điều khiển PID cho mô hình phi tuyến
• Đáp ứng vòng kín phi tuyến tín
1. Thiết lập vấn đề và yêu cầu thiết kế

200
- Trong bài toán này, xe đẩy với một con lắc ngược, được hiển thị bên dưới, bị "va
chạm" với một lực xung động F.

-Các đại lượng:


+ (M) Khối lượng của xe đẩy 0.5 kg
+ (m) Khối lượng của con lắc 0.2 kg
+ (b) Hệ số ma sát của xe đẩy 0.1 N/m/sec
+ (l) Chiều dài đến khối tâm con lắc 0.3 m
+ (I) Momen quán tính của con lắc 0.006 kg.m^2.
+ (F) Lực tác động lên xe đẩy N
+ (x) tọa độ vị trí của xe đẩy m
+ (theta) góc của con lắc so với trục dọc dưới rad
- Yêu cầu thiết kế:
+ Thời gian lắng dưới 5s;
+ Con lắc không được di chuyển quá 0,05 radian ra khỏi phương thẳng
đứng
2. Triển khai điều khiển PID cho mô hình phi tuyến:
-Mở tệp Pend_Model_Simscape.slx để tận dụng các khả năng hoạt ảnh mà nó cung
cấp;
-Thêm 2 khối Add, đổi List of signs của 1 khối thành +-
-Thêm 1 khối Constant, đổi giá trịcủa nó thành 0. Đây là đầu vào tham chiếu tương
ứng với con lắc theo phương thẳng đứng hướng lên
-Thêm một khối PID Controller, đổi Proportional thành 100, Integral thành 1,
Derivativethành 20
-Nối các khối với nhaunhư hình dưới, lưu với tên Pend_Simscape_Closeloop.

201
Hình 2.1.

3. Phản hồi vòng kín phi tuyến tính:


- Bây giờ chúng ta có thể mô phỏng hệ thống vòng kín. Đảm bảo rằng các thông số
vật lý được thiết lập như sau.
M = 0.5;
m = 0.2;
b = 0.1;
I = 0.006;
g = 9.8;
l = 0.3;
- Chạy mô phỏng, khi mô phỏng chạy, hình ảnh động của con lắc ngược sẽ
trực quan hóa chuyển động kết quả của hệ thống.

202
Hình 3.1.

Task 7: Inverted Pendulum: Simscape Modeling


Nội dung

• Tạo khung thế giới và cấu hình cơ bản


• Lắp ráp mặt phẳng cơ sở và giỏ hàng
• Hệ thống con con lắc và kết nối xe đẩy với con lắc
• Lựa chọn đầu ra cho bộ điều khiển và chuyển đổi góc
• Tạo hệ thống con cho con lắc và giỏ hàng
• Thiết lập vòng kín
• Triển khai bộ điều khiển
1.Tạo khung và cấu hình cơ bản
- Mở trang làm việc Simscape mới. Kích đúp vào Mechanism Configuration và
đặt Gravity
thành [0 0 -9.81].
- Mở khối Solver Configuration và chắc chắn rằng đã chọn Use local solver.
- Mở Configuration Parameters, trong bản Solver, chắc chắn rằng Type được
đặt thành Variable Step; Solver được đặt thành Auto và Stop time là 10.
2 Lắp ráp mặt phẳng cơ sở và xe đẩy

203
- Chúng ta sẽ mô hình hóa xe đẩy như một chất điểm di chuyển dọc theo một trục.
Chúng ta sử dụng World Frame để xác định trục mà xe hàng sẽdi chuyển.

Hình 2.1.

- Thêm 1 khối Scope và 1 khối Pulse Generator, đặt Period thành "10",
Amplitude thành "1000", Pulse Width thành "0.01", and Phase delay
thành “1”.
- Thêm 1 khối Prismatic Joint, nó chỉ cho phép 1 bậc tự do tịnh tiến, được kích
bởi 1 lực vào.

Hình 2.2.

204
- Vì chúng tôi đang mô hình hóa xe trượt dưới dạng chất điểm, nên chỉ khối
lượng mới ảnh hưởng đến kết quả mô phỏng.

Hình 2.3.

- Ta có mô hình sau:

Hình 2.4.

205
- Chạy mô phỏng ta được biểu đồ cho thấy cả quảng đường đã đi và vận tốc của
xe đẩy.

Hình 2.5.

3. Hệ thống con của con lắc và kết nối xe đẩy với con lắc
- Thêm 1 khối Rigid Transform, đặt Method thành Standard Axis, Axis thành+X
và Angle thành 90 deg
- Thêm 1 khối Revolute Joint,
- Thêm 1 khối Solid và hiệu chỉnh như sau

Hình 3.1.

206
Hình 3.2.

Hình 3.3.

Hình 3.4.

207
- Chạy mô phỏng, biểu đồ sau được tạo ra, trong đó người ta có thể thấy rằng việc
bổ sung con lắc làm thay đổi hành vi của xe đẩy cả về quãng đường di chuyển cũng
như vận tốc của nó.

Hình 3.5.

4. Lựa chọn đầu ra cho bộ điều khiển và chuyển đổi góc:


- Bây giờ chúng ta cần đo góc và vận tốc góc của con lắc. Chúng ta cần giới hạn góc
đo được để ở giữa -pi và pi radian, thêm 1 khối Subsystem và làm như sau:

Hình 4.1.

208
Hình 4.2.

- Ta có kết quả sau:

Hình 4.3.

209
5. Tạo hệ thống con cho con lắc và xe đẩy- Thiết lập vòng kín
- Mô hình của bạn bây giờ sẽ xuất hiện như sau. Đầu ra của mô phỏng không
thay đổi so với kết quả trước đó khi ở chế độ vòng lặp mở. Lưu tệp với tên
bai7p2pr3.slx

Hình 5.1.

6. Triển khai bộ điều khiển


- Kích vào khối PID Controller, đặt Proportinal=100, Integral=1,
Derivative=20
- Kích đúp vào Manual Switch để đường dẫn là PID, ta có kết quả sau:

Hình 6.1.

210
Hình 6.2.

- Chạy mô phỏng tạo ra hai biểu đồ sau đây cho thấy phản ứng được kiểm soát
của hệ thống. Sau tác động ban đầu, bộ điều khiển đã có thể đưa nhanh con lắc
góc xuống bằng không và vận tốc con lắc cũng bằng không. Xe chuyển động
chậm dần đều với vận tốc không đổi theo chiều âm X để con lắc nằm cân bằng

Task 8: Aircraft Pitch: System Modeling


❖ Nội dung
• Thiết lập vật lý và phương trình hệ thống
• Hàm truyền và các mô hình không gian trạng thái
• Yêu cầu thiết kế
• biểu diễn MATLAB
1. Thiết lập vật lý và phương trình hệ thống:
- Các phương trình điều chỉnh chuyển động của máy bay là một tập hợp rất phức
tạp gồm sáu phương trình vi phân ghép nối phi tuyến tính. Tuy nhiên, theo một
số giả thiết nhất định, chúng có thể được tách rời và tuyến tính hóa thành các
phương trình dọc và phương. Cao độ máy bay chịu sự chi phối của động lực
dọc.

211
- Các trục tọa độ cơ bản và các lực tác dụng lên máy bay được thể hiện trong hình
bên dưới.

- Chúng ta sẽ giả định rằng máy bay đang trong hành trình ổn định ở độ cao và
vận tốc không đổi; do đó, lực đẩy, lực cản, trọng lượng và lực nâng cân bằng
nhau theo phương x và y. Chúng tôi cũng sẽ giả định rằng sự thay đổi góc độ
sẽ không làm thay đổi tốc độ của máy bay trong bất kỳ trường hợp nào. Phương
trình chuyển động dọc của máy bay có thể được viết như sau.

- Đối với hệ thống này, đầu vào sẽ là góc lệch của bánh lái ð và đầu ra sẽ là góc
cao độ θ
2. Hàm truyền và mô hình không gian trạng thái:
- Trước khi tìm hàm truyền và các mô hình không gian trạng thái, hãy thêm vào
một số giá trị số để đơn giản hóa các phương trình mô hình được hiển thị ở trên:

a) Hàm truyền:
- Để tìm hàm truyền của hệ trên, chúng ta cần thực hiện phép biến đổi Laplace của
các phương trình mô hình trên.

212
- Sau vài bước đại số, bạn sẽ có được hàm truyền sau đây.

b) Không gian trạng thái:


- Nhận thức được thực tế là các phương trình mô hình ở trên đã ở dạng biến trạng
thái, chúng ta có thể viết lại chúng dưới dạng ma trận như hình dưới đây.

- Vì đầu ra của chúng ta là góc cao độ, phương trình đầu ra như sau.

3. Yêu cầu thiết kế:


- Độ vọt lố ít hơn 10%;
- Thời gian vọt lố ít hơn 2s;
- Thời gian ổn định ít hơn 10s;
- Lỗi trạng thái ổn định dưới 2%.
4. Biểu diễn trong MATLAB:
- Bây giờ, chúng tôi đã sẵn sàng đại diện cho hệthống bằng MATLAB. Chạy đoạn
mã sau trong cửa sổ lệnh sẽ tạo ra mô hình hàm truyền vòng lặp mởđược mô tả ở
trên.
s = tf('s');
P_pitch = (1.151*s+0.1774)/(s^3+0.739*s^2+0.921*s)

Hình 4.1.

213
- Để tạo mô hình không gian trạng thái được mô tả ở trên, hãy nhập các lệnh sau
vào dòng

A = [-0.313 56.7 0; -0.0139 -0.426 0;


0 56.7 0];
B = [0.232; 0.0203; 0];
C = [0 0 1];D = [0];pitch_ss = ss(A,B,C,D)

Hình 4.2.

Task 9: Aircraft Pitch: System Analysis


❖ Nội dung
• Phản ứng vòng lặp mở
• Phản hồi vòng kín
1. Phản hồi vòng mở
- Nhập các lệnh này vào b9p1pr3.m:
s = tf('s');

214
P_pitch = (1.151*s+0.1774)/(s^3+0.739*s^2+0.921*s);
- Bây giờ chúng ta hãy xem hệ thống vòng lặp mở không bù trừ hoạt động như thế
nào. Cụ thể, chúng tôi sẽ sử dụng bước lệnh MATLAB để phân tích phản ứng bước
vòng mở trong đó chúng tôi đã điều chỉnh tỷ lệ đầu vào để đại diện cho đầu vào góc
bánh lái (𝛿) là 0,2 radian (11 độ).
t = [0:0.01:10];
step(0.2*P_pitch,t);
axis([0 10 0 0.8]);
ylabel('pitch angle (rad)');
title('Open-loop Step Response');

Hình 1.1.

- Từ sơ đồ trên, chúng ta thấy rằng phản ứng vòng hở không thỏa mãn các tiêu chí
thiết kế. Trên thực tế, phản ứng vòng hở không ổn định. Tính ổn định của hệ thống
có thể được xác định bằng cách kiểm tra các cực của hàm truyền, nơi các cực có thể
được xác định bằng cách sử dụng lệnh pole như hình dưới đây.
pole(P_pitch)

215
Hình 1.2.

- Như được chỉ ra bởi hàm này, một trong các cực của hàm truyền vòng hở nằm trên
trục tưởng tượng trong khi hai cực còn lại nằm trong nửa bên trái của mặt phẳng
phức s. Một cực trên trục tưởng tượng chỉ ra rằng phản hồi tự do của hệ thống sẽ
không phát triển không giới hạn,nhưng cũng sẽ không phân rã về không.
- Mặc dù phản hồi tự do sẽ không phát triển không bị giới hạn, một hệ thống có cực
trên trục tưởng tượng có thể phát triển không bị giới hạn khi được cung cấp đầu vào,
ngay cả khi đầu vào bị giới hạn. Thực tế này phù hợp với những gì chúng ta đã thấy.
Trong trường hợp cụ thể này, cực tại gốc hoạt động giống như một bộ tích phân. Do
đó, khi hệ thống được đưa ra một bước đầu vào, đầu ra của nó tiếp tục phát triển đến
vô cùng giống như cách mà một tích phân của một hằng số sẽ phát triển đến vô cùng
khi giới hạn trên của tích phân lớn hơn.
2. Phản hồi vòng kín:
- Để ổn định hệ thống này và cuối cùng đáp ứng các yêu cầu thiết kế đã cho của
chúng tôi, chúng tôi sẽ thêm một bộ điều khiển phản hồi. Hình dưới đây minh họa
kiến trúc điều khiển mà chúng tôi sẽ sử dụng

Hình 2.1.

216
- Tạo hàm truyền vòng kín cho phần trên
bằng lệnh sau
sys_cl = feedback(P_pitch,1)

Hình 2.2.

- Phản hồi bước tương ứng có thể được tạo bằng cách thêm các lệnh trên và
lệnh sau vào tệp b9p2pr3.m. Chạy tệp m của bạn tại dòng lệnh sẽ tạo ra biểu
đồ được hiển thị bên dưới trong đó các chú thích cho thời gian tăng, thời gian
giải quyết và giá trị cuối cùng có thể được thêm vào biểu đồ từ menu chuột
phải chọn Characteristic

Hình 2.3.

- Kiểm tra phản hồi bước vòng kín ở trên, việc bổ sung phản hồi đã ổn định
hệ thống. Trên thực tế, lỗi trạng thái ổn định dường như được đưa về 0 và
không có hiện tượng quá tốc trong phản ứng, mặc dù các yêu cầu về thời gian
tăng và thời gian ổn định không được đáp ứng. Đặc tính của phản ứng bước
kết quả được chỉ ra bởi vị trí của các cực và số không của hàm truyền của hệ
thống, theo cách tương tự như cách các thuộc tính ổn định của hệ thống.

217
- Dùng các lệnh dưới đây để hiển thị các cực và lỗ trống của hàm truyền vòng
kín
poles = pole(sys_cl)
zeros = zero(sys_cl)

Hình 2.4.

- Giả sử hàm truyền vòng kín có dạng Y (s) / R (s), đầu ra Y (s) trong miền
Laplace được tính như sau trong đó R (s) là một bước có độ lớn 0,2.

- Sau đó, chúng tôi có thể thực hiện khai triển một phần phân số để chia biểu thức
này thành các thuật ngữ đơn giản hơn mà chúng tôi hy vọng có thể nhận ra và có thể
ẩn từ miền Laplace trở lại miền thời gian. Đầu tiên, chúng ta sẽ sử dụng lệnh
MATLAB zpk để chia tử số và mẫu số của (các) đầu ra Y thành các số hạng đơn
giản hơn.
R = 0.2/s;
Y = zpk(sys_cl*R)

Hình 2.5.

218
- Dựa trên điều trên, mẫu số của (các) đầu ra Y của chúng ta có thể được tính
thành số hạng bậc nhất cho cực thực của hàm truyền, số hạng hai cho cực liên
hợp phức của hàm truyền và một cực tại điểm gốc cho đầu vào bước.

- Các giá trị cụ thể của các hằng số A, B, C và D có thể được xác định bằng tính toán
thủ công hoặc bằng cách sử dụng lệnh residue để thực hiện khai triển một phần phân
số như hình dưới đây. Ở đây cú pháp là [r, p, k] = residue(num, den) trong đó num
và den là các mảng chứa các hệ số của tử số và mẫu số tương ứng của hàm Laplace
đang được khai triển.
[r,p,k] = residue(0.2*[1.151 0.1774],[1 0.739 2.072 0.1774 0])

Hình 2.6.

- Dựa vào phần trên, các hệ số A và B trong khai triển của chúng ta lần lượt bằng
0,2 và -0,0881. Các hệ số C và D có thể được xác định bằng cách kết hợp các số
hạng cho các cực liên hợp phức tạp trở lại thành một biểu thức duy nhất như hình
dưới đây.
[num,den] = residue(r(1:2),p(1:2),k);
tf(num,den)

219
- Dựa trên kết quả ở trên, C = -0.1121 và D = -0.08071 và kết quả mở rộng phân
số từng phần của chúng tôi có thể được biểu diễn như sau.

- Sử dụng bảng biến đổi Laplace, phép biến đổi Laplace ngược của biểu thức
trên có thể được sử dụng để tạo ra biểu thức miền thời gian tương ứng được
hiển thị bên dưới.

- Nhập mã sau vào cửa sổ lệnh MATLAB sẽ tạo ra biểu đồ được hiển thị bên
dưới khớp với (trong vòng kết thúc) với biểu đồ được tạo bằng lệnh bước ở
trên.
t = [0:0.1:70];
y = 0.2 -0.0881*exp(-0.08805*t) -exp(-
0.3255*t).*(0.1121*cos(1.3816*t)+0.0320*sin(1.3816*t));
plot(t,y)xlabel('time (sec)');
ylabel('pitch angle (rad)');
title('Closed-loop Step Response');

220
Hình 2.7.

- Sơ đồ trên một lần nữa chứng tỏ rằng hệ thống vòng kín này không đáp
ứng các yêu cầu thiết kế đã cho.

Task 10: Aircraft Pitch: PID Controller Design


❖ Nội dung
• kiểm soát theo tỷ lệ
• kiểm soát PI
• Điều khiển PID
1. Điều khiển tỷ lệ
- Gõ lại dòng lệnh sau:
s = tf('s');
P_pitch = (1.151*s+0.1774)/(s^3+0.739*s^2+0.921*s);
- Mở Control System Designer bằng lệnh controlSystemDesigner(P_pitch)
- Nhấn nút Edit Architecture, ta được hình dưới:

221
Hình 1.1.

- Vì tham chiếu của chúng tôi là một hàm bước của 0,2 radian, chúng tôi có
thể đặt khối bù trước bằng 0,2 để chia tỷ lệ đầu vào bước đơn vị cho hệ thống
của chúng tôi. Chuột phải vào biều đồ, chọn Edit Compensator, chọn F và
đặt giá trị của nó thành 0.2.

Hình 1.2.

- Chọn C thay vì F và đặt giá trị của nó là 2, làm theo các hình sau:

222
Hình 1.3.

- Và ta có kết quả sau:

Hình 1.3.

- Kiểm tra các điều trên cho thấy rằng ngoài lỗi ở trạng thái ổn định, các yêu cầu
thiết kế đã cho vẫn chưa được đáp ứng.Chúng tôi sẽ sử dụng Control System
Designer để tự động điều chỉnh bộ bù tỷ lệ của chúng tôi. Để sử dụng tính năng này,
hãy chuyển đến menu Tuning Methods của thanh công cụ MATLAB và chọn PID
Tuning trong menu Automated Tuning.

223
Hình 1.4.

- Bộ điều khiển này đáp ứng yêu cầu thời gian tăng, nhưng thời gian giải quyết
quá lớn. Bạn có thể cố gắng yêu cầu thời gian phản hồi nhanh hơn,tuy nhiên,
điều này sẽ dẫn đến sự gia tăng độ vọt lố và dao động.

Hình 1.5.

224
2. Điều khiển PI

- Hàm truyền này là bộ bù PI với Ki= 0,0263 và Kp= 1,13. Phản hồi bước vòng kín
kết quả được hiển thị bên dưới

Hình 2.1.

- Từ việc kiểm tra ở trên, nhận thấy rằng việc bổ sung điều khiển tích phân đã
giúp giảm sai số trung bình trong tín hiệu nhanh hơn (lỗi thay đổi dấu hiệu trong
khoảng 20 giây), nhưng nó không giúp giảm dao động.
3. Điều khiển PID:

- Hàm truyền này là bộ bù PID với Ki= 0,5241, Kp= 1,0482 và Kd= 0,5241. Phản
hồi bước vòng kín kết quả được hiển thị bên dưới.

225
Hình 3.1.

- Phản hồi này đáp ứng tất cả các yêu cầu ngoại trừ thời gian lắng ở 19,7 giây
lớn hơn yêu cầu đã cho là 10 giây. Giảm yêu cầu Response Time sẽ làm cho
phản hồi nhanh hơn, trong khi di chuyển thanh trượt Transient Behavior về phía
Robust sẽ giúp giảm dao động. Bộ điều khiển PID kết quả cho các cài đặt hiển
thị được đưa ra bên dưới.

226
Hình 3.2.

Hình 3.3.

- Việc di chuyển cả hai thanh trượt sang phải làm cho phản ứng nhanh hơn và giảm
dao động. Tuy nhiên, thời gian lắng vẫn lớn hơn yêu cầu 10 giây.

227
Hình 3.4.

- Phản hồi này đáp ứng tất cả các yêu cầu nhất định như được tóm tắt bên dưới.
•Vượt quá = 7,5% <10%
•Thời gian tăng = 0,413 giây <2 giây
•Thời gian ổn định = 9,25 giây <10 giây
•Lỗi trạng thái ổn định = 0% <2%
- Do đó, bộ điều khiển PID này sẽ cung cấp hiệu suất cao độ mong muốn của máy
bay.

228
Task 11 Aircraft Pitch: Simulink Controller Design
❖ Nội dung
• Điều khiển phản hồi trạng thái với bù trước
• Độ bền của hệ thống
• Điều chỉnh PID tự động với Simulink
• Điều khiển phản hồi trạng thái với bù trước
1. Kiểm soát phản hồi trạng thái với bù trước:
- Xây dựng mô hình được xây dựng trong phần Aircraft Pitch: Simulink Modeling
để phát triển, mở tệp tên là pitch_control.slx.

Hình 1.1.

- Ở trên, Khối State-Space được định nghĩa như hình dưới đây, trong đó ma trận C
là ma trận xác định. Điều này dẫn đến cả ba biến trạng thái được xuất ra sao cho
chúng có thể được sử dụng bởi luật điều khiển phản hồi trạng thái.

229
Hình 1.2.

-Chạy mô phỏng và ta có kết quả sau:

Hình 1.3.

230
- Yêu cầu về sai số trạng thái ổn định không được đáp ứng vì phản ứng không
nằm trong phạm vi 2% của tham chiếu lệnh 0,2 radian. Nhấp đúp vào khối Gain
và nhập "7.0711" vào trường Gain vừa tạo, lưu với tên là b11p1pr3.slx

Hình 1.4.

- Chạy mô phỏng và ta được kết quả sau:

Hình 1.5.

- Lưu ý ở trên rằng việc bổ sung bộ bù trước đã thành công trong việc đưa lỗi
trạng thái ổn định về 0 sao cho giờ đây tất cả các yêu cầu đã cho đều được
thỏa mãn.
2. Tăng cường hệ thống
- Hạn chế của việc sử dụng bộ bù trước như cách được thực hiện ở trên là nó
được tính toán trên cơ sở một mô hình của nhà máy và nằm bên ngoài vòng
phản hồi do đó đầu ra của điểm nối tổng trong mô hình trên không còn đúng
lỗi. Do đó, nếu có lỗi trong mô hình hoặc nhiễu không xác định, bộ bù trước sẽ

231
không sửa chúng và sẽ xảy ra lỗi trạng thái ổn định. Để khảo sát hiện tượng này,
ta tạo mô hình dưới.

Hình 2.1.

Hình 2.2.

3. Điều chỉnh PID tự động với Simulink


- Thiết kế bộ điều khiển PID cho hệ thống.
+Loại bỏ các khối Gain K và Gain N ̅ . Ngoài ra, xóa tín hiệu phản hồi đã rẽ
nhánh khỏi vector trạng thái x và kết nối lại từ đầu ra θ.
+Chèn một khối PID Controller và đặt nó ngay sau khối Sum.
- Mô hình kết quả sẽ xuất hiện như sau.

232
Hình 3.1.

- Nhấp đúp vào khối PID Controller và nhấp Tune..., ta thấy của sổ PID Tuner

Hình 3.2.

233
Hình 3.3.

- Thời gian phản hồi nhanh hơn cần thiết được chọn để mục tiêu thời gian giải quyết
của chúng tôi được đáp ứng ngay cảkhi có sự xáo trộn.

Hình 3.4.

234
- Kết quả tăng kiểm soát ở góc dưới cùng bên tay phải của cửa sổ. Để xem hiệu
suất của bộ điều khiển, hãy chạy mô phỏng và nhấp đúp vào khối Scope để tạo ra
một hình như hình bên dưới.

Hình 3.5.

- Để đảm bảo rằng chúng tôi không vượt quá giới hạn này, chúng tôi có thể đặt
bộ điều khiển để bão hòa .Điều này được thực hiện trong tab PID Advanced
của khối PID Controller bằng cách chọn hộp Limit output và nhập "0.4363"
cho Upper saturation limit và "-0.4363" cho Lower saturation limit dưới
như thể hiện trong hình bên dưới.

235
Hình 3.6.

Hình 3.7.

- Việc áp dụng các mức tăng này và chạy mô phỏng sẽ tạo ra các kết quả sau
đây đã đáp ứng yêu cầu, ngay cả khi có sự xáo trộn như hình dưới đây. Lưu ý
giới hạn khả năng điều kiển dao động từ -0,4363 đến 0,4363 radian và có tác
dụng giảm độ vọt lố của hệ thống.

236
Task 12: Aircraft Pitch: Simulink Modeling
❖ Nội dung
• Thiết lập vật lý và phương trình hệ thống
• Xây dựng mô hình không gian trạng thái
• Tạo đáp ứng vòng hở và vòng kín
1. Thiết lập vật lý và phương trình hệ thống:
- Mô phỏng mô hình máy bay tuyến tính hóa với bộ điều khiển phản hồi trạng
thái được thiết kế trước đó sử dụng mô hình không gian-trạng thái tuyến tính.

- Các phương trình trên phù hợp với dạng không gian trạng thái tổng quát, tuyến
tính

2. Xây dựng mô hình không gian trạng thái:


- Bây giờ chúng ta sẽ xây dựng một mô hình Simulink của các phương trình
trên. Một lựa chọn là xây dựng một mô hình của nhà máy với phản hồi trạng
thái mô phỏng hình bên dưới.

237
Hình 2.1.

+ Thêm 1 khối Step, đặt Step time thành 0, Final value thành 0.2;
+ Thêm 1 khối Demux và đặt Number of outputs là 3;
+ Thêm 1 khối Scope;
+ Thêm 2 khối Terminator
+ Thêm 1 khối State-Space và cài đặt các giá trị như hình dưới đây

Hình 2.3.

- Ta có mô hình sau, lưu nó với tên là pitch_control.slx.

238
Hình 2.4.

3. Tạo phản hồi vòng mở và vòng kín


- Chạy mô phỏng và ta có kết quả sau:

Hình 3.1.

- Ta thấy phản hồi này không ổn định, vì vậy chúng ta sẽ thêm khối Gain để
điều khiển trạng thái K. Độ lợi này được thiết kế bằng phương pháp Bộ điều
chỉnh bậc hai tuyến tính và dẫn đến tính toán K = [-0,6435 169,6950 7,0711].

- Ta tạo mô hình như dưới đây:

239
Hình 3.2.

- Chạy mô phỏng và ta có kết quả sau:

Hình 3.3.

240
Project 4: Điều khiển Xilanh
1. Giới thiệu mô hình, lập trình chương trình:
-Ta dùng loại PLC S7-1200 (CPU 1215C DC/DC/DC).
-Với trường hợp 2, Xi-lanh tác động 2 chiều.
-Với nút nhấn dạng duy trì trạng thái.

- Gọi START : Là hệ thống bắt đầu khởi động


STOP : Là tắt hệ thống
A- : Là Xi-lanh Lùi
A+ : Là Xi-lanh Tiến
CTHT1 : Là Công tắc hình trình 1 khi Xi-lanh Lùi chạm
CTHT2 : Là Công tắc hình trình 2 khi Xi-lanh Tiến chạm

2. Quy định cổng vào ra trong PLC Tag:

241
3. Chương trình:

4. Nhận xét:

- Trạng thái ban đầu:

242
- Vị trí ban đầu của xilanh là chạm CTHT1. Khi nhấn nút Start, CTHT1 cũng
sẽ … thì bắt đầu xilanh tiến

- Sau khi xilanh chạm đến CTHT2 thì xilanh sẽ đi lùi lại

- Dừng

243
- Khi xilanh đang hoạt động theo trình tự, ta nhấn nút Stop thì xilanh
lui về cho dù nó vẫn chưa chạm đến CTHT2.

PROJECT 5: PHÂN LOẠI SẢN PHẨM


1. Yêu cầu

244
2. Quy định cổng vào ra cho PLC

3. Chương trình

245
246
4. Nhận xét:
- Nhấn START thì băng tải bắt đầu hoạt động

- Khi cảm biến màu xanh có tín hiệu thì xi lanh 1 tiến tới 3s, băng tải dừng lại
5s

- Sau 3s thì xi lanh 1 bắt đầu lùi lại

247
- Sau 5s thì bang tải bắt đầu hoạt động lại

- Khi cảm biến đỏ có tín hiệu thì xi lanh 2 bắt đầu tiến tới 3s, băng tải dừng lại
5s

248
- Sau 3s thì xi lanh 2 bắt đầu lùi lại

- Sau 5s thì bang tải bắt đầu hoạt động lại

249
- Nhấn nút STOP thì băng tải dừng lại và 2 xi lanh lùi lại

250
PROJECT 6: BÃI ĐỖ XE TỰ ĐỘNG
1. Giới thiệu mô hình, lập trình chương trình:
- Ta dùng loại PLC S7-1200 (CPU 1215C DC/DC/DC).

- Gọi SWITCH : Là nút nhấn bật/tắt hệ thống


CBV : Là cảm biến xe vào
CBR : Là cảm biến xe ra
CT-VM : Là công tắt vào mở
CT-VD : Là công tắt vào đóng
CT-RM : Là công tắt ra mở
CT-RD : Là công tắt ra động
DC-VM : Là động cơ vào mở
DC-VD : Là động cơ vào đóng
DC-RM : Là động cơ ra mở
DC-RD : Là động cơ ra động
DEN : Là đèn
251
252
253
254
2. Mô phỏng, chạy chương trình:
- Khi bật nguồn lên, Barie vào và Barie ra đóng.

255
- Sau khi CBV hoạt động, set DC-VM và reset DC-VD, cùng lúc biến nhớ đếm số
lượng vào.

256
- Sau đó Barie chạm CT-VM thì reset DC-VM.

- Khi CBV không còn nhận diện thì sau 2s, Barie tự động đóng lại, set DC-VD.

257
- Sau đó chạm CT-VD thì reset DC-VD.

- Khi CBR hoạt động, set DC-RM, cùng lúc đó thì biến nhớ đếm số lượng ra.

258
- Sau khi Barie chạm CT-RM thì reset DC-RM.

259
- Sau khi CBR không nhận diện thì sau 2s, Barie tự động đóng lại, set DC-RD.

260
- Chạm CT-RD thì reset DC-RD.

- Sau khi biến đếm xe vào 20 lần thì DEN được set lên và đồng thời reset DC-VM,
không cho xe vào nữa. Sau đó chạm CT-VD thì reset DC-VD.

261
- Khi biến đếm dưới 20 thì reset DEN.

262
263
PROJECT 7: HỆ THỐNG LÒ SƯỞI
1. Giới thiệu mô hình, lập trình chương trình:
- Ta dùng loại PLC S7-1200 (CPU 1215C DC/DC/DC).

- Gọi CB-ND: Là cảm biến nhiệt độ


CB-DA : Là cảm biến độ ẩm
L1+ : Là lò sưởi 1 mở
L1- : Là lò sưởi 1 tắt
L2+: Là lò sưởi 2 bật
L2- : Là lò sưởi 2 tắt
S+ : Là cửa mở
S- : Là cửa đóng

264
265
2. Mô phỏng, chạy chương trình:
Trường hợp 1: Khi độ ẩm h < 25%

- Khi nhiệt độ t 0 > 200 C , lò sưởi L1- và L2- tắt, cửa sổ S+ mở ra.

266
- Khi nhiệt độ 100 C < t 0 < 200 C , lò sưởi L1+ bật và L2- tắt, cửa sổ S+ mở ra.

- Khi nhiệt độ t 0 < 100 C , lò sưởi L1+ và L2+ bật, cửa sổ S+ mở ra.

267
Trường hợp 2: Khi độ ẩm h ≥ 25%

- Khi nhiệt độ t 0 > 200 C , lò sưởi L1- và L2- tắt, cửa sổ S- đóng lại.

- Khi nhiệt độ 100 C < t 0 < 200 C , lò sưởi L1+ bật và L2- tắt, cửa sổ S- đóng lại.

- Khi nhiệt độ t 0 < 100 C , lò sưởi L1+ và L2+ bật, cửa sổ S- đóng lại.

268
269

You might also like