You are on page 1of 380

BỘ CÔNG THƯƠNG

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


KHOA ĐIỆN

Nguyễn Đức Điển


Trần Ngọc Sơn, Phạm Văn Huy, Đặng Thị Tuyết Minh

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


ĐIỀU KHIỂN LẬP TRÌNH PLC
(Lưu hành nội bộ)

HÀ NỘI – 2022

1
LỜI NÓI ĐẦU

Năm 2009, Siemens giới thiệu PLC S7 – 1200 cùng với phần mềm lập trình TIA
Portal V10.5 tích hợp sẵn Step 7 Basic, lập trình cho PLC S7 – 1200 và WinCC Basic
lập trình cho dòng màn hình KTP. Năm 2011, hãng Siemen giới thiệu phần mềm TIA
Portal phiên bản V11 – Hệ thống tích hợp tự động hóa toàn diện (Totally Integrated
Automation Portal), nhằm thay thế những phần mềm: Step7 Manager – phần mềm lập
trình cho PLC S7-300/400, TIA Portal V10.5 – phần mềm lập trình cho PLC S7-1200,
WinCC Flexible – phần mềm lập trình giao diện người và máy HMI dành cho các
màn hình của Siemen, WinCC – phần mềm lập trình hệ thống SCADA … bằng một
phần mềm duy nhất. Năm 2013, Siemen giới thiệu PLC S7-1500 cùng với phần mềm
lập trình TIA Portal V13. Cho đến nay, Siemens không ngừng cải thiện nâng cấp phần
mềm và phiên bản mới nhất hiện tại (2022) là TIA Portal V17.

Để cập nhật các kiến thức mới về PLC của hãng Siemen, phần mềm TIA Portal
và phù hợp với nội dung chương trình đào tạo hiện nay cho sinh viên ngành “Công
nghệ Kỹ thuật Điều khiển và Tự động hóa” và ngành “Công nghệ Kỹ thuật điện – điện
tử” của Khoa Điện trường Đại học Kinh tế - Kỹ thuật Công nghiệp; chúng tôi biên
soạn tài liệu học tập “Điều khiển lập trình PLC”. Nội dung tài liệu đề cập đến vấn đề
lập trình ứng dụng cơ bản, phương pháp lập trình, lập trình ứng dụng nâng cao, mạng
truyền thông công nghiệp với PLC S7-1200/1500 trên phần mềm TIA Portal.
Trong quá trình biên soạn, mặc dù các tác giả đã rất cố gắng, nhưng do trình độ
và thời gian có hạn, tài liệu học tập không tránh khỏi những sai sót. Chúng tôi mong
nhận được góp ý và nhận xét của bạn đọc để tài liệu học tập được hoàn thiện hơn
trong lần tái bản sau.
Đị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
Hà Nội, Ngày 28 tháng 3 năm 2022
2
MỤC LỤC
LỜI NÓI ĐẦU ...................................................................................................... 2
MỤC LỤC............................................................................................................. 3
DANH MỤC HÌNH VẼ ....................................................................................... 7
DANH MỤC BẢNG BIỂU ................................................................................ 10
CHƯƠNG 1. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC ....................................... 13
1.2. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-200 VÀ PLC S7-300 .............. 16
1.2.1. Bộ điều khiển lập trình PLC S7-200 .................................................. 16
1.2.2. Bộ điều khiển lập trình PLC S7-300 .................................................. 22
1.3. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-1200 VÀ S7-1500 ................... 26
1.3.1. Bộ điều khiển lập trình PLC S7-1200................................................ 26
1.3.2. Bộ điều khiển lập trình PLC S7-1500................................................ 32
1.3.3. Vùng nhớ, địa chỉ và kiểu dữ liệu ...................................................... 38
1.3.3.3. Kiểu dữ liệu..................................................................................... 39
1.3.3.4. Vùng nhớ địa chỉ ............................................................................. 40
1.4. PHẦN MỀM LẬP TRÌNH PLC ............................................................... 42
1.4.1. Giới thiệu phần mềm lập trình TIA Portal ......................................... 42
1.4.2. Ngôn ngữ lập trình trên phần mềm TIA PORTAL............................ 42
1.4.3. Cấu trúc chương trình trên TIA PORTAL......................................... 45
1.4.4. Vòng quét chương trình trên TIA PORTAL ..................................... 47
1.4.5. Làm việc với TIA PORTAL và PLC S7-1200/1500 ......................... 48
1.4.5.4. Lập trình trên TIA PORTAL .............................................................. 68
1.5. CÂU HỎI ÔN TẬP................................................................................... 77
CHƯƠNG 2. LẬP TRÌNH ỨNG DỤNG CƠ BẢN VỚI PLC ....................... 79
2.1. LẬP TRÌNH VỚI TẬP LỆNH LOGIC .................................................... 79
2.1.1. Lập trình với Tag và I/O Mapping ..................................................... 79
2.1.2. Làm việc với System memory và clock memory .............................. 83
2.1.3. Lập trình với các tiếp điểm I/O .......................................................... 84
2.1.4. Lập trình với tập lệnh SET, RESET .................................................. 88
2.1.5. Lập trình với các tập lệnh nhận biết cạnh xung ................................. 91
2.2. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐỊNH THỜI ................................... 95
2.2.1. Bộ định thì tạo xung – TP .................................................................. 96

3
2.2.2. Bộ định thì trễ sườn lên không nhớ – TON ....................................... 98
2.2.3. Bộ định thì trễ sườn xuống – TOFF................................................... 99
2.2.4. Bộ định thì trễ sườn lên có nhớ – TONR......................................... 101
2.3. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ
................................................................................................................................ 103
2.3.1. Các phép toán so sánh ...................................................................... 103
2.3.2. Tập lệnh chuyển đổi dữ liệu/giá trị .................................................. 106
2.4. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐẾM............................................. 113
2.4.1. Bộ đếm lên CTU .............................................................................. 113
2.4.2. Bộ đếm xuống CTD ......................................................................... 115
2.4.3. Bộ đếm lên xuống CTUD ................................................................ 116
2.5. LẬP TRÌNH VỚI TÍN HIỆU TƯƠNG TỰ - ANALOG ....................... 118
2.5.1. Lập trình xử lý tín hiệu Analog input .............................................. 119
2.5.2. Lập trình xử lý tín hiệu Analog output ............................................ 124
2.6. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG .................................. 125
2.6.1. Câu hỏi ôn tập .................................................................................. 125
2.6.2. Bài tập ứng dụng .............................................................................. 126
CHƯƠNG 3. PHƯƠNG PHÁP LẬP TRÌNH PLC ...................................... 139
3.1. KỸ THUẬT LẬP TRÌNH PLC .............................................................. 139
3.1.1. Vòng quét chương trình ................................................................... 139
3.1.2. Cấu trúc chương trình ...................................................................... 140
3.2. PHƯƠNG PHÁP LẬP TRÌNH PLC ...................................................... 142
3.2.1. Phương pháp bảng trạng thái ........................................................... 142
3.2.2. Phương pháp hàm tác động .............................................................. 153
3.2.3. Phương pháp Grafcet ....................................................................... 164
3.3. KHỐI TỔ CHỨC OB VÀ LẬP TRÌNH KỸ THUẬT ........................... 177
3.3.1. Các khối tổ chức OB ........................................................................ 177
3.3.2. Lập trình kỹ thuật ............................................................................. 181
3.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3 ................................................... 196
3.4.1. Câu hỏi ............................................................................................. 196
3.4.2. Bài tập .............................................................................................. 197
CHƯƠNG 4. LẬP TRÌNH ỨNG DỤNG NÂNG CAO VỚI PLC ............... 200
4.1. LẬP TRÌNH ĐẾM VÀ PHÁT XUNG TỐC ĐỘ CAO .......................... 200
4
4.1.1. Đọc xung tốc độ cao ....................................................................... 200
4.1.2. Phát xung tốc độ cao với PWM ...................................................... 212
c. Hướng dẫn lập trình giải quyết vấn đề ................................................... 218
4.1.3. Điều khiển vị trí với Motion Control ............................................... 221
a. Chế độ Configuration của Axis TO ....................................................... 226
b. Chế độ Commissioning của Axis Technology ...................................... 227
4.1.3.4. Các tập lệnh điều khiển vị trí ............................................................ 228
4.2. Thiết kế hệ thống điều khiển vòng kín với bộ điều khiển PID ............... 246
4.2.1. Các tập lệnh xử lý thuật toán PID .................................................... 248
4.2.1.1 Bộ điều khiển PID_Compact ......................................................... 248
4.2.1.2. Bộ điều khiển PID_3Step ............................................................. 253
4.2.1.3. Bộ điều khiển PID_Temp ............................................................. 257
4.2.2. Thiết kế hệ thống điều khiển vòng kín với hàm PID – Compact .... 259
4.3. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4 ................................................... 270
4.3.1. Câu hỏi ôn tập .................................................................................. 270
4.3.2. Bài tập .............................................................................................. 270
CHƯƠNG 5. MẠNG TRUYỀN THÔNG CÔNG NGHIỆP ........................ 271
5.1. TỔNG QUAN MẠNG TRUYỀN THÔNG CÔNG NGHIỆP ............... 271
5.2. MẠNG TRUYỀN THÔNG ASI............................................................. 272
5.2.1. Tổng quan mạng truyền thông ASI.................................................. 272
5.2.2. Truyền thông và trao đổi dữ liệu ..................................................... 278
5.2.3. Thiết kế mạng truyền thông ASI...................................................... 281
5.3. MẠNG TRUYỀN THÔNG MODBUS .................................................. 285
5.3.1. Tổng quan mạng truyền thông Modbus ........................................... 285
5.3.2. Thiết kế mạng truyền thông Modbus RTU ...................................... 289
5.3.3. Thiết kế mạng truyền thông Modbus TCP ...................................... 312
5.4. MẠNG TRUYỀN THÔNG PROFIBUS ................................................ 327
5.4.1. Tổng quan mạng truyền thông Profibus .......................................... 327
5.4.2. Truyền thông dữ liệu với Profibus DP ............................................. 333
5.4.2.6. Một số DP Slave trong Simatic S7 ............................................... 337
5.4.3. Thiết kế mạng truyền thông Profibus DP ........................................ 338
5.5. MẠNG TRUYỀN THÔNG PROFINET ................................................ 348

5
5.5.1. Tổng quan mạng truyền thông Profinet ........................................... 348
 Các cấu hình ứng dụng của Profinet ................................................... 349
5.5.2. Tập lệnh truyền thông Profinet ........................................................ 353
5.5.3. Thiết kế mạng truyền thông Profinet ............................................... 364
5.5.3.1. Truyền thông mạng Profinet PLC S7-1200 .................................. 364
5.6. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5 ................................................... 379
TÀI LIỆU THAM KHẢO ............................................................................... 380

6
DANH MỤC HÌNH VẼ

Hình 1.1. Cấu trúc chung của một PLC ............................................................... 13


Hình 1.2. Các thành phần trong CPU của PLC ................................................... 14
Hình 1.3. Cấu trúc PLC S7-200 ........................................................................... 16
Hình 1.4. Bộ điều khiển lập trình S7-200 CPU 224 ........................................... 18
Hình 1.5. Cổng truyền thông của PLC S7-200 .................................................... 19
Hình 1.6. Kết nối PLC S7-200 với máy tính ....................................................... 19
Hình 1.7. Lắp đặt module mở rộng ..................................................................... 20
Hình 1.8. Khả năng mở rộng modul của các loại CPU ....................................... 21
Hình 1.9. Khả năng truyền thông của PLC S7-200 ............................................. 21
Hình 1.10. Cấu trúc bộ điều khiển PLC S7-300 .................................................. 22
Hình 1.11. Hình ảnh thực tế các loại CPU ........................................................... 23
Hình 1.12. Chức năng module IM ....................................................................... 25
Hình 1.13. Vị trí của PLC S7-1200 theo ứng dụng của các loại PLC S7. ........... 26
Hình 1.14. Hình ảnh PLC S7-1200 ...................................................................... 27
Bảng 1.3. Thông tin về CPU 1214C/1215C ........................................................ 28
Hình 1.15. Ví dụ cấu hình phần cứng PLC S7-1200 trên phần mềm TIA
PORTAL ....................................................................................................................... 29
Hình 1.16. Hình ảnh minh họa trạm PLC S7-1500 ............................................. 33
Hình 1.17. Vị trí của PLC S7-1500 theo ứng dụng của các loại PLC S7. ........... 33
Hình 1.18. Cấu trúc trạm PLC S7-1500............................................................... 36
Hình 1.19. Minh họa Module CPU S7-1500 ....................................................... 37
Hình 1.20. Các module mở rộng của PLC S7-1500 ............................................ 37
Hình 1.21. Chức năng phần mềm TIA Portal ...................................................... 42
Hình 1.22. Cấu trúc chương trình PLC S7-1200/1500 ........................................ 46
Hình 1.23. Chu trình thực hiện chương trình ....................................................... 47
Hình 1.24. Vòng quét chương trình ..................................................................... 47
Hình 2.1. Quá trình xử lý ngõ vào/ra tương tự .................................................. 118
Hình 3.1. Vòng quét chương trình ..................................................................... 139
Hình 3.2. Cấu trúc chương trình PLC S7-1200/1500 ........................................ 141
Hình 3.3. Chu trình thực hiện chương trình ....................................................... 142
Hình 3.4. Công nghệ máy phay đơn giản .......................................................... 144
7
Hình 3.5. Mô tả công nghệ máy phay đơn giản ................................................. 144
Hình 3.6. Sơ đồ công nghệ hệ thống điều khiển cần trục .................................. 149
Hình 3.7. Sơ đồ công nghệ ví dụ 1 .................................................................... 157
Hình 3.8. Sơ đồ công nghệ ví dụ 2 .................................................................... 159
Hình 3.9. Sơ đồ công nghệ ví dụ áp dụng 3 ....................................................... 162
Hình 3.10. Các thành phần của Grafcet ............................................................. 164
Hình 3.11. Các loại biến cố ................................................................................ 165
Hình 3.12. Các loại hành động có thể xảy ra của các giai đoạn ........................ 166
Hình 3.13. Các trường hợp phân phối và hội tụ ................................................ 167
Hình 3.14. Các trường hợp quay vòng và rẽ nhánh ........................................... 169
Hình 3.15. Phương trình logic cho giai đoạn các trong trường hợp phân phối . 170
Hình 3.16. Phương trình logic cho các giai đoạn trong trường hợp hội tụ ........ 171
Hình 3.17. 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................................................................................................ 172
Hình 3.18. Sơ đồ công nghệ ví dụ 1 phương pháp Grafcet ............................... 173
Hình 3.19. Sơ đồ Grafcet 1 cho công nghệ hình 3.18 ........................................ 174
Hình 3.20. Grafcet 2 cho công nghệ hình 3.18 .................................................. 174
Hình 3.21. Sơ đồ công nghệ ví dụ 2 phương pháp Grafcet ............................... 175
Hình 3.22. Grafcet 1 cho công nghệ hình 3.21 .................................................. 176
Hình 3.23. Grafcet 1 cho công nghệ hình 3.21 .................................................. 176
Hình 3.24. Quá trình thực hiện quét của khối tổ chức chính OB1. ................... 179
Hình 3.25. Lập trình cấu trúc với FB/FC ........................................................... 182
Hình 4.1. Sơ đồ khối của lệnh PID_Compact .................................................... 249
Hình 4.2. Sơ đồ khối của lệnh PID_Compact với Anti – Windup .................... 250
Hình 4.3. Sơ đồ khối không có tín hiệu phản hồi .............................................. 255
Hình 4.4. Sơ đồ khối có tín hiệu phản hồi ......................................................... 256
Hình 4.5. Sơ đồ khối của lệnh PIDT1 với Anti-Windup ................................... 256
Hình 4.6. Sơ đồ khối của PID_Temp ................................................................. 258
Hình 4.7. Sơ đồ khối của lệnh PIDT1 với anti-windup ..................................... 259
Hình 5.1. Sơ đồ phân cấp hệ thống điều khiển tự động hóa quá trình sản xuất 271
Hình 5.2. Vị trí của mạng AS-I trong hệ thống mạng công nghiệp ................... 273
Hình 5.3. Ghép nối cảm biến và cơ cấu chấp hành số với ASI ......................... 274
Hình 5.4. Với giao tiếp ASI việc lắp đặt trở nên đơn giản. ............................... 275
8
Hình 5.5. Các thành phần trong mạng ASI ........................................................ 276
Hình 5.6. Bộ định địa chỉ ASI slave .................................................................. 282
Hình 5.7. Định dạng chung các gói tin của Modbus ......................................... 287
Hình 5.8. Định dạng gói tin của RTU và TCP/IP .............................................. 288
Hình 5.9. Kích thước dữ liệu của gói tin ........................................................... 288
Hình 5.15. Mạng truyền thông công nghiệp ...................................................... 327
Hình 5.16. Tổng quan về công nghệ PROFIBUS .............................................. 328
Hình 5.17. Cấu trúc của giao thức PROFIBUS ................................................. 330
Hình 5.18. Thời gian chu kỳ BUS của hệ thống DP Mono-Master-Systems .... 335
Hình 5.19. Hệ thống DP Mono-Master-Systems ............................................... 335
Hình 5.20. Truyền dữ liệu theo chu kì. .............................................................. 337
Hình 5.21. Cách thức trao đổi dữ liệu giữa Master và các Slaves ..................... 339
Hình 5.22 Modul EM 277 PROFIBUS-DP ....................................................... 340
Hình 5.22. PROFINET đáp ứng mọi yêu cầu cho công nghệ tự động hóa ....... 348
Hình 5.23. Tổng quan về Profinet...................................................................... 349
Hình 5.24. Truyền thông Profinet IO và Proxy PN/BP ..................................... 350
Hình 5.25. Mối liên hệ giữa CR và AR ............................................................. 351
Hình 5.26. Một thiết bị trường có thể truy cập bởi nhiều IO Controller ........... 351
Hình 5.27. Module hóa với Profinet CBA ......................................................... 352
Hình 5.28. PROFINET theo mô hình OSI ......................................................... 352
Hình 5.29. Các kiểu cấu trúc mạng Profinet ...................................................... 353

9
DANH MỤC BẢNG BIỂU

Bảng 1.1. Đặc điểm các CPU họ 22x .................................................................. 17


Bảng 1.2. Thông tin về CPU 1211C/1212C ........................................................ 27
Bảng 1.3. Thông tin về CPU 1214C/1215C ........................................................ 28
Bảng 1.4. So sánh tính năng giữa các CPU Standard .......................................... 34
Bảng 1.5.. So sánh tính năng giữa các CPU Standard ......................................... 34
Bảng 1.6. So sánh tính năng giữa các CPU Compact .......................................... 35
Bảng 1.7. Kiểu dữ liệu của PLC S7–1200/S7-1500 ............................................ 39
Bảng 1.8. Bảng phân loại vùng nhớ PLC S7 – 1200 ........................................... 41
Bảng 3.1. Mô tả công nghệ bằng bảng trạng thái .............................................. 142
Bảng 3.2. Ví dụ mô tả công nghệ bằng bảng trạng thái..................................... 143
Bảng 3.3. Bảng chuyển trạng thái ...................................................................... 146
Bảng 3.4. Rút gọn bảng trạng thái 3.3 ............................................................... 146
Bảng 3.5. Mã hóa biến trung gian ...................................................................... 147
Bảng 3.6. Bảng Karnaugh cho biến trung gian Y .............................................. 147
Bảng 3.7. Bảng Karnaugh viết cho biến ra P ..................................................... 148
Bảng 3.8. Bảng Karnaugh viết cho biến ra T..................................................... 148
Hình 3.6. Sơ đồ công nghệ hệ thống điều khiển cần trục .................................. 149
Bảng 3.9. Bảng chuyển trạng thái cho công nghệ hệ thống điều khiển cần trục
.................................................................................................................................... 151
Bảng 3.10. Rút gọn bảng trạng thái 3.9 ............................................................. 151
Bảng 3.11. Mã hóa biến trung gian .................................................................... 151
Bảng 3.12. Bảng Karnaugh viết cho biến trung gian Y ..................................... 151
Bảng 3.13. Bảng Karnaugh cho biến ra X ......................................................... 152
Bảng 3.14. Bảng Karnaugh viết biến ra L ......................................................... 152
Bảng 3.15. Bảng Karnaugh viết cho biến P ....................................................... 152
Bảng 3.16. Bảng Karnaugh viết cho biến ra T................................................... 152
Bảng 3.17. Tín hiệu vào ra cho công nghệ hình 3.18 ........................................ 173
Bảng 3.18. Tín hiệu vào ra cho công nghệ hình 3.21 ........................................ 175
Bảng 3.19. Khối tổ chức OB và số lượng (PLC S7-1200) ................................ 177
Bảng 3.20. Kiểu dữ liệu trong khối dữ liệu DB có thể khai báo ....................... 189
Bảng 3.21. Định dạng vùng nhớ trong khối dữ liệu DB với chế độ Standard ... 193
10
Bảng 4.1. Tần số đọc xung tối đa trên thân CPU............................................... 200
Bảng 4.2. Tần số đọc xung tối đa trên SB ......................................................... 201
Bảng 4.3. Chức năng đếm của HSC trong CPU S7-1200 ................................. 202
Bảng 4.4. Tín hiệu ngõ vào của bộ HSC on-board của CPU 1211C ................. 202
Bảng 4.5. Tín hiệu ngõ vào của bộ HSC on-board của CPU 1212C ................. 203
Bảng 4.6. Tín hiệu ngõ vào của bộ HSC on-board của CPU 1214C…1217C .. 203
Bảng 4.7. Bảng tín hiệu ngõ vào của bộ HSC và SB......................................... 204
Bảng 4.8. Kiểu dữ liệu và địa chỉ của các bộ HSC ............................................ 207
Bảng 4.9. Mã code báo trạng thái ..................................................................... 207
Bảng 4.10. Số lượng kênh phát xung và tần số của CPU S7-1200 ................... 212
Bảng 4.11. Tham số và kiểu dữ liệu của tập lệnh CTRL_PWM ....................... 213
Bảng 4.12. Tần số phát xung lớn nhất của ngõ ra on- board ............................. 214
Bảng 4.13. Tần số phát xung lớn nhất của ngõ ra SB ........................................ 215
Bảng 4.14. Địa chỉ các bộ PWM ....................................................................... 216
Bảng 4.15. Những công cụ hỗ trợ điều khiển truyền động ................................ 225
Bảng 4.16. Tham số cho tập lệnh MC_Power ................................................... 228
Bảng 4.17. Tham số tập lệnh MC _Reset .......................................................... 230
Bảng 4.18. Tham số tập lệnh MC_ Home ......................................................... 232
Bảng 4.19. Tham số tập lệnh MC_ Halt ............................................................ 233
Bảng 4.20. Tham số tập lệnh MC_MoveAbsolute ............................................ 233
Bảng 4.21. Tham số tập lệnh MC_MoveRelative ............................................. 234
Bảng 4.22. Tham số tập lệnh MC_MoveVelocity ............................................. 235
Bảng 4.23. Tham số tập lệnh MC_MoveJog ..................................................... 237
Bảng 4.24. Ảnh hưởng của thay đổi tham số PID: ............................................ 247
Bảng 5.1. Bảng quy định địa chỉ của ASI slave ................................................ 279
Bảng 5.2. Các mã chức năng để truy xuất dữ liệu của moddus ......................... 288
Bảng 5.3. Tham số lệnh Modbus_Comm_Load ................................................ 290
Bảng 5.4. Tham số lệnh Modbus_Master .......................................................... 293
Bảng 5.5. Tham số lệnh Modbus_Slave ............................................................ 294
Bảng 5.6. Mối quan hệ giữa MODE, mã chức năng ......................................... 295
Bảng 5.7. Tham số lệnh MB_CLIENT .............................................................. 313
Bảng 5.8. Tham số lệnh MB_SERVER ............................................................. 314

11
Bảng 5.9. Các tham số cấu hình của TCON_IP_v4 .......................................... 315
Bảng 5.10. Protocol và khai báo vùng nhận dữ liệu. ......................................... 353
Bảng 5.11. Protocol và lệnh truyền thông ......................................................... 354
Bảng 5.12. Tham số của tập lệnh TSEND_C .................................................... 356
Bảng 5.13. Tham số của tập lệnh TRCV_C ...................................................... 357
Bảng 5.14. Tham số của tập lệnh TCON/TDISCON ........................................ 359
Bảng 5.15. Tham số của tập lệnh TSEND ......................................................... 359
Bảng 5.16. Tham số của tập lệnh TRCV_C ...................................................... 360
Bảng 5.17. Tham số của tập lệnh GET .............................................................. 362
Bảng 5.18. Tham số của tập lệnh PUT .............................................................. 363

12
CHƯƠNG 1
BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC

Nội dung chương 1 sẽ trình bày cơ bản về cấu trúc phần cứng, đặc điểm của PLC
S7-200, S7-300, S7-1200, S7-1500. Các vấn đề từ việc kết nối giữa máy tính với PLC
S7-1200/1500, cách đặt và reset địa chỉ IP của CPU S7-1200/1500 về chế độ Reset
Factory. Cũng như giới thiệu một số khái niệm cơ bản về mạng Ethernet: IP Address,
Subnet mask, Router, …. Và việc khai báo, cấu hình phần cứng cho PLC S7-
1200/1500 trên phần mềm TIA Portal.
1.1. CẤU TRÚC CHUNG CỦA PLC
Các bộ điều khiển PLC được sản xuất theo dòng sản phẩm. Khi mới xuất xưởng,
chúng chưa có một chương trình cho một ứng dụng nào cả. Tất cả các cổng logic cơ
bản, timer, counter, ... được nhà chế tạo tích hợp trong chúng và được kết nối với nhau
bằng chương trình được viết bởi người dùng cho một nhiệm vụ điều khiển cụ thể nào
đó.
Các bộ điều khiển lớn thì các thành phần chức năng chuyên dụng được lắp thành
các modul riêng. Đối với các bộ điều khiển nhỏ, chúng được tích hợp trong bộ
điều khiển. Các bộ điều khiển nhỏ này có số lượng ngõ vào/ra cho trước cố định.

Hình 1.1. Cấu trúc chung của một PLC


Cấu trúc của một PLC có thể được mô tả như hình 1.1, gồm modul ngõ vào dùng
để đọc các tín hiệu ngõ vào như nút bấm, cảm biến…Sau đó các tín hiệu này được đưa
vào CPU để xử lý theo chương trình người dùng lập trình. Sau khi CPU đã xử lý sẽ
truyền tín hiệu tới các cơ cấu chấp hành thông qua module ngõ ra.
Các thành phần của CPU minh họa như hình 1.2.

13
Hình 1.2. Các thành phần trong CPU của PLC
 Bộ nhớ chương trình
Bộ nhớ chương trình trong PLC là một bộ nhớ điện tử đặc biệt có thể đọc được.
Nếu sử dụng bộ nhớ đọc-ghi được (RAM), thì nội dung của nó luôn luôn được thay
đổi ví dụ như trong trường hợp vận hành điều khiển. Trong trường hợp điện áp nguồn
bị mất thì nội dung trong RAM có thể vẫn được giữ lại nếu như có sử dụng Pin dự
phòng.
Nếu chương trình điều khiển làm việc ổn định, hợp lý, nó có thể được nạp vào
một bộ nhớ cố định, ví dụ như EPROM, EEPROM. Nội dung chương trình ở EPROM
có thể bị xóa bằng tia cực tím.
Bộ nhớ đọc-ghi RAM (random-access memory)
Bộ nhớ ghi-đọc có 1 số lượng các ô nhớ xác định. Mỗi ô nhớ có 1 dung lượng
nhớ cố định và nó chỉ tiếp nhận 1 lượng thông tin nhất định. Các ô nhớ được ký hiệu
bằng các địa chỉ riêng của nó. Bộ nhớ này chứa các chương trình còn sửa đổi hoặc các
dữ liệu, kết quả tạm thời trong quá trình tính toán, lập trình. Đặc điểm của loại này là
dữ liệu sẽ mất đi khi hệ thống mất điện. RAM được hình dung như một tủ chứa có
nhiều ngăn kéo. Mỗi ngăn kéo được đánh số một địa chỉ và người ta có thể cất vào
hoặc lấy các dữ liệu ra.
Bộ nhớ cố định ROM (read-only memory)
Bộ nhớ cố định (ROM) chứa các thông tin không có khả năng xóa được và không
thể thay đổi được. Các thông tin này do các nhà sản xuất viết ra và không thể thay đổi
được. Chương trình trong bộ nhớ ROM có nhiệm vụ sau:
14
- Điều khiển và kiểm tra các chức năng hoạt động của CPU. Được gọi là hệ điều
hành.
- Dịch ngôn ngữ lập trình thành ngôn ngữ máy.
Một ROM có thể so sánh với một quyển sách. Trong đó nó chứa các thông tin cố
định, không thể thay đổi được và ta chỉ đọc các thông tin đó mà thôi. Đặc điểm của
loại này là dữ liệu vẫn tồn tại khi mất điện.
EPROM (eraseable read-only memory)
EPROM là một bộ nhớ cố định có thể lập trình và xóa được. Nội dung của
EPROM có thể xóa bằng tia cực tím và có thể lập trình lại.
EEPROM (electrically eraseable read-only memory)
EPROM là bộ nhớ cố định có thể lập trình và xóa bằng điện. Mỗi ô nhớ trong
EEPROM cho phép lập trình và xóa bằng điện.
 Hệ điều hành
Sau khi bật nguồn cung cấp cho bộ điều khiển, hệ điều hành của nó sẽ đặt các
counter, timer, dữ liệu và bit nhớ với thuộc tính non-retentive (không được nhớ bởi
Pin dự phòng) cũng như ACCU về 0.
Để xử lý chương trình, hệ điều hành đọc từng dòng chương trình từ đầu đến
cuối, tương ứng hệ điều hành thực hiện chương trình theo các câu lệnh.
 Bit nhớ (Bit memory)
Các bit memory là các phần tử nhớ, mà hệ điều hành ghi nhớ trạng thái tín hiệu.
 Bộ đệm (Proccess Image)
Bộ đệm là một vùng nhớ, mà hệ điều hành ghi nhớ các trạng thái tín hiệu ở các
ngõ vào ra nhị phân.
 Accumulator
Accumulator là một bộ nhớ trung gian mà qua nó timer hay counter được nạp
vào hay thực hiện các phép toán số học.
 Counter, Timer
Timer và counter cũng là các vùng nhớ, hệ điều hành ghi nhớ các giá trị đếm
trong nó.
 Hệ thống Bus
Bộ nhớ chương trình, hệ điều hành và các modul ngoại vi (các ngõ vào và ngõ
ra) được kết nối với PLC thông qua Bus nối. Một Bus bao gồm các dây dẫn mà các dữ
liệu được trao đổi. Hệ điều hành tổ chức việc truyền dữ liệu trên các dây dẫn này.

15
1.2. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-200 VÀ PLC S7-300
1.2.1. Bộ điều khiển lập trình PLC S7-200
PLC S7-200 là thiết bị điều khiển lập trình loại vừa và nhỏ của hãng Siemens
(CHLB Đức) có cấu trúc theo kiểu modul và các modul mở rộng (xem hình 1.3).
Thành phần cơ bản của S7 - 200 là khối xử lý trung tâm (CPU: Central Processing
Unit) bao gồm hai chủng loại: CPU 21x và CPU 22x. Hiện nay, CPU 22x với nhiều
tính năng vượt trội đã thay thế loại CPU21x và hiện đang được sử dụng rất nhiều (loại
CPU21x ngày nay không còn sản xuất).

Hình 1.3. Cấu trúc PLC S7-200


Tùy vào các ứng dụng và độ phức tạp của bài toán điều khiển, mà người dùng
lựa chọn CPU phù hợp. Dưới đây trình bày đặc điểm của CPU 224, còn đặc điểm các
loại CPU 22x khác xem chi tiết bảng 1.1. Sơ đồ bề mặt của CPU 224 được cho như
hình 3.2.
CPU 224 bao gồm:
- Bộ nhớ chương trình (chứa trong EEPROM): 8192 bytes (8 KB). Bộ nhớ này
thuộc miền bộ nhớ đọc ghi được và không bị mất dữ liệu nhờ được lưu trữ trong
EEPROM. Vùng nhớ với tính chất như vậy gọi là vùng nhớ non – voltatile.
- Bộ nhớ dữ liệu: 8192 bytes
- Số lượng ngõ vào số là 14 và số lượng ngõ ra số là 10 được tích hợp trong
CPU.
- Số module mở rộng là 7 gồm cả modul tương tự (analog).
- Số lượng vào/ra số cực đại là 64.
- 256 bộ timer, chia làm 3 loại theo độ phân giải khác nhau: 4 Timer 1ms, 16
Timer 10 ms và 236 Timer có độ phân giải 100ms.
- 256 bộ đếm counter.
- 256 bit trung gian (Bit memory - M).
- 6 bộ đếm tốc độ cao (High-speed counters): 6 counter 30 KHz (chế độ Single
phase), 4 counter 20 KHz (chế độ Two phase).
- 2 ngõ vào analog tích hợp sẵn (biến trở)

16
- 2 bộ phát xung tốc độ cao 20 KHz (Pulse outputs).
- Các chế độ ngắt và xử lý ngắt gồm: ngắt truyền thông, ngắt theo sườn lên hoặc
xuống, ngắt thời gian, ngắt của bộ đếm tốc độ cao và ngắt truyền xung.
Bảng 1.1. Đặc điểm các CPU họ 22x

Đặc điểm CPU 221 CPU 222 CPU 224 CPU 224 XP CPU 226

Bộ nhớ chương trình 4096 bytes 4096 bytes 8192 bytes 12288 bytes 16384 bytes

Bộ nhớ dữ liệu 2048 bytes 2048 bytes 8192 bytes 10240 bytes 10240 bytes

Lưu trữ dữ liệu khi 50 giờ 50 giờ 100 giờ 100 giờ 100 giờ
mất nguồn nuôi

Cổng vào ra số 6 In/4 Out 8 In/6 Out 14In/10Out 14 In/10 Out 24 In/16 Out
Cổng vào ra tương tự - - - 2 In/1 Out -

Memory 256/256/256 256/256/256 256/256/256 256/256/256 256/256/256


bits/timers/counters

Khả năng mở rộng 0 modul 2 modul 7 modul 7 modul 7 modul

Bộ đếm tốc độ cao


Một pha 4 x 30 KHz 4 x 30 KHz 6 x 30 KHz 4 x 30 KHz 6 x 30 KHz
2 x 200 KHz
Hai pha 2 x 20 KHz 2 x 20 KHz 4 x 20 KHz 3 x 20 KHz 4 x 20 KHz
1 x 100 KHz

Phát xung tôc độ cao 2 x 20 KHz 2 x 20 KHz 2 x 20 KHz 2 x 20 KHz 2 x 20 KHz

Biến trở Analog trên 1 1 2 2 2


CPU

Thời gian xử lý lệnh 0,22 µs 0,22 µs 0,22 µs 0,22 µs 0,22 µs

Real - time clock Card Card Tích hợp Tích hợp Tích hợp

Cổng truyền thông 1 x RS485 1 x RS485 1 x RS485 2 x RS485 2 x RS485

17
Hình 1.4. Bộ điều khiển lập trình S7-200 CPU 224
 Các đèn báo trên CPU
- SF (Đèn đỏ): Đèn đỏ SF báo hiệu hệ thống bị lỗi. Đèn SF sáng lên khi PLC có
lỗi.
- RUN ( Đèn xanh): cho biết PLC đang ở
chế độ làm việc và thực hiện chương
trình được nạp vào trong bộ nhớ chương
trình của PLC.
- STOP (Đèn vàng): Đèn vàng STOP chỉ
định PLC đang ở chế độ dừng. Dừng
chương trình đang thực hiện lại.
- Ix.x (Đèn xanh): Đèn xanh ở cổng vào
chỉ định trạng thái tức thời của cổng Ix.x.
Đèn này báo hiệu trạng thái của tín hiệu theo giá trị logic của cổng.
- Qy.y (Đèn xanh): Đèn xanh ở cổng ra chỉ định trạng thái tức thời của cổng
Qy.y. Đèn này báo hiệu trạng thái của tín hiệu theo giá trị logic của cổng.
 Công tắc chọn chế độ làm việc trên PLC
- RUN: cho phép PLC thực hiện chương trình
trong bộ nhớ, PLC sẽ chuyển từ RUN qua
STOP nếu gặp sự cố.
- STOP: PLC dừng công việc thực hiện
chương trình ngay lập tức. Ở chế độ STOP,
PLC cho phép hiệu chỉnh, nạp, xóa một
chương trình.
18
- TERM: cho phép máy tính lập trình quyết định chế độ làm việc của PLC .
Dùng phần mềm lập trình điều khiển RUN, STOP.
 Cổng truyền thông trên PLC
S7-200 sử dụng cổng truyền thông nối tiếp RS485 với phích nối 9 chân để phục
vụ cho việc ghép nối với thiết bị lập trình hoặc với các trạm PLC khác hay với các
màn hình HMI. Tốc độ truyền cho máy lập trình kiểu PPI là 9600 baud. Tốc độ truyền
cung cấp của PLC theo kiểu tự do là từ 300 baud đến 38400 baud.
Chân Giải thích
1 Đất
2 24 VDC
3 Truyền và nhận dữ liệu
4 Không sử dụng
5 Đất
6 5 VDC (điện trở trong 100Ω)
7 24 VDC (120mA tối đa)
8 Truyền và nhận dữ liệu
9 Không sử dụng
Hình 1.5. Cổng truyền thông của PLC S7-200
Ghép nối S7-200 với máy tính PC qua cổng RS-232 cần có cáp nối PC/PPI với
bộ chuyển đổi RS232/RS485, và qua cổng USB ta có cáp USB/PPI.

a) Kết nối PLC với máy tính b) Cáp PC/PPI USB


Hình 1.6. Kết nối PLC S7-200 với máy tính

19
 Pin nuôi và Card nhớ
S7-200 cung cấp nhiều biện pháp đảm bảo cho chương trình người dùng, dữ liệu
chương trình và cấu hình dữ liệu được duy trì sau:
Một tụ điện với điện dung lớn cho phép lưu trữ bộ nhớ RAM sau khi bị mất
nguồn điện cung cấp. Tùy theo loại CPU mà thời gian lưu trữ có thể kéo dài nhiều
ngày. Chẳng hạn ở CPU 224 là khoảng 100 giờ.
Nguồn Pin có thể được sử dụng để mở rộng thời gian lưu trữ cho các dữ liệu
trong RAM, có thể lên đến 200 ngày kể từ khi mất nguồn điện. Nguồn của Pin sẽ được
lấy sau khi tụ điện đã xả hết.
Card nhớ: Được sử dụng để lưu trữ chương trình. Chương trình chứa trong card
nhớ bao gồm: program block, data block, system block, công thức (recipes), dữ liệu
đo (data logs), và các giá trị cưỡng bức (force values).
 Biến trở chỉnh giá trị analog
Hai biến trở này được sử dụng như hai ngõ vào analog cho phép điều chỉnh các
biến cần phải thay đổi và sử dụng trong chương trình.
 Các modul mở rộng
Trên các CPU đã tích hợp sẵn một số các ngõ vào và ngõ ra số, chẳng hạn như
CPU 224 có sẵn 16 ngõ vào và 14 ngõ ra. Tuy nhiên trong thực tế, xuất phát từ yêu
cầu điều khiển như: cần nhiều hơn số ngõ vào/ra có sẵn, có sử dụng tín hiệu analog
hay có các yêu cầu về truyền thông, nối mạng các PLC…mà ta phải gắn thêm vào
CPU các khối mở rộng có các chức năng khác nhau.
Các modul mở rộng được ghép nối bên phải của CPU, làm thành một móc xích
như hình 1.7. Khả năng nắp đặt module mở rộng với từng loại CPU như hình 1.8, tối
đa là 7 modul với CPU 224, CPU 224XP, CPU 224XPsi, CPU 226.

Hình 1.7. Lắp đặt module mở rộng

20
Hình 1.8. Khả năng mở rộng modul của các loại CPU
Các modul có thể ra các cổng vào ra số, vào ra tương tự, modul chức năng chuyên
dụng, modul truyền thông. Khả năng truyền thông của S7-200 được cho như hình 1.9.

Hình 1.9. Khả năng truyền thông của PLC S7-200


Địa chỉ các cổng vào ra có sẵn của CPU được chỉ sẵn trên bề mặt CPU, vậy địa
chỉ các cổng vào ra của các modul mở rộng được xác định như thế nào?
Các modul mở rộng số hay tương tự đều chiếm chỗ trong bộ đệm, tương ứng với
số vào ra của modul. Với các tín hiệu vào ra số, S7-200 truy xuất bộ đệm theo từng
byte, còn các tín hiệu vào ra tương tự thì truy xuất bộ đệm 2 từ (2 word). Để nắm được
quy ước xác định địa chỉ của các cổng vào ra của modul mở rộng, chúng ta xem một

21
ví dụ về cách đặt địa chỉ cho các modul mở rộng trên CPU 224XP do tài liệu của hãng
cung cấp dưới đây.

1.2.2. Bộ điều khiển lập trình PLC S7-300


S7-300 là PLC cỡ vừa của hãng Siemens. Bộ điều khiển PLC S7-300 được chia
nhỏ thành nhiều modul. Số các module được sử dụng nhiều hay ít tùy theo từng bài
toán, song tối thiểu bao giờ cũng phải có một module chính là module CPU. Các
module còn lại là những module nhận/truyền tín hiệu với đối tượng điều khiển, các
module chuyên dụng như PID, điều khiển động cơ …Chúng được gọi chung là
module mở rộng.
Tất cả các module được gá trên những thanh ray (Rack).

Hình 1.10. Cấu trúc bộ điều khiển PLC S7-300


Trên mỗi rack có thể gá được 8 module mở rộng (không kể CPU và module
nguồn nuôi ). Một CPU S7-300 có thể làm việc trực tiếp với nhiều nhất 4 racks .

22
 Module CPU
Module CPU là loại module có chứa bộ vi xử lý, hệ điều hành, bộ nhớ, các bộ
thời gian, bộ đếm, cổng truyền thông… và có thể còn có một vài cổng vào ra (cổng
vào ra onboard) . Có nhiều loại CPU khác nhau, đặt tên theo bộ vi xử lý: module CPU
312, module CPU 314, module CPU 315, … Những module CPU cùng sử dụng một
loại vi sử lý, nhưng khác nhau về cổng vào ra onboard cũng như có thêm các hàm đặc
biệt sẽ được phân biệt với nhau trong tên gọi bằng cách thêm cụm chữ cái IFM
(Integrated Function Module). Ví dụ module CPU 312 IFM, CPU 314 IFM …
Module CPU có hai cổng truyền thông, trong đó cổng truyền thông thứ hai có
chức năng chính là phục vụ việc nối mạng phân tán. Tất nhiên kèm theo cổng truyền
thông thứ hai này là những phần mềm tiện dụng thích hợp cũng đã được cài sẵn trong
hệ điều hành. Các loại CPU này phân biệt với các CPU khác bằng cách thêm cụm từ
DP (Distributed Port).Ví dụ module CPU 315 –DP.
Mô tả module CPU:

Hình 1.11. Hình ảnh thực tế các loại CPU


 Mode hoạt động :
- MRES = Reset hệ thống
- STOP = Dừng chương trình
- RUN = Chạy chương trình, không đọc ghi
- RUN-P = Chạy chương trình , đọc ghi được từ máy lập trình
 Báo trạng thái (Leds)
- SF = Lỗi hệ thống
- BATF = Lỗi hết pin hoặc không có pin

23
- DC5V = Báo nguồn 5 V DC.
- FRCE = FORCE Báo lỗi chức năng một trong các I/O
- RUN = Nhấp nháy khi CPU khởi động, ổn định khi CPU làm việc.
- STOP = Báo ổn định khi dừng , chớp khi yêu cầu reset, chớp nhanh khi
đang reset.
 Module PS
Module PS ( Power supply) : Module nguồn nuôi . Có 3 loại 2A, 5A và 10A .
 Module SM
Module SM (Signal mudule) : module mở rộng cổng tín hiệu vào ra, bao gồm 5
loại chính:
1) DI (Digital input) : Module mở rộng các cổng vào số. Số các cổng vào số mở
rộng có thể là 8, 16 hoặc 32 tùy thuộc vào từng loại module .
2) DO (Digital output) : Module mở rộng các cổng ra số . Số các cổng ra số mở
rộng có thể là 8, 16 hoặc 32 tùy thuộc vào từng loại module .
3) DI/DO : Module mở rộng các cổng vào ra số . Số các cổng vào ra số mở rộng
có thể là 8 vào/8 ra hoặc 16 vào/16 ra tùy thuộc vào từng loại module .
4) AI (Analog input) : Module mở rộng các cổng vào tương tự. Về bản chất chúng
chính là bộ chuyển đổi tương tự số 12 bits (AD), tức là mỗi tín hiệu tương tự
được chuyển thành tín hiệu số (nguyên) có độ dài 12 bits. Số cổng vào tương tự
có thể là 2, 4 hoặc 8 tùy từng module.
5) AO (Analog output) : Module mở rộng các cổng ra tương tự . Chúng chính là
bộ chuyển đổi số tương tự (DA. Số các cổng ra tương tự có thể là 2 hoặc 4 tùy
từng module.
6) AI/AO : Module mở rộng các cổng vào ra tương tự . Số các cổng vào ra tương
tự có thể là 4 vào/2 ra, hoặc 4 vào/4 ra tùy từng loại module.
 Modul IM
IM (Interface module ): Module ghép nối các racks. Đây là module chuyên dụng
có nhiệm vụ nối từng nhóm các module mở rộng với nhau thành một khối và được
quản lý chung bởi một module CPU.
Bộ IMS (send) là khối gửi , bộ IMR (receive) là khối nhận

24
Hình 1.12. Chức năng module IM
Cấu hình 2 chồng với IM 365 tối đa 1m (không dùng nguồn thêm, không nối
CP), nhiều chồng với IM 360/IM361 tối đa 10m (nếu cần, nguồn cung cấp gắn thêm ở
giá mở rộng ).
 Module FM
FM ( Function module ) : Module có chức năng điều khiển riêng, ví dụ như
module điều khiển động cơ bước , module điều khiển động cơ servo, module PID,
module điều khiển vòng kín, bộ đếm tốc độ cao ,…
 Controller Modules: Các module chức năng điều khiển.
 M7 Application Modules: Các modules chức năng ứng dụng cho M7-300.
 CNC’s: Các module chức năng cho điều khiển số.
 Counter modules: Các module counter.
 Positioning Modules: Các module chức năng vị trí.
 Module CP
CP ( Communication module ) : Module phục vụ truyền thông trong mạng giữa
các PLC với nhau hoặc giữa PLC và máy tính .
 AS-Interface: Các module truyền thông kết nối giao diện AS-i của S7-300.
 Industrial Ethernet: Các module truyền thông cho Industrial Ethernet của S7-
300.
 PROFIBUS: Các module dành cho Profibus của S7-300.
 Point –to- Point: Các module truyền thông PtP của S7-300.

25
1.3. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-1200 VÀ S7-1500
1.3.1. Bộ điều khiển lập trình PLC S7-1200
Bộ điều khiển PLC S7 – 1200 được sử dụng với sự linh hoạt và khả năng mở
rộng phù hợp đối với hệ thống tự động hóa nhỏ và vừa tương ứng với người dùng cần.
Thiết kế nhỏ gọn, cấu hình linh động, hỗ trợ mạnh mẽ về tập lệnh đã làm cho PLC S7-
1200 trở thành một giải pháp hoàn hảo trong việc điều khiển, chọn lựa phù hợp đối
với nhiều ứng dụng khác nhau.
Để có thể làm rõ hơn vấn đề chúng ta muốn nói tới, ta sử dụng hình 1.13 để
minh họa chi tiết về vị trí, vài trò của PLC S7 – 1200 được Siemens đưa ra.

Hình 1.13. Vị trí của PLC S7-1200 theo ứng dụng của các loại PLC S7.
CPU của S7 – 1200 được kết hợp với một vi xử lý, một bộ nguồn tích hợp, các
tín hiệu đầu vào/ra, thiết kế theo nền tảng Profinet, các bộ đếm/phát xung tốc độ cao
tích hợp trên thân, điều khiển vị trí (motion control), và ngõ vào Analog đã làm cho
PLC S7 – 1200 trở thành bộ điều khiển nhỏ gọn nhưng mạnh mẽ. Sau khi download
chương trình xuống CPU vẫn lưu giữ những logic cần thiết để theo dõi và kiểm soát
các thiết bị/thông tin trong ứng dụng của người lập trình. CPU giám sát ngõ vào và
những thay đổi của ngõ ra theo logic trong chương trình người dùng có thể bao gồm
các phép toán logic của đại số Boolean, những bộ đếm, bộ định thì, các phép toán
phức tạp, những giao tiếp truyền thông với những thiết bị thông minh khác.
PLC S7 – 1200 được tích hợp sẵn 1 cổng Profinet để truyền thông mạng
Profinet. Ngoài ra, PLC S7 – 1200 có thể truyền thông Profibus, RS485 hoặc RS232
thông qua các module mở rộng.

26
Hình 1.14. Hình ảnh PLC S7-1200
Hiện nay, PLC S7-1200 có nhiều dòng CPU khác nhau như: CPU 1211C, CPU
1212C, CPU 1214C, CPU 1215C, CPU 1217C và đồng thời cho người dùng có nhiều
sự lựa chọn với các nguồn điện áp AC/DC, tín hiệu đầu vào/ra Relay/DC…
Tuy nhiên, tùy ứng dụng và chương trình mà người dùng lựa chọn CPU cho phù
hợp với cấu hình hệ thống và giá thành để làm cho hệ thống tốt nhưng kinh tế thấp.
Bảng 1.2. Thông tin về CPU 1211C/1212C

Đặc điểm CPU 1211C CPU 1212C


Work 50 KB 50 KB
Bộ nhớ chương trình Load 1 MB
Retentive 10 Kb
Digital 6DI/4DO 8DI/6DO
I/O tích hợp
Analog 2AI
Input 1024 Byte
Process image
Output 1024 Byte
Vùng nhớ M 4096 Byte
Module mở rộng - 2
SB, BB, CB 1
Module mở rộng CM 3
Tổng cộng Lên tới 6
Bộ đếm tốc độ cao HSC 1 MHz -
100/180 KHz I0.0 I0.5

27
30/120 KHz - I0.6 I0.7

Tổng cộng Lên tới 4

Bộ phát xung 1 MHz -


PTO/PWM(2) 100 KHz Q0.0 Q0.3

20 KHz Q0.4 Q0.5

Thẻ nhớ Hỗ trợ


Lưu trữ thời gian thực: 20 ngày/nhỏ nhất 12 ngày tại 40 C

Tích hợp cổng Profinet 1


Tốc độ xử lý phép toán số thực 2.3 /lệnh

Tốc độ xử lý phép toán Boolean 0.08 /lệnh

Bảng 1.3. Thông tin về CPU 1214C/1215C

Đặc điểm CPU1214C CPU 1215C


Work 100 KB 100 KB
Bộ nhớ chương trình Load 4 MB
Retentive 10 KB
Digital 14 DI/10 DO
I/O tích hợp
Analog 2 AI 2AI/2AO
Input 1024 Byte
Process image
Output 1024 Byte
Vùng nhớ M 8196 Byte
Module mở rộng 8
SB, BB, CB 1
Module truyền thông CM 3
Tổng cộng Lên tới 6
1 MHz -
Bộ đếm tốc độ cao HSC
100/180 KHz I0.0 I0.5

30/120 KHz I0.6 I1.5

28
Tổng cộng Lên tới 4

Bộ phát xung 1 MHz -


PTO/PWM(2) 100 KHz Q0.0 Q0.3

20 kHz Q0.4 Q1.1

Thẻ nhớ Hỗ trợ


Lưu trữ thời gian thực: 20 ngày/nhỏ nhất 12 ngày tại 40 C

Tích hợp cổng Profinet 1


Tốc độ xử lý phép toán số thực 2.3 /lệnh

Toán số xử lý phép toán boolean 0.08 /lệnh

Module phần cứng của PLC S7-1200


Cấu trúc phần cứng PLC S7-1200 bao gồm các module ghép lại với nhau, các
module được gắn vào nhau trên một thanh Rack, một thanh Rack bao gồm một
module CPU và các module mở rộng. Cấu hình phần cứng tối thiểu cần có là module
CPU, có thể mở rộng tối đa 8 module mở rộng tín hiệu I/O và 3 module truyền thông.

Hình 1.15. Ví dụ cấu hình phần cứng PLC S7-1200 trên phần mềm TIA PORTAL
 Module xử lý trung tâm CPU
Module xử lý trung tâm CPU chứa vi xử lý, hệ điều hành, bộ nhớ, các bộ định
thì, bộ đếm, cổng truyền thông Profinet… module lưu trữ chương trình người dùng
trong bộ nhớ của nó. Ngoài ra, module CPU có thể tích hợp một vài cổng vào/ra số,
analog tùy thuộc vào mã hàng (order number).

29
Cổng profinet tích hợp cho phép CPU có thể kết nối với HMI, máy tính lập trình,
hay những PLC S7 thông qua PROFINET.
 Module mở rộng tín hiệu SM
Các module mở rộng tín hiệu SM có thể là module mở rộng tín hiệu vào/ra số,
vào/ra Analog và được gắn bên phải CPU. Với CPU 1214 có thể quản lý được tối đa 8
module SM, việc kết nối các module này minh họa như hình dưới đây.

Các module SM cụ thể như sau:


Module AI: module đọc analog (SM1231) với các loại tín hiệu khác nhau như
dòng 4 – 20mA (theo cách đấu 2 dây và 4 dây), đọc tín hiệu áp 0 – 10 VDC, đọc tín
hiệu RTD (SM1231 RTD), TC (SM1231 RTD)
Module AI/AO: module vừa đọc/xuất Analog (SM1234)
Module AO: module xuất tín hiệu Analog (SM1232)
Module DI: module đọc tín hiệu Digital (SM1221x)
Module DO: module xuất tín hiệu Digital (SM1221x).
Module DI/DO: module vừa đọc/xuất tín hiệu Digital (SM1223x).

30
 Module xử lý truyền thông
Module truyền thông được gắn trái CPU và được ký hiệu là CM1241 hoặc CP
124x. Tối đa chỉ có thể gắn được 3 module mở rộng về truyền thông.
 Module xử lý truyền thông CM 1241
Module truyền thông CM 1241 hỗ trợ các protocol theo các tiêu chuẩn như:
Truyền thông ASCII: được sử dụng để giao tiếp với những hệ thống của bên thứ
3 (third – party systems) để truyền những giao thức protocol đơn giản như kiểm tra
các ký tự đầu và cuối hoặc kiểm tra các thông số của khối dữ liêu…
Truyền thông Modbus: được sử dụng truyền thông theo tiêu chuẩn Modbus RTU
Modbus Master: có thể giao thức với PLC S7 là Master
Modbus Slave: có thể giao thức với PLC S7 là Slave; và không cho phép trao đổi
dữ liệu giữa slave với slave trong truyền thông.
Truyền thông USS Drive: lệnh cho phép kết nối USS với Drive. Các Drive có
thể trao đổi dữ liệu theo chuẩn RS485, trong truyền thông cho phép điều khiển Drive
cũng như đọc và ghi các thông số cần thiết.
Truyền thông Point – to – point: kết nối đa điểm được sử dụng theo truyền thông
trao đổi dữ liệu nối tiếp. Truyền thông đa điểm được ứng dụng trong hệ thống tự động
hóa Simatic S7 và những hệ thống tự động hóa khác để liên kết với máy in, điều khiển
robot, máy scan, đọc mã vạch…
Truyền thông Profibus: được sử dụng với tiêu chuẩn profibus DP hỗ trợ DPV1,
có thể sử dụng làm Master hoặc slave tùy thuộc vào ứng dụng và module sử dụng.
Module hỗ trợ AS – I Master.
 Module xử lý truyền thông CP124x
Module xử lý truyền thông CP 124x hỗ trợ những chuẩn truyền thông về
GPRS/GM, Messages/Email, DNP3, SNMP, TeleService…
Module CP1242 – 7: Hỗ trợ kết nối PPLC S7 – 1200 với GPRS/GSM
Module CP1243 – 1: Hỗ trợ kết nối PLC S7 – 1200 với Messages/Email, DNP3,
SNMP, Redundancy…
 Module nguồn cung cấp Power module
Module nguồn Power module cung cấp nguồn hoạt động cho các module phần
cứng kết nối với CPU. Tên viết tắt module nguồn của S7 – 1200 là PM 1207
Module nguồn PM 1207 yêu cầu áp cung cấp đầu vào là 120/230VAC và ngõ ra
là 24 VDC/2.5A được thiết kế riêng dàng cho PLC S7 – 1200 và không cần khai báo
trong cấu hình phần cứng.
 Signal board
31
Signal board được cắm phía mặt trên thân CPU để có thể mở rộng thêm DI/DO,
AI/AO, Pin backup (battery board) dữ liệu về thời gian thực, mở rộng truyền thông
với RS485 (Communications boards).

 Các module đặc biệt


Module I/O Link: Module được sử dụng có thể kết nối lên tới 4 thiết bị I/O –
Link phù hợp với đặc tính kỹ thuật I/O – Link V1.1. Các thông số của I/O – Link có
thể cấu hình bằng phần mềm Port Configuration Tool (PCT) V3.2 hoặc phiên bản cao
hơn.
Module cân Siwarex WP231 là module cân đa năng cho tất cả những ứng dụng
cân đơn giản, phức tạp hay ứng dụng trong đo lực…Module nhỏ gọn dễ dàng lắp đặt
với PLC S7 – 1200 và có thể hoạt động độc lập mà không cần PLC S7. Module cân
Siwarex WP231 có thể kết nối trực tiếp với PLC S7 thông qua Ethernet (Modbus
TCP/IP) và RS485 (Modbus RTU). Đồng thời, module có thể hoạt động với những
PLC hoặc thiết bị của các hãng tự động hóa khác (có thể có những hạn chế nhất định).
Module CANopen: Để mở rộng tính năng kết nối/giao tiếp truyền thông với các
thiết bọ của nhiều hãng thì Siemens phát triển module CM CANopen cho PLC S7 –
1200, cho phép cấu hình với cả hai chế độ Master và Slave.
1.3.2. Bộ điều khiển lập trình PLC S7-1500
Bộ điều khiển SIMATIC S7-1500 được sử dụng với sự linh động và khả năng
mở rộng phù hợp đối với hệ thống tự động hóa cỡ trung và lớn. Thiết kế theo chuẩn,
tốc độ xử lý nhanh, hiệu năng cao, tương thích với các nhà máy, hệ thống tự động hóa
đòi hỏi những chức năng về Safety, các ứng dụng điều khiển về truyền động.
SIMATIC S7-1500 với tốc độ xử lý bit lên tới 1ns và khả năng mở rộng lên tới 32
module là một giải pháp hoàn hảo về việc lựa chọn bộ điều khiển cho cả nhà máy đơn
hoặc toàn bộ nhà máy.

32
Hình 1.16. Hình ảnh minh họa trạm PLC S7-1500

Hình 1.17. Vị trí của PLC S7-1500 theo ứng dụng của các loại PLC S7.
SIMATIC S7-1500 được tích hợp sẵn một cổng Profinet để truyền thông mạng
Profinet. Ngoài ra, SIMATIC S7-1500 có thể truyền thông Profibus, RS485, RS232,
Modbus RTU/TCP, … thông qua các module mở rộng.
 Một số dòng sản phẩm PLC S7-1500 hiện nay
Dòng sản phẩm PLC S7-1500 cho phép người sử dụng có nhiều sự lựa chọn cả
về mặt giá thành và tính năng phù hợp với yêu cầu hệ thống và mong muốn của khách
hàng.
Standard CPU gồm có CPU 1511-1 PN đến CPU 1518-4 PN/DP đáp ứng từ cỡ
trung bình đến lớn.
 Dòng Standard CPU từ CPU 1511-1 PN đến CPU 1515-2 PN được sử dụng
cho các ứng dụng cỡ nhỏ và vừa.

33
Bảng 1.4. So sánh tính năng giữa các CPU Standard

Tính năng CPU 1511-1 PN CPU 1513-1 PN CPU 1515-2 DP


Vùng nhớ 1.15 Mbyte 1.8 Mbyte 3.5 Mbyte
Vùng nhớ lập trình 150 Kbyte 300 Kbyte 500 Kbyte
Vùng nhớ dữ liệu 1 Mbyte 1.5 Mbyte 3 Mbyte
Xử lý bit 60 ns 40ns 30ns
Số lượng block 2000 2000 6000
Lưu trữ dữ liệu 128 Kbyte 128 Kbyte 512 Kbyte
Số lượng I/O module 1024 2048 8192
Cổng truyền thông 1 PN 1 PN 2 PN
Số lượng connection 96 128 192
Technology Object 6 6 30
 Dòng Standard CPU từ CPU 1516-3 PN/DP đến CPU 1518-4 PN/DP được sử
dụng cho các ứng dụng lớn và yêu cầu cao về khả năng truyền thông.
Bảng 1.5.. So sánh tính năng giữa các CPU Standard

Tính năng CPU 1516-3 CPU 1517-3 CPU 1518-4


PN/DP PN/DP PN/DP
Vùng nhớ 6 Mbyte 10 Mbyte 24 Mbyte
Vùng nhớ lập trình 1 Mbyte 2 Mbyte 4 Mbyte
Vùng nhớ dữ liệu 5 Mbyte 8 Mbyte 20 Mbyte
Xử lý bit 10 ns 2ns 1ns
Số lượng block 6000 10000 10000
Lưu trữ dữ liệu 512 Kbyte 768 Kbyte 768 Kbyte
Số lượng I/O module 8192 16384 16384
Cổng truyền thông 2 PN 2 PN 3 PN
1 DP 1 DP 1 DP
Số lượng connection 256 320 384
Technology Object 30 96 128

34
Compact CPU: Được tích hợp I/O sẵn trên CPU để xử lý tín hiệu số, Analog
hoặc đếm/phát xung tốc độ cao. Tiết kiệm không gian, đáp ứng cho ứng dụng nhỏ và
vừa, phù hợp cho những nhà chế tạo máy.
Bảng 1.6. So sánh tính năng giữa các CPU Compact

Tính năng CPU 1511C-1PN CPU 1512C-1PN


Vùng nhớ 1.175 Mbyte 1.25 Mbyte
Vùng nhớ lập trình 175 Kbyte 250 Kbyte
Vùng nhớ dữ liệu 1 Mbyte 1 Mbyte
Xử lý bit 60 ns 48ns
Số lượng I/O module 1024 2048
Ngõ vào On-board 16 32
Ngõ ra On-board 16 32
Cổng truyền thông 1 PN 1PN
Số lượng connection 96 128
Fail – Safety CPU: đáp ứng cho các ứng dụng về fail-safe, với những ứng dụng
nhỏ đến lớn với CPU 1511F-1 PN đến CPU 1518F-4 PN/DP ODK. Bộ điều khiển
SIMATIC S7-1500 Fail-Safe được cấp chứng nhận theo tiêu chuẩn EN 61508 với các
chức năng về safety và thích hợp để sử dụng cho các ứng dụng liên quan tới safety
như SIL 3 theo tiêu chuẩn IEC 62061 và PL e theo tiêu chuẩn ISO 13849. Được bổ
sung thêm mật khẩu bảo vệ cho chương trình F – Configuration và F – Program để
bảo mật về IT
T-CPU: đáp ứng cho những yêu cầu hệ thống về Safety và điều khiển về truyền
động trên cùng một CPU. Một số lợi ích của việc sử dụng T-CPU là:
- Mở rộng các tác vụ cho việc điều khiển về truyền động liên quan tới GEAR và
CAM được tích hợp trên TIA Portal
- Hiệu quả cao trong quá trình thiết kế hệ thống do tính đồ họa, bảng cấu hình và
tối ưu hóa về CAM trong TIA Portal
- Tương thích và tính toán được giá trị CAM trong quá trình hoạt động.
ODK CPU: Cho phép người dùng lập trình bằng các ngôn ngữ lập trình cấp cao
như C/C++, JavaScript, .NET, HTML, … để đáp ứng những yêu cầu cao như trên thì
Siemen đã thiết kế CPU 1518 ODK và SIMATIC ODK 1500S (Software Controller)
cho mục đích trên và lập trình với hỗ trợ của giao thức mở TIA Openness ODK –
Open Development Kit.
35
SIPLUS CPU: SIPLUS S7-1500 là thế hệ mới nhất của bộ điều khiển SIMATIC
S7 đã có trong TIA Portal. Ngoài việc là bộ điều khiển mạnh, độ bền cao và cực kỳ
thân thiện thì SIPLUS S7-1500 cũng đạt các tiêu chuẩn mới để tối đa hóa năng suất.
Đáp ứng tất cả các yêu cầu đối với những nhà máy nhỏ nhất đến các giải pháp phức
tạp thì còn có khả năng chịu được nhiệt độ môi trường khắc nghiệt từ -40oC đến
+70oC, và môi trường ngưng tụ, độ ẩm, ăn mòn cao.
ET200 SP Distributed Controller: là một trong những bộ điều khiển của
SIMATIC S7-1500 đem lại nhiều lợi ích đối với các nhà chế tạo máy, tích hợp với các
ưu thế: giảm 30% không gian lắp đặt hệ thống và giá thành thấp hơn so với các bộ
điều khiển Standard, mở rộng lên tới 64 module, nhất quán về thiết kế với các bộ I/O
phân tán ET200SP, tốc độ xử lý dữ liệu và lập trình tương đương với các CPU
Standard từ CPU 1511-1 PN đến CPU 1515-2 PN. Đây là giải pháp tối ưu cho những
thiết kế về kỹ thuật và giá.
Open Controller: Có thể coi đây là trường hợp đặc biệt của ET200 SP
Distributed Controller. Bộ điều khiển phù hợp với các yêu cầu thiết kế gọn nhỏ, tính
năng cao, khả năng xử lý dữ liệu linh động. Open Controller được tích hợp bao gồm 1
PLC dưới dạng Software controller, 1 máy tính IPC và bản quyền phần mềm chạy
SCADA tối đa 2048 tag. Đây là giải pháp cho hệ thống tích hợp với yêu cầu tối ưu
không về không gian lắp đặt, giá thành thấp cấu hình cao, chạy SCADA liên tục 24/7,
chi phí bảo trì thấp và dễ dàng vận hành với người sử dụng.
Module phần cứng của PLC S7-1500
Cấu trúc phần cứng PLC S7-1500 bao gồm các module ghép lại với nhau, các
module được gắn vào nhau trên một thanh Rack, một thanh Rack bao gồm một
module CPU và các module mở rộng. Cấu hình phần cứng tối thiểu cần có là module
CPU, đặc biệt là PLC S7-1500 có thể chèn tối đa 32 module mà không cần module IM
(đây là điểm khác biệt với PLC S7-300 và PLC S7-400).

Hình 1.18. Cấu trúc trạm PLC S7-1500


 Module xử lý trung tâm CPU
Module xử lý trung tâm CPU chứa vi xử lý, hệ điều hành, bộ nhớ, các bộ định
thì, bộ đếm, cổng truyền thông Profinet… module lưu trữ chương trình người dùng
trong bộ nhớ của nó. Ngoài ra, module CPU có thể tích hợp một vài cổng vào/ra số,
analog tùy thuộc vào mã hàng (order number).

36
Hình 1.19. Minh họa Module CPU S7-1500
Cổng Profinet tích hợp cho phép CPU có thể kết nối với HMI, máy tính lập trình,
hay những PLC S7 thông qua PROFINET.
Trên CPU có màn hình dùng để hiển thị các thông tin của CPU, trạng thái CPU,
và các trạng thái lỗi phần cứng, …
 Module mở rộng
Các module mở rộng của PLC S7-1500 cũng tương tự như PLC S7-1200, dưới
đây chỉ trình bày ngắn gọn về các module mở rộng của PLC S7-1500.
Với PLC S7-1500 có thể ghép nối được tối đa 32 module mở rộng. Các module
mở rộng của PLC S7-1500 bao gồm các loại module sau:

Hình 1.20. Các module mở rộng của PLC S7-1500

37
1.3.3. Vùng nhớ, địa chỉ và kiểu dữ liệu
1.3.3.1. Vùng nhớ chương trình
CPU hỗ trợ những vùng nhớ để lưu trữ chương trình người dùng, dữ liệu và cấu
hình hệ thống như sau:
Load memory: không mất đi (non – volatile storage) và được sử dụng để lưu trữ
chương trình người dùng, dữ liệu và cấu hình PLC. Khi một project được download
xuống PLC, nó được lưu đầu tiên tại vùng nhớ Load memory. Vùng nhớ này nằm
trong thẻ nhớ MMC (nếu có) hoặc nằm trên CPU. Người dùng có thể tăng dung lượng
vùng nhớ bằng thẻ MMC.
Work memory: vùng nhớ sẽ bị mất dữ liệu khi CPU mất điện. Trong quá trình
hoạt động, CPU có thể copy một số phần, chức năng của project từ vùng nhớ Load
memory sang vùng nhớ Work memory để thực hiện.
Retentive memory: là vùng nhớ được sử dụng để lưu trữ lại những dữ liệu cần
thiết/mong muốn khi CPU mất điện hoàn toàn.
1.3.3.2. Thẻ nhớ MMC
Một lựa chọn khác để lưu trữ chương trình người dùng giống như những vùng
nhứo được nói ở trên đó là sử dụng Simatic MMC để lưu trữ chương trình người dùng
hoặc transfer chương trình người dùng. Nếu người sử dụng thẻ nhớ MMC, CPU sẽ
chạy chương trình từ thẻ nhớ chứ không phải trên vùng nhớ của CPU.

Thẻ nhớ Simatic MMC được sử dụng như một thẻ nhớ chương trình một thẻ nhớ
chương trình, một thẻ transfer, lưu dữ liệu data log hoặc sử dụng để nâng cao
firmware cho CPU.
Khi muốn download chương trình xuống nhiều CPU gióng nhau và cùng một
project. Việc sử dụng phần mềm làm cho tốn kém thời gian…thì việc sử dụng Simatic

38
MMC với chức năng là thẻ Transfer giúp cho hiệu quả hơn rất nhiều. Người dùng chỉ
cắm thẻ MMC và đợi Transfer xong và lấy thẻ nhớ ra.
Dùng thẻ nhớ với chức năng thẻ nhớ chương trình thì tất cả những chức năng
CPU hoạt động sẽ được load từ thẻ nhớ.
Ngoài ra, thẻ MMC cũng có thể sử dụng để lưu trữ thông tin về data log, mở
rộng vùng nhớ lưu trữ cho Web server, hoặc có thể sử dụng để nâng firmware cho
CPU (ví dụ từ V1.0 lê V2.0, V2.0 lên V2.2…)
1.3.3.3. Kiểu dữ liệu
Kiểu dữ liệu hỗ trợ cho PLC S7–1200/S7-1500 sẽ được giải thích cách định dạng
dữ liệu và kích thước dữ liệu thông qua bảng 1.7.
Bảng 1.7. Kiểu dữ liệu của PLC S7–1200/S7-1500

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
 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)

39
 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
Ghi chú: (*)BCD không phải kiểu dữ liệu, tuy nhiên được đưa vào vì liên quan tới
việc chuyển đổi dữ liệu sau này.
1.3.3.4. Vùng nhớ địa chỉ
Step 7 V1x của TIA Portal hỗ trợ cho việc lập trình bằng Tag nhớ (Symbolic).
Người dùng có thể tạo Tag nhớ hay symbolic (tên gợi nhớ) cho các địa chỉ dữ liệu cần
dùng, không phân biệt vùng nhớ toàn cục (global) hay vùng nhớ cục bộ (local). Để
truy xuất các Tag nhớ trong chương trình cần gọi tên của Tag cho các tham số của
lệnh.
Để hiểu rõ hơn về cấu trúc CPU và địa chỉ vùng nhớ, chúng ta sẽ đi vào tìm hiểu
sâu hơn về địa chỉ trực tiếp (absolute) là nền tảng cho việc sử dụng các Tag nhớ của
PLC.
Vùng nhớ toàn cục – Global memory: CPU cung cấp những vùng nhớ toàn cục
như: I (input), Q (output), vùng nhớ nội (memory). Những vùng nhớ toàn cục có thể
được truy xuất ở tất cả các khối.

40
Khối dữ liệu DB: Cũng là vùng nhớ toàn cục. Ngoài ra, vùng nhớ DB nếu được
sử dụng với chức năng Instance DB để lưu trữ chỉ định cho FB và cấu trúc bởi các
tham số của FB.
Vùng nhớ tạm – Temp (hay vùng nhớ Local): vùng dữ liệu cục bộ được sử dụng
trong các khối chương trình OB, FC, FB. Vùng nhớ L được sử dụng cho các biến tạm
(Temp) và trao đổi dữ liệu của biến hình thức với những khối chương trình gọi nó.
Nội dung của một khối dữ liệu trong miền nhớ này sẽ bị xóa khi kết thúc chương
trình.
Vùng nhớ I, Q có thể truy xuất dưới dạng process image. Để có thể truy xuất
trực tiếp và ngay lập tức với ngõ vào/ra vật lý, có thể thêm “:P”. Ví dụ như: I0.0:P,
Q0.0:P…
Chế độ Forcing chỉ có thể ứng dụng cho các tín hiệu vào/ra vật lý (Ix.y:P,
Qx.y:P)
Bảng 1.8. Bảng phân loại vùng nhớ PLC S7 – 1200

Vùng nhớ Miêu tả


Process image I Được copy dữ liệu từ tín hiệu ngõ vào vật lý khi bắt đầu
quét chương trình
Ngõ vào vật lý Ix.y:P Đọc địa chỉ ngay lập tức từ ngõ vào của CPU, SM. Có thể
dùng chế độ Force với ngõ vào vật lý
Process image Q Chuyển dữ liệu tới tín hiệu ngõ ra vật lý khi bắt đầu quét
chương trình
Ngõ ra vật lý Qx.y:P Xuất trực tiếp tới ngõ ra ngay lập tức tới ngõ ra vật lý của
CPU, SM. Có thể dùng chế độ Force với ngõ vào vật lý.
Vùng nhớ nội M Lưu trữ dữ liệu/tham số trước khi đưa ra ngoại vi. Có thể
cài đặt để sử dụng chức năng Retentive memory đối với
vùng nhớ này
Vùng nhớ Tạm Local Vùng nhớ được sử dụng để lưu trữ tạm thời trong các khối
memory OB, FB, FC. Dữ liệu sẽ mất khi ngừng gọi khối.
Khối dữ liệu DB Được sử dụng theo định dạng vùng nhớ toàn cục, hoặc lưu
dữ liệu và tham số cho khối hàm FB. Có thể cài đặt để sử
dụng chức năng Retentive memory đối với vùng nhớ này.

41
1.4. PHẦN MỀM LẬP TRÌNH PLC
PLC S7-1200/1500 đã dần thay thể cho PLC S7-200/300, dưới đây chỉ giới hạn
trình bày về phần mềm lập trình cho PLC S7-1200/1500 trên phần mềm TIA Portal.
1.4.1. Giới thiệu phần mềm lập trình TIA Portal
Năm 2009, Siemens giới thiệu PLC S7 – 1200 cùng với phần mềm lập trình TIA
Portal V10.5 tích hợp sẵn Step 7 Basic, lập trình cho PLC S7 – 1200 và WinCC Basic
lập trình cho dòng màn hình KTP.
Năm 2011, hãng Siemen giới thiệu phần mềm TIA Portal phiên bản V11 – Hệ
thống tích hợp tự động hóa toàn diện (Totally Integrated Automation Portal), nhằm
thay thế những phần mềm: Step7 Manager – phần mềm lập trình cho PLC S7-
300/400, TIA Portal V10.5 – phần mềm lập trình cho PLC S7-1200, WinCC Flexible
– phần mềm lập trình giao diện người và máy HMI dành cho các màn hình của
Siemen, WinCC – phần mềm lập trình hệ thống SCADA … bằng một phần mềm duy
nhất.

Hình 1.21. Chức năng phần mềm TIA Portal


Từ năm 2011 – đến nay, Siemens không ngừng cải thiện nâng cấp phần mềm và
cho ra các phiên bản TIA Portal V12, V13 và phiên bản mới nhất hiện tại (2022) là
TIA Portal V17.
Phần mềm TIA Portal phiên bản V17 dùng để lập trình cho các các PLC S7-
1200/S7-300/S7-400/S7-1500, thiết kế giao diện giám sát điều khiển HMI, hệ thống
SCADA, và cấu hình cho Driver của Siemens.
1.4.2. Ngôn ngữ lập trình trên phần mềm TIA PORTAL
 Ngôn ngữ lập trình cho PLC S7-1200
Với dòng sản phẩm PLC S7 – 1200 ứng dụng cho hệ thống nhỏ và vừa, Siemens
phát triển và ưu tiên hỗ trợ cho 2 ngôn ngữ lập trình cơ bản LAD, FBD và một ngôn
ngữ lập trình cấp cao SCL.
LAD – LADDER: Đây là ngôn ngữ lập trình dựa theo sơ đồ mạch.

42
FBD – Function Block Diagram: Đây là ngôn ngữ lập trình dựa theo đại số
Boolean.

SCL – Structure Language Control: Đây là ngôn ngữ lập trình theo dạng text,
và là ngôn ngữ trình cấp cao sử dụng dựa trên nền Pascal phát triển. Ngôn ngữ lập
trình SCL có thể gọi là ngôn ngữ hướng đối tượng cho PLC, vì nó gần gũi với tư duy
người dùng.

43
Khi viết code cho một khối hàm nào đó (OB, FB, FC) thì người dùng có thể sử
dụng 1 trong 3 ngôn ngữ trên để có thể lập trình.
 Ngôn ngữ lập trình cho PLC S7-1500
Với dòng sản phẩm PLC S7 – 1500, Siemens phát triển hỗ trợ 3 ngôn ngữ lập
trình cơ bản là: LAD, FBD, IL; và 2 ngôn ngữ lập trình cấp cao là: SCL, S7-Graph.
IL – (instruction list): Đây là dạng ngôn ngữ lập trình thông thường của máy
tính, một chương trình được ghép bởi nhiều câu lệnh theo một thuật toán nhất định

S7-Graph ứng dụng cho những quá trình tuần tự, tình bày dưới dạng đồ thị với
các chuỗi tuần tự, làm cho việc bảo trì và chỉnh sửa chương trình trở lên dễ dàng hơn,
có hỗ trợ các chức năng chuẩn đoán lỗi quá trình khi xảy ra. Hay nói cách khác đây là
ngôn ngữ lập trình theo phương pháp tổng hợp mạch trình tự Grafcet.

44
1.4.3. Cấu trúc chương trình trên TIA PORTAL
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, …

45
 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.
+ 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 1.22 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. Dưới đây chỉ trình bày các khái niệm cơ bản, chi tiết
về các khối tổ chức và lập trình kỹ thuật được đề cập trong chương 3.

Hình 1.22. 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
1.23.

46
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 1.23. Chu trình thực hiện chương trình


1.4.4. Vòng quét chương trình trên TIA PORTAL
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 1.24. Vòng quét chương trình


47
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.
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.
1.4.5. Làm việc với TIA PORTAL và PLC S7-1200/1500
1.4.5.1. Giới thiệu về mạng truyền thông ETHERNET
Để hiểu những khái niệm cơ bản về mạng truyền thông Ethernet, dưới đây sẽ
trình bày một vài vấn đề cơ bản về địa chỉ MAC, IP, Subnet, Gateway (Router) và mối
quan hệ giữa địa chỉ IP, router, và subnet
 Địa chỉ MAC
Đại chỉ MAC Address là địa chỉ phần cứng bao gồm một dải thông tin thay đổi
(variable) và một dải thông tin cố định (permanent). Phần thông tin cố định hay còn
gọi là địa chỉ cơ bản của MAC (Basic MAC Address) cho biến thông tin nhà sản xuất.
Mỗi địa chỉ MAC address là duy nhất trên thế giới và không bao giờ có hai địa chỉ nào
trùng nhau ở bất cứ đâu và do tổ chức InterNIC cung cấp.
Đại chỉ MAC Address là mã duy nhất được gán bởi nhà sản xuất cho từng phần
cứng thiết bị mạng (card mạng của PC, switch, router, S7-Ethernet, S7-CPU-PN, …).
Các địa chỉ MAC có chiều dài 6 byte, cách nhau bởi dấu hai chấm. Ví dụ: 08-00-06-
6F-F1-59.
 IP – address
IP Address là một địa chỉ đơn giản nhất mà những thiết bị điện tử hiện nay đang
sử dụng để nhận diện và liên lạc với nhau trên mạng máy tính. Mỗi địa chỉ IP là duy

48
nhất trong cùng một cấp mạng. Nói đơn giản hơn, IP là một địa chỉ của một thiết bị
khi tham gia vào mạng nhằm giúp cho các thiết bị khác có thể vận chuyển thông tin
cho nhau một cách chính xác, tránh thất lạc thông tin. Có thể coi địa chỉ IP giống như
địa chỉ nhà của bạn để nhân viên bưu điện có thể đưa thư đúng cho bạn chứ không
phải một người nào khác. Hiện nay, đối với các thiết bị mạng đang sử dụng có IPv4 và
IPv6
 Địa chỉ IPv4 chiếm 32 bit và được định nghĩa bởi 4 con số thập phân có giá trị
nằm trong tầm 0 đến 255, cách nhau bởi một dấu chấm. Ví dụ như:
192.168.0.10.
 Địa chỉ IPv6 chiếm 128 bit để mã hóa dữ liệu, nó cho phép sử dụng nhiều địa
chỉ hơn so với IPv4.
Tuy nhiên vì lý do tương thích với các thiết bị cũ, nên hầu hết vẫn sử dụng địa
chỉ IPv4.
 Subnet mask
Subnet mask hay còn gọi là subnet là sự phân chia logic địa chỉ TCP/IP thành
các mạnh con để dễ dàng quản lý hơn.
Thường thì mỗi tổ chức, công ty hay quốc gia được InterNIC cấp cho một số địa
chỉ IP nhất định với các máy tính đặt ở các nơi khác nhau. Để quản lý mạng hiệu quả,
người ta phân chia mạng của tổ chức này thành các mạng con và kết nối với nhau
thông qua các router. Những mạng con này được gọi là Subnet.
Một điều quan trọng là mỗi Subnet vẫn là một phần của mạng nhưng nó cũng
cần được phân biệt với các Subnet khác bằng cách thêm vào một định danh nào đó.
Định danh này được gọi là Subnet address. Để phân chia thành các Subnet, trước hết
cần định rõ số lượng subnet của mỗi mạng và số thiết bị trong mỗi subnet, trong khi
đó router trên mỗi subnet chỉ cần biết các thông tin địa chỉ của mỗi máy trên một
subnet mà nó quản lý.
Một địa chỉ subnet mask được xác định tương ứng cho một địa chỉ IP. Subnet
mask chiếm 32 bit. Với subnet mask, một nút mạng sẽ được xem như là một mạng
con.
 Phân chia lớp mạng với IP và Subnet mask
Một địa chỉ IP bao gồm 2 thành phần là Net IP và Host ID

49
Các lớp ID bao gồm:
Lớp A: lên tới 16 triệu host với địa chỉ IP: 0.x.x.x – 127.x.x.x với subnet mask là
255.0.0.0
Lớp B: lên tới 65 nghìn host với địa chỉ IP: 128.0.x.x – 191.255.x.x với subnet
mask là 255.255.0.0
Lớp C: lên tới 254 host với địa chỉ IP: 192.0.0.x – 233.255.255.x với subnet
mask là 255.255.255.0
Các lớp D, E không phục vụ cho việc đánh địa chỉ các Host nên không trình bày
ở đây.
 Gateway (Router)
Router hay còn gọi là thiết bị định tuyến hoặc bộ định tiến, là một thiết bị mạng
dùng để chuyển các gói dữ liệu qua một liên mạng và đến các đầu cuối thông qua một
tiến trình được gọi là định tuyến. Định tuyến xảy ra ở tầng 3 (network) của mô hình
OSI.
Tầm giá trị của Gateway (Router): Địa chỉ IP bao gồm 4 con số thập phân có giá
trị nằm trong tầm 0 đến 255, cách nhau bởi một dấu châm. Ví dụ như 192.168.0.1
 Mối quan hệ giữa địa chỉ IP, router và subnet
Địa chỉ IP và địa chỉ của router chỉ khác nhau tại 1 vị trí số “0” nằm trong
subnet.
Ví dụ: Địa chỉ cho Subnet là 255.255.255.0, địa chỉ IP là 141.30.0.5 và địa chỉ
router là 141.30.128.1
Địa chỉ IP và địa chỉ router cần phải có một giá trị duy nhất khác nhau trong số
thứ 4 của số thập phân. Tuy nhiên, trong ví dụ trên thì vị trí số 3 đã khác. Do đó, ví dụ
trên cần phải sửa lại theo một trong những cách sau (chỉ chọn 2 trong 3 cách)
 Thay đổi địa chỉ IP: 141.30.128.5
 Hoặc thay đổi địa chỉ Router: 141.30.0.1

50
1.4.5.2. Kết nối PLC S7-1200/1500 với TCP/IP và FACTORY RESET
Để có thể kết nối PC/PG hoặc laptop tới SIMATIC S7-1200/1500, người dùng
cần phải sử dụng kết nối TCP/IP connection
Để cho PC và Simatic S7-1200 có thể kết nối với nhau thì địa chỉ IP (Internet
Protocol) phải phù hợp với nhau.
 Các bước cài đặt địa chỉ IP cho máy tính
Trong phần này, chúng ta sẽ cùng thực hiện các bước cài đặt địa chỉ IP cho máy
tính, để có thể liên kết với PLC S7-1200/1500.
Chú ý: Máy tính kết nối với PLC S7-1200/1500 phải có cổng kết nối TCP/IP.
Dưới đây sẽ trình bày các bước cài đặt địa chỉ IP trên máy tính với hệ điều hành Win7

Click biểu tượng trên thanh taskbar góc phải màn hình → "Open Network
and Sharing Center".

Một cửa sổ Network and Sharing Center được mở ra, chọn → "Change adapter
settings". Chọn và nhấn chuột phải vào biểu tương "Local Area Connection" →
"Properties".

51

Khi một cửa sổ mới mở ra chọn giao thức truyền thông giao tiếp với PLC S7-
1200 → "Internet Protocol Version 4 (TCP/IP)". Sau đó cài đặt địa chỉ IP cho máy
tính: chọn Use the following IP addres → đặt địa chỉ IP address: 192.168.0.x (với x
khác địa chỉ IP mặc định của CPU S7-1200 là 192.168.0.1) → chọn Subnet mask là
255.255.255.0 → OK → Close. Ví dụ: IP address: 192.168.0.99

Cài đặt địa chỉ IP và Reset Factory cho PLC S7-1200/1500


 Cài đặt địa chỉ IP cho PLC S7-1200/1500
Bước 1: Mở phần mềm TIA Portal và chọn “Project View”

52
Bước 2: Chọn kết nối Online & Diagnostics để kiểm tra thông tin CPU: Project
tree → Device → Online accesses →… Network Connection (đây là card mạng sử
dụng để giao tiếp với PLC) → Update accessible → MAC= … → Online &
Diagnotics. Chú ý: Nếu có một địa chỉ IP được cài đặt sẵn cho CPU thì người dùng sẽ
thấy địa chỉ đó thay cho địa chỉ MAC

Bước 3: Cửa số giao diện Online & Diagnostics hiện ra, tiếp tục thực hiện các
thao tác sau để gán địa chỉ IP cho CPU: Function → Assign IP address và chọn IP

53
Address là: 192.168.0.1 → Subnet mask chọn là: 255.255.255.0 → Chọn Assign
address

 Thực hiện chế độ Reset factory


Bước 1 và 2: Cũng thực hiện tương tự như bước 1 và 2 trong bước cài đặt địa chỉ
IP cho S7-1200/1500.
Bước 3: Chọn “Reset to factory settings” thực hiện thao tác sau: Functions →
Reset to factory settings → Retain IP address → Reset

54
Bước 4: Xác nhận để cho phép thực hiện chế độ reset to factory settings bằng
cách nhấn YES tại các cửa sổ dưới đây.

1.4.5.3. Khai báo và cấu hình phần cứng PLC trên TIA PORTAL
Về các bước khai báo, cấu hình của PLC S7-1200 và PLC S7-1500 là giống
nhau, vì vậy các nội dung dưới đây chỉ trình bày một loại PLC S7-1500. Ví dụ cấu
hình trạm PLC S7-1500 có các module sau:
① Module nguồn (PM): với nguồn đầu vào là 120/230 VAC, 50Hz/60 Hz,
190W và nguồn đầu ra là 24VDC/8A.
② Module CPU 1516F-3 PN/DP
③ IO module 32x digital input DI 32x24VDC HF
④ IO module 32x digital output DQ 32x24VDC/0.5A HF
⑤ IO module 8x analog input AI 8xU/I/RTD/TC ST
⑥ IO module 4x analog output AQ 4xU/I ST

Với phần mềm TIA Portal hỗ trợ cho người dùng sử dụng hai cách để có thể cấu
hình cho PLC S7-1200/1500
- Cấu hình chuẩn dựa theo phần cứng
- Cấu hình với chế độ Unspecified

55
Cấu hình chuẩn dựa theo phần cứng
Với chế độ này, người dùng phải đọc mã của CPU, các module mở rộng để có
thể khai báo chúng.
Bước 1: Khởi động chương trình TIA Portal, khi cửa sổ phần mềm hiện ra thì
nhấn chọn “Create New Project”

Thao tác trên sẽ làm xuất hiện giao diện với các thông tin của một project mới
như: tên project (Project name), đường dẫn để lưu project (Path), tên người khởi tạo
(Author), thông tin về project (comment). Sau khi điền đầy đủ thông tin về Project,
chọn Create để tiếp tục quá trình khởi tạo Project.

Bước 2: Lựa chọn cấu hình CPU cho project: Device & Networks → Add new
device, điền các thông tin cho CPU cần khai báo tại cửa sổ Add new device: tên thiết
bị (Device name), thông số kỹ thuật và dòng CPU sử dụng và chọn Add để hoàn tất
quá trình chọn thiết bị mới cho project.

56
Phần mềm TIA Portal tự động mở project hiển thị CPU đã được chọn và được
đặt ở slot 1 của thanh rail.

Bước 3: Cấu hình cổng giao tiếp Ethernet CPU 1516F-3 PN/DP bằng cách click đúp
vào CPU, xuất hiện cửa sổ phía dưới → "Properties" → "PROFINET-interface [X1]"
→ "Ethernet addresses".

57
Tại "Interface connected with", để khai báo một Ethernet subnet ta nhấn chọn
"Add new subnet".

Giữ nguyên các khai báo địa chỉ của "IP address" và "Subnet mask".

58
Bước 4: Cấu hình chế độ bảo mật → "Protection" → "Full access incl. fail-safe
(no protection)".

Bước 5: Chọn lựa những module mở rộng cần thiết theo cấu hình phần cứng của
hệ thống: Device configuration → Device view → Hardware catalog, ở đây người
dùng sẽ lựa chọn những module cần thiết và kéo thả đưa vào rail của PLC.

Bước 6: Cấu hình địa chỉ các tín hiệu vào/ra PLC

59
Bước 7: Save và compile cấu hình phần cứng
Trước khi compile cấu hình, ta phải tiến hành lưu project → . Quá
trình compile phần cứng đã cấu hình được thực hiện bằng cách chọn folder
"CPU_1516F [CPU1516F-3 PN/DP]" → "Compile".

Nếu project xảy ra lỗi thì xuất hiện minh họa như bảng dưới, ta tìm hiểu lỗi và
sửa lại rồi tiến hành compile lại.

60
Bước 8: Download cấu hình phần cứng xuống PLC
Chọn folder "CPU_1516F [CPU1516F-3 PN/DP]" và click biểu tượng →
"Download to device".

Cửa sổ dowload xuất hiện như hình dưới

→ Type of the PG/PC interface → PN/IE

61
→ PG/PC interface → Intel(R) Ethernet Connection I217-LM (tùy từng máy tính
mà chọn card mạng khác nhau)

→ PG/PC interface → "PN/IE_1"

62
Để tìm kiếm các thiết bị đang kết nối với máy tính nhấn chọn .

CPU được tìm thấy và hiển thị tại mục "Compatible devices in target subnet", → CPU
1516F-3 PN/DP → "Load"

Confirm the prompt → "Overwrite all" → "Load".

63
→ "Start all" → "Finish".

Cấu hình với chế độ Unspecified


Với chế độ này phần mềm sẽ tự động detect ra toàn bộ cấu hình phần cứng của
PLC một cách chính xác và đầy đủ. Đây có thể coi là ưu điểm vượt bậc so với các
phần mềm trước đó dành cho Controller của Siemen
Trong phần này ta vẫn tiếp tục với cấu hình phần cứng như phần trên, sau khi
xác định phần cứng thì các bước còn lại tương tự như phần “cấu hình chuẩn dựa theo
phần cứng”.
Đầu tiên chúng ta khởi động phần mềm và chọn "Create new project" để khởi tạo
project mới.

64
Điền các thông tin cho project: tên, đường dẫn lưu trữ, tác giả, chú thích →
"Create".

Sau đó lựa chọn cấu hình “Unspecified CPU 1500” với mã hiệu 6ES7 5XX-
XXXXX-XXXX: Controllers → SIMATIC S7-1500 → CPU → Unspecified CPU
1500 → 6ES75XX-XXXXX-XXXX → V1.8

Sau đó điền tên CPU (Device name → "CPU_1500").

Chọn "Open device view".

65
Chọn "Add".

Một giao diện cấu hình phần cứng xuất hiện, với CPU nằm ở slot 1 trên thanh
rail và xuất hiện hộp thoại “The device is not specified”, tại hộp thoại này nhấn chọn
"detect" cấu hình CPU và những module mở rộng kèm theo.

66
Tại cửa sổ Hardware detection for CPU_1500 hiện ra. Tại đây người dùng chọn
giao diện Type of your PG/PC interface là PN/IE, chọn PG/PC interface là card mạng
internet (cổng RJ45) của máy tính, sau đó nhấn chọn .

Sau khi hoàn tất quá trình tìm kiếm thiết bị kết nối, một bảng liệt kê danh sách
các thiết bị xuất hiện như hình dưới. Nhấn chọn CPU và click "Detect" để hoàn tất
quá trình.

Nếu người dùng không đặt IP tĩnh cho PG/PC cùng một lớp mạng với PLC thì
phần mềm sẽ tự gán cho PG/PC một IP cùng subnet, khi đó xuất hiện hộp thoại
Assign IP address thì chọn YES để hoàn thành quá trình dò và upload cấu hình.

67
Trong một số trường hợp khi IP tĩnh do hệ thống tự cấp để PG/PC cùng subnet
với PLC bị lỗi thì người dùng nên chuyển sang đặt IP tĩnh của máy tính cùng subnet
với PLC.
Khi quá trình dò và upload cấu hình hoàn tất thì ta có các module hiển thị trên
các slot của thanh rail trong phần cấu hình. Tiến hành lưu Project.

Các bước cấu hình sau đó tương tự như phần “cấu hình chuẩn dựa theo phần
cứng”.
1.4.5.4. Lập trình trên TIA PORTAL
Sau khi đã hoàn tất việc khai báo phần cứng, tiến hành mở giao diện lập trình
ứng dụng để viết chương trình điều khiển PLC: Project tree → Devices → PLC →
Program blocks→ Main (OB1) để bắt đầu lập trình ứng dụng theo yêu cầu.

68
Người dùng có thể chọn PLC → Program blocks→ Add new block để gọi thêm
các khối dữ liệu DB, khối tổ chức OB hay khối hàm chức năng FB/FC, cũng như ngôn
ngữ lập trình cho các khối hàm ở đây.

Sau khi hoàn thành việc lập trình, tiến hành lưu project và dowload xuống PLC :
Chuột phải PLC → Dowload to device

69
1.4.5.4. Dowload và Upload PLC
Các bước dowload project xuống PLC
Bước 1: Mở project muốn dowload xuống PLC và thực hiện những thao tác sau
để tiến hành dowload chương trình: Project tree → Devices → Chọn CPU muốn
dowload → Online → Dowload to device (phím tắt Ctrl + L). Hoặc có thể chọn biểu
tượng trên thanh Menu.

Hoặc có thể làm cách sau: Project tree → Devices → Chọn CPU muốn dowload
và phải chuột → Dowload to device

Tại cửa sổ trên sẽ có 4 sự lựa chọn để dowload:

70
- Hardware and software (only changes): Dowload cả phần cứng và phần
mềm (chỉ dowload những thay đổi mới)
- Hardware configuration: Dowload phần cứng
- Software (only changes): Dowload phần mềm (chỉ dowload những thay
đổi mới)
- Software (all): Dowload tất cả phần mềm
Bước 2: Cửa sổ giao diện Extened dowload to device hiển thị, người dùng chọn
Type of PG/PC interface là PN/IE, PG/PC interface là card mạng của máy tính
(RJ45). Trong một số trường hợp máy tính tìm không thấy device thì người dùng nên
check vào show all compatible devices.

Bước 3: Chọn "Load" để tiếp tục quá trình dowload xuống PLC. Bảng giao diện
Load preview hiển thị tại đây chọn Target của Device configuration là Dowload to
device, software là Consistent dowload. Chọn load để tiếp tục quá trình dowload
xuống PLC.

71
Bước 4. Cửa sổ giao diện Load results hiển thị tại đây chọn Start all để sau khi
dowload xong CPU chuyển sang trạng thái RUN. Chọn finish để hoàn thành quá trình
dowload xuống CPU

Các bước upload project từ PLC lên PG/PC


Bước 1: Upload phần cứng CPU và những module đi kèm giống như trong mục
“Cấu hình phần cứng với chế độ Unspecified”.
Bước 2: Chọn chuột phải thư mục PLC trong Project tree → Compare
online/offline

72
Bước 3: Cửa sổ giao diện Compare editor hiển thị và nhấn chọn biểu tượng
để so sánh toàn bộ chương trình online đang chạy dưới CPU với chương trình offline
mà chúng ta vừa upload phần hardware

Bước 4: Khi này người dùng có thể thấy biểu tượng upload hiển thị cho phép
người dùng upload chương trình từ PLC lên máy tính. Thực hiện thao tác upload
chương trình: Menu → Online → Upload from device

Bước 5: Cửa sổ giao diện Upload preview để người dùng chọn tiếp tục upload
chương trình cần click chọn Continue và nhấn Upload from device.
1.4.5.5. Phần mềm giả lập PLC S7-1200/1500
Với các phiên bản từ TIA Portal V13 SP1 thì có thể sử dụng PLC SIM cho PLC
S7-1200 (chỉ áp dụng CPU có firmware 4.0 trở lên) và PLC S7-1500 và người dùng
phải cài đặt bản Step7 Basic V13 SP1 và S7-PLCSIM V13 SP1 trở lên. Dưới đây trình
bày các bước thực hiện mô phỏng với PLC S7-1500.

73
Bước 1: Khởi tạo một project với một CPU PLC S7-1500. Ví dụ dùng CPU
1511-1PN.

Bước 2: Chọn khối tổ chức chương trình chính OB1 để bắt đầu lập trình theo yêu
cầu hệ thống. Ví dụ tạo chương trình đơn giản như hình dưới đây.

Bước 3: Tại Device chọn thư mục PLC cần mô phỏng → Thanh menu Online →
Simulation → Start. Hoặc nhấn chọn khối Main [OB1] → chọn biểu tượng Start
Simulation trên thanh công cụ.

74
Xuất hiện hộp thoại cảnh báo, chọn OK.

Lúc này trên màn hình sẽ xuất hiện PLC ảo PLC S7-1500 và cửa sổ “extended
download device”

Bước 4: Cửa sổ chọn giao thức kết nối với CPU xuất hiện và thực hiện chọn như
hình dưới. Sau đó nhấn Start search

75
Sau đó nhấn chọn Load → Load → Start all → Finish tại các hộp thoại tiếp theo.
Sau khi Dowload thành công, PLC ảo sẽ tự chuyển sang chế độ RUN

Bước 5: Trên PLCSIM nhấn chọn biểu tượng (Switch to project view) →
Chọn biểu tượng (New Project) → nhập tên file mô phỏng và đường dẫn lưu trữ →
Nhấn Create để hoàn tất.
Sau đó chọn SIM Table và đánh địa chỉ I/O thực tế để thực hiện giả lập tín hiệu
vào ra, còn nếu dùng vùng nhớ M, DB thì sử dụng chức năng Modify thực hiện trên
giao diện Project

76
Sau đó thao tác tác động vào I0.0 thì quan sát thấy Q0.0 có điện.

Đồng thời chọn chức năng Monitoring On/Off trên thanh công cụ của giao
diện lập trình để xem kết quả mô phỏng.

1.5. CÂU HỎI ÔN TẬP


1. Dòng sản phẩm PLC S7-1200 và PLC S7-1500 phù hợp cho những ứng dụng như
thế nào?
2. Cấu trúc phần cứng của PLC S7-1200 và PLC S7-1500?
3. PLC S7-1200 và PLC S7-1500 truy xuất Tag nhớ hay địa chỉ trực tiếp?
4. PLC S7-1200 và PLC S7-1500 có bao nhiêu ngôn ngữ lập trình? Kể tên các ngôn
ngữ trên
5. Cấu trúc chương trình lập trình cho PLC S7-1200/1500 có những hình thức nào?
6. Trình bày sơ lược về lập trình có cấu trúc có thể sử dụng các khối nào?
7. Trình bày chu trình thực hiện chương trình trong PLC S7-1200/1500?

77
8. Trình bày vòng quét chương trình trong PLC?
9. Địa chỉ MAC, IP Address, Subnet Mask là gì? Địa chỉ MAC và IP khác nhau như
thế nào?
10. Trình bày các bước cấu hình địa chỉ IP cho máy tính?
11. Trình bày các bước cấu hình địa chỉ IP cho PLC S7-1200/1500?
12. Chế độ cấu hình chuẩn theo phần cứng khác với chế độ Unspecified như thế nào?
Hãy trình bày các bước khởi tạo Project mới với chế độ Unspecified và upload
chương trình dưới PLC lên máy tính?
13. Trình bày các bước thực hiện mô phỏng cho PLC S7-1200/1500?

78
CHƯƠNG 2
LẬP TRÌNH ỨNG DỤNG CƠ BẢN VỚI PLC

Nội dụng chương 2 cung cấp cho người học các tập lệnh cơ bản khi lập trình với
PLC S7-1200/1500 trên phần mềm TIA Portal: 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ánh, chuyển đổi kiểu dữ liệu, xử
lý tín hiệu Analog.
2.1. LẬP TRÌNH 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.

79
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.

80
 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.

81
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

82
cần 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.

2.1.2. 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.

83
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.3. 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

84
Input BOOL I, Q, M, I, Q, M, lập tức ngõ vào có
D, L D, L, T, thể sử dụng cấu trúc
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

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

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.

86
3. Thực hiện phép toán logic sau: ( 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.

87
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.

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.4. 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.

88
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
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.

89
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

Để 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

90
Để 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.5. 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ả
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

91
2.1.5.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

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

92
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ụ:

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.5.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.

93
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:

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

94
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.

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


Bộ định thời hay còn gọi là 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.

95
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

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

2.2.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

96
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ì

 Ví dụ minh họa

97
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.2.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ì
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ì

98
 Ví dụ minh họa

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.2.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.

99
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ì

 Ví dụ minh họa

100
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.2.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 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

101
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

102
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.3. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ
2.3.1. Các phép toán 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:

103
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.

104
 So sánh lớn 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ó
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:

105
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.2. 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ị.
 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

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.

106
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:

107
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.
 Lệnh chuyển đổi số nguyên sang số thực 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]
 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:

108
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)
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ụ:

109
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.
 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.
 Lệnh chuyển đổi số thực sang số nguyên 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.

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

110
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]
 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ụ:

111
 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ả
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:

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

 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.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ý

113
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

114
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

115
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

116
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ị
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.

117
2.5. LẬP TRÌNH VỚI TÍN HIỆU TƯƠNG TỰ - ANALOG
Tín hiệu logic chỉ biểu diễn hai mức trạng thái đó là 0 hoặc 1, ví dụ: có điện
+24V tương ứng mức 1, còn không có điện 0V tương ứng mức 0. Khác với tín hiệu
logic, tín hiệu Analog (tương tự) không chỉ có hai trạng thái là có điện +24VDC hay
không có điện 0V, mà tín hiệu Analog có nhiều tầm giá trị trong một phạm vi nào đó.
Những tín hiệu Analog như: Nhiệt độ (50…150oC), lưu lượng (0…200 lít/phút),
tốc độ quay (0…1500 vòng/phút), áp suất (0...10 Bar), độ ẩm (1…100%RH), … Cảm
biến để nhận biết được các đại lượng vật lý này gọi là cảm biến Analog, chúng chuyển
đổi các giá trị của các đại lượng đề cập ở trên thành những tín hiệu điện áp chuẩn,
chẳng hạn như: -500…+500 mV, -5…+5V, -10…+10V, -20…+20 mA, 0…20 mA,
4…20 mA.
PLC sử dụng module Analog để xử lý các đại lượng này, quá trình xử lý được
minh họa như sau:

Hình 2.1. Quá trình xử lý ngõ vào/ra tương tự


Những cảm biến Analog như áp suất, nhiệt độ, … sẽ được bộ chuyển đổi
(transducer) chuyển thành những tín hiệu Analog điện áp, dòng điện chuẩn. Tín hiệu
Analog chuẩn được đưa tới các module Analog input. Trước khi những giá trị này
được CPU xử lý, chúng phải được chuyển sang dạng số. Điều này được thực hiện
bằng bộ chuyển đổi ADC của các module Analog ngõ vào. Việc chuyển đổi tín hiệu
tương tự sang tín hiệu số được thực hiện tuần tự, có nghĩa là tín hiệu được chuyển đổi
lần lượt cho từng kênh Analog input. Kết quả chuyển đổi được lưu trữ trong bộ nhớ,

118
chúng chỉ mất đi khi có giá trị mới viết đè lên và chúng được cập nhật theo chu kỳ lấy
mẫu của modul. Tín hiệu Analog qua chuyển đổi được CPU xử lý theo chương trình.
Với những tín hiệu ra dạng Analog như van tuyến tính, đầu vào Analog biến tần,
… thì khi CPU truyền các giá trị Analog tới module Analog ngõ ra, một bộ DAC
chuyển chúng sang các tín hiệu Analog chuẩn để đưa qua cơ cấu chấp hành Analog.
2.5.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,…
- Tín 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:

- 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ừ đó

119
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
2.5.1.1. Lập trình xử lý tín hiệu dòng/áp
Để 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:

120
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.

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ố

121
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

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

122
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

2.5.1.2. Lập trình xử lý tín hiệu nhiệt


Để xử lý tín hiệu nhiệt, chúng ta có thể sử dụng các modul AI chuyên dụng để
đọc các tín hiệu trả về từ RTD (nhiệt điện trở) hay TC (Thermocouple).
- Nếu giá là điện trở (resistance RTD), thông thường giá trị chuyển đổi (scale)
của giá trị trả về lớn nhất là 27648.
- Nếu giá trị trả về từ TC là điện áp, thông thường giá trị chuyển đổi của giá trị
trả về lớn nhất là 27648.
- Nếu giá trị trả về là nhiệt độ thì giá trị trả về sẽ nhân với hệ số y (y có thể là
0.1, 10, 100, …). Điều này có nghĩa là nếu giá trị đọc là 247 thì nhiệt độ là
34.70. Còn lại do người dùng cấu hình đọc về là độ F hay độ C

123
2.5.2. Lập trình xử lý tín hiệu Analog output
2.5.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.5.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.
- 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

124
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 thực hiện yêu cầu bài toán

2.6. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG


2.6.1. Câu hỏi ôn tập
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)?
125
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?
3. Kể tên các tập lệnh logic và chức năng ứng dụng của nó?
4. Trình bày nguyên lý hoạt động của bộ định thì TP, TON,TOFF, TONR?
5. Sự khác nhau giữa bộ định thì TON và TONR như thế nào?
6. Bộ định thì khai báo theo chuẩn IEC timer có những đặc trưng gì?
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.
8. Giá trị đếm tối đa của các bộ Counter là bao nhiêu?
9. Trình bày câu lệnh xử lí tín hiệu analog input?
10. Trình bày câu lệnh xử lí tín hiệu analog output?
2.6.2. Bài tập ứng dụng
Sử dụng PLC S7-1200 hoặc PLC S7-1500 lập trình điều khiển các công nghệ
dưới đây.
Bài tập 1: Đ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.

Bài tập 2: Đ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ơ
126
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.

Bài tập 3: Đ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.

127
Bài tập 4: Đ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).

Bài tập 5: 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

128
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:

Bài tập 6: 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?
Bài tập 7: Máy uốn thanh kim loại:

129
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.
Bài tập 8: 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ệ).

130
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.
Bài tập 9: Đả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.
Bài tập 10: Thiết bị rót chất lỏng vào thùng chứa

131
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.
Bài tập 11: Đ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.
Bài tập 12: Giám sát hoạt động băng tải bằng cảm biến phát xung

132
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 đứ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).

Bài tập 13: 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).

Bài tập 14: Đ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

133
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.
Bài tập 15: 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 đó

134
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.
Bài tập 16: Hệ thống khoan - doa
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.

Bài tập 17. Bài toán điều khiển khoan cần

135
 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).
Bài tập 18: 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.

136
Bài tập 19: Đ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 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.

Bài tập 20: Đ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

137
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 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í đó.
Bài tập 21: 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ự.

138
CHƯƠNG 3. PHƯƠNG PHÁP LẬP TRÌNH PLC
Nội dung 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.

139
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 :

140
+ 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.
+ 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
3.3.

141
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 3 phương pháp tiêu biểu là bảng trạng thái, 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 bảng trạng thái
3.2.1.1. Biểu diễn mạch trình tự bằng bảng chuyển trạng thái
Phương pháp bảng trạng thái mô tả quá trình chuyển đổi trạng thái với hình thức
bảng, minh họa như bảng 3.1.
Bảng 3.1. Mô tả công nghệ bằng bảng trạng thái
Trạng thái Tín hiệu vào Tín hiệu ra
α β ⋯ Y1 Y2 ⋯
S1
S2

142
- Các cột của bảng ghi các biến vào và các biến ra. Các tín hiệu vào là các tín
hiệu điều khiển (α, β, …) và cũng có thể là tín hiệu điều khiển của người vận hành, của
thiết bị chương trình hoặc các tín hiệu phát ra từ các thiết bị công nghệ. Các tín hiệu ra
(Y1, Y2, …) là tín hiệu kết quả của quá trình điều khiển và được ghi ở cột đầu ra.
Số cột của bảng = (2số tín hiệu vào (n) + Số tín hiệu ra (m) +1.
- Các hàng của bảng ghi các trạng thái trong của mạch (S1, S2, …)
Số hàng của bảng = Số trạng thái trong cần có của hệ (k) +1.
- Các ô giao nhau của cột biến vào và các hàng trạng thái sẽ ghi trạng thái của
mạch. Nếu một trạng thái có tên trạng thái mạch trùng với tên hàng thì đó là trạng thái
ổn định hoặc trạng thái bền vững. Nếu trạng thái không trùng với tên hàng thì đó là
trạng thái không ổn định hay trạng thái không bền vững.
- Các ô giao nhau của cột tín hiệu ra và các hàng trạng thái sẽ ghi giá trị ra tương
ứng.
Xét ví dụ ở bảng 3.2: Với α, β, γ là các tín hiệu vào; Y1, Y2 là tín hiệu ra. Hệ có 3
trạng thái: S1 (làm việc ở tốc độ thấp), S2 (đảo chiều quay), S3 (dừng máy). Mỗi trạng
thái của mạch có thể có thể diễn đạt bằng ngôn ngữ và kèm theo một con số để gọi tên
trạng thái đó.
Bảng 3.2. Ví dụ mô tả công nghệ bằng bảng trạng thái
Trạng thái Tín hiệu vào Tín hiệu ra
α β γ Y1 Y2
S1 (tốc độ thấp) S1 S2 S3 0 0

S2 (đảo chiều quay) S1 S2 1 0


S3 (ngừng máy) S3 0 0

Ví dụ ta xét trạng thái S1, lúc này máy hoạt động ở tốc độ thấp. Nếu lúc này cho
biến α tác động thì máy vẫn làm việc ở trạng thái S1 (trạng thái S1 là ổn định), nếu cho
biến β tác động thì máy sẽ chuyển sang trạng thái S2 (nhưng trạng thái S2 ghi ở hàng
S1 là không ổn định – trạng thái trung gian, mạch đang chuẩn bị chuyển đến trạng thái
ổn định khác), nếu cho biến γ tác động thì mạch sẽ chuyển từ trạng thái S1 sang trạng
thái S3 (trạng thái S3 không ổn định). Các biến đầu ra Y1 và Y2 lúc này đều bằng 0.
Tương tự như vậy ta sẽ lý giải các trạng thái và kết quả ở hàng 2, hàng 3.
3.2.1.2. Các bước tổng hợp mạch trình tự bằng phương pháp bảng trạng thái
Các bước tổng hợp mạch trình tự theo phương pháp bảng trạng thái là:
- Bước 1: Phân tích tín hiệu vào/ra → lập Graph chuyển trạng thái của hệ,

143
- Bước 2: Thành lập bảng chuyển trạng thái. (diễn đạt các yêu cầu công nghệ
thành ký hiệu kiểu bảng),
- Bước 3: Thành lập bảng trạng thái rút gọn,
- Bước 4: Xác định biến trung gian và tìm hàm logic của nó,
- Bước 5: Tìm hàm logic của các biến ra khi có mặt của biến trung gian,
- Bước 6: Lập sơ đồ mạch động lực và mạch điều khiển.
- Bước 7: Phân tích mạch đ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: Điều khiển máy phay đơn giản
Máy phay đơn giản (hình 3.4) có nguyên lý hoạt động như sau: Khi ấn nút khởi
động M thì bàn máy di chuyển về hướng phải. Khi bàn máy gặp công tắc hành trình a1
thì tự động quay ngược trở lại. Trong chiều chạy ngược, nếu bàn phay đụng công tắc
hành trình a0 thì tự động đảo chiều. Quá trình cứ thế lặp đi lặp lại. Khi ấn nút dừng D
thì bàn phay dừng hoạt động.

Hình 3.4. Công nghệ máy phay đơn giản


Sơ đồ công nghệ máy phay đơn giản được biểu diễn như hình 3.5.

Hình 3.5. Mô tả công nghệ máy phay đơn giản


Chú ý: Nút nhấn M và nút dừng D sẽ không được nhắc đến trong phần thiết kế.
Các tín hiệu vào này sẽ cấp/ngắt điện cho một rơle trung gian, ký hiệu Dg. Rơle trung
gian Dg sẽ là điều kiện cần để mạch hoạt động. Nghĩa là rơle trung gian Dg có điện thì
mạch mới bắt đầu hoạt động.

144
 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à công tác hành trình báo trạng thái chuyển động sang trái.
 a1: Là công tác hành trình 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: Bàn máy sang phải (tín hiệu điều khiển động cơ quay thuận).
 T: Bàn máy sang trái (tín hiệu điều khiển động cơ quay ngược).
Graph chuyển trạng thái được thiết lập như sau:

Trạng thái 1 (10/10) là trạng thái công tác hành trình a0 tác động (a0 =1), a1 chưa
tác động (a1=0). Khi đó bàn máy chạy sang phải (P =1, T=0). Khi bàn máy chạy khỏi
vị trí cảm biến thì a0 trở về trạng thái không tác động (a0=0), bàn máy vẫn tiếp tục
chạy sang phải, ta có trạng thái 2 (00/10). Khi bàn máy di chuyển sang phải và tác
động vào công tắc hành trình a1 (a1=1), thì bàn máy chuyển hướng chạy sang trái (P =
0, T= 1). Ta có trạng thái 3 (01/01). Khi bàn máy chạy khỏi vị trí công tắc hành trình
a1 thì a1 trở về trạng thái không tác động (a1=0), bàn máy vẫn tiếp tục chạy sang trái,
ta có trạng thái 4 (00/01). Bàn máy sau đó sẽ gặp a0 và chu trình sẽ lặp lại.
Nhìn vào Graph chuyển trạng thái ta thấy: Trạng thái 2 và trạng thái 4 có cùng tổ
hợp tín hiệu vào nhưng tổ hợp tín hiệu ra lại khác nhau, chính vì sự khác nhau đó nên
công nghệ đã cho mới được gọi là mạch kép. Nhiệm vụ của người thiết kế: phân biệt
điểm “nước đôi” – là điểm mà tại đó có nhiều hơn một tín hiệu ra.
Bước 2: Thành lập bảng chuyển trạng thái
- Số cột: Số tổ hợp biến vào + số biến ra +1
Trong đó: Số tổ hợp biến vào = 2 số biến vào = 22 = 4
Số biến ra: 4 (P, T)
Vậy: Số cột = 4 + 2 + 1 = 7
Số hàng = Số trạng thái +1
Trong đó: Số trạng thái = 4 (1, 2, 3, 4) → Số hàng = 4 + 1 = 5
Từ trên ta có bảng trạng thái như bảng 3.3.

145
Bảng 3.3. Bảng chuyển trạng thái

Trong bảng trên các ký hiệu 1 , 2 , 3 , 4 là các trạng thái ổn định còn 1, 2,
3, 4 là các trạng thái không ổn định.
Bước 3: Rút gọn bảng chuyển trạng thái
Rút gọn bảng chuyển trạng thái là ghép các hàng của bảng chuyển trạng thái.
Các hàng trong bảng chuyển trạng thái có thể ghép được với nhau khi chúng thỏa mãn
các yêu cầu sau:
 Không quan tâm đến các đầu ra của các trạng thái ứng với các hàng.
 Tất cả các ô cùng cột phải được điền cùng một số (không quan tâm đến ổn định
hay không ổn định), hoặc là ô trống. Nếu chỉ cần một cột có 2 ô trong cột đó
điền số khác nhau thì không ghép được.
Nguyên tắc ghép hàng như sau:
 Nếu ghép các ô có trạng thái ổn định với trạng thái không ổn định sẽ ghi trạng
thái ổn định.
 Ghép các ô có trạng thái ổn định hoặc không ổn định với một ô trống thì sẽ ghi
trạng thái ổn định hoặc không ổn định.
Vậy từ bảng trạng thái 3.3; ta thấy hàng 1 và 2 có thể ghép với nhau, hàng 3 và 4
có thể ghép với nhau. Ta có bảng bảng 3.4.
Bảng 3.4. Rút gọn bảng trạng thái 3.3
Trạng thái 00 01 11 10
10 10
1 + 2 2 3 1
01 01
3 + 4 4 3 1
Bước 4: Xác định biến trung gian và tìm hàm số logic trung gian.
Biến trung gian có nhiệm vụ phân biệt các trạng thái ra khi tổ hợp biến vào giống
nhau. Đây là điểm khác biệt của mạch trình tự và mạch tổ hợp, với mạch tổ hợp thì
tương ứng với một tổ hợp tín hiệu vào chỉ có duy nhất tổ hợp tín hiệu ra.

146
+ Xác định số lượng biến trung gian dựa vào công thức:
2Smin ≥ n1 − 1
Trong đó: Smin là số lượng biến trung gian tối thiểu phải dùng.
n1 là số hàng của bảng trạng thái sau khi đã rút gọn. Khi đó (n1-1) chính là số
trạng thái cần phân biệt
Trong ví dụ ta có: n1 = 3 → Smin = 1
→ Số lượng biến trung gian cần dùng là 1. Gọi biến trung gian đó là y.
Số trạng thái cần phân biệt là 2 (đó là trạng thái đi xuống X và sang phải P).
+ Từ bảng 3.4 ta có thể mã hóa biến trung gian như bảng 3.5.
Bảng 3.5. Mã hóa biến trung gian
1 2
y 3 4
Cách mã hóa trên có nghĩa là: Tương ứng với các trạng thái 3 và trạng thái 4
thì biến y có giá trị 1, còn các trạng thái 1 và 2 biến y sẽ có giá trị 0.
+ Để tìm được hàm logic của biến trung gian thì phải lập được bảng Karnaugh
cho biến trung gian.
Cách lập bảng Karnaugh cho biến trung gian được thực hiện như bảng 3.6. Đối
với biến trung gian chúng ta phải xét cả trường hợp các trạng thái không ổn định. Giá
trị của biến trung gian đối với các trạng thái không ổn định sẽ bằng giá trị của nó đối
với trạng thái ổn định có cùng tên.
Bảng 3.6. Bảng Karnaugh cho biến trung gian Y
a0a1 00 01 11 10
y
0 0 1 0
1 1 1 0
Các trạng thái 1 và 2 ứng với y = 0 nên trong các ô trong bảng Karnaugh ứng với
các ô trong bảng trạng thái rút gọn có ghi trạng thái 1 và 2 (ổn định và không ổn định)
ta điền giá trị 0. Các trạng thái 3 và 4 ứng với y = 1 nên trong các ô trong bảng
Karnaugh ứng với các ô trong bảng trạng thái rút gọn có ghi trạng thái 3 và 4 (ổn định
và không ổn định) ta điền giá trị 1.
Tối thiểu hóa được hàm logic cho biến trung gian Y như sau: f (Y ) = a1 + a0 . y

147
Bước 5: Tìm hàm logic của các biến ra
Làm tương tự như đối với biến trung gian nhưng khác ở chỗ không xét đến các
trạng thái không ổn định.
+ Tìm hàm logic cho biến ra P:
Bảng 3.7. Bảng Karnaugh viết cho biến ra P
a0a1 00 01 11 10
y
0 1 1
1 0 0
Các trạng thái 1 và 2 ứng với P = 1, trạng thái 3 và 4 ứng với P = 0 nên trong các
ô trong bảng Karnaugh ứng với các ô trong bảng trạng thái rút gọn có ghi trạng thái 1
và 2 ổn định ta điền giá trị 1, ghi trạng thái 3 và 4 ổn định ta điền 0, ghi các trạng thái
không ổn định ta để trống. Cuối cùng ta được bảng Karnaugh như bảng 3.7 và tối
thiểu hóa được hàm logic sau: f ( P ) = y .
+ Tìm hàm logic cho biến ra T.
Bảng 3.8. Bảng Karnaugh viết cho biến ra T
a0a1 00 01 11 10
y
0 0 0
1 1 1 1
Các trạng thái 1 và 2 ứng với T = 0, trạng thái 3 và 4 ứng với T = 1 nên trong các
ô trong bảng Karnaugh ứng với các ô trong bảng trạng thái rút gọn có ghi trạng thái 1
và 2 ổn định ta điền giá trị 0, ghi trạng thái 3 và 4 ổn định ta điền 1, ghi các trạng thái
không ổn định ta để trống. Cuối cùng ta được bảng Karnaugh như bảng 3.8 và tối
thiểu hóa được hàm logic sau: f (T ) = y .
Các phương trình logic của các biến ra và biến trung gian đã tìm được như sau:
 f (Y ) = a1 + a0 . y

 f ( P) = y

 f (T ) = y
Bước 6: Phân tích mạch điều khiển và hiệu chỉnh nếu có
Trạng thái đi sang phải - sang trái là các trạng thái trái đối ngược nhau, là quá
trình quay thuận, quay ngược của động cơ. Cho nên các trạng thái trên không được có
148
đồng thời, vì vậy chúng ta bổ xung thêm các phần tử khóa chéo (bảo vệ liên động
điện). Các hàm logic của P, T được hiệu chỉnh như sau: f ( P ) = yt , f (T ) = yt . Từ các
hàm logic thu được, tiến hành xây dựng chương trình PLC.
b) Ví dụ áp dụng 2: Hệ thống điều khiển cần trục có sơ đồ công nghệ như hình 3.6.

Hình 3.6. Sơ đồ công nghệ hệ thống điều khiển cần trục


Hệ thống cần trục gồm 2 cơ cấu chuyển động lên-xuống và phải-trái. Đầu tiên cơ
cấu lên xuống sẽ thực hiện chuyển động đi xuống (cơ cấu chuyển động phải-trái đứng
im). Khi gặp công tắc hành trình a1 thì sẽ thực hiện chuyển động lên (cơ cấu chuyển
động phải-trái vẫn đứng im). Khi gặp công tắc hành trình a0 thì cơ cấu lên-xuống
dừng, cơ cấu phải-trái thực hiện chuyển động sang phải. Khi gặp công tắc hành trình
b1 thì thực hiện chuyển động sang trái. Khi gặp công tắc hành trình b0 thì cơ cấu phải
trái dừng và cơ cấu lên xuống thực hiện chuyển động đi xuống và chu trình sẽ được
lặp lại.
 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 đi xuống X.
b0: Là công tắc hành trình báo trạng thái chuyển động sang phải P.
a1: Là công tắc hành trình báo trạng thái chuyển động đi lên L.
b1: Là công tắc hành trình báo trạng thái chuyển động sang trái T.
Các tín hiệu ra: Có 4 tín hiệu ra.
X: Cơ cấu đi xuống L: Cơ cấu đi lên
P: Cơ cấu đi sang phải. T: Cơ cấu đi sang trái.

149
Graph chuyển trạng thái được thiết lập như sau:

Nhận xét: Từ Graph chuyển trạng thái trên thì ta sẽ có bảng chuyển trạng thái
lớn. Vậy để đơn giản chúng ta có thể coi:
a=0 tương ứng a0
a=1 tương ứng a1
b=0 tương ứng b0
b=1 tương ứng b1
Chọn biến a thay cho a0 và a1 sao cho: a0 tác động làm cho biến a được thiết lập
giá trị 0, duy trì giá trị 0 khi a0 đã ngừng tác động. Và biến a chỉ được thiết lập giá trị
1 khi biến a1 tác động và duy trì giá trị 1 khi a1 ngừng tác động. Lý luận tương tự cho
biến b.
a = (a1 + a )a0
Do đó ta có mối quan hệ sau: 
b = (b1 + b)b0
Graph chuyển trạng thái trở thành:

Bước 2: Thành lập bảng chuyển trạng thái


- Số cột: Số tổ hợp biến vào + số biến ra +1
Trong đó: Số tổ hợp biến vào = 2 số biến vào = 22 = 4
Số biến ra: 4 (X, L, P, T)
Vậy: Số cột = 4 + 4 + 1 = 9
Số hàng = Số trạng thái +1
Trong đó: Số trạng thái = 4 (1, 2, 3, 4) → Số hàng = 4 + 1 = 5
Từ trên ta có bảng trạng thái 3.9.

150
Bảng 3.9. Bảng chuyển trạng thái cho công nghệ hệ thống điều khiển cần trục
Trạng Biến vào Biến ra
thái
00 01 11 10 X L P T
1 1 2 1 0 0 0
2 3 2 0 1 0 0
3 3 4 0 0 1 0
4 1 4 0 0 0 1
Bước 3: Thành lập bảng trạng thái rút gọn (bảng 3.10).
Bảng 3.10. Rút gọn bảng trạng thái 3.9
Trạng thái 00 01 11 10
1 + 4 1 4 2
2 + 3 3 4 2
Bước 4: Xác định biến trung gian và tìm hàm số logic trung gian.
Số lượng biến trung gian cần dùng là 1. Gọi biến trung gian đó là y. Số trạng thái
cần phân biệt là 2, đó là trạng thái đi xuống X và sang phải P.
Ta có bảng mã hóa như bảng 3.11.
Bảng 3.11. Mã hóa biến trung gian
1 4
y 2 3
+ Tìm hàm logic cho biến trung gian: Lập bảng Karnaugh như bảng 3.12.
Bảng 3.12. Bảng Karnaugh viết cho biến trung gian Y
ab 00 01 11 10
y
0 0 0 1
1 1 0 1
Tổng hợp bảng Karnaugh trên ta có: hàm logic của biến trung gian:
f (Y ) = a + b . y
Bước 5: Tìm hàm logic của các biến ra
+ Tìm hàm logic cho biến ra X

151
Bảng 3.13. Bảng Karnaugh cho biến ra X
ab 00 01 11 10
y
0 1 0 1
1 0 0
Từ bảng 3.13 ta có hàm logic viết cho biến X:
f ( X ) = b .y
+ Tìm hàm logic cho biến ra L
Bảng 3.14. Bảng Karnaugh viết biến ra L
ab 00 01 11 10
y
0 0 0
1 0 1
Từ bảng 3.14, ta có hàm logic viết cho biến L: f ( L ) = a
+ Tìm hàm logic cho biến ra P
Bảng 3.15. Bảng Karnaugh viết cho biến P
ab 00 01 11 10
y
0 0 0
1 1 0
Từ bảng 3.15, ta có hàm logic viết cho biến P:
f ( P ) = ay
+ Tìm hàm logic cho biến ra T.
Bảng 3.16. Bảng Karnaugh viết cho biến ra T
ab 00 01 11 10
y
0 0 1
1 0 0
Từ bảng 3.16, ta có hàm logic viết cho biến T:

152
f (T ) = b
Các phương trình logic của các biến ra và biến trung gian đã tìm được như sau:
f (Y ) = a + b . y

f ( X ) = b .y

f ( L) = a

f ( P ) = ay
f (T ) = b

Bước 6: Phân tích mạch điều khiển và hiệu chỉnh
Trạng thái đi xuống- đi lên và sang phải - sang trái là các trạng thái trái đối
ngược nhau, là quá trình quay thuận, quay ngược của các động cơ. Cho nên các trạng
thái trên không được có đồng thời, vì vậy chúng ta bổ xung thêm các phần tử khóa
chéo (bảo vệ liên động điện). Các hàm logic của X, L, P, T được hiệu chỉnh như sau:
f ( X ) = b . y .l , f ( L ) = a.x , f ( P ) = ayt , f ( T ) = b p .

Ưu, nhược điểm của phương pháp bảng trạng thái:


- Dễ dàng,
- Dài dòng, dễ nhầm lẫn khi tín hiệu đầu vào tăng,
- Quá trình hiệu chỉnh phức tạp.
3.2.2. Phương pháp hàm tác động
3.2.2.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.
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.

153
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.2.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.

154
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

155
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 ) + .... + fi ( 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

156
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 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.2.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.7
bằng phương pháp hàm tác động.
a0 a1
P

T
Hình 3.7. 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.
157
- 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:
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

158
b) Ví dụ áp dụng 2: Tổng hợp công nghệ hình 3.5 theo phương pháp hàm tác động.

Hình 3.8. 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.

159
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:
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 ). fc (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:
160
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


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

161
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
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 3.9 bằng
phương pháp hàm tác động.

Hình 3.9. 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

162
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
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) A x
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:

163
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.3. Phương pháp Grafcet
3.2.3.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ệ
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.

Hình 3.10. 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 3.10a. 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.10b.
164
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 3.10c, 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ố
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, …

a) b)
Hình 3.11. 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 3.11a. Để 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.

165
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 3.11b, 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 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 3.12a.
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 3.12b 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 đó.

a) b)
Hình 3.12. Các loại hành động có thể xảy ra của các giai đoạn

166
3.2.3.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.13a)
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.

4. 5.

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

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.13. Các trường hợp phân phối và hội tụ

167
b. Hội tụ đồng thời (hình 3.13b)
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.13c)
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.
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.13d)
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.14a)
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.14b)
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.

168
`
a) Quay vòng b) Rẽ nhánh
Hình 3.14. Các trường hợp quay vòng và rẽ nhánh
3.2.3.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à 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
(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
đoạn là giai đoạn ở bậc (n+1) tích cực: M ( n +1) = 1

169
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 .
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 3.15a.
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.15b
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

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


Hình 3.15. 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.

170
a) Hội tụ kiểu VÀ b) Hội tụ kiểu HOẶC
Hình 3.16. 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 3.16a,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 3.17a:
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

- 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 3.17b:
M 11 = [ M 8 d + M 10 .e + m11 ].M 12
[ M 8 d + 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.

171
- Quay vòng kín (xem hình 3.17a)

13

14

15

16
k

17

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


Hình 3.17. 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 3.17a), 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 3.17b)
Đó là việc nhảy qua các giai đoạn 20 và 21.

172
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
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.3.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.3.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 3.15 bằng phương
pháp Grafcet.

Hình 3.18. 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 3.17)
Bảng 3.17. 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: 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.

173
Bước 2: Thiết lập Grafcet 1 như hình 3.19.

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


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 3.20

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

174
Bước 4: Thiết lập các phương trình logic của các phần tử.
 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 3.21, thiết kế mạch điều khiển theo phương
pháp Grafcet.

Hình 3.21. 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.18)
Bảng 3.18. 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: 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 B+: Trạng thái sang trái
phải. B-: Trạng thái sang phải
a1: là tín hiệu báo trạng thái chuyển động đi lên.
b1: là tín hiệu báo trạng thái chuyển động sang trái.

175
Bước 2: Thiết lập Grafcet 1 (hình 3.22)
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.22. Grafcet 1 cho công nghệ hình 3.21


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

Hình 3.23. Grafcet 1 cho công nghệ hình 3.21


176
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
 M 2 = (a1.M 1 + m2 ) M 3 
  A− = M 0 a0 + M 2
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.19. 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
177
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.

178
Hình 3.24. 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.

179
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
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.

180
- 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.
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.

181
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.25. Lập trình cấu trúc với FB/FC


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
182
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

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.

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

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.

184
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 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:

185
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.

186
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:

187
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.

188
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 3.20. 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ừ

189
D#1990 – 1 – 1 đến D#2168 – 12 – 31
• 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

190
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,

191
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

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

192
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.

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.21. Đị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.

193
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.

194
3.3.2.3. Thư viện cho người dùng
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.

195
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.
3.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3
3.4.1. Câu hỏi
1. Khối OB khởi động, OB ngắt chu kỳ được sử dụng trong trường hợp nào?
2. Sự khác giữa lập trình tuyến tính và lập trình cấu trúc như thế nào?
3. Khi nào người dùng lập trình với hàm chức năng FC? Khi nào người dùng lập trình
với khối hàm chức năng FB? Nêu sự khác nhau giữa các khối hàm OB, FB, FC.
4. Khối dữ liệu DB được sử dụng để làm gì? Hãy nêu sự khác nhau giữa Instance DB
và global DB?
5. Định dạng dữ liệu người dùng UDT sử dụng làm gì? Nêu sự giống nhau và khác
nhau giữa khối dữ liệu DB với định dạng dữ liệu người dùng UDT.

196
3.4.2. Bài tập
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)

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:

a) b)

197
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:

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.

198
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.

199
CHƯƠNG 4
LẬP TRÌNH ỨNG DỤNG NÂNG CAO VỚI PLC
Nội dung chương 4 cung cấp cho sinh viên kiến thức về lập trình đếm xung tốc
độ cao (encoder) và phát xung tốc độ cao ứng dụng cho điều khiển động cơ bước,
Servor. Và giới thiệu thuật toán PID, sử dụng bộ điều khiển PID, lựa chọn tham số bộ
điều khiển trên TIA PORTAL
4.1. LẬP TRÌNH ĐẾM VÀ PHÁT XUNG TỐC ĐỘ CAO
Trong công nghiệp, để nhận biết vị trí góc quay, chiều dài, tốc độ quay ta có thể
sử dụng một thiết bị chuyên dụng Encoder. Tín hiệu phản hồi từ encoder là những tín
hiệu xung tốc độ cao, những xung tốc độ cao này bộ đếm thường không thể đếm được,
mà thay vào độ ta phải sử dụng bộ đếm tốc độ cao của PLC gọi là HSC. Bộ điều khiển
PLC S7-1200 hỗ trợ tối đa 6 bộ đếm HSC và được tích hợp trên CPU.
Ngoài ra, việc điều khiển tốc độ, vị trí động cơ phương pháp PWM ngày nay
được sử dụng phổ biến. Bộ điều khiển PLC S7-1200 hỗ trợ chức năng phát xung
PWM, PTO.
4.1.1. Đọc xung tốc độ cao
4.1.1.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ì 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
encoder tương đối (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
Bảng 4.1. Tần số đọc xung tối đa trên thân CPU

CPU Địa chỉ Input Chế độ 1 hay 2 phase Chế độ Phase A/B
Quadrature
1211C I0.0÷I0.5 100 Khz 80 Khz
1212C I0.0÷I0.5 100 Khz 80 Khz

200
CPU Địa chỉ Input Chế độ 1 hay 2 phase Chế độ Phase A/B
Quadrature
I0.0÷I0.7 30 Khz 20 Khz
1214C và I0.0÷I0.5 100 Khz 80 Khz
1215C 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
Bảng 4.2. Tần số đọc xung tối đa trên SB

Signal board Địa chỉ Input Chế độ 1 hay 2 phase Chế độ Phase A/B
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
4.1.1.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
- Đế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

201
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.
Bảng 4.3. 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
4.1.1.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
- 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.
Bảng 4.4. 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]
HSC 2 2-phase [R] CU CD
202
Tín hiệu ngõ vào on-board của CPU (I0.x)
Chế độ đếm HSC
0 1 2 3 4 5
AB-phase [R] A B
1-phase C [d]
2-phase CU CD
HSC 3 AB-phase A B
Bảng 4.5. 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

Bảng 4.6. 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]
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

203
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 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 4.7. 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.
4.1.1.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.

204
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.

205
• 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.
• Để 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

206
Bảng 4.8. 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
HSC3 Dint ID1008
HSC4 Dint ID1012
HSC5 Dint ID1016
HSC6 Dint ID1020

Bảng 4.9. 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
4.1.1.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

207
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).
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

208
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

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

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).

210
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)

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 ...

211
4.1.2. Phát xung tốc độ cao với PWM
4.1.2.1. Hoạt động của bộ phát xung tốc độ cao

Độ rộng xung PWM của S7-1200 có thể được biều diễn dưới dạng tỉ lệ phần
trăm, tỉ lệ phần nghìn, tỉ lệ phần mười nghìn của chu kỳ thời gian, hoặc có thể định
dạng theo S7-Analog. Độ rộng xung PWM có thể thay đổi từ 0 (trạng thái không phát
xung với ngõ ra luôn tắt ) đến giá trị full scale (trạng thái không phát xung với ngõ ra
luôn sáng).
Khi giá trị ngõ ra PWM thay đổi từ 0 đến full scale, ngõ ra phát xung hoạt động
giông như ngõ ra tín hiệu tương tự. Ví dụ, ngõ ra PWM có thể sử dụng điều khiển tốc
độ động cơ từ trạng thái dừng đến tốc độ tối đa (full scale), hoặc có thể sử dụng để
điều khiển vị trí của các van tuyến tính nhận tín hiệu dạng xung.
Có 4 ngõ ra phát xung để thực hiện phát xung tốc độ cao với 2 sự lựa chọn đó là
PWM và PTO (pulse train output). Người dùng có thể gán cho ngõ ra thực hiện phát
xung PWM hay PTO, nhưng không thể thực hiện 2 chế độ đồng thời. Chế độ phát
xung PTO sẽ được tìm hiểu rõ hơn với các tập lệnh điều khiển vị trí (motion control).
Người dùng có thể sử dụng ngõ ra tích hợp trên thân (On - board) của CPU hoặc
Signal board. Số lượng kênh phát xung ứng với từng CPU sẽ được trình bày ở các
bảng liệt kê phía dưới. Nếu ngõ ra không được sử dụng với chế độ phát xung thì vẫn
có thể sử dụng với các mục đích khác của người dùng.
Bảng 4.10. Số lượng kênh phát xung và tần số của CPU S7-1200

Kênh phát xung Pulse Direction

On board Q0.0 Q0.1


PTO1
SB Q4.0 Q4.1

On board Q0.0
PWM1
SB Q4.0

212
Kênh phát xung Pulse Direction

On board Q0.2 Q0.3


PT02
SB Q4.2 Q4.3

On board Q0.2
PWM2
SB Q4.2

On board Q0.4 Q0.5


PT03
SB Q4.0 Q4.1

On board Q0.4
PWM3
SB Q4.1

On board Q0.6 Q0.7


PT04
SB Q4.2 Q4.3

On board Q0.6
PWM4
SB Q4.3

 CPU 1211C chỉ có 2 kênh phát xung On - board.


 CPU 1212C chỉ có 3 kênh phát xung On — board
 Tất cả CPU có firmware > V4.2 đều có 4 kênh phát xung

4.1.2.2 Tập lệnh điều khiển quá trình phát xung PWM
Tập lệnh CTRL_PWM cho phép phát xung PWM liên tục với chu kỳ cố định và
duty cycle (cycle time) thay đổi được. Khi gọi tập lệnh CTRL_PWM trong chương
trình STEP 7 Basic V1x sẽ tự động tạo ra 1 instance DB tương ứng
Bảng 4.11. Tham số và kiểu dữ liệu của tập lệnh CTRL_PWM

Tham số Khai báo Kiểu dữ liệu Miêu tả

PWM In HW_PWM HSC identifier.

1 = Cho phép phát xung.


ENABLE In Bool
0 = Ngừng phát xung.

BUSY Out Bool Hàm chức năng đang bận xử lý

213
Tham số Khai báo Kiểu dữ liệu Miêu tả

STATUS Out Word Mã báo trạng thái.

Lệnh CTRL_PWM lưu trữ thông tin của những tham sô" vào trong khôi dữ liệu
Instance DB và không thể thay đổi bởi người dùng, tuy nhiên các tham số đó có thể
được điều khiển (controlled) bởi tập lệnh CTRL_PWM.
Tham số ENABLE cho phép lệnh CTRL_PWM hoạt động để thực hiện phát
xung PWM. Độ rộng xung sẽ được cài đặt trong cấu hình Device configuration khi
CPU chuyển sang trạng thái RUN. Độ rộng xung (duty cycle) chỉ có thể thay đổi
dựa vào ngõ ra của process image (QW...).
Lưu ý:
 Các phiên bản trước đây chỉ cho phép thay đổi duty time nhưng CPU có
firmware V4.x trở lên với hỗ trợ của phần mềm TIA Portal V14 SP1 trở lên đã
cho phép thay đổi thời gian chu kỳ.
 Khi sử dụng I/O với chế độ PWM và PTO thì không thể sử dụng bảng Force
table để thay đổi các biến này.
4.1.2.3. Cấu hình phần cứng cho một kênh phát xung
Để CPU thực hiện chức năng phát xung (PWM/PTO) thì người dùng cần phải
cấu hình bật chế độ Enable cho chức năng phát xung hoạt động trong giao diện Device
view của CPU S7 - 1200.
Bảng 4.12. Tần số phát xung lớn nhất của ngõ ra on- board

Pulse và
CPU Ngõ ra CPU Các chế độ khác
direction

1211C Q0.0 - Q0.3 100 Khz 100 Khz

Q0.0 - Q0.3 100 Khz 100 Khz


1212C
Q0.4 - Q0.5 20 Khz 20 Khz

1214C và Q0.0 - Q0.4 100 Khz 100 Khz

1215C Q0.5 – Q1.1 20 Khz 20 Khz

1 MHz 1 MHz
1217C Q0.0 - Q0.3

214
Pulse và
CPU Ngõ ra CPU Các chế độ khác
direction

Q0.4 – Q1.1 100 Khz 100 Khz


Bảng 4.13. Tần số phát xung lớn nhất của ngõ ra SB

SB Ngõ ra SB Pulse và direction Các chế độ khác

SB 1222, 200 Khz Q4.0 - Q4.3 200 Khz 200 Khz

SB 1223, 200 Khz Q4.0 - Q4.1 200 Khz 200 Khz

SB 1223 Q4.0 - Q4.1 20 Khz 20 Khz

Có thể đổi tên kênh phát xung

Đồng thời, người dũng cũng có thể thay đổi những tham số phù hợp với ứng
dụng mong muốn tại parameter assignment.

 Signal type: Tín hiệu xung ngõ ra dạng PWM hoặc PTO tùy vào ứng dụng của
người dùng.

215
 Output source: Chọn phát xung On — board hoặc trên SB.
 Time base: Thời gian cơ bản cho phép người dùng chọn mili giây (ms) hoặc
micro giây.
 Pulse duration format - định dạng độ rộng xung: Cho phép người dùng chọn
theo tỷ lệ phần trăm, phần nghìn, mười nghìn hoặc có thể theo định dạng S7 -
Analog.
 Cycle time: Chu kỳ xung phát. Giá trị này chỉ có thể thay đổi trong Device
configuration.
 Initial pulse width: Độ rộng xung ban đầu có thể thay đổi trong quá trình chạy
thông qua process image QW.
Bảng 4.14. Địa chỉ các bộ PWM

PWM Địa chỉ mặc định

PWM 1 QW1000

PWM 2 QW1002

PWM 3 QW1004

PWM 4 QW1006
4.1.2.4. Hướng dẫn lập trình phát xung PWM
a. Đặt vấn đề
Cấu hình hệ thống bao gồm: CPU 1214C, động cơ AC (DC) và bộ Driver điều
khiển kết nối với ngõ ra phát xung của CPU, màn hình HMI giao tiếp với PLC để thay
đổi độ rộng xung. Lập trình PLC thực hiện yêu cầu sau:
 Kết nối vào các chân tín hiệu của bộ phát xung PWM 1 với bộ Driver điều
khiển động cơ.
 Khi nhấn Start thì CPU phát xung với tần sô" là 20 Khz tại ngõ ra Q0.0.
 HMI thay đổi số duty của xung cần phát.
b. Cấu hình cho bộ phát xung PWM
Với chế độ phát xung PWM (hoặc PTO) của PLC S7 - 1200 yêu cầu người dùng
phải bật chế độ cho phép PWM hoạt động và cấu hình các tham số liên quan: thời gian
cơ bản, định dạng độ rộng xung, chu kỳ phát xung...
Bước 1: Khởi tạo Project với cấu hình là CPU 1214C DC/DC/DC.
216
Bước 2: Cấu hình khai báo PWM hoạt động: Device configuration Device
view  CPU  Properties  Pulse generators ( PTO/PWM)  PTO1/PWM1 (kênh
cần sử dụng )
 Bật chế độ Enable cho bộ phát xung hoạt động

 Lựa chọn chức năng hoạt động cho bộ phát xung PWM

 Signal type: Chọn kiểu tín hiệu PWM.


 Output source: Chọn phát xung On - board (nếu CPU AC/DC/Relay thì có thể
sử dụng SB để mở rộng chức năng phát xung).
Ví dụ: Nếu chọn tần số xung là 20 Khz thì T cycle time = 50µs do đó sẽ chọn
Time base và cycle time như sau:
 Time base: Thời gian cơ bản là microsecond (µs).
 Cycle time: Chu kỳ xung phát là 50µs.
 Pulse duration format - định dạng độ rộng xung: Chọn theo tỉ lệ phần trăm.
 Initial pulse width: Độ rộng xung thay đổi từ 0% - 100%.
Kiểm tra địa chỉ ngõ ra phát xung của CPU tại Hardware output.

217
Cho phép thay đổi độ rộng xung thông qua process image QW.

Kiểm tra địa chỉ Hardware identifier được đọc trong PLC tag và có thể sử dụng
dạng số Hexa trong khai báo tập lệnh CTRL_PWM. Đồng thời cần lưu ý rằng các sô"
HW_ID này sẽ thay đổi theo cấu hình CPU và các mô-đun thực tế, do đó cần kiểm tra
kỹ trước khi sử dụng.

c. Hướng dẫn lập trình giải quyết vấn đề


Bước 1: Tạo khối dữ liệu Control_PWM [DB5]: Program blocks Add new
block  Data block, đặt tên Control_PWM, chọn kiểu (type) là Global DB chọn
OK để hoàn thành.

218
Bước 2: Khai báo các thông số và kiểu dữ liệu muốn sử dụng:

Bước 3: Tạo hàm PWM_Pulse [FC1] để lập trình thực hiện phát xung PWM với
lệnh CTRL_PWM

219
Lưu ý:
 Tham số PWM của lệnh CTRL_PWM có thế khai báo dưới định dạng HW
identifier hoặc khai báo theo dạng số hexa. Tham số này có thể tìm thấy trong
PLC tag hoặc trong cấu hình phần cứng Device configuration (đối với các
phiên bản thấp hơn TIA Portai V13).
 TIA Portai V14 SP1 trở đi cho phép người lập trình có thể thay đổi cả độ rộng
xung (duty - Pulse duration) và thời gian chu kỳ (Cycle time). Ví dụ: cấu hình
ngõ ra của PWM 1 gồm 6 byte dữ liệu từ QB1008 - QB1013 với: QW1008 cho
220
phép thay đổi độ rộng xung và QD1010 cho phép thay đổi thời gian chu kỳ
phát xung PWM.
Bước 4: Gọi chương trình PWM_Pulse [FC1] trong Main [OB1]

Bước 5: Cài đặt cho màn hình HMI/SCADA thì người dùng chỉ cần phải thiết kế
một giao diện có với I/O fileld cho thay đổi độ rộng xung và nút nhấn Start để cho
phép phát xung... tùy theo ứng dụng bài toán/ hệ thông cụ thể.

Nếu người dùng không kết nối với HMI thực có thể sử dụng chế độ Runtime trên
PC, hoặc có thể sử dụng bảng Watch Table để thay đổi các tham số thay cho việc kết
nối với HMI thật.
4.1.3. Điều khiển vị trí với Motion Control
CPU S7 - 1200 hỗ trợ chức năng điều khiển vị trí (motion control) để điều khiển
hoạt động của động cơ bước (stepper motor) và động cơ servo thông qua chế độ phát
xung tích hợp trên CPU. Các bộ drive có thể điều khiển và giám sát trạng thái của
động cơ bước và động cơ servo thông qua chức năng điều khiển vị trí này.
 Đối tượng “Axis technology” thực hiện cấu hình tham số, dữ liệu về phần cơ
khí, giao tiếp drive, và các tham sô" khác.
 Người dùng thực hiện cấu hình ngõ ra phát xung và hướng quay (thuận hoặc
nghịch) để điều khiển drive.
 Lập trình sử dụng các tập lệnh điều khiển vị trí để điều khiển trục (axis) và vị
trí bắt đầu hoạt động.

221
 Giao thức Profinet cho phép kết nối CPU và phần mềm để có thể kiểm tra trạng
thái CPU online, thực hiện chạy thử và chẩn đoán lỗi cho chế độ điều khiển vị
trí.

Có thể sử dụng mô-đun SB với ngõ ra DC để mở rộng chức năng phát xung tốc
độ cao với tần cố lên tời 200 Khz, hoặc mở rộng chức năng phát xung tốc độ cao cho
những CPU với kiểu ngõ ra rơ- le (AC/DC/Rly hoặc DC/DC/Rly).
4.1.3.1. Chế độ điều phase- Phasing
Người dùng có 4 lựa chọn để thực hiện chế độ điều phase (phasing) với drive của
động cơ bước và động cơ servo:
 PTO (pulse A và direction B): Ngõ ra P0 thực hiện phát xung và ngõ ra P1
điều khiển hướng phát xung: nếu Pl = 1 thì phát xung theo hướng thuận
(positive) và nếu P1 = 0 thì phát xung theo hướng nghịch (negative). Địa chỉ
mặc định của PTO1: P0 là Q0.0 và PI là Q0.1.

 PTO (count up A và count down B): Ngõ ra P0 thực hiện phát xung thuận
(positive) và ngõ ra P1 thực hiện phát xung nghịch (negative).

222
 PTO (A/B phase - shifted): Cả hai ngõ ra P0 và P1 đều phát xung nhưng lệch
nhau 90°. Với cấu hình IX, một xung phát ra là thời gian giữa 2 cạnh lên của
P0. Nếu P0 nhanh phase hơn P1 thì di chuyển theo hướng thuận, nếu P1 nhanh
phase hơn P0 thì di chuyển theo hướng nghịch.

 PTO (A/B phase - shifted – fourfold): Cả 2 ngõ ra P0 và P1 đều phát xung


nhưng lệch nhau 90 độ. Với cấu hình 4X, một xung phát ra là trạng thái chuyển
của mỗi ngõ ra (cả positive và negative). Nếu P0 nhanh phase hơn P1 thì di
chuyển theo hướng thuận, nếu P1 nhanh phase hơn P0 thì di chuyển theo
hướng nghịch.

223
 PTO (pulse và direction (direction de – selected):
Chế độ này chỉ sử dụng ngõ ra P0 để điều khiển xung và không cần cấu hình P1
làm chân điều hướng phát, và ngõ ra P1 có thể sử dụng với một chức năng khác
tùy vào ứng dụng của người dùng. Khi đó chỉ có thể phát theo 1 hướng duy
nhất.

4.1.3.2. Cấu hình bộ phát xung PTO


a. Tạo một đối tượng Technology object ( TO)
Chọn Project tree  Technology Object  Add new object. Chọn Axis  OK
để mở giao diện cấu hình cho Axis object. Tại đây người dùng sẽ cấu hình các thuộc
tính cơ bản, thuộc tính mở rộng, quá trình tăng tốc, giảm tốc cho drive...
b. Lập chương trình ứng dụng theo người dùng
Gọi lệnh MC_Power để cho phép chế độ phát xung PTO được kích hoạt. Tham
sô" Axis là đối tượng Axis của TO đã được người dùng khởi tạo và cấu hình trước đó.
Tham số Enable cho phép các lệnh truyền động (Motion) khác hoạt động với các chức
năng tương ứng.
Gọi thêm các lệnh truyền động khác để thực hiện các chức năng theo ứng dụng
hệ thông.
Lưu ý:
 Một tập lệnh MC_Power được sử dụng tương ứng với một đối tượng Axis TO.
 CPU S7 - 1200 với firmware V1.0, V2.x chỉ có hai kênh phát xung. Với những
CPU có firmware V3.0 trở lên thì có bôn kênh phát xung.
4.1.3.3. Cấu hình Axis
STEP 7 hỗ trợ các công cụ hỗ trợ cho Axis TO như: Configuration,
commissioning, diagnostic.

224
CPU có firmware < V2.2 khi cấu hình hoạt động PTO thì các HSC tương ứng
không được sử dụng cho mục đích khác. Có nghĩa là, nếu PTO1 được kích hoạt thì nó
sẽ tự động kết nối với HSC1 và không thể giám sát giá trị ID1000 khi xung đang phát.
CPU có firmware > V3.0 thì các bộ HSC vẫn có thể được cấu hình theo ứng
dụng nào đó kể các khi chế độ phát xung PTO đã được cấu hình trong CPU.
Bảng 4.15. Những công cụ hỗ trợ điều khiển truyền động

Công cụ hỗ trợ Miêu tả

Cho phép cấu hình các thuộc tính của Axis:


- Lựa chọn PTO sử dụng và cấu hình giao tiếp với drive.

Configuration - Thuộc tính về cơ cấu cơ khí (truyền động) và tỉ sô" truyền


(ratio) của drive.
- Các thuộc tính giới hạn vị trí trên/dưới, chuyển động và vị trí
gốc.

Chức năng cho kiểm tra trạng thái của Axis. Khi công cụ được kích
hoạt thì bảng điều khiển sẽ hiển thị và người dùng thực hiện chạy thử
Axis (commissing):
- Bật/tắt hoạt động của Axis.
Commissioning - Thực hiện chuyển động Axis trong chế độ Jog.
- Điều khiển vị trí Axis trong chế độ chính xác - Absolute hoặc
chế độ tương đối - Relative trong sách tác giả giữ nguyên tên
gọi là Absolute axis và Relative axis.
- Vị trí gốc - Home axis.

225
Công cụ hỗ trợ Miêu tả
- Xác nhận lỗi xảy ra.
Những thuộc tính về vận tốc, tăng/ giảm tốc có thể thay đổi bằng cách
các tập lệnh con Motion.

Diagnostic Cho phép hiển thị trạng thái lỗi và thông tin lỗi của Axis và drive

a. Chế độ Configuration của Axis TO


Sau khi tạo đôi tượng Axis TO, người dùng có thể cấu hình Axis bằng cách khai
báo các tham số cơ bản như PTO và cấu hình giao tiếp với drive hoặc người dùng có
thể cấu hình các thuộc tính khác như Axis như giới hạn vị trí, chuyển động –
dynamics và vị trí gốc – homing.

 Cấu hình thuộc tính cho drive, phần cơ khí và chuyển động của drive, cũng như
giám sát giới hạn trên /dưới cho cả phần cứng và phần mềm.

226
 Cấu hình truyền động motion và trạng thái dừng khẩn cấp — emergency stop.

 Người dùng có thể cấu hình trạng thái về vị trí gốc (passive và active)

b. Chế độ Commissioning của Axis Technology


Chọn biểu tượng “Startup” để thực hiện chế độ chạy thử cho đối tượng Axis TO.
Chức năng cho kiểm tra trạng thái của Axis. Khi công cụ được cho phép hoạt thì bảng

227
điều khiển sẽ hiển thị và cho người dùng thực hiện cấu hình hoàn thiện và chạy thử
Axis.
 Bật/tắt hoạt động của Axis
 Thực hiện chuyển động Axis trong chế độ Jog
 Điều khiển vị trí Axis trong chế độ Absolute hoặc Relative.
 Vị trí gốc - Home axis.
 Xác nhận lỗi xảy ra.
Các thuộc tính vận tốc, tăng/giảm tốc có thể thay dổi thông qua các tập lệnh
Motion.
4.1.3.4. Các tập lệnh điều khiển vị trí
Các tập lệnh điều khiển truyền động Motion được sử dụng để tìm và nhập các
thông số cho đối tượng Axis TO và xuất xung PTO để điều khiển truyền động cho các
trục (Axis).
Các tập lệnh MC có thể thay đổi do các phiên bản TIA Portal, vì vậy bạn đọc phải
tham chiếu lại với các phiên bản đang sử dụng.
a. Lệnh MC_Power
Lệnh MC_Power cho phép các trục Axis được kích hoạt hoặc ngừng kích hoạt.
Trước khi người dùng có thể tắt/mở các trục Axis chắc chắn thỏa mãn những điều
kiện sau:
 Đối tượng TO đã được cấu hình một cách chính xác.
 Lệnh không được hủy trong quá trình thực hiện nhiệm vụ truyền động. Khi
lệnh được ngắt thì tất cả tập lệnh của MC sẽ dừng không điều khiển đối tượng
Axis TO nữa.
Bảng 4.16. Tham số cho tập lệnh MC_Power

Tham số Khai báo TO_Axis Miêu tả

Axis IN TO_Axis Đối tượng trục Axis TO

Enable IN BOOL - False: Trục Axis sẽ chuyển trạng thái Stop


và phụ thuộc cấu tham số “ Stop Mode ”
- True: Cho phép Axis hoạt động

Stop Mode IN INT - 0 = Emergency stop - dừng khẩn cấp:

228
Tham số Khai báo TO_Axis Miêu tả
Khi Enable = 0 thì Axis sẽ thắng
servo/step theo cấu hình dừng khẩn cấp
trong bảng trạng thái. Axis sẽ tắt khi
hoàn thành tới trạng thái Standstill.
- 1 = Immediate stop: ngõ ra sẽ dừng phát
xung ngay lập tức
- 2 = Emergency stop with jerk control:
khi tín hiệu Enable = 0 thì Axis sẽ thắng
servo/step theo cấu hình dừng khẩn
cấp.Axis sẽ tắt khi hoàn thành tới trạng
thái Standsill

Status OUT BOOL - FALSE: Axis bị ngắt.


- TRUE: Axis hoạt động.

Busy OUT BOOL - FALSE: MC_Power không được kích


hoạt.
- TRUE: MC_Power được kích hoạt

Error OUT BOOL - FALSE: Không có lỗi.


- TRUE: Có lỗi khi gọi lệnh MC_Power
hoặc đối tượng TO.

ErrorID OUT Word Mã lỗi trả về cho tham số Error

ErrorInfo OUT Word Thông tin mã lỗi trả về cho tham sô Error.

 Các bước kích hoạt trục Axis hoạt động


1. Kiểm tra yêu cầu chỉ thị ở trên
2. Khởi tạo tham số Stop Mode với 1 trong 3 giá trị 0,1,2 và cài chờ tín hiệu
Drive realy của Drive gửi về
 Ngõ ra Drive Enabled = True cho phép Drive hoạt động và chờ tín hiệu
Drive ready của Drive gửi về.

229
 Khi tín hiệu Drive ready = True thì trục Axis TO được bật và bắt đầu
hoạt động. Ngõ ra trạng thái “ Status” và Tag < Axis_ name
>.StatusBits.Enable= True
 Các bước tắt trục Axis hoạt động
1. Cài đặt Axis tới trạng thái Standstill của cấu hình Axis TO.
2. Cho tham sô" Enable = FALSE.
3. Nếu ngõ ra “Busy” và “Status” = FALSE thì quá trình tắt Axis hoàn thành.
Nếu trục Axis TO ngừng hoạt động bởi lỗi thì nó sẽ tự hoạt động trở lại sau khi
đã xác nhận lỗi xảy ra. Để thực hiện điều đó thì tham sô" Enable phải luôn trong trạng
thái TRUE.

b. Lệnh MC_ Reset


Nếu một lỗi xảy ra được phát hiện, thì lỗi đó sẽ được reset và xác nhận bởi xung
cạnh lên tại tham số Execute của khôi MC_Reset.
Người dùng nên kiểm tra trạng thái lỗi, thông tin lỗi tại các tham số ErrorlD và
Errorlnfo để biết thông tin lỗi đã xảy ra trước khi xác nhận lỗi.
Lưu ý: Lệnh MC_Reset không thực hiện ngắt bất kỳ nhiệm vụ điều khiển truyền
động mà chỉ xác nhận lỗi xảy ra để quá trình tiếp tục thực hiện.
❖ Các bước thực hiện xác nhận lỗi với lệnh MC_Reset:
1. Kiểm tra lại các yêu cầu chỉ thị ở trên.
2. Xác nhận lỗi xảy ra với xung cạnh lên tại tham số Execute.
Khi lỗi được xác nhận thì thì Done = TRUE và Tag <Axis
name>.StatusBits.Error = FALSE
Bảng 4.17. Tham số tập lệnh MC _Reset

Tham số Khai Kiểu dữ Miêu tả


báo liệu

Axis IN TO_Axis Đối tượng trục Axis TO

Execute IN BOOL Xác nhận lỗi xảy ra

Restart IN BOOL TRUE = tải lại cấu hình trục Axis từ vùng nhớ

230
Tham số Khai Kiểu dữ Miêu tả
báo liệu
Load memory đến Work memory.
FALSE = lỗi đã xác nhận

Done OUT BOOL True: Lỗi đã được xác nhận

Busy OUT BOOL True: Nhiệm vụ đã thực thi

Error OUT BOOL True: có lỗi xảy ra

ErrorID OUT WORD Mã lỗi trả về

ErrorInfo OUT WORD Thông tin mã lỗi trả về

c. Lệnh MC_Home
Sử dụng lệnh MC_Home để đưa vị trí của Drive về vị trí gốc ban đầu, nhằm
đảm bảo cho Axis hoạt động chính xác trong hoạt động điều khiển, với chế độ điều
khiển vị trí chính xác - Absolute.
Để sử dụng tập lệnh MC_Home thì trục Axis TO phải ở trạng thái hoạt động.
❖ Các chế độ Home được xác định như sau:
 Mode 0 = Direct homing absolute: vị trí mới của trục Axis được cài đặt tại giá
trị của tham sô" Position.
 Mode 1 = Direct homing relative: vị trí mới của trục Axis là vị trí hiện tại của
Axis + giá trị tại tham số Position.
 Mode 2 = Passive homing: lệnh thực hiện tìm kiếm vị trí Home theo cấu hình
Passive của trục Axis
 Mode 3 =Active homing: lệnh thực hiện tìm kiếm vị trí Home theo cấu hình
Active của trục Axis.

231
Bảng 4.18. Tham số tập lệnh MC_ Home

Tham số Khai Kiểu dữ Miêu tả


báo liệu

Axis IN TO_Axis Đối tượng trục Axis TO

Execute IN BOOL Xác nhận lệnh

Position IN READ Mode 0, 2, 3: Vị trí chính xác của Axis là sau khi
thực hiện xong trạng thái tìm kiếm vị trí gốc.
Mode 1: giá trị chính xác với vị trí hiện tải của
Axis

Mode OUT BOOL Mode 0: Direct homing absolute


Mode 1 = Direct homing relative
Mode 2 = Passive homing
Mode 3 = Active homing

Done OUT BOOL True: Homing được thực thi

Busy OUT BOOL True: Nhiệm vụ đã thực thi

Command OUT BOOL True: quá trình thực thi bị nhắt bởi một nhiệm vụ
Aborted khác

Error OUT BOOL True: có lỗi xảy ra

ErrorID OUT WORD Mã lỗi trả về

ErrorInfo OUT WORD Thông tin mã lỗi trả về

Lưu ý: Vị trí gốc có thể bị mất do một số lý do sau:


- Tắt lệnh MC_Power hoặc khởi động lại CPU.
- Chuyển đổi từ chế độ Auto sang chế độ manual.
 Các bược thực hiện đưa Axis về vị trí gốc
1. Kiểm tra các điều kiện chỉ thị ở trên.

232
2. Khởi tạo các tham số cần thiết cho hoạt động về vị trí gốc trong cấu hình Axis
và kích xung cạnh lên cho tham số Execute
3. Khi tham số Done và <Axis namexStatusBits.HomingDone = TRUE thì hoàn
thành việc tìm kiếm vị trí gốc
d. Lệnh MC_Halt
Lệnh MC_Halt sử dụng để dừng tất cả các truyền động Motion và đưa trục Axis
TO sang trạng thái Standstill. Để lệnh thực hiện được thì Axis phải đang hoạt động.
Bảng 4.19. Tham số tập lệnh MC_ Halt

Tham số Khai Kiểu dữ Miêu tả


báo liệu

Axis IN TO_Axis Đối tượng trục Axis TO

Execute IN BOOL Xác nhận lệnh hoạt động

Done OUT BOOL True: Vận tốc bằng 0

Busy OUT BOOL True: Nhiệm vụ đã thực thi

Command OUT BOOL True: Quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác

Error OUT BOOL True: có lỗi xảy ra

ErrorID OUT WORD Mã lỗi trả về

ErrorInfo OUT WORD Thông tin mã lỗi trả về

Lưu ý : Các lệnh MC_MoveJog, MC_MoveVelocity, MC_Home ở mode 3,


MC_MoveAbsolute, MC_MoveRelative đều có thể bị ngắt bởi lệnh MC_Halt
d. Lênh MC_ MoveAbsolute
Lệnh MC__MoveAbsolute thực hiện chuyển động Motion cho Axis tới vị trí
chính xác hoàn toàn. Để thực hiện được lệnh này cần phải đưa Axis về vị trí gốc.
Bảng 4.20. Tham số tập lệnh MC_MoveAbsolute

233
Tham số Khai báo Kiểu dữ liệu Miêu tả

Axis In TO_Axis Đối tượng trục Axis TO.

Execute In Bool Xác nhận lệnh hoạt động.

Vị trí đến được cài đặt.


Position In Real
-1.0e12 ≤ Position ≤ 1.0e12
Velocity In Real Vận tốc của trục Axis (mặc định là10.0),
đã được cầu hình tăng/giảm tốc trong cấu
hình của trục Axis cho tới khi tìm ra vị trị
đã cài đặt.

Done Out Bool TRUE: Đã tìm được vị trí chính xác.

Busy Out Bool TRUE: Nhiệm vụ đã thực thi.

Command
Out Bool TRUE: Quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác.

Error Out Bool TRUE: Lỗi xảy ra

ErrorlD Out Word Mã lỗi trả về.

Errorlnfo Out Word Thông tin mã lỗi trả về.

e. Lệnh MC_MoveRelative
Lệnh MC_MoveRelative sử dụng để di chuyển trục Axis tới vị trí tương đối so
với vị trí ban đầu, nói một cách đơn gian thì: Vị trí Motion Relative = Vị trí hiện tại +
giá trị cài đặt của Distance. Để lệnh có thể thực hiện thì trục Axis cần phải được bật.
Bảng 4.21. Tham số tập lệnh MC_MoveRelative

Tham số Khai báo Kiểu dữ liệu Miêu tả

Axis In TO_Axis Đối tượng trục Axis TO.

Execute In Bool Xác nhận lệnh hoạt động.

234
Tham số Khai báo Kiểu dữ liệu Miêu tả

Vị trí đến được cài đặt.


Distance In Real
-1.0e12 ≤ Distance ≤1.0e12

Vận tốc của trục Axis hoạt dộng.


Velocity In Real
Vận tốc Start/stop ≤vận tốc ≤ Max.

Done Out Bool TRUE: Đã tìm được vị trí cài đặt.

Busy Out Bool TRUE: Nhiệm vụ đã thực thi.

Command TRUE: Quá trình thực thi bị ngắt bởi


Out Bool
một nhiệm vụ khác.
Aborted
Error Out Bool TRUE: Lỗi xảy ra

ErrorlD Out Word Mã lỗi trả về.

Errorlnfo Out Word Thông tin mã lỗi trả về.

f. Lệnh MC_MoveVelocity
Lệnh được sử dụng để di chuyển trục Axis với một vận tốc cố định được cài đặt
sẵn tại tham số Velocity. Điều kiện để lệnh thực hiện là Axis phải được bật.
Bảng 4.22. Tham số tập lệnh MC_MoveVelocity

Tham số Khai Kiểu dữ Miêu tả


báo liệu

Axis IN TO_Axis Đối tượng trục Axis TO

Execute IN BOOL Xác nhận lệnh hoạt động

Velocity IN READ Vận tốc cài đặt trên trục Axis:


Vận tốc Start/Stop ≤ vận tốc ≤ Max

235
Tham số Khai Kiểu dữ Miêu tả
báo liệu

Direction IN INT 0: Hướng chuyển động phụ thuộc vào


dấu cài đặt cho “ Velocity”
1: Chuyển động theo hướng thuận
2: Chuyển động theo hướng nghịch

Current INT BOOL False: Chế độ Maintain current velocity


bị ngắt, giá trị của tham số Velocity và
Direction được sử dụng
True: Chế độ Maintain current velocity
được kích họa. Vận tốc duy trì trạng thái
hiện hành

In OUT BOOL Current= False: Vận tốc được chỉ định tại
Velocity tham số Velocity tới khi đạt
Current= True: Axis sẽ duy trì vận tốc
hiện tại

Busy OUT BOOL True: Nhiệm vụ đã được thực thi

Command OUT BOOL True: quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác

Error OUT BOOL True: có lỗi xảy ra

ErrorID OUT WORD Mã lỗi trả về

ErrorInfo OUT WORD Thông tin mã lỗi trả về

Lưu ý: Đối với việc cài đặt giá trị vận tốc là 0 (Velocity = 0.0)
 Velocity = 0.0 giống như gọi MC_Halt đó là ngắt các lệnh truyền động của
trục Axis chuyển sang trạng thái dừng với cấu hình giảm tôc. Khi Axis tới vị
trí standstill thì tham số “InVelocity” = TRUE.
 Chỉ thị Busy = TRUE trong suốt quá trình giảm tốc và chuyển sang FALSE

236
cùng với InVelocity.
g. Lệnh MC_MoveJog
Lệnh được sử dụng đế di chuyển trục Axis với vận tốc cố định cài đặt sẵn tại
tham số Velocity trong chế độ Jog. Lệnh được sử dụng trong việc kiểm tra trạng thái
và chạy thử hệ thống.
Bảng 4.23. Tham số tập lệnh MC_MoveJog

Tham số Khai Kiểu dữ Miêu tả


báo liệu

Axis IN TO_Axis Đối tượng trục Axis TO

JogForward IN BOOL Truyền động Axis theo chiều thuận

JogBackward IN BOOL Truyền động Axis theo chiều nghịch

Velocity IN READ Vận tốc cài đặt trên trục Axis:


Vận tốc Start/Stop ≤ vận tốc ≤ Max

In Velocity OUT BOOL True: Vận tốc đặt tại tham số Velocity
đã đặt

Busy OUT BOOL True: Nhiệm vụ đã được thực thi

Command OUT BOOL True: quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác

Error OUT BOOL True: có lỗi xảy ra

ErrorID OUT WORD Mã lỗi trả về

ErrorInfo OUT WORD Thông tin mã lỗi trả về

Nếu cả JogForward và JogBackward đều được kích hoạt thì Axis sẽ dừng và
hoạt động theo cấu hình giảm tốc và báo lỗi.

237
4.1.3.5. Lập trình phát xung PTO với các lệnh điều khiển truyền động
a. Đặt vấn đề
Cấu hình hệ thống bao gồm: 1 CPU 1214C, 1 động cơ servo thông qua Driver
kết nối với ngõ ra phát xung của CPU, 1 màn hình HMI giao tiếp với PLC để thay đổi
giá trị điều khiển. Lập trình PLC thực hiện phát xung PTO điều khiển động cơ Servo
hoạt động.
b. Cấu hình thiết lập phần cứng PLC và Driver
Bước 1: Chọn địa chỉ ngõ vào/ra PLC tương ứng với tín hiệu của Driver:

Các tín hiệu I/O Chức năng

Q0.2 Tín hiệu phát xung từ PLC

Q0.3 Tín hiệu điều hướng từ PLC

Q1.0 Tín hiệu điều khiển Drive hoạt động

I1.0 Tín hiệu báo Drive sẵn sàng

Q1.1 Reset lỗi của Drive (tùy chọn)

I1.1 Nhận tín hiệu cảnh báo từ Drive (tùy chọn)

Bước 2: Kết nối ngõ ra PLC tới ngõ vào của Driver
Hoạt động của Servo ảnh hưởng bởi tác động từ các tín hiệu như sau:

238
 Xung trả về - Pulse
 Hướng quay
 Xung ngõ vào cho phép hoạt động
 Tín hiệu cho phép Drive hoạt động
 Tín hiệu reset báo lỗi – alarm reset
Bước 3: Kết nối ngõ vào PLC với ngõ ra Driver trả về để nhận tín hiệu hồi tiếp
của encoder, tín hiệu alarm, tín hiệu ready
c. Điều khiển động cơ Servo bằng xung
Một xung tín hiệu Drive nhận được và động cơ servo có thể di chuyển một góc là
bao nhiêu độ thì phụ thuộc vào cài đặt của Drive
Nếu Drive cài đặt là 1000 xung/vòng thì động cơ có thể di chuyển 0.360/xung.
Vận tốc động cơ được xác định thông qua số xung/giây. Và PLC S7 -1200 có
vận tốc phát lên tới 100000 xung/giây (PPS) hoặc hơn nữa phụ thuộc vào tín hiệu on-
board hay SB.
d. Công thức tính toán tần số tối đa của động cơ
Để chắc chắn rằng điều khiển vị trí của động cơ được thực thi không vượt quá
vận tốc tối đa, chúng ta cần xác định tần số tối đa của động cơ để đạt được tốc độ như
mong muốn khi nhận xung từ PLC.
Ví dụ:
Tốc độ của động cơ Servo là: Tmotor= 2000 rpm (vòng/phút)
Số xung trên vòng quay: Pmotor = 2000 ppr (xung/vòng)
Tần số tối đa của động cơ được tính sẽ là fmotor = Pmotor x
Vậy tần số tối đa của động cơ fmotor =83333 pps (xung/giây)
e. Cấu hình cho bộ phát xung PTO hoạt động
Bước 1: Tiếp tục phát triển dựa vòa Project ở các phần trước
Bước 2: Cấu hình cho PTO hoạt động: Device configuration – Device view –
CPU – Properties – Pulse generators (PTO/PWM) – PTO2/PWM2 – đặt tên là PTO
 Chọn Enable this pule generator
 Chế độ phát xung là PTO

239
f. Cấu hình cho đối tượng kỹ thuật Axis
Bước 1: Khởi taọ đối tượng kỹ thuật Axis: Technology – Add new object –
Motion control – TO_Axis_PTO – đặ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.
 TO_PositioningAxis: Cho phép thực hiện điều khiển truyền động riêng lẻ.
 TO_CommandTable: Kết hợp các tập lệnh thực hiện truyền thông đơn lẻ thành
một chuỗi thực hiện liên tục.

240
Bước 2: Cấu hình cho trục Axis TO hoạt động theo yêu cầu đặt ra: Chọn Basic
parameters – General. Tại đây người dùng có thể đặt tên lại cho Axis và lựa chọn
Hardware interface và đơn vị tính:
 Axis name: Axis_2
 Drive: cho phép lựa chọn cho các kết nối với Drive
o PTO ( Pulse Train Output): Điều khiển bằng xung
o Analog drive connection: Điều khiển bằng analog.
o PROFIDrive: Điều khiển bằng giao thức Profidrive
 Đơn vị tính: Có thể tùy chọn là mm, m, inches,…Ở đây tác giả lựa chọn đơn vị
là mm.
 Hardware interface: Lựa chọn kênh phát xung đã cấu hình trước đó
(PTO2/PWM2).

241
 Lựa chọn tín hiệu điều khiển và phản hồi Drive – PLC: Sử dụng để tắt/mở
servo drive và kiểm tra hoạt động của lệnh MC_Power
 Ngõ ra PLC S7 -1200 kích hoạt Drive hoạt động.
 Tín hiệu relay báo Drive đã sẵn sàng. Drive không có tín hiệu ready thì chọn
tín hiệu Ready là True.

Bước 3: Lựa chọn các tham số mở rộng cho đối tượng Axis:
 Mechanics: Định nghĩa giới hạn tốc độ động cơ và chuyển đổi xung tương ứng
với đơn vị chiều dài.
 Pulses per motor revolution (ppr):2500 – công thức tính và ý nghĩa đã nói ở
phần trước
 Distance per motor revolution: Chọn chiều quay cho phép

242
 Invert direction signal: Đảo chiều quay động cơ

 Position limit (monitoring): Tính năng tùy chọn để xác định giới hạn cho cả
phần cứng, phần mềm và vị trí của chúng.
 Dynamics General: cấu hình cài đặt giới hạn tốc độ, thời gian tăng tốc, giảm
tốc. Các công thức liên hệ đã được xác định ở các mục trước
o Vận tốc lớn nhất xung/giây (pps):83,333 pps
o Vận tốc start/stop:1000.0 pps
o Thời gian tăng/giảm tốc chọn 2s. Phần mềm tự tính chuyển đổi về mm/s2

 Emergency stop: Được kích hoạt khi ngắt lệnh MC_Power

243
o Lựa chọn thời gian giảm tốc khẩn cấp là 1s

 Homing: Vị trí gốc để hoạt động. Ở đây không sử dụng bỏ qua, người dùng có
thể đọc lại các mục trên để lựa chọn phù hợp.

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


Bước 1: Kiểm tra lại bảng PLC tag được sử dụng

Bước 2: Khởi tạo khối dữ liệu Control_PTO: Program blocks – add new block –
data block, đặt tên Control_PTO, chọn kiểu Global DB – OK.
Bước 3: Khai báo các thông số và kiểu dữ liệu muốn sử dụng:

244
Bước 4: Khởi tạo hàm PTO_Pulse FC để lập trình phát xung PTO sử dụng các
tập lệnh MC_Power và MC_MoveRelative thực hiện yêu cầu: Instruction –
Technology – Motion Control.
Gọi lệnh MC_Power để cho phép các lệnh truyền động khác hoạt động

Gọi lệnh MC_MoveRelative để thực hiện điều khiển tương đối – thực hiện dịch
chuyển động cơ so với vị trí hiện hành

245
Kích hoạt cho phép Drive Servo hoạt động

Dựa theo tính toán tự động với các thông số trước đã lựa chọn thì:
 Distance: Khoảng dịch chuyển với đơn vị tính là:mm
 Velocity: Đơn vị là mm/s. 4.0 ≤ Velocity ≤ 333.32 ( các giá trị này đã được xác
định tại Dynamics General)
Bước 5: Cài đặt cho màn hình HMI/SCADA thieeys kế giao diện với I/O field
cho thay đổi số xung/khoảng cách … tùy theo ứng dụng bài toán/hệ thống cụ thể của
người dùng

4.2. Thiết kế hệ thống điều khiển vòng kín với bộ đ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:

246
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.
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.24. Ả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

247
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.
- 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.2.1. Các tập lệnh xử lý thuật toán PID
4.2.1.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

248
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.1. Sơ đồ khối của lệnh PID_Compact

249
Hình 4.2. 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.

250
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.

251
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.

252
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.

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.1.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

253
Chế độ Transition time measurement Mode/State = 6
Chế độ Error monitoring Mode/State = 7
Chế độ Approach substitute output value Mode/State = 8
with error monitoring
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

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

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

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

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

256
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
4.2.1.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

257
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

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

258
Hình 4.7. Sơ đồ khối của lệnh PIDT1 với anti-windup
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.2.2. Thiết kế hệ thống điều khiển vòng kín với hàm PID – Compact
4.2.2.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.

259
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.2.2.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.2.2.3. Hướng dẫn thực hiện bài toán
a) Bước khai báo tham số biến và lập trình khởi động cho PID

260
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.

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.

261
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.

262
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.

- 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.

263
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.

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.

264
- 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.

- 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.

265
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.
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.

266
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ự.

- 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.

267
- 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.
c) 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.

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

d) 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:
Để 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:

268
- 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).

Để đư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.

269
4.3. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4
4.3.1. Câu hỏi ôn tập
1. Trình bày cấu tạo và nguyên lý hoạt động của Encoder?
2. PLC S7-1200 có bao nhiêu kênh đếm phát xung tốc độ cao và tần số lớn nhất có thể
đếm là bao nhiêu?
3. Sự khác nhau giữa xung PWM và PTO ?
4. 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?
5. 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?
6. Để 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?
7. 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?
8. 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?
9. 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?
10. 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
4.3.2. Bài tập
1. Bài toán Đo vị trí của trục vitme.
Mục đích: Sử dụng bộ đếm tốc độ cao PLC S7-1200 để đọc xung encoder, từ đó
tính được vị trí của trục vitme. Và hiển thị vị trí trục vitme lên màn hình HMI.
Trục vitme trên mô hình thực nghiệm có bước ren là 10mm. Encoder là 200
xung/vòng. Như vậy, sau khi sử dụng PLC thu được số xung encoder (gọi là X), tính
được vị trí trục vitme là (X.0,05) mm.
2. Điều khiển vị trí trục vitme
Mục đích: Nhập vị trí cần của trục vitme trên màn hình HMI, PLC điều khiển
động cơ chạy tới vị trí cần. Dùng Encoder để xác định vị trí, sử dụng PWM để điều
khiển động cơ. Phương pháp điều khiển sử dụng bộ điều khiển PID.

270
CHƯƠNG 5
MẠNG TRUYỀN THÔNG CÔNG NGHIỆP

Nội dung chương 5 cung cấp cho sinh viên kiến thức về tổng quan mạng truyền
thông ASI, MODBUS, PROFIBUS, PROFINET, và các cách thức truyền thông, các
tập lệnh hỗ trợ truyền thông trên phần mềm TIA PORTAL. Thiết kế và lập trình các
mạng truyền thông tiêu biểu trên phần mềm TIA PORTAL.
5.1. TỔNG QUAN MẠNG TRUYỀN THÔNG CÔNG NGHIỆP
Hệ thống điều khiển, điều hành và quản lý sản xuất một cách tự nhiên được phân
chia thành nhiều cấp. Phù hợp với thực tế này, hệ thống tự động hóa quá trình sản xuất
cũng được phân chia thành nhiều cấp và điển hình của một hệ thống tự động hóa quá
trình sản xuất thường bao gồm 5 cấp như trên hình 5.1.

5. Cấp Workstation,
quản lý PC, Servers
công ty

4. Cấp quản lý Workstation,


nhà máy PC, Servers

Workstation,
3. Cấp giám sát - chỉ huy
PC

Controllers,
2. Cấp điều khiển PLC,
CNC, PC

Controllers,
1. Cấp trường (cảm biến - chấp hành) sensors,
actuators

Hình 5.1. Sơ đồ phân cấp hệ thống điều khiển tự động hóa quá trình sản xuất
Đặc điểm của các cấp này như sau:
Cấp thứ nhất: là cấp cảm biến – chấp hành hay cấp trường. Nó thực hiện kết
nối các bộ điều khiển, cảm biến và các cơ cấu chấp hành.
Cấp thứ hai: là cấp điều khiển (phân xưởng) thực hiện việc điều khiển các quá
trình công nghệ và thực hiện việc kết nối các bộ điều khiển, thiết bị điều khiển logic

271
khả trình PLC, thiết bị điều khiển quá trình công nghệ trong máy điều khiển số CNC
hoặc các máy tính PC công nghiệp.
Cấp thứ ba: là cấp vận hành, giám sát chỉ huy và thực hiện chức năng vận hành
giám sát và điều khiển chi huy cho quá trình công nghệ. Tại cấp thứ ba này thực hiện
các chức năng giao diện người – máy, lưu trữ các số liệu liên quan tới sản xuất, ra các
lệnh, thiết lập cấu hình và thay đổi chế độ làm việc cho quá trình công nghệ, máy sản
xuất,... Thiết bị trong cấp thứ ba này là các máy trạm làm việc, các máy tính PC. Các
cấp 1, 2 và 3 là các cấp trực tiếp thực hiện quá trình công nghệ.
Cấp thứ tư: là cấp quản lý nhà máy và thực hiện phối hợp nhiều nhiệm vụ quản
lý khác nhau như quản lý kỹ thuật, quản lý sản xuất, quản lý nguồn lực,...
Cấp thứ năm: là cấp quản lý công ty và nó thực hiện kết nối và phối hợp các
hoạt động quản lý khác nhau trên mọi nhà máy, chi nhánh và văn phòng công ty tại
nhiều thành phố và quốc gia khác nhau.
Trong sơ đồ phân cấp của hệ thống tự động hóa quá trình sản xuất thì các cấp 1,
2 và 3 là các cấp trực tiếp thực hiện quá trình công nghệ và hệ thống điều khiển tự
động áp dụng cho các cấp này còn được gọi là hệ thống tự động hóa quá trình công
nghệ còn các cấp thứ 4 và thứ 5 thực hiện chức năng quản lý và hệ thống tự động hóa
áp dụng cho hai cấp này được gọi là hệ thống tự động hóa điều hành và quản lý sản
xuất. Trong phạm vi tài liệu này, hệ thống được đề cập chủ yếu là hệ thống tự động
hóa quá trình công nghệ, có nghĩa là các cấp 1, 2 và 3 trong sơ đồ phân cấp hệ thống
tự động hóa quá trình sản xuất. Nội dung tiếp theo trình bày các mạng truyền thông
tiêu biểu trong công nghiệp: mạng truyền thông ASI, MODBUS, PROFIBUS,
PROFINET.
5.2. MẠNG TRUYỀN THÔNG ASI
5.2.1. Tổng quan mạng truyền thông ASI
a. Tổng quan
Giao tiếp ASI (Actuator Sensor Interface) hay giao tiếp actuator/sensor là hệ
thống kết nối cho cấp quá trình thấp nhất trong hệ thống tự động hóa. Các kiểu
actuator và sensor nhị phân đơn giản nhất được nối với trạm hệ thống tự động qua bus
giao tiếp AS ( ASI bus). Giao tiếp này ra đời vào năm 1994

272
Hình 5.2. Vị trí của mạng AS-I trong hệ thống mạng công nghiệp
ASI là kết quả phát triển hợp tác của 11 hãng sản xuất thiết bị cảm biến và cơ
cấu chấp hành có tên tuổi trong công nghiệp, trong đó có SIEMENS AG,Festo
KG,Pepperl & Fuchs GmbH. Như tên gọi của nó phần nào diễn tả mục đích sử dụng
duy nhất của ASI là kết nối các thiết bị cảm biến và cơ cấu chấp hành số với cấp điều
khiển . Từ thực tế là hơn 80 % cảm biến và cơ cấu chấp hành trong một hệ thống máy
móc làm việc với các biến logic, cho nên việc nối mạng chúng trước hết phải đáp ứng
được yêu cầu về giá thành thấp cũng như lắp đặt ,vận hành và bảo dưỡng đơn giản .Vì
thế, các tính năng kỹ thuật được đặt ra là:
- Khả năng tải nguồn, tức là dữ liệu và dòng nuôi cho toàn bộ các cảm biến và
một phần lớn các cơ cấu chấp hành phải được truyền tải trên cùng một cáp hai dây.
- Phương pháp truyền phải thật bền vững trong môi trường công nghiệp nhưng
không đòi hỏi cao về chất lượng đường truyền .
- Cho phép thực hiện cấu trúc mạng đường thẳng cũng như hình cây.
- Các thành phần giao diện có thể thực hiện với giá thành thấp.
- Các bộ nối phải nhỏ, gọn, đơn giản và giá cả hợp lý.
Với các hệ thống bus đã có, các yêu cầu trên chưa đáp ứng một cách thỏa đáng
.Đó chính là động lực cho việc hợp tác phát triển hệ bus ASI .Thế mạnh của ASI là sự
đơn giản trong thiết kế, lắp đặt và bảo dưỡng cũng như giá thành thấp nhờ phương
pháp truyền thông đặc biệt cũng như kỹ thuật điện cơ mới.

273
a) Nối điểm–điểm cổ điển b) Bus trường vào /ra c) Giao tiếp ASI phân tán
Hình 5.3. Ghép nối cảm biến và cơ cấu chấp hành số với ASI
Hình 5.3 minh họa mạng thiết bị cảm biến và cơ cấu chấp hành sử dụng ASI đối
chiếu với các phương pháp khác. Hình bên trái là cách kết nối dây điểm-điểm cổ điển,
trong đó một bộ điều khiển như PLC đóng vai trò là nút trung tâm trong cấu trúc hình
sao.Việc thay thế cách ghép nối cổ điển này bằng một hệ thống bus để có thể thực
hiện theo hai phương pháp sau:
- Sử dụng bus trường nối PLC với các thiết bị vào/ra phân tán (hình 5.3b).
- Sử dụng một hệ thống bus như ASI nối PLC trực tiếp với các cảm biến và cơ
cấu chấp hành (hình 5.3c).
b. Đặc tính của giao tiếp AS-i
- ASI được tối ưu hóa để kết nối các sensor và các actuator nhị phân. Cáp ASI
được sử dụng vừa để trao đổi dữ liệu giữa các sensor và các actuator và master cũng
như vừa cung cấp điện nguồn cho các sensor .
- Đơn giản hóa cấu trúc liên kết giữa các thiết bị.
- Giảm đáng kể giá thành dây nối và công lắp đặt hệ thống.
- Nâng cao độ chính xác trong truyền dữ liệu.
- Nâng cao độ linh hoạt và tính năng mở của hệ thống.
- Đơn giản hoá , tiện lợi trong việc chẩn đoán, định vị lỗi và sự cố các thiết bị.
- Nâng cao khả năng tương tác giữa các thành phần (phần cứng và phần mềm)
nhờ giao diện chuẩn .

274
- Mở rộng nhiều chức năng và khả năng ứng dụng mới của hệ thống ( có khả
năng điều khiển phân tán, điều khiển giám sát từ xa qua Internet).
- Thời gian đáp ứng nhanh: ASI master cần tối đa 5ms để trao đổi dữ liệu tuần
hoàn đến 31 trạm .
- Với các ASI module thì có thể lên đến 124 sensor và 124 actuator hoạt động
trên cáp ASI.

Hình 5.4. Với giao tiếp ASI việc lắp đặt trở nên đơn giản.
c. Các thành phần tạo thành mạng ASI:
- ASI master.
- ASI module.
- Cáp ASI.
- Nguồn ASI.
- Sensor/Actuator với chip ASI được tích hợp.
- Đơn vị định địa chỉ .
- Phần mềm cho ASI .

275
Hình 5.5. Các thành phần trong mạng ASI
d. Kiến trúc mạng ASI
Các hình dưới đây cho ta thấy các kiến trúc của hệ thống ASI. Các thành phần
thêm vào có thể được đặt dọc theo đường ASI hoặc theo các nhóm , thí dụ như đầu
của các nhánh cây khác nhau .Không cần có các điện trở kết thúc.
Thí dụ các cấu trúc thể có:
- Đường dây 100m và một ASI slave có một đầu.
- Đường dây 90m và hình sao 31 slave ở cuối đường dây.
- Hình sao với 31 Slave và chiều dài cáp bằng nhau hay không đến master .
- Đường thẳng với 31 slave được phân bố trên mạng.
Chú ý : Tổng chiều dài bị giới hạn ở 100m. Muốn cho mạng rộng hơn ta phải sử
dụng repeater hay extender.
- Kiểu hình sao : Các Slave được nối chung vào một Master controller thông
qua cáp ASI.

276
- Kiểu đường thẳng : Các Slave được nối tiếp với nhau thông qua cáp ASI và
cáp này nối vào Master Controler

- Kiểu hình nhánh : Các Slave được nối song song với cáp ASI thông qua các
đầu nối T (T connector) và cáp ASI này được nối vào Master Controler.

- Kiểu hình cây : Các Slave cũng được nối chung với nhau bằng đầu nối T và từ
đầu nối này được nối song song lên cáp ASI và từ cáp ASI này được nối với Master
Controler.

277
5.2.2. Truyền thông và trao đổi dữ liệu
5.2.2.1. Cấu trúc khung dữ liệu
Quá trình liên kết dữ liệu của mạng ASI được thực hiện bằng việc master gửi
yêu cầu và nhận phản hồi từ Slave. Khung dữ liệu của master có độ dài 14 bit trong
khi slave phản hồi lại 7 bit và giữa các quá trình sẽ có một khoảng dừng được sử dụng
để đồng bộ hóa tín hiệu.
Master call Salve reply Slave
pase
0 CB A4 A3 A2 A1 A0 I4 I3 I2 I1 I0 1 0 I3 I2 I1 I0 PB 1
ST EB ST EB

Chi tiết của bức điện gồm có :


Đánh dấu bắt đầu master request
ST (start bit) = 0 : Start bit hợp lệ
= 1 : Không cho phép
Đánh dấu gọi dữ liệu /tham số/địa chỉ hay gọi lệnh
SB (Control bit) = 0 : dữ liệu/tham số/địa chỉ
= 1 : gọi lệnh
A0 … A4 (địa chỉ) Địa chỉ của slave được gọi (5bit)

Phụ thuộc vào kiểu yêu cầu 5 bit chứa thông tin sẽ được
I0 … I4 (thông tin)
truyền đi. Chi tiết được cho cùng với mỗi thông điệp.

Tổng tất cả các 1 trong master request (không kể EB)


PB (Parity bit)
phải là số chẵn (kiểm tra parity chẳn).
Đánh dấu kết thúc master request
EB (End bit) = 0 :không được phép
= 1 :EB hợp lệ
Giữa lời gọi của trạm chủ và trả lời của trạm tớ cần một khoảng thời gian dài từ
3-8 thời gian bit. Bit điều khiển trong phần đầu lời gọi của trạm chủ ký hiệu loại thông
báo dữ liệu, tham số, địa chỉ hoặc lệnh gọi. ASI phân biệt 9 loại lệnh gọi
Trao đổi dữ liệu
Đặt tham số

Đặt địa chỉ

Reset trạm tớ

Xóa địa chỉ mặc định

Đọc cấu hình vào /ra


Đọc mã căn cước

278
5.2.2.2. Bảng quy định địa chỉ của Slave
Ngoài việc giảm số lượng dây dẫn tín hiệu thì lợi thế lớn khi sử dụng truyền
thông ASI đó là người lập trình có thể sử dụng địa chỉ trực tiếp giống như tín hiệu I/O
bình thường mà không cần phải sử dụng thêm bất kỳ phần mềm nào khác. ASI master
sẽ tự động gán địa chỉ ASI trong quá trình xử lý truyền thông.
Các ngõ vào/ra của tất cả các slave sẽ được lưu trữ trong một vùng địa chỉ trong
PLC. Vùng địa chỉ này bao gồm 16 byte, và hai slave sẽ chiếm 1 byte dữ liệu – mỗi
slave chiếm một nibble (4 bit) của byte. Bit 4 đến bit 7 của byte đầu tiên chứa thông
tin điều khiển
Bảng 5.1. Bảng quy định địa chỉ của ASI slave

Bit 4-7 Bit 0 -3


Địa chỉ của Byte 7 6 5 4 3 2 1 0
N+ 0 Bit điều khiển Slave 01A
N+ 1 Slave 02A Slave 03A
N+ 2 Slave 04A Slave 05A
N+ 3 Slave 06A Slave 07A
N+ 4 Slave 08A Slave 09A
N+ 5 Slave 10A Slave 11A
N+ 6 Slave 12A Slave 13A
N+ 7 Slave 14A Slave 15A
N+8 Slave 16A Slave 17A
N+9 Slave 18A Slave 19A
N+10 Slave 20A Slave 21A
N+11 Slave 22A Slave 23A
N+12 Slave 24A Slave 25A
N+13 Slave 26A Slave 27A
N+14 Slave 28A Slave 29A
N+15 Slave 30A Slave 31A
N+16 Bit điều khiển Slave 01B
N+17 Slave 02B Slave 03B

279
Bit 4-7 Bit 0 -3
Địa chỉ của Byte 7 6 5 4 3 2 1 0
N+18 Slave 04B Slave 05B
N+19 Slave 06B Slave 07B
N+20 Slave 08B Slave 09B
N+21 Slave 10B Slave 11B
N+22 Slave 12B Slave 13B
N+23 Slave 14B Slave 15B
N+24 Slave 16B Slave 17B
N+25 Slave 18B Slave 19B
N+26 Slave 20B Slave 21B
N+27 Slave 22B Slave 23B
N+28 Slave 24B Slave 25B
N+29 Slave 26B Slave 27B
N+30 Slave 28B Slave 29B
N+31 Slave 30B Slave 31B
Trong đó: N là địa chỉ byte bắt đầu của ASI. Địa chỉ dành cho Standard (ASI
V2.0) và Slave A (ASI V2.1) cùng sử dụng một bảng địa chỉ.
Địa chỉ bắt đầu của ASI phụ thuộc vào vị trí gắn modul ASI master hay nói cách
khác địa chỉ bắt đầu của ASI được bắt đầu bằng địa chỉ của ASI master.
Để làm rõ vấn đề này chúng ta xét một vài ví dụ sau với địa chỉ ASI master là
64.
Ví dụ 1: Giả sử modul 4 ngõ ra sử dụng để điều khiển van điện từ được cài đặt
là salve 2. Hãy tìm địa chỉ Out3?
Địa chỉ byte bắt đầu slave 2 = N +1 = 64 +1 = 65.
Salve 2 có 4 ngõ ra bắt đầu từ bit 4 đến bit 7. Như vậy, địa chỉ bit của Out3 là bit
6. Kết quả địa chỉ Out3 là Q65.6
Ví dụ 2: Giả sử modul 4 ngõ vào sử dụng để đọc tín hiệu cảm biến được cài đặt
là slave 23 . Hãy tìm địa chỉ In3?
Địa chỉ byte bắt đầu slave 23 = N +1 = 64 +11 = 75.

280
Salve 23 có 4 ngõ vao bắt đầu từ bit 0 đến bit 3. Như vậy, địa chỉ bit của In3 là
bit 2. Kết quả địa chỉ In3 là I75.2

5.2.3. Thiết kế mạng truyền thông ASI


Các dòng PLC S7-1200 hoặc S7-300 có module truyền thông để mở rộng ASI
master. PLC S7-1500 tuy không có module truyền thông mở rộng ASI master nhưng
có thể thực hiện điều này thông qua bộ I/O phân tán với ET 200SP. Dưới đây trình
bày ASI master với PLC S7-1200.
5.2.3.1. Module ASI master cho S7-1200
Module CM 1243-2 hỗ trợ lên tới 62 ASI Slave với số lượng địa chỉ có thể lên
tới 992 I/O kết nối tới S7-1200. Các chức năng được tích hợp bổ sung cho modul tạo
điều kiện cho việc tham số hóa các thông số của bộ khởi động động cơ SIRIUS
M200D thông qua ASI mà không cần phải sử dụng hàm chức năng FB/FC trong
chương trình. Ngoài ra, module DCM 1277 hỗ trợ sử dụng nguồn điện 24 VDC ( ASI
Power 24V).
Một số đặc điểm kỹ thuật của module CM 1243-2:
- Hỗ trợ ASI master với tiêu chuẩn V3.0.
- Hỗ trợ lên đến 62 ASI slave với 992 I/O trên 1 master.
- Cho phép lựa chọn truy xuất qua giao diện Web.
- Tích hợp truyền giá trị tương tự và phát hiện mất nguồn điện ASI.
- Hỗ trợ nâng cấp firmware.
- Cho phép khả năng chọn dữ liệu qua module DCM 1271.
- Tham số hóa bộ khởi động động cơ SIRIUS M200D thông qua ASI mà không
cần phải sử dụng hàm chức năng FB/FC trong chương trình.
5.2.3.2. Thiết bị định địa chỉ ASI Slave
Để trao đổi dữ liệu giữa master với mỗi slave trong mạng ASI thì yêu cầu cần
các slave phải được định địa chỉ với tầm từ 1 đến 31 hoặc 1A đến 31A, 1B đến 31B
(với ASI V2.1 trở lên). Thiết bị được sử dụng để định địa chỉ cho các slave gọi là
Addressing Unit.

281
Hình 5.6. Bộ định địa chỉ ASI slave
Bộ định địa chỉ ASI thực hiện việc gán địa chỉ đến cho các slave. Thiết bị này sẽ
kết nối trực tiếp với socket địa chỉ của modul hoặc kết nối đến cáp mạng ASI. Bộ định
địa chỉ tự động nhận ra các slave được kết nối và lựa chọn một địa chỉ phù hợp trên
màn hình . Địa chỉ này có thể được thay đổi bởi người dùng thông qua các phím trên
thiết bị và được xác nhận thông qua phím trở về.
5.2.3.3. Cấu hình truyền thông ASI với PLC S7-1200
a) Yêu cầu phần cứng
- PLC S7-1200: CPU 1214C DC/DC/DC
- Module CM 1243 – 2 mở rộng ASI Master.

b) Cấu hình module CM 1243 – 2


Bước 1: Khởi tạo Project, cấu hình CPU 1214C DC/DC/DC và module CM
1243-2 hỗ trợ ASI master

282
Bước 2: Cấu hình địa chỉ bắt đầu cho module CM 1243-2 để đọc các tín hiệu từ
ASI slave về PLC: CM 1243-2 → Properties → General → I/O address. Với thiết bị
ASI Slave của hãng Siemen thì ta có thể cấu hình trực tiếp trên phần mềm TIA
PORTAL.

Bước 3: Cấu hình ASI slave vào Network View: Network View → Hardware
catalog → Field devices → ASI Interface → lựa chọn các thiết bị tương ứng theo thiết
kế với các mã sản phẩm tương ứng

283
Bước 4: Thực hiện nối ASI Master với các ASI Slave

Bước 5: Lựa chọn cấu hình địa chỉ cho các Slave trên TIA PORTAL: lựa chọn
ASI Slave → Device View → Properties → General → AS Interface → Address

- ASI SM-U, 4DI: với địa chỉ ASI slave là 10


- ASI SM-U, 4DO: với địa chỉ ASI slave là 11
Bước 5: Kiểm tra địa chỉ các I/O của ASI Salve

284
5.3. MẠNG TRUYỀN THÔNG MODBUS
5.3.1. Tổng quan mạng truyền thông Modbus
5.3.1.1. Giới thiệu
Modbus là một giao thức truyền thông nối tiếp được phát triển bởi Modicon (nay
là Schneider Electric) vào năm 1979 để dử dụng với các bộ điều khiển PLC. Modbus
đã trở thành một giao thức truyền thông chuẩn và bây giờ là một trong những giao
thức phổ biến để kết nối các thiết bị điện tử công nghiệp.
Một số lý do chính để sử dụng Modbus trong môi trường công nghiệp là:
- Giao thức truyền thông mở và miễn phí bản quyền
- Dễ dàng phát triển và bảo trì hệ thống
- Đơn giản trong lắp đặt, cấu hình và cho phép trao đổi dữ liệu cả tín hiệu rời rạc
và tương tự
Modbus cho phép truyền thông nhiều thiết bị khác nhau cùng kết nối trên cùng
một hệ thống mạng, ví dụ như hệ thống đo lường nhiệt độ, độ ẩm và gửi về máy tính
chủ. Các kiểu tín hiệu được sử dụng trong truyền thông modbus như:
- Tín hiệu ngõ ra vật lý với trạng thái 1 bit đơn gọi là Coil. Hỗ trợ trạng thái
đọc/ghi

285
- Tín hiệu ngõ vào vật lý với trạng thái 1 bit đơn gọi là Discrete input. Chỉ hỗ trợ
trạng thái đọc
- Thanh ghi Input register với độ dài dữ liệu là 16 bit. Chỉ hỗ trợ trạng thái đọc
- Thanh ghi Holding resgiter với độ dài dữ liệu là 16 bit. Hỗ trợ trạng thái
đọc/ghi
Modbus được thiết kế theo giao thức Master – Slave (với Modbus RTU) và
Client – Server (với Modbus TCP/IP). Điều này sẽ có nghĩa là Master sẽ khởi tạo kết
nối và ra lệnh cho các Slave thực hiện theo yêu cầu của master. Slave sẽ không gửi bất
kỳ dữ liệu nào trên liên kết truyền thông trừ khi được master ra lệnh yêu cầu dữ liệu
cụ thể. Mỗi thiết bị tham gia vào mạng giao tiếp Modbus được cấp một địa chỉ và địa
chỉ này không được lặp lại trong hệ thống mạng.
Các dạng Modbus thông dụng hiện nay:
- 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.

286
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, 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.3.1.2. Cấu trúc giao thức của Modbus
Modbus Master gửi gói tin để đọc hoặc ghi dữ liệu tới slave và ngược lại. Giao
thức Modbus cũng mở rộng phần tùy chỉnh cho gói tin thay đổi theo yêu cầu người sử
dụng.
Định dạng chung các gói tin của Modbus được gọi là ADU bao gồm địa chỉ của
Slave, mã chức năng thực hiện, kích thước dữ liệu và kiểm tra lỗi truyền thông

Hình 5.7. Định dạng chung các gói tin của Modbus
Trong đó:
- AD là một đơn vị dữ liệu ứng dụng tương ứng với một gói tin của Modbus
Master

287
- PDU là một đơn vị giao thức với dữ liệu được Master yêu cầu tới Slave
Định dạng gói tin của RTU và TCP/IP minh họa như hình 5.8.

Hình 5.8. Định dạng gói tin của RTU và TCP/IP

Hình 5.9. Kích thước dữ liệu của gói tin


5.3.1.3. Mã chức năng – Function Code
Có nhiều mã chức năng cơ bản để thực hiện những ứng dụng cơ bản như đọc,
ghi dữ liệu mô tả như bảng 5.4.
Bảng 5.2. Các mã chức năng để truy xuất dữ liệu của moddus

Kiểu chức năng Tên chức năng Mã chức năng Địa chỉ tuyệt đối
Bit Ngõ vào dạng Bit Đọc bit ngõ vào 02 10001 đến 19999
Đọc bit ngõ ra 01 00001 đến 09999
Ghi vào 1 bit đơn 05 00001 đến 09999
Ngõ ra dạng Bit của ngõ ra
Ghi vào nhiều bit 15 00001 đến 09999
ngõ ra
Ngõ vào dạng Đọc Word ngõ vào 04 30001 đến 39999
Word
Word
Thanh ghi Đọc giá trị các 03 40001 đến 49999
Holding thanh ghi Holding

288
Kiểu chức năng Tên chức năng Mã chức năng Địa chỉ tuyệt đối
Ghi vào 1 Word 06 40001 đến 49999
của thanh ghi
Holding
Ghi nhiều Word 16 40001 đến 49999
của thanh ghi
Holding
Đọc/ghi nhiều 23
Word của thanh
ghi Holding
Xóa/ghi các bit 22
đơn của một thanh
ghi
Đọc tuần tự trạng 24
thái FIFO
Một số manual hướng dẫn về thanh ghi Modbus (holding register) của một số
nhà sản xuất thiết bị không cung cấp địa chỉ tuyệt đối mà chỉ cung cấp địa chỉ tương
đối (relative addresses) hay còn gọi là thanh ghi cơ bản, thì người lập trình có thể sử
dụng công thức sau để tìm địa chỉ tuyệt đối của Modbus:
- Địa chỉ Modbus = Req.adr. + offset
- Req.adr là 40001 hoặc 400001
5.3.2. Thiết kế mạng truyền thông Modbus RTU
5.3.2.1. Tập lệnh truyền thông Modbus RTU
Các tập lệnh để thực hiện cấu hình truyền thông Modbus RTU cũng như thực
hiện các chức năng của Modbus Master và Slave được thực hiện qua các lệnh dưới
đây.
- Modbus_Comm_Load (MB_COMM_LOAD)
- Modbus_Master (MB_MASTER)
- Modbus_Slave (MB_SLAVE)
Các tập lệnh truyền thông Modbus RTU nằm trong các tập lệnh truyền thông trong
phần của phần mềm TIA Portal: Instruction  Communication  Communication
Processor  MODBUS (RTU) hay MODBUS

289
a) Lệnh cấu hình truyền thông Modbus
Lệnh Modbus_Comm_Load cấu hình một modul truyền thông để cho phép PLC
có thể thiết lập giao thức Modbus RTU. Khi gọi lệnh thì phần mềm tự động tạo thêm
một khối dữ liệu Instance DB vào trong chương trình người dùng. Thay đổi cấu hình
của Modbus_Comm_Load được lưu trên CM chứ không phải trong CPU.
Modbus_Comm_Load được sử dụng để thực hiện cấu hình cổng ứng dụng (Port)
cho giao thức RTU. Một khi đã thực hiện cấu hình Port này cho giao thức Modbus
RTU thì nó chỉ có thể được sử dụng bởi các lệnh Modbus_Master hoặc
Modbus_Slave.
Lệnh Modbus_Comm_Load chỉ thực hiện một lần duy nhất trong quá trình khởi
động truyền thông để nó thực hiện bắt tay giữa các thiết bị modbus với nhau

Bảng 5.3. Tham số lệnh Modbus_Comm_Load

Tham số Khai báo Kiểu dữ liệu Miêu tả


REQ IN Bool Bắt đầu truyền dữ liệu tới Modul
CM/CP bằng tín hiệu xung cạnh
lên
PORT IN PORT (UInt) Được chỉ định bởi modul truyền

290
Tham số Khai báo Kiểu dữ liệu Miêu tả
thông với địa chỉ quy định bởi HW
identifier
BAUD IN UDInt Lựa chọn tốc độ truyền nhận dữ
liệu: 300, 600, 1200, 2400, 4800,
9600, 19200, 38400, 57600,
76800, 115200 bps
PARITY IN UInt Lựa chọn trạng thái chẵn lẻ
0: No parity (mặc định)
1: Odd parity (lẻ)
2: Even parity (chẵn)
FLOWCTRL IN UInt Kiểm soát luồng dữ liệu
0: no flow control
1: Phần cứng RTS luôn ON
2: Phần cứng RTS chuyển trạng
thái
RTS_ON_DLY IN UInt Lựa chọn độ trễ của RTS ON
0: Không trễ
1: 1 đến 65535 là độ trễ tính theo
mili giây từ khi RTS được kích
hoạt
RTS_ONFF_DLY IN UInt Lựa chọn độ trễ của RTS OFF
0: Không trễ
1: 1 đến 65535 là độ trễ tính theo
mili giây từ khi RTS ngắt kích
hoạt
RESP_TO IN UInt Thời gian timeout: từ 5ms đến
65535 ms để chờ tín hiệu phản hồi
của Slave
MB_DB IN/OUT MB_Base Tham chiếu đến instance data
block của modbus master hoặc
slave
COM_RST IN/OUT Bool Khởi động tập lệnh. Giá trị khởi

291
Tham số Khai báo Kiểu dữ liệu Miêu tả
động là TRUE sau đó chuyển trạng
thái FALSE
DONE OUT Bool TRUE sau một chu kỳ nếu không
có lỗi
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi
b) Lệnh truyền thông Modbus RTU Master
Lệnh Mobus_Master cho phép PLC thực hiện chức năng giao tiếp là Modbus
Master thông qua cổng truyền thông đã được cấu hình bởi lệnh
Modbus_Comm_Load. Một khối dữ liệu instance DB tự động gán cho lệnh
Modbus_Master trong chương trình người dùng. Tham số MB_DB của lệnh
Modbus_Comm_Load phải được kết nối tới tham số MB_DB (biến static) của lệnh
Modbus_Master.
Một số quy tắc giao tiếp của Modbus_Master
Modbus_Comm_Load phải được chạy để cấu hình Port, nhờ đó mà lệnh
Modbus_Master có thể giao tiếp với Port này.
Một Port đã được dùng với chức năng Modbus master thì không được sử dụng
với Modbus slave
Lệnh Modbus không sử dụng trong các khối OB ngắt để thực hiện quá trình
truyền thông.
Nếu lệnh Modbus_Master gửi một yêu cầu tới Salve, phải đảm bảo rằng
Modbus_Master vẫn tiếp tục thực thi cho tới khi nhận được phản hồi của Slave

292
Bảng 5.4. Tham số lệnh Modbus_Master

Tham số Khai báo Kiểu dữ liệu Miêu tả


REQ IN Bool False: Không có yêu cầu
True: Yêu cầu gửi dữ liệu tới slave
MB_ADDR IN UInt Chọn địa chỉ slave kết nối
- Tầm địa chỉ chuẩn: 1 – 247
- Tầm địa chỉ mở rộng: 1 – 65535
- Địa chỉ Broadcast là 0
MODE IN USInt Lựa chọn chế độ đọc/ghi hoặc
chuẩn đoán thông tin của Modbus
slave
DATA_ADDR IN UDInt Địa chỉ bắt đầu thanh ghi, ngõ
vào/ra của Slave để master truy
cập dữ liệu
DATA_LEN IN UInt Độ dài dữ liệu: chỉ định số bit
hoặc word để lệnh truy cập tới
COM_RST IN/OUT Bool Khởi động tập lệnh. Giá trị khởi
đầu là TRUE sau đó chuyển trạng
thái FALSE
DATA_PTR IN/OUT Variant Con trỏ dữ liệu (Data pointer): chỉ
định tới vùng nhớ (flag) hoặc DB
để thực hiện truy xuất dữ liệu tới
slave
DONE OUT Bool TRUE sau một chu kỳ nếu không
có lỗi
BUSY OUT Bool - False: Lệnh không kích hoạt
- True: Lệnh đang thực hiện
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi
c) Lệnh truyền thông Modbus RTU Slave
Lệnh Mobus_Slave cho phép PLC trở thành một Modbus Slave thông qua cổng
truyền thông CM/CP (RS 422/485 HF hoặc RS232 HF). Một khối dữ liệu instance DB

293
tự động gán cho lệnh Modbus_Salve khi gọi lệnh. Tham số MB_DB của lệnh
Modbus_Comm_Load phải được kết nối tới tham số MB_DB (biến static) của lệnh
Modbus_Slave.

Bảng 5.5. Tham số lệnh Modbus_Slave

Tham số Khai báo Kiểu dữ liệu Miêu tả


MB_ADDR IN UInt Định địa chỉ cho Modbus slave
- Tầm địa chỉ chuẩn: 1 – 247
- Tầm địa chỉ mở rộng: 1 – 65535
- Địa chỉ Broadcast là 0
COM_RST IN/OUT Bool Khởi động tập lệnh. Giá trị khởi
đầu là TRUE sau đó chuyển trạng
thái FALSE
MB_HOLD_REG IN/OUT Variant Con trỏ dữ liệu: chỉ định tới vùng
nhớ M hoặc DB làm thanh ghi
holding register
NDR OUT Bool - False: không có dữ liệu mới
- True: chỉ thị rằng có dữ liệu mới
được ghi bởi Modbus master
DR OUT Bool - False: không đọc dữ liệu
- True: chỉ thị rằng có dữ liệu
được đọc bởi Modbus master
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi

294
d) Tham số DATA_ADDR và MODE
Tham số DATA_ADDR chỉ định địa chỉ bắt đầu để master truy cập dữ liệu của Salve.
Với tham số MODE và địa chỉ Modbus cho phép người thiết kế chỉ định mã chức
năng sẽ được chuyển tới Slave
Bảng 5.6. Mối quan hệ giữa MODE, mã chức năng

Mode DATA_ADDR DATA_LEN Mã chức Chức năng và dữ


Địa chỉ Modbus Độ dài dữ liệu năng liệu

1 – 9999 1 – 2000/19921 01 Đọc BIT ngõ ra


0 - 9998
10001 - 19999 1 – 2000/19921 02 Đọc BIT ngõ ra
0 - 9998
0 40001 - 49999 1 – 125/1241 Đọc thanh ghi
03 Holding (Word)
400001 - 465535 1 – 125/1241
0 - 9998
30001 - 39999 1 – 125/1241 04 Đọc Word ngõ vào
0 - 9998
1 – 9999 1 BIT 05 Ghi BIT đơn ngõ ra
0 - 9998
40001 - 49999 1 WORD 06 0 - 9998
400001 - 465535 1 WORD 0 - 65524
1 - 9999 2 – 1968/19601 15 Ghi nhiều BIT ngõ
1 ra
0 - 9998
40001 - 49999 2 – 123/122 16 Ghi nhiều Word ngõ
ra
0 - 9998
400001 - 465535 2 – 123/1221 16 0 - 65534
(1) Là địa chỉ mở rộng (extended addressing) của modbus từ 1 - 65535
Những thông tin theo bảng 4 là bảng quy định của Siemen theo truyền thông gốc
của Modbus, tuy nhiên trong một số trường hợp sẽ bị thay đổi do các thiết bị Slave
hoặc Master khác của hãng thứ ba quy định chứ không phải bị cố định. Do đó, khi lập

295
trình và commissioning hệ thống thì người thực hiện cần chú ý và tự điều chỉnh cho
phù hợp với thực tế.
5.3.2.2. 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 đề
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ị

296
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…

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

298
e) Khởi tạo vùng nhớ dữ liệu lưu trữ thông tin đọc về
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.

299
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:

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


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.

300
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.

301
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.
302
- Đặ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).

303
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.

304
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.

305
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.
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…

306
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.

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…

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.

307
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.

308
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.

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…

309
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.
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.

310
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.

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

311
5.3.3. Thiết kế mạng truyền thông Modbus TCP
5.3.3.1. Tập lệnh truyền thông Modbus TCP
Tập lệnh truyền thông Modbus TCP hỗ trợ cho PLC S7-1200/1500 đã qua khá
nhiều phiên bản cập nhật và bổ sung đầy đủ các tính năng. Các tập lệnh truyền thông
Modbus nằm trong các tập lệnh truyền thông trong phần của phần mềm TIA Portal:
Instruction  Communication  Others  MODBUS TCP

a) Lệnh truyền thông Modbus TCP Client


Lệnh MB_CLIENT cho phép PLC S7-1200/1500 trở thành một Modbus TCP
Client thông qua kết nối Ethernet và thực hiện gửi các yêu cầu hoặc nhận các thông tin
phản hồi từ các Server.
Một Modbus TCP Client có thể hỗ trợ nhiều kết nối TCP và số lượng kết nối phụ
thuộc vào CPU. Khi sử dụng Modbus TCP Client cần nhớ một số qui tắc sau đây:
- Mỗi MB_CLIENT chỉ sử dụng duy nhất một Instance DB.
- Mỗi MB_ CLIENT chỉ sử dụng duy nhất một địa chỉ IP được chỉ định
- Mỗi MB_CLIENT yêu cầu duy nhất một kết nối ID
- Phải sử dụng dữ liệu đồng nhất khi dùng MB_CLIENT

312
Bảng 5.7. Tham số lệnh MB_CLIENT

Tham số Khai báo Kiểu dữ liệu Miêu tả


REQ IN Bool Khi chân REQ được kích hoạt sẽ
cho phép truy vấn thông tin hoặc
gửi yêu cầu từ Client đến Server
DISCONNECT IN Bool Khi chân DISCONNECT được
kích hoạt thì ngắt kết nối tới
Server
MB_MODE IN USINT Lựa chọn chế độ đọc/ghi
0: Đọc
1: Ghi
MB_DATA_ADDR IN UDInt Địa chỉ bắt đầu thanh ghi, ngõ
vào/ra
MB_DATA_LEN IN UInt Độ dài dữ liệu cần truy vấn thông
tin
MB_DATA_PTR IN/OUT Variant
CONNECT IN/OUT Variant Con trỏ để miêu tả cấu trúc kết nối
được sử dụng. Có 2 dạng được sử
dụng:
+ TCON_IP_V4
+ TCON_Configured
DONE OUT Bool TRUE sau một chu kỳ nếu không
có lỗi
BUSY OUT Bool 0: Không có lệnh Modbus thực

313
Tham số Khai báo Kiểu dữ liệu Miêu tả
hiện
1: Lệnh Modbus đang thực hiện
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi

b) Lệnh truyền thông Modbus TCP Server


Lệnh MB_SERVER cho phép PLC S7-1200/1500 trở thành một Modbus TCP
Server thông qua kết nối Ethernet và thực hiện nhận các yêu cầu hoặc gửi các thông
tin phản hồi từ các Client.
Một Modbus TCP Server có thể hỗ trợ nhiều kết nối TCP và số lượng kết nối
phụ thuộc vào CPU. Khi sử dụng Modbus TCP Server cần nhớ một số qui tắc sau đây:
- Mỗi MB_SERVER chỉ sử dụng duy nhất một Instance DB.
- Mỗi MB_ SERVER yêu cầu duy nhất một kết nối ID

Bảng 5.8. Tham số lệnh MB_SERVER

Tham số Khai báo Kiểu dữ liệu Miêu tả


DISCONNECT IN Bool Khi chân DISCONNECT được
kích hoạt thì ngắt kết nối tới Client
MB_HOLD_REG IN/OUT Variant Con trỏ chỉ định vùng dữ liệu làm
thanh ghi Holding. Tham chiếu
của vùng nhớ luôn là một vùng
nhớ 2 byte trở lên
CONNECT IN/OUT Variant Con trỏ để miêu tả cấu trúc kết nối
được sử dụng. Có 2 dạng được sử
dụng:
+ TCON_IP_V4

314
Tham số Khai báo Kiểu dữ liệu Miêu tả
+ TCON_Configured
NDR OUT Bool Dữ liệu mới sẵn sàng
0: Không có dữ liệu mới
1: Dữ liệu mới được ghi bởi Client
DR OUT Bool Dữ liệu được đọc
0: Không có dữ liệu được đọc
1: Dữ liệu được đọc bởi Client
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi
c) Tham số CONNECT
Hai tập lệnh MB_CLIENT và MB_SERVER đều sử dụng tham số CONNECT
để miêu tả các kết nối tới Modbus TCP còn lại. Có hai tham số CONNECT đó là:
- Cấu hình tham số TCON_IP_v4: các dữ liệu tham số cấu hình của Modbus
TCP được lưu trong đây và kết nối sẽ được thực hiện khi gọi lệnh Modbus tương ứng
- Cấu hình tham số TCON_Configured: chỉ được sử dụng khi kết nối của CPU
đã được thực hiện .
Mỗi lệnh truyền thông Modbus chỉ sử dụng duy nhất một cấu hình tham số
CONNECT. Tuy nhiên, để thực hiện với những kết nối Modbus TCP mới thì người
thiết kế chỉ sử dụng TCON_IP_v4
Cần chú ý thông tin khi sử dụng TCON_IP_v4 như sau:
- Đảm bảo rằng cấu trúc TCON_IP_v4 sử dụng kết nối là kiểu kết nối TCP.
- Kết nối không sử dụng các cổng Port sau để kết nối TCP: 20, 21, 25, 80, 102,
123, 5001, 34962, 34963 và 34964.
Bảng 5.9. Các tham số cấu hình của TCON_IP_v4

Byte Tham số Kiểu dữ liệu Miêu tả


0-1 Interface ID HW_ANY HW indentifer cảu Ethernet
2-3 ID CONN_OUC Tham chiếu kết nối. Giá trị từ 1
đến 4095
4 Connection Type Byte Kiểu kết nối:
11: TCP

315
Byte Tham số Kiểu dữ liệu Miêu tả
19: UDP
5 ActiveEstalished Bool TRUE: Nếu là Client
FALSE: Nếu là Server
6-9 RemoteAddress Array[1..4] of Địa chỉ IP của Partner. Ví dụ
Byte 192.168.0.1
Addr[1] = 192
Addr[2] = 168
Addr[3] = 0
Addr[4] = 1
10 – 11 RemotePort UInt Cổng Port của partner
12 – 13 LocalPort UInt Cổng Port của PLC local
Cổng port: 1 – 49151
Any Port: 0
5.3.3.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.

316
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ề.

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.

317
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.
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.

318
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 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 1212C 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.
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.
319
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.

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.

320
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).
- 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.

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

Bài toán 3: Sử dụng PLC S7-1500 thực hiện truyền dữ liệu giữa 2 PLC với
nhau thông qua giao thức Modbus TCP
Thiết lập phần cứng:
PLC S7-1500 CPU 1512C – 1PN với địa chỉ IP 192.168.0.10 làm Client
PLC S7-1500 CPU 1512C – 1PN với địa chỉ IP 192.168.0.5 làm Server

Tạo dữ liệu bên SERVER với mảng dữ liệu gồm 100 số thực, bên CLIENT thực
hiện đọc và ghi với 50 dữ liệu đầu tiên của Server.
Thực hiện bài toán:
Cấu hình và chương trình cho PLC làm Modbus TCP Server
Bước 1: Khởi tạo thiết bị với tên PLC_Server

322
Bước 2: Tạo vùng nhớ dữ liệu DB1 với tên DB_MB_Server_DATA để lưu trữ
thông tin thanh ghi Holding register của Server.
Chuyển vùng nhớ của DB_MB_Server_DATA [DB1] sang vùng nhớ Non-
optimized bằng cách bỏ dấu tích tại Optimized block access

Bước 3: Khởi tạo vùng dữ liệu Holding register: Tên dữ liệu là TCPData với
kiểu dữ liệu data type là Array[1..100] of real

Bước 4: Tạo vùng dữ liệu DB_MB_Server_Connect


Bước 5: Khởi tạo các biến cho khối MB_SERVER và biến CONNECT với kiểu
dữ liệu TCON_IP_v4

323
Khai báo tham số dữ liệu cho CONNECT:
- HW_ANY của modul 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.268.0.10
Bước 6: Gọi lệnh thực hiện khởi tạo cấu hình trong OB1
- Đặt tên DB Instance cho lệnh là MB_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 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
DB_MB_Server_Connect[DB3]

324
Cấu hình và chương trình cho PLC làm Modbus TCP Client
Bước 1: Khởi tạo thiết bị với tên PLC_Client
Bước 2: khởi tạo các bit trạng thái và bit 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 2: Tạo vùng nhớ dữ liệu DB1 với tên DB_MB_Client_DATA để lưu trữ
thông tin thanh ghi Holding register của Server. Chuyển vùng nhớ của D
DB_MB_Client_DATA [DB1] sang vùng nhớ Non-optimized
Bước 3: Khởi tạo vùng dữ liệu truy vấn các thanh ghi dữ liệu của Server: Tên dữ
liệu là Read_Data và Write_Data với kiểu dữ liệu data type là Array[1..50] of real

325
Bước 4: Khởi tạo các biến cho khối MB_CLIENT và biến CONNECT với kiểu
dữ liệu TCON_IP_v4

Khai báo tham số dữ liệu cho CONNECT


- HW_ANY của modul 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à TRUE để chọn làm Client
- Định địa chỉ LocalPort là 0 (Any port) và RemotePort là 502.
- Địa chỉ IP của Client là: 192.268.0.5
- ID trùng với Server là 110
Bước 5: Gọi lệnh thực hiện khởi tạo cấu hình trong OB1
- Đặt tên DB Instance cho lệnh là MB_CLIENT_DB

326
5.4. MẠNG TRUYỀN THÔNG PROFIBUS
5.4.1. Tổng quan mạng truyền thông Profibus
PROFIBUS là một Bus trường chuẩn mở rộng, không phụ thuộc vào nhà sản
xuất dùng cho các ứng dụng trong tự động hoá sản xuất và xử lý. Sự độc lập và tính
mở rộng được đảm bảo theo tiêu chuẩn quốc tế EN 50170 và EN 50254. PROFIBUS
cho phép truyền thông giữa các thiết bị của các nhà sản xuất khác nhau không đòi hỏi
giao tiếp đặc biệt. PROFIBUS không những sử dụng cho các ứng dụng nhanh theo
chu kỳ mà còn cho các nhiệm vụ tryền thông đặc biệt. Nhờ sự phát triển kỹ thuật liên
tục mà PROFIBUS vẫn còn là một hệ thống truyền thông công nghiệp trong tương lai.

Hình 5.15. Mạng truyền thông công nghiệp

327
PROFIBUS có các phương thức truyền thông được chia theo dạng truyền thông
(Communication Profiles): DP và FMS. Tùy thuộc vào ứng dụng có thể sử dụng kỹ
thuật truyền RS 485, IEC 1158-2 hoặc cáp quang. Trong tài liệu kỹ thuật nâng cao, tổ
chức sử dụng PROFIBUS đang thực thi các khái niệm chung cho tích hợp dựa trên cơ
sở TCP/IP.
Dạng ứng dụng (Application profiles): qui định các phương thức và công nghệ
truyền tùy chọn cần thiết theo vùng ứng dụng cho các loại thiết bị. Các profiles này
cũng qui định các đặc tính thiết bị mở rộng của nhà sản xuất.
5.4.1.1. Dạng truyền thông (Communication profiles)
PROFIBUS communication Profiles qui định các trạm tuyền dữ liệu nối tiếp của
nó qua môi trường truyền chung như thế nào.
DP
DP là dạng truyền thông được sử dụng nhiều nhất. Nó tối ưu hoá tốc độ truyền,
hiệu quả và chi phí kết nối và được thiết kế đặc biệt cho truyền thông giữa các hệ
thống tự động và ngoại vi phân tán. DP, là sự thay thế phù hợp cho truyền tín hiệu
song song 24V thông thường trong tự động hoá sản xuất cũng như truyền tín hiệu
Analog 4...20mA hoặc Hart trong tự động hoá xử lý.
FMS
Đây là dạng truyền thông đa năng cho các công việc truyền thông theo yêu cầu.
FMS mang lại các chức năng truyền thông hiện đại cho truyền thông giữa các thiết bị
thông minh (Intelligent Device). Tuy nhiên, do sự phát triển kỹ thuật của PROFIBUS
và việc sử dụng TCP/IP ở cấp Cell mà FMS ngày càng chiếm một vai trò ít quan trọng
trong tương lai.

Hình 5.16. Tổng quan về công nghệ PROFIBUS

328
5.4.1.2. Kỹ thuật truyền
Vùng ứng dụng của hệ thống Bus trường chủ yếu được xác định bằng sự lựa
chọn kỹ thuật truyền hiện có. Cũng như các yêu cầu chung dựa trên hệ thống Bus như
độ tin cậy, khoảng cách lớn và tốc độ truyền cao. Trong tự động hoá xử lý các yêu cầu
khác phải được thoả mãn như hoạt động trong các vùng nguy hiểm, truyền dữ liệu và
năng lượng trên cùng một cáp. Bởi vì vẫn chưa thể thoả mãn tất các các yêu cầu bằng
một kỹ thuật truyền chung nên hiện vẫn có 3 phương pháp truyền (Physical profiles)
cho PROFIBUS là:
- RS 485 dùng cho các ứng dụng vạn năng
- IEC 1158-2 dùng trong tự động hoá quá trình.
- Cáp quang dùng chống nhiễu và mạng có khoảng cách truyền lớn.
Trong tài liệu kỹ thuật nâng cao, có khuynh hướng dùng các thành phần của
Ethernet thương mại với 10Mbit/s và 100Mbit/s như là cấp vật lý cho PROFIBUS.
Các bộ nối (Coupler) và Link dùng cho việc chuyển đổi giữa các kỹ thuật truyền
khác nhau. Các Coupler
5.4.1.3. Ứng dụng
PROFIBUS Application Profiles mô tả các tác động qua lại giữa phương thức
truyền thông với kỹ thuật truyền được sử dụng. Chúng cũng qui định các đặc tính của
thiết bị trường trong suốt quá trình truyền thông qua PROFIBUS. Qui định ứng dụng
quan trọng nhất của PROFIBUS là các qui định (Profiles) về PA, trong đó qui định
các thông số và khối chức năng của các thiết bị tự động hoá quá trình như các bộ
chuyển đổi đo, các van, các bộ định vị. Cao hơn là các bộ điều khiển tốc độ, HMI và
các bộ mã hoá (Encoder) qui định các đặc tính thiết bị mở rộng của nhà sản xuất.
5.4.1.4. Các đặc tính cơ bản
PROFIBUS qui định các đặc tính của một hệ thống Bus trường nối tiếp, với các
qui định này các bộ điều khiển lập trình số đặt phân tán có thể nối mạng, từ cấp field
tới cấp Cell
PROFIBUS là một hệ thống Multi-Master và cho phép kết hợp nhiều hệ thống tự
động hoá, hệ thống công nghệ và hệ thống điều khiển với các thiết bị ngoại vi phân
tán của chúng vào trong một Bus.
 Profibus có hai loại thiết bị sau:

- Master xác định việc truyền dữ liệu trên BUS. Một Master được phép gửi thông
báo mà không cần yêu cầu từ bên ngoài, khi nó giữ quyền truy cập BUS (giữ
TOKEN). Các Master cũng được gọi là các trạm tích cực.

329
Slave là các thiết bị ngoại vi như các I/O, các van, các bộ truyền động và các bộ
biến đổi đo lường. Chúng không có quyền truy cập BUS, có nghĩa là nó được phép
nhận các thông báo hoặc gửi các thông báo tới các Master khi có yêu cầu. Slave cũng
được gọi là các trạm thụ động. Các slave cần sử dụng ít giao thức BUS, sự trang bị
của chúng đơn giản, kinh tế.
 Cấu trúc giao thức

PROFIBUS dựa trên các tiêu chuẩn quốc tế công nhận. Cấu trúc của giao thức
theo chuẩn OSI (Open System Interconnection), tương xứng với tiêu chuẩn quốc tế
ISO 7498. Theo đó mỗi lớp truyền thực hiện một nhiệm vụ nhất định.
Lớp 1 (Physical Layer) xác định các đặc điểm truyền vật lý. Lớp 2 (Date Link
Layer) xác định phương thức truy cập BUS, Lớp 7 xác định các chức năng ứng dụng.
Cấu trúc của giao thức PROFIBUS được mô tả trong hình

Hình 5.17. Cấu trúc của giao thức PROFIBUS


- DP là giao thức truyền thông hiệu quả, sử dụng cho lớp 1 và lớp 2 cũng như
giao tiếp ứng dụng. Lớp 3 đến lớp 7 là không sử dụng. Qua cấu trúc này đảm bảo việc
truyền dữ liệu nhanh và hiệu quả.
- FMS là phương thức truyền thông vạn năng, sử dụng cho lớp 1, 2 và 7. Lớp
ứng dụng 7 bao gồm Fieldbus Message Specification (FMS) và Lower Layer Interface
(LLI). FMS xác định một lượng lớn các dịch vụ truyền thông mạnh cho truyền thông
Master - Master, Master - Slave. LLI xác định các dịch vụ FMS trên phương thức
truyền dữ liệu của lớp 2.
 Kỹ thuật truyền RS - 485

330
- Kỹ thuật truyền RS - 485 thường được sử dụng nhất trong PROFIBUS. Nó
được sử dụng trong tất cả các lĩnh vực ứng dụng mà yêu cầu tốc độ truyền cao, lắp đặt
đơn giản, rẻ tiền, sử dụng cáp đôi dây xoắn.
- Kỹ thuật truyền RS - 485 dễ dàng sử dụng. Sự lắp đặt cáp đôi dây xoắn không
đòi hỏi kiến thức cao. Cấu trúc BUS cho phép thêm vào hoặc tháo bớt ra các trạm
hoặc vận hành hệ thống từng bước. Sự mở rộng sau này không làm ảnh hưởng đến các
trạm đang hoạt động.
- Tốc độ truyền có thể chọn trong vùng 9,6Kbit/s đến 12Mbit/s. Khi hệ thống
hoạt động có thể chọn một tốc độ truyền duy nhất cho tất cả các thiết bị trên BUS.
 Kỹ thuật truyền IEC 1158 – 2

- Sự truyền đồng bộ theo qui định IEC 1158-2 với tốc độ truyền từ 31,25 kbit/s,
được sử dụng trong tự động hoá quá trình. Nó thoả mãn các yêu cầu quan trọng trong
công nghiệp hoá chất, hoá dầu nơi có các đòi hỏi an toàn về cháy nổ và nguồn cung
cấp, nó sử dụng cáp đôi dây xoắn. Do đó PROFIBUS được sử dụng trong các môi
trường nguy hiểm.
- Khả năng và giới hạn của PROFIBUS với kỹ thuật truyền IEC 1158 - 2 cho các
thiết bị trong vùng cháy nổ được qui định qua mô hình FISCO (Fieldbus Intrinically
Safe Concept).
- Sự truyền theo IEC 1158-2 và FISCO dựa trên các nguyên tắc cơ bản sau:
• Khi một trạm đang gửi dữ liệu thì không được cấp nguồn cho BUS.
• Một đoạn mạng chỉ được phép có một nguồn cung cấp.
• Trong trạng thái bình thường, mỗi thiết bị trường đều tiêu thụ một dòng
điện không đổi.
• Các thiết bị trường như là một bộ tiêu thụ dòng thụ động.
• Mỗi đầu cuối của đường dây BUS chính được kết thúc bằng một điện trở.

Cáp và đầu nối Bus của RS 485 trong PROFIBUS.

331
Nguồn BUS của các thiết bị trường ở PROFIBUS

 Kỹ thuật truyền cáp quang

- Cáp quang có thể sử dụng cho PROFIBUS khi các ứng dụng ở môi trường có
nhiễu từ trường cao, cần cách ly về điện hay cần tăng khoảng cách truyền tối đa với
tốc độ truyền cao. Hiện có nhiều loại cáp quang với các đặc điểm khác nhau về
khoảng cách, giá cả và ứng dụng.
- Các đoạn mạng PROFIBUS dùng cáp quang có cấu trúc hình sao(Star) hoặc
vòng (Ring). Các thành phần cáp quang của một số nhà sản xuất cho phép tạo ra các
kết nối Redandant, có khả năng tự động chuyển đổi đường truyền vật lý khi có sự cố.
Nhiều hãng sản xuât các khớp nối (Coupler) dùng nối cáp RS 485 và cáp quang. Điều
này cho phép có thể chuyển đổi bất cứ khi nào giữa truyền RS 485 hay cáp quang
trong một hệ thống.
 Phương thức truy cập PROFIBUS

Truyền thông PROFIBUS sử dụng một phương thức truyền đồng nhất. Phương
thức này thuộc lớp 2 của kiểu OSI. Nó cũng bao gồm an toàn dữ liệu, xử lý các
phương thức truy cập và các bức điện. Trong PROFIBUS, lớp 2 được gọi là Fieldbus
Data Link (FDL).
Điều khiển truy cập (Medium Access Control: MAC) xác định thủ tục khi một
trạm được phép gửi dữ liệu. MAC phải đảm bảo rằng tại một thời điểm chỉ có một
trạm có quyền gửi dữ liệu.
Phương thức truy cập PROFIBUS được thiết kế để giải quyết 2 yêu cầu chính
của điều khiển truy cập MAC là :
• Trong thời gian truyền thông giữa các hệ thống tự động phức (master),
phải đảm bảo rằng mỗi một trạm có đủ thời gian cần thiết để thực hiện
xong các công việc truyền thông của nó.

332
• Mặt khác, để truyền thông giữa các bộ điều khiển lập trình và các Slave
gán cho nó thì sự truyền dữ liệu theo chu kỳ, thời gian thực cần phải
được trang bị càng nhanh và càng đơn giản càng tốt.

Phương thức truy cập PROFIBUS gồm phương thức vòng Token được sử dụng
để các Master truyền thông với nhau và phương thức master-slave được các master sử
dụng để truyền thông với các Slave.
Cấu hình PROFIBUS có 3 Master và 7 Slave 3 Master tạo nên một vòng Token

Phương thức Token passing bảo đảm rằng quyền truy cập Bus (token) được gán
cho mỗi master theo đúng khung thời gian đã xác định. Thông báo Token là một bức
điện đặc biệt để chuyển Token từ một master này sang một master khác và phải
chuyển theo vòng token tới tất cả các master trong khoảng thời gian tối đa cho phép
(có thể cấu hình). Trong PROFIBUS, phương thức Token passing được sử dụng cho
truyền thông giữa các master.
Phương thức master-slave cho phép các master (các trạm tích cực) hiện đang giữ
Token truy cập các Slave (các trạm thụ động). Điều này cho phép các master có thể
gửi hay nhận các thông báo từ Slave. Phương thức truy cập này trang bị các cấu hình
hệ thống sau:
• Hệ thống Master-Slave
• Hệ thống Master-Master (token passing)
• Kết hợp cả 2 hệ thống trên
5.4.2. Truyền thông dữ liệu với Profibus DP
Dạng truyền thông DP được dùng cho việc trao đổi dữ liệu ở cấp trường có hiệu
quả. Các thiết bị tự động hoá trung tâm như PLC/PC hoặc các hệ thống điều khiển quá
trình qua một kết nối nối tiếp nhanh với các thiết bị trường phân tán như I/O, các bộ

333
truyền động, các van cũng như các bộ chuyển đổi đo. Trao đổi dữ liệu với các thiết bị
phân tán diễn ra chủ yếu theo chu kì.
Các chức năng truyền thông cần thiết cho trao đổi theo chu kỳ là các chức năng
DP cơ bản xác định theo tiêu chuẩn EN 50 170. Ngoài các chức năng cơ bản này, DP
cũng có các chức năng truyền thông không chu kì mở rộng dùng cho gán thông số,
vận hành, giám sát và cảnh báo của các thiết bị trường thông minh.
Các bộ điều khiển trung tâm (Master) đọc các thông tin ngõ vào của Slave theo
chu kỳ và ghi các thông tin ngõ ra tới các Slave theo chu kỳ. Thời gian chu kỳ BUS
phải ngắn hơn thời gian chu kỳ chương trình của hệ thống tự động hoá trung tâm, thời
gian chu kỳ BUS trong nhiều ứng dụng khoảng 10ms. Bên cạnh sự truyền dữ liệu ứng
dụng theo chu kỳ, DP cũng có các chức năng cho chuẩn đoán và chọn chế độ hoạt
động. Sự truyền thông dữ liệu được giám sát bởi các chức năng giám sát ở cả hai phía
Master và Slave. Bảng 9 cho biết tất cả các chức năng cơ bản của DP.
5.4.2.1. Các đặc điểm cơ bản
Truyền dữ liệu tốc độ cao không phải là điều kiện đủ cho sử dụng thành công
một hệ thống Bus. Để thoả mãn các yêu cầu của người dùng thì các chức năng như:
Điều khiển đơn giản, khả năng chuẩn đoán tốt và kỹ thuật truyền chống nhiễu cần
được đáp ứng. DP thể hiện sự kết hợp tối ưu các đặc tính trên.
Tốc độ
DP chỉ mất 1ms tại tốc độ 12Mbit/s để truyền 512 bit dữ liệu ngõ vào và 512 bit
dữ liệu ngõ ra tới 32 trạm. Hình 9 mô tả thời gian truyền điển hình của DP phụ thuộc
vào số lượng trạm và tốc độ truyền. Việc truyền dữ liệu ngõ vào và ngõ ra trong một
chu kỳ bus làm cho tốc độ truyền tăng đáng kể so với FMS. Trong DP dữ liệu người
dùng được truyền bằng dịch vụ SRD lớp 2.
Các chức năng chuẩn đoán
Các chức năng chuẩn đoán mở rộng của DP cho phép tìm ra vị trí lỗi nhanh
chóng. Các thông báo chuẩn đoán được truyền trên Bus và tập trung tại Master. Các
thông báo này được chia làm 3 cấp:
- Chuẩn đoán các trạm liên quan
Các thông báo dạng này đề cập tới trạng thái hoạt động chung của một trạm (ví
dụ quá nhiệt hay thấp áp)
- Chuẩn đoán các modul liên quan
Các thông báo này chỉ ra trong phạm vi một vùng I/O (ví dụ 8 bit của modul ngõ
ra) của một trạm có các thông báo chuẩn đoán.
- Chuẩn đoán các kênh liên quan:

334
Trong trường hợp này nguyên nhân của lỗi được xác định liên quan tới một bit
ngõ vào/ngõ ra riêng biệt (kênh). Ví dụ ngắn mạch tại ngõ ra thứ 7.
5.4.2.2. Cấu hình hệ thống và các dạng thiết bị
Với DP có thể thực hiện hệ thống Mono-Master hoặc Multi-Master. Điều này
mang lại độ linh hoạt cao khi cấu hình hệ thống. Tối đa 126 thiết bị (Master hoặc
Slave) có thể kết nối trên một Bus. Các thông số Số lượng ngõ vào và ngõ ra phụ
thuộc vào trang thiết bị. Tối đa là 246 byte dữ liệu ngõ vào và 246 byte dữ liệu ngõ ra.
Trong hệ thống- mono - master chỉ một master được kích hoạt trên bus trong
suốt qúa trình hoạt động của hệ thống bus. Hình 10 cho biết cấu hình của một hệ
thống mono - master. Bộ điều khiển lập trình là phần điều khiển trung tâm. các slave
phân tán kết nối với PLC qua các môi trường truyền thông. Hệ thống mono - master
có được thời gian chu kì bus ngắn nhất.

Hình 5.18. Thời gian chu kỳ BUS của hệ thống DP Mono-Master-Systems

Hình 5.19. Hệ thống DP Mono-Master-Systems

335
Trong cấu hình multi - master có nhiều master kết nối tới một bus. Các master
này có thể là các hệ thống phụ (subsystem) mỗi hệ thống gồm có một master DPM1
và các slave của nó, hoặc cấu hình mở rộng và các thiết bị chuẩn đoán. Tất cả các
master đều có thể đọc các bộ đệm ngõ vào và ra của slave. Tuy nhiên chỉ một DP
master (ví dụ DPM1 được gán trong khi cấu hình) mới có thể truy cập ghi các ngõ ra.
5.4.2.3. Đặc tính hệ thống
DP cũng tiêu chuẩn hoá đặc tính hệ thống, để đảm bảo khả năng tráo đổi thiết bị
một các rộng rãi. Đặc tính hệ thống được xác định chủ yếu dựa vào trạng thái hoạt
động của DPM1.
DPM1 có thể được điều khiển tại chỗ hoặc qua bus bởi thiết bị cấu hình. Có 3
trạng thái chính là:
- Stop:Trong trạng thái này không xảy ra sự truyền dữ liệu giữa DPM1 và các
slave.
- Clear: Trong trạng thái này DPM1 đọc thông tin ngõ vào của các slave và giữ
các ngõ ra ở trạng thái an toàn (failsafe).
- Operate: Trong trạng thái này DPM1 đang ở trong pha truyền dữ liệu. Trong
truyền thông dữ liệu theo chu kì sẽ đọc các ngõ vào của các slave và ghi các thông tin
ngõ ra tới slave.
DPM1 gởi trạng thái của nó tới tất cả các slave theo chu kì sử dụng lệnh
multicast trong khoảng thời gian đã được cấu hình.
Đáp ứng hệ thống khi có một lỗi xảy ra trong pha truyền dữ liệu của DPM1 (như
sự cố của một slave) được xác định bởi thông số “auto - clear”.
Nếu thông số này được set = true, DPM1 chuyển tất cả các ngõ ra của slave sang
trạng thái failsafe ngay khi một slave không sẵn sàng truyền dữ liệu. Sau đó DPM1
chuyển sang trạng thái clear.
Nếu thông số này = false thì DPM1 vẫn duy trì trạng thái hoạt động thậm chí khi
một sự cố xảy ra, và người dùng có thể xác định đáp ứng hệ thống.
5.4.2.4. Truyền dữ liệu theo chu kì giữa DPM1 và slave
Sự truyền dữ liệu giữa DPM1 và slave được xử lý tự động bởi DPM1 theo một
trình tự đã được định nghĩa. Khi cấu hình hệ thống bus, người sử dụng xác định các
slave được gán tới DPM1. Đồng thời cũng phải xác định các slave nào tham gia vào
truyền thông dữ liệu theo chu kì.
Sự truyền dữ liệu tới DPM1 và slave được chia ra làm 3 pha: truyền thông số,
cấu hình và truyền dữ liệu. Trước khi một DP slave tham gia vào pha truyền dữ liệu,
nó sẽ được kiểm tra trong pha truyền thông số và pha cấu hình xem cấu hình đặt trước
có phù hợp với cấu hình thưc hay không. Trong phần kiểm tra này dạng thiết bị, dạng
336
dữ liệu và chiều dài thông tin cũng như số lượng ngõ vào và ngõ ra phải phù hợp. Các
kiểm tra này mang lại cho người dùng sự bảo vệ đáng tin cậy chống lại các lỗi về
thông số. Ngoài việc truyền dữ liệu được xử lý theo chu kì bởi DPM1 thì dữ liệu
thông số mới có thể được gởi tới các slave khi người sử dụng yêu cầu.

Hình 5.20. Truyền dữ liệu theo chu kì.


5.4.2.5. Chế độ Sync và Freeze
DPM1 ngoài việc trưyền dữ liệu tới các trạm liên quan một cách tự động, nó còn
có thể đồng thời gửi các lệnh điều khiển tới một slave, một nhóm slave hoặc tất cả các
slave. Các lệnh điều khiển này được truyền như là các lệnh Multicast. Chúng cho phép
sử dụng các chế độ Sync và Freeze để đồng bộ hoá sự kiện điều khiển của Slave
Các slave bắt đầu chế độ Sync khi chúng nhận được một lệnh Sync từ master.
Sau đó các ngõ ra của tất cả các slave đóng băng (Freeze) tại trạng thái hiện hành
của chúng. Trong qúa trình truyền dữ liệu tiếp theo, dữ liệu ngõ ra được lưu trữ tại các
slave, nhưng trạng thái ngõ ra vẫn không thay đổi. Khi nhận được lệnh Sync tiếp theo
thì dữ liệu ngõ ra được lưu trữ được gửi tới các ngõ ra.Chế độ Sync sẽ được kết thúc
khi có lệnh unsync.
Tương tự, một lệnh điều khiển Freeze làm cho các Slave chuyển sang chế độ
Freeze. Trong chế độ hoạt động này trạng tháI các ngõ vào bị phong toả (Frozen: bị
đóng băng) tại giá trị hiện hành. Các dữ liệu ngõ vào sẽ được cập nhật trở lại, nếu
Master gửi một lệnh Freeze kế tiếp. Chế độ Freeze kết thúc khi có lệnh Unfreeze.
5.4.2.6. Một số DP Slave trong Simatic S7
Tùy thuộc vào cấu hình và mục đích sử dụng khác nhau mà hệ thống Simatic S7
có thể phân chia thành 3 nhóm thiết bị như:
- Các Compact slave: các slave có cấu trúc vùng dữ liệu vào/ra cố định và
không thể thay đổi được. Những slave này thông thường là những ET 200 được gắn

337
thành từng khối I/O (block) để tạo thành các Compact slave như ET 200AL, ET
200eco PN,...
- Các Modular slave: các slave này có cấu trúc vùng dữ liệu vào/ra tùy biến
theo mục đích sử dụng và được cấu hình thay đổi trong cấu hình phần mềm. Những
slave này có thể là ET 200M, ET 200MP, ET 200S, ET 200SP,...
- Các intellegent slave (I-slave): các bộ điều khiển PLC S7- 300/400/1200/1500
có thể tích hợp sẵn cổng DP hay sử dụng các card truyền thông CP, CM để sử dụng
chức năng DP slave và những thiết bị này được gọi là I – slave. Đặc điểm của các bộ I
– slave đó là vùng địa chỉ ngõ vào/ra cung cấp cho master không phải là vùng nhớ I/O
thật mà là vùng nhớ ảnh (I/O image), do đó người thiết kế cần mapping vùng dữ liệu
này vào vùng nhớ nội CPU để lập trình.
5.4.3. Thiết kế mạng truyền thông Profibus DP
5.4.3.1. Đặt vấn đề
Thiết lập và lập trình mô hình mạng truyền thông Profibus DP theo mô hình sau:
24VDC
CPU 313C – 2DP

I0.0 (ON)

I0.1 (OFF) Master

EM277 EM277
CPU 222 CPU 222
Salve 1 Salve 2

+ PLC Slave 1 điều khiển động cơ Trái-Phải.


+ PLC Slave 2 điều khiển động cơ Xuống-Lên.
Các địa chỉ truyền thông mạng PROFIBUS như sau:
Trạm chủ PLC S7-300: 02
Trạm tớ Slave 1: 06
Trạm tớ Slave 2: 04
Mô tả công nghệ: Khi hệ thống hoạt động, cơ cấu chạy phải hoạt động (P), sau
5s thì dừng. Đồng thời cơ cấu chạy xuống hoạt động (X), sau 5s thì dừng và cơ cấu
lên hoạt động (L) 5s thì dừng. Lúc này cơ cấu chạy trái hoạt động 5s thì dừng va kết
thúc một chu kỳ hoạt động.

338
m
P (5s)

T (5s)
X L
(5s) (5s)

Trong đó: Quá trình P, T và X, L được điều khiển bởi 2 động cơ ba pha không
đồng bộ roto lồng sóc.
 Yêu cầu thiết bị phần cứng

Bàn thực hành mạng truyền thông Profibus DP gồm các thiết bị sau:
- 01 PLC S7-300 CPU 313C – 2DP
- 02 PLC S7-200 CPU 222 AC/DC/RL
- 02 Module EM 277
- Các thiết bị vào/ra cơ bản: Nút nhấn, cảm biến, bóng báo, rơle trung gian,
contactor.
5.4.3.2. Cấu hình phần cứng hệ thống mạng truyền thông mạng Profibus DP
+ Chọn Voffset: 100
+ Chọn số byte truyền nhận: 2byte I/O
+ Địa chỉ vào ra cho EM277 Slave 1: IB2 – IB3, QB2 – QB3
+ Địa chỉ vào ra cho EM277 Slave 2: IB4 – IB5, QB4 – QB5
→ Cách thức trao đổi dữ liệu giữa Master và các Slaves:
Master Slave 1
IB0 VB0

Offset
100 Bytes
IB1 VB99
IB2 VB100
2 byte nhận
2 byte nhận
VB101
VB102
IB3
IB4 2 byte gửi
VB103
2 byte nhận
Slave 2
VB0
IB5
QB2
Offset
100 Bytes
2 byte gửi VB99
VB100
QB3
2 byte nhận
QB4
VB101
VB102
2 byte gửi
2 byte gửi
QB5
VB103

Hình 5.21. Cách thức trao đổi dữ liệu giữa Master và các Slaves
339
a) Thiết lập địa chỉ cho DP Slave (EM 277 PROFIBUS-DP)
- Bỏ nguồn cấp từ CPU S7-200 và EM 277.
- Đặt nút vặn ở mặt trước của EM 277 đến vị trí mong muốn. Nút gạt trên cùng
(đánh dấu X10) là chữ số hàng chục của địa chỉ. Nút gạt thấp hơn (đánh dấu
X1) là chữ số hàng đơn vị của địa chỉ. Đối với bài toán này, với EM277 của
Slave 1 đặt nút X1 đến 6 và nút gạt X10 đến 0 để chọn địa chỉ là 6 cho Slave 1,
với EM277 của Slave 2 đặt nút X1 đến 4 và nút gạt X10 đến 0 để chọn địa chỉ
là 4 cho Slave 2.

Hình 5.22 Modul EM 277 PROFIBUS-DP


- Cấp nguồn cho CPU S7-200 và EM 277.
Lưu ý: các nút chuyển địa chỉ của EM 277 chỉ được đọc khi EM 277 được cấp
nguồn. Thay đổi địa chỉ thiết bị của EM 277 chỉ được đọc khi đang cấp nguồn sẽ
không có hiệu lực cho đến khi nguồn được cấp ở chu trình tiếp theo.
b) Thiết lập cấu hình phần cứng của mạng trong phần mềm TIA
Bước 1: Tiến hành cài đặt các địa chỉ cho PLC S7-300:
- Xác đinh địa chỉ I/O cho PLC S7-300

340
- Xác định địa chỉ MPI để kết nối và nạp chương trình từ máy tính

- Cài đặt địa chỉ mạng PROFIBUS và chế độ hoạt động DP master

341
Bước 2: Tiến hành lấy module EM PROFIBUS-DP 277 và cài đặt địa chỉ cho
từng module EM 277
Ta phải thêm file GSD của EM 277 bằng cách chọn Options trên thanh công cụ
→ Chọn Manage general station description files (GSD)

Chọn đường dẫn file vào ấn Install

342
Sau đó ta có thể thêm Modul EM 277
Tiếp theo ta thêm Modul EM 277 → Other field devices → PROFIBUS DP →
PLCs → SIEMENS AG → SIMATIC → EM 277 PROFIBU-DP
Tiếp đến ta kết nối thiết bị trong mạng với nhau

Sau đó cài đặt cấu hình cho Slave1, Slave2. Kích đúp chuột vào Slave 1 → Hộp
thoại xuất hiện. Ta chọn PROFIBUS address > thay đổi địa chỉ Address thành 06

Chọn Device-specific parameters → thay đổi địa chỉ Offset = 100

343
Chọn cửa sổ theo hướng mũi tên → sau đó chọn 2 Bytes Out/ 2 Bytes In

Thay đổi vùng địa chỉ vào ra là 2


Làm tương tự với Slave2. Thay đổi địa chỉ Address = 4

Thay đổi vùng địa chỉ vào ra là 4

344
Như vậy là ta đã hoàn thành việc kết nối giữa 1 PLC S7-300 với 2 PLC S7-200
thông qua mạng Profibus. Trong đó PLC S7-300 đóng vai trò là Master để điều khiển
2 Slave là PLC S7-200.
5.4.3.3. Xây dựng chương trình điều khiển
Bước 1: Khai báo các biến đầu vào, đầu ra

Bước 2: Vào giao diện làm việc để lập trình cho bài toán:
 Chương trình Master ( PLC S7-300 ) được lập trình trên khối OB1

345
346
 Chương trình Slave 1:

 Chương trình Slave 2:

347
5.5. MẠNG TRUYỀN THÔNG PROFINET
Trong phần này, chúng ta cùng tìm hiểu về tổng quan mạng truyền thông
PROFINET, các cách thức truyền thông 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 Profinet giữa các CPU S7 – 1200/1500 một cách đơn giản nhất.
5.5.1. Tổng quan 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.22. PROFINET đáp ứng mọi yêu cầu cho công nghệ tự động hóa

348
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, …
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 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.23. Tổng quan về Profinet


 Các cấu hình ứng dụ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.
349
 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.
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.

Hình 5.24. 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.

350
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.

Hình 5.25. 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.26. Một thiết bị trường có thể truy cập bởi nhiều IO Controller

351
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.

Hình 5.27. 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.
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.28. PROFINET theo mô hình OSI

352
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.

Hình 5.29. Các kiểu cấu trúc mạng Profinet


5.5.2. Tập lệnh truyền thông 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.10. 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

353
truyền và gộp các gói tin khi
nhận
UDP Truyền thông CPU – CPU với User Datagram Protocol
chương trình người dùng
S7 Truyền thông giữa CPU – Dữ liệu truyền và nhận được
Communication CPU. Thực hiện việc truyền chỉ định độ dài theo người
nhận dữ liệu tới 1 CPU dùng
PROFINET RT Truyền thông kết nối CPU với Dữ liệu truyền và nhận được
Profinet I/O chỉ định độ dài theo người
dùng
Bảng 5.11. 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 và
TCP
định của người. TSEND_C, 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à
UDP TUSEND và TURCV Partner, nhưng không phải là
dedicated connection
S7 Gán TSAP cho Local và
GET và PUT
Communication Partner
PROFINET RT Đang phát triển Đang phát triển
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

354
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.
Để 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.
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.
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

355
 Lệnh TSEND_C và TRCV_C không hỗ trợ cho việc truyền/nhận các dữ liệu
Boolean.
a. Lệnh truyền dữ liệu TSEND_C
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.12. 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
thực thi: Cho phép xuất
REQ IN BOOL I, Q, M, D, L
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
nghĩa độ dài dữ liệu
I, Q, M, D, L,
LEN IN UINT truyền
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

356
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
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
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh
b. 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.13. 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

357
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
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
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
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
a. 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.

358
Bảng 5.14. Tham số của tập lệnh TCON/TDISCON

Khai
Tham số Kiểu dữ liệu Vùng nhớ Miêu tả
báo
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.
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

b. 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.15. Tham số của tập lệnh TSEND

Khai
Tham số Kiểu dữ liệu Vùng nhớ Miêu tả
báo
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

359
Khai
Tham số Kiểu dữ liệu Vùng nhớ Miêu tả
báo
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
DATA IN/OUT VARIANT I, Q, M, D, L định 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.
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
c. 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.16. 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
LEN IN UINT I, Q, M, D, L, Dung lượng truyền tối

360
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
hay là hằng số đa:
0 = Tham số DATA
định nghĩa độ dài dữ
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
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

361
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.
a. 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.17. 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ữ
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ố:
ERROR OUT BOOL Q, M, D, L 0 = Không có lỗi
1 = Lỗi xảy ra và người
362
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
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.
b. 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.18. 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ố
DONE OUT BOOL Q, M, D, L Lệnh được thực thi thành

363
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
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.5.3. Thiết kế mạng truyền thông Profinet
Người lập trình có thể sử dụng lệnh PUT/GET để thực hiện lệnh truyền thông
giữa các PLC S7 thông qua kết nối Profinet và Profibus
- CPU Firmware ≤ V3.x thì chức năng hỗ trợ PUT/GET tự động được kích hoạt
trong cấu hình phần cứng
- CPU Firmware ≥ V4.x thì chức năng hỗ trợ PUT/GET không tự động được
kích hoạt trong cấu hình phần cứng nên cần phải thực hiện kích hoạt trong cấu hình
Device configuration như sau: Device configuration → CPU → Properties →
Protection → kích hoạt Permit access with PUT/GET …

5.5.3.1. Truyền thông mạng Profinet PLC S7-1200


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 đề

364
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
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ước 3: Thực hiện kích hoạt chức năng hỗ trợ PUT/GET trong cấu hình phần
cứng cho cả 2 PLC: Device configuration → CPU → Properties → Protection →
Connection mechanisms

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.
 Khi sử dụng tập lệnh GET, PUT chỉ cần viết chương trình truyền thông ở bên
Client, bên còn lại thì không cần phải viết – được coi là Server. Client sẽ truy
cập vào Server thông qua những tập lệnh truyền thông.
 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 Client và PLC_2 làm
Server
 Khởi tạo vùng dữ liệu truyền nhận trên PLC Server
Tạo khối dữ liệu Server_Data [DB1] truyền nhận thông tin và khai báo vùng dữ
liệu truyền nhận của PLC Server

365
- Dữ liệu khai báo theo kiểu mảng (array) để thuận tiện cho việc truy xuất và
quản lý trong DB
- Chuyển DB sang chế độ Standard DB (non-optimized)

 Viết chương trình trên PLC Client


Bước 1: Tạo khối dữ liệu Client_Data [DB100] truyền nhận thông tin, và khai
báo dữ liệu truyền nhận giữa PLC Client với PLC Server
- Dữ liệu khai báo theo kiểu mảng (array) để thuận tiện cho việc truy xuất và
quản lý trong DB
- Chuyển DB sang chế độ Standard DB (non-optimized)

Bước 2: Thực hiện gọi lệnh truyền dữ liệu tới Server trong khối tổ chức OB1:
Instruction → Communication → S7 Communication → PUT

Bước 3: Cấu hình và khai báo tham số cho lệnh PUT hoạt động: PUT → Start
configuration (Properties).

366
- Connection parameter: Thực hiện chọn Partner là SERVER, 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ỉ
DB1.DBX10.0

• Send area (SD-i): CPU Local thực hiện truyền 10 Byte dữ liệu bắt đầu từ
địa chỉ DB100.DBX0.0

- Done: Chọn vùng nhớ báo cáo thực hiện lệnh hoàn tất

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

Bước 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ư 3 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:
Lệnh Client Server
PUT DB100.DBB0 → DB100.DBB10 DB1.DBB10 → DB100.DBB19
GET DB100.DBB10 → DB100.DBB19 DB1.DBB1 → DB100.DBB10
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

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

368
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.5.3.2. Truyền thông mạng Profinet PLC S7-1500
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.

369
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.

370
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.

371
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
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:

372
Program block → add new block → Data block → name =”TRUYEN_DULIEU” →
manual → OK.

Đối v ới block NHAN_DULIEU ta làm tươngTrong


tự. 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.

373
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

374
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.

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).

375
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:

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
376
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

377
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.

378
5.6. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5
1. Mạng truyền thông ASI thực hiện cho những thiết bị nào? Kể một vài thiết bị được
dử dụng trong mạng truyền thông ASI.
2. Những ưu điểm của mạng truyền thông ASI?
3. Những thành phần cơ bản để tạo thành một mạng ASI là những thiết bị gì ? Hãy
nêu những đặc điểm chức năng của chúng?
4. Ý nghĩa bảng địa chỉ ASI là gì? ASI V2.0 có bao nhiêu slave trong một mạng ASI?
5. Ưu điểm của mạng truyền thông Modbus là gì ? Hãy kể tên một số phiên bản của
giao thức Modbus?
6. Hãy trình bày cấu trúc của Modbus?
7. Hãy trình bày những điều cần lưu ý trong giao thức Modbus? Mối quan hệ giữa mã
chức năng với các bảng định dạng địa chỉ, dữ liệu trong giao thức Modbus như thế
nào?
8. Hãy so sánh giao thức Modbus RTU và TCP để tìm ra những điểm giống và khác
nhau?
9. Hãy trình bày những tập lệnh Modbus được sử dụng TIA PORTAL cho PLC S7-
1200/1500?
10. Trình bày cách thực hiện truyền thông giữa các PLC S7 với nhau bằng giao thức
Modbus RTU và TCP
11. Giao thức truyền thông PROFIBUS là gì? Có bao nhiêu định dạng truyền thông
PROFIBUS mà hiện nay đang sử dụng? Hãy nêu những đặc điểm của chúng?
12. Trình bày giao thức truyền thông PROFIBUS theo mô hình OSI?
13. Trong mạng truyền thông PROFIBUS DP thì có tối đa bao nhiêu nút mạng? Có
thể sử dụng nhiều hơn một DP master trên một đường truyền PROFIBUS được
không?
14. Trình bày đặc điểm của mạng truyền thông PROFINET dựa trên nền tảng của
ETHERNET và PROFIBUS ?
15. Có bao nhiêu cấu hình truyền thông của PROFINET ? Hãy kể tên và nêu những
đặc điểm và tính năng của chúng.
16. Hãy kể tên nhưng cấu hình ứng dụng của PROFINET và phạm vi ứng dụng của
chúng.

379
TÀI LIỆU THAM KHẢO
1. Trần Ngọc Sơn, Nguyễn Đức Điển, Trần 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 (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.
5. Siemens AG (2012), “TIA Portal Module 010”, SCE Training Curriculum
Automation System SIMATIC S7-1200.
6. Siemens AG (2012), “ SIMATIC S7-1500 Technical Slides”.
7. Siemens AG (2016), “TIA Portal Module 010, 030, 040”, SCE Training
Curriculum Automation System SIMATIC S7-1500
8. Help của phần mềm TIA Portal V15.

380

You might also like