You are on page 1of 250

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP


KHOA ĐIỆN

Hà Huy Giáp
Trần Ngọc Sơn, Phạm Văn Huy, Nguyễn Đức Điển
Đặng Thị Tuyết Minh, Nguyễn Thị Thành

TÀI LIỆU HỌC TẬP


ĐIỀU KHIỂN PLC VÀ MẠNG TRUYỀN
THÔNG CÔNG NGHIỆP
(Lưu hành nội bộ)

HÀ NỘI – 2021

1
LỜI NÓI ĐẦU

Tự động hoá công nghiệp và dân dụng ngày càng phát triển. Bộ não trong các hệ
thống tự động hoá là các bộ điều khiển lập trình. Việc học và tìm hiểu về các bộ khiển lập
trình cũng như vận hành nó cho thật tốt đang là nhu cầu cấp thiết đối với học sinh, sinh
viên các ngành kỹ thuật.
Tài liệu được chia thành 5 chương. Chương 1, chương 2, chương 3 bao gồm các
phần cơ bản phù hợp với các bạn mới bắt đầu làm quen với PLC, tuy nhiên nó cũng có
thể là tài liệu tham khảo cho các bạn đã có kiến thức cơ bản về PLC. Chương 4, chương 5
là phần nâng cao tập trung về các vấn đề điều khiển số, truyền thông và màn hình điều
khiển. Cấu trúc chung ở mỗi chương trong tài liệu đều có ví dụ minh họa cho các mục,
ngoài ra cuối mỗi chương có thêm một số câu hỏi và bài tập để đọc giả rèn luyện thêm.
Nhóm tác giả chân thành cảm ơn Ban Giám hiệu trường Đại học Kinh tế - Kỹ thuật
công nghiêp, Khoa Điện, đã động viên và tạo mọi điều kiện thuận lợi để nhóm tác giả
viết tài liệu học tập. Trong quá trình biên soạn không tránh khỏi còn nhiều sai sót, nhóm
tác giả mong nhận được ý kiến đóng góp của các bạn đồng nghiệp và đọc giả để cuốn
sách được hoàn thiện hơn.
Địa chỉ: Khoa Điện, Trường Đại học Kinh tế Kỹ thuật Công nghiệp, 456 Minh
Khai, Hai Bà Trưng, Hà nội.
Website: khoadien.uneti.edu.vn.
Email: khoadien@uneti.edu.vn.

Xin chân thành cảm ơn sự góp ý của các đồng chí và các bạn!
Các tác giả

2
MỤC LỤC
LỜI NÓI ĐẦU ........................................................................................................... 2
MỤC LỤC.................................................................................................................. 3
DANH MỤC HÌNH VẼ, BẢNG BIỂU ................................................................... 7
CHƯƠNG 1 ............................................................................................................. 10
LÝ THUYẾT CƠ SỞ ĐIỀU KHIỂN LOGIC ...................................................... 10
1.1. BIẾN LOGIC VÀ HÀM LOGIC .................................................................. 10
1.1.1. Các phép toán đối với biến logic ............................................................ 11
1.1.2. Tính chất và một số hệ thức cơ bản của đại số logic .............................. 13
1.2. CÁC PHƯƠNG PHÁP BIỂU DIỄN HÀM LOGIC...................................... 14
1.2.1. Bảng chân lý ........................................................................................... 14
1.2.2. Dạng hàm tổng chuẩn đầy đủ và tích chuẩn đầy đủ ............................... 15
1.3.3. Phương pháp biểu diễn hàm logic bằng bảng Karnaugh ........................ 17
1.3. TỔNG HỢP MẠCH TỔ HỢP ....................................................................... 19
1.3.1. Các phương pháp tối thiểu hóa hàm logic .............................................. 19
1.3.2. Xây dựng mạch rơle................................................................................ 27
1.3.3. Xây dựng mạch số .................................................................................. 28
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 1 ................................................................. 31
CHƯƠNG 2 ............................................................................................................. 32
LẬP TRÌNH ỨNG DỤNG VỚI PLC SIEMENS ................................................. 32
2.1. LẬP TRÌNH ỨNG DỤNG VỚI TẬP LỆNH LOGIC .................................. 32
2.1.1. Lập trình với Tag và I/O Mapping .......................................................... 32
2.1.2. Lập trình với các tiếp điểm I/O ............................................................... 37
2.1.3. Lập trình với tập lệnh SET, RESET ....................................................... 41
2.1.4. Lập trình với các tập lệnh nhận biết cạnh xung ...................................... 43
2.2. Lập trình với tập lệnh so sánh .................................................................... 48
2.3. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐỊNH THÌ ........................................... 51
2.3.1. Bộ định thì tạo xung – TP ....................................................................... 52
2.3.2. Bộ định thì trễ sườn lên không nhớ – TON ............................................ 53
2.3.3. Bộ định thì trễ sườn xuống – TOFF........................................................ 55
2.3.4. Bộ định thì trễ sườn lên có nhớ – TONR................................................ 56
2.4. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐẾM.................................................... 58
2.4.1. Bộ đếm lên CTU ..................................................................................... 58

3
2.4.2. Bộ đếm xuống CTD ................................................................................ 60
2.4.3. Bộ đếm lên xuống CTUD ....................................................................... 61
2.4.4. Bộ đếm xung tốc độ cao HSC của S7 – 1200 ......................................... 62
2.5. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ ..... 73
2.5.1. Tập lệnh chuyển đổi dữ liệu/giá trị ......................................................... 73
2.5.2. Lệnh làm tròn giá trị số thực về số nguyên ............................................ 77
2.5.3. Lệnh lấy phần nguyên của số thực – Trunc ............................................ 79
2.6. Lập trình với tín hiệu tương tự - Analog ....................................................... 79
2.6.1. Lập trình xử lý tín hiệu Analog input ..................................................... 79
2.6.2. Lập trình xử lý tín hiệu Analog output ................................................... 84
2.7. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2 ......................................................... 86
CHƯƠNG 3. PHƯƠNG PHÁP LẬP TRÌNH PLC ............................................. 99
3.1. KỸ THUẬT LẬP TRÌNH PLC ..................................................................... 99
3.1.1. Vòng quét chương trình .......................................................................... 99
3.1.2. Cấu trúc chương trình ........................................................................... 100
3.2. PHƯƠNG PHÁP LẬP TRÌNH PLC ........................................................... 102
3.2.1. Phương pháp hàm tác động................................................................... 102
3.2.1.1. Khái niệm ........................................................................................... 102
3.2.1.2. Các bước tổng hợp bằng phương pháp hàm tác động ....................... 103
3.2.1.3. Ví dụ áp dụng ..................................................................................... 106
3.2.2. Phương pháp Grafcet ............................................................................ 112
3.2.2.1. Khái niệm và các thành phần của Grafcet ......................................... 112
3.2.2.2. Các kiểu kết cấu của Grafcet ............................................................. 115
3.2.2.3. Lập các phương trình điều khiển logic từ Grafcet ............................. 118
3.2.2.4. Các bước thực hiện khi tổng hợp mạch trình tự bằng phương pháp
Grafcet ..................................................................................................................... 122
3.2.2.5. Ví dụ áp dụng ..................................................................................... 122
3.3. KHỐI TỔ CHỨC OB VÀ LẬP TRÌNH KỸ THUẬT ................................ 126
3.3.1. Các khối tổ chức OB ............................................................................. 126
3.3.2. Lập trình kỹ thuật .................................................................................. 130
CHƯƠNG 4 ........................................................................................................... 149
THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÒNG KÍN VỚI THUẬT TOÁN PID
......................................................................................................................................... 149

4
4.1. GIỚI THIỆU VỀ THUẬT TOÁN PID ....................................................... 149
4.1.1. Luật điều khiển PID .............................................................................. 149
4.1.2. Phương pháp hiệu chỉnh PID bằng thực nghiệm .................................. 151
4.1.3. Giải pháp thiết kế bộ điều khiển PID.................................................... 153
4.2. CÁC TẬP LỆNH XỬ LÝ THUẬT TOÁN PID ......................................... 156
4.2.1. Bộ điều khiển PID_Compact ................................................................ 156
4.2.2. Bộ điều khiển PID_3Step ..................................................................... 161
4.2.3. Bộ điều khiển PID_Temp ..................................................................... 165
4.3. THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÒNG KÍN CHO BÀI TOÁN ĐIỀU
KHIỂN ỔN ĐỊNH MỨC NƯỚC. ............................................................................... 167
4.3.1. Đặt vấn đề ............................................................................................. 167
4.3.2. Yêu cầu và kết nối phần cứng ............................................................... 168
4.3.3. Hướng dẫn thực hiện bài toán ............................................................... 168
4.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4 ....................................................... 179
CHƯƠNG 5 ........................................................................................................... 184
THIẾT KẾ MẠNG TRUYỀN THÔNG SỬ DỤNG .......................................... 184
PLC SIEMENS...................................................................................................... 184
5.1. MẠNG TRUYỀN THÔNG MODBUS ....................................................... 184
5.1.1. Tổng quan về hệ thống mạng truyền thông MODBUS ........................ 184
5.1.2. Cấu trúc giao thức của Modbus ............................................................ 186
5.1.3. Các chuẩn Modbus đang phổ biến - Modbus RTU .............................. 191
5.1.4. Thiết kế mạng truyền thông Modbus với PLC S7_1200/1500 ............. 197
5.2. MẠNG TRUYỀN THÔNG PROFINET ..................................................... 221
5.2.1. Giới thiệu chung ................................................................................... 221
5.2.2. Các cấu hình truyền thông của PROFINET ......................................... 222
5.2.3. Giao thức truyền và cấu trúc mạng của PROFINET ............................ 225
5.2.4 TẬP LỆNH TRUYỀN THÔNG CỦA PROFINET .............................. 226
5.2.4. Truyền nhận dữ liệu với TCON, TDISCON, TSEND và TRCV (truyền
thông TCP). ............................................................................................................. 231
5.2.5. Lệnh truyền thông bằng S7 Communication ............................................ 234
5.2.5.1. Lệnh nhận dữ liệu GET ..................................................................... 234
5.2.5.2. Lệnh truyền dữ liệu PUT ................................................................... 235
5.3. THIẾT KẾ MẠNG TRUYỀN THÔNG PROFINET .............................. 236

5
5.3.1. Truyền thông giữa IO Controller (PLC S7) .......................................... 236
5.3.2. Ví dụ ứng dụng .................................................................................... 239
5.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5 ........................................................ 249
TÀI LIỆU THAM KHẢO .................................................................................... 250

6
DANH MỤC HÌNH VẼ, BẢNG BIỂU

(Lưu hành nội bộ) ....................................................................................................... 1


Hình 3.1. Vòng quét chương trình ............................................................................ 99
Hình 3.2. Cấu trúc chương trình PLC S7-1200/1500 ............................................. 101
Hình 3.3. Chu trình thực hiện chương trình ............................................................ 102
Hình 3.4. sơ đồ công nghệ ví dụ 1 .......................................................................... 106
Hình 3.5. sơ đồ công nghệ ví dụ 2 .......................................................................... 108
Hình 3.6. Sơ đồ công nghệ ví dụ áp dụng 3............................................................ 111
Hình 3.7. Các thành phần của Grafcet .................................................................... 113
Hình 3.8. Các loại biến cố....................................................................................... 114
Hình 3.9. Các loại hành động có thể xảy ra của các giai đoạn ............................... 115
Hình 3.10. Các trường hợp phân phối và hội tụ ..................................................... 116
Hình 3.11. Các trường hợp quay vòng và rẽ nhánh ................................................ 118
Hình 3.12. Phương trình logic cho giai đoạn các trong trường hợp phân phối ...... 119
Hình 3.13. Phương trình logic cho các giai đoạn trong trường hợp hội tụ ............. 120
Hình 3.14. Phương trình logic cho các giai đoạn trong trường hợp quay vòng và
nhảy qua các giai đoạn .................................................................................................... 121
Hình 3.15. Sơ đồ công nghệ ví dụ 1 phương pháp Grafcet .................................... 122
Bảng 4.1. Tín hiệu vào ra cho công nghệ hình 3.21 ............................................... 122
Hình 3.16. Sơ đồ Grafcet 1 cho công nghệ hình 3.15............................................. 123
Hình 3.17. Grafcet 2 cho công nghệ hình 3.15 ....................................................... 123
Hình 4.18. Sơ đồ công nghệ ví dụ 2 phương pháp Grafcet .................................... 124
Bảng 3.2. Tín hiệu vào ra cho công nghệ hình 3.18 ............................................... 124
Hình 3.19. Grafcet 1 cho công nghệ hình 3.18 ....................................................... 125
Hình 3.20. Grafcet 1 cho công nghệ hình 3.18 ....................................................... 125
Bảng 3.3. Khối tổ chức OB và số lượng (PLC S7-1200) ....................................... 126
Hình 3.21. Quá trình thực hiện quét của khối tổ chức chính OB1. ........................ 128
Hình 3.22. Lập trình cấu trúc với FB/FC ................................................................ 130
Bảng 4.4. Kiểu dữ liệu trong khối dữ liệu DB có thể khai báo .............................. 138
Bảng 3.3. Định dạng vùng nhớ trong khối dữ liệu DB với chế độ Standard .......... 142
Bảng 4.1. Ảnh hưởng của thay đổi tham số PID: ................................................... 150
Hình 4.1: Xác định tham số cho mô hình xấp xỉ của đối tượng ........................... 152

7
Bảng 4.2: Bảng chọn thông số PID phương pháp Ziegler-Nichols thứ nhất. ......... 152
Hình 4.2: Xác định hệ số khuếch đại tới hạn .......................................................... 153
Bảng 4.2: Bảng chọn thông số PID phương pháp Ziegler-Nichols thứ hai. ........... 153
Hình 4.2. Mô phỏng bộ PID số trên Matlab ........................................................... 155
Hình 4.3. Sơ đồ khối của lệnh PID_Compact ......................................................... 157
Hình 4.4. Sơ đồ khối của lệnh PID_Compact với Anti – Windup ......................... 158
Hình 4.5. Sơ đồ khối không có tín hiệu phản hồi ................................................... 163
Hình 4.6. Sơ đồ khối có tín hiệu phản hồi .............................................................. 164
Hình 4.7. Sơ đồ khối của lệnh PIDT1 với Anti-Windup ........................................ 164
Hình 4.8. Sơ đồ khối của PID_Temp ...................................................................... 166
Hình 4.9. Sơ đồ khối của lệnh PIDT1 với anti-windup .......................................... 166
Hình 5.1. Tầng ứng dụng Modbus .......................................................................... 184
Hình 5.2. Cấu trúc cơ bản của ADU và PDU ......................................................... 186
Hình 5.3. Cấu trúc của Modbus TCP/IP và Modbus RTU ..................................... 187
Hình 5.4. Truyền nhận bằng Modbus (Không có lỗi)............................................. 188
Hình 5.5. Truyền nhận bằng Modbus (Khi gặp lỗi) ............................................... 188
Hình 5.6. Mô hình dữ liệu của Modbus .................................................................. 190
Hình 5.7. Quy trình làm việc của Modbus trên Server ........................................... 190
Hình 5.8. Modbus PDU .......................................................................................... 191
Hình 5.9. Cấu trúc tin nhắn của Modbus RTU ....................................................... 192
Hình 5.10. Hệ thống công nghiệp sử dụng Modbus RTU ...................................... 193
Hình 5.11. Giao tiếp Serial ..................................................................................... 194
Hình 5.12. Giao tiếp Parallel .................................................................................. 194
Hình 5.13. Sơ đồ chân (pin) của DB-9 ................................................................... 196
Bảng 5.1. Một số điểm khác biệt của chuẩn vật lý RS-232 và RS-485:................. 197
Hình 5.14. Lưu đồ giải thuật ................................................................................... 202
Hình 5.15. PROFINET đáp ứng mọi yêu cầu cho công nghệ tự động hóa ............ 221
Hình 5.1. Tổng quan về Profinet............................................................................. 222
Hình 5.17. Truyền thông Profinet IO và Proxy PN/BP .......................................... 223
Hình 5.4. Mối liên hệ giữa CR và AR .................................................................... 224
Hình 5.18. Một thiết bị trường có thể truy cập bởi nhiều IO Controller ................ 224
Hình 5.19. Module hóa với Profinet CBA .............................................................. 225
Hình 5.19. PROFINET theo mô hình OSI .............................................................. 225

8
Hình 5.20. Các kiểu cấu trúc mạng Profinet ........................................................... 226
Bảng 5.2. Protocol và khai báo vùng nhận dữ liệu. ................................................ 226
Bảng 5.2. Protocol và lệnh truyền thông ................................................................ 227
Bảng 5.3. Tham số của tập lệnh TSEND_C ........................................................... 229
Bảng 5.4. Tham số của tập lệnh TRCV_C ............................................................. 230
Bảng 5.5. Tham số của tập lệnh TCON/TDISCON ............................................... 231
Bảng 5.6. Tham số của tập lệnh TSEND ................................................................ 232
Bảng 5.7. Tham số của tập lệnh TRCV_C ............................................................. 233
Bảng 5.8. Tham số của tập lệnh GET ..................................................................... 234
Bảng 5.9. Tham số của tập lệnh PUT ..................................................................... 235

9
CHƯƠNG 1
LÝ THUYẾT CƠ SỞ ĐIỀU KHIỂN LOGIC
MỤC TIÊU CHƯƠNG 1
Chương 1 cung cấp cho người học những khái niệm cơ bản về biến logic, hàm
logic, các phương pháp biểu diễn hàm logic, phương pháp tổng hợp mạch tổ hợp và mạch
trình tự giúp người học có cái nhìn tổng quan khi giải quyết một bài toán điều khiển
logic.

1.1. BIẾN LOGIC VÀ HÀM LOGIC


Trong cuộc sống hàng ngày, các sự vật và hiện tượng thường được biểu diễn ở hai
mặt đối lập rõ rệt. Con người thường nhận thức sự vật và hiện tượng bằng cách phân biệt
hai trạng thái đó. Ví dụ: Một vật đẹp – xấu, nước sạch – bẩn, chất lượng sản phẩm tốt –
xấu.
Các phần tử logic điện từ luôn luôn làm việc trong chế độ chuyển mạch: hoặc là
đóng (nối liền mạch - ON), hoặc là mở (ngắt mạch – OFF). Các trạng thái tiếp điểm hoặc
là đóng hoặc là mở. Với các thiết bị logic điện tử tín hiệu trên các cửa vào hoặc cửa ra
của chúng cũng chỉ có thể ở một trong hai mức đối lập: hoặc là đang ở mức thấp, hoặc là
đang ở mức cao.
Giữa thế kỷ XIX (1854) George Boole (một nhà toán hoc người Anh) đã xây dựng
các cơ sở toán học để tính toán các hàm và biến chỉ lấy với hai giá trị 0 và 1, hàm và biến
đó được gọi là hàm và biến logic, cơ sở toán học để tính toán các hàm và biến đó gọi là
đại số logic. Đại số logic cũng có tên là đại số Boole vì lấy theo tên nhà toán học Boole,
người có công đầu trong việc xây dựng nên công cụ đại số logic này.
 x  0 Khi x  1

Một biến x được gọi là biến logic nếu:  x  1 Khi x  0

Trong đó 0 và 1 là hai trạng thái đối lập nhau với:


0  1 - nghịch đảo của trạng thái 0 là 1,
1  0 - nghịch đảo của trạng thái 1 là 0.
Chú ý: Các con số 0 và 1 ở đây không phải là con số định lượng (số đếm) mà là hai
ký hiệu trạng thái. Các biến logic còn được gọi là biến nhị phân, biến hai trị, vì nó chỉ
chấp nhận hai trị đối lập 1 và 0.
Hàm logic là một phép ánh xạ lên biến logic để cho ta giá trị hàm tương ứng. Hàm
logic tổng quát là hàm n biến vào:
y  f ( x1 , x2 ,..., xn ) với các biến x1 , x2 ,..., xn là các biến logic.
Hàm logic cũng là một đại lượng hai trị: chỉ nhận giá trị 0 hoặc 1.

10
1.1.1. Các phép toán đối với biến logic
Các phép toán cơ bản của các biến logic là AND, OR và NOT, hoặc tổ hợp của các
phép toán cơ bản là NAND, NOR, XOR, XNOR.
 Phép toán NOT

Phép toán NOT là phép toán nghịch đảo của một biến logic. Phép toán NOT của
biến logic x , ký hiệu là x .
Bảng trạng thái của phép toán NOT như bảng 1.1.
Bảng 1.1. Bảng trạng thái phép toán NOT
x x
0 1
1 0
 Phép toán OR

Phép toán OR là phép cộng (tuyển, hợp, hoặc) các biến logic, ký hiệu: +, ∪.
Kết quả phép toán OR của các biến logic nhận giá trị 1 khi có ít nhất một trong các
biến nhận giá trị 1, nó nhận giá trị 0 khi tất cả các biến vào nhận giá trị 0.
Bảng trạng thái với 2 biến x1 , x2 của phép toán OR như bảng 1.2.
Bảng 1.2. Bảng trạng thái phép toán OR
x1 x2 x1  x2
0 0 0
0 1 1
1 0 1
1 1 1
 Phép toán AND

Phép toán AND là phép nhân (hội, và, giao) của các biến logic, ký hiệu: . , ∩). Kết
quả phép toán AND nhận giá trị 0 khi có ít nhất một trong các biến vào nhận giá trị 0, nó
nhận giá trị 1 khi tất cả các biến vào nhận giá trị 1.
Bảng trạng thái với 2 biến x1 , x2 của phép toán AND được viết như bảng 1.3.
Bảng 1.3. Bảng trạng thái phép toán AND
x1 x2 x1. x2
0 0 0
0 1 0

11
1 0 0
1 1 1

 Phép toán NOR

Kết quả phép toán NOR (NOT - OR) là nghịch đảo của phép toán OR. Với x1 , x2 là
các biến logic, ta có bảng trạng thái của phép toán NOR như bảng 1.4.
Bảng 1.4. Bảng trạng thái phép toán NOR
x1 x2 x1  x2 x1  x2
0 0 0 1
0 1 1 0
1 0 1 0
1 1 1 0
 Phép toán NAND

Kết quả phép toán NAND (NOT - AND) là nghịch đảo của phép toán AND. Với
x1 , x2 là các biến logic, ta có bảng trạng thái của phép toán NAND như bảng 1.5.
Bảng 1.5. Bảng trạng thái phép toán NAND
x1 x2 x1. x2 x1. x2
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0
 Phép toán XOR

Phép toán XOR (exclusive - OR) của hai biến logic nhận giá trị 1 nếu chỉ có một
trong hai biến có giá trị 1 và biến còn lại có giá trị 0. Với x1 , x2 là các biến logic, ta có
bảng trạng thái của phép toán XOR như bảng 1.6.
Bảng 1.6. Bảng trạng thái phép toán XOR
x1 x2 x1  x2
0 0 0
0 1 1
1 0 1

12
1 1 0

Phép toán XOR có thể biểu diễn thành các phép toán tương đương như sau:
x1  x2  x1 x2  x1 x2
 Phép toán XNOR

Kết quả phép toán XNOR (exclusive - NOR) là nghịch đảo của phép toán XOR.
Với x1 , x2 là các biến logic, ta có bảng trạng thái của phép toán XNOR được viết như
bảng 1.7 sau.
Bảng 1.7. Bảng trạng thái phép toán XNOR
x1 x2 x1  x2 x1  x2
0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1
1.1.2. Tính chất và một số hệ thức cơ bản của đại số logic
Tính chất của đại số logic được thể hiện ở 4 luật cơ bản là: luật hoán vị, luật kết
hợp, luật phân phối, luật nghịch đảo.
- Luật hoán vị:

x1  x2  x2  x1
x1. x2  x2 . x1
- Luật kết hợp:

x1  x2  x3  ( x1  x2 )  x3  x1  ( x2  x3 )
x1. x2 . x3  ( x1. x2 ). x3  x1. (x2 . x3 )
- Luật phân phối:

( x1  x2 ). x3  x1. x3  x2 . x3
x1  x2 . x3  ( x1  x2 ). (x1  x3 )
- Luật nghịch đảo:

x1. x2  x1  x2 , x1  x2  x1. x2
Luật nghịch đảo tổng quát được thể hiện bằng định lý De Morgan:

13
x1  x2  x2  ...  x1. x2 . x3 ...
x1. x2 . x3 ....  x1  x2  x3 + ...
Một số hệ thức cơ bản thường dùng trong đại số logic như trong bảng 1.8.
Bảng 1.8. Một số hệ thức cơ bản thường dùng
1 x0 x 10 x1. x2  x2 . x1
2 x.1  x 11 x1  x1. x2  x1
3 x.0  0 12 x1.( x1 + x2 )  x1
4 x 1  1 13 x1. x2  x1. x2  x1
5 xx  x 14 ( x1  x2 ). (x1  x2 )  x1
6 x. x  x 15 ( x1  x2  x3 )  ( x1  x2 )  x3

7 x  x 1 16 x1. x2 . x3  ( x1. x2 ). x3
8 x. x  0 17 x1  x2  x1. x2
9 x1  x2  x2  x1 18 x1. x2  x1  x2

1.2. CÁC PHƯƠNG PHÁP BIỂU DIỄN HÀM LOGIC


1.2.1. Bảng chân lý
Quan hệ vào/ra đơn trị của hàm được biểu diễn dạng bảng tương ứng giữa vào và ra
được gọi là bảng chân lý. Dạng này được thiết lập theo yêu cầu điều khiển của công
nghệ.
Trong cách biểu diễn này, mỗi biến được biểu diễn bằng một cột, số hàng của bảng
bằng số trạng thái vào tối đa của hàm. Hàm logic tổng quát n biến thì bảng có:
 (n+2) cột: gồm n cột cho biến logic vào, một cột cho hàm ra và một cột chỉ số thứ
tự các tổ hợp biến được ghi dưới dạng số thập phân.

 2n hàng tương ứng với 2n tổ hợp biến.

Ví dụ: Một hàm 3 biến với giá trị hàm đã cho được biểu diễn thành bảng chân lý
như bảng 1.9.

14
Bảng 1.9. Bảng trạng thái hàm ba biến
STT x1 x2 x3 y

0 0 0 0 1
1 0 0 1 0
2 0 1 0 “x”
3 0 1 1 “x”
4 1 0 0 0
5 1 0 1 1
6 1 1 0 “x”
7 1 1 1 1
Ghi chú: Những chỗ đánh dấu “x” là giá trị không xác định (có thể là 0 hoặc 1).
1.2.2. Dạng hàm tổng chuẩn đầy đủ và tích chuẩn đầy đủ
 Cách viết hàm dưới dạng tổng chuẩn đầy đủ

- Chỉ quan tâm đến tổ hợp biến mà hàm có giá trị bằng 1, giá trị hàm được viết là
tích các biến trong tổ hợp biến đó – gọi là tích thành phần. Trong mỗi tích thành
phần, các biến có giá trị bằng 1 được giữ nguyên, còn các biến có giá trị bằng 0 thì
được lấy giá trị đảo, nghĩa là nếu xi=1 thì trong biểu thức tích sẽ được viết là xi,
còn nếu xi = 0 thì trong biểu thức tích được viết bằng xi .

- Hàm tổng chuẩn đầy đủ là tổng các tích tổ hợp biến mà tại đó giá trị hàm bằng 1.

 Cách viết hàm dưới dạng tích chuẩn đầy đủ

- Chỉ quan tâm đến tổ hợp biến mà hàm có giá trị bằng 0, giá trị hàm được viết là
tổng các biến trong tổ hợp biến đó – gọi là tổng thành phần. Trong mỗi tổng thành
phần, các biến có giá trị 0 được giữ nguyên, còn các biến có giá trị 1 được lấy đảo,
nghĩa là nếu xi = 0 thì trong biểu thức tổng sẽ được viết là xi, còn nếu xi = 1 thì
trong biểu thức tổng được viết bằng xi .

- Hàm tích chuẩn đầy đủ là tích các tổng tổ hợp biến mà tại đó giá trị hàm bằng 0.

Ví dụ: Một hàm 3 biến với giá trị, được biểu diễn thành bảng:
STT x1 x2 x3 y

0 0 0 0 1

15
1 0 0 1 0
2 0 1 0 “x”
3 0 1 1 “x”
4 1 0 0 0
5 1 0 1 1
6 1 1 0 “x”
7 1 1 1 1
Dạng tổng chuẩn đầy đủ: Hàm f có giá trị 1 tại các tổ hợp biến có thứ tự là 0, 5, 7 và
được viết lại như bảng 1.10 sau.
Bảng 1.10. Biểu diễn tổ hợp biến dạng tích thành phần
Thứ tự tổ hợp Tổ hợp giá trị biến Tích
biến x3 x2 x1 thành phần

0 0 0 0 x3 .x2 .x1

5 1 0 1 x3 .x2 .x1

7 1 1 1 x3 .x2 .x1

Như vậy:
f  x3 .x2 .x1  x3 .x2 .x1  x3 .x2 .x1
Dạng tích chuẩn đầy đủ: Hàm f = 0 tại các tổ hợp biến theo thứ tự là 1 và 4, ta viết
lại như bảng 1.11 sau:
Bảng 1.11. Biểu diễn tổ hợp biến dạng tổng thành phần
Thứ tự tổ hợp Tổ hợp giá trị biến Tổng
biến thành phần
x1 x2 x3
1 0 0 1 x3  x2  x1

4 1 0 0 x3  x2  x1

Như vậy:
f  ( x3  x2  x1 )( x3  x2  x1 )
Chú ý: Thường viết các hàm trên dưới dạng sau:
Với tổng chuẩn đầy đủ: f   0,5, 7 ; N  2,3, 6
Với tích chuẩn đầy đủ: f  1, 4 ; N  2,3, 6

16
Trong đó: N = 2, 3, 6 là các thứ tự tổ hợp biến mà hàm không xác định.
1.3.3. Phương pháp biểu diễn hàm logic bằng bảng Karnaugh
Nguyên tắc xây dựng bảng Karnaugh là:
- Để biểu diễn một hàm logic n biến, cần thành lập một bảng có 2n ô, mỗi ô tương
ứng với một tổ hợp biến.

- Các ô cạnh nhau hoặc đối xứng nhau chỉ cho phép khác nhau về giá trị của một
biến (mã Gray).

- Đánh số thứ tự các ô trong bảng tương ứng với thứ tự số thập phân của của tổ hợp
biến đó (cột 1 của bảng chân lý). Các số này được ghi ở góc trái mỗi ô tương ứng.

- Trong các ô ghi giá trị của hàm tương ứng với giá trị của tổ hợp biến đó.

Hình 1.1 và hình 1.2 là bảng Karnaugh cho 2 và 3 biến. Các bảng hình 1.3, hình 1.4
và hình 1.5 là bảng Karnaugh cho hàm 4 biến, 5 biến và 6 biến.

a) b)
Hình 1.1. Bảng Karnaugh cho hàm 2 biến, ví dụ: f  1, 2 ; N  3

Hình 1.2. Bảng Karnaugh cho hàm 3 biến, ví dụ: f  1,3,5 ; N  2, 4, 7

17
Hình 1.3. Bảng Karnaugh cho hàm 4 biến

Hình 1.4. Bảng Karnaugh cho hàm 5 biến

18
Hình 1.5. Bảng Karnaugh cho hàm 6 biến

1.3. TỔNG HỢP MẠCH TỔ HỢP


Việc tổng hợp mạch tổ hợp thực chất là thiết kế mạch tổ hợp. Nhiệm vụ chính ở đây
là thiết kế được mạch tổ hợp thỏa mãn yêu cầu kỹ thuật nhưng mạch phải tối giản. Bài
toán tổng hợp là bài toán phức tạp, vì ngoài các yêu cầu về chức năng logic, việc tổng
hợp mạch còn phụ thuộc vào việc sử dụng các phần tử, chẳng hạn như phần tử là loại:
contactor – rơle, loại phần tử khí nén hay loại phần tử là loại bán dẫn vi mạch
chuẩn…Với mỗi loại phần tử được sử dụng thì ngoài nguyên lý chung về mạch logic còn
đòi hỏi phải bổ sung những nguyên tắc riêng lúc tổng hợp và thiết kế hệ thống. Tuy nhiên
phạm vị đề cập ở đây chỉ tập trung vào việc đáp ứng các chức năng logic và tối thiểu hóa
mạch logic.
Như đã đề cập phần biểu diễn hàm logic trong chương I, ta có thể biểu diễn hàm
logic dưới dạng biểu thức đại số từ bảng chân lý. Từ biểu thức đại số đó ta có thể sử dụng
các phần tử logic để thực hiện mạch logic. Tuy nhiên biểu thức đại số mà ta nhận được
trong chương I thường không tối thiểu, nghĩa là số lượng biến và phép toán là không tối
ưu. Do vậy số lượng phần tử logic cần thiết để thực hiện hàm logic sẽ lớn, gây ra tăng chi
phí và phức tạp trong việc gỡ rối.
1.3.1. Các phương pháp tối thiểu hóa hàm logic
Ở phần dưới đây sẽ đề cấp đến một số phương pháp tối thiểu hóa hàm logic tổ hợp.
- Phương pháp biến đổi đại số.

19
- Phương pháp bảng Karnaugh.

- Phương pháp Quine – Mc Cluskey.

a) Phương pháp tối thiểu hàm logic bằng biến đổi đại số
Phương pháp đại số là phương pháp dùng các biến đổi đại số để rút gọn hàm logic.
Việc rút gọn hàm thường dựa vào các biểu thức sau đây:
a  a 1 , a.a  0
aa a , a.a  a ,
a  a.b  a , a (a  b )  a ,
a  a .b  a  b , a (a  b)  a.b
Ví dụ, cho hàm:
f  ab  ab  ab
 (ab  ab)  (ab  ab )
 b(a  a)  a(b  b )
ba
Phương pháp đại số có ưu điểm là khá trực quan. Tuy nhiên phương pháp này có
nhược điểm là rất khó có thể đánh giá được kết quả thu được đã tối ưu hay chưa.
b) Phương pháp dùng bảng Karnaugh
Quá trình tối giản hàm theo phương pháp này gồm các bước sau đây:
Bước 1: Biểu diễn hàm đã cho dưới dạng bảng Karnaugh.
Bước 2: Thiết lập các vòng lân cận
Vòng lân cận là vòng nối liền các ô lân cận. Các ô lân cận là các ô cùng giá trị đầu
ra (f) nhưng có một biến đổi trị giữa hai tổ hợp biến của chúng.
Có hai loại vòng lân cận: vòng lân cận 0, nối các ô lân cận có hàm f = 0, tổ hợp biến
của chúng là các maxtec; vòng lân cận 1, nối các ô lân cận có hàm f = 1, tổ hợp biến của
chúng là các mintec.
Nguyên tắc thiết lập vòng lân cận là phải tạo được các vòng nối các ô lân cận có
những tính chất bắt buộc sau đây:
- Số ô của mỗi vòng là 2k với k là số nguyên dương càng lớn càng tốt, vì k chính là
số biến đổi trị trong vòng sẽ mất đi.
- Vòng lân cận phải có tính đối xứng, sẽ có một đến hai trục đối xứng, các trục đối
xứng này sẽ là trục biến này hoặc cạnh biến kia. Vi phạm tính chất này sẽ không xác định
được kết quả hoặc cho kết quả sai.
- Các vòng lân cận có thể giao nhau tức là phủ lẫn nhau một số ô (bằng số ô chung).
Nhưng không được có vòng lớn chứa hết tất cả các ô của một vòng con khác. Lúc này

20
vòng con vô nghĩa không cần thiết phải tính lặp lại các ô của vòng con này và vòng con
bị loại bỏ.
- Để có thể tạo được những vòng lân cận có k lớn nhất có thể, thì một số ô của bảng
có thể dùng nhiều lần không hạn chế - nghĩa là một ô có thể tham gia nhiều vòng.
- Tất cả các ô cùng trị đầu ra mà ta lập vòng cần phải xếp hết vào vòng, không được
bỏ xót một ô nào. Nếu có một vài ô nào đó không thể xếp vào vòng nào, thì mỗi ô lẻ này
sẽ là một vòng với k = 0.
Bước 3: Xác định biểu thức của các vòng lân cận đã lập và biểu thức tối giản của
hàm.
-Biểu thức của vòng lân cận 1 là một tích các biến không đổi trị trong vòng với quy
ước: 1 là thuận biến.
- Biểu thức tối giản của hàm lúc này là tuyển chuẩn tối giản TCTG:
TCTG = ∑ biểu thức các vòng lân cận 1
- Biểu thức của vòng lân cận 0 là một tổng các biến không đổi trị trong vòng với
quy ước : 0 là thuận biến.
- Biểu thức tối giản của hàm lúc này là hội chuẩn tối giản HCTG
HCTG = ∏ biểu thức các vòng lân cận 0
Ví dụ 2.1: Tối thiểu hàm logic sau: f (a, b, c)   (0,1, 2, 4, 6, 7)
+ Lập bảng chân lý:
STT a b c f
0 0 0 0 1
1 0 0 1 1
2 0 1 0 1
3 0 1 1 0
4 1 0 0 1
5 1 0 1 0
6 1 1 0 1
7 1 1 1 1
+ Thành lập bảng Karnaugh:

21
Từ bảng Karnaugh ta có: f (a, b, c)  A  B  C  ab  c  ab
Ví dụ 2.2: Tối thiểu hàm logic sau:
f (a, b, c)   (0,1, 2, 4, 6, 7)
+ Lập bảng chân lý: Như ví dụ 1
+ Thành lập bảng Karnaugh:

Từ bảng Karnaugh ta có: f (a, b, c)  A.B.C  (a  c).c.(a  b)


Ví dụ 2.3: Tối thiểu hàm logic sau:
f (a, b, c)   (0,5, 7) với N=2, 3, 6 (biến a là MSB)
+ Lập bảng chân lý: như ví dụ 1
+ Thành lập bảng Karnaugh:

22
Trong ví dụ này có cả các tổ hợp biến không xác định, nên khi thiết lập các vòng lân
cận ta có thể kết hợp với ô có giá trị 1 và các ô không xác định để được nhóm có số ô là
tối đa. Chú ý rằng không nhất thiết các vòng phải phủ hết các ô không xác định.
Từ bảng Karnaugh ta có: f (a, b, c)  A  B  ac  ab
Nhận xét: Phương pháp dùng bảng Karnaugh có ưu điểm đơn giản, trực quan, dễ
thực hiện. Tuy nhiên khi số biến tăng lên (n >5), thì phương pháp này trở lên phức tạp và
khó khăn.
c) Tối thiểu hóa hàm logic bằng phương pháp Quine Mc.Cluskey
Phương pháp Quine Mc.Cluskey được thực hiện như các bước dưới đây. Để minh
họa cho phương pháp này, các bước được ví dụ minh họa cho hàm logic sau:
f (a, b, c)   (0,1, 2, 4, 6, 7)
Bước 1: Ghi các tổ hợp biến làm cho hàm có giá trị bằng 1 theo mã nhị phân. Quy
ước: Biến nào nghịch đảo thì thay bằng 0, biến nào không nghịch đảo thì thay bằng 1.
Trường hợp hàm có giá trị không xác định, thì giá trị đó được coi như bằng 1.
Hàm logic biểu diễn dưới dạng tổng chuẩn đầy đủ như sau:
f (a, b, c)  abc  abc  abc  abc  abc  abc
000 001 100 111 010 110
Bước 2: Tìm hàm logic thu gọn.
Sắp xếp các nhóm của các tổ hợp biến theo mã nhị phân theo thứ tự các chữ số 1
trong tổ hợp biến tăng dần từ 0, 1, 2…(cũng có nghĩa là các chữ số 0 trong tổ hợp biến
giảm dần), như bảng A trong bảng 2.1.
So sánh nhóm thứ n với nhóm thứ (n + 1): lấy lần lượt từng tổ hợp biến nhóm thứ n
so sánh với từng tổ hợp biến nhóm (n+1). Hai tổ hợp biến so sánh được với nhau khi
chúng chỉ khác nhau về giá trị ở một biến. Những tổ hợp biến so sánh được thì ta ký hiệu
dấu (*) ở trên đầu. Hai tổ hợp biến so sánh được với nhau thì kết hợp hai tổ hợp biến đó

23
thành một tổ hợp biến mới, bằng cách giữa nguyên giá trị biến giống nhau và ghi dấu (-)
ở vị trí mà biến có giá trị khác nhau, như bảng B trong bảng 2.1.
Từ bảng B tiến hành so sánh các tổ hợp biến mới. Các tổ hợp biến mới so sánh
được với nhau khi chúng chỉ khác nhau về giá trị ở 1 biến và vị trí dấu (-) trong các tổ
hợp biến giống nhau. Các tổ hợp biến này kết hợp với nhau sẽ được tổ hợp biến mới, như
bảng C trong bảng 2.1. Lặp lại quá trình cho đến khi thu được các tổ hợp biến không còn
khả năng kết hợp nữa.
Bảng 1.12. Bảng tìm hàm logic thu gọn
Bảng A Bảng B Bảng C
Nhóm Tổ Nhóm Tổ Nhóm Tổ
hợp biến hợp biến hợp biến
I 000* 00- --0
001* V -00* VIII --0
II 100* 0-0*
010* VI 1-0*
III 110* -10*
IV 111* VII 11-
Sau khi thực hiện xong các phép so sánh thì ta thu được hàm tuyển chuẩn thu gọn
gồm những tổ hợp biến mà không có dấu (*) ở trên đầu. Ta có hàm tuyển chuẩn thu gọn
như sau:
f (a, b, c, d )  ab  ab  c
Bước 3: Tìm hàm logic tối thiểu f tt (a, b, c, d )
Thành lập bảng phủ như sau:
- Mỗi hàng sẽ tương ứng với một tích thành phần của hàm logic dạng tổng chuẩn
đầy đủ ban đầu – gọi là một hội sơ cấp cơ bản (HSCCB).

- Mỗi cột tương ứng với một tích thành phần của hàm thu gọn – gọi là một nguyên
tố cốt yếu – NTCY.

Hàm logic tối thiểu là tuyển của các NTCY mà nó có khả năng bao phủ hết các
HSCCB.
Lập bảng phủ như bảng 2.2.

24
Bảng 1.13. Thành lập bảng phủ
HSCCB abc abc abc abc abc abc
NTCY
ab x x
ab x x
c x x x x
Nhìn vào bảng trên chúng ta thấy có rất nhiều cách phủ và tương ứng với mỗi cách
phủ là một kết quả (các kết quả cũng có thể trùng nhau như ví dụ).
Như vậy ftt (a, b, c, d )  ab  ab  c
Ví dụ 2.4: Tối thiểu hóa hàm logic sau:
f (a, b, c, d )   (0,4,5,6,11,14,15)
Lời giải:
- Bảng chân lý:
STT a b c d f
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 0
3 0 0 1 1 0
4 0 1 0 0 1
5 0 1 0 1 1
6 0 1 1 0 1
7 0 1 1 1 0
8 1 0 0 0 0
9 1 0 0 1 0
10 1 0 1 0 0
11 1 0 1 1 1
12 1 1 0 0 0
13 1 1 0 1 0
14 1 1 1 0 1

25
15 1 1 1 1 1
Hàm f(a,b,c,d) dưới dạng tổng chuẩn đầy đủ:
f (a, b, c)  abcd  abcd  abcd  abcd  abcd  abcd  abcd
0000 0100 0101 0110 1011 1110 1111
Ta có bảng sau:
Bảng A Bảng B

Nhóm Tổ hợp biến Nhóm Tổ hợp biến

I 0000* VI 0-00

II 0100* VII 010-

III 0101* 01-0

0110* VIII -110

IV 1011* IX 1-11

1110* 111-

V 1111*

Hàm tuyển chuẩn thu gọn: f (a, b, c, d )  acd  abc  abd  bcd  acd  abc
Lập bảng phủ:
HSCCB abcd abcd abcd abcd abcd abcd abcd
NTCY
acd x x
abc x x
abd x x
bcd x x
acd x x
abc x x
Từ bảng phủ ta có hàm tối thiểu thu được là:
ftt (a, b, c, d )  acd  abc  bcd  acd

26
1.3.2. Xây dựng mạch rơle
Một số ký hiệu cơ bản được sử dụng trong mạch rơle – tiếp điểm đối với mạch tổ
hợp như bảng 2.3. Với các cơ cấu chấp hành dạng solenoid, thì cuộn hút của chúng ký
hiệu giống như rơle trung gian.
Bảng 1.14. Ký hiệu các thiết bị sử dụng mạch rơle - tiếp điểm
Thiết bị Hình ảnh Ký hiệu
Nút nhấn Tiếp điểm thường mở:
Tiếp điểm thường đóng:

Công tắc hành trình Tiếp điểm thường mở:


Tiếp điểm thường đóng:

Cuộn dây:
Rơle trung gian
Tiếp điểm thường mở:
Tiếp điểm thường đóng:

Contactor
Cuộn dây:
Tiếp điểm thường mở:
Tiếp điểm thường đóng:

Mạch logic có thể được biểu diễn bằng sơ đồ rơle tiếp điểm như sau:
- Sơ đồ gồm 2 dây thể hiện dây nguồn cấp cho mạch
- Tùy thuộc vào thiết bị vật lý tương ứng với các biến logic mà ta có thể biểu diễn
các biến dưới dạng nút ấn, công tắc hành trình hay các tiếp điểm
- Các biến ở trạng thái bình thường được biểu diễn bằng các phần tử ở trạng thái
thường mở.
- Các biến ở trạng thái đảo thì được biểu diễn bằng các phần tử ở trạng thái thường
đóng.
- Đầu ra được biểu diễn bằng cuộn dây của rơle (hoặc contactor). Cuộn dây có điện
thì có nghĩa là đầu ra nhận giá trị 1, không có điện thì nhận giá trị 0. Khi cuộn dây thay
27
đổi trạng thái có điện hoặc không có điện thì các tiếp điểm (rơle) tương ứng cũng thay
đổi trạng thái theo (coi là tức thời).
- Phép cộng logic được biểu diễn bằng cách nối hai phần tử song song với nhau
- Phép nhân logic được biểu diễn bằng cách nối hai phần tử nối tiếp với nhau.
- Đầu ra được biểu diễn bằng cách nối cuộn dây với tổ hợp kết nối các phần tử đầu
vào.
Ví dụ xây dựng mạch rơle cho hàm logic: Y  f (a, b)  ab  ab (với a, b là các công
tắc hành trình) như hình 2.2.

a b
1 3 5 0
Y
a 7 b

Hình 1.6. Ví dụ mạch rơle – tiếp điểm


Khi a=b=0, nghĩa là công tắc hành trình a và b không tác động, thì các tiếp điểm
giữa nguyên trạng thái. Lúc này dòng điện có thể đi từ 1-7-5-2, cuộn dây Y có điện,
nghĩa là Y = f(a,b) = 1.
Khi a=b = 1, nghĩa là công tắc hành trình a và b đều tác động , thì tiếp điểm a (1-3),
b (3-5) đóng lại, các tiếp điểm a (1-7), b (7-5) mở ra. Khi đó dòng điện có thể đi từ 1-3-5-
2, cuộn dây Y có điện , nghĩa là Y = f(a,b) =1.
Khi a = 0, b = 1, thì các tiếp điểm a giữ nguyên trạng thái như hình vẽ. Tiếp điểm b
(3-5) đóng lại, b (7-5) mở ra. Cuộn dây Y bị cách ly khỏi nguồn điện, nghĩa là
Y=f(a,b)=0
Khi a = 1, b = 0, thì các tiếp điểm b giữ nguyên trạng thái như hình vẽ. Tiếp điểm a
(1-3) đóng lại, a (1-7) mở ra. Cuộn dây Y bị cách ly khỏi nguồn điện, nghĩa là
Y=f(a,b)=0.
1.3.3. Xây dựng mạch số
Các phép toán logic cơ bản là: NOT, AND, OR, NAND, NOR. Các phép toán này
được ký hiệu trong mạch số như bảng 2.4 sau.
Bảng1.14. Ký hiệu các phần tử sử dụng mạch số
Phần tử Ký hiệu IC theo chức năng
NOT 4049/ 4069: 6 phần tử NOT trong một IC

28
AND 4082: 2 mạch mạch logic 4 cổng vào
4073: 3 mạch mạch logic 3 cổng vào
4081: 4 mạch mạch logic 2 cổng vào

OR 4072: 2 mạch mạch logic 4 cổng vào


4075: 3 mạch mạch logic 3 cổng vào
4071: 4 mạch mạch logic 2 cổng vào

NAND 4012: 2 mạch mạch logic 4 cổng vào


4023: 3 mạch mạch logic 3 cổng vào
4011: 4 mạch mạch logic 2 cổng vào

NOR 4002: 2 mạch mạch logic 4 cổng vào


4005: 3 mạch mạch logic 3 cổng vào
4001: 4 mạch mạch logic 2 cổng vào

XOR 4030: 4 mạch mạch logic 2 cổng


vào

29
XNOR 4077: 4 mạch mạch logic 2 cổng
vào

Ví dụ xây dựng mạch số cho hàm logic: Y  f (a, b, c)  abc  abc  c.(ab  ab) như
hình 2.3.

Hình 1.7. Ví dụ xây dựng mạch số

30
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 1
Câu 1: Trình bày các phép toán cơ bản của biến logic?
Câu 2: Nêu phương pháp biểu diễn hàm logic theo bảng chân lý ?
Câu 3: Nêu phương pháp biểu diễn hàm logic theo dạng hàm tổng chuẩn đầy đủ ?
Câu 4: Nêu phương pháp biểu diễn hàm logic theo dạng hàm tích chuẩn đầy đủ ?
Câu 5: Biểu diễn hàm sau dưới dạng chi tiết của dạng hàm tổng chuẩn đầy đủ:
f (a, b, c)   (0, 2,3, 4, 6)

Câu 6: Biểu diễn hàm sau dưới dạng chi tiết của dạng tích chuẩn đầy đủ:
f (a, b, c)   (0,1, 4,5, 6)

Câu 7: Cho bảng chân lý sau:


STT a b c y = f(a,b,c)

0 0 0 0 0
1 0 0 1 1
2 0 1 0 1
3 0 1 1 0
4 1 0 0 1
5 1 0 1 0
6 1 1 0 1
7 1 1 1 x
Hãy biểu diễn hàm logic dạng tổng chuẩn đầy đủ và tích chuẩn đầy đủ?
Câu 8: Nêu phương pháp biểu diễn hàm logic trên bảng Karnaugh?
Câu 9: Biểu diễn các hàm sau đây trên bảng Karnaugh
 f (a, b, c, d )   (0,1, 2,5, 7,10,14,15)
 f (a, b, c, d )   (1,5, 6, 7,11,13) ; N  12,15

31
CHƯƠNG 2
LẬP TRÌNH ỨNG DỤNG VỚI PLC SIEMENS
MỤC TIÊU CHƯƠNG 2
Chương 2 cung cấp cho người học các bước sử dụng phần mềm TIA Portal, các tập
lệnh cơ bản khi lập trình với PLC Siemens, lập trình với tập lệnh logic, lập trình ứng
dụng với bộ định thời, bộ đếm, các tập lệnh so sách, chuyển đổi kiểu dữ liệu. Lập trình
với tín hiệu analog, lập trình bộ đếm tốc độ cao (hight speed counter).

2.1. LẬP TRÌNH ỨNG DỤNG VỚI TẬP LỆNH LOGIC


2.1.1. Lập trình với Tag và I/O Mapping
 Lập trình với Tag
Đối với những người dùng sử dụng PLC S7-200/300/400 với các phần mềm Step7
Microwin, Step7 Manager sẽ quen gọi những tên gợi nhớ cho những vùng nhớ hay các
block là Symbol thì trên TIA Portal những vùng nhớ, tên gợi nhớ gọi là Tag.
“PLC Tags” là tên tượng trưng, gợi nhớ cho I/O và địa chỉ. TIA Portal đã cho phép
người dùng truy xuất với Tag. Điều này có nghĩa là khi có một lỗi nào đó trong chương
trình, I/O hoặc vùng nhớ nào đó bị hỏng thì chỉ cần thay đổi I/O hoặc vùng nhớ trong Tag
table. Người dùng lên tạo bảng Tag table để quản lý Tag trước khi bắt đầu việc lập trình
cho hệ thống. Các bước tạo PLC Tags được trình bày dưới đây.
Bước 1: Tạo một bảng Tag table để quản lý Tag: Project tree → Device → CPU…
→ PLC Tags → Add new tag table.

32
Bước 2: Đổi tên Tag table để dễ quản lý những Tag trong đó

Bước 3: Khai báo Tag cũng như kiểu dữ liệu được sử dụng tương ứng.

33
 Lập trình với I/O Mapping
Memory mapped I/O (MMIO) và Port mapped (PMIO) hay còn gọi là I/O Mapping
là một kỹ thuật được sử dụng cơ bản trong lập trình vi điều khiển, nhằm cô lập I/O với
code lập trình xử lý trước khi xuất ra ngoại vi. I/O mapping sẽ thực hiện ánh xạ nhận giá
trị giữa vùng nhớ (PLC Tag) từ ngõ vào Input của PLC và xuất tới ngõ ra của PLC. Điều
này có nghĩa là, mọi hoạt động từ xử lý Boolean cho đến các hoạt động tính toán các khối
chức năng đều xử lý trên các vùng nhớ M, DB thay vì xử lý trực tiếp trên I/O thực (I, Q)
giúp cho tránh những lỗi lập trình về trùng lặp vùng nhớ hay khi cần sửa đổi gì trên
chương trình thì người dùng chỉ cần sửa đổi PLC Tags và các vùng nhớ M, DB.
Với các phần mềm lập trình trước đây cho PLC thì việc sử dụng kỹ thuật lập trình
I/O Mapping sẽ phức tạp hơn nhưng với TIA Portal hỗ trợ truy xuất dữ liệu theo Tag cho
nên I/O Mapping sẽ là một kỹ thuật phù hợp cho tất cả những ứng dụng mà người dùng
phát triển. Các bước làm việc với I/O Mapping trên phần mềm TIA Portal được thực hiện
theo các bước sau đây.
Bước 1: Tạo một bảng Tag table để quản lý Tag: Project tree → Device → CPU…
→ PLC Tags → Add new tag table và đổi tên là IO Mapping.
Bước 2: Khởi tạo Tag để Mapped cho Input và Output

Bước 3: Khởi tạo hàm chức năng FC1 để thực hiện lập trình I/O Mapping: Program
blocks → Add new block → Function và đặt tên là IO Mapping.

34
Bước 4: Lập trình Memory mapped I/O (MMIO) và Port mapped (PMIO) để thực
hiện IO Mapping với FC1

Bước 5: Gọi hàm chức năng FC1 – IO Mapping trong chương trình Main OB1 để
hoàn thành việc Mapped I/O giữa Tag nhớ và I/O ngoại vi. Và người dùng không cần

35
truy xuất trực tiếp tới Tag nhớ của vùng nhớ I, Q nữa mà chỉ cần thông qua các Tag đã
được Mapping.

 Làm việc với System memory và clock memory

Người dùng có thể bật thuộc tính của CPU để cho phép các byte trở thành system
memory và clock memory hoạt động giống như các bit nhớ đặc biệt của PLC S7-200
(SM0.0, SM0.1, SM0.2, …).
Người dùng gắn một byte của vùng nhớ M để trở thành system memory. Byte của
system memory cung cấp cho người dùng 4 bit được gắn với các Tag sau:
 First cycle: Với tên Tag là FirstScan là bit có trạng thái 1 sau khi Startup OB
hoàn thành, và bit First chỉ duy trì trong chu kỳ quét đầu tiên và sẽ trở về 0.
 Diagnostics status changed: Với tên Tag là DiagStatusUpdate được đưa lên 1
trong một chu kỳ quét sau khi CPU thực hiện chuẩn đoán lỗi một sự kiện nào đó.
 Always 1 (high): Với tên Tag là AlwaysTRUE là là bit có trạng thái luôn luôn
bằng 1.
 Always 0 (low): Với tên Tag là AlwaysFALSE là bit có trạng thái luôn luôn bằng
0.

36
Người dùng có thể gắn một byte của vùng nhớ M để trở thành clock memory. Mỗi
Bit của clock memory có tần số khác nhau và nằm trong dải tần số từ 0.5Hz đến 10Hz.

Để kích hoạt các chức năng trên ta thực hiện như sau: Lựa chọn CPU để thực hiện:
Device configuration → Device view → CPU … → Properties. Sau đó bật chế độ system
memory, clock memory và lựa chọn vùng nhớ M làm việc. Tiến hành Compile để hoàn
thành việc khởi tạo System and clock memory và lưu lại kết quả trên.
2.1.2. Lập trình với các tiếp điểm I/O
Ký hiệu Khai báo Kiểu Vùng nhớ Miêu tả
dữ liệu S7-1200 S7-1500

Công tắc/Tiếp điểm


Công tắc thường mở
hay thường đóng.
Để có thể đọc ngay
lập tức ngõ vào có
Input BOOL I, Q, M, I, Q, M,
thể sử dụng cấu trúc
D, L D, L, T,

37
C “:P” để sử dụng ngõ
vào vật lý thay vì
biến quá trình
Input/Output BOOL Đảo trạng thái ngõ
vào/ra hoặc kết quả
phép toán logic
trước đó.
Cuộn coil/Ngõ ra
Trạng thái ngõ ra là
kết quả xử lý của
phép toán logic. Để
có thể đọc ngay lập
tức ngõ vào có thể
Output BOOL I, Q, M, D, L sử dụng cấu trúc
“:P” để sử dụng ngõ
ra vật lý thay vì biến
quá trình
Output BOOL I, Q, M, D, L Đảo kết quả ngõ ra
của phép toán logic

a. Phép toán AND


Phép toán AND được sử dụng khi có yêu cầu điều khiển là trạng thái của 2 hay
nhiều tín hiệu đồng thời xảy ra thì sẽ thực hiện một nhiệm vụ điều khiển nào đó. Ví dụ:
1.Thực hiện phép toán logic sau: A and B and C  A  B  C  Z
Đặt A = M0.0 = Input_Mapping_0; B = M0.1 = Input_Mapping_1; C = M0.2 =
Input_Mapping_2; Z = M1.0 = Out_Mapping_0.

2. Thực hiện phép toán: X and (not )Y  X  Y  Z


Đặt X = M0.3 = Input_Mapping_3; Y = M0.4 = Input_Mapping_4; Z = M1.1 =
Out_Mapping_1

38
b. Phép toán OR
Phép toán OR sẽ được sử dụng khi trạng thái của một trong hai (hoặc nhiều) tín hiệu
thỏa mãn điều kiện của yêu cầu điều khiển thì sẽ thực hiện một nhiệm vụ điều khiển nào
đó. Ví dụ:
1. Thực hiện phép toán logic sau: X or Y or S  X  Y  S  Z
Đặt X = M0.5 = Input_Mapping_5; Y = M0.6 = Input_Mapping_6; S = M0.7 =
Input_Mapping_7; Z = M1.2 = Out_Mapping_2.

2. Thực hiện phép toán sau: X or  notY   X  Y  Z


Đặt X = M0.0 = Input_Mapping_0; Y = M0.1 = Input_Mapping_1; Z = M1.3 =
Out_Mapping_3.

3. Thực hiện phép toán logicsau:


39
( A and B) or  C and D    A  B    C  D   Z .

Đặt: A = M0.0 = Input_Mapping_0; B = M0.1 = Input_Mapping_1; C = M0.2 =


Input_Mapping_2; D = M0.3 = Input_Mapping_3; Z = M1.3 = Out_Mapping_3.

c. Phép toán XOR


Phép toán XOR được sử dụng khi có 2 tín hiệu mà nếu chúng có cùng trạng thái thì
ngõ ra sẽ xuống mức 0 còn nếu 2 tín hiệu này khác trạng thái thì ngõ ra sẽ lên mức 1.
Ví dụ thực hiện phép toán logic sau: X or Y  X  Y  X  Y  Z
Đặt X = Input_Mapping_0 = M0.0; Y = Input_Mapping_4 = M0.4; và Z =
Out_Mapping_5 = M1.5.

d. Phép toán NAND


Phép toán NAND là kết hợp của phép toán AND và lệnh NOT, là lệnh phủ định lại
kết quả của phép toán AND. Giả sử thực hiện phép toán logic: A nand B  A  B  Z
Đặt A = Input_Mapping_0 = M0.0; B = Input_Mapping_4 = M0.4; và Z =
Out_Mapping_6 = M1.6.

40
e. Phép toán NOR
Phép toán NOR là kết hợp của phép toán OR và lênh NOT, là lệnh phủ định lại kết
quả của phép toán OR. Ví dụ thực hiện phép toán logic sau: A nor B  A  B  Z
Đặt A = Input_Mapping_0 = M0.0; B = Input_Mapping_4 = M0.4; và Z =
Out_Mapping_7 = M1.7.

2.1.3. Lập trình với tập lệnh SET, RESET


Ký hiệu Kiểu dữ liệu Miêu tả
BOOL Khi lệnh SET được tác động thì địa chỉ ngõ ra
sẽ được đặt lên 1
BOOL Khi lệnh RESET được tác động thì địa chỉ ngõ
ra sẽ được trở về 0
BOOL Khi lệnh SET_BF được tác động, một chuỗi
gồm “n” bit (được khai báo bên dưới lệnh) sẽ
được đặt lên 1 bắt đầu tại địa chỉ khai báo bên
trên.
BOOL Khi lệnh RESET_BF được tác động, một chuỗi
gồm “n” bit (được khai báo bên dưới lệnh) sẽ
trở về 0 bắt đầu tại địa chỉ khai báo bên trên.
BOOL Mạch chốt RS ưu tiên SET

BOOL Mạch chốt SR ưu tiên Reset

 Lệnh SET

41
Giá trị của bit trạng thái ngõ ra bằng 1 khi đầu vào của lệnh này bằng 1, khi đầu vào
của lệnh về 0 thì bit này vẫn giữ nguyên trạng thái ngõ ra ở mức 1 và bit này chỉ bằng 0
khi gặp lệnh Reset.

 Lệnh RESET
Giá trị của bit trạng thái ngõ ra bằng 0 khi đầu vào của lệnh này bằng 1, khi đầu vào
của lệnh về 0 thì bit này vẫn giữ nguyên trạng thái ngõ ra ở mức 0, nếu không nhận thêm
tác động khác ảnh hưởng tới ngõ ra.

 Lệnh Flipflop SR và RS
Khối hàm SR và RS là những khối lệnh tổ hợp từ 2 lệnh SET và RESET nhưng có
xét tới sự ưu tiên.
Trong khối SR flipflop hoặc RS flipflop thì <toán hạng> được sử dụng có thể là một
trong những vùng nhớ Q, M, D, L nhưng theo toàn bộ hệ thống thì nên sử dụng vùng nhớ
M, D hoặc L để dễ dàng quản lý và thuận tiện cho các đoạn chương trình.

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


S Input BOOL I, Q, M, D, L Ngõ vào cho phép lệnh
SET thực hiện
R Input BOOL I, Q, M, D, Ngõ vào cho phép lệnh
T, C, L RESET thực hiện
<toán hạng> Output BOOL Q, M, D, L Toán hạng được thực hiện
khi tác động ngõ vào
Q Output BOOL Q, M, D, L Trạng thái tín hiệu của
toán hạng
Ví dụ sử dụng lệnh SR Flipflop – Ưu tiên RESET

42
Để giải thích rõ hơn và chi tiết hơn cho đoạn chương trình trên ta có thể sử dụng
bảng trạng thái như sau:
M0.2 M0.3 M1.1
0 0 0
0 1 0
1 0 1
1 1 0
Ví dụ sử dụng lệnh RS Flipflop – Ưu tiên SET

Để giải thích rõ hơn và chi tiết hơn cho đoạn chương trình trên ta có thể sử dụng
bảng trạng thái như sau:
M0.4 M0.5 M1.2
0 0 0
0 1 1
1 0 0
1 1 1
2.1.4. Lập trình với các tập lệnh nhận biết cạnh xung
Ký hiệu Kiểu dữ liệu Miêu tả

43
BOOL Nhận biết xung cạnh lên của tín hiệu đầu
vào

BOOL Nhận biết xung cạnh xuống của tín hiệu đầu
vào

Nhận biết xung cạnh lên của tín hiệu đầu ra


BOOL

Nhận biết xung cạnh xuống của tín hiệu đầu


BOOL ra

2.1.4.1. Nhận biết xung cạnh lên của tín hiệu


Khi tín hiệu chuyển trạng thái từ 0 lên 1 thì ta có thể dùng lệnh (P) để nhận biết sự
thay đổi này. Lệnh nhận biết xung cạnh lên có thể biểu diễn dưới 2 dạng: tiếp điểm hay
dạng khối (block)
a. Sử dụng tập lệnh kiểu tiếp điểm
Lệnh sẽ so sánh trạng thái tín hiệu hiện tại của <toán hạng 1> với trạng thái tín hiệu
trước khi quét, đã được lưu trong bit nhớ trạng thái <toán hạng 2>. Nếu có sự thay đổi
trong kết quả toán học logic từ “0” lên “1” – có xung cạnh lên, thì ngõ ra của lệnh sẽ trả
về tín hiệu “1” trong một chu kỳ lệnh. Trong tất cả các trường hợp khác thì trạng thái tín
hiệu của ngõ ra là “0”.
Chỉ định toán hạng được truy vấn <toán hạng 1> sẽ nằm vị trí trên trong tập lệnh,
chỉ định bit nhớ trạng thái <toán hạng 2> nằm vị trí dưới của tập lệnh.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Giải thích
<toán hạng 1> Input BOOL I, Q, M, T, C, Tín hiệu ngõ vào để
D, L quét kiểm tra
<toán hạng 2> Input/Output BOOL M, D, L Bit nhớ cạnh lên

44
Mô tả lệnh dưới dạng giản đồ thời gian – Timing:
1

I0.0 0

M0.0 0

1
0
Q0.0
1
Q0.1 0

Chu kỳ lệnh Chu kỳ lệnh

Chú ý: Bit nhớ trạng thái không được lặp lại và chỉ được sử dụng một làn duy nhất.
Bit nhớ trạng thái nên sử dụng các vùng nhớ M hoặc D sẽ thuận tiện để lưu trữ và giám
sát cho hoạt động của chương trình.
b. Sử dụng tập lệnh kiểu khối
Lệnh kiểu khối được sử dụng cho một tổ hợp ngõ vào cùng tác động, trong khi lệnh
kiểu tiếp điểm chỉ áp dụng cho từng tiếp điểm, bit đầu vào đơn.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Giải thích
CLK Input BOOL I, Q, M, D, L Kết quả trả về từ tổ
hợp ngõ vào
<toán hạng > Input/Output BOOL M, D, L Bit nhớ cạnh lên
Q Output BOOL Q, M, D, L Kết quả xung ngõ ra
Ví dụ:

45
Khi cả trạng thái đầu vào ( I 0.3  I 0.4  I 0.5) thay đổi trạng thái từ 0 lên 1 thì ngay
lập tức ngõ ra Q0.4 sẽ được SET lên mức 1 và ngõ ra Q0.5 sáng trong một chu kỳ lệnh
rồi tắt.
2.1.4.2. Nhận biết cạnh xuống của tín hiệu
Khi tín hiệu chuyển trạng thái từ 1 về 0 thì ta có thể dùng lệnh (N) để nhận biết sự
thay đổi này. Lệnh nhận biết xung cạnh xuống có thể biểu diễn dưới 2 dạng: tiếp điểm
hay dạng khối (block).
a. Sử dụng tập lệnh kiểu tiếp điểm
Lệnh sẽ so sánh trạng thái tín hiệu hiện tại của <toán hạng 1> với trạng thái tín hiệu
trước khi quét, đã được lưu trong bit nhớ trạng thái <toán hạng 2>. Nếu có sự thay đổi
trong kết quả toán học logic từ “1” về “0” – có xung cạnh xuống, thì ngõ ra của lệnh sẽ
trả về tín hiệu “1” trong một chu kỳ lệnh. Trong tất cả các trường hợp khác thì trạng thái
tín hiệu của ngõ ra là “0”.
Chỉ định toán hạng được truy vấn <toán hạng 1> sẽ nằm vị trí trên trong tập lệnh,
chỉ định bit nhớ trạng thái <toán hạng 2> nằm vị trí dưới của tập lệnh.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Giải thích
<toán hạng 1> Input BOOL I, Q, M, T, C, Tín hiệu ngõ vào để
D, L quét kiểm tra
<toán hạng 2> Input/Output BOOL M, D, L Bit nhớ cạnh xuống
Ví dụ:

Mô tả lệnh dưới dạng giản đồ thời gian – Timing:

46
I0.0

M0.0

Q0.0

Q0.1

Chu kỳ lệnh

b. Sử dụng tập lệnh kiểu khối


Lệnh kiểu khối được sử dụng cho một tổ hợp ngõ vào cùng tác động, trong khi lệnh
kiểu tiếp điểm chỉ áp dụng cho từng tiếp điểm, bit đầu vào đơn.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Giải thích
CLK Input BOOL I, Q, M, D, L Kết quả trả về từ tổ
hợp ngõ vào
<toán hạng > Input/Output BOOL M, D, L Bit nhớ cạnh xuống
Q Output BOOL Q, M, D, L Kết quả xung ngõ ra

Ví dụ:

Khi cả trạng thái đầu vào ( I 0.3  I 0.4  I 0.5) thay đổi trạng thái từ 1 về 0 thì ngay
lập tức ngõ ra Q0.3 sẽ được RESET về mức 0 và ngõ ra Q0.5 sáng trong một chu kỳ lệnh
rồi tắt.
Để làm rõ vấn đề trên, xét bài toán một nút nhấn hai tác động. Trạng thái ban đầu
đèn tắt, khi tác động nút nhấn đèn sáng và tác động lần tiếp theo đèn tắt, trạng thái cứ thế
lặp lại.

47
2.2. Lập trình với tập lệnh so sánh
Trong phần này chúng ta cùng khảo sát và tìm hiểu về các tập lệnh so sánh được hỗ
trợ trong TIA Portal cho PLC S7-1200/S7-1500. Chúng ta có thể so sánh các kiểu dữ
liệu: INT, DINT, REAL, WORD, DWORD, TIME thông qua 6 tập lệnh so sánh: so sánh
bằng (==), so sánh khác (< >), so sánh lớn hơn (>), so sánh lớn hơn bằng (>=), so sánh
nhỏ hơn (<), so sánh nhỏ hơn bằng (<=). Phép so sánh được thực hiện bằng cách lấy
<toán hạng 1> đem so sánh với <toán hạng 2> nếu thỏa điều kiện thì sẽ cho ngõ ra bằng
1, còn ngược lại ngõ ra bằng 0.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
<toán hạng 1> Input INT, DINT, REAL, I, Q, M, D, L Giá trị thứ nhất
WORD, DWORD, hoặc hằng số đem so sánh
TIME
<toán hạng 2> Input I, Q, M, D, L Giá trị thứ hai
hoặc hằng số để so sánh
So sánh bằng

Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có bằng
giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn, phép so
sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:

48
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 16, nếu giá trị trong vùng nhớ
MW10=16 thì ngõ ra Q0.0 bằng 1, ngược lại Q0.0 bằng 0.
So sánh khác

Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có khác
giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn, phép so
sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:

Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 16, nếu giá trị trong vùng nhớ
MW10≠16 thì ngõ ra Q0.0 bằng 1, ngược lại Q0.0 bằng 0.
So sánh lớn hơn

Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có lớn
hơn giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn, phép so
sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:

Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 16, nếu giá trị trong vùng nhớ
MW10>16 thì ngõ ra Q0.0 bằng 1, ngược lại Q0.0 bằng 0.
So sánh lớn hơn bằng

49
Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có lớn
hơn bằng giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn,
phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:

Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 20, nếu giá trị trong vùng nhớ
MW10≥20 thì ngõ ra Q0.1 bằng 1, ngược lại Q0.1 bằng 0.
So sánh nhỏ hơn

Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có nhỏ
hơn giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn, phép so
sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:

Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 20, nếu giá trị trong vùng nhớ
MW10<20 thì ngõ ra Q0.3 bằng 1, ngược lại Q0.3 bằng 0.
So sánh nhỏ hơn bằng

Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có nhỏ
hơn bằng giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn,
phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:

50
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 20, nếu giá trị trong vùng nhớ
MW10≤20 thì ngõ ra Q0.3 bằng 1, ngược lại Q0.3 bằng 0.

2.3. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐỊNH THÌ


Bộ định thì (Timer) trong PLC S7-1200/S7-1500 được khai báo theo tiêu chuẩn IEC
Timer. Mỗi bộ định thì được lưu trữ trong vùng nhớ DB và chiếm dung lượng là 16 Byte.
Do đó, số lượng bộ định thì sẽ bị giới hạn bởi dung lượng của bộ nhớ PLC.
Bộ định thì của PLC S7-1200/S7-1500 được khai báo với kiểu dữ liệu TIME với
khai báo T# có kích thước vùng nhớ là 32 bit, được lưu trữ như kiểu dữ liệu DINT, có
tầm giá trị từ T#-24D20H31M23S648MS đến T#24D20H31M23S647MS.
Khi một bộ định thì khai báo với chuẩn IEC Timer được gọi sẽ tự động tạo ra một
khối dữ liệu DB với tên IEC_TIMER_... nằm trong System Blocks.
Người dùng có thể sử dụng các tham số của khối dữ liệu thông qua khai báo “<Data
block name>”.<tag name>. Tag name có thể là IN, PT, Q, ET, R và tùy vào mục đích
sử dụng để lựa chọn.
Ký hiệu Miêu tả
Bộ định thì tạo xung

Bộ định thì trễ sườn lên không nhớ

Bộ định thì trễ sườn xuống

51
Bộ định thì trễ sườn lên có nhớ

2.3.1. Bộ định thì tạo xung – TP


 Nguyên lý hoạt động
Khi ngõ vào IN cho phép thì bộ định thì TP hoạt động, thì ngõ ra Q sẽ tạo ra một
xung có độ rộng bằng giá trị đặt của bộ định thì. Khi giá trị hiện hành ET=PT thì kết thúc
quá trình phát xung. Trong thời gian bộ định thì hoạt động, ngõ vào IN tác động không
ảnh hưởng.
 Tham số bộ định thì
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
 Đồ thị Timming của bộ định thì

52
 Ví dụ minh họa

Khi ngõ vào M0.0 tác động thì ngõ ra Q của bộ định thị TP sẽ tạo ra một xung có độ
rộng bằng thời gian đặt PT và M1.0 chuyển lên trạng thái mức 1 trong khoảng thời gian
ET=10s. Khi ET > 10s thì ngõ ra M1.0 trở lại trạng thái ban đầu.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TP hay có thể sử dụng
tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.3.2. Bộ định thì trễ sườn lên không nhớ – TON
 Nguyên lý hoạt động
Khi ngõ vào IN tác động và duy trì trạng thái cho phép TON hoạt động tới khi giá
trị ET > PT thì ngõ ra Q đổi trạng thái lên mức 1. Khi ngõ vào IN chuyển trạng thái từ 1
về 0 thì Timer TON kết thúc hoạt động.

 Tham số bộ định thì


53
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
 Đồ thị Timming của bộ định thì

 Ví dụ minh họa

54
Khi ngõ vào M0.1 tác động và duy trì trạng thái cho phép TIMER TON hoạt động
tới khi giá trị ET > 10s thì ngõ ra Q sẽ đổi trạng thái lên mức 1 hay M1.3 chuyển trạng
thái lên mức 1. Khi ngõ vào M0.1 ngừng tác động thì ngõ ra Q sẽ trở về trạng thái ban
đầu và M1.3 chuyển về trạng thái mức 0.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TON hay có thể sử
dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.3.3. Bộ định thì trễ sườn xuống – TOFF
 Nguyên lý hoạt động
Timer trễ sườn xuống bắt đầu hoạt động khi ngõ vào cho phép chuyển trạng thái từ
0 lên 1, đồng thời tiếp điểm của Timer chuyển trạng thái: tiếp điểm thường mở đóng lại
và tiếp điểm thường đóng mở ra.
Khi ngõ vào cho phép Timer hoạt động chuyển trạng thái từ 1 về 0 thì sau đó một
khoảng thời gian T# đặt trước thì trạng thái tiếp điểm của TIMER trở về trạng thái ban
đầu.
 Tham số bộ định thì
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER

 Đồ thị Timming của bộ định thì

55
 Ví dụ minh họa

Khi ngõ vào cho phép M0.2 chuyển trạng thái từ 0 lên 1 thì tiếp điểm của bộ định
thì TOF sẽ chuyển trạng thái: tiếp điểm thường đóng sẽ mở ra, còn tiếp điểm thường mở
sẽ đóng lại đồng thời ngõ ra M1.4 sẽ chuyển trạng thái từ 0 lên 1.
Khi ngõ vào cho phép M0.2 chuyển trạng thái từ 1 về 0 thì sau đó 10s tiếp điểm của
bộ định thì TOF sẽ chuyển về trạng thái ban đầu.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TOF hay có thể sử
dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.3.4. Bộ định thì trễ sườn lên có nhớ – TONR
 Nguyên lý hoạt động
Bộ định thì trễ sườn lên có nhớ bắt đầu hoạt động khi có tín hiệu ngõ vào IN chuyển
từ trạng thái 0 lên 1, nếu thời gian tác động của ngõ vào IN < PT thì giá trị ET vẫn lưu lại

56
và sẽ được cộng dồn cho tới khi IN > PT thì ngõ ra của bộ định thì TONR sẽ chuyển
trạng thái.
Nếu ngõ vào cho phép chuyển trạng thái từ 1 về 0 thì TIMER vẫn tiếp tục trạng thái
cho tới khi có tín hiệu Reset Timer hoạt động. Nói cách khác, TIMER trễ sườn lên có nhớ
chỉ cần tác động tín hiệu cho phép chuyển trạng thái từ 0 lên 1, không ảnh hưởng của tín
hiệu khi chuyển trạng thái từ 1 về 0, do đó cần lệnh Reset để thực hiện lệnh Reset Timer.
 Tham số bộ định thì
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
 Đồ thị Timming của bộ định thì

 Ví dụ minh họa

57
Bộ định thì TONR sẽ cộng dồn thời gian tác động của ngõ vào M0.3 cho tới khi ET
> PT thì ngõ ra của bộ định thì sẽ chuyển trạng thái của tiếp điểm, hay M1.6 sẽ lên mức
1.
Ngõ ra sẽ duy trì trạng thái ở mức 1 cho tới khi có tín hiệu Reset Timer tác động, thì
bộ định thì TONR sẽ trở về trạng thái ban đầu.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TOF hay có thể sử
dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q

2.4. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐẾM


Bộ đếm trong PLC chia thành 2 loại: Bộ đếm thường (nhận những xung có tần số
tính bằng Hz) và bộ đếm tốc độ cao (High Speed Counter – những xung có tần số tính
bằng KHz). Nội dung phần này chỉ trình bày về bộ đếm thường. Bộ đếm thường trong
PLC S7-1200/S7-1500 gồm có bộ đếm lên, bộ đếm xuống, bộ đếm lên xuống và được
ứng dụng để đếm sản phẩm, số vòng lặp, số lần thực hiện một quy trình nào đó trong một
hệ thống.
2.4.1. Bộ đếm lên CTU
 Nguyên lý

58
Khi có sự chuyển trạng thái từ mức 0 lên mức 1 tại chân CU thì giá trị bộ đếm CV
tăng lên 1. Trạng thái ngõ vào R bằng 1 thì giá trị bộ đếm CV=0 và ngõ ra Q bằng 0. Khi
giá trị đếm được CV ≥ PV thì ngõ ra Q bằng 1.
Khối dữ liệu DB được sử dụng để lưu trữ tham số cho các hàm đếm theo chuẩn
IEC, có thể khai báo và nạp giá trị cho CTU từ khối DB.
 Tham số của bộ đếm
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CU Input BOOL I, Q, M, D, L Ngõ vào cho phép đếm lên
R Input BOOL I, Q, M, D, L Reset bộ đếm
PV Input INT I, Q, M, D, L, Giá trị đặt trước cho bộ đếm.
hoặc hằng số Giá trị đặt trước từ 0 đến
32767
Q Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
CV Output INT Q, M, D, L Giá trị hiện hành của bộ đếm
từ 0 đến 32767.
 Ví dụ minh họa

59
Khi ngõ vào M0.0 chuyển trạng thái từ 0 lên 1 thì giá trị bộ đếm lưu tại địa chỉ
“<Data block name>”.CV sẽ tăng lên 1, khi giá trị CV≥PV thì ngõ ra M1.0 sẽ lên mức
1, ngược lại ngõ ra M1.0 sẽ bằng 0. Khi ngõ vào M0.1 chuyển trạng thái từ 0 lên 1 thì giá
trị bộ đếm sẽ trở về 0.
2.4.2. Bộ đếm xuống CTD
 Nguyên lý

Tác động chân LD chuyển trạng thái sang mức 1 thì giá trị đặt trước được nạp cho
bộ đếm, lúc này CV=PV và ngõ ra Q bằng 0. Khi có sự chuyển trạng thái từ 0 lên 1 tại
chân CD thì giá trị bộ đếm CV giảm xuống 1. Khi giá trị bộ đếm nhỏ hơn hoặc bằng 0
(CV≤0) thì ngõ ra Q bằng 1.
Khối dữ liệu DB được sử dụng để lưu trữ tham số cho các hàm đếm theo chuẩn
IEC, có thể khai báo và nạp giá trị cho CTU từ khối DB.

 Tham số của bộ đếm


Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CD Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm xuống
PV Input INT I, Q, M, D, L, Giá trị đặt trước cho bộ đếm.
hoặc hằng số Giá trị đặt trước từ -32678 đến
32767
LD Input BOOL I, Q, M, D, L Ngõ vào cho phép nạp giá trị
vào bộ đếm
Q Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
CV Output INT Q, M, D, L Giá trị hiện hành của bộ đếm.
 Ví dụ minh họa

60
Khi ngõ vào M0.3 chuyển trạng thái từ 0 lên 1 thì giá trị hiện hành của bộ đếm
CV=PV và ngõ ra M1.1 sẽ về mức 0. Khi ngõ vào M0.2 chuyển trạng thái từ 0 lên 1, thì
giá trị bộ đếm sẽ giảm xuống 1. Khi giá trị bộ đếm CV≤0 thì ngõ ra M1.1 sẽ lên mức 1.
2.4.3. Bộ đếm lên xuống CTUD
 Nguyên lý

Tác động chân LD chuyển trạng thái sang mức 1 thì giá trị đặt trước được nạp cho
bộ đếm, lúc này CV=PV và ngõ ra QD bằng 0. Khi có sự chuyển trạng thái từ 0 lên 1 tại
chân CU thì giá trị bộ đếm CV tăng lên 1. Khi có sự chuyển trạng thái từ 0 lên 1 tại chân
CD thì giá trị bộ đếm CV giảm xuống 1.
- Khi giá trị bộ đếm CV≥PV thì ngõ ra QU bằng 1
- Khi giá trị bộ đếm CV≤0 thì ngõ ra QD bằng 1
- Trạng thái ngõ vào R bằng 1 thì giá trị bộ đếm CV bằng 0.
 Tham số của bộ đếm
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CU Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm lên
CD Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm xuống
R Input BOOL I, Q, M, D, L Reset bộ đếm
LD Input BOOL I, Q, M, D, L Ngõ vào cho phép nạp giá trị

61
vào bộ đếm
PV Input INT I, Q, M, D, L, Giá trị đặt trước cho bộ đếm.
hoặc hằng số Giá trị đặt trước từ -32678 đến
32767
QU Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
lên
QD Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
xuống
CV Output INT Q, M, D, L Giá trị hiện hành của bộ đếm.
 Ví dụ minh họa

Khi ngõ vào M0.4 chuyển trạng thái từ 0 lên 1 thì giá trị hiện hành của bộ đếm CV
tăng lên 1, nếu ngõ vào M0.5 chuyển trạng thái từ 0 lên 1 thì giá trị bộ đếm CV giảm
xuống 1. Nếu ngõ vào M0.7 được tác động thì giá trị bộ đếm CV=PV. Ngõ ra M1.2 lên
mức 1 khi CV≥PV, ngõ ra M1.3 lên mức 1 khi CV≤0. Nếu tác động M0.6 thì giá trị bộ
đếm CV=0.
2.4.4. Bộ đếm xung tốc độ cao HSC của S7 – 1200
2.4.4.1. Hoạt động của bộ đếm tốc độ cao HSC
Nếu các sự kiện đếm xảy ra có thời gian thực hiện chậm hơn so với các khối OB thì
người dùng có thể sử dụng các bộ đếm CTU, CTD, CTUD để đếm những sự kiện này.
Tuy nhiên, với những sự kiện xảy ra có thời gian thực thi nhanh hơn các khối OB thì

62
người dùng cần sử dụng các bộ đếm tốc độ cao HSC để nhận tín hiệu trả về từ một
incremental encoder.
Lệnh CTRL_HSC cho phép người dùng có thể lập trình và thay đổi những thông số của
bộ HSC.
Bộ đếm HSC được thiết lập một giá trị cài đặt trước, và ngõ ra sẽ được kích hoạt trong
khoảng thời gian CV<PV. Bộ HSC cho phép thực hiện ngắt khi giá trị CV=PV
Lựa chọn kênh đếm tốc độ cao HSC
Những thông tin ở bảng sau sẽ giúp cho người dùng có thể kết nối và sử dụng được tần số
xung tối đa từ tín hiệu trả về CPU và SB
Tần số đọc xung tối đa trên thân CPU
CPU Địa chỉ Input Chế độ 1 hay 2 Chế độ Phase A/B
phase Quadrature
1211C I0.0÷I0.5 100 Khz 80 Khz
1212C I0.0÷I0.5 100 Khz 80 Khz
I0.0÷I0.7 30 Khz 20 Khz
1214C và 1215C I0.0÷I0.5 100 Khz 80 Khz
I0.6÷I1.5 30 Khz 20 Khz
1217C I0.0÷I0.5 100 Khz 80 Khz
I0.6÷I1.1 30 Khz 20 Khz
I1.2÷I1.5 1Mhz 1Mhz
Tần số đọc xung tối đa trên SB
Signal board Địa chỉ Input Chế độ 1 hay 2 Chế độ Phase A/B
phase Quadrature
SB 1221, 200 kHz I4.0÷I4.3 200 Khz 160 Khz
SB 1223, 200 kHz I4.0÷I4.1 200 Khz 160 Khz
SB 1223 I4.0÷I4.1 30 Khz 20 Khz
2.4.4.2. Lựa chọn chức năng đếm cho bộ đếm tốc độ cao HSC
Tất cả các bộ HSC đều được cấu hình giống nhau để có thể làm chức năng giống nhau.
Các chế độ đếm, điều hướng, và giá trị khởi đầu đều được cấu hình trong Configuration
Device của CPU cho HSC hoạt động
Có 4 chức năng của bộ HSC là
- Đếm Single-phase với điều hướng internal

63
- Đếm Single-phase với điều hướng external
- Đếm 2 phase với 2 ngõ vào xung
- Đếm phase A/B lệch nhau 900
Một số chức năng khác của bộ HSC:
- Chức năng đo tần số: một vài chế độ HSC cho phép cấu hình bộ HSC thực hiện đo tần
số thay vì chỉ đọc tín hiệu xung. Có 3 khoảng đo lường tần số cho phép thực hiện trong
CPU S7 -1200 là:0.01, 0.1 và 1.0 giây.
- Chế độ Axis
- Những chế độ đếm và các tín hiệu ngõ vào: các tín hiệu ngõ vào được sử dụng như
xung clock, điều hướng, chức năng reset hỗ trợ cho bộ HSC. Cùng một tín hiệu ngõ vào
không thể sử dụng với hai chức năng khác nhau, nhưng những ngõ vào không sử dụng
trong chế độ HSC hiện tại của nó thì có thể sử dụng với một mục đích khác. Ví dụ: Nếu
HSC1 chỉ sử dụng 2 ngõ vào nhưng không sử dụng ngõ vào thứ 3 với chế độ external
reset(mặc định là I0.3) thì I0.3 có thể được sử dụng để làm tín hiệu ngắt HSC2.
Chức năng đếm của HSC trong CPU S7-1200
Kiểu đếm Input 1 Input 2 Input 3 Chức năng
Đếm Single-phase với _ Đo tần số
điều hướng internal Clock _
Reset Đếm
Đếm Single-phase với _ Đo tần số
điều hướng external Clock Hướng
Reset Đếm
Đếm 2 phase với 2 ngõ Clock _ Đo tần số
vào xung Clock up
down Reset Đếm
Đếm A/B phase lệch nhau _ Đo tần số
900 Phase A Phase B
Reset Đếm
2.4.4.3. Địa chỉ vào cho bộ đếm tốc độ cao HSC
Tín hiệu đầu vào cho tất cả các bộ HSC cần phải được kế nối với CPU, hay signal board
để kết nối với CPU. Đồng thời, người dùng cần phải cấu hình và bật cho các HSC hoạt
động trong Device configuration.
Chú ý: Người dùng cần phải chú ý không cấu hình cùng 1 ngõ vào cho 2 bộ HSC
Định nghĩa ngõ vào cho bộ đếm HSC:
- Chế độ Single-phase: C là tín hiệu ngõ vào của xung (clock), [d] là ngõ vào điều hướng,
[R] là tín hiệu external reset

64
- Chế độ 2-phase: CU là tín hiệu đầu vào xung đếm lên, CD là tín hiệu đầu vào xung đếm
xuống, [R] là tín hiệu external reset.
- Tín hiệu [R] chỉ áp dụng cho chế độ đếm.
Tín hiệu ngõ vào của bộ HSC on-board của CPU 1211C
Tín hiệu ngõ vào on-board của CPU (I0.x)
Chế độ đếm HSC
0 1 2 3 4 5
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 2 AB-phase [R] A B
1-phase C [d]
2-phase CU CD
HSC 3 AB-phase A B
Tín hiệu ngõ vào của bộ HSC on-board của CPU 1212C

Tín hiệu ngõ vào on-board của CPU (I0.x)


Chế độ đếm HSC
0 1 2 3 4 5 6 7
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 2 AB-phase [R] A B
1-phase C [d] [R]
2-phase CU CD [R]
HSC 3 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 4 AB-phase [R] A B

Tín hiệu ngõ vào của bộ HSC on-board của CPU 1214C…1217C
Tín hiệu ngõ vào on-board của CPU (I0.x)
Chế độ đếm HSC
0 1 2 3 4 5 6 7
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
HSC 2 1-phase [R] C [d]

65
2-phase [R] CU CD
AB-phase [R] A B
1-phase C [d] [R]
2-phase CU CD [R]
HSC 3 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 4 AB-phase [R] A B
1-phase C [d] [R]
2-phase CU CD [R]
HSC 5 AB-phase A B [R]
1-phase C [d] [R]
2-phase CU CD [R]
HSC 6 AB-phase A B [R]
Tín hiệu của Signal board hỗ trợ cho người dùng 2 kênh đọc xung tốc độ cao với 2 sự lựa
chọn sau:
- Trong trường hợp người dùng mua CPU với kiểu AC/DC/RL muốn xử lý xung tốc độ
cao đầu vào thì cần mua thêm SB sẽ cho phép sử dụng được HSC1 và HSC2
- Trường hợp người dùng sử dụng CPU 1211 và CPU 1212 thì mở rộng thêm 2 HSC là
HSC5 và HSC6.
Bảng tín hiệu ngõ vào của bộ HSC và SB
Tín hiệu ngõ vào on-board của SB
Chế độ đếm HSC (I4.x)
0 1 2 3
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 2 AB-phase [R] A B
Chú ý: Các tín hiệu I/O được sử dụng với bộ đếm tốc độ cao phải được khai báo trong
cấu hình của CPU. Khi địa chỉ I/O được gắn cho bộ đếm HS thì không thể bị chỉnh sửa
được bởi chức năng Force trong bảng Watch.
2.4.4.4. Tập lệnh xử lý xung tốc độ cao CTRL_HSC
Mỗi lệnh CTRL_HSC sử dụng một khối dữ liệu Instance DB để lưu trữ dữ liệu của bộ
đếm, cấu trúc và tham số. Khi gọi tập lệnh CTRL_HSC trong chương trình thì Step 7
Basic V1x sẽ tự động tạo ra 1 instance DB tương ứng.

66
Bảng tham số và kiểu dữ liệu của tập lệnh CTRL_HSC
Khai Kiểm tra
Tham số Miêu tả
báo dữ liệu
HSC IN HW_HSC HSC identifier
DIR IN BOOL 1= cho phép điều hướng mới
CV IN BOOL 1= cho phép cài đặt giá trị mới
RV IN BOOL 1= cho phép cài đặt giá trị tham chiếu mới
1= cho phép cài đặt khoảng thời gian đếm
PERIOD IN BOOL
mới (chỉ áp dụng cho chế độ đo tần số)
NEW_DIR IN INT Hướng đếm mới: 1=forward, -1=backward
NEW_CV IN DINT Giá trị đếm mới
NEW_RV IN DINT Giá trị tham chiếu mới (reference)
Khoảng thời gian mới được cài đặt (chỉ áp
NEW_PERIOD IN INT dụng cho chế độ đo tần số). 1=1s, 2=0.1s,
3=0.01s
BUSY OUT BOOL Hàm chức năng đang bận xử lý
STATUS OUT WORD Mã code báo trạng thái
Chú ý: HSC Identifier là địa chỉ quy định của các bộ HSC trong CPU. Người dùng có thể
kiểm tra và tìm HSC Identifier cho từng kênh đọc HSC trong cấu hình Device của CPU:
Device configuration -> Device view -> CPU …-> Properties -> HSC -> Hardware
Identifier. Mã này là số decimal và cần chuyển sang mã hexa để sử dụng với lệnh
CTRL_HSC.
 Nếu các tham số DIR, CV, RV, PERIOD không được kích hoạt thì những tham số
NEW_DIỈ< NEW_CV. NEW_RV, NEW_PERIOD sẽ không đươc thực hiện.
 Tham số DIR chỉ có tác dụng khi người dùng cấu hình điều hướng cho bộ đếm
xung là “ User Program (internal direction control)” trong cấu hình device CPU
cho bộ đếm HSC.
67
 Để cho bộ HSC thực hiện trên on_board của CPU, hay trên SB thì tham số BUSY
luôn luôn bằng 0.

Người dùng có thể cấu hình tham số cho từng bộ đếm HSC trong device configuration
để CPU thực hiện chức năng đếm xung/đo tần số, chức năng reset, cấu hình cho ngắt,
hardware I/O, và địa chỉ của giá trị đếm.
Một vài tham số của bộ đếm HSC có thể được chỉnh sửa bởi chương trình người dùng
thông qua các tham số DIR, CV, RV, PERIOD.
 Khi DIR=1 thì cho phép thay đổi hướng đếm tại tham số NEW_DIR
 Khi CV=1 cho phép cài đặt giá trị đếm bắt đầu tại NEW_CV
 Khi RV=1 cho phép cài đặt giá trị tham chiếu mới tại NEW_RV
 Khi PERIOD=1 cho phép cài đặt khoảng thời gian mới ( áp dụng cho chế độ
đo tần số) tại NEW_PERIOD.
 Khi các tham số DIR, CV, RV, PERIOD=0 thì giá trị đếm, giá trị tham chiếu,
và hướng đếm không thay đổi.

Lệnh CTRL_HSC có thể viết trong khối OB ngắt phần cứng và đây là đặc trưng của
lệnh. Khi giá trị CV=RV thì sẽ có một trigger gọi khối OB ngắt phần cứng để người dùng
có thể nạp các tham số NEW_CV, NEW_RV, NEW_PERIOD…
Giá trị đếm được của HSC không có trong các tham số của lệnh CTRL_HSC mà
được truy xuất thông qua địa chỉ process image, và được cấu hình trong Device
configuration. Như vậy, người dùng có thể sử dụng trực tiếp địa chỉ này để đọc giá trị
đếm được của bộ HSC. Để truy xuất địa chỉ process image của bộ HSC chúng ta sẽ thực
hiện thao tác sau: Device configuration → Device view → CPU .. → Properties →
HSC[n] → I/O address.

Ví dụ như hình trên thì người dùng có thể truy xuất giá trị của HSC 1 thông qua địa chỉ:
ID1000 với tầm giá trị của bộ đếm là: -2147483648→+2147483647
Bảng: Kiểu dữ liệu và địa chỉ của các bộ HSC
HSC Kiểu dữ liệu của CV Địa chỉ mặc định
HSC1 Dint ID1000
HSC2 Dint ID1004

68
HSC3 Dint ID1008
HSC4 Dint ID1012
HSC5 Dint ID1016
HSC6 Dint ID1020

Bảng: Mã code báo trạng thái


Status
Miêu tả
(W#16#....)
0 Không có lỗi thực thi
80A1 HSC indentifier không đúng
80B1 Báo lỗi NEW_DIR
80B2 Báo lỗi NEW_CV
80B3 Báo lỗi NER_RV
80B4 Báo lỗi NEW_PERIOD
80C0 Đa truy cập tới bộ đếm HSC
HSC không được bật cho phép hoạt động trong Device
80D0
Config
2.4.4.5. Hướng dẫn lập trình bộ đếm HSC hoạt động
a. Yêu cầu
Cấu hình hệ thống bao gồm: 1 CPU 1214C, 1 encoder dạng incremental gắn trên động cơ
trả tín hiệu về CPU, 1 màn hình HMI giao tiếp với PLC để cài đặt số xung cần đọc. Lập
trình PLC thực hiện yêu cầu:
 Encoder được kết nối vào các chân tín hiệu của bộ HSC 1, điều hướng đếm người
dùng có thể thay đổi trên HMI.
 HMI cài đặt số xung cần đọc
 Nếu đọc đủ số xung rồi thì đèn báo trạng thái hiển thị và người dùng có thể thay
đổi hướng, giá trị tham chiếu mới hay giá trị xung bắt đầu đếm.

b. Cấu hình cho bộ đếm HSC hoạt động


Với HSC của PLC S7 1200 yêu cầu người dùng phải bật chế độ cho phép HSC hoạt động
và cấu hình các tham số liên quan: tín hiệu Reset bộ đếm, chế độ điều hướng đếm, giá trị
cài đặt ban đầu..
Bước 1: Khởi tạo Project với tên HSC với cấu hình CPU 1214C
Bước 2: Cấu hình khai báo cho bộ HSC hoạt động: Device configuration → Device view
→CPU→Properties→High Speed Counter (HSC) →HSC 1(người dùng chọn bộ đếm
HSC cần sử dụng).

69
Bật chế độ Enable cho bộ HSC hoạt động

Lựa chọn chức năng hoạt động cho bộ HSC

Chế độ đếm Type of counting chọn Count để thực hiện đếm xung, đếm tín hiệu
encoder trả về là dạng Singe phase, hướng đếm chọn User program (internal direction
control) để người dùng có thể thay đổi hướng đếm trong chương trình hoặc HMI, chế độ
đếm ban đầu chọn là đếm lên (count up).
Thiết lập giá trị đếm ban đầu

Thiết lập giá trị bắt đầu đếm và giá trị tham chiếu khởi đầu (initial reference) cho bộ
đếm. Các giá trị này có thể thay đổi thông qua các tham số của tập lệnh CTRL_HSC.
Thiết lập sư kiện hoạt động khi CV=RV

70
Tùy theo ứng dụng và phương pháp lập trình mà người dùng có thể chọn hoặc bỏ
chế độ thiết lập này. Trong ứng dụng bài toán trên, tác giả sử dụng tới việc gọi OB ngắt
phần cứng khi giá trị đếm CV=RV.
Tại tham số Hardware interupt, người dùng có thể chọn khối OB ngắt phần cứng để
gọi khi CV=RV, nếu khối OB ngắt phần cứng chưa được khởi tạo thì người dùng có thể
chọn Add Object → Organization block → Hardware interrupt.

Kiểm tra kết quả sau cấu hình cho địa chỉ input của CPU hoạt động với chế độ HSC 1
thông qua Hard ware address, I/O address là địa chỉ để người dùng có thể truy xuất giá trị
CV của bộ đếm ( mặc định địa chỉ của HSC 1 là ID1000), Hardware identifier được đọc
trong Device configuration là số Decimal và người dùng sẽ chuyển sang số Hexa trong
khai báo của tập lệnh CTRL_HSC.

c. Lập trình chương trình điều khiển


Bước 1: Khởi tạo khối dữ liệu DB1 với tên HSC: Program blocks → Add new
block →Data block, đặt tên HSC, chọn kiểu là Global DB, chọn OK để hoàn thành việc
khởi tạo

Bước 2: Đặt tên và khai báo kiểu dữ liệu muốn sử dụng trong khối DB

71
Bước 3: Lập trình chương trình trong khối tổ chức Main OB1 thực hiện việc đọc dữ
liệu của bộ đếm HSC 1 và thực hiện reset các tín hiệu enable trạng thái chuyển hướng
(Dir), giá trị đếm (CV) và các giá trị tham chiếu (RV).

Chú ý: Các địa chỉ "HSC".CV, "HSC".Dir, "HSC".RV, "HSC".HSC_Value là dữ liệu đã


được khai báo tron khối DB1
Bước 4: Lập trình chương trình trong khối tổ chức ngắt phần cứng (OB40) thực
hiện ngắt và nạp thông số mới cho hướng đếm (New_Dir), giá trị đếm (New_CV), và giá
trị tham chiếu cho bộ đếm (New_RV)

72
Khi giá trị CV=RV thì khối tổ chức ngắt phần cứng OB40 sẽ được gọi. Khối OB40 sẽ
thực hiện nhiệm vụ Set các bit trạng thái : "HSC".Dir, "HSC".CV, "HSC".RV và cho
người dùng thay đổi các tham số mới cho hướng đếm New_Dir, giá trị đếm New_CV, và
giá trị tham chiếu cho bộ đếm New_RV từ màn hình HMI/SCADA. Sau khi thực hiện
xong nhiệm vụ hệ thống sẽ tự động trở về chương trình Main OB1 để hoạt động.
Bước 5: Cài đặt cho màn hình HMI/SCADA thì người dùng thiết kế giao diện có
các I/O field hiển thị New_Dir, New_CV, New_RV ...

2.5. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ


2.5.1. Tập lệnh chuyển đổi dữ liệu/giá trị
Khi có những giá trị không đồng nhất về kiểu dữ liệu thì việc so sánh, tính toán giữa
các giá trị sẽ trở lên khó khăn cho nên việc chuyển đổi đồng nhất giá trị là cần thiết. Để
thực hiện việc chuyển đổi giá trị này người dùng có thể sử dụng các tập lệnh Conversion
operations để chuyển đổi dữ liệu/giá trị.
2.5.1.1. Lệnh chuyển đổi giá trị - Convert
Để thực hiện việc chuyển đổi các giá trị từ BCD sang I, BCD sang DI, I sang DI, DI
sang R, … thì chúng ta sẽ sử dụng tập lệnh CONV

73
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
EN Input BOOL I, Q, M, D, L Ngõ vào cho phép hoạt
động
IN Input I, DI, R, BCD I, Q, M, D, L, P Giá trị cần chuyển đổi
hoặc hằng số
OUT Output I, DI, R, BCD Q, M, D, L, P Kết quả sau khi chuyển
đổi
ENO Output BOOL I, Q, M, D, L Ngõ ra báo hoàn thành
chuyển đổi
Để thực hiện phép chuyển đổi giá trị nào thì chúng ta chỉ cần chọn giá trị phù hợp
đối với đầu vào và đầu ra.
Để làm rõ vấn đề hơn chúng ta sẽ thực hiện việc chuyển đổi dữ liệu từ một số BCD
nằm trong vùng nhớ MW30 thành một số thực REAL nằm trong vùng nhớ MD96.

74
Lệnh chuyển đổi Int to DInt sẽ chuyển đổi giá trị Int trong vùng nhớ MW10 thành
giá trị DInt và đưa vào vùng nhớ MD52.
Lệnh chuyển đổi DInt to Real sẽ chuyển đổi giá trị DInt trong vùng nhớ MD52
thành giá trị thực Real và đưa vào vùng nhớ MD96.
Tuy nhiên người dùng chỉ có thể sử dụng phép chuyển đổi Bcd to Interger cho số
BCD nằm trong vùng nhớ Word. Nếu chúng ta có một số BCD nằm trong vùng nhớ một
byte thì chúng ta sẽ xử lý như thế nào? Để giải quyết vấn đề này chúng ta khảo sát một ví
dụ như sau:

Như vậy, muốn thực hiện bài toán như trên chúng ta sẽ phải mượn thêm một byte
cao để trở thành một word hoàn chỉnh, đồng thời để đảm bảo không làm ảnh hưởng đến
giá trị ban đầu chúng ta sẽ xóa toàn bộ giá trị trong byte cao. Sau đó, chúng ta sẽ dùng
lệnh Bcd16 to Int để chuyển giá trị đó sang số Int.
2.5.1.2. Chuyển đổi số nguyên sang số thực SCALE có giới hạn MIN - MAX
Lệnh này không có với PLC S7-1200. Lệnh SCALE có tác dụng chuyển đổi giá trị
số nguyên được đặt vào ngõ vào IN thành giá trị nằm trong khoảng LO_LIM và HI_LIM.
Và ngõ ra được xuất ra OUT dựa theo công thức sau:
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM
Trong đó các tham số và hằng số được sử dụng trong lệnh SCALE:
Tham số IN là giá trị đầu vào cần chuyển đổi, với kiểu dữ liệu số nguyên (K1 ≤ IN
≤ K2), thông thường khai báo là địa chỉ của tín hiệu ngõ vào Analog là PIW.
Hằng số K1 và K2 được xác định dựa theo giá trị của tham số Bipolar:
 Nếu Bipolar = 1 thì giá trị K1 = -27648.0 và K2 = +27648.0
 Nếu Bipolar = 0 thì giá trị K1 = 0.0 và K2 = +27648.0
Tham số HI_LIM và LO_LIM là giá trị cận trên và cận dưới của đơn vị kỹ thuật,
với kiểu dữ liệu là số thực (Real)

75
Tham số OUT là ngõ ra của lệnh chuyển đổi, với kiểu dữ liệu số thực – Real
(LO_LIM ≤ OUT ≤ HI_LIM), có giá trị đúng với giá trị cảm biến trả về hoặc tương ứng
theo tỉ lệ % của hệ thống tùy thuộc với người dùng khai báo ở LI_LIM và LO_LIM.
Tham số RET_VAL là kết quả lỗi trả về, với kiểu dữ liệu WORD. Nếu không xảy
ra lỗi thì kết quả trả về W#16#0000 và ngược lại.
Ví dụ:

Giải thích:
Khi nhấn I125.0 thì hệ thống hoạt động, nhấn I125.1 thì hệ thống dừng hoạt động.

76
 Nếu tín hiệu analog từ cảm biến trả về nhỏ hơn hoặc bằng 3.0V (tương ứng 30%)
thì cho đầu ra Q124.0 hoạt động.
 Nếu tín hiệu analog từ cảm biến trả về lớn hơn hoặc bằng 7.0V (tương ứng 70%)
thì cho đầu ra Q124.0 dừng hoạt động.
2.5.1.3. Chuyển đổi số thực sang số nguyên UNSCALE có giới hạn MIN - MAX
Lệnh này không có với PLC S7-1200. Lệnh UNSCALE có tác dụng chuyển đổi
ngược từ giá trị kỹ thuật sang số nguyên (INT) để xuất tín hiệu ngõ ra module AO. Dựa
theo công thức sau:
OUT = [ ((IN–LO_LIM)/(HI_LIM–LO_LIM)) ∗ (K2–K1) ] + K1
Trong đó các tham số và hằng số được sử dụng trong lệnh UNSCALE:
Tham số IN là giá trị đầu vào cần chuyển đổi, với kiểu dữ liệu số thực (LO_LIM ≤
IN ≤ HI_LIM).
Hằng số K1 và K2 được xác định dựa theo giá trị của tham số Bipolar:
 Nếu Bipolar = 1 thì giá trị K1 = -27648.0 và K2 = +27648.0
 Nếu Bipolar = 0 thì giá trị K1 = 0.0 và K2 = +27648.0
Tham số HI_LIM và LO_LIM là giá trị cận trên và cận dưới của đơn vị kỹ thuật,
với kiểu dữ liệu là số thực (Real)
Tham số OUT là ngõ ra của lệnh chuyển đổi, với kiểu dữ liệu số nguyên – INT (K1
≤ OUT ≤ K2).
Tham số RET-VAL là kết quả lỗi trả về, với kiểu dữ liệu WORD. Nếu không xảy ra
lỗi thì kết quả trả về W#16#0000 và ngược lại.
Ví dụ:

2.5.2. Lệnh làm tròn giá trị số thực về số nguyên


Trong một số trường hợp người dùng muốn lấy phần nguyên của số thực theo mục
đích nào đó thì có thể sử dụng các tập lệnh chuyển đổi từ số thực sang số nguyên như:
Round, Ceil, Floor, Trunc.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả

77
IN Input REAL I, Q, M, D, L, P hay Giá trị ngõ vào muốn
hằng số làm tròn.
OUT Output DINT Q, M, D, L, P Kết quả làm tròn.
Lệnh làm tròn giá trị số thực về số nguyên gần nhất – Round:

Lệnh làm tròn giá trị số thực về số nguyên lớn gần nhất – Ceil:

Lệnh làm tròn giá trị số thực về số nguyên nhỏ gần nhất - Floor:

78
2.5.3. Lệnh lấy phần nguyên của số thực – Trunc
Với các tập lệnh Round, Ceil, Floor đó là những tập lệnh làm tròn giá trị số thực về
số nguyên gần nhất (tăng lên hoặc giảm xuống) thì lệnh Trunc cắt bỏ toàn bộ phần số sau
dấu chấm động để chỉ lấy phần giá trị số nguyên và đưa ra ngõ Out của lệnh.

2.6. Lập trình với tín hiệu tương tự - Analog


2.6.1. Lập trình xử lý tín hiệu Analog input
Có rất nhiều cảm biến đọc tín hiệu Analog trong thực tế như: cảm biến nhiệt, áp suất, siêu
âm, cảm biến màu sắc, lưu lượng… trả về các tín hiệu analog chuẩn với tín hiệu chuẩn
như:
Tín hiệu dòng điện: 0-20mA, 4-20mA..
Tín hiệu điện áp ±10V, 0-10V, ±5V, 0-5V..
Tins hiệu nhiệt độ trả về với RTD, TC
Tín hiệu loadcell cho cân định lượng

Khi tín hiệu analog trả về từ cảm biến qua module analog sẽ được bộ ADC chuyển
sang dạng số Interger dưới dạng số hóa (mức) tín hiệu. Các giá trị số hóa này sẽ khó quan
sát hơn các giá trị thực tế, cũng như việc xử lý phép toán của các số hóa có thể làm cho
người dùng không quen và khó xử lý. Để đơn giản hóa chúng ta có thể vẽ biểu đồ biểu
diễn cho số hóa trả về và giá trị thực tế đưa vào như sau:

79
 K1: mức tín hiệu nhỏ nhất tương ứng với tín hiệu analog nhỏ nhất Lo_Lim
đưa vào module analog
 K2: mức tín hiệu nhỏ nhất tương ứng với tín hiệu analog lớn nhất Hi_Lim
đưa vào module analog

Vậy giá trị đọc về từ module Analog thông qua bộ ADC đưa vào PLC S7 1200 chỉ
có tầm giá trị K1≤IN≤K2. Với IN là giá trị trả về từ module Analog input. Từ đó ta viết
phương tình đọc và hiển thị giá trị Analog, với giá trị thực tế tương ứng với giá trị đưa
vào module analog:
OUT=[((FLOAT(IN) - K1)/(K2 - K1))*(HI_LIM-LO_LIM)] + LO_LIM (*)
Với:
 IN là giá trị trả về cho các chân tín hiệu AIW (K1≤IN≤K2)
 OUT là giá trị thực tế đưa vào module analog (Lo_Lim≤OUT≤Hi_Lim).

Trong một số trường hợp có thể sử dụng phần trăm % hệ thống, hay đơn vị hệ thống
(mét, nhiệt độ…)
Gía trị của [K1,K2] có các khoảng phân giải: [0,27648], [-27648,27648], [0,32767], [-
32767,32767] tùy theo phần cứng và độ phân giải của module analog input.
Dựa vào phần cứng thiết bị và tín hiệu trả về mà ta chia thành hai định dạng xử lý phù
hợp:
 Xử lý tín hiệu dòng/áp: tất cả các tín hiệu có thể chuyển đổi về thành dạng này để
sử lý
 Xử lý tín hiệu nhiệt: Áp dụng xử lý với các module đọc RTD, TC và không phân
biệt đó là cảm biến loại K,C,B,N,S

Lập trình xử lý tín hiệu dòng/áp

80
Để xử lý tín hiệu analog trả về tín hiệu dòng/áp ta sử dụng trực tiếp công thức (*). Tuy
nhiên trong thư viện tập lệnh Step 7 Basic V1x không hỗ trợ lệnh đọc tín hiệu analog nên
ta sử dụng kết hợp 2 tập lệnh SCALE_X và NORM_X tương ứng với công thức (*)
a. Lệnh Norm_X
Người dùng có thể sử dụng lệnh Normalize để chuyển đổi giá trị đầu vào nằm trong
giới hạn [Min , Max] với ngõ ra thay đổi tuyến tính trong giới hạn [0.0 , 1.0].

Công thức toán học của lệnh NORM_X:


OUT = (VALUE – MIN) / (MAX – MIN)
Tham số của lệnh NORM_X
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
EN IN BOOL I, Q, M, D, L Ngõ vào cho phép hoạt
động
ENO OUT BOOL Q, M, D, L Ngõ ra cho phép hoạt động
MIN IN INT, REAL I, Q, M, D, L Giới hạn dưới của Value
hay hằng số
VALUE IN INT, REAL I, Q, M, D, L Giá trị Value đưa vào
hay hằng số
MAX IN INT, REAL I, Q, M, D, L Giới hạn trên của Value
hay hằng số
OUT OUT REAL Q, M, D, L Kết quả trả về nằm trong
giới hạn [0.0 , 1.0]
b. Lệnh Scale_X
Người dùng có thể sử dụng lệnh SCALE-X để chuyển đổi giá trị sang một tầm giá
trị mới phù hợp với yêu cầu sử dụng. Khi lệnh SCALE_X được thực hiện thì giá trị
VALUE sẽ được chuyển đổi nằm trong giới hạn [MIN, MAX] và được lưu trữ vào vùng
nhớ OUT.

81
Công thức toán học của lệnh NORM_X:
OUT = [VALUE ∗ (MAX – MIN)] + MIN
Tham số của lệnh SCALE_X
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
EN IN BOOL I, Q, M, D, L Ngõ vào cho phép hoạt
động
ENO OUT BOOL Q, M, D, L Ngõ ra cho phép hoạt động
MIN IN INT, REAL I, Q, M, D, L Giới hạn dưới của Value
hay hằng số
VALUE IN REAL I, Q, M, D, L Giá trị Value đưa vào
hay hằng số
MAX IN INT, REAL I, Q, M, D, L Giới hạn trên của Value
hay hằng số
OUT OUT INT, REAL Q, M, D, L Kết quả trả về nằm trong
giới hạn [MIN , MAX]
c. Ứng dụng lệnh Norm_X và Scale_X để đọc tín hiệu analog
Lập trình ứng dụng giám sát mức nước trong bình với yêu cầu:
Cảm biến siêu âm đo mức trong bình trả về điện áp với mức tín hiệu 0V tương ứng
100 lít nước và 10V tương ứng 1000 lít nước.
Cảm biến được kết nối với ngõ vào Analog AI0 tính hợp trên S7 1200
Lập trình giám sát bồn nước và báo hiển thị giá trị mức cao là 990 lít và báo hiển thị
giá trị mức thập là 110 lít
Bước 1: Khởi tạo Project với CPU 1214C
Bước 2: Cấu hình phần cứng CPU 1214C để kiểm tra địa chỉ và cấu hình hoạt động
cho các kênh Analog: CPU →Properties→AI 2→Analog input

82
Bước 3:Tạo tag giám sát biến trạng thái của các tín hiệu: PLC tag →Add new tag table

Bước 4: Lập trình đọc tín hiệu analog trả về từ cảm biến

Giá trị các ngõ Analog input tích hợp trên CPU có hệ số [K1,K2] là [0, 27648] được đưa
vào [Min, Max] trong hàm Norm_X
Giá trị [Min, Max] trong hàm Scale_X là giá trị cận trên và cận dưới của đơn vị kỹ thuật
tương ứng với giá trị [Lo_Lim, Hi_Lim], với kiểu dữ liệu là số thực. Giá trị cảm biến trả
về từ 0V đến 10V thì có thể khai báo Max=10.0 và Min=0.0. Hoặc có thể khai báo theo tỉ
lệ % hệ thống.
Bước 5: Lập trình báo đèn trạng thái mức đầy khi cao hơn 990 lít, mức thấp khi thấp hơn
110 lít

83
2.6.2. Lập trình xử lý tín hiệu Analog output
2.6.2.1. Thiết lập công thức toán học xử lý tín hiệu Analog output
Biểu đồ biểu diễn cho số thực trả về số hóa để xuất ra Analog output:

Từ đó ta viết được phương trình xử lý tín hiệu Analog out:


AQW=[(Value –Lo_Lim)/(Hi_Lim – Lo_Lim)*(K2-K1)] + K1
Các hệ số [Lo_Lim, Hi_Lim], và [K1, K2] giống như thuật toán giải xử lý tín hiệu
Analog input.
Và dựa theo công thức của lệnh Norm_X và lệnh Scale_X thì có thể kết hợp hai lệnh trên
để tạo ra công thức xử lý tín hiệu Analog như sau:

2.6.2.2. Ví dụ ứng dụng


a. Yêu cầu
Thực hiện lập trình điều khiển hệ thống bơm với yêu cầu:
- Sử dụng Signal board xuất tín hiệu Analog điều khiển bơm hoạt động thông qua biến
tần.

84
Nếu mực nước nhỏ hơn 500 lít nước thì bơm chạy 100%, nếu mực nước lớn hơn 700 lít
hì bơm chạy 50% công suất.
b. Thực hiện
Bước 1: Khai báo, kiểm tra cấu hình phần cứng của module Analog để kiểm tra địa chỉ
và cấu hình hoạt động cho các kênh Analog theo yêu cầu bài toán thực tế: Signal board
Analog →Properties →Analog output

Bước 2: Lập trình

85
2.7. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2
Câu 1. Lập trình Tag có lợi điểm gì so với lập trình truy xuất địa chỉ tuyệt đối (Absolute
address)?
Câu 2. Lập trình I/O Mapping có những lợi điểm như thế nào trong kỹ thuật lập trình?
Câu 3. Kể tên các tập lệnh logic và chức năng ứng dụng của nó?
Câu 4. Trình bày nguyên lý hoạt động của bộ định thì TP, TON,TOFF, TONR?
Câu 5. Sự khác nhau giữa bộ định thì TON và TONR như thế nào?
Câu 6. Bộ định thì khai báo theo chuẩn IEC timer có những đặc trưng gì?
Câu 7. Trình bày nguyên lý hoạt động của Counter đếm lên, đếm xuống, đếm lên xuống.
Kể tên một vài ứng dụng và tạo project minh họa.
Câu 8. Giá trị đếm tối đa của các bộ Counter là bao nhiêu?
Câu 9. Trình bày cấu trúc lệnh CTRL_HSC?
Câu 10. Trình bày câu lệnh xử lí tín hiệu analog input?
Câu 11. Trình bày câu lệnh xử lí tín hiệu analog output?
Câu 12: Điều khiển ON/OFF động cơ có chỉ báo
Một động cơ điện 3 pha được điều khiển bằng một PLC S7-300. Khi nhấn nút S2
(thường hở) thì động cơ sẽ chạy. Khi nhấn nút S1 (thường đóng) thì động cơ sẽ dừng lại.
Các chế độ hoạt động chạy và dừng được báo bằng 2 đèn báo H1 và H2.

Câu 13: Điều khiển đảo chiều quay động cơ


Một động cơ điện 3 pha cần được điều khiển đảo chiều. Khi ấn S1 (thường hở)
thì động cơ sẽ quay phải và đèn H1 sáng báo động cơ đang quay phải. Khi nhấn nút S2
(thường hở) thì động cơ quay trái và đèn H2 sáng báo động cơ đang quay trái. Động cơ

86
có thể dừng bất cứ lúc nào nếu ấn nút dừng S3 (thường đóng) hoặc động cơ xảy ra sự cố
quá dòng làm cho tiếp điểm của thiết bị bảo vệ Q1 tác động (tiếp điểm 13, 14 của Motor
CB). Khi động cơ dừng đèn báo H3 sáng.

Câu 14: Điều khiển cơ cấu máy dập


Một cơ cấu dập trong một máy dập nguyên liệu (ví dụ dập ra các vỏ hộp) có thể
chuyển động nâng lên hay hạ xuống nhờ một động cơ điện M1 quay 2 chiều. Để đảm
bảo an toàn cho tay người vận hành thì chỉ khi nào người vận hành dùng cả 2 tay nhấn
đồng thời 2 nút nhấn S1 (NO) và S2 (NO) thì bàn dập mới hạ xuống. Khi hạ
xuống đụng công tắc hành trình giới hạn dưới S3 (NC) thì tự chạy nâng lên cho tới
khi đụng công tắc hành trình giới hạn trên S4 (NC) thì dừng lại. Chu kỳ lặp lại khi nào
người vận hành lại nhấn 2 nút nhấn S1 và S2.

87
Câu 15: Điều khiển cửa lò
Một cửa lò có chức năng “mở, đóng và ở vị trí bất kỳ” được điều khiển bởi một
cylinder. Ở vị trí bình thường thì cửa lò được đóng.
- Khi tác động nút nhấn “S1” (NO) thì cửa lò mở ra và khi đến công tắc hành trình
giới hạn mở cửa “S4” (NC) thì dừng lại.
- Nếu cửa đã mở ra ở vị trí giới hạn mở cửa “S4” thì sẽ tự động đóng lại sau thời
gian 6s hoặc nút nhấn đóng cửa “S2” (NO) được ấn.
- Khi đến giới hạn cửa đóng “S5” (NC) thì việc đóng cửa kết thúc.
- Quá trình đóng cửa dừng ngay lập tức nếu cảm biến L1 (NO) bị tác động. Nhưng
nếu cảm biến quang không bị tác động thì quá trình đóng cửa vẫn tiếp tục.
- Khi cửa lò đang dịch chuyển có thể dừng bằng cách ấn nút dừng “S3” (NC).

Câu 16: Kiểm soát chỗ cho Garage ngầm


Một Garage ngầm có 20 chỗ đậu xe. Ở ngõ vào có hai đèn báo: Đèn đỏ báo hiệu
Garage đã hết chỗ, đèn xanh báo hiệu Garage còn chỗ trống. Đường vào và đường ra chỉ

88
cho phép một xe chạy. Hai cảm biến S1 và S2 được đặt gần nhau để nhận biết xe vào và
ra:

Câu 17: Hệ thống đóng chai


Nước được bơm vào bồn bằng bơm và xả vào các chai liên tục thông qua van. Chai
được vận chuyển đến và đi bằng băng chuyền

Nguyên lý hoạt động:


Nhấn nút PM, hệ thống hoạt động. Bơm M được điều khiển chạy để bơm nước vào
bồn cho đến khi cảm biến B2 được tích cực. Nếu mực nuớc trong bồn bị giảm xuống B1,
hệ thống bơm được điều khiển để tiếp tục bơm đầy. Chai được liên tục đưa vào dây
chuyền và chạy cho đến khi chạm cảm biến B3, dây chuyền dừng lại, van được mở ra cho
đến khi cảm biến B4 xác định mức đầy chai, dây chuyền lại được cho phép chạy cho đến
khi chai chạm cảm biến B3. Hệ thống hoạt động liên tục như thế cho đến khi nhấn nút
SS2. Hãy thiết kế, lập trình chương trình điều khiển sử dụng PLC S7-200?
Câu 18: Máy uốn thanh kim loại:

89
Các thanh kim loại cần được uốn một đầu theo theo một khuôn cho trước (sơ đồ
công nghệ). Qui trình hoạt động của máy như sau:
- Thanh kim loại cần uốn được đặt lên khuôn uốn
- Ấn nút khởi động S0 thì xy lanh Cyl.1 hạ xuống để giữ lấy thanh kim loại.
Khi thanh kim loại được giữ chặt (nhận biết bởi công tắc hành trình S2) thì xy lanh
Cyl.2 hạ xuống để uốn thanh kim loại vuông góc trước. Sau khi uốn xong thì tự động
nâng lên nhờ công tắc hành trình S4.
- Khi xy lanh Cyl.2 trở về vị trí cơ bản (nhận biết bởi S3) thì xy lanh Cyl.3 được đẩy
để uốn thanh kim loại ở giai đọan uốn cuối theo định hình của khuôn uốn. Khi xy lanh
Cyl.3 đến vị trí S6 thì tự động rút ngược về.
- Khi xy lanh Cyl.3 rút về đến vị trí cơ bản (nhận biết bởi S5) thì xy lanh Cyl.1 cũng
rút về vị trí cơ bản của nó (nhận biết bởi S1). Lúc này thanh kim loại được tự do. Người
sử dụng có thể lấy ra và đặt một thanh kim loại mới vào. Và một chu kỳ mới lại có thể
bắt đầu.
Câu 19: Máy doa miệng ống kim loại
Ống kim loại cần được doa miệng theo một khuôn cho trước (sơ đồ công nghệ).

90
Máy hoạt động như sau: Người vận hành đặt ống kim loại cần doa miệng vào vị trí
sao cho miệng ống phải chạm vào cử chặn miệng ống. Sau đó ấn nút nhấn S0, xy lanh
Cyl.1 sẽ kẹp ống lại. khi ống đã được kẹp thì cử chặn miệng ống tự động rút về. Xy lanh
Cyl.2 sẽ hạ xuống doa miệng ống theo khuôn A. thời gian doa khỏang 3s. Sau đó xy lanh
Cyl.2 rút về và khuôn B được xylanh Cyl.4 đưa vào. Sau khi khuôn B được đưa vào thì
xy lanh Cyl.2 hạ xuống để doa miệng ống theo khuôn B. Tương tự như khuôn A việc doa
khoảng 3s. Sau đó xy lanh Cyl.2 trở về vị trí cơ bản của nó và xy lanh Cyl.4 cũng rút
khuôn B về và đặt khuôn A về vị trí sẵn sàng cho ống kim loại kế tiếp. Sau khi miệng
ống đã được doa theo khuôn B xong thì xy lanh kẹp ống Cyl.1 co về thả ống kim loại
khỏi hàm kẹp. Xy lanh Cyl.2 được đẩy trở về vị trí chặn miệng ống. Một chu kỳ mới lại
có thể bắt đầu.
Câu 20: Đảo chiều quay động cơ có khống chế thời gian
Một động cơ điện 3 pha có thể đảo chiều quay. Khi ấn nút nhấn quay phải “S1”
(NO) thì động cơ quay phải, đèn “H1” sáng báo động cơ quay phải. Khi ấn nút nhấn quay
trái “S2” (NO) thì động cơ quay trái, đèn “H2” sáng báo động cơ quay trái. Động cơ có
thể dừng bất cứ lúc nào nếu ấn nút nhấn dừng “S3” (NC) hoặc xảy ra sự cố. Khi dừng thì
đèn báo “H0” sáng.
Việc đảo chiều quay không thể thực hiện được sau khi nút dừng “S3” được ấn và
chưa hết 5s chờ cho động cơ dừng hẳn. Đèn báo chờ đợi “H3” sẽ chớp tắt với tần số 1Hz
trong thời gian chờ động cơ dừng hẳn.
Câu 21: Thiết bị rót chất lỏng vào thùng chứa

91
Khi bật công tắc “S1” thì thùng từ kho chứa thùng rỗng sẽ được đưa vào băng tải,
và băng tải vận chuyển thùng hoạt động. Khi một thùng rỗng đến dưới bồn chứa (được
nhận biết bởi cảm biến “S2”) thì băng tải dừng. Van “Y1” mở rót chất lỏng trong bồn vào
thùng. Sau thời gian 5s thì thùng chứa đầy. Van “Y1” đóng lại, một thùng rỗng sẽ được
đưa vào băng tải và băng tải tiếp tục di chuyển cho đến khi nào thùng đến dưới bồn chứa
thì dừng lại. Quá trình cứ lặp lại. Nếu chất lỏng trong bồn chứa hết thì còi “H1” sẽ báo
với tần số 1Hz. Nếu thùng chứa trong kho hết thì băng tải cũng tự động dừng sau thời
gian 15s kể từ thùng cuối cùng được rót đầy.
Chú ý: “Y2” là một solenoid được sử dụng để chặn thùng trong kho. Để thùng rớt vào
băng tải chỉ cần solenoid có điện trong thời gian 100ms.
Câu 22: Điều khiển đèn giao thông
Lập trình chương trình điêu khiển hệ thống đèn giao thông tại ngã tư:

Nhấn Start hệ thống làm việc: Đèn đỏ sáng 70s, đèn vàng sáng 10s, đèn xanh sáng
60s. Nhấn Stop dừng hệ thống và đèn vàng nhấp nháy.
Câu 23: Giám sát hoạt động băng tải bằng cảm biến phát xung
Một băng tải được truyền động thông qua một động cơ. Khi băng tải hoạt động thì
cảm biến giám sát băng tải “S2” phát xung có điện áp 24V với tần số 10Hz. Khi băng tải

92
đứng yên thì “S2” phát ra tín hiệu “0”. Khi có lỗi xảy ra, ví dụ băng tải bị kẹt, tín hiệu
giám sát không phát ra, ta cũng không biết là động cơ có tắt hay không. Trong trường
hợp này, động cơ kéo băng tải phải dừng ngay lập tức và chuông báo băng tải bị lỗi “H1”
vang với tần số 1Hz.
- Băng tải khởi động bằng nút nhấn “S1” (NO).
- Băng tải dừng bằng nút nhấn “S0” (NC).

Câu 24: Giám sát hoạt động băng tải bằng thời gian
Một băng tải vận chuyển sản phẩm được truyền động thông qua một động cơ. Sản
phẩm trên băng tải được nhận biết bởi hai cảm biến “S2” và “S3”. Thời gian tối đa để sản
phẩm di chuyển từ “S2” đến “S3” là 3s. Nếu vượt quá thời gian này thì băng tải xem như
bị lỗi. Khi bị lỗi thì động cơ kéo băng tải dừng ngay lập tức và một chuông báo phát ra
với tần số 3Hz.
- Băng tải khởi động bằng nút nhấn “S1” (NO).
- Băng tải dừng bằng nút nhấn “S0” (NC).

Câu 25: Điều khiển hệ thống đổ nhiên liệu


· LS1, LS2 : Công tắc hành trình
· S1, S2 : Báo bồn 1 đầy và cạn
· S3, S4 : Báo bồn nguyên liệu đầy và cạn

93
Khi nhấn nút LV thì cần bơm nguyên liệu di chuyển từ A đến B (nhờ động cơ 1
kéo). Khi đến B thì cần bơm dừng lại và bắt đầu bơm nguyên liệu vào bồn 1 nhờ bơm 1.
Khi bồn 1 đầy thì ngừng bơm và mở van V1, đồng thời bơm nguyên liệu ra khỏi bồn 1
nhờ bơm 2.
Khi bồn 1 đã cạn thì ngừng bơm 2 và đóng van V1 lại, sau đó cần bơm trở về vị trí
A. Muốn làm việc nữa thì nhấn nút LV trở lại.
Câu 26: Hệ thống khoan tự động
Hệ thống gồm 3 pitton 1A, 2A, 3A; 1A+, 2A+, 3A+ là các cuộn coil điều khiển duỗi
của lần lượt 3 van; 1A-, 2A-, 3A- là các cuộn coil điều khiển co của lần lượt 3 van; 1A1,
2A1, 3A1 là hành trình khi pittong co; 1A2, 2A2, 2A2 là hành trình khi pittong duỗi. Nút
nhấn khởi động SS2, nút nhấn dừng SS1; cảm biến nhận diện có sản phẩm SS0; đèn báo
H1; động cơ khoan AC Ma.

Nguyên lý hoạt động: Nếu không có sản phẩm, đèn chớp tắt với tần số 1Hz, động
cơ khoan Ma dừng. Nếu có sản phẩm, đèn sáng màu xanh, động cơ khoan Ma hoạt động.
Nhấn SS2, pittong 1A đẩy sản phẩm ra khỏi kho đến cuối hành trình và kẹp chặt sản
phẩm. Pittong 2A đẩy khoan ăn xuống, đến cuối hành trình, delay thêm 2s sau đó trở về
vị trí ban đầu. Sau đó pittong 3A duỗi ra để đẩy sản phẩm vào thùng, hệ thống quay về
ban đầu.
Câu 27: Hệ thống khoan - doa
94
Sản phẩm từ dây chuyền được thực hiện khoan - doa sau khi đi qua hệ thống. Ở
trạng thái ban đầu, các pittong ở trạng thái co.
Nguyên lý hoạt động:
- Băng tải được điều khiển chuyển động dùng pittong 3A1 với giới hạn hành trình
3B1 cà 3B2.
- Vật thể cần khoan được xác định bằng cảm biến B4, cần taro được xác định bằng
cảm biến B5.
- Hành trình của khoan được điều khiển bằng pittong 1A1, giới hạn bằng 1B1 và
1B2. Khi thực hiện khoan, động cơ quay theo chiều thuận, đồng thời với việc
pittong đẩy vào. Khi chạm giới hạn 1B2, động cơ quay theo chiều nghịch, đồng
thời với việc pittong kéo về cho đến khi chạm giới hạn1B1.
- Hành trình của taro được điều khiển bằng pittong 2A1, giới hạn bằng 2B1 và 2B2.
Khi thực hiện taro, động cơ quay theo chiều thuận, đồng thời với việc pittong đẩy
vào. Khi chạm giới hạn 2B2, động cơ quay theo chiều nghịch, đồng thới với việc
pittong kéo về cho đến khi chạm giới hạn 2B1.
- Khi nhấn Start, pittong 3A1 duỗi ra vận chuyển sản phẩm đến. Nếu cảm biến B4
phát hiện có vật thì thực hiện khoan. Nếu cảm biến B5 phát hiện có vật thì taro.
Sau khi động tác khoan và taro được thực hiện xong, pittong 3A1 lùi về để tiếp tục
vận chuyển sản phẩm đến.

Câu 28. Bài toán điều khiển khoan cần

95
 Phân tích bài toán
Giai đoạn đầu: Động cơ khoan và động cơ làm mát nghỉ, Phần nâng/hạ khoan ở vị
trí trên cùng, Không có vật liệu trong phần kẹp
Trình tự khoan: Đưa đối tượng vào phần kẹp (bằng tay) → bật công tắc cho phần
làm mát (nếu cần) → nhấn nút START để chạy động cơ khoan → vật liệu được kẹp với
một áp lực đặt trước → hạ khoan tới vị trí thấp (Khoan) → chờ 0,5s ở vị trí thấp (Khoan)
→ nâng khoan tới vị trí cao (Dừng khoan, dừng bơm nước) → tháo vật liệu (bằng tay).
Câu 29: Băng chuyền đếm táo
Khi ấn nút khởi động ON thì băng chuyền thùng hoạt động. Khi thùng đến vị trí thì
dừng lại và băng chuyền táo hoạt động. Nếu số lượng táo đếm được bằng 12 thì băng
chuyền táo dừng. Băng chuyền chạy tiếp cho đến khi một thùng thứ hai đúng vị trí thì
dừng lại. Quá trình được lặp đi lặp lại cho đến khi nào ấn nút OFF.

Câu 30: Điều khiển dây chuyền rót và đóng lắp trai
Yêu cầu công nghệ: Nhấn nút ON băng tải 1 hoạt động đưa chai không chạy trên
băng tải 1, tới vị trí rót nhớt băng tải một dừng, hệ thống rót nhớt vào chai và đồng thời

96
băng tải 2 cũng hoạt động. Sau 5s (thời gian rót nhớt là 5s) thì băng tải 1 hoạt động trở
lại. Khi chai gặp cảm biến đóng lắp (tại băng tải 2) thì băng tải 2 dừng để quá trình đóng
lắp bắt đầu. Thời gian đóng lắp là 5s sau đó băng tải 2 hoạt động và vận chuyển chai vào
thùng. Một thùng 10 chai, khi đếm đủ mười chai thì số thùng tăng lên một đơn vị. Nhấn
nút nhấn OFF tắt dây chuyền, reset bộ đếm.

Câu 31: Điều khiển tay gắp sản phẩm


Một tay gắp sản phẩm hoạt động như sau: Hệ thống hoạt động khi nhấn nút “Mo
may” và dừng khi nhấn nút “Tat may”, khi có sự cố dừng khẩn cấp nhấn nút “Dung khan
cap”.

Trạng thái ban đầu tay gắp nằm ở vị trí trên cùng (được xác định bằng cảm biến vị
trí Ta) và bên trái (được xác định bằng cảm biến vị trí Tc). Khi mở máy, nếu tại vị trí
PDA không có sản phẩm băng tải hoạt động, nếu có sản phẩm băng tải dừng để đưa sản
phẩm tới vị trí được xác định bằng cảm biến vị trí “PDA”. Nếu tại PDA có sản phẩm thì
tay gắp sẽ đi xuống và thực hiện gắp sản phẩm trong thời gian 1s. Hết thời gian tay gắp
đi lên vị trí trên cùng và di chuyển sang phải tới vị trí được xác định bằng cảm biến vị trí
Td, tay gắp đi xuống dưới cùng và nhả sản phẩm trong thời gian 1s, tay gắp tự động đi về
vị trí ban đầu. Nếu tại PDA có sản phẩm, tay gắp thực hiện tiếp chu trình như đã mô tả.
Trong quá trình đang thực hiện việc gắp sản phẩm, nếu nhấn nút tắt máy, hệ thống vẫn

97
hoạt động cho tới hết chu trình dở rồi mới dùng lại ở vị trí ban đầu. Nếu gặp sự cố, nhấn
nút dùng khẩn cấp, hệ thống sẽ dừng tức thời tại vị trí đó.
Câu 32: Xe chuyển nhiên liệu

Xe vận chuyển nguyên liệu hoạt động như sau:


* Xe vận chuyển nguyên liệu có thể thực hiện qua công tắc chọn chế độ: Chế độ tự động:
I0.6. Chế độ bước: I0.7
* Vị trí cơ bản: Xe ở vị trí công tắc hành trình End 2 (I0.3 và xe chưa được làm đầy.
Chế độ tự động:
Khi xe ở vị trí cơ bản và công tắc chọn chế độ đặt ở chế độ tự động, khi nhấn nút
khởi động (I0.0) thì van xả Y1 mở, vật liệu được đổ vào xe, cảm biến Fill 2 dùng để nhận
biết xe đã được đổ đầy. Khi xe đầy thì van xả Y1 mất điện và xe chạy về hướng B sau
thời gian ổn định 5s, xe dừng lại tại B (trạm nhận nguyên liệu) khi chạm công tắc hành
trình S2. Xy lanh thủy lực của thiết bị xả được điều khiển và tấm chắn trên xe được mở
vật liệu được rót vào bồn chứa. Khi xe xả hết vật liệu cảm biến S4 phát ra tín hiệu 1, pit
tông thủy lực của thiết bị xả mất điện, tấm chắn trở về vị trí cũ, xe dừng 5 giây sau đó
chạy về hướng A. Chu kỳ hoạt động được lặp lại. Nếu trong chu kỳ hoạt động mà nút
“dừng” được ấn thì quá trình vẫn tiếp tục cho đến khi xe trở về vị trí cơ bản (xe rỗng và ở
trạm nhận nguyên liệu) và dừng hẳn.
Chế độ bước:
Ở mỗi bước thực hiện phải thông qua nút nhấn “start”. Ví dụ : khi ấn “start” xe
đúng vị trí van xả được mở, khi xe đầy thì S3 tác động, van xả đóng lại. Nếu tiếp tục ấn
“start” thì xe chạy về hướng B. Hãy viết chương trình điều khiển xe chuyển nguyên liệu
này theo điều khiển trình tự.

98
CHƯƠNG 3. PHƯƠNG PHÁP LẬP TRÌNH PLC
MỤC TIÊU CHƯƠNG 3
Chương 3 cung cấp cho sinh viên kiến thức về kỹ thuật lập trình PLC, phương pháp
lập trình PLC, các khối tổ chức và lập trình kỹ thuật. Từ đó sinh viên có thể lựa chọn các
kỹ thuật lập trình và phương pháp lập trình PLC tùy theo công nghệ cụ thể.

3.1. KỸ THUẬT LẬP TRÌNH PLC


3.1.1. Vòng quét chương trình
PLC thực hiện chương trình theo chu kỳ lặp hay còn gọi là vòng quét (scan). Mỗi
vòng quét được bắt đầu bằng giai đoạn chuyển dữ liệu từ các cổng vào số tới vùng bộ
đệm ảo I, tiếp theo là giai đoạn thực hiện chương trình. Trong từng vòng quét chương
trình thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OB1. Sau giai đoạn thực hiện
chương trình là giai đoạn chuyển các nội dung của bộ đệm ảo Q tới các cổng ra số. Vòng
quét được kết thúc bằng giai đoạn truyền thông nội bộ và kiểm tra lỗi.

Hình 3.1. Vòng quét chương trình


Tại thời điểm thực hiện lệnh vào ra, thông thường lệnh không làm việc trực tiếp
với lệnh vào ra mà chỉ thông qua bộ đểm ảo của cổng trong vùng nhớ tham số. Việc
truyền thông giữa bộ đệm ảo với ngoại vi trong các giai đoạn 1 và 3 do hệ điều hành CPU
quản lý.
Thời gian cần thiết để PLC thực hiện 1 vòng quét gọi là Scan time. Thời gian vòng
quét không cố định, tùy thuộc vào số lệnh trong chương trình được thực hiện và khối dữ
liệu truyền thông trong vòng quét đó. Như vậy, giữa việc đọc dữ liệu từ đối tượng để xử
lý, tính toán và việc gửi tín hiệu điều khiển đến đối tượng có một khoảng thời gian trễ
đúng bằng thời gian vòng quét. Nói cách khác, thời gian vòng quét quyết định tính thời
gian thực của chương trình điều khiển trong PLC.

99
Nếu sử dụng các khối chương trình đặc biệt có chế độ ngắt, ví dụ như khối OB35,
OB40, … chương trình của các khối đó sẽ được thực hiện trong vòng quét khi xuất hiện
tín hiệu báo ngắt tương ứng. Các khối chương trình này có thể thực hiện tại mọi điểm
trong vòng quét chứ không bị gò ép là phải ở trong giai đoạn thực hiện chương trình. Với
hình thức xử lý tín hiệu ngắt như vậy, thời gian vòng quét càng lớn khi càng có nhiều tín
hiệu ngắt xuất hiện trong vòng quét, do đó để nâng cao tính thời gian thực cho chương
trình điều khiển không nên viết chương trình xử lý ngắt quá dài hoặc quá lạm dụng việc
sử dụng chế độ ngắt trong chương trình điều khiển.
3.1.2. Cấu trúc chương trình
Chương trình trong S7-1200/1500 được lưu trong bộ nhớ của PLC ở vùng dành
riêng cho chương trình và có thể được lập trình với hai dạng cấu trúc khác nhau.
Lập trình tuyến tính: Toàn bộ chương trình nằm trong một khối của bộ nhớ. Loại
hình thức cấu trúc tuyến tính này phù hợp với những bài toán tự động nhỏ, không phức
tạp. Khối được chọn phải là khối OB1, là khối mà PLC luôn quét và thực hiện các lệnh
trong đó thường xuyên, từ lệnh đầu tiên đến lệnh cuối cùng và quay lại.
Lập trình có cấu trúc: Chương trình được chia thành những phần nhỏ và mỗi phần
thực thi những nhiệm vụ chuyên biệt riêng của nó, từng phần này nằm trong những khối
chương trình khác nhau. Loại hình thức cấu trúc này phù hợp với những bài toán điều
khiển nhiều nhiệm vụ và phức tạp. Có 4 loại khối cơ bản sau:
 OB (Organization Block): là khối tổ chức và quản lý chương trình điều khiển. Có
nhiều khối OB với những chức năng khác nhau, chúng được phân biệt với nhau
bằng một số nguyên đi sau nhóm ký tự OB. Ví dụ: OB1, OB35, OB40, …
 FC (Function): là chương trình với những chức năng riêng giống như chương
trình con và hàm chức năng. Một chương trình ứng dụng có thể có nhiều FC và
các FC này được phân biệt với nhau bằng một số nguyên sau nhóm ký tự FC. Ví
dụ: FC1, FC2, FC3, …
 FB (Function Block): là loại khối FC đặc biệt có khả năng trao đổi một lượng dữ
liệu lớn với các khối chương trình khác. Các dữ liệu này phải được tổ chức thành
khối dữ liệu riêng có tên gọi là Data block. Một chương trình ứng dụng có thể có
nhiều khối FB và các khối FB này được phân biệt với nhau bằng một số nguyên
sau nhóm ký tự FB. Ví dụ: FB1, FB2, FB3, …
 DB (Data Block): chứa các dữ liệu cần thiết để thực hiện chương trình. Các tham
số của khối do người dùng tự đặt. Một chương trình ứng dụng có thể có nhiều khối
DB và các khối DB này được phân biệt với nhau bằng một số nguyên sau nhóm ký
tự DB. Ví dụ: DB1, DB2, DB3, … Có hai loại của khối dữ liệu DB :
+ Global DB nơi mà tất cả các khối OB, FB và FC có thể đọc được dữ liệu lưu trữ,
hoặc có thể tự mình ghi dữ liệu vào DB.

100
+ Instance DB được gán cho một khối FB nhất định.
Chương trình trong các khối được liên kết với nhau bằng các lệnh gọi khối, chuyển
khối. Xem những phần chương trình trong các khối như là các chương trình con thì PLC
S7 - 1200/1500 cho phép gọi chương trình con lồng nhau, tức là chương trình con này gọi
một chương trình con khác. Số các lệnh gọi lồng nhau phụ thuộc vào từng loại CPU; cụ
thể với PLC S7-1200 có thể gọi 16 khối từ OB khởi động và thêm 6 khối từ các khối OB
ngắt, với PLC S7-1500 có thể gọi 24 khối chương trình.
Khi một chương trình khối FB được gọi, một Data Block (DB) được gán với
instance DB. Dữ liệu trong Instance DB sau đó truy cập vào các biến của khối FB. Các
khu vực bộ nhớ khác nhau đã được gán cho một FB nếu nó được gọi ra nhiều lần.
Các khối tổ chức OB có thể gọi các chương trình FB, FC. Các khối OB sẽ không
gọi được nhau, cũng như các gọi FB/FC cũng không thể gọi OB. Hình 4.2 minh họa cho
cấu trúc chương trình cho PLC S7-1200/1500, mối tương quan giữa các khối và chu trình
thực hiện chương trình.

Hình 3.2. Cấu trúc chương trình PLC S7-1200/1500


Chu trình thực hiện chương trình trong các khối tổ chức OB, minh họa như hình
4.3.

101
Startup routine
ON (Run)
OB 100 Warm
restart ...

Cyclic program
processing Interrupt-driven
Cycle program processing
OB 1
OB 10 ... 17
OB 56
Interruption
Interrupt ...

Interruption Error handling


Error
OB 80
OB 82
OB 121
OB 122
...
Operating system

Hình 3.3. Chu trình thực hiện chương trình

3.2. PHƯƠNG PHÁP LẬP TRÌNH PLC


Hiện nay có nhiều phương pháp lập trình PLC, trong giới hạn của tài liệu trình bày
2 phương pháp tiêu biểu là hàm tác động và Grafcet. Việc sử dụng các phương pháp dưới
đây thực chất là xây dựng các hàm logic cho các biến đầu ra của công nghệ, vì vậy dưới
đây sẽ chỉ trình bày phương pháp xây dựng các hàm logic của công nghệ, để từ đó sinh
viên sử dụng các hàm này để viết chương trình trên PLC.
3.2.1. Phương pháp hàm tác động
3.2.1.1. Khái niệm
Thông thường các biến cố trong sơ đồ mạch kép được xảy ra theo dòng thời gian
(tức là theo các khoảng thời gian nối tiếp nhau). Do vậy dãy các sự kiện có thể được mô
tả dưới dạng một ký hiệu như ví dụ hàm dưới đây:
Giai đoạn đóng X Giai đoạn cắt X

F = A (+X, +Y) + B – Y + C + Z – X – Z + A (+ X, + Y)…


1 2 3 4 5 6 7 8 9 1 2 3
Ý nghĩa của dãy biến cố sự kiện: Sự xuất hiện của tín hiệu A làm cho X, Y hoạt
động, B xuất hiện làm cho Y ngừng hoạt động…
Dấu (+) đứng trước một phần tử chỉ rằng phần tử đó tiếp nhận tín hiệu của phần tử
đứng ngay trước nó và bắt đầu hoạt động.

102
Dấu (-) đứng trước một phần tử chỉ rằng phần tử đó bị phần tử đứng ngay trước nó
làm ngừng hoạt động.
Việc phát tín hiệu điều khiển trong hệ thống được thực hiện do sự bắt đầu hoạt động
hay sự bắt đầu ngừng hoạt động của các phần tử. Phần tử đứng trước là nguyên nhân gây
nên sự bắt đầu hoạt động hay ngưng hoạt động của phần tử đứng ngay sau nó. Chẳng hạn
sự ngừng hoạt động của X (-X) làm ngừng hoạt động Z (-Z)…
Nếu có sự hoạt động đồng thời (hoạt động song song) giữa một số phần tử thì các
phần tử được đặt trong dấu ngoặc đơn. Ví dụ: F = A (+X, +Y)…có nghĩa là tín hiệu điều
khiển A gây nên sự hoạt động đồng thời của X, Y.
Trong hàm tác động F, các phần tử phát tín hiệu điều khiển từ ngoại vi vào hệ thống
(hay các phần tử đầu vào, các phần tử điều khiển) như các nút nhấn, các công tắc hành
trình, các bộ cảm biến thì trước chúng có thể không cần đặt dấu (+) nhưng lúc này chúng
ta vẫn hiểu là trước chúng có dấu (+). Dấu (+) này chỉ rằng nó bắt đầu hoạt động (được
đưa vào hệ thống trạng thái tích cực). Dấu (+) ở đây không có nghĩa là chúng nhận tín
hiệu của phần tử đứng ngay trước nó để bắt đầu hoạt động, mà có nghĩa rằng do tác động
của các tác nhân từ bên ngoài hệ thống làm cho nó hoạt động phát tín hiệu vào hệ thống
(chẳng hạn người ta thao tác nhấn nút, công tắc hành trình bị tác động, các sensor đặt
mức ngưỡng đã đặt…).
Khi trước chúng có dấu (-) thì hiểu là phần tử điều khiển này trước đó đã hoạt động
và lúc này bắt đầu ngừng hoạt động cũng do các tác nhân bên ngoài hệ thống.
Để làm rõ tính chất của các tín hiệu của các phần tử loại này, người ta phân biệt hai
trường hợp:
- Nếu tín hiệu chúng phát ra có dạng một xung thì lúc đó trong hàm tác động (F) sẽ
chỉ xuất hiện dấu (+) mà không thấy xuất hiện dấu (-), loại tín hiệu này chỉ xuất hiện một
thời gian ngắn trong quá trình làm việc của hệ (thiết bị tương ứng là nút nhấn…).
- Nếu tín hiệu phát ra là tín hiệu thế (mức liên tục) thì lúc đó trong hàm F chúng sẽ
xuất hiện với dấu (+) và sau đó là với dấu (-)…
Các tín hiệu vào thường ký hiệu bằng các chữ cái ở đầu bảng chữ cái La Tinh (A, B,
C…) và các phần tử chấp hành đầu ra của hệ thống thường ký hiệu bằng các chữ cái ở
cuối bảng chữ cái La Tinh như X, Y, Z, …Khi cần dùng đến các biến trung gian (biến
trong, biến nội bộ không đưa tín hiệu ra ngoài) thường dùng các chữ cái ở khoảng giữa
của bảng chữ cái La Tinh như K, L, …, P, Q, …
3.2.1.2. Các bước tổng hợp bằng phương pháp hàm tác động
Bước 1: Phân tích tín hiệu vào/ra.
- Xác định tín hiệu vào.
- Xác định tín hiệu ra.

103
Bước 2: Xác định chu kỳ hoạt động của từng phần tử chấp hành và chu kỳ
hoạt động của cả hệ.
Mỗi phần tử châp hành đều có chu kỳ hoạt động riêng bao gồm hai giai đoạn: giai
đoạn đóng (giai đoạn làm việc - ON) và giai đoạn cắt (giai đoạn nghỉ - OFF).
Ví dụ trong hàm tác động:
1 2 3 4 5 6 7 8 9 1 2 3
F = A (+X, +Y) + B – Y + C + Z – X – Z + A (+ X, + Y)…
Phần tử chấp hành X có một chu kỳ hoạt động gồm giai đoạn đóng từ thời điểm 2
đến thời điểm 7, giai đoạn cắt từ thời điểm 8 đến thời điểm 1 của chu kỳ sau. Chu kỳ của
hệ thống từ 1 đến 9.
Ngoài phần tử X thì phần tử Y và Z cũng là các phần tử chấp hành đầu ra, đều phải
xác định chu kỳ làm việc cho chúng.
Bước 3: Xác định hàm logic cho từng phần tử chấp hành.
Hàm điều khiển của phần tử X là f(X) bao gồm hàm đóng fđ(X) và hàm cắt fc(X)
theo công thức sau:
f ( X )  f d ( X ). f c ( X )
Cách xác định fđ(X) và fc(X) như sau:
Trong phương pháp này, hàm đóng hay hàm cắt của một phần tử nào đó chính là tín
hiệu mà nó nhận được từ phần tử đứng ngay trước nó trong dãy F để khởi động hoặc kết
thúc sự làm việc của phần tử đó. Sẽ có thể xảy ra các trường hợp sau:
+ Nếu trong hàm F có một đoạn sau:
F  ...  Y  X ...
thì: fd ( X )  y
+ Nếu có đoạn:
F  ...  Y  X ...
thì: fd ( X )  y
Tương tự cho hàm cắt:
+ Nếu có
F  ...  Y  X ...
thì: fc ( X )  y
+ Nếu có
F  ...  Y  X ...
thì: fc ( X )  y

104
Nếu mỗi phần tử chấp hành nào đó có nhiều chu kỳ hoạt động thì hàm tác động tổng
được xác định như sau: (trong đó n là số chu kỳ hoạt động)
f ( X )  f1 ( X )  f 2 ( X )  ....  f i ( X )  ...  f n ( X )
Bước 4: Kiểm tra tính đúng đắn của hàm điều khiển vừa xác định được, bao
gồm kiểm tra trong giai đoạn đóng và kiểm tra trong giai đoạn cắt.
 Kiểm tra hàm đóng sẽ xảy ra hai trường hợp:
+ fđ(X) không đổi trị trong giai đoạn đóng, fđ(X) thỏa mãn hàm F.
+ Nếu fđ(X) đổi trị trong giai đoạn đóng, sẽ không thỏa mãn hàm F vì không bảo
đảm tác động suốt trong cả giai đoạn đóng của hàm F. Lúc này phải hiệu chỉnh hàm fđ(X)
bằng cách đưa vào một biến trung gian p1, làm cho hàm đóng mới sau khi hiệu chỉnh là
không đổi trị trong giai đoạn đóng. Hàm đóng mới đã được hiệu chỉnh là:
f d' ( X )  f d  p1
Và hàm điều khiển mới sau hiệu chỉnh là:
fi ( X )  f di' ( X ). f ci ( X )
fi ( X )  ( f di ( X )  p1 ). f ci ( X )
Trong nhiều trường hợp có thể dùng trị duy trì của chính phần tử đầu ra để hiệu
chỉnh mà không cần đưa thêm biến phụ vào, tức là:
f di ( X )  f di ( X )  x
fi ( X )  ( f di ( X )  x). f ci ( X )
 Kiểm tra hàm cắt cũng xảy ra hai trường hợp.
+Nếu fc(X) không đổi trị trong giai đoạn đóng, tức là trong giai đoạn đóng hàm
fci(X) phải luôn bằng 0, lúc đó fc(X) thỏa mãn.
+Nếu fc(X) đổi trị trong giai đoạn đóng, tức có xuất hiện giá trị 1 chứ không phải
luôn bằng 0 sẽ làm cho f ( X )  f d ( X )  f c ( X )  0 sẽ làm ngừng hoạt động của X ngay
trong giai đoạn đóng. Lúc này phải dùng thêm biến trung gian p2 để hiệu chỉnh hàm cắt:
f c' ( X )  f c ( X ). p2
Và hàm điều khiển của phần tử X sẽ là:
f ( X )  f d ( X ). f c ( X ). p2
Nếu cả hàm đóng và hàm cắt đều phải hiệu chỉnh thì ta có:
f ( X )  [f d ( X )  p1 ]. f c ( X ). p2
Khi đã đưa các biến phụ p1 và p2 vào hiệu chỉnh thì sau đó phải xác định được hàm
logic của p1 và p2. Để làm được việc này cần phải vạch rõ ra rằng các biến phụ này cần
phải xuất hiện ở đâu và phải kết thúc ở đâu trong dãy hoạt động của hàm F. Trong bước

105
này để có được kết quả đơn giản luôn luôn phải xét đến khả năng tự duy trì và khả năng
kết hợp hai biến trung gian p1 và p2 làm một biến trung gian p nếu p thỏa mãn được miền
thời gian của p1 và p2.
 Kiểm tra tính đúng đắn của các hàm thu được trong mỗi chu kỳ hoạt động.
Nếu thấy hàm nào có giá trị bằng 1 khi chưa đưa tín hiệu vào (tự khởi động) và trái
với công nghệ thì khi đó phải đưa thêm biến phụ. Việc kiểm tra phải tiến hành cho mọi
hàm logic của các phần tử đầu ra, cũng như của biến trung gian.
Bước 5: Viết chương trình điều khiển trên PLC
Bước 6: Phân tích chương trình điều khiển và hiệu chỉnh nếu có.
3.2.1.3. Ví dụ áp dụng
a) Ví dụ áp dụng 1: Hãy thiết kế hệ thống điều khiển cho công nghệ như hình 3.4 bằng
phương pháp hàm tác động.
a0 a1
P

T
Hình 3.4. sơ đồ công nghệ ví dụ 1
 Các bước tiến hành.
Bước 1: Phân tích tín hiệu vào/ra:
+ Có 2 tín hiệu vào:
 a0: Là tín hiệu báo trạng thái chuyển động sang trái.
 a1: Là tín hiệu báo trạng thái chuyển động sang phải .
+Các tín hiệu ra: Có 2 tín hiệu ra
 P: Trạng thái sang phải.
 T: Trạng thái sang trái.
Bước 2: Xác định chu kỳ hoạt động
Ta có hàm tác động của hệ thống như sau:
1 2 3 4 5 6
F = (+ao – T) + P + (a1 – P) + T + …
Chu kỳ hoạt động của hệ là từ 1 → 6, ta thấy trong một chu kỳ của hệ thống:
- Phần tử P: giai đoạn đóng 3 → 4, giai đoạn cắt 5→ 2 sau.
- Phần tử T: giai đoạn đóng 6→1 sau, giai đoạn cắt 2→ 5.
Bước 3: Xác định hàm điều khiển của các phần tử.
a) Phần tử P:

106
fñ (P )  a0T
fc ( P )  a1
f ( P )  a0 T .a1
b) Phần tử T:
fñ (T )  a1P
fc (T )  a0
f (T )  a1 P.a0
Bước 4: Kiểm tra tính đúng đắn của hàm điều khiển vừa xác định được.
a) Phần tử P
- Kiểm tra hàm đóng fđ(P): hàm đóng f(P) đổi trị trong giai đoạn đóng, do tín hiệu
vào a0 là công tắc hành trình (dạng tín hiệu xung), nên ngay sau khi thiết bị rời khỏi vị trí
a0 thì a0=0, nó làm cho hàm đóng bằng 0. Vì thế ta phải sử dụng biến trung gian, trong
trường hợp này ta hiệu chỉnh bằng tự duy trì của P. Nên hàm đóng hiệu chỉnh sẽ là:
fñ ' (P )  (a0  p)T
- Kiểm tra hàm cắt fc(P): Hàm cắt fc ( P ) không đổi trị trong giai đoạn đóng của
chúng. Nên hàm cắt thỏa mãn yêu cầu.
Vậy f ' (P )  (a0  p)T .a1
b) Phần tử T
- Kiểm tra hàm đóng fđ(T): hàm đóng f(T) đổi trị trong giai đoạn đóng, do a1 cũng là
dạng tín hiệu xung, nên ngay sau khi thiết bị rời khỏi vị trí a1 thì a1=0, nó làm cho hàm
đóng bằng 0. Vì thế ta phải sử dụng biến trung gian, trong trường hợp này ta cũng hiệu
chỉnh bằng tự duy trì của T. Nên hàm đóng hiệu chỉnh của T sẽ là:
fñ ' (T )  (a1  t )P
- Kiểm tra hàm cắt fc(T): Hàm cắt fc (T ) không đổi trị trong giai đoạn đóng của
chúng. Nên hàm cắt thỏa mãn yêu cầu.
Vậy f ' (T )  (a1  t )P.a0

Cuối cùng ta có hàm F  f ' (P )  f ' (T )  (a0  p)T .a1  (a1  t )P.a0
b) Ví dụ áp dụng 2: Tổng hợp công nghệ hình 3.9 theo phương pháp hàm tác động.

107
Hình 3.5. sơ đồ công nghệ ví dụ 2

 Các bước tiến hành.


Bước 1: Phân tích tín hiệu vào/ra.
Có 4 tín hiệu vào:
a0: Là công tắc hành trình báo trạng thái chuyển động sang phải P.
b0: Là công tắc hành trình báo trạng thái chuyển động đi xuống X.
a1: Là công tắc hành trình báo trạng thái chuyển động sang trái T.
b1: Là công tắc hành trình báo trạng thái chuyển động đi lên L.
Các tín hiệu ra: Có 4 tín hiệu ra.
P: Cơ cấu đi sang phải. L: Cơ cấu đi lên
X: Cơ cấu đi xuống T: Cơ cấu đi sang trái.
Bước 2: Xác định chu kỳ hoạt động của các phần tử
Ta có hàm tác động:
1 2 3 4 5 6 7 8 9 10 11 12
F = (+a0 – T) + P + (a1 – P) +X + (b1 – X) + L + (b0 – L) + T…
Chu kỳ hoạt động của hệ là từ 1 → 12, ta thấy trong một chu kỳ của hệ thống:
- Phần tử P có một chu kỳ làm việc: giai đoạn đóng 3 → 4, giai đoạn cắt 5→2 sau.
- Phần tử X có một chu kỳ làm việc: giai đoạn đóng 6→ 7, giai đoạn cắt 8→ 5 sau.
- Phần tử L có một chu kỳ làm việc: giai đoạn đóng 9 → 10, giai đoạn cắt 11 →8
sau.
- Phần tử T có một chu kỳ làm việc: giai đoạn đóng 12→1 sau, giai đoạn cắt 2→ 11
sau.
Bước 3: Xác định hàm điều khiển của các phần tử. Sau khi xác định được hàm
điều khiển ta thực hiện bước 4 là kiểm tra tính đúng đắn của hàm điều khiển vừa xác
định được.
Phần tử P:

108
fñ (P )  a0T
fc ( P )  a1
f ( P )  a0 T .a1
Kiểm tra hàm fđ(P): a0 là tín hiệu xung nên fđ(P) bị mất ngay sau khi a0 mất. Để hiệu
chỉnh hàm trong trường hợp này ta dùng tự duy trì của đầu ra P:
fñ' ( P )  (a0  p)T
Kiểm tra hàm f c ( P)  a1 : Hàm cắt không thay đổi giá trị trong giai đoạn đóng của
phần tử nên hàm cắt thỏa mãn yêu cầu.
f ' ( P)  f d' (T ). f c (T )  (a0  p)T .a1
Phần tử T:
fñ (T )  b0 L
fc (T )  a0
f (T )  b0 L .a0
Kiểm tra fđ(T): b0 là tín hiệu xung nên fđ(T) bị mất ngay sau khi b0 mất. Để hiệu
chỉnh hàm trong trường hợp này ta dùng tự duy trì của đầu ra T:
fñ ' (T )  (b0  t )L
Kiểm trả hàm cắt fc (T): Hàm cắt thỏa mãn.
Ta nhận thấy đi sang phải, sang trái là các cặp đối ngược nhau. Tức là nếu có P thì
không có T, nếu có T thì không có P. Chu trình sang phải và sang trái là điều khiển động
cơ quay thuận hoặc ngược. Vì vậy để bảo vệ liên động điện cho động cơ, ta hiệu chỉnh
hàm cắt của T như sau: fc (T )  a0 P .

Hàm tác động của T trở thành: f ( X )  (a1  x )a0 P


Phần tử X:
fđ(X) = a1 P
fc ( X )  b1
f ( X )  a1 Pb1
Kiểm tra giai đoạn đóng: a1 là tín hiệu xung nên fđ(X) bị mất ngay sau khi a1 mất.
Để hiệu chỉnh hàm trong trường hợp này ta dùng tự duy trì của đầu ra X:
fñ ' ( X )  (a1  x )P
Kiểm tra giai đoạn cắt: Tương tự như hàm T, ta hiệu chỉnh hàm cắt của X như sau:
fc ( X )  b1L .

Hàm tác động của X trở thành: f ( X )  (a1  x )Pb1 L

109
Phần tử L:
fđ (L) = b1 X
fc (L) = b0
f (L) = b1 X b0
Kiểm tra giai đoạn đóng: b1 là tín hiệu xung nên fđ(L) bị mất ngay sau khi b1 mất.
Để hiệu chỉnh hàm trong trường hợp này ta dùng tự duy trì của đầu ra L. Khi đó hàm
đóng của L có dạng:
fñ ' (L )  (b1  l) X
Kiểm tra hàm cắt: Hàm cắt không thay đổi giá trị trong suốt quá trình làm việc của
L nên hàm cắt hoàn toàn thỏa mãn.
Cuối cùng ta có hàm điều khiển của L.
f (L )  (b1  l) X b0
Các hàm điều khiển thu được là:
f ' ( P)  f d' (T ). f c (T )  (a0  p )T .a1
f ' (T )  (b0  t ) La0 P
f ' ( X )  (a1  x) Pb1 L
f ' ( L)  (b1  l ) X b0
Kiểm tra vấn đề tự khởi động của các hàm: Nhận thấy khi kết thúc chu trình P thì
điều kiện làm việc của T hoàn toàn thoả mãn, do đó để thoả mãn chu trình công nghệ ta
phải đưa thêm biến phụ q1. Khi đó fhc' (T )  (b0  t )La0 q1
Biến phụ q1 được điều khiển sao cho nó tác động khi có tín hiệu a0 và thôi tác
động khi có tín hiệu b1. Hàm tác động của biến trung gian q1 được xác định như sau: (a0
là biến xung nên ta dùng tự duy trì của đầu ra để duy trì hàm đóng)
f (Q1 )  (a0  q1 )b1
Ngoài ra, khi chu trình đi lên L kết thúc thì hàm điều khiển X hoàn toàn thoả mãn
điều kiện làm việc. Do đó để thoả mãn khi chu trình L kết thúc thì chu trình P làm việc
còn X không làm việc thì ta phải đưa thêm vào hàm điều khiển X biến phụ q2. Khi đó:
fhc' ( X )  (a1  x )Pb1 q2
Xác định hàm điều khiển cho biến phụ q2: Biến phụ q2 tác động khi b1 tác động và
mất tác động khi a0 tác động. Hàm tác động của biến trung gian q1 được xác định như
sau: (b1 là biến xung nên ta dùng tự duy trì của đầu ra để duy trì hàm đóng)
f (Q2 )  (b1  q2 )a0

110
Kết quả cuối cùng ta thu được như sau:
f ' ( P)  f d' (T ). f c (T )  (a0  p )T .a1
f hc' (T )  (b0  t ) La0 Pq1
f hc' ( X )  (a1  x) Pb1 Lq2
f ( L)  (b1  l ) X b0
f (Q1 )  (a0  q1 )b1
f (Q2 )  (b1  q2 )a0
Khi phân tích mạch điều khiển, ta thấy có thể bỏ các tiếp điểm thường đóng L của
hàm T, tiếp điểm thường đóng P của hàm X mà không ảnh hưởng đến nguyên lý hoạt
động của công nghệ.

c) Vi dụ áp dụng 3: Hãy thiết kế hệ thống điều khiển cho công nghệ hình 4.6 bằng
phương pháp hàm tác động.

Hình 3.6. Sơ đồ công nghệ ví dụ áp dụng 3


Quá các ví dụ áp dụng trên, ta có thể rút ra các quy luật sau khi tổng hợp mạch trình
tự bằng phương pháp hàm tác động:
 Hàm tác động: Bao gồm hàm đóng và hàm cắt.
+ Hàm đóng được xác định là tín hiệu để hàm hoạt động, nếu tín hiệu dạng xung thì
bổ xung thêm phần tử duy trì.
+ Hàm cắt bao gồm: tín hiệu ngưng hoạt động của hàm và tín hiệu hàm đối nghịch
nếu có.
 Xác định biến trung gian
Từ sơ đồ công nghệ và các hàm tác động tìm được, xem xét khả năng biến vào
(hoặc các tổ hợp biến vào) xuất hiện trong các hàm đóng mấy lần. Nếu xuất hiện n lần thì
cần (n-1) biến trung gian.
Tìm hàm trung gian, ta phải xem xét nó xuất hiện khi nào và mất khi nào để phân
biệt được số lần xuất hiện của các biến vào.
Dưới đây sẽ giải quyết bài toán theo hướng suy luận trên.
Bước 1: Phân tích tín hiệu vào/ra

111
Các tín hiệu vào: A, B, C
Các tín hiệu ra: X, L, P, T
Bước 2: Xác định hàm tác động của từng phần tử.
fñ ( X )  ( A  x ) 
  f ( X )  fñ ( X ). fc ( X )  ( A  x ) Bl
fc ( X )  B  l 
fñ ( L )  ( B  l ) 
  f ( L )  fñ ( L ). fc ( L )  ( B  l) Ax
fc ( L )  A  x 
f ñ ( P )  ( A  p) 
  f ( P )  fñ ( P ). fc ( P )  ( A  p)Ct
fc ( P )  C  t 
fñ (T )  (C  t ) 
  f (T )  fñ (T ). fc (T )  (C  t ) A p
fc (T )  A  p 
Bước 3: Xác định biến trung gian
Ta thấy tại vị trí A, có khả năng xảy ra hai trường hợp:
- Gặp A lần thứ nhất: Có tín hiệu ra X,
- Gặp A lần thứ hai: Có tín hiệu ra P.
Như vậy biến vào A xuất hiện hai lần trong hàm đóng của X và P. Ta cần một biến
trung gian để phân biệt các trạng thái này. Đặt biến trung gian là y.
Giả sử khi gặp A lần thứ nhất thì y chưa xuất hiện, khi gặp A lần thứ hai thì y đã
xuất hiện, có nghĩa là y xuất hiện khi bắt đầu gặp B (sau khi gặp A lần thứ nhất) và tín
hiệu y mất khi gặp C.
Vậy hàm tác động của biến trung gian y được xác định như sau:
fñ (Y )  B  y 
  f (Y )  ( B  y )C
fc (Y )  C 
Hàm tác động của các phần tử khi có biến phụ y:
f ( X )  ( A  x ) By l
f ( L )  ( B  l) Ax
f ( P )  ( A  p)Cyt
f (T )  (C  t ) A p
f (Y )  ( B  y )C
3.2.2. Phương pháp Grafcet
3.2.2.1. Khái niệm và các thành phần của Grafcet
Grafcet là từ viết tắt của tiếng pháp “Graphe fonctionnel de commande estape
transition”, là một đồ hình chức năng cho phép mô tả các trạng thái làm việc của hệ
112
thống và biểu diễn quá trình điều khiển với các trạng thái chuyển biến từ trạng thái này
sang trạng thái khác. Grafcet cho một quá trình luôn luôn là một đồ hình khép kín trạng
thái đầu đến trạng thái cuối và từ trạng thái cuối đến trạng thái đầu.
Mạch trình tự có đặc tính hoạt động theo chu kỳ, người ta có thể cho nó hoạt động
một chu kỳ hoặc cho nó hoạt động tự động liên tiếp nhiều chu kỳ. Trong mỗi chu kỳ hệ
thống trải qua nhiều giai đoạn, ở các giai đoạn khác nhau thì trạng thái của hệ sẽ khác
nhau. Trong một trạng thái, hệ thống có thể thực hiện một hay vài hành động đầu ra, cũng
có thể không có hành động đầu ra nào mà chỉ có sự thay đổi trạng thái nội bộ (trạng thái
trong).
Hệ thống chỉ có thể chuyển từ giai đoạn này sang một giai đoạn khác tiếp sau khi có
một sự kiện nào đó xảy ra, sự kiện này được gọi là biến cố. Biến cố là sự kiện xảy ra làm
cho hệ thống vận động từ giai đoạn trên xuống giai đoạn dưới.

(1)

Bàn máy
1.
1 0 chạy phải
(3)
(2)
a) b) c)
(4)

Hình 3.7. Các thành phần của Grafcet


Vậy chúng ta có thể mô tả quá trình vận động của hệ bằng một biểu đồ tập hợp bởi
các thành phần, minh họa như hình 4.7a. Trong đó: (1) giai đoạn, (2) biến cố, (3) hành
động của giai đoạn, (4) đường định hướng.
a) Các giai đoạn
Mỗi giai đoạn được biểu diễn trên biểu đồ bằng một ô vuông hay chữ nhật trong đó
có ghi số của giai đoạn. Riêng giai đoạn ban đầu (giai đoạn xuất phát) phải trình bày bằng
ô vuông nét đúp và ghi số 0 (hoặc số 1) như trên hình 4.7b.
Một giai đoạn có thể là tích cực hoặc là không tích cực. Giai đoạn tích cực ở một
thời điểm nào đó, chính là lúc nhịp đó đang được thực hiện. Giai đoạn không tích cực là
các giai đoạn đã được thực hiện, hay chưa được thực hiện ở thời điểm đang xét.
Đối với mỗi giai đoạn, các hành động cần thực hiện là đặc trưng cho tình trạng của
giai đoạn đó. Các hành động này chỉ được thực hiện khi giai đoạn của chúng là tích cực.
Để ký hiệu một giai đoạn đang là tích cực ta dùng dấu chấm đặt vào trong giai đoạn đó.
Như hình hình 4.7c, giai đoạn 15 đang tích cực và hành động đầu ra gắn với trạng thái
này là bàn máy chạy thuận đang được thực hiện.
b) Các biến cố

113
Biến cố là sự kiện ngăn cách hai giai đoạn kế tiếp nhau theo luật xen kẽ: giai đoạn
trên – biến cố - giai đoạn dưới …
Khi hệ thống có giai đoạn trên là tích cực mà biến cố xảy ra (hay xuất hiện) thì hệ
thống sẽ chuyển đến giai đoạn dưới là tích cực, và điều này làm cho giai đoạn trên mất
tích cực (trở về không tích cực). Biến cố được thể hiện bằng một nét ngang như là một
rào ngăn giữa hai giai đoạn trên và dưới.
Các điều kiện logic gắn với các biến cố có thể viết ở dạng một biểu thức logic tổ
hợp của các thông tin ngoại vi như: của người thao tác, của các công tắc hành trình, các
đầu dò, cũng như các thông tin nội bộ như đạt ngưỡng của các bộ trễ, bộ đếm, …

T1 = 5s
5 P 8
T2 = 10s

a t1/8/5s

6 T 9 P

Y t2/8/10s

7 L 10

a) b)
Hình 3.8. Các loại biến cố
Các điều kiện logic cũng có thể là sự lật trạng thái (0 lên 1 hay 1 xuống 0) của các
biến điều khiển hay của hàm ra như hình 4.8a. Để vận động từ 5 xuống 6 cần xuất hiện
sườn lên của a, để chuyển từ 6 xuống 7 cần xuất hiện sườn xuống của Y.
Khi thời gian là một điều kiện logic thì phải chỉ ra đầy đủ sau ký hiệu t gốc thời
gian quy định và khoảng thời gian kéo dài của nó tính từ gốc đã chỉ.
Khi một giai đoạn bắt đầu tích cực được lấy làm mốc thời gian của một thời gian
trễ, nó có thể được dùng cách thể hiện như là một hành động gắn với giai đoạn này. Ví dụ
xem hình 4.8b, với cách ghi t/8/5s chỉ rằng thời gian trễ là 5s tính từ lúc giai đoạn 8 bắt
đầu tích cực, tương tự t/8/10s chỉ rằng thời gian trễ là 10s kể từ lúc giai đoạn 8 bắt đầu
tích cực.
c) Các đường định hướng
Các đường định hướng hướng chỉ ra các con đường vận động của Grafcet, nối các
giai đoạn với biến cố rồi biến cố với các giai đoạn theo quy tắc xen kẽ. Nó có thể nằm
114
ngang hoặc thẳng đứng. Chiều của các liên lạc này là từ trên xuống dưới, đi vào giai đoạn
cũng như đi ra khỏi giai đoạn đều phải vẽ vuông góc với giai đoạn, và không cần ghi dấu
mũi tên. Các dấu mũi tên chỉ sử dụng khi mà biến cố đi vào trạng thái ban đầu, và khi
Grafcet có phân nhánh hay quay vòng.
d) Các hành động
Các hành động đầu ra gắn với các giai đoạn là những hành động phải được thực
hiện khi giai đoạn nó gắn vào là tích cực. Các hành động này có thể rất đa dạng. Chẳng
hạn như được chỉ ra trên hình 4.9a.
Có các kiểu hành động gắn liền với các giai đoạn như dưới đây.
Hành động có điều kiện: Việc thực hiện một hành động đầu ra gắn với một giai
đoạn đôi khi phải chịu nhưng điều kiện logic của sự thay đổi tín hiệu vào hoặc của trạng
thái tích cực hay không tích cực của một giai đoạn khác. Trên hình 4.9b hành động bật
sáng đèn L1 là hành động có điều kiện.
Hành động mức: là hành động được thực hiện suốt cả thời gian mà giai đoạn nó gắn
vào ở trạng thái tích cực.
Hành động xung: là hành động chỉ được thực hiện ngay khi giai đoạn mà nó được
gắn vào trở lên tích cực và chỉ được tiếp tục trong một khoảng thời gian nào đó.

- Khởi động động cơ M


- Mở van V
11 - Bật sáng đèn báo 12 Nếu ab: L1 sáng
- Kích bộ trễ T1

a) b)
Hình 3.9. Các loại hành động có thể xảy ra của các giai đoạn
3.2.2.2. Các kiểu kết cấu của Grafcet
Phần dưới đây sẽ đưa ra các kiểu kết cấu cũng như các thuật ngữ tên gọi các kiểu
kết cấu đó.
a) Phân phối đồng thời (hình 3.10a)
Giai đoạn 2 và giai đoạn 3 cùng nối đến biến cố a nên các liên lạc từ 2 với 3 được
tập hợp lại thành một nhóm bởi hai nét song song.
Quy tắc chuyển tiếp là: Khi giai đoạn 1 tích cực, biến cố a hiệu lực, hệ sẽ chuyển
tiếp đồng thời đến cả hai giai đoạn 2 và 3. Sau khi cả giai đoạn 2 và 3 trở thành tích cực
thì giai đoạn 1 trở thành không tích cực.

115
1. 4. 5.

2 3 6

a) Phân phối đồng thời b) Hội tụ đồng thời

7. 10 11

e f

c d

8 9 12

c. Rẽ nhánh (Phân phối theo cách HOẶC) d. Hội tụ theo cách HOẶC
Hình 3.10. Các trường hợp phân phối và hội tụ
b. Hội tụ đồng thời (hình 3.10b)
Phải đồng thời có: giai đoạn 4 và giai đoạn 5 tích cực và biến có b hiệu lực thì hệ sẽ
chuyển sang giai đoạn 6. Sau khi giai đoạn 6 tích cực thì giai đoạn 4 và 5 trở thành không
tích cực
c. Rẽ nhánh (hình 3.10c)
Khi giai đoạn 7 đang tích cực, thì xảy ra các trường hợp sau.
+ Nếu biến cố c có hiệu lực và biến cố d không hiệu lực (hoặc không xuất hiện kịp)
thì hệ chuyển sang giai đoạn 8.
+ Nếu biến cố d có hiệu lực và biến cố c không hiệu lực (hoặc không xuất hiện kịp)
thì hệ chuyển sang giai đoạn 9.

116
Vậy ở đây hệ sẽ chọn một trong hai nhánh để chuyển tiếp giai đoạn. Còn nếu biến
cố c và d đồng nhất hiệu lực (cùng xuất hiện) thì trở về giống kiểu phân phối đồng thời,
tức giai đoạn 8 và giai đoạn 9 đều tích cực.
d. Hội tụ theo cách HOẶC (hình 3.10d)
Khi giai đoạn 10 là tích cực và biến cố e hiệu lực thì hệ chuyển sang giai đoạn 12,
giai đoạn 10 trở về không tích cực.
Khi giai đoạn 11 là tích cực và biến cố f hiệu lực thì hệ chuyển sang giai đoạn 12,
giai đoạn 11 trở về không tích cực.
e) Quay vòng các giai đoạn (hình 3.11a)
Khi giai đoạn 15 tích cực thì xảy ra các trường hợp sau đây.
+ Nếu biến cố j có hiệu lực thì hệ chuyển đến giai đoạn 16, khi giai đoạn trở thành
tích cực thì giai đoạn 15 trở về không tích cực.
+ Nếu biến cố k có hiệu lực thì hệ quay vòng về giai đoạn 13, khi giai đoạn 13 tích
cực trở lại thì giai đoạn 15 trở về không tích cực.
Chú ý là một vòng kín cần phải có ít nhất là ba giai đoạn, trong trường hợp logic nối
cứng (mạch rơle).
f) Nhảy qua các giai đoạn (hình 3.11b)
Khi giai đoạn 17 tích cực, xảy ra các trường hợp sau đây.
+ Nếu biến có p có hiệu lực thì hệ chuyển đến giai đoạn 18, khi giai đoạn 18 trở
thành tích cực thì giai đoạn 17 trở về không tích cực.
+ Nếu biến cố q có hiệu lực thì hệ chuyển đến giai đoạn 20, nhảy qua các giai đoạn
18, 19 và 20. Lúc này giai đoạn 20 trở thành tích cực và khi đó thì giai đoạn 17 trở về
không tích cực.

117
17.
13 q

g p

14 18

h w

15. 19
k
a’
j

16 20

`
a) Quay vòng b) Rẽ nhánh
Hình 3.11. Các trường hợp quay vòng và rẽ nhánh
3.2.2.3. Lập các phương trình điều khiển logic từ Grafcet
a) Phương trình tổng quát của trạng thái tích cực của một giai đoạn
Một giai đoạn bậc (n) có hai trạng thái: Tích cực và không tích cực, nó có thể được
viết dưới dạng lần lượt là M ( n ) và M ( n ) .

Các điều kiện để tích cực một giai đoạn như sau:
- Giai đoạn bậc (n-1) phải đang tích cực, nghĩa là (n-1)
M ( n 1)  1 .
- Điều kiện logic của biến cố giữa hai giai đoạn
(n-1) và (n) phải đang đúng, nghĩa là t( n 1)( n )  1 (n)
(biểu thức nghĩa là biến cố giai đoạn giữa (n-1) và giai
đoạn (n) bằng 1).
Điều kiện để làm thành không tích cực một giai (n+1)
đoạn là giai đoạn ở bậc (n+1) tích cực: M ( n 1)  1

Ngoài ra sau khi tích cực, giai đoạn ghi nhớ trạng thái của nó (tự duy trì). Nếu gọi
m(n) là trạng thái nhớ của nó, ta có: m( n )  1 .

118
Phương trình tổng quát của trạng thái tích cực của một giai đoạn được viết:
M(n) = [Tích cực HOẶC với nhớ trạng thái ] VÀ – KHÔNG với không tích cực:
M ( n )   M ( n 1) .t( n 1)( n )  m( n )  .M ( n 1)

b) Các ví dụ
- Giai đoạn trước khi bắt đầu hai giai đoạn đồng thời .
Đây chính là giai đoạn 2 trong hình 4.12a.
M 2   M 1.a  m2 .M 3 M 4   M 1.a  m2 .( M 3  M 4 )
Trong đó  M 1.a  m2  là điều kiện để không tích cực cho giai đoạn 2 khi xét đến kiểu
phân kỳ theo VÀ.
- Giai đoạn trước khi chọn có điều kiện giữa nhiều giai đoạn
Đó chính là giai đoạn 2 trong hình 3.18b
M 2   M 1.a  m2 .M 3  M 4  ( M 1.a  m2 ).(M 3 .M 4 )
Trong đó ( M 3 .M 4 ) là điều kiện để không tích cực cho giai đoạn 2 khi xét đến kiểu phân
kỳ theo HOẶC

1 1

2 2

b
c d

3 4 3 4

a) Phân phối theo VÀ b) Phân phối theo HOẶC


Hình 3.12. Phương trình logic cho giai đoạn các trong trường hợp phân phối
- Các giai đoạn cuối cùng của hai dãy đồng thời hoặc các lựa chọn sau một cấu trúc
rẽ nhánh.

119
7 9 7 9

b a b
a

8 10 8 10

d e

c
11
11
f
d
12
12

a) Hội tụ kiểu VÀ b) Hội tụ kiểu HOẶC


Hình 3.13. Phương trình logic cho các giai đoạn trong trường hợp hội tụ
Đây chính là trường hợp các giai đoạn 8 và giai đoạn 10 trong hình 4.13a,b.
M 8   M 7 .a  m8 .M 11
M 10   M 9 .b  m9  .M 11
Trong đó M 11 là điều kiện chung cho cả hai giai đoạn 8 và 10 để chúng không tích
cực.
- Giai đoạn bắt đầu của một dãy sau một hội tụ kiểu VÀ
Đây chính là trường hợp của giai đoạn 11 trong hình 4.13a:
M 11   M 8 .M 10 .c  m11 .M 12
M 8 .M 10 . f : là điều kiện cho giai đoạn 11 tích cực khi tính đến kiểu hội tụ theo VÀ

- Giai đoạn bắt đầu của một dãy sau một hội tụ kiểu HOẶC
Đây là trường hợp của giai đoạn 11 trong hình 4.13b:
M 11   M 8 d  M 10 .e  m11 .M 12
 M 8d  M 10 .e  m11  là điều kiện để cho giai đoạn 11 tích cực khi xét đến kiểu hội tụ
HOẶC.
- Quay vòng kín (xem hình 4.14a)

120
18

13 19
q
g
p

14 20

15 21

i m

16
k
22

j n

17 23

a) Quay vòng kín b) Nhảy qua các giai đoạn


Hình 3.14. Phương trình logic cho các giai đoạn trong trường hợp quay vòng và
nhảy qua các giai đoạn
Đó là vòng 14-15-16 (hình 4.14a), giai đoạn đầu tiên của vòng là giai đoạn 14:
M 14   M 13 g  M 16 .k  m14 .M 15
M 13 .g : là điều kiện để giai đoạn 14 tích cực khi đến từ giai đoạn 13.
M 16 .k : là điều kiện để giai đoạn 14 tích cực khi đến từ giai đoạn 16 để vòng lại dãy.

Giai đoạn cuối cùng của vòng là giai đoạn 16:


M 16   M 15 .i  m16 .M 17  M 14   M 15 .i  m16 .M 17 .M 14
- Nhảy qua các giai đoạn (xem hình 4.14b)
Đó là việc nhảy qua các giai đoạn 20 và 21.
Giai đoạn trước khi nhảy là giai đoạn 19:
M 19   M 18 .l  m19 .M 20  M 22   M 18 .l  m19 .M 20 .M 22

121
Giai đoạn tiếp sau nhảy là giai đoạn 22:
M 22   M 21.m  M 19 .q  m22 .M 23
M 21.m : là điều kiện để tích cực trong trường hợp khi không có nhảy.
M 19 .q : là điều kiện để tích cực trong trường hợp có nhảy.

3.2.2.4. Các bước thực hiện khi tổng hợp mạch trình tự bằng phương pháp Grafcet
Bước 1: Phân tích tín hiệu vào/ra
Bước 2: Lập Grafcet 1 (G1) là một đồ hình trạng thái mà trên các trang thái người ta
ghi bằng chữ chi tiết các hàng vi hoạt động công nghệ theo đúng yêu cầu.
Bước 3: Lập Grafcet 2 (G2): Chọn thiết bị trong đó các thiết bị điều khiển là các tín
hiệu vào, các thiết bị chấp hành là các tín hiệu ra. Sau đó thay việc mô tả công nghệ bằng
chữ viết bằng ký hiệu các thiết bị vào và ra.
Bước 4: Thiết lập các phương trình logic của các phần tử.
3.2.2.5. Ví dụ áp dụng
a) Ví dụ áp dụng 1:
Hãy thiết kế hệ thống điều khiển cho công nghệ theo như hình 4.15 bằng phương
pháp Grafcet.

Hình 3.15. Sơ đồ công nghệ ví dụ 1 phương pháp Grafcet


 Các bước tiến hành
Bước 1: Phân tích tín hiệu vào/ra. (bảng 4.1)
Bảng 4.1. Tín hiệu vào ra cho công nghệ hình 3.21

Tín hiệu vào Tín hiệu ra


m: Nút nhấn khởi động. P: Trạng thái sang phải.
a0: Là tín hiệu báo trạng thái chuyển động sang trái. T: Trạng thái sang trái.
a1: Là tín hiệu báo trạng thái chuyển động sang phải.
Bước 2: Thiết lập Grafcet 1 như hình 3.16.

122
Xác lập trạng thái ban đầu

0 Trạng thái ban đầu

Đã ở trạng thái ban đầu


Và tín hiệu khởi động

1 Sang phải

Hết hành trình sang phải

2 Sang trái

Hết hành trình sang trái

Hình 3.16. Sơ đồ Grafcet 1 cho công nghệ hình 3.15


Bước 3: Thiết lập Grafcet 2
Tín hiệu xác lập trạng thái ban đầu là điều kiện để bắt đầu trạng thái 0, tín hiệu này
có thể là một tín hiệu của công đoạn trước trong công nghệ nhiều công đoạn, hoặc là một
tín hiệu kiểm tra lỗi của công nghệ, và tín hiệu này ký hiệu là g.
Như đã phân tích ở các bài tập trước, các tín hiệu báo kết thúc các trạng thái sang
phải - sang trái là các công tắc hành trình. Cơ cấu chấp hành để sang phải - sang trái là
quá trình quay thuận – ngược của động cơ.
Thiết lập Grafcet 2 như hình 4.17
g

0 Nếu a0=0: T

a0,m

1 P

a1

2 T

a0

Hình 3.17. Grafcet 2 cho công nghệ hình 3.15


Bước 4: Thiết lập các phương trình logic của các phần tử.

123
 M 0  ( g  a0 .M 2  m0 ) M 1

 
 P  M1
 M 1  (m.a0 .M 0  m1 ) M 2  
 T  M 0 a0  M 2

 M
 2  ( a1 .M 1  m2 ) M 0

b. Ví dụ áp dụng 2
Cho công nghệ điều khiển như hình 4.18, thiết kế mạch điều khiển theo phương
pháp Grafcet.

Hình 4.18. Sơ đồ công nghệ ví dụ 2 phương pháp Grafcet


Công nghệ trên nếu sử dụng cơ cấu chấp hành là các động cơ thì nguyên lý mạch
lực tương tự như các mạch đã thiết kế. Với ví dụ này, giả sử cơ cấu chấp hành của công
nghệ là các xilanh khí nén, vậy nên mạch lực và mạch điều khiển sẽ được xây dựng trên
các thiết bị điện khí nén.

 Các bước tiến hành.


Bước 1: Phân tích tín hiệu vào/ra (bảng 3.2)
Bảng 3.2. Tín hiệu vào ra cho công nghệ hình 3.18

Tín hiệu vào Tín hiệu ra


m: Tín hiệu khởi động. A+: Trạng thái xuống.
a0: là tín hiệu báo trạng thái chuyển động đi xuống. A- : Trạng thái lên
b0: là tín hiệu báo trạng thái chuyển động sang phải. B+: Trạng thái sang trái
a1: là tín hiệu báo trạng thái chuyển động đi lên. B-: Trạng thái sang phải
b1: là tín hiệu báo trạng thái chuyển động sang trái.
Bước 2: Thiết lập Grafcet 1 (hình 3.19)

124
Xác lập trạng thái ban đầu

0 Trạng thái ban đầu

Đã ở trạng thái ban đầu


Và tín hiệu khởi động

1 Đi xuống

Hết hành trình đi xuống

2 Đi lên

Hết hành trình đi lên

3 Sang phải

Hết hành trình sang phải

4 Sang trái

Hết hành trình sang trái

Hình 3.19. Grafcet 1 cho công nghệ hình 3.18


Bước 3: Thiết lập Grafcet 2 (hình 4.20)
g

Nếu a0=0: A-
0
Nếu b0=0: B-

a0,b0, m

1 A+

a1

2 A-

a0

3 B+

b1

4 B-

b0

Hình 3.20. Grafcet 1 cho công nghệ hình 3.18

125
Bước 4: Xác định hàm điều khiển
 M 0  ( g  b0 .M 4  m0 ) M 1
  A  M 1
 M 1  (m.a0 .b0 M 0  m1 ) M 2 
  B  M 3
 2
M  ( a .M  m ) M  
 A  M 0 a0  M 2
1 1 2 3

M
 3  ( a0 . M 2  m 3 ) M 4  B  M b  M
 M  (b .M  m ) M  0 0 4
 4 1 3 4 0

3.3. KHỐI TỔ CHỨC OB VÀ LẬP TRÌNH KỸ THUẬT


Chương trình người dùng thường được chia nhỏ thành từng khối logic theo kiểu
chương trình cấu trúc, giúp cho việc lập trình và sửa lỗi thuận tiện. Có nhiều loại khối
logic:
- Khối tổ chức OB (Organization Blocks)
- Khối hàm FB (Function Block)
- Hàm FC (Functions)
- Khối dữ liệu Instance (Instance Data Blocks) liên kết với FB.
- Khối dữ liệu toàn cục (Global Data Blocks)

Trong phạm vi phần này, chúng ta sẽ tìm hiểu về các khối OB, FB, FC và chức
năng của chúng, đồng thời chúng ta sẽ tìm hiểu sâu hơn về lập trình kỹ thuật – lập trình
cấu trúc.
3.3.1. Các khối tổ chức OB
Các khối tổ chức OB đã được nhắc tới trong nội dung chương 1, cho nên chúng ta
sẽ không nhắc lại khái niệm cơ bản. Các khối tổ chức OB sẽ không thể gọi được nhau,
cũng như trong các khối FB/FC cũng không thể gọi OB. Chỉ khi có một sự kiện ngắt thực
hiện mới có thể gọi một khối OB.
CPU tổ chức các khối OB thành những mức độ ưu tiên khác nhau và những khối
OB có mức độ ưu tiên cao hơn sẽ được thực hiện trước những khối OB có mức độ ưu tiên
thấp hơn. Mức độ thấp nhất là khối OB1 với mức ưu tiên là 1, và mức cao nhất là 24
(những version 4.0 trở lên là 26).
Bảng 3.3. Khối tổ chức OB và số lượng (PLC S7-1200)

Khối tổ chức OB Số lượng Mức độ ưu tiên


Program cycle Multiple 1
Startup Multiple 1
Time – delay interrupts 4 (1 OB tương ứng với 1 sự kiện) 3
Cyclic interrupts 4 (1 OB tương ứng với 1 sự kiện) 8

126
Hardware interrupts 50 (1 OB tương ứng với 1 sự kiện, 18
tuy nhiên người dùng có thể gọi cùng
1 OB cho nhiều sự kiện khác nhau).
Time error interrupts 1 22 – 26
Diagnostic error interrupts 1 5
Pull or plug of modules 1 6
Rack or station failure 1 6
Time of day Multiple 2
Status 1 4
Update 1 4
Profile 1 4
Trong phần này chúng ta sẽ cùng tìm hiểu về một số khối tổ chức thông dụng và
chức năng, đặc điểm của các khối OB đó.
 Khối tổ chức khởi động – Startup OB
Khối khởi động được gọi khi PLC chuyển từ chế độ STOP sang RUN, chỉ được gọi
một lần duy nhất khi PLC khởi động, thường được sử dụng để thiết lập những tham số và
trạng thái ban đầu.
Người dùng có thể gọi nhiều khối tổ chức Startup OB trong chương trình điều
khiển.
 Khối tổ chức chính OB1 - Program Cycle
Khối tổ chức chính OB1 hay còn gọi là Main OB1 được thực gọi sau khi kết thúc
quá trình khởi động và sau khi kết thức chính nó, mọi OB đều có thể ngắt OB1. Khi khối
OB1 được thực hiện thì CPU sẽ gửi đi dữ liệu toàn cục. Trước khi gọi lại Main OB1 thì
CPU chuyển bộ nhớ đệm ra module output, cập nhật bộ đệm đầu vào và nhận dữ liệu
toàn cục.

127
Hình 3.21. Quá trình thực hiện quét của khối tổ chức chính OB1.
Chương trình trong OB1 có thể gọi các hàm FC/FB, người dùng có thể gọi nhiều
khối tổ chức OB trong chương trình điều khiển.
Thời gian thực hiện khối OB1 gọi là thời gian quét (scan time), CPU ấn định thời
gian quét tối đa, thông thường 150ms và tùy thuộc vào CPU, tuy nhiên người dùng có thể
thay đổi được trong cấu hình Device trên phần mềm. Nếu chu kỳ quét của CPU vượt thời
gian quét tối đa thì CPU sẽ gọi OB80 (Time error interrupt) hay chuyển sang STOP.
 Khối tổ chức ngắt trì hoãn – Time delay Interrupt
Có 4 khối tổ chức OB cho phép thực hiện ngắt thời trễ bắt đầu từ OB20 đến
OB23.
 Chức năng của khối tổ chức Time delay Interrupt OB
Hệ thống sẽ gọi khối OB tương ứng sau một thời gian trễ, tên của OB sẽ được định
danh trong tập lệnh SRT_DINT. Để thực hiện việc gọi một OB ngắt trì hoãn (ngắt trễ),
người dùng cần phải thực hiện những nhiệm vụ sau:
- Cần phải gọi tập lệnh SRT_DINT
- Sử dụng lệnh CAN_DINT để hủy ngắt trì hoãn thực hiện khi chưa gọi khối OB
ngắt trì hoãn
- Gọi khối OB ngắt trì hoãn trong Program blocks và download xuống CPU

 Một số đặc điểm của khối OB ngắt trì hoãn


- Ngắt trì hoãn có độ chính xác tới 1ms
- Khối OB ngắt trì hoãn chỉ được thực hiện khi CPU trong trạng thái RUN. Chế độ
Warm Restart sẽ xóa tất cả sự kiện của ngắt trì hoãn.
- Người dùng có thể hủy ngắt trì hoãn với DIS_AIRT và cho phép ngắt trì hoãn thực
hiện lại với EN_AIRT.

Chú ý: Nếu người dùng thực hiện lệnh DIS_AIRT sau khi thực hiện lệnh
SRT_DINT, ngắt trì hoãn chỉ có thể thực hiện lại sau khi thực hiện lệnh EN_AIRT.
 Khối tổ chức ngắt chu kỳ - Cyclic interrupts

128
Có 4 khối tổ chức ngắt chu kỳ OB33 được gọi theo chu kỳ tuần hoàn. Thời gian
thực hiện mỗi khối OB ngắt chu kỳ phải nhỏ hơn chu kỳ ngắt. Thời gian thực hiện mỗi
khối OB ngắt chu kỳ phải nhỏ hơn chu kỳ ngắt.
Thời gian thực hiện của OB ngắt chu kỳ có thể thay đổi từ 1ms đến 60000ms
Khối OB ngắt chu kỳ được sử dụng với chức năng lấy mẫu dữ liệu, thông tin…
 Khối tổ chức ngắt phần cứng – Hardware Interrupts
Có 50 khối tổ chức ngắt phần cứng bắt đầu từ OB40. Khi có lỗi xảy ra ở phần
cứng thì khối tổ chức ngắt phần cứng sẽ được gọi, và tương ứng với một sự kiện ngắt sẽ
cho phép gọi một khối OB do người dùng quy định. Ngắt phần cứng chỉ được gọi trong
chế độ RUN của CPU.
 Đặc điểm của khố tổ chức ngắt phần cứng
Khi có một sự kiện ngắt phần cứng xảy ra, do người dùng định nghĩa cho các ngõ
vào (rising, falling), do bộ đếm tốc độ cao, hay được gán trong phần cứng để thực hiện
ngắt thì một khối tổ chức ngắt phần cứng OB được gọi.
Nếu không có khối OB ngắt nào thực hiện thì OB ngắt phần cứng sẽ thực hiện. Nếu
có một khối ngắt khác thực hiện thì khối tổ chức OB ngắt phần cứng sẽ phụ thuộc vào
mức độ ưu tiên mà thực hiện trước hay sau. Khối OB ngắt phần cứng được xác nhận sau
khi hoàn thành chương trình trong nó.
Nếu một sự kiện khác gây ra một ngắn phần cứng trong cùng một module giữa thời
gian xác định ngắt và xác nhận ngắt thì áp dụng theo phương pháp sau:
- Nếu sự kiện ngắt xảy ra trên cùng một channel thì sự kiện gọi tước đó sẽ được
thực hiện và không thực hiện thêm ngắt phần cứng lần nữa. Một ngắt phần cứng
khác chỉ được thực hiện nếu như ngắt phần cứng hiện tại đã được xác nhận.
- Nếu sự kiện ngắt xảy ra trên một kênh khác, thì cả 2 ngắt phần cứng đều được
thực hiên theo thứ tự ưu tiên.

 Những sự kiện cho phép ngắt phần cứng thực hiện.


- Nhận tín hiệu xung sườn lên (rising): Tối đa là 16 sự kiện.
- Nhận tín hiệu xung sườn xuống (falling): Tối đa là 16 sự kiện.
- Sự kiện của bộ đếm tốc độ cao khi thay đổi chiều đếm cung (Direction changed)
tối đa là 6 sự kiện.
- Sự kiện của bộ đếm tốc độ cao khi thực hiện External Reset tối đa là 6 sự kiện.

 Khối tổ chức ngắt lỗi thời gian – Time error interrupt OB


Khối tổ chức OB80 được gọi trong những trường hợp sau:
- Nếu số lệnh trong chương trình vượt quá giới hạn chu kỳ quét (mặc định là
150ms) sẽ gây lỗi và khối tổ chức OB80 sẽ được gọi.
- Thời gian xử lý ngắt chu kỳ lớn hơn chu kỳ ngắt.
- Khi thay đổ thời gian cài đặt/hoạt động của khối tổ chức ngắt thời gian lỗi.
129
Chú ý: Nếu OB80 được gọi hai lần trong cùng một chu kỳ quét do thời gian bị vượt
quá giới hạn thì CPU sang chế độ STOP. Người dùng có thể ngăn chặn điều này bằng
cách gọi lệnh RE_TRIGR tại một thời điểm thích hợp trong chương trình.
 Khối tổ chức ngắt chuẩn đoán – Diagnostic error interrupt OB
Khối tổ chức ngắt chuẩn đoán OB thực hiện khi CPU phát hiện ra lỗi chuẩn đoán,
hoặc nếu module có chức năng chuẩn đoán có khả năng nhận dạng lỗi và người dùng
kích hoạt ngắt chuẩn đoán lỗi cho module. Khối OB ngắt chuẩn đoán lỗi thực hiện ngắt
chương trình Program cycle một cách bình thường.
Người dùng có thể gọi là STP trong khối OB chuẩn đoán để chuyển CPU sang trạng
thái STOP như mong muốn khi phát hiện ra sự kiện tương ứng. Nếu người dùng gọi
OB82 để thực hiện chuẩn đoán lỗi nhưng không chương trình chuẩn đoán lỗi thì CPU sẽ
bỏ qua lỗi và tiếp tục trạng thái RUN.
 Khối tổ chức báo lỗi thêm bớt module – Pull/plug of module OB
Khối tổ chức báo lỗi thêm bớt module được thực thi khi cấu hình các module I/O
phân tán, module mạng Profibus, Profinet, AS-I với sự kiện tháo/lắp module vào CPU.
3.3.2. Lập trình kỹ thuật
Các chương trình lớn thường được viết dạng cấu trúc, gồm khối OB1 và các khối
chương trình FC, FB. Sử dụng lập trình cấu trúc giúp chương trình dễ quản lý và sửa lỗi,
thuận tiện cho việc lập trình theo nhóm. Khối tổ OB và các khối FC, FB có thể gọi
những khối hàm FB, FC khác.
Instance
DB1

KHỐI
KHỐI CHƯƠNG
CHƯƠNG TRÌNH FC2
TRÌNH FB1
KHỐI CHƯƠNG
Global
TRÌNH CHÍNH DB2
OB1
KHỐI
CHƯƠNG
TRÌNH FC1

Hình 3.22. Lập trình cấu trúc với FB/FC

130
3.3.2.1. Lập trình hàm chức năng FC
 Giới thiệu về hàm chức năng FC
Hàm chức năng FC là khối logic có các biến In, Out, In/Out do chương trình gọi
cung cấp cho hàm, ngoài ra còn có các biến Temp sử dụng nội bộ (cục bộ), tuy nhiên
không bắt buộc phải dùng hết tất cả các biến này.
Hàm FC không có bộ nhớ nội nên dữ liệu mất đi khi ra khỏi khối, cùng như không
có khối giữ liệu Instance DB giống như khối hàm chức năng FB.
 Quy tắc để gọi hàm chức năng FC
Hàm chức năng FC được sử dụng chủ yếu khi giá trị của hàm được trả lại các khối
thực hiện lệnh gọi. Ví dụ để thực hiện các toán tử hoạt động đơn lẻ, các hàm toán học…
Để không vi phạm các nguyên tắc của lập trình cấu trúc, người dùng không nên truy
cập trực tiếp những địa chỉ toàn cục (global address) trong hàm chức năng FC như: I, Q,
M…Mỗi thông tin truyền nhận giữa tín hiệu xử lý với các khối dữ liệu khác phải sử dụng
thông qua tham số của hàm chức năng FC.
Không sử dụng dữ liệu instance DB của FB làm tham số đầu vào và tuyệt đối không
sử dụng các giá trị trả về RET_VAL cùng chung vùng nhớ.
 Hướng dẫn lập trình hàm chức năng FC
a. Đặt vấn đề
Khởi tạo hàm chức năng FC1 thực hiện tính toán giá trị một hàm số có công thức
toán học sau: K=4X + 5XYZ
Trong đó X, Y, Z, K là số thực. Và thử lại kết quả với X=1.0, Y=2.0, Z=3.0
b. Hướng dẫn thực hiện
Bước 1: Khởi tạo hàm chức năng FC1 tên Math_1: Program blocks  Add new
block  Function, đặt tên Math_1 và chọn OK

131
Bước 2: Tại giao diện lập trình của hàm chức năng FC Math_1 vừa mới khởi tạo,
khai báo các thông số cần thiết, cũng như kiểu dữ liệu phù hợp cho dữ liệu bài toán vừa
đưa ra.

Bước 3: Lập trình hàm chức năng FC1: K=4X + 5XYZ

132
Bước 4: Gọi hàm chức năng FC Math_1 trong OB1 và thử mô phỏng kết quả với X=1.0,
Y=2.0, Z=3.0

Nhờ việc lập trình chương trình thành các khối Block, các công thức toán học được
lặp lại nhiều lần một cách dễ dàng bằng cách gọi khối hàm trở lại nhiều lần, không phải
lặp lại những đoạn chương trình giống nhau…giúp cho việc lập trình trở nên đơn giản
hơn, đồng thời làm giảm dung lượng bộ nhớ hơn khi lập trình trùng lặp nhiều lần, cũng
như dễ dàng truy xuất.
3.3.2.2. Lập trình khối hàm chức năng FB Function block
 Giới thiệu về khối hàm chức năng FB
Khối hàm chức năng FB là khối logic với các biến In, Out, In/Out, Static và Temp –
các biến này được tạo ra trong bảng giao tiếp khối đi kèm – block interface. Các biến In,
Out, In/Out là các tham số có địa chỉ cụ thể do chương trình gọi cung cấp cho hàm, biến

133
Static là biến trong chương trình FB được lưu lại khi ra khỏi khối FB, biến Temp mất giá
trị khi ra khỏi khối FB.
Khai báo khối hàm FB bắt buộc phải có khối dữ liệu DB – Data block – để chứa các
biến In, Out, In/Out và Static. Có thể có nhiều khối dữ liệu DB cho 1 khối hàm chức năng
FB để thực hiện các nhiệm vụ khác nhau với quy trình vận hành giống nhau, những DB
đó được gọi là Instance DB. Như vậy, khi chương trình gọi FB cần phải kèm theo
Instance DB tương ứng.
 Quy tắc để gọi khối hàm FB
Khi điều khiển tự động cho các đối tượng như động cơ, băng tải, thuật toán PID,
Fuzzy, Noron, … người dùng sẽ được sử dụng các khối hàm chức năng FB để viết
chương trình.
Để không vi phạm các nguyên tắc của lập trình cấu trúc, người dùng không nên
truy cập trực tiếp những địa chỉ toàn cục trong khối hàm FB như: I, Q, M,…mỗi thông tin
truyền nhận giữa tín hiệu xử lý với các khối dữ liệu khác nhau phải sử dụng thông qua
tham số của khối hàm FB.
Chỉ khi gọi khối FB ở mức cao nhất – liên quan tới các khối tổ chức OB, người
dùng có thể gắn những tín hiệu xử lý I, Q, M… trực tiếp đến tham số của khối.
 Hướng dẫn lập trình khối hàm chức năng FB
a. Đặt vấn đề
Cho dây chuyền như hình dưới đây:

134
Tạo khối FB1 với tên Mode_Selection, thực hiện điều khiển On/Off dây chuyền
khởi động và lựa chọn chế độ hoạt động của dây chuyền. Khối FB1 có những tham số
đầu vào/đầu ra như sau:
- #Start (in, BOOL): khởi động dây chuyền khi #Start=1
- #Stop (in, BOOL): dây chuyền tắt khi tác động #Stop, và ưu tiên #Stop.
- #Plant_on (out, BOOL): khi dây chuyền khởi động thì Plant_on = 1.

Người dùng có thể chọn chế độ hoạt động khi dây chuyền khởi động:
- #Auto_Man (in, BOOL): #Auto_Man = 0 chế độ manual
#Auto_Man = 1 chế độ auto.
- #OM_activate (in, BOOL): chế độ lựa chọn khi có một xung (Adopt mode) của
#OM_activate.

Khi chế độ hoạt động được lựa chọn thì các đèn báo chỉ thị được xuất ra ngõ ra của
khối FB1.
- #OM_Man (out, BOOL): chế độ manual được kích hoạt.
- #OM_Auto (out, BOOL): chế độ auto được kích hoạt.

b. Hướng dẫn thực hiện.


Bước 1: Khai báo các biến I/O theo phần ứng tương ứng.

Bước 2: khởi tạo khối hàm FB1 với tên Mode_Selection: Program blocks  Add
new block, đặt tên Mode_Selection và chọn OK.

135
Bước 3: Tại giao diện lập trình của khối FB Mode_Selection vừa mới khởi tạo.
Khai báo các thông tin cần thiết, cũng như kiểu dữ liệu phù hợp cho dữ liệu bài toán vừa
đưa ra.

Bước 4: Lập trình khối FB theo yêu cầu bài toán đưa ra:

136
Bước 5: Gọi khối hàm FB Mode_Selection trong OB1 và khai báo đầy đủ tham số
Input/output cho khối hàm.

137
Trong quá trình gọi khối hàm FB thì cần phải có 1 khối dữ liệu Instance DB đi kèm,
khi đó phần mềm TIA Portal sẽ tự tạo đi kèm với người dùng chỉ cần chọn OK để FB có
thêm Interface DB.
3.3.2.3. Định dạng khối dữ liệu người dùng với Share DB và UDT.
 Sử dụng khối dữ liệu DB – Data Block
Khối dữ liệu DB – data block – khác với các hàm chức năng FB, FC là trong khối
dữ liệu không thể lập trình – không sử dụng được các tập lệnh – thay vào đó, khối dữ liệu
DB cung cấp vùng nhớ để lưu giá trị theo yêu cầu người dùng.
Khi người dùng gọi khối hàm chức năng FB hệ thống sẽ yêu cầu 1 khối dữ liệu
DB đi kèm chung với FB, khối dữ liệu DB đó được gọi là Instance DB. Tuy nhiên, chúng
ta sẽ không tập trung vào Instance DB vì đã nhắn tới khi nói về khối hàm chức năng FB.
Trong phần này chúng ta sẽ chỉ tập trung nói về khối dữ liệu toàn cục – global data, cách
khởi tạo và truy xuất dữ liệu.
Khối dữ liệu DB có thể chứa các biến dữ liệu của người dùng giống như biến M.
Khối dữ liệu toàn cục Global DB có thể được truy cập bởi tất cả các khối hàm OB, FB,
FC… Số lượng khối dữ liệu DB phụ thuộc vào CPU.
Bảng 4.4. Kiểu dữ liệu trong khối dữ liệu DB có thể khai báo

Kiểu dữ liệu Miêu tả


Bit và chuỗi Bit  Bool gồm 1 bit đơn
 Byte gồm 8 bit
 Word gồm 16 bit
 Dword gồm 32 bit.

Interger  USInt (số interger không dấu 8 bit)


 SInt (số interger có dấu 8 bit)
 UInt (số interger không dâu 16 bit)
 Int (số interger có dấu 16 bit)
 UDInt (số interger không dấu 32 bit)
 DInt (số interger có dấu 32 bit)

Số thực - Real  Real – số thực dấu chấm động 32 bit


 Lreal – số thực dấu chấm động 64 bit

Date and Time  Date là kiểu dữ liệu 16 bit chỉ số ngày có tầm từ
D#1990 – 1 – 1 đến D#2168 – 12 – 31

138
 DTL (date and time long) bao gồ dữ liệu với 12
Byte lưu trữ thông tin về ngày, tháng, năm.
 Year (UInt): 1970  2554
 Month (USInt): 1  12
 Day (USInt): 1  31
 Weekday (USInt): 1  7 (1 là ngày chủ nhật)
 Hours (USInt): 0  23
 Seconds (USInt): 0  59
 Nanoseconds (UDInt): 0  999999999
 Time là kiểu dữ liệu 32 bit được miêu tả theo
chuẩn IEC Time tầm giá trị lên đến
T#24D20H31M23S647MS
 TOD (Time of day) là kiểu dữ liệu 32 bit có tầm
giá trị TOD#0:0:0.0 đến TOD#23:59:59.999

Char và String  Char là kiểu dữ liệu ký tự với 8 Bit


 String là kiểu dữ liệu chuỗi lên tới 254 char

Array và Structure  Array là kiểu dữ liệu mảng bao gồm nhiều thành
phần đơn giống nhau về kiểu dữ liệu. Mảng có thể
tạo trong giao diện interface của OB, FB, FC, DB.
 Struct là kiểu dữ liệu định dạng theo cấu trúc
thành phần có thể bao gồm nhiều kiểu dữ liệu
khác nhau

PLC data types  PLC Data types hay còn gọi là UDT là dạng dữ
liệu cấu trúc có thể định nghĩa vởi người dùng.

Pointer  Pointer hay con trỏ sử dụng để định địa chỉ gián
tiếp

BCD(*)  BCD16 có giá trị từ -999  999


 BCD32 có giá trị -9999999  999999

139
a. Các bước khởi tạo và truy xuất 1 khối dữ liệu toàn cục – global DB
Bước 1: Khởi tạo khối dữ liệu DB1 với tên Global_1: Program blocks  Add new
block  Data block, đặt tên Global block, đặt tên Global_1, chọn kiểu (type) là Global
DB, và chọn OK để hoàn thành việc khởi tạo.

Bước 2: Đặt tên và khai báo kiểu dữ liệu muốn sử dụng trong khối dữ liệu DB.

Chú ý: Nếu người dùng khi tạo Tag trong khối dữ liệu toàn cục DB có chọn Retain
thì giá trị của Tag đó sẽ được lưu, dù CPU mất điện, với phương pháp này sẽ hỗ trợ cho
người dùng trong việc lập trình lưu trữ dữ liệu khi PLC mất điện một cách đơn giản,
Bước 3: Truy xuất biến dữ liệu của khối dữ liệu DB trong các chương trình OB,
FB, FC giống như vùng nhớ memory – M

140
b. Bật/tắt Chế độ Optimized block access cho khối dữ liệu DB
Chế độ Optimized block access: với chế độ này cho phép người dùng sử dụng
dung lượng của khối dữ liệu nhẹ hơn so với chế độ Standard – compatible with S7 –
300/400. Tuy nhiên, người dùng chỉ có thể truy xuất bằng Tag và tên gợi nhớ và không
có địa chỉ.
Chế độ Standard – compatible with S7 – 300/400: trong một số trường hợp PLC
S7 – 1200 giao tiếp với một thiết bị thông minh của hãng khác thông qua OPC thì việc
cần biết vùng nhớ để liên kết là điều cần thiết, khi đó người dùng phải chuyển khối dữ
liệu DB sang chế độ Standard – compatible with S7 – 300/400.
Thao tác để chuyển khối dữ liệu DB từ chế độ Optimized sang chế độ
Standard thực hiện như sau:
Bước 1: chọn khối dữ liệu DB  Properties  General  Attributes  bỏ dấu
check Optimized block access

Bước 2: bảng thông báo hiện ra cảnh báo, để tiếp quá trình chọn OK  OK. Tạo
bảng biến dữ liệu và save compile để hoàn thành và lưu lại kết quả khởi tạo.

141
Với chế độ Standard trong khố dữ liệu DB cột Offset chính là địa chỉ để truy
xuất dữ liệu của khối. Và cách đọc địa chỉ sẽ được thể hiện dưới dạng dưới đây:
Bảng 3.3. Định dạng vùng nhớ trong khối dữ liệu DB với chế độ Standard

Tên gọi DBXa.b DBBa DBWa DBDa


Ví dụ DB1.DBX0.1 DB1.DBB1 DB1.DBW2 DB1.DBD4

 Định dạng dữ liệu theo người dùng với UDT


Khi cấu trúc dữ liệu được lặp lại thường xuyên trong 1 hoặc nhiều chương trình của
các khối khác nhau, hoặc cấu trúc dữ liệu muốn đặt theo tên riêng, khi đó người dùng có
thể tự định nghĩa kiểu dữ liệu riêng với UDT – User Defined Data Types hay còn gọi là
PLC data types.
Kiểu dữ liệu UDT được sử dụng để giúp cho việc lập trình trở nên hiệu quả hơn,
người dùng lúc này có thể tạo và sử dụng các kiểu dữ liệu thích hợp cho những vấn đề
của họ.
Kiểu dữ liệu UDT được tạo ra sẽ có giao diện giống như DB, số lượng UDT có thể
lên tới 65535 tùy thuộc vào dung lượng CPU và thẻ nhớ.
Kiểu dữ liệu UDT có thể được truy xuất ở khối dữ liệu DB, hay trong giao diện
Interface của OB, FB, FC.
Các bước khởi tạo và truy xuất kiểu dữ liệu cảu người dùng UDT:
Bước 1: Khởi tạo khối dữ liệu UDT với tên Motor: PLC  PLC data types  Add
new data type, đặt tên là Motor để hoàn tất việc khởi tạo.

142
Bước 2: Đặt tên và khai báo kiểu dữ liệu sử dụng trong UDT

Bước 3: Truy xuất dữ liệu UDT ở khối dữ liệu DB hay trong giao diện Interface của
OB, FB, FC. Chúng ta đặt tên biến sau đó chọn kiểu dữ liệu “Data type” là dữ liệu UDT
Motor
Truy xuất dữ liệu UDT trong khối dữ liệu DB

Truy xuất dữ liệu UDT trong các khối hàm OB, FB, FC.

3.3.2.3. Thư viện cho người dùng

143
Phần thư viện của TIA Portal được sử dụng với mục đích lưu trữ lại những khối
hàm FB, FC để người dùng sử dụng đó như một thư viện chung những Project tương tự.
Ngoài ra, thư viện của TIA Portal còn có thể lưu trữ cả cấu hình CPU, HMI, Tag
(symbol),… một cách đơn giản và dễ dàng với thao tác kéo thả.
Các bước để tạo một thư viện cho người dùng:
Bước 1: Chọn thẻ Libraries để mở giao diện thư viện người dùng. Libraries cho
người dùng 2 sự lựa chọn khi tạo thư viện đó là:
- Thư viện cho người từng Project – Project library – với những định dạng thư
viện này, những phần tử nằm trong thư viện chỉ được dùng trong project hiện hành
và không bị truy cập hay sử dụng cho những người khác.
- Thư viện toàn cục – Global libraries – với định dạng thư viện này, những phần
tử nằm trong thư viện có thể truy xuất và được gọi với tất cả project khi làm việc
với TIA Portal. Bởi tính năng này, chúng ta sẽ chỉ tập trung vào thư viện toàn cục
– global libraries.

Bước 2: Tạo thư viện toàn cục – global libraries: Libraries  Global libraries 
Creating a global library.

Khai báo đầy đủ tên thư viện, đường dẫn lưu thư viện, tên người dùng tạo thư
viện…  chọn Create để hoàn thành việc khởi tạo thư viện người dùng.

144
Bước 3: Đưa các phần tử vào trong thư viện vừa tạo bằng việc kéo nhả những đối
tượng này vào thư viện Master Copies của thư viện người dùng. Thư viện người dùng của
Tia Portal có thể đưa nhiều định dạng phần tử vào trở thành thư viện chung như: Project,
CPU, Data block, UDT, VAT,…

Bước 4: Sau đó, chọn Save để hoàn thành việc khởi tạo thư viện người dùng.

145
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3
Câu 1. Sử dụng PLC S7-1200 lập trình điều khiển cho các công nghệ sau:

a) b)
m
P
A D
B
T T

L X

c) d)

Câu 2. Sử dụng PLC S7-1200 lập trình điều khiển cho các công nghệ sau:
m
P
A D
B
T T

L X

m T
A C E
P P

X L X L X L

B D F

a) b)

146
F E

E
L X
X
B C L
P
A B D
L X

m
A D

m C

c) d)
Câu 3. Sử dụng PLC S7-1200 lập trình điều khiển cho công nghệ máy khoan tự động
sau:
m

A S

Trong đó:
Đường nét liền: : chuyển động với tốc độ V1
Đường nét đứt: -------- : Chuyển động với tốc độ V2
Câu 4. Tay máy có nhiệm vụ vận chuyển các chi tiết cần gia công từ vị trí A sang vị trí
B.

147
C
P T

X L X L

K N
3s 3s
A B

Hãy sử dụng PLC S7-1200 lập trình điều khiển cho tay máy theo nhiệm vụ trên.

148
CHƯƠNG 4
THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÒNG KÍN VỚI
THUẬT TOÁN PID
MỤC TIÊU CHƯƠNG 4
Thuật toán điều khiển vòng kín được sử dụng để điều chỉnh sai lệch giữa giá trị đo
được của hệ thống (process variable) với giá trị đặt mong muốn (Setpoint), bằng cách
tính toán và điều chỉnh giá trị điều khiển ở ngõ ra. Trong đó, bộ điều khiển PID là một
thuật toán điều khiển vòng kín được sử dụng rộng rãi trong công nghiệp. Nội dung
chương này sẽ trình bày đến người học những kiến thức tổng quát về thuật toán PID,
cách thiết kế bộ điều khiển PID với các khối hàm được tích hợp sẵn trong tập lệnh kỹ
thuật ứng dụng Technolggy  PID Control.

4.1. GIỚI THIỆU VỀ THUẬT TOÁN PID


4.1.1. Luật điều khiển PID
Bộ điều khiển PID (Proportional Integral Derivative controller) là bộ điều khiển sử
dụng kỹ thuât điều khiển theo vòng lặp có hồi tiếp được sử dụng rộng rãi trong các hệ
thống điều khiển tự động ,nó hiệu chỉnh sai lệch giữa tín hiệu ra và vào sau đó đưa ra
một một tín hiệu điều khiển để điều chỉnh quá trình cho phù hợp.
Bộ điều khiển PID (vi tích phân tỉ lệ) rất hay dùng trong các hệ thống điều khiển. Vì
nó tăng chất lượng đáp ứng của hệ thống với các ưu điểm sau: PID là sự kết hợp ưu điểm
của hai khâu PD và PI, nó làm giảm thời gian xác lập, tăng tốc độ đáp ứng của hệ thống,
giảm sai số xác lập, giảm độ vọt lố,…
Sơ đồ khối hệ điều khiển PID:

Hàm truyền cần thiết kế có dạng:


KI 1
GPID  K P   K D s  K P (1   TD s )
s TI s
Khâu P - Proportional: Tạo ra tín hiệu điều khiển tỉ lệ với giá trị của sai lệch. Việc
này được thực hiện bằng cách nhân sai lệch e với hằn số - Hằng số tỉ lệ.
P  K P e(t )

Trong đó: P - Giá trị ngõ ra ; - Hằng số tỉ lệ ; e - sai lệch giữa giá trị đặt với giá
trị điều khiển.

149
Khâu I - Integral: Cộng thêm tổng các sai số trước đó vào giá trị điều khiển. Viêvj
tính tổng các sai số được thực hiện liên tục cho đến khi giá trị đạt đượcbằng với giá trị
đặt, và kết quả là khi hệ cân bằng thì sai số bằng 0.
t
I  K I  e(t )dt
0

Trong đó: I - Giá trị ngõ ra khâu I; - Hệ số tích phân


Khâu D - Derivative: Cộng thêm tốc độ thay đổi sai số vào giá trị điều khiển ở ngõ
ra. Nếu sai số thay đổi nhanh thì sẽ tạo ra thành phần cộng thêm vào giá trị điều khiển.
Điều này cải thiện đáp ứng của hệ thống, Giúp trạng thái của hệ thống thay đổi nhanh
chóng và mau chóng đạt giá trị mong muốn.
de
D  KD
dt

Trong đó: D - ngõ ra khâu D; -Hệ số vi phân


Bảng 4.1. Ảnh hưởng của thay đổi tham số PID:

Chỉ tiêu chất lượng Thay đổi tham số


Tăng Kp Giảm Ti Tăng Td
Thời gian đáp ứng Giảm Giảm ít Giảm ít
Thời gian quá độ Thay đổi ít Giảm Giảm
Độ quá điều chỉnh Tăng Tăng Giảm ít
Hệ số tắt dần Thay đổi ít Tăng Giảm
Sại lệch tĩnh Giảm Triệt tiêu Thay đổi ít
Tín hiệu điều khiển Tăng Tăng Tăng
Độ dự trữ ổn định Giảm Giảm Tăng
Bền vững với nhiễu đo Giảm Thay đổi ít Giảm
Chọn luật điều khiển cho các bài toán tiêu biểu:
- Vòng điều khiển lưu lượng: Động học của đối tượng phụ thuộc chủ yếu vào van
điều khiển, nhiễu đo cao tần => hầu như chỉ cần sử dụng luật PI.
- Vòng điều khiển mức: Quá trình có đặc tính tích phân, phép đo mức thường rất bị
ảnh hưởng của nhiễu => luật P cho điều khiển lỏng và luật PI cho điều khiển chặt.
- Vòng điều khiển áp suất chất khí: Động học của đối tượng phụ thuộc chủ yếu vào
thiết bị chấp hành, quá trình cũng có đặc tính tích phân tương tự như bài toán điều khiển
mức nhưng cao hơn về độ chính xác => Luật PI là chủ yếu.

150
- Vòng điều khiển nhiệt độ: Động học chậm, phép đo ít chịu ảnh hưởng của nhiễu
cao tần => sử dụng luật PID.
- Vòng điều khiển thành phần: Tương tự như vòng điều khiển nhiệt độ => thường
sử dụng PID.
4.1.2. Phương pháp hiệu chỉnh PID bằng thực nghiệm
Phương pháp Zeigle – Nichols là phương pháp thực nghiệm để thiết kế bộ điều
khiển P , PI hoặc PID bằng cách dựa vào đáp ứng quá độ của đối tượng điều khiển . Bộ
điều khiển PID cần thiết kế có hàm truyền là :
KI 1
GPID  K P   K D s  K P (1   TD s )
s TI s

Zeigle – Nichols đưa ra 2 phương pháp lựa chọn thông số bộ điều khiển PID tùy
đối tượng .
 Phương pháp Zeigle – Nichols 1

Phương pháp này sử dụng mô hình xấp xỉ quán tính bậc nhất có trễ của đối tượng
điều khiển:

Phương pháp thực nghiệm này có nhiệm vụ xác định tham số kp, TI, Td cho bộ điều
khiển PID trên cơ sở xấp xỉ hàm truyền đạt S(s) của đối tượng thành dạng (1.1), để hệ kín
nhanh chóng trở về chế độ xác lập và độ quá điều chỉnh Δh không vượt quá một giới hạn
h
cho phép, khoảng 40% so với h  lim h(t ) , tức là có  0,4
t  h

Ba tham số (hằng số thời gian), K (hệ số khuyếch đại) và (hằng số thời gian
quán tính) của mô hình xấp xỉ quán tính bậc nhất có thể được xác định gần đúng từ đồ thị
hàm quá độ h(t) của đối tượng. Nếu đối tượng có hàm quá độ dạng như hình 5.14 mô tả
thì từ đồ thị h(t) đó ta đọc ra được:
- là khoảng thời gian tín hiệu ra h(t) chưa có phản ứng ngay với tín hiệu kích
thích 1(t) tại đầu vào.
- K là giá trị tới hạn .

151
- Gọi A là điểm kết thúc khoảng thời gian trễ, tức là điểm trên trục hoành có hoành
độ bằng . Khi đó là khoảng cần thiết sau để tiếp tuyến của h(t) tại đầu vào.
Như vậy điều kiện áp dụng được phương pháp xấp xỉ mô hình bậc nhất có trễ của
đối tượng là đối tượng đã phải ổn định, không có dao động và ít nhất hàm quá độ của nó
phải có dạng chữ S.

b)
K
a )
K

t t

T1 T 2 T1 T2

Hình 4.1: Xác định tham số cho mô hình xấp xỉ của đối tượng
Sau khi đã xác định các tham số cho mô hình xấp xỉ của đối tượng, Ziegler-Nichols
đã đề nghị sử dụng các tham số kp, TI, TD cho bộ điều khiển như sau:
K là giá trị giới hạn .
- Kẻ đường tiếp tuyến của h(t) tại điểm uốn của nó. Khi đó sẽ là hoành độ giao
điểm của tiếp tuyến với trục hoành và là khoảng thời gian cần thiết để đường tiếp
tuyến đi được từ giá trị 0 tới được giá trị K.
Như vậy ta thấy điều kiện để áp dụng được phương pháp xấp xỉ mô hình bậc nhất
hàm quá độ của nó phải có dạng chữ S. Sau khi đã có tham số cho mô hình xấp xỉ của đối
tượng, ta chọn các thông số của bộ điều chỉnh theo bảng:
Bảng 4.2: Bảng chọn thông số PID phương pháp Ziegler-Nichols thứ nhất.
Bộ ĐK/ Tham số Kp TI Td

P T2/(T1.K) ∞ 0

PI 0.9 T2/(T1.K) 10T1/3 0

PID 1,2 T2/(T1.K) 2T1 0,5 T1

 Phương pháp Zeigle – Nichols 2

Phương pháp thứ hai này không sử dụng mô hình toán học của đối tượng. Phương
pháp thực nghiệm thứ hai này chỉ áp dụng được cho những đối tượng có được chế độ
biên giới ổn định khi hiệu chỉnh hằng số khuyếch đại trong hệ kín.
152
Trước tiên, sử dụng bộ P lắp vào hệ kín (hoặc dùng bộ PID và chỉnh các thành
phần và về giá trị 0). Khởi động quá trình với hệ số khuếch đại thấp, sau đó tăng
dần Kp tới giá trị tới hạn để hệ kín ở chế độ giới hạn ổn định, tức là tín hiệu ra h(t)
có dạng dao động điều hòa. Xác định chu kỳ tới hạn của dao động.
h(t)
x y
e Đối tượng Tgh
Kgh
_ điều khiển

Hình 4.2: Xác định hệ số khuếch đại tới hạn


Thông số bộ điều chỉnh như sau:

Bảng 4.2: Bảng chọn thông số PID phương pháp Ziegler-Nichols thứ hai.
Bộ điều khiển
(Thông số)

P 0

PI 0

PID

4.1.3. Giải pháp thiết kế bộ điều khiển PID


Rõ ràng việc phối hợp các đặc tính P, I, và D sẽ cho chúng ta khả năng thiết kế được
một bộ điều khiển PID phù hợp với các đối tượng cần điều khiển khác nhau.
Sử dụng bộ điều khiển PID
Một vấn đề cần được đặt ra là trong trường hợp nào thì nên dùng bộ điều khiển kiểu
P, PI, PD hay PID?
a) Với các đối tượng có đáp ứng nhanh
Giả sử một bộ điều khiển kiểu PD được dùng để điều khiển cho một đối tượng có
đáp ứng nhanh như điều khiển dòng, điều khiển tốc độ động cơ... Nếu vì một lý do nào
đó (như tải tăng chẳng hạn) làm cho đầu ra của hệ thống giảm nhanh về một giá trị nào
đó thì do sai lệch sau đó gần như không đổi nên khâu D sẽ gần như không có tác dụng.
Trong trường hợp này, nếu thay vì sử dụng bộ điều kiển kiểu PD ta sử dụng một bộ
điều khiển kiểu PI thì tín hiệu ra của khâu vi phân sẽ liên tục được cộng dồn làm cho tín
153
hiệu đầu ra của bộ điều khiển ngày càng lớn và có thể đủ để thắng mức độ gia tăng của
tải thì sẽ làm tốc độ động cơ tiếp tục tăng trở lại giá trị đặt.
Vì vậy, đối với các đối tượng có đáp ứng nhanh thì sử dụng các bộ điều khiển kiểu
PI (có đáp ứng chậm) hoặc PID là phù hợp.
b) Với các đối tượng có đáp ứng chậm
Hiện tượng Windup
Giả sử một bộ điều khiển kiểu PI được dùng để điều khiển cho một đối tượng có
đáp ứng chậm như điều khiển nhiệt độ chẳng hạn. Do đáp ứng chậm nên có thể xảy ra
trường hợp sai lệch giữa giá trị đặt so với giá trị thực có thể diễn ra trong thời gian dài. Ví
dụ, nhiệt độ đặt là 85^0C, nhiệt độ hiện tại của đối tượng là 35^0C và giả sử phải gia
nhiệt hết công suất thì cũng phải sau 15 phút thì nhiệt độ mới đạt yêu cầu. Chú ý là tín
hiệu ra của khâu I u_{i,k} = K_{i}e_{k} + u_{i,k-1} được cộng dồn liên tục do chu kỳ
điều khiển k thường rất nhỏ (chỉ cỡ vài chục ms chẳng hạn). Kết quả là tín hiệu ra của
khâu I cứ tăng lên mãi, vượt quá khả năng của mạch công suất nhưng do sai lệch vẫn còn
lớn nên khâu I vẫn tiếp tục cộng dồn... Hiện tượng như vậy còn được gọi là Windup. Vì
vậy, với bộ điều khiển có khâu I người ta có thể còn cần phải thiết kế thêm một phần để
chống lại hiện tượng này và được gọi là anti windup.
Trong ví dụ này, nếu thay vì sử dụng bộ điều kiển kiểu PI ta sử dụng một bộ điều
khiển kiểu PD thì tín hiệu ra của khâu D u_{d,k} = K_{d}(e_{k} - e_{k-1}) sẽ có giá trị
không lớn, phù hợp với mức độ gia tăng dần dần của nhiệt độ đầu ra.
Như vậy, đối với các đối tượng có đáp ứng chậm thì sử dụng các bộ điều khiển kiểu
PD (có đáp ứng nhanh) là phù hợp.
c) Giải pháp thực hiện Anti-Windup
Lựa chọn khâu điều chỉnh PI
VI
 Khâu điều chỉnh PI trên miền tần số có dạng: G PI ( s)  VP  (1) (VP là hằng số
s
tỷ lệ, VI là hằng số tích phân)
 Gián đoạn hóa khâu điều chỉnh
VP  (VI T  VP ) z 1 1  dz 1
G PI ( z )   V (2)
1  z 1 1  z 1
P

VT
Với T là chu kỳ trích mẫu, d  ( I  1)
VP
1  dz 1 VI
- Hay viết dưới dạng: G PI ( z )  VP , d  (1  T ) (3)
1  z 1 VP
Với T là chu kỳ trích mẫu, nên T sẽ nhỏ. Vây nên phạm vi d nằm trong khoảng giá
trị 0,9÷1.
 Thực hiện PID số
154
Công thức (3) có thể viết dưới dạng sau đây để dùng trực tiếp viết phần mềm:
u (k )  VP  e(k )  d .e(k  1)   u (k  1) (4)

 Chống bão hòa tích phân


 Trạng thái bão hòa tích phân (windup) chỉ xảy ra trong trường hợp bộ điều khiển
có chứa thành phần tích phân và tín hiệu điều khiển bị hạn chế.
Xảy ra khi:
1. Khi biến thiên lượng đặt lớn  sai số lớn  u đạt giá trị max/min
2. Khi thay đổi tải lớn và đột ngột …
 Phương pháp điều chỉnh ngược trở lại đối với sai số điều chỉnh
Cơ sở của phương pháp là dùng hiệu số giữa giá trị mà khâu điều chỉnh tính toán và
giá trị thực sự để sửa sai số điều chỉnh theo một tham số trọng lượng nào đó.
Phương trình (4) viết lại như sau:
ur (k )  VP  ec (k )  d .e(k  1)   u (k  1) (5)

Các chỉ số phụ: r: giá trị thực sự được thực hiện (realized)
c: giá trị được hiệu chỉnh (corrected)
Trừ (4) và (5) cho nhau, ta thu được công thức để sửa sai lệch điều chỉnh như sau:
1
ec (k )  e(k )   uc ( k )  u r ( k ) 
VP

Khâu điều chỉnh PI được xây dựng trên Simulink như sau:

Hình 4.2. Mô phỏng bộ PID số trên Matlab


Thiết kế tham số PID theo phương pháp Zeigler – Nichols.
d) Kết luận
Các thành phần P, I, và D trong bộ điều khiển PID (số) có ý nghĩa rất cụ thể và rõ
ràng. Trong bài toán điều khiển bám (theo giá trị đặt), thành phần tỷ lệ P phản ứng lại
ngay với sai lệch, không cần "nhớ" đáp ứng trước đó như thế nào, nhờ vậy mà nó tạo ra
đáp ứng nhanh và kịp thời. Thành phần tích phân I là thành phần "có nhớ", nó lưu lại giá
trị điều khiển của vòng lặp trước sau đó điều chỉnh thêm vào hay bớt đi một lượng nào đó
(do hệ số K_{i} và độ lớn của sai số quyết định) để tạo ra tín hiệu điều khiển cho vòng

155
lặp tiếp theo cho đến khi sai lệch bằng 0. Thành phần D cũng là một thành phần "có nhớ",
nó so sánh mức độ chênh lệch của sai lệch ở vòng lặp hiện tại và sai lệch được lưu ở
vòng lặp trước đó để đưa ra tín hiệu điều khiển của riêng mình. Khi độ chênh giữa sai
lệch của hai chu kỳ điều khiển kế tiếp càng lớn thì tín hiệu điều khiển ra của nó càng lớn
(bản chất của đạo hàm). Còn nếu sai lệch của chu kỳ điều khiển hiện tại cũng giống như
sai lệch ở chu kỳ điều khiển trước (nghĩa là sai lệch vẫn còn nhưng không thay đổi) thì
tín hiệu điều khiển ra của nó bằng 0.
Như vậy, ba thành phần P, I, và D trong một mạch vòng điều khiển cũng tương tự
như 7 nốt nhạc trong một bản nhạc. Bằng cách phối hợp các thành phần đó với những tỷ
lệ khác nhau chúng ta cũng có thể tạo ra một "bản nhạc" điều khiển với các "giai điệu"
khác nhau. Nếu phối hợp tốt sẽ tạo ra một bản nhạc như mong muốn và êm ái. Còn nếu
phối hợp không khéo thì sẽ tạo ra một bản nhạc uốn éo, giật cục với giai điệu khó có thể
biết trước được.

4.2. CÁC TẬP LỆNH XỬ LÝ THUẬT TOÁN PID


4.2.1. Bộ điều khiển PID_Compact
Lệnh được sử dụng với các thuật toán PID theo kiểu đa dụng, được tích hợp sẵn bộ
tự chình (auto-turning) cho cả chế độ Auto và chế độ Manual. Lệnh thực hiện với các chế
độ như:
Inactive Ngắt hoạt động (Mode/State = 0)
Pretuning Tiền tinh chỉnh (Mode/State = 1)
Fine tuning Tinh chỉnh (Mode/State = 2)
Automatic mode Chế độ tự động (Mode/State = 3)
Manual mode Chế độ chỉnh bằng tay (Mode/State = 4)
Substitute output value with error Giá trị ngõ ra khi có lỗi xảy ra (Mode/State = 5)
monitoring
a) Thuật toán điều khiển PID_Compact
PID_Compact là bộ PIDT1 với anti – windup và trọng số P và D. Công thức hoạt
động của thuật toán PID được thể hiện như sau:
 1 TD  s 
Y  K p (b  w  x)  (w  x)  (c  w-x) 
 TI  s a  TD  s  1 
Trong đó:
Y Giá trị ngõ ra của thuật toán PID
Kp Độ lợi gain

156
s Toán tử laplace
b Trọng số của khâu P
w Giá trị cài đặt mong muốn – Setpoint Value
x Giá trị quá trình của hệ thống – Process Value
TI thời gian tích phân
TD Thời gian vi phân
a Hệ số trễ của khâu D (T1 = a*TD)
c Trọng số của khâu D
b) Sơ đồ khối của lệch PID_Compact

Hình 4.3. Sơ đồ khối của lệnh PID_Compact

157
Hình 4.4. Sơ đồ khối của lệnh PID_Compact với Anti – Windup
c) Gọi lệnh PID_Compact
Đầu tiên mở tia portal lên sau đó tạo project mẫu pid vói cpu s7-1200. Tiếp theo vào
mục Program Block rồi chọn add new block.

Lệnh xử lý PID_Compact cần được gọi trong OB ngắt chu kỳ với thời gian không
đổi.
Chọn mục Cyclic Interrupt, ở mục Cyclic Time là thời gian cập nhật của khối này
bạn nhập thời gian vào, nếu nhập càng nhỏ thì thời gian cập nhật càng nhanh.

158
Khởi động và cài đặt lệnh PID_Compact

Sau khi nhập lệnh xong, bấm vào biểu tượng khoan đỏ như trên hình để cài đặt
thông số bộ PID, ở mục đầu tiên Controller type nên quan tâm tới dạng điều khiển và nên
đánh dấu tích vào mục Enable last mode after cpu restart.

159
Tiếp theo ở phần Input/ output parameters chọn kiểu ngõ vào là ô nhớ hay ngõ vào
analog, ngõ ra là ô nhớ, ngõ ra analog hay dạng pwm.

Phần PID Parameters bấm vào để cài đặt thông số cho bộ pid.

Khi đánh dấu tích vào mục Enable manual Entry là cài đặt thông số bằng tay, còn
mặc định thì bộ thông số này sẽ dò tự động.
Sau khi nhập lệnh vào cài đặt thông số cho bộ pid thì bấm vào biểu tượng khoan
tròn màu vàng ở lệnh pid để tiến hành kích hoạt lệnh pid hoạt động.

160
Thao tác kích hoạt này chỉ thực hiện 1 lần bởi vì ở phần trên ta đã đánh dấu tích
vào mục Enable last mode after cpu restart nên những lần sau khi cpu khởi động thì lệnh
pid sẽ tự chạy luôn.
Trong ví dụ như trên hình lệnh pid có setpoint là 90 có nghĩa là 90%, ngõ vào input
là ô nhớ MD0, ngõ ra là MD4. Lưu ý tất cả dữ liệu để ở dạng số thực Real.
4.2.2. Bộ điều khiển PID_3Step
Lệnh PID_3Step được sử dụng cho các đối tượng điều khiển có tích hợp các bộ tự
chỉnh (self turning) như: van điện từ (valve), cơ cấu chấp hành actuator. Lệnh PID_3Step
cung cấp thêm 2 ngõ ra theo kiểu Boolean. Lệnh thực hiện với các chế độ như:
Chế độ Inactive Mode/State = 0
Chế độ Pretuning Mode/State = 1
Chế độ Fine tuning Mode/State = 2
Chế độ Automatic mode Mode/State = 3
Chế độ Manual mode Mode/State = 4
Chế độ Approach substitute output value Mode/State = 5
Chế độ Transition time measurement Mode/State = 6
Chế độ Error monitoring Mode/State = 7
Chế độ Approach substitute output value Mode/State = 8
with error monitoring

161
Chế độ Manual mode without endstop Mode/State = 9
signals
a) Thuật toán PID_3Step
PID_3Step là bộ PIDT1 với anti-windup và trọng số là P và D. Công thức của thuật
toán được thể hiện như sau:
 1 TD  s 
Y  K p  s  (b  w  x)  (w  x)  (c  w-x) 
 TI  s a  TD  s  1 
Trong đó:
Y Giá trị ngõ ra của thuật toán PID
Kp Độ lợi gain
s Toán tử laplace
b Trọng số của khâu P
w Giá trị cài đặt mong muốn – Setpoint Value
x Giá trị quá trình của hệ thống – Process Value
TI thời gian tích phân
TD Thời gian vi phân
a Hệ số trễ của khâu D (T1 = a*TD)
c Trọng số của khâu D

b) Sơ đồ khối của lệnh PID_3Step

162
Hình 4.5. Sơ đồ khối không có tín hiệu phản hồi

163
Hình 4.6. Sơ đồ khối có tín hiệu phản hồi

Hình 4.7. Sơ đồ khối của lệnh PIDT1 với Anti-Windup


Khởi động lệnh PID_3Step
Khi CPU khởi động, lệnh PID_3Step bắt đầu chế độ hoạt động đã được lưu trước đó
trong tham số Mode
Để chuyển sang chế độ “Inactive” trong quá trình khởi động, cần phải thiết lập tham
số RunModeByStarup = FALSE

164
4.2.3. Bộ điều khiển PID_Temp
Lệnh PID_Temp được sử dụng để điều chỉnh đối tượng chuyên về xử lý nhiệt độ.
Bộ điều khiển PID_Temp có thể sử dụng thực hiện đốt nóng (heating) thuần túy hoặc cả
chế độ lam nóng và làm lạnh (heating/cooling). Lệnh có thể thực hiện các chế độ:
Chế độ Inactive Mode/State = 0
Chế độ Pretuning Mode/State = 1
Chế độ Fine tuning Mode/State = 2
Chế độ Automatic mode Mode/State = 3
Chế độ Manual mode Mode/State = 4
Chế độ Substitute output value with error Mode/State = 5
monitoring
a) Thuật toán điều khiển PID_Temp
PID_Temp là bộ PIDT1 với anti-windup và trọng số cho P và D. Công thức hoạt
động của thuật toán PID được thể hiện như sau:
 1 TD  s 
Y  K p  (b  w  x)  (w  x)  (c  w-x) 
 TI  s a  TD  s  1 
Trong đó:
Y Giá trị ngõ ra của thuật toán PID
Kp Độ lợi gain
s Toán tử laplace
b Trọng số của khâu P
w Giá trị cài đặt mong muốn – Setpoint Value
x Giá trị quá trình của hệ thống – Process Value
TI thời gian tích phân
TD Thời gian vi phân
a Hệ số trễ của khâu D (T1 = a*TD)
c Trọng số của khâu D
b) Sơ đồ khối của lệnh PID_Temp

165
Hình 4.8. Sơ đồ khối của PID_Temp

Hình 4.9. Sơ đồ khối của lệnh PIDT1 với anti-windup

166
Khởi động lệnh PID_Temp
Khi CPU khởi động, lệnh PID_Temp bắt đầu chế độ hoạt động đã được lưu trước
đó trong tham số Mode
Để chuyển sang chế độ “Inactive” trong quá trình khởi động, cần phải thiết lập tham
số RunModeByStarup = FALSE
PID_Temp mặc định sử dụng với ngõ ra dụng đốt nóng – heating. Giá trị ngõ ra của
thuật toán PID (PidOutputSum) được chuyển đổi tương ứng với ngõ ra thực tế để điều
khiển việc đốt nóng, có thể sử dụng định dạng ngõ ra tùy chọn: OutputHeat_PWM,
OutputHeat hoặc OutputHeat_PER.
Khi Config.ActiveCooling = TRUE ngõ ra để thực hiện chế độ làm lạnh – cooling
được kích hoạt. Giá trị ngõ ra ở trạng thái dương đáp ứng việc đốt nóng, giá trị âm đáp
ứng việc làm lạnh. Có thể lựa chọn ngõ ra làm lạnh với các lựa chọn là: OutputCool,
OutputCool_PWM, OutputCool_PER.

4.3. THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÒNG KÍN CHO BÀI TOÁN ĐIỀU
KHIỂN ỔN ĐỊNH MỨC NƯỚC.
4.3.1. Đặt vấn đề
Hệ thống gồm: 1 bồn nước, 1 cảm biến siêu âm đọc tín hiệu trả về từ 0-10V tương ứng
chiều dài 0-100% của bồn nước, 1 bơm tuyến tính nhận tín hiệu từ 0-10V, 1 van xả
on/off, 1 nút start, 1 nút stop.
Yếu cầu:
- Bấm start hệ thống hoạt động, bấm stop hệ thống dừng.
Khi hệ thống chạy bơm được 70% giá trị đặt cho valve xả hoạt động.

167
Lập trình PLC S7 – 1200 điều khiển mô hình bồn nước hoạt động theo quy trình
sau:
- Nhấn nút Start cho phép hệ thống hoạt động
- Nhấn Stop hệ thống dừng hoạt động
- Tất cả giá trị cài đặt SP, giá trị phản hồi PV, sai số ER, độ lợi Gian, thời gian Ti,
Td… có thể thay đổi thông qua màn hình điều khiển HMI/SCADA
- Khi hệ thống chạy được 70% giá trị SP (0.7*Setpoint) thì cho van xả hoạt động.
4.3.2. Yêu cầu và kết nối phần cứng
a) Yếu cầu phần cứng
- CPU S7 -1200: Tích hợp sẵn I/O và AI.
- Modul xử lý ngõ ra tương tự: sử dụng SB hoặc modul chuẩn
- Các cơ cấu chấp hành đáp ứng yêu cầu bài toán đặt ra.
b) Kết nối phần cứng
- Start_PID có địa chỉ: I8.4
- Stop_PID có địa chỉ: I8.5.
- Valve_Out có địa chỉ: Q8.5.
- Ultra_Sensor nhận tín hiệu từ cảm biến siêu âm: IW80.
- Pump_Analog gửi tín hiệu điều khiển cho biến tần: QW80.
4.3.3. Hướng dẫn thực hiện bài toán
a) Các bước khai báo tham số biến và lập trình khởi động cho PID
Bước 1: Cấu hình phần cứng bao gồm modul CPU S7 1200, modul AI/AO theo yêu
cầu công nghệ.
Bước 2: Tạo Tag-Symbol theo phần cứng: PLC Tags  Add new tag table đặt
tên là PID tag.

Bước 3: Tạo khối dữ liệu PID_Data [DB12]: Program block Add new block
Data block, đặt tên PID_Data, chọn kiểu (type) là Global DB  chọn OK để hoàn thành
Bước 4: Khai báo các thông số và kiểu dữ liệu muốn sử dụng.

168
Bước 5: Khởi tạo hàm PID_Control_Paramter [FC15] để lập trình điều khiển hoạt
động của Van xả và kích hoạt lệnh PID.

169
Bước 6: Gọi hàm PID_Control_paramter [FC15] trong Main[OB1].

b) Cấu hình đối tượng TO cho PID_Compact


Mỗi một bộ điều khiển PID cần phải được cấu hình và khai báo tương ứng với một
đối tượng kỹ thuật TO. Đối tượng kỹ thuật TO sử dụng để cấu hình các thông số PID –
configuration, chạy thử và kiểm tra kết quả từ các thông số đã lựa chọn –
Commissioning.
Bước 1: Khởi tạo đối tượng kỹ thuật TO Technology  Add new object  PID 
PID Control  Compact PID  Đặt tên và chọn Version được hỗ trợ tương ứng với cấu
hình của CPU và Version của TIA Portal  OK.

170
Bước 2: Cài đặt và cấu hình cho chế độ Basic Settings.
Controller type: Cho phép người lập trình lựa chọn đối tượng điều khiển và kiểu giá
trị vào/ra cho bộ điều khiển PID.

171
- Có thể lựa chọn kiểu điều khiển PID theo tỉ lệ %, nhiệt độ, ánh sáng, lưu lượng,
dòng, áp…
- Đối với các phiên bản nhỏ hơn TIA Protal V13: Chế độ Enable last mode after
CPU restart giúp người dùng giữ được trạng thái hoạt động của bộ PID khi đã cấu hình
hoàn chỉnh xong, dù CPU khởi động lại hay mất điện
- Đối với TIA V14 trở lên cho phép người thiết kế lựa chọn chế độ hoạt động của
PID khi CPU khởi động lại.
Input/Output Paramters: Cho phép lựa chọn tham số phẩn hồi PV và ngõ ra điều
khiển PID là kiểu I/O analog hoặc giá trị được Scale bởi người dùng.

Kiểu dữ liệu Input_PER và Output_PER cho phép sử dụng trực tiếp các thanh ghi
của ngõ vào/ra tương tự (AIW/AQW).
Kiểu dữ liệu Input và Output thì người lập trình cần phải chuyển đổi dữ liệu tương
tự.
Bước 3: Cài đặt cấu hình cho chế độ Process value settings.
- Process value limits: Cho phép cài đặt và lựa chọn giá trị giới hạn trên/ dưới cho
giá trị quá trình hoạt động.

- Process value Scaling: Cho phép chọn tỉ lệ chuyển đổi tương ứng với số hóa.

172
Bước 4: Cài đặt và cấu hình cho chế độ Advanced settings.
- Process value monitoring: Cho phép người lập trình giám sát tầm giá trị quá trình
hoạt động và các giá trị cảnh báo mức thấp và mức cao.

- PWM limits: Cho phép người lập trình cài đặt thời gian tắt/mở nhỏ nhất ngõ ra
PID theo định dạng điều chế độ rộng xung.

- Output value limits: Cho phép người lập trình cài đặt giá trị nhỏ nhất và lớn nhất
có thể xuất ra.
- Reaction to error: Cho phép người lập trình tùy chỉnh ngõ ra PID khi có lỗi xảy
ra trong quá trình thực hiện bộ điều khiển PID.

173
- PID Parameters: Cho phép người dùng chọn chế độ PI/PID để hoạt động hay cài
đặt các giá trị PID bằng manual.

Bước 5: Thực hiện biên dịch Compile và lưu chương trình trước khi tiếp tục các
bước tiếp theo.
c) Khai báo PID_Compact trong OB ngắt chu kỳ
Bước 1: Khởi tạo OB ngắt chu kỳ: Program Block  Add new block 
Organization block (OB)  Cyclic interrupt  Chọn thời gian lấy mẫu (mặc định
100ms)  OK.

174
Bước 2: Khai báo khối điều khiển PID_Compact và các tham số cần thiết để điều
khiển trong Cyclic interrupt [OB30]: Network 1  Instructions  Technology  PID
Control  Compact PID.

- Khi khai báo bộ điều khiển PID_Compact thì phần mềm TIA Portal tự động tạo
Instane DB cho khối hàm, và đây chính là đối tượng TO cho PID_Compact.
Bước 3: Thực hiện khai báo đối tượng TO và các tham số cần thiết cho bộ điều
khiển PID_Compact.
- Kéo đối tượng kỹ thuật TO của PID_Compact từ trình biên soạn Technology
Object đưa vào <???> trên giao diện lệnh PID_Compact.

- Các giá trị cài đặt, giá trị quá trình được hiển thị và cài đặt trên giao diện màn hình
HMI/SCADA.
- Trong cấu hình của đối tượng kỹ thuật TO sử dụng chế độ I/O nên người lập trình
sử dụng trực tiếp địa chỉ AI và AQ mà không cần phải dùng hàm chuyển đổi tương tự.

175
- Các thám số khác như State, Error giúp người lập trình biết được chế độ hoạt động
của PID_Compact và các trạng thái báo lỗi để hiệu chỉnh PID cho phù hợp.
Lưu ý:
- Chế độ hoạt động của PID có thể thay đổi trong quá trình chạy thông qua thám số
ModeActive và Mode theo mô tả các tham số ngõ vào ra của PID_Compact.
- Tham số ngõ ra Output của PID_Compact mặc định có tầm giá trị từ 0 – 100% cho
nên người lập trình càn lưu ý khi muốn hiển thị lên HMI/SCADA.
- Có thể truy vấn tín hiệu tương tự trực tiếp với IW hoặc PIW. Ví dụ có thể sử dụng
IW80 hoặc PIW80.
d) Thực hiện Commissioning cho bộ điều khiển PID
Bước 1: Sau khi thực hiện lập trình đầy đủ theo yêu cầu thì thực hiện biên dịch lại
toàn bộ phần cứng và phần mềm trước khi tải chương trình xuống CPU.
Bước 2: Thực hiện tải chương trình xuống CPU.
Bước 3: Chọn PLC  Technology Object  DB của PID_Compact 
Commissioning  chọn biểu tượng Monitor All để thực hiện giám sát và chọn chế độ
hoạt động cho bộ điều khiển PID.
- Measurement: Cho phép lựa chọn thời gian lấy mẫu để giám sát đồ thị hoạt động
của PID với sampling time có thời gian nhỏ nhất là 0.3s.

176
- Tuning mode: Cho phép chọn chế độ tự chỉnh với hai chế độ: Pretuning và Fine
tuning.

e) Quy trình thực hiện Auto Tuning của PID


PID Auto tuning hay còn gọi là quá trình tự điều chỉnh để bộ điều khiển PID tự dò
các tham số Gain, Ti, Td. Bộ PID của PLC s7 -1200 hỗ trợ người lập trình hai chế độ
Tuning.
- Pretuning: Phân tích quá trình đáp ứng của PID đối với hệ thống thực tế. Hay nói
đơn giản hơn, quá trình Pretuning thực hiện việc dò các bộ số PID đáp ứng nhanh nhất có
thể đối với quá trình xác lập hệ thống.
- Fine Tuning: Phân tích các dao động của PID gây ra việc mất cân bằng tại giá trị
đặt. Hay nói đơn giản hơn, quá trình Fine tuning thực hiện dò các bộ số PID đáp ứng việc
xác lập quá trình cho hệ thống.
- Các bước để thực hiện Auto Tuning cho bộ điều khiển PID:
PRETUNING FINE TUNING CHÊ ĐỘ
KHỞI ĐỘNG PID PRETUNING FINE TUNING TỐI ƯU HÓA LẠI PLC
START STRAT AUTOMATIC

Để chế độ Pretuning hoạt động phải thỏa một trong hai điều kiện:
- Giá trị (SP – PV) >= 30%*(Giá trị Hi_lim – Lo_lim) của PV.
- Giá trị SP – PV >= 50% giá trị SP
Để chế độ Fine Tuning hoạt động phải thỏa mãn các điều kiên sau:
- Bộ điều khiển PID hoạt động trong tầm giới hạn vận hành.
- Và không có nhiễu không mong muốn xảy ra.
Sauk hi thực hiện quá trình Pretuning và Fine tuning hoàn thiện hệ thống sẽ kết thúc
và người lập trình cần lưu trữ lại tham số PID vào trong project bằng thao tác Upload PID
Parameter.

Đồng thời kích hoạt chế độ Enable manual entry để thay đổi các giá trị của PID
(Nếu cần).

177
Để đưa các tham số PID lên giao diện màn hình HMI/SCADA có thể kiểm tra địa
chỉ vùng nhớ như sau: PLC  Technology  chọn đối tượng kỹ thuật TO của PID…
 chuột phải  Open DB editor  Retain  CtrlParams…
Lưu ý:
- Nếu trong quá trình hoạt động người lập trình xác định được nhiễu ảnh hưởng tới
hệ thống thì có thể thực hiện bù nhiễu với tham số Disturbance.
- Có thể sử dụng lệnh MOVE để nạp các giá trị trạng thái cho bộ PID. Để thực hiện
chạy Fine Tuning có thể viết:

Ngoài ra người lập trình có thể tìm hiểu thêm các tập lệnh phụ trợ được tích hợp
thêm như Polyline, SplitRange và RampFunction để tăng tính hiệu quả khi sử dụng các
bộ điều khiển PID.

178
4.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4
Câu 1. Thuật toán PID là gì? Khi nào chúng ta sử dụng thuật toán này trong quá trình
điều khiển?
Câu 2. Bộ PID bao gồm những thành phần gì? Mỗi thành phần ảnh hưởng như thế nào
tới quá trình điều khiển?
Câu 3. Để cải thiện đáp ứng của hệ thống thì chúng ta cần thay đổi những thông số nào?
Nếu giá trị PV lúc nào cũng nhỏ hơn SP thì chúng ta cần thay đổi thông số nào?
Câu 4. Nếu sai số xác lập lớn thì chúng ta cần thay đổi những thông số nào? Thay đổi
như thế nào?
Câu 5. Tại sao chúng ta phải rời rạc hóa tín hiệu? Vì sao lại phải gọi bộ điều khiển PID
trong những khối OB ngắt chu kỳ? có thể gọi trong OB Main được không? Tại sao?
Câu 6. Khi muốn điều khiển hệ thống nhiệt thì chúng ta có thể sử dụng những bộ điều
khiển PID nào?
Câu 7. Các bước thực hiện thiết lập một bộ điều khiển PID hoạt động như thế nào để sau
khi CPU tăt nguồn và khởi động lại vẫn hoạt động tốt
Câu 8: Điều khiển ON/OFF động cơ có chỉ báo
Một động cơ điện 3 pha được điều khiển bằng một PLC S7-300. Khi nhấn nút S2
(thường hở) thì động cơ sẽ chạy. Khi nhấn nút S1 (thường đóng) thì động cơ sẽ dừng lại.
Các chế độ hoạt động chạy và dừng được báo bằng 2 đèn báo H1 và H2.

Câu 9: Điều khiển đảo chiều quay động cơ


Một động cơ điện 3 pha cần được điều khiển đảo chiều. Khi ấn S1 (thường hở)
thì động cơ sẽ quay phải và đèn H1 sáng báo động cơ đang quay phải. Khi nhấn nút S2
(thường hở) thì động cơ quay trái và đèn H2 sáng báo động cơ đang quay trái. Động cơ
có thể dừng bất cứ lúc nào nếu ấn nút dừng S3 (thường đóng) hoặc động cơ xảy ra sự cố
179
quá dòng làm cho tiếp điểm của thiết bị bảo vệ Q1 tác động (tiếp điểm 13, 14 của Motor
CB). Khi động cơ dừng đèn báo H3 sáng.

Câu 10: Điều khiển cơ cấu máy dập


Một cơ cấu dập trong một máy dập nguyên liệu (ví dụ dập ra các vỏ hộp) có thể
chuyển động nâng lên hay hạ xuống nhờ một động cơ điện M1 quay 2 chiều. Để đảm
bảo an toàn cho tay người vận hành thì chỉ khi nào người vận hành dùng cả 2 tay nhấn
đồng thời 2 nút nhấn S1 (NO) và S2 (NO) thì bàn dập mới hạ xuống. Khi hạ
xuống đụng công tắc hành trình giới hạn dưới S3 (NC) thì tự chạy nâng lên cho tới
khi đụng công tắc hành trình giới hạn trên S4 (NC) thì dừng lại. Chu kỳ lặp lại khi nào
người vận hành lại nhấn 2 nút nhấn S1 và S2.

180
Câu 11: Điều khiển cửa lò
Một cửa lò có chức năng “mở, đóng và ở vị trí bất kỳ” được điều khiển bởi một
cylinder. Ở vị trí bình thường thì cửa lò được đóng.
- Khi tác động nút nhấn “S1” (NO) thì cửa lò mở ra và khi đến công tắc hành trình
giới hạn mở cửa “S4” (NC) thì dừng lại.
- Nếu cửa đã mở ra ở vị trí giới hạn mở cửa “S4” thì sẽ tự động đóng lại sau thời
gian 6s hoặc nút nhấn đóng cửa “S2” (NO) được ấn.
- Khi đến giới hạn cửa đóng “S5” (NC) thì việc đóng cửa kết thúc.
- Quá trình đóng cửa dừng ngay lập tức nếu cảm biến L1 (NO) bị tác động. Nhưng
nếu cảm biến quang không bị tác động thì quá trình đóng cửa vẫn tiếp tục.
- Khi cửa lò đang dịch chuyển có thể dừng bằng cách ấn nút dừng “S3” (NC).

Câu 12: Kiểm soát chỗ cho Garage ngầm


Một Garage ngầm có 20 chỗ đậu xe. Ở ngõ vào có hai đèn báo: Đèn đỏ báo hiệu
Garage đã hết chỗ, đèn xanh báo hiệu Garage còn chỗ trống. Đường vào và đường ra chỉ
cho phép một xe chạy. Hai cảm biến S1 và S2 được đặt gần nhau để nhận biết xe vào và
ra:

181
Câu 13: Hệ thống đóng chai
Nước được bơm vào bồn bằng bơm và xả vào các chai liên tục thông qua van. Chai
được vận chuyển đến và đi bằng băng chuyền

Nguyên lý hoạt động:


Nhấn nút PM, hệ thống hoạt động. Bơm M được điều khiển chạy để bơm nước vào
bồn cho đến khi cảm biến B2 được tích cực. Nếu mực nuớc trong bồn bị giảm xuống B1,
hệ thống bơm được điều khiển để tiếp tục bơm đầy. Chai được liên tục đưa vào dây
chuyền và chạy cho đến khi chạm cảm biến B3, dây chuyền dừng lại, van được mở ra cho
đến khi cảm biến B4 xác định mức đầy chai, dây chuyền lại được cho phép chạy cho đến
khi chai chạm cảm biến B3. Hệ thống hoạt động liên tục như thế cho đến khi nhấn nút
SS2. Hãy thiết kế, lập trình chương trình điều khiển sử dụng PLC S7-200?
Câu 14: Đảo chiều quay động cơ có khống chế thời gian
Một động cơ điện 3 pha có thể đảo chiều quay. Khi ấn nút nhấn quay phải “S1”
(NO) thì động cơ quay phải, đèn “H1” sáng báo động cơ quay phải. Khi ấn nút nhấn quay
trái “S2” (NO) thì động cơ quay trái, đèn “H2” sáng báo động cơ quay trái. Động cơ có
thể dừng bất cứ lúc nào nếu ấn nút nhấn dừng “S3” (NC) hoặc xảy ra sự cố. Khi dừng thì
đèn báo “H0” sáng.

182
Việc đảo chiều quay không thể thực hiện được sau khi nút dừng “S3” được ấn và
chưa hết 5s chờ cho động cơ dừng hẳn. Đèn báo chờ đợi “H3” sẽ chớp tắt với tần số 1Hz
trong thời gian chờ động cơ dừng hẳn.
Câu 15: Thiết bị rót chất lỏng vào thùng chứa

Khi bật công tắc “S1” thì thùng từ kho chứa thùng rỗng sẽ được đưa vào băng tải,
và băng tải vận chuyển thùng hoạt động. Khi một thùng rỗng đến dưới bồn chứa (được
nhận biết bởi cảm biến “S2”) thì băng tải dừng. Van “Y1” mở rót chất lỏng trong bồn vào
thùng. Sau thời gian 5s thì thùng chứa đầy. Van “Y1” đóng lại, một thùng rỗng sẽ được
đưa vào băng tải và băng tải tiếp tục di chuyển cho đến khi nào thùng đến dưới bồn chứa
thì dừng lại. Quá trình cứ lặp lại. Nếu chất lỏng trong bồn chứa hết thì còi “H1” sẽ báo
với tần số 1Hz. Nếu thùng chứa trong kho hết thì băng tải cũng tự động dừng sau thời
gian 15s kể từ thùng cuối cùng được rót đầy.
Chú ý: “Y2” là một solenoid được sử dụng để chặn thùng trong kho. Để thùng rớt vào
băng tải chỉ cần solenoid có điện trong thời gian 100ms.

183
CHƯƠNG 5
THIẾT KẾ MẠNG TRUYỀN THÔNG SỬ DỤNG
PLC SIEMENS
Mục tiêu chương 5
Trong chương này, chúng ta cùng tìm hiểu về tổng quan mạng truyền thông
MODBUS, PROFINET, các cách thức truyền thông Modbus, Profinet theo các chuẩn
ISO, TCP/IP, Client – Server,… các tập lệnh hỗ trợ truyền thông, các giao thức Protocol,
và thực hành giao tiếp truyền thông Modbus, Profinet giữa các CPU S7 – 1200/1500 một
cách đơn giản nhất.

5.1. MẠNG TRUYỀN THÔNG MODBUS


5.1.1. Tổng quan về hệ thống mạng truyền thông MODBUS
Modbus là một giao thức giao tiếp sử dụng Tin nhắn (Message) thuộc lớp ứng
dụng (Application), tầng 7 của mô hình OSI hay tầng 5 của mô hình TCP/IP.
Modbus sử dụng kiểu giao tiếp Client/Server hay Master/Slave giữa các thiết bị
thông qua Bus hay đường truyền mạng.

Hình 5.1. Tầng ứng dụng Modbus


Các thiết bị giao tiếp Modbus với nhau theo cách thức dưới dạng Tin nhắn (Yêu
cầu/Trả lời - Request/Reply). Client sẽ gửi Request. Server sẽ cung cấp các dịch vụ hay
thực hiện các chức năng tương ứng dựa vào các Mã chức năng (Function code) và gửi
lại Reply chứa các thông tin cần thiết.
Các Mã chức năng của Modbus là thành phần của PDU của Tin nhắn trong quá
trình Request/Reply của bên phát và bên thu.
Các dạng Modbus thông dụng hiện nay:

184
- Modbus RTU (Serial): RS-232, RS-485, …
- Modbus TCP/IP
- Modbus ASCII
Mỗi dạng Modbus đều có các đặc điểm khác nhau. Tùy theo thiết bị và yêu cầu của
người sử dụng, các loại Modbus sẽ được lựa chọn.
Modbus RTU
Dữ liệu được mã hóa theo hệ nhị phân, và chỉ cần một byte để biểu diễn cho một
byte dữ liệu gốc. Đây là chuẩn giao tiếp lý tưởng đối với RS-232 hay mạng RS- 485 đa
điểm, tốc độ từ 1200 đến 115200 Baud/s. Tốc độ phổ biến nhất là 9600, 38400 hay
115200 Baud/s. Đây là chuẩn Modbus thông dụng nhất. Do Tin nhắn được mã hóa nhị
phân nên không thể đọc được trong quá trình giám sát.
Modbus TCP/IP
Modbus TCP/IP đơn giản là giao thức Modbus sử dụng mô hình TCP/IP. Trong đó,
giao thức Modbus thuộc lớp ứng dụng, xác định dữ liệu cần truyền, TCP là lớp vận
chuyển đảm bảo việc truyền nhận dữ liệu chính xác đến đúng địa điểm thông qua địa chỉ
IP của thiết bị. Với Modbus TCP/IP, dữ liệu được đóng gói trong một gói tin TCP/IP
(gồm dữ liệu và các header) và được truyền qua Ethernet.
Modbus ASCII
Mọi thông tin dữ liệu được chuyển đổi sang dạng Hexadecimal (hệ thập lục phân),
và sử dụng bảng mã ASCII. Việc chuyển đổi này khiến cho một byte dữ liệu gốc thực tế
cần hai byte để biểu diễn, gấp đôi so với Modbus RTU hay Modbus TCP/IP.
Trái ngược với Modbus RTU, người dùng khi sử dụng Modbus ASCIIthì có thể đọc
được nội dung tin nhắn trong quá trình giám sát.
Tuy nhiên, do Modbus ASCII mang nhiều thông tin mã hóa lệnh hơn nên
ModbusASCIIcó tốc độ chậm hơn Modbus RTUvà Modbus TCP/IP, vì vậy thường
không được sử dụng nhiều trong thực tế.
Modbus Gateway
Ngoài ra, khi sử dụng các thiết bị với giao thức Modbus, đặc biệt là Modbus RTU
và Modbus TCP, người dùng sẽ được hỏi về Modbus Gateway.
Vậy Modbus Gateway là gì?
Modbus Gateway hay còn được gọi là Cổng giao tiếp Ethernet (Ethernet
communication gateway). Đây là bộ chuyển đổi giữa Modbus RTU/ASCII và Modbus
TCP/IP. Thông thường Modbus Gateway sẽ có 1 cổng RS-232/RS- 485 dùng cho
Modbus RTU/ASCII và 1 cổng Ethernet dùng cho Modbus TCP/IP.
Modbus TCP/IP có các ưu điểm vượt trội hơn so với Modbus RTU, ví dụ như việc
sử dụng cáp Ethernet tiết kiệm chi phí hơn so với sử dụng cáp cho RS- 232 hay RS-485,

185
truyền được xa hơn và kết nối được nhiều Client hơn. Trong thực tế, nhiều thiết bị được
điều khiển chỉ được hỗ trợ 1 loại Modbus RTU hoặc Modbus TCP/IP khiến cho việc kết
hợp các thiết bị với nhau trở nên khó khăn. Modbus Gateway thường được sử dụng như
một bộ phiên dịch kết nối các thiết bị vào hệ thống Modbus chung.
5.1.2. Cấu trúc giao thức của Modbus
a) Mô tả giao thức
Giao thức Modbus được định nghĩa là một đơn vị dữ liệu giao thức (Protocol Data
Unit - PDU) đơn giản nằm trong Lớp ứng dụng trong mô hình tham chiếu OSI hay
TCP/IP, độc lập với các lớp dưới.
Việc áp dụng Modbus trên các đường bus (Ví dụ : RS-485) hay đường mạng (Ví dụ:
Ethernet) cụ thể có thể bổ sung thêm một số trường dữ liệu như phần “Thông tin bổ
sung” hay phần “Kiểm tra lỗi” để tạo thành đơn vị dữ liệu ứng dụng (Application Data
Unit - ADU).
Cấu trúc PDU và ADU của Modbus được mô tả cụ thể như bên dưới:

Hình 5.2. Cấu trúc cơ bản của ADU và PDU


PDU bao gồm các vùng dữ liệu:
❖ Trường mã chức năng (Function code field): Trường mã chức năng của Modbus
PDU được mã hóa bằng một byte. Mã chức năng có giá trị hợp lệ nằm trong phạm vi 1 ...
255 thập phân (phạm vi 128 - 255 được dành riêng và được sử dụng cho các phản hồi
ngoại lệ). Khi một thông điệp được gửi từ Client đến Server, mã chức năng này sẽ cho
Server biết loại hành động nào sẽ thực hiện
❖ Trường dữ liệu (Data field) : Trường Dữ liệu của thông điệp được gửi từ Client
đến Server chứa thông tin bổ sung mà Server sử dụng để thực hiện hành động được xác
định bởi mã chức năng. Dữ liệu này có thể bao gồm các mục như địa chỉ đăng ký, số
lượng mục cần xử lý và số byte dữ liệu thực tế trong trường.
ADU được xây dựng bởi người sử dụng giao thức Modbus. ADU có thể khác nhau
tùy theo loại Modbus. Có thể thêm vào một số thông tin bổ sung để Server có thể thực
hiện chính xác hành động được xác định bởi mã chức năng. Trong thực tế, thông tin có

186
thể bao gồm địa chỉ Client, địa chỉ thanh ghi cần thao tác, số lượng thanh ghi và số byte
dữ liệu trên bộ nhớ thiết bị.
Ví dụ dành cho việc đối chiếu các cấu trúc ADU tiêu biểu của Modbus RTU và
Modbus TCP/IP:

Hình 5.3. Cấu trúc của Modbus TCP/IP và Modbus RTU


Phần tiếp theo là các phép tính đơn giản của việc tính kích thước của các thành phần
trong một ADU.
Đầu tiên, kích thước của PDU được giới hạn bởi kích thước của gói tin chứa
Modbus được áp dụng với chuẩn vật lý là Serial.
Vì thế nên :
Kích thước PDU = 256 bytes - Địa chỉ máy chủ (ServerID) (1 byte) - CRC (2 byte)
= 253 bytes
Hiện nay Modbus được sử dụng trong các kết nối như RS-232/RS-485 hay TCP/IP
nên kích thước của một ADU có thể được tính toán như sau:
→ RS232 / RS485 ADU = 253 bytes + Server address (1 byte) + CRC (2 bytes) =
256 bytes.
→ TCP MODBUS ADU = 253 bytes + MBAP (7 bytes) = 260 bytes.
Trong quá trình truyền nhận:
❖ Nếu không có lỗi xảy ra, chức năng được yêu cầu trong Modbus ADU được xác
nhận là phù hợp, Server sẽ gửi lại thông tin phản hồi có chứa dữ liệu được yêu cầu đến
Client.

187
Hình 5.4. Truyền nhận bằng Modbus (Không có lỗi)
❖ Nếu có lỗi xảy ra, Server sẽ trả về một thông tin phản hồi chứa các thông báo về
lỗi đó.

Hình 5.5. Truyền nhận bằng Modbus (Khi gặp lỗi)


b) Mã hóa dữ liệu
Modbus sử dụng phương thức “big-Endian” để biểu diễn các địa chỉ và dữ liệu.
Trong cơ chế ”big-Endian” (xuất phát từ "big-end" nghĩa kết thúc lớn hơn), byte đầu tiên
trong chuỗi biểu diễn nhị phân sẽ được ghi trước. Điều này có nghĩa là khi sử dụng
Modbus để truyền đi một thông điệp có kích thước lớn hơn 1 byte thì thứ tự truyền các
byte sẽ như sau:
Kích thước Giá trị
16 - bits 0x1234 Byte được gửi đầu tiên là 0x12 sau đó đến 0x34
c) Mô hình dữ liệu (Data Model) của Modbus
Dữ liệu của Modbus được chia thành 4 loại chính với từng đặc điểm riêng biệt:
Loại dữ liệu Kiểu dữ liệu Quyền truy cập Mô tả

188
Discretes Input Single bit Read - Only Ngõ vào Digital (DI) của
hệ thống (Chỉ có thể đọc)
Coils Single bit Read - Write Ngõ ra Digital (DO) của
hệ thống (có thể đọc và
thay đổi giá trị)
Input Registers 16-bit word Read - Only Ngõ vào Analog (AI) của
hệ thống (chỉ có thể đọc)
Holding Registers 16-bit word Read - Only Thanh ghi giá trị của hệ
thống (có thể đọc và thay
đổi giá trị)
- Đối với từng loại dữ liệu, Modbus cho phép lựa chọn đến 65536 địa chỉ khác nhau
( 2^16 giá trị tương ứng với 2 byte ).
- Các hoạt động đọc hoặc ghi có thể thực hiện trên nhiều địa chỉ dữ liệu liên tiếp
nhau cùng lúc.
- Giới hạn kích thước dữ liệu phụ thuộc vào từng loại mã chức năng
- Modbus sẽ tham chiếu đến địa chỉ vật lý trong bộ nhớ của thiết bị
- Địa chỉ tham chiếu của Modbus PDU là số nguyên không dấu bắt đầu từ 0.
d) Cấu trúc tổ chức thanh ghi trên Modbus
Giao thức Modbus xác định địa chỉ của các thanh ghi theo nguyên tắc sau:
❖ Trong phần PDU, mỗi dữ liệu có thể được đánh dấu địa chỉ từ 0 đến 65535 ( 16-
bit interger).
❖ Trong mô hình dữ liệu của Modbus như đã giới thiệu ở phần trên, bao gồm 4 loại
dữ liệu riêng biệt, mỗi thanh ghi tương ứng từng loại dữ liệu sẽ đánh dấu địa chỉ từ
1 đến N. (N phụ thuộc vào từng loại Mã chức năng).
❖ Việc áp dụng mô hình dữ liệu của Modbus lên bộ nhớ vật lý của thiết bị sẽ phụ
thuộc vào nhà sản xuất thiết bị.
Ví dụ minh họa sau sẽ làm rõ cách mà Modbus PDU truy cập đến mô hình dữ liệu
của Modbus, cũng như việc ánh xạ mô hình dữ liệu của Modbus lên bộ nhớ của thiết bị:

189
Hình 5.6. Mô hình dữ liệu của Modbus
e) Cách thức hoạt động của Modbus
Quy trình làm việc của Modbus trên Server được mô tả theo sơ đồ như sau :

Hình 5.7. Quy trình làm việc của Modbus trên Server
Trong quá trình truyền nhận dữ liệu, có thể xảy ra các trường hợp sau đây:
- Server nhận được yêu cầu từ Client mà không có lỗi giao tiếp và có thể thực hiện
chức năng bình thường, Server sẽ trả về phản hồi bình thường chứa cácthông tin Client
yêu cầu .
- Server không nhận được yêu cầu từ Client do lỗi giao tiếp nên không thể thực hiện
chức năng . Không có phản hồi nào được gửi về Client. Client sẽ có 1 khoảng thời gian
chờ phản hồi từ Server (gọi là timeouts). Khi hết timeouts, Client sẽ báo lỗi hoặc tiếp tục
xử lý tác vụ khác tùy theo người sử dụng.
- Server nhận được yêu cầu từ Client và nhưng phát hiện lỗi giao tiếp (parity, LCR,
CRC,…) . Không có phản hồi nào được gửi về Client. Client sẽ có 1 khoảng thời gian
chờ phản hồi từ Server. Khi hết thời gian timeouts, Client sẽ báo lỗi hoặc tiếp tục xử lý
tác vụ khác tùy theo người sử dụng.

190
Server nhận được yêu cầu từ Client mà không có lỗi giao tiếp nhưng không thể xử
lý được các chức năng mà Client yêu cầu. Server sẽ trả về phản hồi ngoại lệ chứa các
thông tin về lỗi đó.

Hình 5.8. Modbus PDU


Một phản hồi ngoại lệ gồm hai thành phần như sau:
- Mã chức năng ngoại lệ (Exception Function Code): Trong một phản hồi bình
thường, Server sẽ gửi lại Mã chức năng của do Client yêu cầu. Tất cả các Mã chức năng
có bit đầu tiên bằng 0. Tuy nhiên, trong một phản hồi ngoại lệ, Server đặt MSB của Mã
chức năng thành 1 (Exception Function Code = Function Code + 0x80). Mã chức năng
này giúp Client có thể biết được đoạn phản hồi được gửi là một phản hồi ngoại lệ, nghĩa
là đang có lỗi xảy ra, và Client sẽ kiểm tra giá trị của Mã ngoại lệ.
- Mã ngoại lệ (Exception Code): Trong phản hồi bình thường, Server sẽ trả về dữ
liệu hoặc số liệu thống kê trong trường dữ liệu (bất kỳ thông tin nào được Client yêu
cầu). Tuy nhiên, trong một phản hồi ngoại lệ (có lỗi), Server sẽ trả về Mã ngoại lệ để mô
tả lỗi xảy ra ở Server.
5.1.3. Các chuẩn Modbus đang phổ biến - Modbus RTU
a) Định nghĩa Modbus RTU và cách thức hoạt động
Modbus RTU là một giao thức mở, dựa trên kiến trúc Client/Server được phát triển
bởi Modicon (ngày nay là Schneider Electric). Hiện nay, Modbus RTU được sử dụng
rộng rãi trong lĩnh vực Xây dựng hệ thống quản lý (Building Management System -
BMS) và Hệ thống tự động hóa trong công nghiệp (Industrial Automation System - IAS).

191
Trên thế giới, Modbus RTU đa số được sử dụng với chuẩn vật lý Serial (Nối tiếp)
như RS-232, RS-485 hay RS-422 (RS-232 và RS-485 sẽ được giải thích ở phần dưới).
Nhưng hiện nay, do nhu cầu tích hợp hệ thống với các thiết bị hỗ trợ kết nối Ethernet
được tăng cao nên người dùng đã dần sử dụng Modbus RTU qua Ethernet.

Hình 5.9. Cấu trúc tin nhắn của Modbus RTU


Như đã đề cập ở phần 5.1.2, cấu trúc của Modbus Message (ADU) gồm 3 phần
chính là phần Địa chỉ server, PDU và Kiểm tra lỗi.
RS-232/RS-485 ADU có tổng kích thước là 256 bytes gồm 253 bytes mặc định cho
PDU (1 byte Mã chức năng và 252 bytes cho Trường dữ liệu), 1 byte địa chỉ Server và 2
bytes Kiểm tra lỗi
Vai trò cụ thể của từng phần trong RS-232/RS-485 như sau:
- Địa chỉ Server: Xác định địa chỉ nơi dữ liệu thực hiện giao tiếp (Có thể là Client
hoặc Server tùy trường hợp). Địa chỉ này được quy định trong phạm vi từ 0 đến 255.
- Mã chức năng: Xác định chức năng Client yêu cầu. Phạm vi từ 0 - 255 ( Giá trị từ
128 - 255 được dành riêng và sử dụng cho các phản hồi ngoại lệ). Bài viết ở phần 2 đã có
giới thiệu về 1 số chức năng chính như 01: đọc Coils, 03: đọc Holding Register,…
- Trường dữ liệu: Nơi chứa thông tin dữ liệu truyền nhận giữa Client và Server.
- Kiểm tra lỗi (CRC): 2 byte kiểm tra lỗi của dữ liệu.
b) Cách thức hoạt động của Modbus RTU
Modbus RTU hoạt động dựa trên mô hình Client/Server,tức là một bên truyền các
yêu cầu đọc hoặc ghi dữ liệu (Client) và phía còn lại truyền dữ liệu cho Client (Server)
thông qua địa chỉ thanh ghi trên bộ nhớ của thiết bị. Phương thức truyền của Modbus
RTU được sử dụng nhiều trong những thiết bị có chuẩn giao tiếp vật lý là RS-232
hay RS-485.
c) Ứng dụng của Modbus RTU
Việc sử dụng Modbus RTU trong các hệ thống công nghiệp đã rất phổ biến.
Modbus RTU giúp việc kết nối tất cả các thiết bị trong hệ thống trở nên đơn giản chỉ với
2-3 dây tín hiệu. Dưới đây là ví dụ tổng quan một mô hình hệ thống sử dụng Modbus
RTU (chuẩn vật lý RS-485).

192
Hình 5.10. Hệ thống công nghiệp sử dụng Modbus RTU
Về cơ bản, mô hình kết nối trong hình 2 sẽ được triển khai như sau:
- Các tín hiệu Analog (tín hiệu tương tự) và các tín hiệu Digital sẽ được các thiết bị
của Modbus Server thu thập (Server 1, 2, 3, 4, 5...).
- PLC lúc này đóng vai trò như một Client được kết nối với các thiết bị có vai trò
như các Server thông qua chuẩn vật lý RS-485. Client sẽ yêu cầu các Server thực hiện
truyền, nhận dữ liệu để lấy thông tin và Client dùng những thông tin đó để điều khiển các
Server khác trong hệ thống (lúc này PLC sẽ đóng vai trò là Server).
- Kết nối giữa Client và các Server trong hệ thống thông qua chuẩn vật lý RS 485.
(Ở những mô hình ứng dụng khác, người dùng có thể sử dụng chuẩn vật lý RS 232 tùy
theo nhu cầu sử dụng)
Như vậy, thông qua hệ thống sử dụng Modbus RTU, một thiết bị có thể đóng vai trò
vừa là Client để lấy thông tin từ những thiết bị khác, và cũng vừa là Server để điều khiển,
nhờ vậy người sử dụng có thể giám sát, điều khiển, quản lý tất cả các thiết bị để thu thập
thông tin như nhiệt độ, áp suất, các loại van, cảm biến có trong hệ thống...
d) Phân biệt RS-232 và RS-485 trong Modbus RTU
Modbus RTU đa số vẫn còn sử dụng với các chuẩn vật lý Serial (Nối tiếp) như RS-
232, RS-485 hay RS-422, mục 5.1.2 sẽ đề cập chi tiết đến chuẩn vật lý Serial (nối tiếp)
và phân biệt giữa RS-232 và RS-485.
Chuẩn vật lý Serial (Có thể gọi vắn tắt là giao tiếp Serial)
- Trong các phương thức truyền nhận dữ liệu, quá trình gửi dữ liệu một cách tuần tự
qua bus máy tính giữa hai hay nhiều máy tính với nhau được gọi là giao tiếp Serial, tức là
dữ liệu sẽ được truyền từng bit một.

193
Hình 5.11. Giao tiếp Serial
- Bên cạnh đó, có một kiểu giao tiếp khác là Parallel, dữ liệu được truyền 8 bit cùng
lúc như hình 4.

Hình 5.12. Giao tiếp Parallel


Ưu điểm giao tiếp Serial:
- Chi phí thấp hơn so với giao tiếp Parallel.
- Có thể truyền song công hoặc bán song công.
- Giao tiếp Serial đáng tin cậy và đơn giản hơn so với giao tiếp Parallel.
Nhược điểm giao tiếp Serial:
- Tốc độ chậm hơn giao tiếp Parallel.
Các phương thức truyền dữ liệu trong giao tiếp Serial:
- Dữ liệu được truyền đồng bộ: Sử dụng xung clock (Clock Pulse) để đồng bộ quá
trình truyền nhận giữa bên thu và bên phát. Dữ liệu sẽ được gửi đi hoặc nhận lại ở những
thời điểm xuất hiện cạnh lên của xung clock. (Hình 3) (Xung clock là 1 chuỗi các xung
vuông được truyền liên tục cách nhau bằng 1 khoảng thời gian cố định. Với cứ mỗi thời
điểm xung thay đổi mức từ 0 -> 1 thì dữ liệu được truyền/nhận).
Dữ liệu được truyền bất đồng bộ: Không sử dụng clock để đồng bộ mà sử dụng bit
chẵn lẻ (Parity bit) hoặc những quy ước về phần cứng giữa 2 bên thu phát để đảm bảo dữ

194
liệu được toàn vẹn. Ví dụ: phía phát quy định cứ mỗi 1 mili giây sẽ gửi 1 bit dữ liệu và
phía nhận cũng quy định là cứ 1 mili giây sẽ nhận 1 bit dữ liệu.
Các thông số cài đặt chính trong giao tiếp Serial:
- Baud rate: Dùng để đo tốc độ truyền nhận dữ liệu, là số bit được truyền trong một
giây
- Stop bits: Được dùng để dừng việc truyền dữ liệu. Các giá trị thông dụng là 1, 1.5
và 2
- Parity bit: Là bit dùng để báo số lượng bit có giá trị bằng 1 trong một nhóm bit đã
biết và được sử dụng để kiểm tra lỗi. Có 4 loại parity bit thông dụng là even, odd, marked
và spaced.
Các chuẩn vật lý Serial:
- Đối với Modbus RTU hiện nay, đa số các thiết bị giao tiếp qua chuẩn Serial có 2
dạng thường gặp là chuẩn vật lý RS-232 và RS-485.
1) RS-232 là gì?
RS-232 là 1 dạng đầu nối vật lý có 9 chân (pin) (còn được gọi là cổng COM),
thường được sử dụng trong các máy tính bàn để giao tiếp với các thiết bị khác như máy
in, fax, (và còn được gọi là chuẩn RS-232).
RS-232 sử dụng 3 dây chính, đó là dây truyền dữ liệu (Tx), dây nhận dữ liệu (Rx)
và dây nối đất (GND). RS-232 hoạt động dựa trên sự chênh lệch điện áp giữa Tx, Rx so
với GND.
Hiện nay, có 2 loại kết nối theo chuẩn vật lý RS-232 được sử dụng nhiều là DB- 9
và DB-25.
DB-25 có 25 chân, nhưng trong một số ứng dụng không cần thiết sử dụng toàn bộ
25 chân. Vì vậy, DB-9 được tạo ra để tăng tính tiện dụng cho việc kết nối.

195
Hình 5.13. Sơ đồ chân (pin) của DB-9
– Nhược điểm của chuẩn vật lý RS-232 là không thể truyền tín hiệu đi xa, nếu xảy
ra trường hợp mất mát tín hiệu thì không thể phục hồi được. Bên cạnh đó việc kết nối
theo chuẩn RS-232 chỉ có thể thực hiện giữa 2 thiết bị (point – to – point) nên số lượng
thiết bị kết nối sẽ bị hạn chế.
– Một số đặc điểm khác của chuẩn vật lý RS-232 là:
+ Khoảng cách truyền tối đa là 15m.
+ Tốc độ truyền là 20Kbps.
2) RS-485 là gì?
Khác với chuẩn vật lý RS-232, chuẩn vật lý RS-485 chỉ truyền trên 2 dây tín hiệu
gồm dây truyền dữ liệu (Tx) và dây nhận dữ liệu (Rx).
Ngoài ra, RS-485 hoạt động dựa trên sự chênh lệch điện áp giữa 2 dây tín hiệu trên
theo mức logic 0 và 1 chứ không so sánh với dây GND như RS-232. Điều này giúp đảm
bảo việc truyền tín hiệu đi xa hơn so với RS-232, giảm thiểu khả năng bị ảnh hưởng bởi
nhiễu.
Ưu điểm lớn nhất của chuẩn RS-485 chính là khả năng truyền tín hiệu đi xa, tối đa
lên đến 1200m và có thể kết nối nhiều thiết bị trên cùng một mạng sử dụng chuẩn RS-
485, tối đa lên đến 32 thiết bị cùng lúc.
3) Kết luận

196
Bảng 5.1. Một số điểm khác biệt của chuẩn vật lý RS-232 và RS-485:

RS - 232 RS - 485
Cấu hình Nối chung GND Nối vi sai
(Single - end) (Diferential)
Số lượng thiết bị tối đa có 1 32
thể kết nối cùng lúc
Số lượng nút giao tối đa có 1 32
thể kết nối
Mạng Điểm – điểm Đa điểm
Khoảng cách truyền nhận 15m 1200m
tối đa
Tốc độ truyền nhận (khi 20KBit/s 10Mbit/s
truyền ở khoảng cách tối
đa)
Các mức điện áp điển hình ±5V đến ±15V ±1.5V đến 6V
Điện trở đầu vào máy thu 3 đến 7 kΩ 12 kΩ
Độ nhạy ±3V ±200mV
Số lượng thiết bị có thể kết nối
- Với RS-485, 1 thiết bị có thể kết nối với nhiều thiết bị khác (Tối đa lên đến 32
thiết bị). RS-485 sử dụng kiểu kết nối multi-point network.
- Với RS-232, 1 thiết bị chỉ có thể liên kết trực tiếp với 1 thiết bị khác hoặc thông
qua thiết bị chuyển đổi trung gian. RS-232 sử dụng kiểu kết nối Point - to - Point.
Khoảng cách kết nối và Tốc độ truyền nhận dữ liệu
- Dựa theo thông tin ở bảng trên, RS-485 có thể giao tiếp với khoảng cách xa hơn
rất nhiều so với RS-232 (1200 mét so với 15 mét) Đồng thời chuẩn RS-485 có tốc độ
truyền cao hơn so với chuẩn RS-232 (10MBit/s so với 20KBit/s).
- RS-485 với việc chỉ hoạt động trên dây Tx và Rx nên sẽ ít xảy ra nhiễu và không
làm gián đoạn việc giao tiếp. Vì vậy, RS-485 được truyền với tốc độ cao và xa hơn.
5.1.4. Thiết kế mạng truyền thông Modbus với PLC S7_1200/1500
5.1.4.1. Lập trình ứng dụng Modbus RTU trên TIA Portal
Bài toán 1: Đọc tín hiệu của đồng hồ giám sát năng lượng.
a) Đặt vấn đề

197
Sử dụng Modbus RTU của PLC S7 1200/1500 để đọc các thông số dữ liệu của đồng
hồ giám sát năng lượng: điện áp, dòng điện…
b) Yếu câu phần cứng
- Sử dụng PLC S7 -1200: CPU 1214C
- Modul RS485 cho PLC: CM 1241 (RS 422/485).
- Đồng hồ giám sát năng lượng: SENTRON PAC 4200 của Siemens.

c) Cấu hình Modbus cho slave và tìm hiểu các thanh ghi dữ liệu
Bước 1: Cấu hình đồng hồ giám sát năng lượng SENTRON PAC 4200 hỗ trợ
Modbus RTU. Các thông số cấu hình truyền thông của slave phải tương thích với Master.
- Mode: Modbus RTU
- Địa chỉ lần lượt là : 10, 11, 12.
- Baud rate: 19.2 kbps
- Parity: No parity.
- Data bits: 8 bit per character
- Stop bits: 1
Bước 2: tìm các thanh ghi dữ liệu: holding register, kiểu dữ liệu của các slave trong
manual của thiết bị

198
Bước 3: Tính toán các biến cho Modbus Master
- Để đọc thông tin của các thanh ghi thì sử dụng MODE = 0 tương ứng với mã chức
năng 0x03 (function code)
- Xác định thanh ghi địa chỉ DATA_ADDR = Req.adr. + offset
d) Khai báo cấu hình phần cứng PLC S7 – 1200/1500
Bước 1: Khởi tạo project với tên RTU_SENTRON, lựa chọn cấu hình PLC S7 và
mô đun hỗ trợ truyền thông Modbus RTU. Với bài này sẽ chọn CPU 1214C và mô đun
CM1241 (RS422/485).
Bước 2: Cấu hình cho cổng RS485 (Port) tương thích cấu hình của slave: CM
1214(RS422/485)  Properties  General  RS422/485 interface  Port
configuration…

199
Bước 3: Khởi tạo các bit trạng thái và bit hệ thống cho PLC

e) Khởi tạo vùng nhớ dữ liệu lưu trữ thông tin đọc về
200
Bước 1: tạo kiểu dữ liệu người dùng với PLC data type (UDT) để tiện lợi cho việc
đọc cùng lúc nhiều slave có cùng các thông số dữ liệu: PLC data types  add new data
type  đổi tên thành sentron_data  khai báo các thông số và kiểu dữ liệu cần đọc về.

Bước 2: tạo vùng nhớ dữ liệu DB1 với tên Modbus_Data để lưu trữ thông tin đọc
về từ các slave

Bước 3: Khởi tạo vùng dữ liệu để truy vấn thông tin từ các slave:
Modbus_Data[DB1]  Open  Add new  đổi tên là PM_1, PM_2, PM_3  chọn
kiểu dữ liệu data type là sentron_data.

201
Bước 4: Khởi tạo vùng dữ liệu DB2 để lưu trữ các tham số khai báo cấu hình cũng
như các biến chuyển trạng thái khi đọc các slave

f) Sử dụng Modbus_Master đọc tín hiệu Modbus_Slave


Sơ đồ giải thuật nguyên tắc đọc thông tin các tín hiệu Modbus từ các Slave 1,2,3
tương ứng với đồng hồ đo năng lượng SENTRON như sau:

Power ON

Communicaton
Load done

Read Slave 1

Read Slave 2

Real Slave 3

Hình 5.14. Lưu đồ giải thuật

202
Bước 1: Tạo hàm FC1 với chức năng đọc thông tin các đồng hồ đo điện năng
SENTRON bằng Modbus: Program blocks  Add new block  Function, Đặt tên
Modbus  OK.

Bước 2: Gọi lệnh khởi tạo cấu hình Modbus trong FC1: FC1  Network 1 
Intructions  Communication  Communication Processor  MODBUS hoặc
MODBUS RTU  Modbus_Comm_Load.
- Đặt tên DB Instance cho lệnh là Comm_Load.
- REQ chỉ cần xung trigger một lần duy nhất cho nên có thể sử dụng biến FirstScan.
- PORT khai báo địa chỉ Hardware identifier của mô đun truyền thông: PLC tags 
Default tag table  System contants  tìm tên tương ứng và điền thông tin vào PORT.
- MB_DB sẽ được chỉ định vào MB_DB của Modbus_Master. Được thực hiện khai
báo sau khi gọi lệnh Modbus_Master.

203
Bước 3: Tạo trạng thái nhớ khi FirstScan thực hiện lưu trạng thái này cho việc thiết
lập vòng lặp (Network 2).

Bước 4: Tạo thời gian trễ (tùy chọn) để cho hoàn thành việc thiết lập truyền thông
(network 3).

Bước 5: Gọi lệnh đọc tín hiệu đồng hồ đo điện bằng SENTRON 1: Network 4 
Instructions  Communication  Communication Processor  MODBUS 
Modbus_Master.

204
- Đặt tên DB Instance cho lệnh là Master_DB.
- Địa chỉ của đồng hồ đo điện năng SENTRON 1 là 10.
- Đọc thông tin thiết bị nên MODE = 0.
- Địa chỉ bắt đầu: 40001+1=40002.
- Độ dài dữ liệu: 9 thông số * độ dài 2 word = 18.
- Địa chỉ con trỏ DATA_PTR: nếu vùng nhớ DB là non-optimized thì khai báo theo
dạng sau: P#DB1.DBX0.0 REAL 9.
Bước 6: thực hiện chuyển tiếp trạng thái để đọc đồng hồ thứ 2 với địa chỉ slave là
11 (network 5).

Bước 7: Đọc thông tin của đồng hồ SENTRON 2. Ở network 6 tiếp tục gọi lệnh
Modbus_Master giữa nguyên Instanced DB. Chỉ thay đổi những thông tin liên quan tới
Modbus slave và vùng nhớ trao đổi dữ liệu với slave (Network 6).

205
Bước 8: Thực hiện chuyển tiếp trạng thái để đọc đồng hồ thứ 3 với địa chỉ slave là
12 (Network 7).

Bước 9: Đọc thông tin của đồng hồ SENTRON 3 ở network 8.

206
Bước 10: Thực hiện chuyển tiếp trạng thái để thực hiện vòng lặp cho phép đọc
đồng hồ 1 với địa chỉ 10 (network 9).

Bước 11: Gọi chương trình con Modbus [FC1] ở chương trình OB1.

Bài toán 2: Thiết lập truyền thông Modbus RTU giữa Master và Slave với PLC
S7 trên TIA Portal
a) Đặt vấn đề
Sử dụng giao thức Modbus RTU với PLC S7 -1200/1500 thực hiện truyền thông
trao đổi dữ liệu giữa 2 PLC.

207
b) Yêu cầu phần cứng
- Sử dụng CPU 1214C làm Modbus slave và CPU 1511 làm Modbus Master.
- Modul mở rộng RS485 cho PLC: CM 1241 (RS422/485) và CM PtP RS422/485
HF.

c) Cấu hình Modbus cho PLC S7 làm Modbus slave


Bước 1: Khởi tạo thiết bị với tên RTU_Slave, lựa chọn cấu hình PLC S7 và mô đun
hỗ trợ truyền thông Modbus RTU.
Bước 2: Cấu hình cho cổng RS485 (Port): CM 1241 (RS422/485)  Properties 
General  RS422/485 interface  Port configuration…

Bước 3: Tạo vùng nhớ dữ liệu DB1 với tên HoldReg để lưu trữ thông tin thanh ghi
holding register của slave.

208
Bước 4: trong quá trình truyền thông giữa PLC S7 với PLC khác thì cần phải sử
dụng vùng nhớ thực (absolute address) để truy xuất dữ liệu cho nên sẽ chuyển HoldReg
[DB1] sang vùng nhớ Non-optimized: HoldReg [DB1]  Properties  Attributes  bỏ
chọn Optimized block access  OK.

Bước 5: Khởi tạo vùng dữ liệu Holding Register: HoldReg [DB1]  Open  Add
new  đổi tên là Data  chọn kiểu dữ liệu data type là Array[1..100] of Word. Tùy theo
mục đích và số lượng dữ liệu truyền mà người sử dụng có thể dùng Word, Int, Dint,
Real…

209
Bước 6: Tạo hàm FC1 với chức năng Modbus: Program blocks  Add new block
 Function, đặt tên Modbus  OK.

Bước 7: Gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1  Network 1 
Instructions  Communication  Communications processor  MODBUS hoặc
MODBUS RTU  Modbus_Comm_Load.
- MB_DB sẽ được chỉ định vào MB_DB của Modbus_Slave. Được thực hiện khai
báo sau khi gọi lệnh Modbus_Slave.

210
Bước 8: Gọi lệnh thiết lập Modbus slave cho PLC S7: FC1  network 2 
Instructions  Communication  Communication Processor  MODBUS RTU 
Modbus_Slave.
- Đặt tên DB Instance cho lệnh là Slave_DB.
- Địa chỉ tùy chọn từ 1 – 247 và không trùng với bất kỳ slave nào có trên đường
mạng. Ở đây chọn là 1.
- Địa chỉ con trỏ DATA_PRT: Tùy theo số lượng và kiểu dữ liệu cần truyền về cho
master: P#DB1.DBX0.0 WORD 100.
Lưu ý: Sau khi thực hiện lệnh khởi tạo Modbus Slave cho PLC S7 thì thanh ghi bắt
đầu của Holding register là 40001.

211
Bước 9: Gọi chương trình con Modbus [FC1] ở chương trình OB1.

d) Cấu hình Modbus cho PLC S7 làm Modbus master


Bước 1: Khởi tạo thiết bị với tên RTU_Master, lựa chọn cấu hình PLC S7 và mô
đun hỗ trợ truyền thông Modbus RTU.
Bước 2: Khởi tạo các bít trạng thái và bits hệ thống cho PLC với MB100 chứa các
System memory bits và MB101 chứa các Clock memory bits.
Bước 3: Cấu hình cho cổng RS485 (Port): CM PtP RS422/485 HF  Properties 
General  RS422/485 interface…

212
Bước 4: Tạo vùng nhớ dữ liệu DB1 với tên ModbusReg_S7PLC để lưu giữ thông
tin đọc về từ PLC S7. Chuyển ModbusReg_S7PLC[DB1] sang vùng nhớ Non-optimized.
Bước 5: Khởi tạo vùng dữ liệu để đọc và ghi dữ liệu tới Slave: ModbusReg_S7PLC
[DB1]  Open  Add new  đổi tên là Read và Write  chọn kiểu dữ liệu data type là
Array [1..50] of word. Tùy theo mục đích và số lượng dữ liệu truyền mà người sử dụng
có thể dùng Word, Int, Dint, Real,…

Bước 6: Tạo hàm FC1 với chức năng Modbus: Program blocks  Add new block
 Function, đặt tên Modbus  OK.

213
Bước 7: Gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1  Network 1 
Intructions  Communication  Communication Processor  MODBUS hoặc
MODBUS RTU  Modbus_Comm_Load.

Bước 8: Gọi lệnh Modbus_Master truy xuất dữ liệu tới Slave: Network 2 
Instructions  Communication  Communication Processor  MODBUS RTU 
Modbus_Master. Ở đây ta thực hiện đọc 50 word liên tục với tần số 10 Hz từ PLC RTU
Slave.

214
Bước 9: Gọi chương trình con Modbus [FC1] ở chương trình OB1

5.1.4.2. Lập trình ứng dụng Modbus TCP trên TIA Portal
Bài toán 1: Đọc tín hiệu của đồng hồ SENTRON PAC
a) Đặt vấn đề
Sử dụng PLC S7 -1200 đọc các thông số dữ liệu của đồng hồ giám sát năng lượng:
Điện áp, dòng điện,… bằng giao thức truyền thông Modbus TCP.
b) Yêu cầu phần cứng
- Sử dụng PLC: CPU 1212C
- Đồng hồ giám sát năng lượng: SENTRON PAC 4200.
c) Cấu hình Modbus TCP cho đồng hồ
Cấu hình đồng hồ giám sát năng lượng SENTRON PAC 4200 cho phép truy cập dữ
liệu thông qua Modbus TCP.
- Mode: Modbus TCP.
- Địa chỉ IP: 192.168.0.10.
- Port: 502
d) Cấu hình Modbus TCP Client cho PLC S7
Bước 1: Khởi tạo thiết bị với tên TCP_SENTRON, lựa chọn cấu hình PLC S7.
Chọn CPU 1212C AC/DC/Rly.
Bước 2: Khởi tạo các bits trạng thái và bits hệ thống cho PLC với MB100 chứa các
System memory bits và MB101 chứa các clock memory bits.
Bước 3: Tạo kiểu dữ liệu theo người dùng với PLC data type (UDT) để tiện lợi cho
việc đọc cùng lúc nhiều slave có cùng các thông số dữ liệu: PLC data type  Add
new data types  đổi tên thành sentron_data  khai báo các thông số và kiểu dữ
liệu cần đọc về.

215
Bước 4: Tạo vùng nhớ dữ liệu DB1 với tên Modbus_Data để lưu trữ thông tin đọc
về từ server (PAC 4200).
Bước 5: Khởi tạo vùng dữ liệu để truy vấn thông tin từ các Slave: Modbus_Data
[DB1]  Open  Add new  đổi tên là PM  chọn kiểu dữ liệu data type là
sentron_data.
Bước 6: Khởi tạo biến CONNECT cho client truy vấn dữ liệu tới server:
Modbus_Data [DB1]  Add new  đặt tên CONNECT  chọn kiểu dữ liệu data
_type là TCON_IP_v4.

Bước 7: Khai báo tham số dữ liệu cho CONNECT để thiết lập truyền thông giữa
Client và server.
- HW_ANY của mô đun truyền thông: PLC tags  Defualt tag table  System
constants  tìm tên tương ứng và điền thông tin vào
(Local~PROFINET_interface_1).
- ID là tùy chọn tương ứng với ID sẽ đặt trên server.
- ConnectionType chọn là 11 để kết nối TCP/IP.
- Thiết lập kết nối là TRUE để chọn làm Client.
- RemotePort là 502 để truy xuất tới port của server.

Bước 8: Tạo hàm FC2 với chức năng đọc Modbus của các đồng hồ đo điện năng
SENTRON: Program block  Add new block  Function, đặt tên ModbusTCP  OK.

216
Bước 9: Gọi lệnh thực hiện khởi tạo cấu hình trong FC2: FC2  Network 1 
Instructions  Communication  Others  MODBUS TCP  MB_CLIENT.

- Đặt tên DB Instance cho lệnh là CLIENT_DB.


- REQ chọn Clock 10Hz để cứ 0.1s truy xuất server một lần.
- CONNECT được chỉ định vào kiểu dữ liệu TCON_IP_v4 trong vùng dữ liệu DB1.
Bước 10: gọi chương trình con ModbusTCP[FC2] trong OB1.

Bài toán 2: Thiết lập truyền thông Modbus TCP giữa Client và Server với PLC
S7 trên TIA Portal
a) Đặt vấn đề
Sử dụng PLC S7 -1200/1500 thực hiện truyền dữ liệu giữa 2 PLC với nhau bằng
giao thức Modbus TCP.
b) Yêu cầu phần cứng
- CPU 1212C với địa chỉ IP 192.168.0.101 làm server.
- CPU 1511 với địa chỉ IP 192.168.0.100 làm Client.
c) Cấu hình Modbus cho PLC S7 làm Modbus TCP Server
Bước 1: Khởi tạo thiết bị với tên TCP_Server, lựa chọn cấu hình PLC S7.

217
Bước 2: tạo vùng nhớ dữ liệu DB1 với HoldReg để lưu trữ thông tin thanh ghi
holding register của server. Chuyển vùng nhớ của HoldReg [DB1] sang dạng vùng nhớ
Non-optimized.
Bước 3: Khởi tạo vùng dữ liệu Holding register: HoldReg [DB1]  Open  Add
new  đổi tên là TCPData  Chọn kiểu dữ liệu data type là Array [`1..100] of Word.

Bước 4: Khởi tạo biến CONNECT cho Server để kết nối tới Client: HoldReg [DB1]
 Add new  đặt tên là CONNECT  chọn kiểu dữ liệu data type là TCON_IP_v4.
Bước 5: Khai báo tham số dữ liệu cho CONNECT.
- HW_ANY của mô đun truyền thông: PLC tags  Default tag table  System
constants  tìm tên tương ứng và điền thông tin vào (Local~PROFINET_interface_1).
- Thiết lập kết nối là FALSE để chọn làm Server.
- Định địa chỉ LocalPort là 502.
- Địa chỉ IP của client là: 192.168.0.100.

Bước 6: Tạo hàm FC1 với chức năng Modbus: Program blocks  Add new block
 Function, đặt tên TCPServer  OK.
Bước 7: gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1  Network 1 
Instructions  Communication  Others  MODBUS TCP  MB_SERVER.
- Đăt tên DB Instance cho lệnh là SERVER_DB.
- Chọn Disconnect là bất kỳ trạng thái M hoặc DB nào miễn sao có thể thay đổi
bằng phần mềm hoặc chọn false để luôn luôn cho truyền thông thực hiện.
- CONNECT được chỉ định vào kiểu dữ liệu TCON_IP_v4 trong vùng dữ liệu DB1.

218
Bước 8: gọi chương trình con TCPServer [FC1] trong OB1.

d) Cấu hình Modbus cho PLC S7 làm Modbus TCP Client.


Bước 1: Khởi tạo CPU 1511 với tên TCP_Client.
Bước 2: Khởi tạo các bits trạng thái và bits hệ thống cho PLC với MB100 chứa các
System memory bits và MB101 chứa các clock memory bits.
Bước 3: Tạo vùng nhớ dữ liệu DB1 với tên TCPData để truy xuất thông tin thanh
ghi holding register của server. Chuyển vùng nhớ của TCPData [DB1] sang dạng
vùng nhớ Non-optimized.
Bước 4: Khởi tạo vùng dữ liệu truy vấn các thanh ghi dữ liệu của server: TCPData
[DB1]  Open  Add new  đổi tên là Read và Write  chọn kiểu dữ liệu data
type là Array [1..50] of Word.

Bước 5: Khởi tạo biến CONNECT cho client truy xuất dữ liệu tới server: TCPData
[DB1]  Add new  đặt tên CONNECT  chọn kiểu dữ liệu data type là
TCON_IP_v4.
Bước 6: Khai báo tham số dữ liệu cho CONNECT.
- HW_ANY của mô đun truyền thông: PLC tags  Default tag table  System
constants  tìm tên tương ứng và điền thông tin vào (Local ~
PROFINET_interface_1).

219
- Thiết lập kết nối là TRUE để chọn làm Client.
- Định địa chỉ LocalPort là 0 (any port) và RemotePort là 502.
- Địa chỉ IP của server là: 192.168.0.101.
- ID trùng với server: 110.

Bước 7: tạo hàm FC1 với chức năng Modbus: Program blocks  Add new block
 Function, đặt tên TCPClient  OK.
Bước 8: Gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1  Network 1 
Instructions  Communication  Others  MODBUS TCP  MB_CLIENT.
- Đặt tên DB Instance cho lệnh là CLIENT_DB.
- REQ chọn Clock 10Hz để cứ 0.1s truy xuất server một lần.

Bước 9: Gọi chương trình con TCPCLient [FC1] trong OB1.

220
5.2. MẠNG TRUYỀN THÔNG PROFINET
Với công nghệ tự động hóa ngày nay, Ethernet và công nghệ thông tin ngày càng có
nhiều tiến bộ trong việc xây dựng các chuẩn giao thức như TCP/IP và XML. Việc tích
hợp công nghệ thông tin vào tự động động hóa đã mở ra các giao tiếp truyền thông tốt
hơn trong việc lựa chọn giao tiếp giữa hệ thống tự động hóa, mở ra khả năng cấu hình và
chuẩn đoán hệ thống tốt hơn, và mở rộng các chức năng dịch vụ mạng toàn cầu … và
những chức năng được tích hợp trở thành phần không thể thiếu của PROFINET ngay từ
đầu

Hình 5.15. PROFINET đáp ứng mọi yêu cầu cho công nghệ tự động hóa
PROFINET là tiêu chuẩn mở cho Ethernet công nghiệp và đáp ứng mọi yêu cầu cho
công nghệ tự động hóa: tự động hóa sản xuất, tự động hóa quy trình hay truyền động (có
hoặc không có chức năng an toàn safety). PROFINET là công nghệ tiêu biểu trong ngành
công nghiệp ô tô, được sử dụng trong ngành chế tạo và được chứng minh những ưu điểm
trong ngành công nghệ thực phẩm, hàng hải và đường sắt, …
5.2.1. Giới thiệu chung
PROFINET là chuẩn giao thức mở cho Ethernet công nghiệp (IE) được phát triển
bởi hiệp hội PROFIBUS & PROFINET quốc tế.
PROFIBUS mang những đặc điểm tính năng của PROFINET như: giao tiếp I/O tốc
độ cao, an toàn dữ liệu, chức năng chuẩn đoán lỗi, … Và những đặc điểm tính năng của
ETHERNET như: tốc độ truyền cao 100Mbps hoặc nhanh hơn qua cáp đồng hoặc cáp

221
quang, có thể truyền không dây (wireless) và cho cấu trúc mạng linh hoạt. Bởi vậy,
PROFINET có những đặc điểm như:
 Hỗ trợ chức năng truyền thông thời gian thực
 Tích hợp các thiết bị trường (field) vào hệ thống mạng
 Hỗ trợ các thiết bị điều khiển phân tán với nhiều nhà sản xuất thiết bị.
 Điều khiển truyền động đồng bộ
 Quản trị và chuẩn đoán mạng đơn giản với các dịch vụ hỗ trợ của công nghệ
thông tin.
 Bảo mật mạng để chống lại những truy cập và thao tác trái phép trên đường
mạng.
 Truyền thông an toàn với chức năng PROFIsafe

Hình 5.1. Tổng quan về Profinet


5.2.2. Các cấu hình truyền thông của PROFINET
Profinet hỗ trợ hai định dạng truyền thông để đáp ứng các yêu cầu về các loại ứng
dụng khác nhau đó là:
 Profinet IO: Phục vụ cho việc tích hợp các I/O phân tán.
 Profinet CBA: phục vụ cho các ứng dụng theo module hóa, cho phép giao
tiếp giữa máy – máy. Cho phép người dùng tạo các giải pháp tự động hóa
phân tán dựa trên các thành phần có sẵn và thực hiện giải pháp tự động hóa
từng phần.
5.2.2.1. Profinet IO
Profinet IO cho phép các module I/O phân tán trên Ethernet giao tiếp trực tiếp với
các bộ điều khiển (PLC, PC, SCADA, …). Profinet mang các đặc điểm của của Profibus
cho nên các thiết bị được kết nối trong cấu trúc mạng thống nhất. Do đó dễ dàng thống
nhất thông tin và dữ liệu của toàn bộ nhà máy sản xuất.

222
Hình 5.17. Truyền thông Profinet IO và Proxy PN/BP
Profinet IO chỉ định việc trao đổi dữ liệu giữa các bộ điều khiển IO (IO controller)
với các thiết bị I/O phân tán, cũng như cài đặt các tham số và chuẩn đoán thông tin gửi
cho bộ điều khiển. Profinet IO được thiết kế để trao đổi dữ liệu nhanh với thời gian đáp
ứng chỉ vài ms, dựa trên mô hình provider và consumer. Các thiết bị được định nghĩa
trong Profinet IO là:
 IO controller: là các bộ điều khiển PLC. IO controller thực hiện việc nhận dữ liệu
đầu vào và cung cấp dữ liệu đầu ra cho các thiết bị IO device được cấu hình trong
mạng.
 IO device: là các thiết bị I/O phân tán được kết nối tới bộ điều khiển IO controller
thông qua Profinet. IO device thực hiện việc cung cấp dữ liệu đầu vào và nhận dữ
liệu đầu ra từ các bộ IO controller.
 IO Supervisor: là các thiết bị lập trình, máy tính PC, HMI để thực hiện
commissoning hoặc chuẩn đoán.
Trong một mạng Profinet IO thì có ít nhất một IO Controller và có một hoặc nhiều
IO device. Ngoài ra, các thiết bị trường trong segment của Profibus có thể được tích hợp
vào hệ thống Profinet IO bằng cách sử dụng bộ Proxy PN/PB.
Để thiết lập giao tiếp giữa các bộ điều khiển với các thiết bị IO phải thiết lập đường
dẫn truyền thông. Đường dẫn truyền thông được thiết lập bởi IO Controller trong quá
trình khởi động hệ thống dựa trên dữ liệu cấu hình nhận được từ hệ thống thiết kế.
Mỗi dữ liệu trao đổi được nhúng vào một AR (Application Relation). Trong AR,
các CR (Communication Relation) mô tả dữ liệu truyền thông một cách rõ ràng. Kết quả
là tất cả dữ liệu cho thiết bị được mô hình hóa, bao gồm các tham số truyền thông được
tải xuống IO Device. Một IO Device có thể có nhiều AR được thiết lập từ các IO
Controller khác nhau. Ví dụ như shared device.
223
Hình 5.4. Mối liên hệ giữa CR và AR
Các kênh truyền thông cho trao đổi dữ liệu theo chu kỳ với IO data CR, trao đổi dữ
liệu không theo chu kỳ với record data CR, và cảnh báo với Alarm CR được thiết lập
đồng thời.
Có thể sử dụng nhiều bộ IO controller trong hệ thống Profinet. Các bộ điều khiển
IO controller có thể cùng truy cập dữ liệu vào IO device nhưng phải được chỉ định khi
khai báo cấu hình (chế độ shared device, shared input).

Hình 5.18. Một thiết bị trường có thể truy cập bởi nhiều IO Controller
5.2.2.2. Profinet CBA
Profinet CBA cho phép người dùng có cái nhìn tổng quan hơn về việc tự động hóa
trong nhà máy. Profinet CBA thực hiện việc module hóa nhà máy thành từng phần riêng,
hoạt động độc lập và có thể kết hợp trở lại thành một hệ thống hoàn chỉnh khi cần, đáp
ứng cho việc xây dựng nhà máy theo từng giai đoạn.

224
Hình 5.19. Module hóa với Profinet CBA
Nói một cách đơn giản, Profinet CBA bao gồm nhiều hệ thống tự động hóa riêng lẻ
có thể có các tín hiệu vào/ra, bộ điều khiển riêng biệt để thực hiện một tác vụ tự động hóa
cụ thể nào đó, và khi cần ghép nối lại thành hệ thống hoàn chỉnh cho toàn nhà máy có thể
thực hiện qua truyền thông Profinet với tốc độ lên tới 10ms.
5.2.3. Giao thức truyền và cấu trúc mạng của PROFINET
Profinet có thể hỗ trợ nhiều giao thức truyền thông khác nhau, tuy nhiên có hai giao
thức truyền dữ liệu được phổ biến là TCP/IP và UDP

Hình 5.19. PROFINET theo mô hình OSI


Profinet rất linh hoạt khi thiết lập cấu trúc hệ thống mạng. Tuy nhiên, cấu trúc mạng
thường thiết lập với 4 kiểu thông dụng như: Line, Tree, Star, Ring.

225
Hình 5.20. Các kiểu cấu trúc mạng Profinet
5.2.4 TẬP LỆNH TRUYỀN THÔNG CỦA PROFINET
PROFINET được sử dụng để trao đổi dữ liệu thông qua chương trình người dùng
với các thiết bị khác (hay còn gọi là partner) thông qua Ethernet:
 PROFINET có thể kết nối tới bao nhiêu thiết bị khác tùy thuộc vào từng loại thiết
bị khác nhau, người thiết kế phải kiểm tra kỹ các đặc tả kỹ thuật này để có thể đưa
ra giải pháp phù hợp. Ví dụ: PLC S7-1200 với CPU V4.x có thể hỗ trợ lên tới 16
IO device với 256 sub-module, có thể kết nối lên tới 16 thiết bị PROFINET khác
(PLC).
 Transport Control Protocol (TCP).
 ISO on TCP (RFC 1006)
 User Datagram Protocol (UDP)
 User Communication: được phát triển dựa theo giao thức TCP nhưng dành riêng
cho các thiết bị của Siemen có hỗ trợ Ethernet hay PROFINET.
Bảng 5.2. Protocol và khai báo vùng nhận dữ liệu.

Protocol Ví dụ ứng dụng Khai báo vùng nhận dữ


liệu
TCP Truyền thông CPU – CPU theo Chế độ AD HOC Mode
các frame
Nhận dữ liệu theo độ dài
chỉ định của người dùng
ISO on TCP Truyền thông CPU – CPU theo Chế độ AD HOC Mode
kiểu tách từng gói tin khi Protocol – Controller
truyền và gộp các gói tin khi
nhận

226
UDP Truyền thông CPU – CPU với User Datagram Protocol
chương trình người dùng
S7 Communication Truyền thông giữa CPU – Dữ liệu truyền và nhận
CPU. Thực hiện việc truyền được chỉ định độ dài theo
nhận dữ liệu tới 1 CPU người dùng
PROFINET RT Truyền thông kết nối CPU với Dữ liệu truyền và nhận
Profinet I/O được chỉ định độ dài theo
người dùng
Bảng 5.2. Protocol và lệnh truyền thông

Protocol Lệnh truyền thông Kiểu địa chỉ


Chế độ AD HOC Mode:
TRCV_C và TRCV.
Nhận dữ liệu theo độ dài chỉ Gán địa chỉ port cho Local
TCP
định của người. TSEND_C, và Partner
TRCV_C, TCON, TDISCON,
TSEND, và TRCV
Chế độ AD HOC Mode:
TRCV_C và TRCV. Protocol –
Gán TSAP cho Local và
ISO on TCP Controlled: TSEND_C,
Partner
TRCV_C, TCON, TDISCON,
TSEND và TRCV
Gán địa chỉ port cho Local
và Partner, nhưng không
UDP TUSEND và TURCV
phải là dedicated
connection
Gán TSAP cho Local và
S7 Communication GET và PUT
Partner
PROFINET RT Đang phát triển Đang phát triển
5.2.4.1 Chuẩn truyền thông với chế độ AD HOC
TCP và ISO – on – TCP protocol nhận gói dữ liệu theo độ dài chỉ định của người
dùng tầm từ 1 byte đến 8192 byte. Tuy nhiên, lệnh truyền thông TRCV cũng cho phép
người dùng sử dụng chế độ truyền thông “AD HOC” để nhận gói dữ liệu với một độ dài
biến đổi (variable length) từ 1 byte đến 1472 byte.

227
Để cấu hình lệnh TRCV_C và TRCV cho chế độ “AD HOC” cần phải nhập giá trị
cho tham số đầu vào cho lệnh ADHOC.
Chú ý: Nếu người dùng lưu trữ dữ liệu trong Optimized DB, thì người dùng chỉ có
thể nhận những kiểu dữ liệu như: mảng dữ liệu của Byte, Char, USInt và SInt.
5.2.4.2. Chuẩn truyền thông với TC và ISO của TCP
Transport Control Protocol (TCP) là chuẩn protocol được miêu tả bởi RFC 793:
Transmission Control Protocol. Mục đích cơ bản của TCP là cung cấp độ đáng tin cậy, an
toàn trong kết nối truyền thông giữa local và partner. Protocol này có những đặc điểm
như sau:
 Một giao thức truyền thông hiệu quả vì gắn liền với phần cứng.
 Dữ liệu truyền thông cho cá ứng dụng trung bình và lớn (lên tới 8192 byte)
 Routing-capable, sử dụng với chế độ LAN
 Chỉ áp dụng cho những dữ liệu có độ dài cố định (static length)
 Thông tin xác nhận lỗi
 Các ứng dụng được thực hiện bằng địa chỉ cố định.
 Hầu hết các ứng dụng được người dùng sử dụng giao thức như: TELNET, FPT.
 Lập trình hiệu quả với việc quản lý dữ liệu theo giao thức truyền nhận dữ liệu.

Internation Standard Organization (ISO) on Transport Control Protocol (TCP) (RFC


1006) gọi tắt là ISO – on – TCP là một giao thức với cơ chế cho phép ứng dụng các mạng
TCP/IP theo chuẩn ISO. Giao thức này có các đặc điểm sau đây:
 Một giao thức truyền thông hiệu quả vì gắn liền với phần cứng.
 Dữ liệu truyền thông cho các ứng dụng trung bình và lớn (lên tới 8192 byte).
 Routing-capable, sử dụng với chế độ WAN.
 Có thể áp dụng cho các dữ liệu có độ dài thay đổi (dynamic data length)
 Lập trình hiệu quả với việc quản lý dữ liệu theo giao thức truyền nhận dữ liệu.

Sử dụng các giao thức TSAP (Transport Service Access Points), TCP cho phép
nhiều kết nối tới một địa chỉ IP (lên tới 64K dữ liệu). Với RFC 1006, TSAP cho phép xác
định những điểm kết nốt cuối đến một địa chỉ IP.
5.2.4.3 Truyền nhận dữ liệu thông qua lệnh TSEND-C và TRCV-C
Lệnh TSEND_C và TRCV_C thực hiện nhiệm vụ truyền nhận dữ liệu thông qua
Ethernet.
 Lệnh TSEND-C là sự kết hợp các lệnh TCON, TDISCON và TSEND
 Lệnh TRCV-C là sự kết hợp của các lệnh TCON, TDISCON và TRCV.
 Dữ liệu truyền/nhận tối thiểu 1 Byte và tối đa là 8192 Byte
 Lệnh TSEND_C và TRCV_C không hỗ trợ cho việc truyền/nhận các dữ liệu
Boolean.

5.2.4.3.1. Lệnh truyền dữ liệu TSEND_C

228
Lệnh TSEND_C thiết lập kết nối truyền thông từ Local đến Partner theo tiêu chuẩn
TCP hay ISO – on – TCP. Lệnh thực hiện việc gửi dữ liệu và có thể ngắt kết nối. Sau khi
được thiết lập và cài đặt, lệnh sẽ được tự động duy trì và kết nối và truyền dữ liệu với
CPU.
Bảng 5.3. Tham số của tập lệnh TSEND_C

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
0 = Ngắt kết nối
CONT IN BOOL I, Q, M, D, L 1 = Cho phép và truy trạng
thái kết nối
Dung lượng truyền tối đa
0 = Tham số DATA định
I, Q, M, D, L, nghĩa độ dài dữ liệu truyền
LEN IN UINT
hay hằng số 65535 = AD HOC: Độ dài
dữ liệu thay đổi theo người
dùng
Pointer để miêu tả kết nối.
CONNECT IN/OUT TCON_Param D Tham khảo thêm phần
Help của Tia Portal.
Vùng gửi dữ liệu được
DATA IN/OUT VARIANT I, Q, M, D, L định dạng theo kiểu
Pointer
Cho phép restart lệnh hoạt
COM_RST IN/OUT BOOL I, Q, M, D, L
động lại
Lệnh được thực thi thành
DONE OUT BOOL Q, M, D, L
công
0 = Lệnh không được thực
BUSY OUT BOOL Q, M, D, L thi hoặc đang thực thi
1 = Lệnh đã được thực thi.
Trạng thái của tham số:
ERROR OUT BOOL Q, M, D, L 0 = Không có lỗi
1 = Lỗi xảy ra và người
229
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh

5.2.4.3.2. Lệnh nhận dữ liệu TRCV_C


Lệnh TRCV_C thiết lập kết nối truyền thông từ Local đến Partner theo tiêu chuẩn
TCP hay ISO – on – TCP. Lệnh thực hiện việc nhận dữ liệu và có thể ngắt kết nối. Sau
khi được thiết lập và cài đặt, lệnh sẽ tự động duy trì kết nối và truyền dữ liệu với CPU.
Bảng 5.4. Tham số của tập lệnh TRCV_C

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


EN_R IN BOOL I, Q, M, D, L Nhận dữ liệu khi = 1
0 = Ngắt kết nối
CONT IN BOOL I, Q, M, D, L 1 = Cho phép và duy trì
trạng thái kết nối
Dung lượng truyền tối
đa:
0 = Tham số DATA
I, Q, M, D, L, định nghĩa độ dài dữ
LEN IN UINT
hay là hằng số liệu truyền
65535 = AD HOC: ĐỘ
dài dữ liệu thay đổi theo
người dùng.
Pointer để miêu tả kết
CONNECT IN/OUT TCON_Param D nối. Tham khảo thêm
phần
Vùng gửi dữ liệu được
DATA IN/OUT VARIANT I, Q, M, D, L định dạng theo kiểu
Pointer
Cho phép restart lệnh
COM_RST IN/OUT BOOL I, Q, M, D, L
hoạt động lại
Lệnh được thực thi
DONE OUT BOOL Q, M, D, L
thành công
BUSY OUT BOOL Q, M, D, L 0 = Lệnh không được

230
thực thi hoặc đang thực
thi
1 = Lệnh đã được thực
thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái
tại Status
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh
Tổng số lượng dữ liệu
RCVD_LEN OUT UDINT Q, M, D, L
đã nhận

5.2.4. Truyền nhận dữ liệu với TCON, TDISCON, TSEND và TRCV (truyền thông
TCP).
Tập lệnh TSEND_C và TRCV_C giúp cho việc lập trình truyền thông
Profinet/Ethernet trở nên đơn giản hơn. Tuy nhiên, về bản chất thì 2 tập lệnh TSEND_C
và TRCV_C là sự kết hợp của các tập lệnh như TCON, TDISCON, TSEND và TCV như
đã trình bày sơ lược như khi giới thiệu về 2 tập lệnh trên.
 TSEND và TRCV thực hiện việc truyền nhận dữ liệu
5.2.4.1. Lệnh thực hiện kết nối với TCON và ngắt kết nối với TDISCON
Người dùng có thể sử dụng lệnh TCON để thiết lập kết nối truyền thông TCP/IP
giữa Client và server và lệnh TDISCON ngắt kết nối truyền thông.
Bảng 5.5. Tham số của tập lệnh TCON/TDISCON

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
CONN_OUC I, Q, M, D, L Tham số để gán kết nối
ID IN
(WORD) hay hằng số
Pointer để miêu tả kết nối.
CONNECT IN/OUT TCON_Param D Tham khảo thêm phần Help
của Tia Portal.

231
Lệnh được thực thi thành
DONE OUT BOOL Q, M, D, L
công
0 = Lệnh không được thực
BUSY OUT BOOL Q, M, D, L thi hoặc đang thực thi
1 = Lệnh đã được thực thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh

5.2.4.2. Lệnh truyền dữ liệu TSEND


Khi lệnh TCON được thực hiện thì lệnh TSEND sẽ cho phép dữ liệu gửi từ Local
sang Partner.
Bảng 5.6. Tham số của tập lệnh TSEND

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
Dung lượng truyền tối đa
0 = Tham số DATA định
I, Q, M, D, L, nghĩa độ dài dữ liệu truyền
LEN IN UINT
hay hằng số 65535 = AD HOC: Độ dài
dữ liệu thay đổi theo người
dùng
Vùng gửi dữ liệu được định
DATA IN/OUT VARIANT I, Q, M, D, L
dạng theo kiểu Pointer
Lệnh được thực thi thành
DONE OUT BOOL Q, M, D, L
công
0 = Lệnh không được thực
BUSY OUT BOOL Q, M, D, L thi hoặc đang thực thi
1 = Lệnh đã được thực thi.

232
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh

5.2.4.3. Lệnh nhận dữ liệu TRCV


Khi lệnh TCON được thực hiện thì lệnh TRCV sẽ cho phép nhận dữ liệu của
Partner gửi sang.
Bảng 5.7. Tham số của tập lệnh TRCV_C

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


EN_R IN BOOL I, Q, M, D, L Nhận dữ liệu khi = 1
0 = Ngắt kết nối
CONT IN BOOL I, Q, M, D, L 1 = Cho phép và duy trì
trạng thái kết nối
Dung lượng truyền tối
đa:
0 = Tham số DATA định
I, Q, M, D, L, nghĩa độ dài dữ liệu
LEN IN UINT
hay là hằng số truyền
65535 = AD HOC: ĐỘ
dài dữ liệu thay đổi theo
người dùng.
Pointer để miêu tả kết
CONNECT IN/OUT TCON_Param D nối. Tham khảo thêm
phần
Vùng gửi dữ liệu được
DATA IN/OUT VARIANT I, Q, M, D, L định dạng theo kiểu
Pointer
Cho phép restart lệnh
COM_RST IN/OUT BOOL I, Q, M, D, L
hoạt động lại
DONE OUT BOOL Q, M, D, L Lệnh được thực thi thành

233
công
0 = Lệnh không được
thực thi hoặc đang thực
BUSY OUT BOOL Q, M, D, L thi
1 = Lệnh đã được thực
thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái
tại Status
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh
Tổng số lượng dữ liệu đã
RCVD_LEN OUT UDINT Q, M, D, L
nhận

5.2.5. Lệnh truyền thông bằng S7 Communication


Để thực hiện truyền thông giữa các CPU S7 thì người dùng có rất nhiều chuẩn để
thực hiện truyền thông giao tiếp như: TCP, ISO – on – TCP, UDP, S7 Communication…
với các tập lệnh hỗ trợ tương ứng với các chuẩn truyền thông. Tuy nhiên, trong nội dung
tài liệu chỉ giới thiệu với người đọc về chuẩn giao tiếp truyền thông giữa các CPU S7
bằng S7 Communication thông qua lệnh PUT và GET bằng việc khai báo/thực hiện một
cách rất đơn giản.
5.2.5.1. Lệnh nhận dữ liệu GET
Người dùng có thể sử dụng lệnh GET để đọc dữ liệu từ một remote CPU. Lệnh
được thực hiện khi có xung cạnh lên tại ngõ vào điều khiển REQ:
 Dữ liệu sẽ được nhận từ địa chỉ ADDR_i của Partner và đưa vào cùng địa chỉ RD-i
của Local thông qua Pointer.
 Khi lệnh thực hiện xong thì tham số NDR sẽ lên 1
 Nếu lệnh thực hiện lỗi thì tham số Error lên mức 1 và trạng thái báo lỗi được truy
xuất thông qua tham số Status.
Bảng 5.8. Tham số của tập lệnh GET

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L
thực thi: Cho phép xuất dữ

234
liệu khi có xung cạnh lên
CONN_OUC I, Q, M, D, L Tham số để gán kết nối
ID IN
(WORD) hay hằng số
Tham số địa chỉ để chỉ
NDR OUT BOOL Q, M, D, L
định kết nối với Partner
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh
Pointer thực hiện chỉ định
ADDR_i IN/OUT ANY M, D vùng dữ liệu của CPU
Partner để đọc
RD_I Pointer thực hiện chỉ định
IN/OUT ANY M, D vùng dữ liệu của CPU
Local để nhận.

5.2.5.2. Lệnh truyền dữ liệu PUT


Người dùng có thể sử dụng lệnh PUT để gửi/truyền dữ liệu tới một remote CPU.
Lệnh được thực hiện khi có xung cạnh lên tại ngõ vào điều khiển REQ:
 Dữ liệu sẽ được truyền từ địa chỉ SD-i của Local và đưa vào vùng địa chỉ ADDR-i
của Partner thông qua Pointer
 Khi lệnh thực hiện xong thì tham số DONE sẽ lên 1
 Nếu lệnh thực hiện lỗi thì tham số Error lên mức 1 và trạng thái báo lỗi được truy
xuất thông qua tham số Status
Bảng 5.9. Tham số của tập lệnh PUT

Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả


Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
CONN_OUC I, Q, M, D, L Tham số để gán kết nối
ID IN
(WORD) hay hằng số

235
Lệnh được thực thi thành
DONE OUT BOOL Q, M, D, L
công
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh
Pointer thực hiện chỉ định
ADDR_i IN/OUT ANY M, D vùng dữ liệu của CPU
Partner để đọc
Pointer thực hiện chỉ định
RD_I IN/OUT ANY M, D vùng dữ liệu của CPU
Local để nhận.
5.3. THIẾT KẾ MẠNG TRUYỀN THÔNG PROFINET
Trong nội dung dưới đây chỉ trình bày truyền thông Profinet giữa các IO Controller
(PLC S7), còn truyền thông giữa PLC S7 với IO device tham khảo tài liệu trong mục tài
liệu tham khảo.
5.3.1. Truyền thông giữa IO Controller (PLC S7)
Truyền thông PROFINET/ETHERNET không có khái niệm master và slave, mà
thay vào đó là local và Partner hoặc client và server.
 PLC Client thực hiện truy vấn dữ liệu (truyền hoặc nhận dữ liệu) tới PLC Server
thông qua các tập lệnh hoặc khối hàm truyền thông.
 Dữ liệu truyền nhận có thể dử dụng vùng nhớ M hoặc DB
 Đặt vấn đề
Lập trình giao tiếp truyền thông Profinet giữa 2 CPU S7 – 1200 với nhau. Thực hiện
truyền/nhận 10 Byte dữ liệu giữa 2 CPU.
 Hướng dẫn thực hiện
a. Cấu hình phần cứng
Bước 1: Khởi tạo Project đặt tên là Profinet gồm PLC_1 và PLC_2 là CPU S7 –
1200 – cấu hình thực tế tương ứng với phần cứng người dùng có.
 PLC_1 có địa chỉ IP là 192.168.0.1
 PLC_2 có địa chỉ IP là 192.168.0.2

236
Bước 2: Chọn Project (Profinet)  Device & Network  Thực hiện kết nối 2 CPU
với nhau bằng cách kéo/nhả các node mạng với nhau.

b. Lập trình giao tiếp truyền thông


Trong phần này, ta sử dụng giao thức S7 Communication để thực hiện truyền thông
giữa hai PLC S7 với nhau.
 Với giao thức S7 Communication thì người dùng chỉ cần viết chương trình đọc và
ghi dữ liệu trên PLC Client (hay còn gọi là local), còn bên PLC Server (hay được
biết đến như partner) không cần viết lệnh.
 Dữ liệu truyền thông có thể sử dụng vùng nhớ M hoặc DB.
 Dữ liệu truyền có thể là Byte, Word, Dword, Int, …
Thực hiện viết chương trình truyền thông với PLC_1 làm Server và PLC_2 làm
Client
Bước 1: Thực hiện gọi lệnh truyền dữ liệu tới Client trong khối tổ chức OB1:
Instruction  Communication  S7 Communication  PUT
Bước 2: Cấu hình – khai báo tham số cho lệnh PUT hoạt động: OB
Main  PUT  Start configuration (Properties).
 Connection parameter: Thực hiện chọn Partner là PLC_2, các tham số sẽ được tự
động khởi tạo tương ứng.
 Block parameter: thực hiện chọn các tham số cho lệnh truyền thông.
- Start request (REQ): Chọn tín hiệu trigger cho lệnh hoạt động

- Write area (ADDR-i): CPU Partner nhận 10 Byte dữ liệu bắt đầu từ địa chỉ M0.0

- Send area (SD-i): CPU Local thực hiện truyền 10 Byte dữ liệu bắt đầu từ địa chỉ
M100.0
237
- Done: Chọn vùng nhớ báo cáo thực hiện lệnh hoàn tất

- Error: Chọn tín hiệu báo lỗi khi thực hiện lệnh sai

Bước 3 & 4: thực hiện gọi lệnh và cấu hình cho lệnh truyền thông nhận dữ liệu
GET từ Client tương tự như 2 bước trên.
Như vậy, sau khi khai báo và cấu hình tham số cho những tham số cần thiết chúng
ta sẽ có kết quả như sau:
Truyền Nhận
Server MB100  MB109 MB0  MB9
Client MB10  MB19 MB0  MB9
Network 1: Thực hiên gọi lệnh truyền thông PUT truyền dữ liệu từ Server (Local)
sang Client (Partner)

Network 2: Thực hiện khai báo cho tín hiệu Trigger hoạt động như sau

238
Network 3: Thực hiện gọi lệnh truyền thông GET nhận dữ liệu từ Client (Partner).

Network 4: Thực hiện khai báo cho tín hiệu Trigger hoạt động như sau

Việc truyền thông giao tiếp giữa PLC S7 – 1200 với PLC S7 – 300/400/1500 cũng
tương tự nếu sử dụng chuẩn truyền thông giao tiếp S7 Communication.
5.3.2. Ví dụ ứng dụng
Dưới đây sẽ trình bày khai báo và lập trình truyền thông mạng Profinet giữa ba PLC
S7-500 tại phòng thí nghiệm PLC.
Bước 1: Tạo Project mới.
Bước 2: Sau khi tạo project. Online → Accessible devices → Start search để kiểm
tra thông tin các thiết bị để kết nối trong mạng.
239
Bước 3: Tiến hành thay đổi địa chỉ IP cho các CPU. Lần lượt là 192.168.0.21,
192.168.0.22, 192.168.0.23. Chú ý rằng để thay đổi IP ta cần reset địa chỉ IP trước.

Bước 4: Chọn add new device để tạo cấu hình PLC, ở bước này ta cần tạo 3 device
PLC.
Sau khi tạo device xong, ta cần phải kiểm tra lại IP address của các device xem đã
đúng với IP đã tạo hay chưa.

240
Bước 5: Tiến hành nạp cấu hình đã tạo cho các device.

Bước 6: Cấu hình mạng cho 3 device


Click Network view, màn hình sẽ hiển thị CPU có trong mạng.

241
Click Connection, Chọn S7 connection là phương thức kết nối.

Click chuột trái vào cổng ethernet trên thiết bị rồi kéo kết nối đến thiết bị
khác.Trong ví dụ này ta thực hiện 2 connection: S7_Connection_1 và S7_Connection_2.

Click Connections để xem thông tin kết nối và cài đặt Local ID, Parner ID. Các ID
được thay đổi như trong hình.

Kết thúc phần cấu hình mạng ta đi đến phần viết chương trình cho Project.
Bước 7: Viết chương trình
242
Mở giao diện lập trình: PLC_1[CPU 1511-1 PN] → Program blocks → Main[OB1].
Ta cần tạo 2 Block data là TRUYEN_DULIEU và NHAN_DULIEU: Program block →
add new block → Data block → name =”TRUYEN_DULIEU” → manual → OK.

Đối với block NHAN_DULIEU ta làm tương tự. Trong Block NHAN_DULIEU
ta tạo 1 biến static THANHGHI1, Data type int.

Tương tự block TRUYEN_DULIEU cũng như vậy.

Click chuột phải vào các Block → Properties → attributes rồi bỏ tích chọn optimized
block access → OK.

243
Trong phần truyền thông ta sẽ phải sử dụng các khối PUT GET để truyền và nhận
dữ liệu.
Khối PUT: Click Communication → S7 Communication → PUT

244
Ta sẽ tạo thêm một data block để gán các thông số trạng thái của PUT như: Done,
error, status ... data block này đặt tên là PRA_DB.

245
Chuột phải vào PUT → Properties → Configuration → Partner chọn PLC_2 (Vì ta
đang thực hiện giao tiếp giữa PLC_1 và PLC_2).

Tạo 2 block data TRUYEN_DULIEU và NHAN_DULIEU cho PLC_2 tương tự đối


với PLC_1.
Tại PLC_1[CPU 1511-1 PN] → Main[OB1]. Chương trình của ta như sau:

246
Với ADDR_1: P#DB2.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1 trong block
NHAN_DULIEU của PLC_2
SD_1: : P#DB1.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1 trong block
TRUYEN_DULIEU của PLC_1.
Cứ sau 1s là giá trị của THANHGHI1 trong block TRUYEN_DULIEU của PLC_1
tăng lên 1 đơn vị và gửi vào THANHGHI1 trong block NHAN_DULIEU của PLC_2.
PLC_2[CPU 1511-1 PN] → Properties → Protection & Security click chọn Permit
access with PUT/GET communication để cho phép PUT/GET. Thực hiện tương tự đối
với PLC_1.

Tiến hành nạp chương trình và monitor.

Khối GET: ADDR_1: P#DB1.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1 trong
block NHAN_DULIEU của PLC_1
247
SD_1: P#DB2.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1 trong block
TRUYEN_DULIEU của PLC_2.
Tại PLC_2[CPU 1511-1 PN]-> Main[OB1] ta viết chương trình sau để tăng giá trị
THANHGHI1 trong block TRUYEN_DULIEU của PLC_2 1 đơn vị/s.

Tiến hành nạp chương trình. Giao tiếp giữa PLC_1 và PLC_3 ta thực hiện tương tự
các bước trên.

248
5.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5
Câu 1. Mạng truyền thông công nghiệp là gì? Hay kể tên những mạng truyền thông công
nghiệp Simatic Net.
Câu 2. Sự khác nhau giữa các mạng truyền thông Simatic Net là gì? Tốc độ truyền thông
lớn nhất của mạng Simatic Net là bao nhiêu? Áp dụng cho mạng nào?
Câu 3. Sự khác nhau giữa các giao thức truyền thông là gì?
Câu 4. CPU S7 – 1200 có thể kết nối tối đa bao nhiêu CPU remote với nhau theo chuẩn
Profinet?
Câu 5. Khảo sát phần help của những tập lệnh nằm trong tập lệnh truyền thông của S7 –
1200 theo chuẩn Profinet
Câu 6. Thực hiện kết nối truyền thông trao đổi dữ liệu giữa PLC S7 – 1500 với S7 –
1200 với các tập lệnh TSEND_C và TRCV_C.

249
TÀI LIỆU THAM KHẢO
1. Trần Ngọc Sơn, Nguyễn Đức Điển, Phạm Ngọc Sâm (2016), “Giáo trình Điều
khiển logic khả trình PLC 1”, Nhà xuất bản Lao Động.
2. Trần Văn Hiếu (2015), “Tự động hóa PLC S7-1200 với TIA Portal”, Nhà xuất
bản Khoa học và Kỹ thuật.
3. Trần Văn Hiếu (2016), “Tự động hóa PLC S7-300 với TIA Portal”, Nhà xuất bản
Khoa học và Kỹ thuật.
4. Trần Văn Hiếu (2017), “Thiết kế hệ thống HMI/SCADA với TIA Portal”, Nhà
xuất bản Khoa học và Kỹ thuật.
5. Trần Văn Hiếu (2018), “Thiết kế hệ thống mạng truyền thông công nghiệp với
TIA Portal”, Nhà xuất bản Khoa học và Kỹ thuật.
6. Siemens AG (2012), “TIA Portal Module 010”, SCE Training Curriculum
Automation System SIMATIC S7-1200.
7. Siemens AG (2012), “ SIMATIC S7-1500 Technical Slides”.
8. Siemens AG (2016), “TIA Portal Module 010, 030, 040”, SCE Training
Curriculum Automation System SIMATIC S7-1500
9. Help của phần mềm TIA Portal V14.

250

You might also like