You are on page 1of 256

BỘ CÔNG THƢƠNG

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


KHOA ĐIỆN

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

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


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

HÀ NỘI – 2021

1
LỜI NÓI ĐẦU

Tự động hoá công nghiệp và dân dụng ngày càng phát triển. Bộ não trong các
hệ thống tự động hoá là các bộ điều khiển lập trình. Việc học và tìm hiểu về các bộ
khiển lập trình cũng nhƣ vận hành nó cho thật tốt đang là nhu cầu cấp thiết đối với
học sinh, sinh viên các ngành kỹ thuật.
Tài liệu đƣợc chia thành 5 chƣơng. Chƣơng 1, chƣơng 2, chƣơng 3 bao gồm các
phần cơ bản phù hợp với các bạn mới bắt đầu làm quen với PLC, tuy nhiên nó cũng
có thể là tài liệu tham khảo cho các bạn đã có kiến thức cơ bản về PLC. Chƣơng 4,
chƣơng 5 là phần nâng cao tập trung về các vấn đề điều khiển số, truyền thông và
màn hình điều khiển. Cấu trúc chung ở mỗi chƣơng trong tài liệu đều có ví dụ minh
họa cho các mục, ngoài ra cuối mỗi chƣơng có thêm một số câu hỏi và bài tập để đọc
giả rèn luyện thêm.
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, cuốn sách 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 để cuốn sách đƣợc hoàn thiện hơn trong lần tái
bản sau..
Các tác giả

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

3
2.4. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐẾM............................................. 59
2.4.1. Bộ đếm lên CTU .............................................................................. 59
2.4.2. Bộ đếm xuống CTD ......................................................................... 60
2.4.3. Bộ đếm lên xuống CTUD ................................................................ 61
2.4.4. Bộ đếm xung tốc độ cao HSC của S7 – 1200 .................................. 63
2.5. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ
................................................................................................................................ 74
2.5.1. Tập lệnh chuyển đổi dữ liệu/giá trị .................................................. 74
2.5.2. Lệnh làm tròn giá trị số thực về số nguyên...................................... 78
2.5.3. Lệnh lấy phần nguyên của số thực – Trunc ..................................... 79
2.6. Lập trình với tín hiệu tƣơng tự - Analog ................................................ 80
2.6.1. Lập trình xử lý tín hiệu Analog input .............................................. 80
2.6.2. Lập trình xử lý tín hiệu Analog output ............................................ 84
2.7. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG .................................. 86
2.7.1. Câu hỏi ôn tập .................................................................................. 86
2.7.2. Bài tập ứng dụng .............................................................................. 86
CHƢƠNG 3. PHƢƠNG PHÁP LẬP TRÌNH PLC ...................................... 100
3.1. KỸ THUẬT LẬP TRÌNH PLC ............................................................ 100
3.1.1. Vòng quét chƣơng trình ................................................................. 100
3.1.2. Cấu trúc chƣơng trình .................................................................... 101
3.2. PHƢƠNG PHÁP LẬP TRÌNH PLC .................................................... 103
3.2.1. Phƣơng pháp hàm tác động............................................................ 103
3.2.1.1. Khái niệm .................................................................................... 103
3.2.1.2. Các bƣớc tổng hợp bằng phƣơng pháp hàm tác động ................ 105
3.2.1.3. Ví dụ áp dụng .............................................................................. 107
3.2.2. Phƣơng pháp Grafcet ..................................................................... 114
3.2.2.1. Khái niệm và các thành phần của Grafcet .................................. 114
3.2.2.2. Các kiểu kết cấu của Grafcet ...................................................... 117
3.2.2.3. Lập các phƣơng trình điều khiển logic từ Grafcet ...................... 120
3.2.2.4. Các bƣớc thực hiện khi tổng hợp mạch trình tự bằng phƣơng pháp
Grafcet .............................................................................................................. 124
3.2.2.5. Ví dụ áp dụng .............................................................................. 124
3.3. KHỐI TỔ CHỨC OB VÀ LẬP TRÌNH KỸ THUẬT ......................... 128
4
3.3.1. Các khối tổ chức OB ...................................................................... 129
3.3.2. Lập trình kỹ thuật ........................................................................... 133
CHƢƠNG 4 ...................................................................................................... 152
THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÒNG KÍN VỚI THUẬT TOÁN
PID ............................................................................................................................. 152
4.1. GIỚI THIỆU VỀ THUẬT TOÁN PID ................................................ 152
4.1.1. Luật điều khiển PID ....................................................................... 152
4.1.2. Phƣơng pháp hiệu chỉnh PID bằng thực nghiệm ........................... 154
4.1.3. Giải pháp thiết kế bộ điều khiển PID ............................................. 156
4.2. CÁC TẬP LỆNH XỬ LÝ THUẬT TOÁN PID .................................. 159
4.2.1. Bộ điều khiển PID_Compact ......................................................... 159
4.2.2. Bộ điều khiển PID_3Step .............................................................. 165
4.2.3. Bộ điều khiển PID_Temp .............................................................. 168
4.3. THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÒNG KÍN CHO BÀI TOÁN
ĐIỀU KHIỂN ỔN ĐỊNH MỨC NƢỚC. ............................................................. 170
4.3.1. Đặt vấn đề ...................................................................................... 170
4.3.2. Yêu cầu và kết nối phần cứng ........................................................ 171
4.3.3. Hƣớng dẫn thực hiện bài toán ........................................................ 171
4.4. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG ................................ 182
4.4.1. Câu hỏi ôn tập ................................................................................ 182
4.4.2. Bài tập ứng dụng ............................................................................ 182
CHƢƠNG 5 THIẾT KẾ MẠNG TRUYỀN THÔNG SỬ DỤNG ....................
PLC SIEMENS................................................................................................. 187
5.1. MẠNG TRUYỀN THÔNG MODBUS ................................................ 187
5.1.1. Tổng quan về hệ thống mạng truyền thông MODBUS ................. 187
5.1.2. Cấu trúc giao thức của Modbus ..................................................... 189
5.1.3. Các chuẩn Modbus đang phổ biến - Modbus RTU ....................... 195
5.1.4. Thiết kế mạng truyền thông Modbus với PLC S7_1200/1500 ...... 201
5.2. MẠNG TRUYỀN THÔNG PROFINET .............................................. 225
5.2.1. Giới thiệu chung ............................................................................ 226
5.2.2. Các cấu hình truyền thông của PROFINET .................................. 226
5.2.3. Giao thức truyền và cấu trúc mạng của PROFINET ..................... 229
5.2.4 TẬP LỆNH TRUYỀN THÔNG CỦA PROFINET ....................... 230
5
5.2.4. Truyền nhận dữ liệu với TCON, TDISCON, TSEND và TRCV
(truyền thông TCP). .......................................................................................... 235
5.2.5. Lệnh truyền thông bằng S7 Communication ..................................... 239
5.2.5.1. Lệnh nhận dữ liệu GET .............................................................. 239
5.2.5.2. Lệnh truyền dữ liệu PUT ............................................................ 240
5.3. THIẾT KẾ MẠNG TRUYỀN THÔNG PROFINET ....................... 241
5.3.1. Truyền thông giữa IO Controller (PLC S7) ................................... 241
5.3.2. Ví dụ ứng dụng ............................................................................. 244
5.4. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG ................................. 255
TÀI LIỆU THAM KHẢO ............................................................................... 256

6
DANH MỤC HÌNH VẼ

Hình 1.1. Vị trí của PLC S7-1200 theo ứng dụng của các loại PLC S7.Error! Bookmark not d
Hình 1.2. Hình ảnh PLC S7-1200 ........................ Error! Bookmark not defined.
Hình 1.3. Ví dụ cấu hình phần cứng PLC S7-1200 trên TIA PORTALError! Bookmark not de
Hình 1.4. Hình ảnh minh họa trạm PLC S7-1500 Error! Bookmark not defined.
Hình 1.5. Vị trí của PLC S7-1500 theo ứng dụng của các loại PLC S7.Error! Bookmark not d
Hình 1.6. Cấu trúc trạm PLC S7-1500................. Error! Bookmark not defined.
Hình 1.7. Minh họa Module CPU S7-1500 ......... Error! Bookmark not defined.
Hình 1.8. Các module mở rộng của PLC S7-1500Error! Bookmark not defined.
Hình 1.9. Chức năng phần mềm TIA Portal ........ Error! Bookmark not defined.
Hình 1.10. Cấu trúc chƣơng trình PLC S7-1200/1500Error! Bookmark not defined.
Hình 1.11. Chu trình thực hiện chƣơng trình ....... Error! Bookmark not defined.
Hình 1.11. Vòng quét chƣơng trình ..................... Error! Bookmark not defined.
Hình 3.1. Quá trình thực hiện quét của khối tổ chức chính OB1. ..................... 130
Hình 3.2. Lập trình cấu trúc với FB/FC ............................................................. 133
Hình 4.1. Mô hình SCADA đơn giản .................. Error! Bookmark not defined.
Hình 4.2. Cấu trúc chung của một hệ thống SCADAError! Bookmark not defined.
Hình 4.3. Mô hình SCADA của SIEMENS trong dây chuyền sản xuất ô tôError! Bookmark n
Hình 4.4. Ví dụ phần cứng hệ thống SCADA ..... Error! Bookmark not defined.
Hình 4.5. Màn hình SIMATIC Key Panel KP32FError! Bookmark not defined.
Hình 4.6. Minh họa hệ thống SCADA với WinCC ProfessionalError! Bookmark not defined.
Hình 5.1. PROFINET đáp ứng mọi yêu cầu cho công nghệ tự động hóa ......... 225
Hình 5.2. Tổng quan về Profinet........................................................................ 226
Hình 5.3. Truyền thông Profinet IO và Proxy PN/BP ....................................... 227
Hình 5.4. Mối liên hệ giữa CR và AR ............................................................... 228
Hình 5.5. Một thiết bị trƣờng có thể truy cập bởi nhiều IO Controller ............. 228
Hình 5.6. Module hóa với Profinet CBA ........................................................... 229
Hình 5.7. PROFINET theo mô hình OSI ........................................................... 229
Hình 5.8. Các kiểu cấu trúc mạng Profinet ........................................................ 230

7
DANH MỤC BẢNG BIỂU

Bảng 1.1. Thông tin về CPU 1211C/1212C ........ Error! Bookmark not defined.
Bảng 1.2. Thông tin về CPU 1214C/1215C ........ Error! Bookmark not defined.
Bảng 1.3. So sánh tính năng giữa các CPU StandardError! Bookmark not defined.
Bảng 1.4.. So sánh tính năng giữa các CPU StandardError! Bookmark not defined.
Bảng 1.5. So sánh tính năng giữa các CPU CompactError! Bookmark not defined.
Bảng 1.6. Kiểu dữ liệu của PLC S7–1200/S7-1500Error! Bookmark not defined.
Bảng 1.7. Bảng phân loại vùng nhớ PLC S7 – 1200Error! Bookmark not defined.
Bảng 3.1. Khối tổ chức OB và số lƣợng (PLC S7-1200) .................................. 129
Bảng 3.2. Kiểu dữ liệu trong khối dữ liệu DB có thể khai báo ......................... 140
Bảng 3.3. Định dạng vùng nhớ trong khối dữ liệu DB với chế độ Standard ..... 145
Bảng 4.1. Bảng so sánh tính năng giữa WinCC V7 và ProfessionalError! Bookmark not defin
Bảng 4.2. Bảng tổng hợp các đối tƣợng Basic object.Error! Bookmark not defined.
Bảng 4.3. Bảng tổng hợp các đối tƣợng của ElementsError! Bookmark not defined.
Bảng 4.4. Bảng tổng hợp các đối tƣợng Controls Error! Bookmark not defined.
Bảng 5.1. Protocol và khai báo vùng nhận dữ liệu. ........................................... 230
Bảng 5.2. Protocol và lệnh truyền thông ........................................................... 231
Bảng 5.3. Tham số của tập lệnh TSEND_C ...................................................... 233
Bảng 5.4. Tham số của tập lệnh TRCV_C ........................................................ 234
Bảng 5.5. Tham số của tập lệnh TCON/TDISCON .......................................... 236
Bảng 5.6. Tham số của tập lệnh TSEND ........................................................... 236
Bảng 5.7. Tham số của tập lệnh TRCV_C ........................................................ 237
Bảng 5.8. Tham số của tập lệnh GET ................................................................ 239
Bảng 5.9. Tham số của tập lệnh PUT ................................................................ 240

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

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


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

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

9
Hàm logic cũng là một đại lƣợng hai trị: chỉ nhận giá trị 0 hoặc 1.
1.1.1. Các phép toán đối với biến logic
Các phép toán cơ bản của các biến logic là AND, OR và NOT, hoặc tổ hợp của
các phép toán cơ bản là NAND, NOR, XOR, XNOR.
 Phép toán NOT

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

Phép toán OR là phép cộng (tuyển, hợp, hoặc) các biến logic, ký hiệu: +, ∪.
Kết quả phép toán OR của các biến logic nhận giá trị 1 khi có ít nhất một trong
các biến nhận giá trị 1, nó nhận giá trị 0 khi tất cả các biến vào nhận giá trị 0.

Bảng trạng thái với 2 biến


x1 , x2 của phép toán OR nhƣ bảng 1.2.
Bảng 1.2. Bảng trạng thái phép toán OR
x1 x2 x1  x2
0 0 0
0 1 1
1 0 1
1 1 1
 Phép toán AND

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

10
0 0 0
0 1 0
1 0 0
1 1 1

 Phép toán NOR

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

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

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

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

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

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

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

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

12
x1. x2  x1  x2 , x1  x2  x1. x2
Luật nghịch đảo tổng quát đƣợc thể hiện bằng định lý De Morgan:
x1  x2  x2  ...  x1. x2 . x3 ...
x1. x2 . x3 ....  x1  x2  x3 + ...
Một số hệ thức cơ bản thƣờng dùng trong đại số logic nhƣ trong bảng 1.8.
Bảng 1.8. Một số hệ thức cơ bản thƣờng dùng
1 x0  x 10 x1. x2  x2 . x1
2 x.1  x 11 x1  x1. x2  x1
3 x.0  0 12 x1.( x1 + x2 )  x1
4 x 1  1 13 x1. x2  x1. x2  x1
5 xx  x 14 ( x1  x2 ). (x1  x2 )  x1
6 x. x  x 15 ( x1  x2  x3 )  ( x1  x2 )  x3

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

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


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

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

13
Ví dụ: Một hàm 3 biến với giá trị hàm đã cho đƣợc biểu diễn thành bảng chân
lý nhƣ bảng 1.9.
Bảng 1.9. Bảng trạng thái hàm ba biến
STT x1 x2 x3 y

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

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

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

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

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

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

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

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

5 1 0 1 x3 .x2 .x1

7 1 1 1 x3 .x2 .x1

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

4 1 0 0 x3  x2  x1

Nhƣ vậy:

15
f  ( x3  x2  x1 )( x3  x2  x1 )
Chú ý: Thƣờng viết các hàm trên dƣới dạng sau:
f   0,5, 7 ; N  2,3, 6
Với tổng chuẩn đầy đủ:
f  1, 4 ; N  2,3,6
Với tích chuẩn đầy đủ:
Trong đó: N = 2, 3, 6 là các thứ tự tổ hợp biến mà hàm không xác định.
1.3.3. Phƣơng pháp biểu diễn hàm logic bằng bảng Karnaugh
Nguyên tắc xây dựng bảng Karnaugh là:
- Để biểu diễn một hàm logic n biến, cần thành lập một bảng có 2n ô, mỗi ô
tƣơng ứng với một tổ hợp biến.

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

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

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

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

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

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

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

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

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

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


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

18
- Phƣơng pháp biến đổi đại số.

- Phƣơng pháp bảng Karnaugh.

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

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

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

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

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


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

21
Trong ví dụ này có cả các tổ hợp biến không xác định, nên khi thiết lập các
vòng lân cận ta có thể kết hợp với ô có giá trị 1 và các ô không xác định để đƣợc
nhóm có số ô là tối đa. Chú ý rằng không nhất thiết các vòng phải phủ hết các ô
không xác định.

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


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

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

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

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

23
Lập bảng phủ nhƣ bảng 2.2.
Bảng 1.13. Thành lập bảng phủ
HSCCB abc abc abc abc abc abc
NTCY
ab x x
ab x x
c x x x x
Nhìn vào bảng trên chúng ta thấy có rất nhiều cách phủ và tƣơng ứng với mỗi
cách phủ là một kết quả (các kết quả cũng có thể trùng nhau nhƣ ví dụ).

Nhƣ vậy
ftt (a, b, c, d)  ab  ab  c

Ví dụ 2.4: Tối thiểu hóa hàm logic sau:


f (a, b, c, d )   (0,4,5,6,11,14,15)
Lời giải:
- Bảng chân lý:
STT a b c d f
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 0
3 0 0 1 1 0
4 0 1 0 0 1
5 0 1 0 1 1
6 0 1 1 0 1
7 0 1 1 1 0
8 1 0 0 0 0
9 1 0 0 1 0
10 1 0 1 0 0
11 1 0 1 1 1
12 1 1 0 0 0
13 1 1 0 1 0
24
14 1 1 1 0 1
15 1 1 1 1 1
Hàm f(a,b,c,d) dƣới dạng tổng chuẩn đầy đủ:
f (a, b, c)  abcd  abcd  abcd  abcd  abcd  abcd  abcd
0000 0100 0101 0110 1011 1110 1111
Ta có bảng sau:
Bảng A Bảng B

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

I 0000* VI 0-00

II 0100* VII 010-

III 0101* 01-0

0110* VIII -110

IV 1011* IX 1-11

1110* 111-

V 1111*

Hàm tuyển chuẩn thu gọn:


f (a, b, c, d )  acd  abc  abd  bcd  acd  abc
Lập bảng phủ:
HSCCB abcd abcd abcd abcd abcd abcd abcd
NTCY
acd x x
abc x x
abd x x
bcd x x
acd x x
abc x x
Từ bảng phủ ta có hàm tối thiểu thu đƣợc là:
ftt (a, b, c, d )  acd  abc  bcd  acd
25
1.3.2. Xây dựng mạch rơle
Một số ký hiệu cơ bản đƣợc sử dụng trong mạch rơle – tiếp điểm đối với mạch
tổ hợp nhƣ bảng 2.3. Với các cơ cấu chấp hành dạng solenoid, thì cuộn hút của
chúng ký hiệu giống nhƣ rơle trung gian.
Bảng 1.14. Ký hiệu các thiết bị sử dụng mạch rơle - tiếp điểm
Thiết bị Hình ảnh Ký hiệu
Nút nhấn Tiếp điểm thƣờng mở:
Tiếp điểm thƣờng đóng:

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


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

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

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

Mạch logic có thể đƣợc biểu diễn bằng sơ đồ rơle tiếp điểm nhƣ sau:
- Sơ đồ gồm 2 dây thể hiện dây nguồn cấp cho mạch
- Tùy thuộc vào thiết bị vật lý tƣơng ứng với các biến logic mà ta có thể biểu
diễn các biến dƣới dạng nút ấn, công tắc hành trình hay các tiếp điểm
- Các biến ở trạng thái bình thƣờng đƣợc biểu diễn bằng các phần tử ở trạng
thái thƣờng mở.
- Các biến ở trạng thái đảo thì đƣợc biểu diễn bằng các phần tử ở trạng thái
thƣờng đóng.

26
- Đầu ra đƣợc biểu diễn bằng cuộn dây của rơle (hoặc contactor). Cuộn dây có
điện thì có nghĩa là đầu ra nhận giá trị 1, không có điện thì nhận giá trị 0. Khi cuộn
dây thay đổi trạng thái có điện hoặc không có điện thì các tiếp điểm (rơle) tƣơng ứng
cũng thay đổi trạng thái theo (coi là tức thời).
- Phép cộng logic đƣợc biểu diễn bằng cách nối hai phần tử song song với nhau
- Phép nhân logic đƣợc biểu diễn bằng cách nối hai phần tử nối tiếp với nhau.
- Đầu ra đƣợc biểu diễn bằng cách nối cuộn dây với tổ hợp kết nối các phần tử
đầu vào.

Ví dụ xây dựng mạch rơle cho hàm logic: Y  f (a, b)  ab  ab (với a, b là các
công tắc hành trình) nhƣ hình 2.2.

a b
1 3 5 0
Y
a 7 b

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


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

27
NOT 4049/ 4069: 6 phần tử NOT trong một
IC

AND 4082: 2 mạch mạch logic 4 cổng vào


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

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


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

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


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

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


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

28
XOR 4030: 4 mạch mạch logic 2 cổng
vào

XNOR 4077: 4 mạch mạch logic 2 cổng


vào

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

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

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

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

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


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

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

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

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


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

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

32
 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
33
Bƣớc 3: Khởi tạo hàm chức năng FC1 để thực hiện lập trình I/O Mapping:
Program blocks → Add new block → Function và đặt tên là IO Mapping.

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

Bƣớc 5: Gọi hàm chức năng FC1 – IO Mapping trong chƣơng trình Main OB1
để hoàn thành việc Mapped I/O giữa Tag nhớ và I/O ngoại vi. Và ngƣời dùng không
cần truy xuất trực tiếp tới Tag nhớ của vùng nhớ I, Q nữa mà chỉ cần thông qua các
Tag đã đƣợc Mapping.

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


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

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.

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

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


Công tắc thƣờng
mở hay thƣờng
đóng. Để có thể đọc
ngay lập tức ngõ
Input BOOL I, Q, M, I, Q, M,
vào có thể sử dụng
D, L D, L, T,
cấu trúc “:P” để sử
C
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

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

a. Phép toán AND


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

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


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

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ụ:
38
1. Thực hiện phép toán logic sau: X or Y or S  X  Y  S  Z
Đặt X = M0.5 = Input_Mapping_5; Y = M0.6 = Input_Mapping_6; S = M0.7 =
Input_Mapping_7; Z = M1.2 = Out_Mapping_2.

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


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

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

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

d. Phép toán NAND


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

e. Phép toán NOR


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

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


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

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

 Lệnh SET

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

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

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

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


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

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

Để giải thích rõ hơn và chi tiết hơn cho đoạn chƣơng trình trên ta có thể sử
dụng bảng trạng thái nhƣ sau:
M0.4 M0.5 M1.2
0 0 0
0 1 1
1 0 0
1 1 1

43
2.1.4. Lập trình với các tập lệnh nhận biết cạnh xung
Ký hiệu Kiểu dữ liệu Miêu tả
BOOL Nhận biết xung cạnh lên của tín hiệu đầu
vào

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

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


BOOL

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


BOOL ra

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


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

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

I0.0 0

M0.0 0

1
0
Q0.0
1
Q0.1 0

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

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

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

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

46
I0.0

M0.0

Q0.0

Q0.1

Chu kỳ lệnh

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


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

Ví dụ:

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

52
 Ví dụ minh họa

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

53
 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, I, Q, M, L, Ngõ vào cho
D D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trƣớc
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
 Đồ thị Timming của bộ định thì

 Ví dụ minh họa

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

55
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

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.
56
Ngƣời dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TOF hay có thể
sử dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.3.4. Bộ định thì trễ sƣờn lên có nhớ – TONR
 Nguyên lý hoạt động
Bộ định thì trễ sƣờn lên có nhớ bắt đầu hoạt động khi có tín hiệu ngõ vào IN
chuyển từ trạng thái 0 lên 1, nếu thời gian tác động của ngõ vào IN < PT thì giá trị
ET vẫn lƣu lại 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, I, Q, M, L, Ngõ vào cho
D 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ì

57
 Ví dụ minh họa

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

58
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ý

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

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

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

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


Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CD Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm xuống
PV Input INT I, Q, M, D, L, Giá trị đặt trƣớc cho bộ đếm.

60
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

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

61
- Khi giá trị bộ đếm CV≤0 thì ngõ ra QD bằng 1
- Trạng thái ngõ vào R bằng 1 thì giá trị bộ đếm CV bằng 0.
 Tham số của bộ đếm
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CU Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm lên
CD Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm xuống
R Input BOOL I, Q, M, D, L Reset bộ đếm
LD Input BOOL I, Q, M, D, L Ngõ vào cho phép nạp giá trị
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

62
Khi ngõ vào M0.4 chuyển trạng thái từ 0 lên 1 thì giá trị hiện hành của bộ đếm
CV tăng lên 1, nếu ngõ vào M0.5 chuyển trạng thái từ 0 lên 1 thì giá trị bộ đếm CV
giảm xuống 1. Nếu ngõ vào M0.7 đƣợc tác động thì giá trị bộ đếm CV=PV. Ngõ ra
M1.2 lên mức 1 khi CV≥PV, ngõ ra M1.3 lên mức 1 khi CV≤0. Nếu tác động M0.6
thì giá trị bộ đếm CV=0.
2.4.4. Bộ đếm xung tốc độ cao HSC của S7 – 1200
2.4.4.1. Hoạt động của bộ đếm tốc độ cao HSC
Nếu các sự kiện đếm xảy ra có thời gian thực hiện chậm hơn so với các khối OB thì
ngƣời dùng có thể sử dụng các bộ đếm CTU, CTD, CTUD để đếm những sự kiện
này. Tuy nhiên, với những sự kiện xảy ra có thời gian thực thi nhanh hơn các khối
OB thì ngƣời dùng cần sử dụng các bộ đếm tốc độ cao HSC để nhận tín hiệu trả về từ
một incremental encoder.
Lệnh CTRL_HSC cho phép ngƣời dùng có thể lập trình và thay đổi những thông số
của bộ HSC.
Bộ đếm HSC đƣợc thiết lập một giá trị cài đặt trƣớc, và ngõ ra sẽ đƣợc kích hoạt
trong khoảng thời gian CV<PV. Bộ HSC cho phép thực hiện ngắt khi giá trị CV=PV
Lựa chọn kênh đếm tốc độ cao HSC
Những thông tin ở bảng sau sẽ giúp cho ngƣời dùng có thể kết nối và sử dụng đƣợc
tần số xung tối đa từ tín hiệu trả về CPU và SB
Tần số đọc xung tối đa trên thân CPU
CPU Địa chỉ Input Chế độ 1 hay 2 Chế độ Phase A/B
phase Quadrature
1211C I0.0÷I0.5 100 Khz 80 Khz
1212C I0.0÷I0.5 100 Khz 80 Khz
I0.0÷I0.7 30 Khz 20 Khz
1214C và 1215C I0.0÷I0.5 100 Khz 80 Khz
I0.6÷I1.5 30 Khz 20 Khz
1217C I0.0÷I0.5 100 Khz 80 Khz
I0.6÷I1.1 30 Khz 20 Khz
I1.2÷I1.5 1Mhz 1Mhz
Tần số đọc xung tối đa trên SB
Signal board Địa chỉ Input Chế độ 1 hay 2 Chế độ Phase A/B

63
phase Quadrature
SB 1221, 200 kHz I4.0÷I4.3 200 Khz 160 Khz
SB 1223, 200 kHz I4.0÷I4.1 200 Khz 160 Khz
SB 1223 I4.0÷I4.1 30 Khz 20 Khz
2.4.4.2. Lựa chọn chức năng đếm cho bộ đếm tốc độ cao HSC
Tất cả các bộ HSC đều đƣợc cấu hình giống nhau để có thể làm chức năng giống
nhau. Các chế độ đếm, điều hƣớng, và giá trị khởi đầu đều đƣợc cấu hình trong
Configuration Device của CPU cho HSC hoạt động
Có 4 chức năng của bộ HSC là
- Đếm Single-phase với điều hƣớng internal
- Đếm Single-phase với điều hƣớng external
- Đếm 2 phase với 2 ngõ vào xung
- Đếm phase A/B lệch nhau 900
Một số chức năng khác của bộ HSC:
- Chức năng đo tần số: một vài chế độ HSC cho phép cấu hình bộ HSC thực hiện đo
tần số thay vì chỉ đọc tín hiệu xung. Có 3 khoảng đo lƣờng tần số cho phép thực hiện
trong CPU S7 -1200 là:0.01, 0.1 và 1.0 giây.
- Chế độ Axis
- Những chế độ đếm và các tín hiệu ngõ vào: các tín hiệu ngõ vào đƣợc sử dụng nhƣ
xung clock, điều hƣớng, chức năng reset hỗ trợ cho bộ HSC. Cùng một tín hiệu ngõ
vào không thể sử dụng với hai chức năng khác nhau, nhƣng những ngõ vào không sử
dụng trong chế độ HSC hiện tại của nó thì có thể sử dụng với một mục đích khác. Ví
dụ: Nếu HSC1 chỉ sử dụng 2 ngõ vào nhƣng không sử dụng ngõ vào thứ 3 với chế độ
external reset(mặc định là I0.3) thì I0.3 có thể đƣợc sử dụng để làm tín hiệu ngắt
HSC2.
Chức năng đếm của HSC trong CPU S7-1200
Kiểu đếm Input 1 Input 2 Input 3 Chức năng
Đếm Single-phase với _ Đo tần số
điều hƣớng internal Clock _
Reset Đếm
Đếm Single-phase với _ Đo tần số
điều hƣớng external Clock Hƣớng
Reset Đếm
Đếm 2 phase với 2 ngõ Clock up Clock _ Đo tần số

64
vào xung down Reset Đếm
Đếm A/B phase lệch nhau _ Đo tần số
900 Phase A Phase B
Reset Đếm
2.4.4.3. Địa chỉ vào cho bộ đếm tốc độ cao HSC
Tín hiệu đầu vào cho tất cả các bộ HSC cần phải đƣợc kế nối với CPU, hay signal
board để kết nối với CPU. Đồng thời, ngƣời dùng cần phải cấu hình và bật cho các
HSC hoạt động trong Device configuration.
Chú ý: Ngƣời dùng cần phải chú ý không cấu hình cùng 1 ngõ vào cho 2 bộ HSC
Định nghĩa ngõ vào cho bộ đếm HSC:
- Chế độ Single-phase: C là tín hiệu ngõ vào của xung (clock), [d] là ngõ vào điều
hƣớng, [R] là tín hiệu external reset
- Chế độ 2-phase: CU là tín hiệu đầu vào xung đếm lên, CD là tín hiệu đầu vào xung
đếm xuống, [R] là tín hiệu external reset.
- Tín hiệu [R] chỉ áp dụng cho chế độ đếm.
Tín hiệu ngõ vào của bộ HSC on-board của CPU 1211C
Tín hiệu ngõ vào on-board của CPU (I0.x)
Chế độ đếm HSC
0 1 2 3 4 5
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 2 AB-phase [R] A B
1-phase C [d]
2-phase CU CD
HSC 3 AB-phase A B
Tín hiệu ngõ vào của bộ HSC on-board của CPU 1212C

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


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

65
1-phase C [d] [R]
2-phase CU CD [R]
HSC 3 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 4 AB-phase [R] A B

Tín hiệu ngõ vào của bộ HSC on-board của CPU 1214C…1217C
Tín hiệu ngõ vào on-board của CPU (I0.x)
Chế độ đếm HSC
0 1 2 3 4 5 6 7
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
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
1-phase C [d] [R]
2-phase CU CD [R]
HSC 5 AB-phase A B [R]
1-phase C [d] [R]
2-phase CU CD [R]
HSC 6 AB-phase A B [R]
Tín hiệu của Signal board hỗ trợ cho ngƣời dùng 2 kênh đọc xung tốc độ cao với 2 sự
lựa chọn sau:
- Trong trƣờng hợp ngƣời dùng mua CPU với kiểu AC/DC/RL muốn xử lý xung tốc
độ cao đầu vào thì cần mua thêm SB sẽ cho phép sử dụng đƣợc HSC1 và HSC2
- Trƣờng hợp ngƣời dùng sử dụng CPU 1211 và CPU 1212 thì mở rộng thêm 2 HSC
là HSC5 và HSC6.
Bảng tín hiệu ngõ vào của bộ HSC và SB
Tín hiệu ngõ vào on-board của SB
Chế độ đếm HSC
(I4.x)

66
0 1 2 3
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 2 AB-phase [R] A B
Chú ý: Các tín hiệu I/O đƣợc sử dụng với bộ đếm tốc độ cao phải đƣợc khai báo
trong cấu hình của CPU. Khi địa chỉ I/O đƣợc gắn cho bộ đếm HS thì không thể bị
chỉnh sửa đƣợc bởi chức năng Force trong bảng Watch.
2.4.4.4. Tập lệnh xử lý xung tốc độ cao CTRL_HSC
Mỗi lệnh CTRL_HSC sử dụng một khối dữ liệu Instance DB để lƣu trữ dữ liệu của
bộ đếm, cấu trúc và tham số. Khi gọi tập lệnh CTRL_HSC trong chƣơng trình thì
Step 7 Basic V1x sẽ tự động tạo ra 1 instance DB tƣơng ứng.

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

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

68
trị đếm đƣợc của bộ HSC. Để truy xuất địa chỉ process image của bộ HSC chúng ta
sẽ thực hiện thao tác sau: Device configuration → Device view → CPU .. →
Properties → HSC[n] → I/O address.

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

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


Status
Miêu tả
(W#16#....)
0 Không có lỗi thực thi
80A1 HSC indentifier không đúng
80B1 Báo lỗi NEW_DIR
80B2 Báo lỗi NEW_CV
80B3 Báo lỗi NER_RV
80B4 Báo lỗi NEW_PERIOD
80C0 Đa truy cập tới bộ đếm HSC
HSC không đƣợc bật cho phép hoạt động trong Device
80D0
Config

69
2.4.4.5. Hƣớng dẫn lập trình bộ đếm HSC hoạt động
a. Yêu cầu
Cấu hình hệ thống bao gồm: 1 CPU 1214C, 1 encoder dạng incremental gắn trên
động cơ trả tín hiệu về CPU, 1 màn hình HMI giao tiếp với PLC để cài đặt số xung
cần đọc. Lập trình PLC thực hiện yêu cầu:
 Encoder đƣợc kết nối vào các chân tín hiệu của bộ HSC 1, điều hƣớng đếm
ngƣời dùng có thể thay đổi trên HMI.
 HMI cài đặt số xung cần đọc
 Nếu đọc đủ số xung rồi thì đèn báo trạng thái hiển thị và ngƣời dùng có thể
thay đổi hƣớng, giá trị tham chiếu mới hay giá trị xung bắt đầu đếm.

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


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

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

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

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

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

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

73
2.5. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ
2.5.1. Tập lệnh chuyển đổi dữ liệu/giá trị
Khi có những giá trị không đồng nhất về kiểu dữ liệu thì việc so sánh, tính toán
giữa các giá trị sẽ trở lên khó khăn cho nên việc chuyển đổi đồng nhất giá trị là cần
thiết. Để thực hiện việc chuyển đổi giá trị này ngƣời dùng có thể sử dụng các tập
lệnh Conversion operations để chuyển đổi dữ liệu/giá trị.
2.5.1.1. Lệnh chuyển đổi giá trị - Convert
Để thực hiện việc chuyển đổi các giá trị từ BCD sang I, BCD sang DI, I sang
DI, DI sang R, … thì chúng ta sẽ sử dụng tập lệnh CONV

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


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

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

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

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

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


Trong một số trƣờng hợp ngƣời dùng muốn lấy phần nguyên của số thực theo
mục đích nào đó thì có thể sử dụng các tập lệnh chuyển đổi từ số thực sang số
nguyên nhƣ: Round, Ceil, Floor, Trunc.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
IN Input REAL I, Q, M, D, L, P hay Giá trị ngõ vào
hằng số muốn 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:

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

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

2.5.3. Lệnh lấy phần nguyên của số thực – Trunc


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

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

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

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

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

80
Với:
 IN là giá trị trả về cho các chân tín hiệu AIW (K1≤IN≤K2)
 OUT là giá trị thực tế đƣa vào module analog (Lo_Lim≤OUT≤Hi_Lim).

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

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


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

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


OUT = (VALUE – MIN) / (MAX – MIN)
Tham số của lệnh NORM_X
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
EN IN BOOL I, Q, M, D, L Ngõ vào cho phép hoạt
động

81
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ố
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

82
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

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

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


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

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

2.6.2.2. Ví dụ ứng dụng


a. Yêu cầu
Thực hiện lập trình điều khiển hệ thống bơm với yêu cầu:
- Sử dụng Signal board xuất tín hiệu Analog điều khiển bơm hoạt động thông qua
biến tần.
Nếu mực nƣớc nhỏ hơn 500 lít nƣớc thì bơm chạy 100%, nếu mực nƣớc lớn hơn 700
lít hì bơm chạy 50% công suất.
b. Thực hiện
Bƣớc 1: Khai báo, kiểm tra cấu hình phần cứng của module Analog để kiểm tra địa
chỉ và cấu hình hoạt động cho các kênh Analog theo yêu cầu bài toán thực tế: Signal
board Analog →Properties →Analog output

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

85
2.7. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG
2.7.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)?
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 trúc lệnh CTRL_HSC?
10. Trình bày câu lệnh xử lí tín hiệu analog input?
11. Trình bày câu lệnh xử lí tín hiệu analog output?
2.7.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.

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

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

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

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

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:

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

91
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

92
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

93
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

94
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

95
sau đó trở về vị trí ban đầu. Sau đó pittong 3A duỗi ra để đẩy sản phẩm vào thùng, hệ
thống quay về ban đầu.
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

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

Bài tập 19: Điều khiển dây chuyền rót và đóng lắp trai

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

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

99
CHƢƠNG 3. PHƢƠNG PHÁP LẬP TRÌNH PLC

Mục tiêu chƣơng 3


Chƣơng 3 cung cấp cho sinh viên kiến thức về kỹ thuật lập trình PLC, phƣơng
pháp lập trình PLC, các khối tổ chức và lập trình kỹ thuật. Từ đó sinh viên có thể lựa
chọn các kỹ thuật lập trình và phƣơng pháp lập trình PLC tùy theo công nghệ cụ thể.

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


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

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


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

100
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.
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, …

101
 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 4.2
minh họa cho cấu trúc chƣơng trình cho PLC S7-1200/1500, mối tƣơng quan giữa
các khối và chu trình thực hiện chƣơng trình.

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


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

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

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

Interruption Error handling


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

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

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


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

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


1 2 3 4 5 6 7 8 9 1 2 3
Ý nghĩa của dãy biến cố sự kiện: Sự xuất hiện của tín hiệu A làm cho X, Y hoạt
động, B xuất hiện làm cho Y ngừng hoạt động…

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

104
3.2.1.2. Các bƣớc tổng hợp bằng phƣơng pháp hàm tác động
Bƣớc 1: Phân tích tín hiệu vào/ra.
- Xác định tín hiệu vào.
- Xác định tín hiệu ra.
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 ...

105
thì: fc ( X )  y
+ Nếu có
F  ...  Y  X ...
thì: fc ( X )  y
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:
fc' ( X )  fc ( X ). p2

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

T
Hình 3.4. sơ đồ công nghệ ví dụ 1
 Các bƣớc tiến hành.
Bước 1: Phân tích tín hiệu vào/ra:
+ Có 2 tín hiệu vào:
 a0: Là tín hiệu báo trạng thái chuyển động sang trái.
 a1: Là tín hiệu báo trạng thái chuyển động sang phải .
+Các tín hiệu ra: Có 2 tín hiệu ra
 P: Trạng thái sang phải.
 T: Trạng thái sang trái.
Bước 2: Xác định chu kỳ hoạt động

107
Ta có hàm tác động của hệ thống nhƣ sau:
1 2 3 4 5 6
F = (+ao – T) + P + (a1 – P) + T + …
Chu kỳ hoạt động của hệ là từ 1 → 6, ta thấy trong một chu kỳ của hệ thống:
- Phần tử P: giai đoạn đóng 3 → 4, giai đoạn cắt 5→ 2 sau.
- Phần tử T: giai đoạn đóng 6→1 sau, giai đoạn cắt 2→ 5.
Bước 3: Xác định hàm điều khiển của các phần tử.
a) Phần tử P:
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

108
- Kiểm tra hàm cắt fc(T): Hàm cắt fc (T ) không đổi trị trong giai đoạn đóng của
chúng. Nên hàm cắt thỏa mãn yêu cầu.
Vậy f ' (T )  (a1  t )P.a0

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

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

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


Bước 1: Phân tích tín hiệu vào/ra.
Có 4 tín hiệu vào:
a0: Là công tắc hành trình báo trạng thái chuyển động sang phải P.
b0: Là công tắc hành trình báo trạng thái chuyển động đi xuống X.
a1: Là công tắc hành trình báo trạng thái chuyển động sang trái T.
b1: Là công tắc hành trình báo trạng thái chuyển động đi lên L.
Các tín hiệu ra: Có 4 tín hiệu ra.
P: Cơ cấu đi sang phải. L: Cơ cấu đi lên
X: Cơ cấu đi xuống T: Cơ cấu đi sang trái.
Bƣớc 2: Xác định chu kỳ hoạt động của các phần tử
Ta có hàm tác động:
1 2 3 4 5 6 7 8 9 10 11 12
F = (+a0 – T) + P + (a1 – P) +X + (b1 – X) + L + (b0 – L) + T…
Chu kỳ hoạt động của hệ là từ 1 → 12, ta thấy trong một chu kỳ của hệ thống:
- Phần tử P có một chu kỳ làm việc: giai đoạn đóng 3 → 4, giai đoạn cắt 5→2
sau.
- Phần tử X có một chu kỳ làm việc: giai đoạn đóng 6→ 7, giai đoạn cắt 8→ 5
sau.
109
- Phần tử L có một chu kỳ làm việc: giai đoạn đóng 9 → 10, giai đoạn cắt 11
→8 sau.
- Phần tử T có một chu kỳ làm việc: giai đoạn đóng 12→1 sau, giai đoạn cắt
2→ 11 sau.
Bước 3: Xác định hàm điều khiển của các phần tử. Sau khi xác định được
hàm điều khiển ta thực hiện bước 4 là kiểm tra tính đúng đắn của hàm điều khiển
vừa xác định được.
Phần tử P:
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 fc ( P)  a1 : Hàm cắt không thay đổi giá trị trong giai đoạn đóng
của phần tử nên hàm cắt thỏa mãn yêu cầu.
f ' ( P)  f d' (T ). f c (T )  (a0  p)T .a1
Phần tử T:
fñ (T )  b0 L
fc (T )  a0
f (T )  b0 L .a0
Kiểm tra fđ(T): b0 là tín hiệu xung nên fđ(T) bị mất ngay sau khi b0 mất. Để hiệu
chỉnh hàm trong trƣờng hợp này ta dùng tự duy trì của đầu ra T:
fñ ' (T )  (b0  t)L
Kiểm trả hàm cắt fc (T): Hàm cắt thỏa mãn.
Ta nhận thấy đi sang phải, sang trái là các cặp đối ngƣợc nhau. Tức là nếu có P
thì không có T, nếu có T thì không có P. Chu trình sang phải và sang trái là điều
khiển động cơ quay thuận hoặc ngƣợc. Vì vậy để bảo vệ liên động điện cho động cơ,
ta hiệu chỉnh hàm cắt của T nhƣ sau: fc (T )  a0 P .

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


Phần tử X:
fđ(X) = a1 P

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

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


Phần tử L:
fđ (L) = b1 X
fc (L) = b0
f (L) = b1 Xb0
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) Xb0
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)

111
f (Q1 )  (a0  q1 )b1
Ngoài ra, khi chu trình đi lên L kết thúc thì hàm điều khiển X hoàn toàn thoả
mãn điều kiện làm việc. Do đó để thoả mãn khi chu trình L kết thúc thì chu trình P
làm việc còn X không làm việc thì ta phải đƣa thêm vào hàm điều khiển X biến phụ
q2. Khi đó:
fhc' ( X )  (a1  x )Pb1 q2
Xác định hàm điều khiển cho biến phụ q2: Biến phụ q2 tác động khi b1 tác
động và mất tác động khi a0 tác động. Hàm tác động của biến trung gian q1 đƣợc xác
định nhƣ sau: (b1 là biến xung nên ta dùng tự duy trì của đầu ra để duy trì hàm đóng)
f (Q2 )  (b1  q2 )a0
Kết quả cuối cùng ta thu đƣợc nhƣ sau:
f ' ( P)  f d' (T ). f c (T )  (a0  p )T .a1
f hc' (T )  (b0  t ) La0 Pq1
f hc' ( X )  (a1  x) Pb1 Lq2
f ( L)  (b1  l ) X b0
f (Q1 )  (a0  q1 )b1
f (Q2 )  (b1  q2 )a0
Khi phân tích mạch điều khiển, ta thấy có thể bỏ các tiếp điểm thƣờng đóng L
của hàm T, tiếp điểm thƣờng đóng P của hàm X mà không ảnh hƣởng đến nguyên lý
hoạt động của công nghệ.

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

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


Quá các ví dụ áp dụng trên, ta có thể rút ra các quy luật sau khi tổng hợp mạch
trình tự bằng phƣơng pháp hàm tác động:
 Hàm tác động: Bao gồm hàm đóng và hàm cắt.

112
+ Hàm đóng đƣợc xác định là tín hiệu để hàm hoạt động, nếu tín hiệu dạng
xung thì bổ xung thêm phần tử duy trì.
+ Hàm cắt bao gồm: tín hiệu ngƣng hoạt động của hàm và tín hiệu hàm đối
nghịch nếu có.
 Xác định biến trung gian
Từ sơ đồ công nghệ và các hàm tác động tìm đƣợc, xem xét khả năng biến vào
(hoặc các tổ hợp biến vào) xuất hiện trong các hàm đóng mấy lần. Nếu xuất hiện n
lần thì cần (n-1) biến trung gian.
Tìm hàm trung gian, ta phải xem xét nó xuất hiện khi nào và mất khi nào để
phân biệt đƣợc số lần xuất hiện của các biến vào.
Dƣới đây sẽ giải quyết bài toán theo hƣớng suy luận trên.
Bước 1: Phân tích tín hiệu vào/ra
Các tín hiệu vào: A, B, C
Các tín hiệu ra: X, L, P, T
Bước 2: Xác định hàm tác động của từng phần tử.
fñ ( X )  ( A  x ) 
  f ( X )  fñ ( X ). fc ( X )  ( A  x ) Bl
fc ( X )  B  l 
fñ ( L )  ( B  l ) 
  f ( L )  fñ ( L ). fc ( L )  ( B  l) Ax
fc ( L )  A  x 
fñ ( P )  ( A  p) 
  f ( P )  fñ ( P ). fc ( P )  ( A  p)Ct
fc ( P )  C  t 
fñ (T )  (C  t ) 
  f (T )  fñ (T ). fc (T )  (C  t ) A p
fc (T )  A  p 
Bước 3: Xác định biến trung gian
Ta thấy tại vị trí A, có khả năng xảy ra hai trƣờng hợp:
- Gặp A lần thứ nhất: Có tín hiệu ra X,
- Gặp A lần thứ hai: Có tín hiệu ra P.
Nhƣ vậy biến vào A xuất hiện hai lần trong hàm đóng của X và P. Ta cần một
biến trung gian để phân biệt các trạng thái này. Đặt biến trung gian là y.
Giả sử khi gặp A lần thứ nhất thì y chƣa xuất hiện, khi gặp A lần thứ hai thì y
đã xuất hiện, có nghĩa là y xuất hiện khi bắt đầu gặp B (sau khi gặp A lần thứ nhất)
và tín hiệu y mất khi gặp C.
Vậy hàm tác động của biến trung gian y đƣợc xác định nhƣ sau:

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

(1)

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

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

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

115
T1 = 5s
5 P 8
T2 = 10s

a t1/8/5s

6 T 9 P

Y t2/8/10s

7 L 10

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

116
Có các kiểu hành động gắn liền với các giai đoạn nhƣ dƣới đây.
Hành động có điều kiện: Việc thực hiện một hành động đầu ra gắn với một giai
đoạn đôi khi phải chịu nhƣng điều kiện logic của sự thay đổi tín hiệu vào hoặc của
trạng thái tích cực hay không tích cực của một giai đoạn khác. Trên hình 4.9b hành
động bật sáng đèn L1 là hành động có điều kiện.
Hành động mức: là hành động đƣợc thực hiện suốt cả thời gian mà giai đoạn nó
gắn vào ở trạng thái tích cực.
Hành động xung: là hành động chỉ đƣợc thực hiện ngay khi giai đoạn mà nó
đƣợc gắn vào trở lên tích cực và chỉ đƣợc tiếp tục trong một khoảng thời gian nào đó.

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


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

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

117
1. 4. 5.

2 3 6

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

7. 10 11

e f

c d

8 9 12

c. Rẽ nhánh (Phân phối theo cách d. Hội tụ theo cách HOẶC


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

118
+ 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.10d)
Khi giai đoạn 10 là tích cực và biến cố e hiệu lực thì hệ chuyển sang giai đoạn
12, giai đoạn 10 trở về không tích cực.
Khi giai đoạn 11 là tích cực và biến cố f hiệu lực thì hệ chuyển sang giai đoạn
12, giai đoạn 11 trở về không tích cực.
e) Quay vòng các giai đoạn (hình 3.11a)
Khi giai đoạn 15 tích cực thì xảy ra các trƣờng hợp sau đây.
+ Nếu biến cố j có hiệu lực thì hệ chuyển đến giai đoạn 16, khi giai đoạn trở
thành tích cực thì giai đoạn 15 trở về không tích cực.
+ Nếu biến cố k có hiệu lực thì hệ quay vòng về giai đoạn 13, khi giai đoạn 13
tích cực trở lại thì giai đoạn 15 trở về không tích cực.
Chú ý là một vòng kín cần phải có ít nhất là ba giai đoạn, trong trƣờng hợp
logic nối cứng (mạch rơle).
f) Nhảy qua các giai đoạn (hình 3.11b)
Khi giai đoạn 17 tích cực, xảy ra các trƣờng hợp sau đây.
+ Nếu biến có p có hiệu lực thì hệ chuyển đến giai đoạn 18, khi giai đoạn 18 trở
thành tích cực thì giai đoạn 17 trở về không tích cực.
+ Nếu biến cố q có hiệu lực thì hệ chuyển đến giai đoạn 20, nhảy qua các giai
đoạn 18, 19 và 20. Lúc này giai đoạn 20 trở thành tích cực và khi đó thì giai đoạn 17
trở về không tích cực.

119
17.
13 q

g p

14 18

h w

15. 19
k
a’
j

16 20

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

Các điều kiện để tích cực một giai đoạn nhƣ


sau:
(n-1)
- 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 (n)
đ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). (n+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

120
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 4.12a.
M 2   M1.a  m2 .M 3 M 4   M1.a  m2 .(M 3  M 4 )
Trong đó  M1.a  m2  là điều kiện để không tích cực cho giai đoạn 2 khi xét đến
kiểu phân kỳ theo VÀ.
- Giai đoạn trước khi chọn có điều kiện giữa nhiều giai đoạn
Đó chính là giai đoạn 2 trong hình 3.18b
M 2   M1.a  m2 .M 3  M 4  (M1.a  m2 ).(M 3 .M 4 )
Trong đó ( M 3 .M 4 ) là điều kiện để không tích cực cho giai đoạn 2 khi xét đến kiểu
phân kỳ theo HOẶC

1 1

2 2

b
c d

3 4 3 4

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


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

121
7 9 7 9

b a b
a

8 10 8 10

d e

c
11
11
f
d
12
12

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


Hình 3.13. Phƣơng trình logic cho các giai đoạn trong trƣờng hợp hội tụ
Đây chính là trƣờng hợp các giai đoạn 8 và giai đoạn 10 trong hình 4.13a,b.
M 8   M 7 .a  m8 .M11
M10   M 9 .b  m9 .M11
Trong đó M 11 là điều kiện chung cho cả hai giai đoạn 8 và 10 để chúng không
tích cực.
- Giai đoạn bắt đầu của một dãy sau một hội tụ kiểu VÀ
Đây chính là trƣờng hợp của giai đoạn 11 trong hình 4.13a:
M11   M 8 .M10 .c  m11 .M12
M 8 .M10 . 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 4.13b:
M11   M 8d  M10 .e  m11 .M12
 M 8d  M10 .e  m11  là điều kiện để cho giai đoạn 11 tích cực khi xét đến kiểu hội
tụ HOẶC.
- Quay vòng kín (xem hình 4.14a)

122
18

13 19
q
g
p

14 20

15 21

i m

16
k
22

j n

17 23

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


Hình 3.14. Phƣơng trình logic cho các giai đoạn trong trƣờng hợp quay vòng và
nhảy qua các giai đoạn
Đó là vòng 14-15-16 (hình 4.14a), giai đoạn đầu tiên của vòng là giai đoạn 14:
M14   M13 g  M16 .k  m14 .M15
M13 .g : là điều kiện để giai đoạn 14 tích cực khi đến từ giai đoạn 13.
M16 .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:
M16   M15 .i  m16 .M17  M14   M15 .i  m16 .M17 .M14
- Nhảy qua các giai đoạn (xem hình 4.14b)
Đó là việc nhảy qua các giai đoạn 20 và 21.

123
Giai đoạn trƣớc khi nhảy là giai đoạn 19:
M19   M18 .l  m19 .M 20  M 22   M18 .l  m19 .M 20 .M 22
Giai đoạn tiếp sau nhảy là giai đoạn 22:
M 22   M 21.m  M19 .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.
M19 .q : là điều kiện để tích cực trong trƣờng hợp có nhảy.

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

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


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

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


m: Nút nhấn khởi động. P: Trạng thái sang phải.
a0: Là tín hiệu báo trạng thái chuyển động sang trái. T: Trạng thái sang trái.
a1: Là tín hiệu báo trạng thái chuyển động sang
phải.

124
Bƣớc 2: Thiết lập Grafcet 1 nhƣ hình 3.16.
Xác lập trạng thái ban đầu

0 Trạng thái ban đầu

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


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

1 Sang phải

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

2 Sang trái

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

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


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

0 Nếu a0=0: T

a0,m

1 P

a1

2 T

a0

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

125
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 4.18, thiết kế mạch điều khiển theo phƣơng
pháp Grafcet.

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


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

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


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

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


m: Tín hiệu khởi động. A+: Trạng thái xuống.
a0: là tín hiệu báo trạng thái chuyển động đi A- : Trạng thái lên
xuống. B+: Trạng thái sang trái
b0: là tín hiệu báo trạng thái chuyển động sang B-: Trạng thái sang phải
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.

126
Bƣớc 2: Thiết lập Grafcet 1 (hình 3.19)
Xác lập trạng thái ban đầu

0 Trạng thái ban đầu

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


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

1 Đi xuống

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

2 Đi lên

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

3 Sang phải

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

4 Sang trái

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

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

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

127
g

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

a0,b0, m

1 A+

a1

2 A-

a0

3 B+

b1

4 B-

b0

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


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

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

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


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

128
- Khối dữ liệu toàn cục (Global Data Blocks)

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

Khối tổ chức OB Số lƣợng Mức độ ƣu


tiên
Program cycle Multiple 1
Startup Multiple 1
Time – delay interrupts 4 (1 OB tƣơng ứng với 1 sự kiện) 3
Cyclic interrupts 4 (1 OB tƣơng ứng với 1 sự kiện) 8
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

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

Hình 3.21. Quá trình thực hiện quét của khối tổ chức chính OB1.
Chƣơng trình trong OB1 có thể gọi các hàm FC/FB, ngƣời dùng có thể gọi
nhiều khối tổ chức OB trong chƣơng trình điều khiển.
Thời gian thực hiện khối OB1 gọi là thời gian quét (scan time), CPU ấn định
thời gian quét tối đa, thông thƣờng 150ms và tùy thuộc vào CPU, tuy nhiên ngƣời
dùng có thể thay đổi đƣợc trong cấu hình Device trên phần mềm. Nếu chu kỳ quét
của CPU vƣợt thời gian quét tối đa thì CPU sẽ gọi OB80 (Time error interrupt) hay
chuyển sang STOP.
 Khối tổ chức ngắt trì hoãn – Time delay Interrupt

130
Có 4 khối tổ chức OB cho phép thực hiện ngắt thời trễ bắt đầu từ OB20 đến
OB23.
 Chức năng của khối tổ chức Time delay Interrupt OB
Hệ thống sẽ gọi khối OB tƣơng ứng sau một thời gian trễ, tên của OB sẽ đƣợc
định danh trong tập lệnh SRT_DINT. Để thực hiện việc gọi một OB ngắt trì hoãn
(ngắt trễ), ngƣời dùng cần phải thực hiện những nhiệm vụ sau:
- Cần phải gọi tập lệnh SRT_DINT
- Sử dụng lệnh CAN_DINT để hủy ngắt trì hoãn thực hiện khi chƣa gọi khối
OB ngắt trì hoãn
- Gọi khối OB ngắt trì hoãn trong Program blocks và download xuống CPU

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


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

Chú ý: Nếu ngƣời dùng thực hiện lệnh DIS_AIRT sau khi thực hiện lệnh
SRT_DINT, ngắt trì hoãn chỉ có thể thực hiện lại sau khi thực hiện lệnh EN_AIRT.
 Khối tổ chức ngắt chu kỳ - Cyclic interrupts
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ụ
131
thuộc vào mức độ ƣu tiên mà thực hiện trƣớc hay sau. Khối OB ngắt phần cứng đƣợc
xác nhận sau khi hoàn thành chƣơng trình trong nó.
Nếu một sự kiện khác gây ra một ngắn phần cứng trong cùng một module giữa
thời gian xác định ngắt và xác nhận ngắt thì áp dụng theo phƣơng pháp sau:
- Nếu sự kiện ngắt xảy ra trên cùng một channel thì sự kiện gọi tƣớc đó sẽ đƣợc
thực hiện và không thực hiện thêm ngắt phần cứng lần nữa. Một ngắt phần
cứng khác chỉ đƣợc thực hiện nếu nhƣ ngắt phần cứng hiện tại đã đƣợc xác
nhận.
- Nếu sự kiện ngắt xảy ra trên một kênh khác, thì cả 2 ngắt phần cứng đều đƣợc
thực hiên theo thứ tự ƣu tiên.

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


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

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


Khối tổ chức OB80 đƣợc gọi trong những trƣờng hợp sau:
- Nếu số lệnh trong chƣơng trình vƣợt quá giới hạn chu kỳ quét (mặc định là
150ms) sẽ gây lỗi và khối tổ chức OB80 sẽ đƣợc gọi.
- Thời gian xử lý ngắt chu kỳ lớn hơn chu kỳ ngắt.
- Khi thay đổ thời gian cài đặt/hoạt động của khối tổ chức ngắt thời gian lỗi.

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

132
Khối tổ chức báo lỗi thêm bớt module đƣợc thực thi khi cấu hình các module
I/O phân tán, module mạng Profibus, Profinet, AS-I với sự kiện tháo/lắp module vào
CPU.
3.3.2. Lập trình kỹ thuật
Các chƣơng trình lớn thƣờng đƣợc viết dạng cấu trúc, gồm khối OB1 và các
khối chƣơng trình FC, FB. Sử dụng lập trình cấu trúc giúp chƣơng trình dễ quản lý
và sửa lỗi, thuận tiện cho việc lập trình theo nhóm. Khối tổ OB và các khối FC, FB
có thể gọi những khối hàm FB, FC khác.
Instance
DB1

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

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


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.

133
Không sử dụng dữ liệu instance DB của FB làm tham số đầu vào và tuyệt đối
không sử dụng các giá trị trả về RET_VAL cùng chung vùng nhớ.
 Hƣớng dẫn lập trình hàm chức năng FC
a. Đặt vấn đề
Khởi tạo hàm chức năng FC1 thực hiện tính toán giá trị một hàm số có công
thức toán học sau: K=4X + 5XYZ
Trong đó X, Y, Z, K là số thực. Và thử lại kết quả với X=1.0, Y=2.0, Z=3.0
b. Hướng dẫn thực hiện
Bƣớc 1: Khởi tạo hàm chức năng FC1 tên Math_1: Program blocks  Add
new block  Function, đặt tên Math_1 và chọn OK

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.

134
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

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

136
Cho dây chuyền nhƣ hình dƣới đây:

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.

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

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.

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

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

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

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


Bit và chuỗi Bit  Bool gồm 1 bit đơn
 Byte gồm 8 bit

140
 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)
 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ể
141
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

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.

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

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

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

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

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

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


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

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


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

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

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

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

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

a) b)
m
P
A D
B
T T

L X

c) d)

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

L X

m T
A C E
P P

X L X L X L

B D F

a) b)

149
F E

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

m
A D

m C

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

A S

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

150
C
P T

X L X L

K N
3s 3s
A B

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

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

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


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

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


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

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

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

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


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

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


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

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


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

153
- 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.1.2. Phƣơng pháp hiệu chỉnh PID bằng thực nghiệm
Phƣơng pháp Zeigle – Nichols là phƣơng pháp thực nghiệm để thiết kế bộ điều
khiển P , PI hoặc PID bằng cách dựa vào đáp ứng quá độ của đối tƣợng điều khiển .
Bộ điều khiển PID cần thiết kế có hàm truyền là :
KI 1
GPID  K P   K D s  K P (1   TD s )
s TI s

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

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

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

Ba tham số (hằng số thời gian), K (hệ số khuyếch đại) và (hằng số thời


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

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

b)
K
a )
K

t t

T1 T 2 T1 T2

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

P T2/(T1.K) ∞ 0

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

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

155
 Phƣơng pháp Zeigle – Nichols 2

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

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


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

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

P 0

PI 0

PID

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


Rõ ràng việc phối hợp các đặc tính P, I, và D sẽ cho chúng ta khả năng thiết kế
đƣợc một bộ điều khiển PID phù hợp với các đối tƣợng cần điều khiển khác nhau.
Sử dụng bộ điều khiển PID
Một vấn đề cần đƣợc đặt ra là trong trƣờng hợp nào thì nên dùng bộ điều khiển
kiểu P, PI, PD hay PID?
a) Với các đối tượng có đáp ứng nhanh

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

157
VP  (VI T  VP ) z 1 1  dz 1
G PI ( z )   V (2)
1  z 1 1  z 1
P

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

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


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

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

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

158
Hình 4.2. Mô phỏng bộ PID số trên Matlab
Thiết kế tham số PID theo phƣơng pháp Zeigler – Nichols.
d) Kết luận
Các thành phần P, I, và D trong bộ điều khiển PID (số) có ý nghĩa rất cụ thể và
rõ ràng. Trong bài toán điều khiển bám (theo giá trị đặt), thành phần tỷ lệ P phản ứng
lại ngay với sai lệch, không cần "nhớ" đáp ứng trƣớc đó nhƣ thế nào, nhờ vậy mà nó
tạo ra đáp ứng nhanh và kịp thời. Thành phần tích phân I là thành phần "có nhớ", nó
lƣu lại giá trị điều khiển của vòng lặp trƣớc sau đó điều chỉnh thêm vào hay bớt đi
một lƣợng nào đó (do hệ số K_{i} và độ lớn của sai số quyết định) để tạo ra tín hiệu
điều khiển cho vòng lặp tiếp theo cho đến khi sai lệch bằng 0. Thành phần D cũng là
một thành phần "có nhớ", nó so sánh mức độ chênh lệch của sai lệch ở vòng lặp hiện
tại và sai lệch đƣợc lƣu ở vòng lặp trƣớc đó để đƣa ra tín hiệu điều khiển của riêng
mình. Khi độ chênh giữa sai lệch của hai chu kỳ điều khiển kế tiếp càng lớn thì tín
hiệu điều khiển ra của nó càng lớn (bản chất của đạo hàm). Còn nếu sai lệch của chu
kỳ điều khiển hiện tại cũng giống nhƣ sai lệch ở chu kỳ điều khiển trƣớc (nghĩa là sai
lệch vẫn còn nhƣng không thay đổi) thì tín hiệu điều khiển ra của nó bằng 0.
Nhƣ vậy, ba thành phần P, I, và D trong một mạch vòng điều khiển cũng tƣơng
tự nhƣ 7 nốt nhạc trong một bản nhạc. Bằng cách phối hợp các thành phần đó với
những tỷ lệ khác nhau chúng ta cũng có thể tạo ra một "bản nhạc" điều khiển với các
"giai điệu" khác nhau. Nếu phối hợp tốt sẽ tạo ra một bản nhạc nhƣ mong muốn và
êm ái. Còn nếu phối hợp không khéo thì sẽ tạo ra một bản nhạc uốn éo, giật cục với
giai điệu khó có thể biết trƣớc đƣợc.

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


4.2.1. Bộ điều khiển PID_Compact
Lệnh đƣợc sử dụng với các thuật toán PID theo kiểu đa dụng, đƣợc tích hợp sẵn
bộ tự chình (auto-turning) cho cả chế độ Auto và chế độ Manual. Lệnh thực hiện với
các chế độ nhƣ:
Inactive Ngắt hoạt động (Mode/State = 0)

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

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

Hình 4.4. Sơ đồ khối của lệnh PID_Compact với Anti – Windup


c) Gọi lệnh PID_Compact
Đầu tiên mở tia portal lên sau đó tạo project mẫu pid vói cpu s7-1200. Tiếp
theo vào mục Program Block rồi chọn add new block.

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

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

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

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.

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

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.
164
4.2.2. Bộ điều khiển PID_3Step
Lệnh PID_3Step đƣợc sử dụng cho các đối tƣợng điều khiển có tích hợp các bộ
tự chỉnh (self turning) nhƣ: van điện từ (valve), cơ cấu chấp hành actuator. Lệnh
PID_3Step cung cấp thêm 2 ngõ ra theo kiểu Boolean. Lệnh thực hiện với các chế độ
nhƣ:
Chế độ Inactive Mode/State = 0
Chế độ Pretuning Mode/State = 1
Chế độ Fine tuning Mode/State = 2
Chế độ Automatic mode Mode/State = 3
Chế độ Manual mode Mode/State = 4
Chế độ Approach substitute output value Mode/State = 5
Chế độ Transition time measurement Mode/State = 6
Chế độ Error monitoring Mode/State = 7
Chế độ Approach substitute output value Mode/State = 8
with error monitoring
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

165
TD Thời gian vi phân
a Hệ số trễ của khâu D (T1 = a*TD)
c Trọng số của khâu D

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

181
4.4. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG
4.4.1. Câu hỏi ôn tập
1. Thuật toán PID là gì? Khi nào chúng ta sử dụng thuật toán này trong quá trình điều
khiển?
2. Bộ PID bao gồm những thành phần gì? Mỗi thành phần ảnh hƣởng nhƣ thế nào tới
quá trình điều khiển?
3. Để cải thiện đáp ứng của hệ thống thì chúng ta cần thay đổi những thông số nào?
Nếu giá trị PV lúc nào cũng nhỏ hơn SP thì chúng ta cần thay đổi thông số nào?
4. Nếu sai số xác lập lớn thì chúng ta cần thay đổi những thông số nào? Thay đổi nhƣ
thế nào?
5. Tại sao chúng ta phải rời rạc hóa tín hiệu? Vì sao lại phải gọi bộ điều khiển PID
trong những khối OB ngắt chu kỳ? có thể gọi trong OB Main đƣợc không? Tại sao?
6. Khi muốn điều khiển hệ thống nhiệt thì chúng ta có thể sử dụng những bộ điều
khiển PID nào?
7. Các bƣớc thực hiện thiết lập một bộ điều khiển PID hoạt động nhƣ thế nào để sau
khi CPU tăt nguồn và khởi động lại vẫn hoạt động tốt
4.4.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.

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

183
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 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:
184
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: Đả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.

185
Độ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 8: Thiết bị rót chất lỏng vào thùng chứa

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

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

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


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

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


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

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

188
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.1.2. Cấu trúc giao thức của Modbus
a) Mô tả giao thức
Giao thức Modbus đƣợc định nghĩa là một đơn vị dữ liệu giao thức (Protocol
Data Unit - PDU) đơn giản nằm trong Lớp ứng dụng trong mô hình tham chiếu OSI
hay TCP/IP, độc lập với các lớp dƣới.
Việc áp dụng Modbus trên các đƣờng bus (Ví dụ : RS-485) hay đƣờng mạng
(Ví dụ: Ethernet) cụ thể có thể bổ sung thêm một số trƣờng dữ liệu nhƣ phần “Thông
tin bổ sung” hay phần “Kiểm tra lỗi” để tạo thành đơn vị dữ liệu ứng dụng
(Application Data Unit - ADU).
Cấu trúc PDU và ADU của Modbus đƣợc mô tả cụ thể nhƣ bên dƣới:

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


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

189
đƣợc xác định bởi mã chức năng. Dữ liệu này có thể bao gồm các mục nhƣ địa chỉ
đăng ký, số lƣợng mục cần xử lý và số byte dữ liệu thực tế trong trƣờng.
ADU đƣợc xây dựng bởi ngƣời sử dụng giao thức Modbus. ADU có thể khác
nhau tùy theo loại Modbus. Có thể thêm vào một số thông tin bổ sung để Server có
thể thực hiện chính xác hành động đƣợc xác định bởi mã chức năng. Trong thực tế,
thông tin có thể bao gồm địa chỉ Client, địa chỉ thanh ghi cần thao tác, số lƣợng
thanh ghi và số byte dữ liệu trên bộ nhớ thiết bị.
Ví dụ dành cho việc đối chiếu các cấu trúc ADU tiêu biểu của Modbus RTU và
Modbus TCP/IP:

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


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

190
❖ Nếu không có lỗi xảy ra, chức năng đƣợc yêu cầu trong Modbus ADU đƣợc
xác nhận là phù hợp, Server sẽ gửi lại thông tin phản hồi có chứa dữ liệu đƣợc yêu
cầu đến Client.

Hình 5.4. Truyền nhận bằng Modbus (Không có lỗi)


❖ Nếu có lỗi xảy ra, Server sẽ trả về một thông tin phản hồi chứa các thông báo
về lỗi đó.

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


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

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

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

Hình 5.7. Quy trình làm việc của Modbus trên Server
Trong quá trình truyền nhận dữ liệu, có thể xảy ra các trường hợp sau đây:
- Server nhận đƣợc yêu cầu từ Client mà không có lỗi giao tiếp và có thể thực
hiện chức năng bình thƣờng, Server sẽ trả về phản hồi bình thƣờng chứa cácthông tin
Client yêu cầu .

193
- Server không nhận đƣợc yêu cầu từ Client do lỗi giao tiếp nên không thể thực
hiện chức năng . Không có phản hồi nào đƣợc gửi về Client. Client sẽ có 1 khoảng
thời gian chờ phản hồi từ Server (gọi là timeouts). Khi hết timeouts, Client sẽ báo lỗi
hoặc tiếp tục xử lý tác vụ khác tùy theo ngƣời sử dụng.
- Server nhận đƣợc yêu cầu từ Client và nhƣng phát hiện lỗi giao tiếp (parity,
LCR, CRC,…) . Không có phản hồi nào đƣợc gửi về Client. Client sẽ có 1 khoảng
thời gian chờ phản hồi từ Server. Khi hết thời gian timeouts, Client sẽ báo lỗi hoặc
tiếp tục xử lý tác vụ khác tùy theo ngƣời sử dụng.
Server nhận đƣợc yêu cầu từ Client mà không có lỗi giao tiếp nhƣng không thể
xử lý đƣợc các chức năng mà Client yêu cầu. Server sẽ trả về phản hồi ngoại lệ chứa
các thông tin về lỗi đó.

Hình 5.8. Modbus PDU


Một phản hồi ngoại lệ gồm hai thành phần như sau:
- Mã chức năng ngoại lệ (Exception Function Code): Trong một phản hồi bình
thƣờng, Server sẽ gửi lại Mã chức năng của do Client yêu cầu. Tất cả các Mã chức
năng có bit đầu tiên bằng 0. Tuy nhiên, trong một phản hồi ngoại lệ, Server đặt MSB
của Mã chức năng thành 1 (Exception Function Code = Function Code + 0x80). Mã
chức năng này giúp Client có thể biết đƣợc đoạn phản hồi đƣợc gửi là một phản hồi
ngoại lệ, nghĩa là đang có lỗi xảy ra, và Client sẽ kiểm tra giá trị của Mã ngoại lệ.
- Mã ngoại lệ (Exception Code): Trong phản hồi bình thƣờng, Server sẽ trả về
dữ liệu hoặc số liệu thống kê trong trƣờng dữ liệu (bất kỳ thông tin nào đƣợc Client

194
yêu cầu). Tuy nhiên, trong một phản hồi ngoại lệ (có lỗi), Server sẽ trả về Mã ngoại
lệ để mô tả lỗi xảy ra ở Server.
5.1.3. Các chuẩn Modbus đang phổ biến - Modbus RTU
a) Định nghĩa Modbus RTU và cách thức hoạt động
Modbus RTU là một giao thức mở, dựa trên kiến trúc Client/Server đƣợc phát
triển bởi Modicon (ngày nay là Schneider Electric). Hiện nay, Modbus RTU đƣợc sử
dụng rộng rãi trong lĩnh vực Xây dựng hệ thống quản lý (Building Management
System - BMS) và Hệ thống tự động hóa trong công nghiệp (Industrial Automation
System - IAS).
Trên thế giới, Modbus RTU đa số đƣợc sử dụng với chuẩn vật lý Serial (Nối
tiếp) nhƣ RS-232, RS-485 hay RS-422 (RS-232 và RS-485 sẽ đƣợc giải thích ở phần
dƣới). Nhƣng hiện nay, do nhu cầu tích hợp hệ thống với các thiết bị hỗ trợ kết nối
Ethernet đƣợc tăng cao nên ngƣời dùng đã dần sử dụng Modbus RTU qua Ethernet.

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


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

Hình 5.10. Hệ thống công nghiệp sử dụng Modbus RTU


Về cơ bản, mô hình kết nối trong hình 2 sẽ được triển khai như sau:
- Các tín hiệu Analog (tín hiệu tƣơng tự) và các tín hiệu Digital sẽ đƣợc các
thiết bị của Modbus Server thu thập (Server 1, 2, 3, 4, 5...).
- PLC lúc này đóng vai trò nhƣ một Client đƣợc kết nối với các thiết bị có vai
trò nhƣ các Server thông qua chuẩn vật lý RS-485. Client sẽ yêu cầu các Server thực
hiện truyền, nhận dữ liệu để lấy thông tin và Client dùng những thông tin đó để điều
khiển các Server khác trong hệ thống (lúc này PLC sẽ đóng vai trò là Server).
- Kết nối giữa Client và các Server trong hệ thống thông qua chuẩn vật lý RS
485. (Ở những mô hình ứng dụng khác, ngƣời dùng có thể sử dụng chuẩn vật lý RS
232 tùy theo nhu cầu sử dụng)

196
Nhƣ vậy, thông qua hệ thống sử dụng Modbus RTU, một thiết bị có thể đóng
vai trò vừa là Client để lấy thông tin từ những thiết bị khác, và cũng vừa là Server để
điều khiển, nhờ vậy ngƣời sử dụng có thể giám sát, điều khiển, quản lý tất cả các
thiết bị để thu thập thông tin nhƣ nhiệt độ, áp suất, các loại van, cảm biến có trong hệ
thống...
d) Phân biệt RS-232 và RS-485 trong Modbus RTU
Modbus RTU đa số vẫn còn sử dụng với các chuẩn vật lý Serial (Nối tiếp) nhƣ
RS-232, RS-485 hay RS-422, mục 5.1.2 sẽ đề cập chi tiết đến chuẩn vật lý Serial
(nối tiếp) và phân biệt giữa RS-232 và RS-485.
Chuẩn vật lý Serial (Có thể gọi vắn tắt là giao tiếp Serial)
- Trong các phƣơng thức truyền nhận dữ liệu, quá trình gửi dữ liệu một cách
tuần tự qua bus máy tính giữa hai hay nhiều máy tính với nhau đƣợc gọi là giao tiếp
Serial, tức là dữ liệu sẽ đƣợc truyền từng bit một.

Hình 5.11. Giao tiếp Serial


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

Hình 5.12. Giao tiếp Parallel


Ƣu điểm giao tiếp Serial:

197
- Chi phí thấp hơn so với giao tiếp Parallel.
- Có thể truyền song công hoặc bán song công.
- Giao tiếp Serial đáng tin cậy và đơn giản hơn so với giao tiếp Parallel.
Nhƣợc điểm giao tiếp Serial:
- Tốc độ chậm hơn giao tiếp Parallel.
Các phƣơng thức truyền dữ liệu trong giao tiếp Serial:
- Dữ liệu đƣợc truyền đồng bộ: Sử dụng xung clock (Clock Pulse) để đồng bộ
quá trình truyền nhận giữa bên thu và bên phát. Dữ liệu sẽ đƣợc gửi đi hoặc nhận lại
ở những thời điểm xuất hiện cạnh lên của xung clock. (Hình 3) (Xung clock là 1
chuỗi các xung vuông đƣợc truyền liên tục cách nhau bằng 1 khoảng thời gian cố
định. Với cứ mỗi thời điểm xung thay đổi mức từ 0 -> 1 thì dữ liệu đƣợc
truyền/nhận).
Dữ liệu đƣợc truyền bất đồng bộ: Không sử dụng clock để đồng bộ mà sử dụng
bit chẵn lẻ (Parity bit) hoặc những quy ƣớc về phần cứng giữa 2 bên thu phát để đảm
bảo dữ liệu đƣợc toàn vẹn. Ví dụ: phía phát quy định cứ mỗi 1 mili giây sẽ gửi 1 bit
dữ liệu và phía nhận cũng quy định là cứ 1 mili giây sẽ nhận 1 bit dữ liệu.
Các thông số cài đặt chính trong giao tiếp Serial:
- Baud rate: Dùng để đo tốc độ truyền nhận dữ liệu, là số bit đƣợc truyền trong
một giây
- Stop bits: Đƣợc dùng để dừng việc truyền dữ liệu. Các giá trị thông dụng là 1,
1.5 và 2
- Parity bit: Là bit dùng để báo số lƣợng bit có giá trị bằng 1 trong một nhóm
bit đã biết và đƣợc sử dụng để kiểm tra lỗi. Có 4 loại parity bit thông dụng là even,
odd, marked và spaced.
Các chuẩn vật lý Serial:
- Đối với Modbus RTU hiện nay, đa số các thiết bị giao tiếp qua chuẩn Serial
có 2 dạng thƣờng gặp là chuẩn vật lý RS-232 và RS-485.
1) RS-232 là gì?
RS-232 là 1 dạng đầu nối vật lý có 9 chân (pin) (còn đƣợc gọi là cổng COM),
thƣờng đƣợc sử dụng trong các máy tính bàn để giao tiếp với các thiết bị khác nhƣ
máy in, fax, (và còn đƣợc gọi là chuẩn RS-232).
RS-232 sử dụng 3 dây chính, đó là dây truyền dữ liệu (Tx), dây nhận dữ liệu
(Rx) và dây nối đất (GND). RS-232 hoạt động dựa trên sự chênh lệch điện áp giữa
Tx, Rx so với GND.

198
Hiện nay, có 2 loại kết nối theo chuẩn vật lý RS-232 đƣợc sử dụng nhiều là
DB- 9 và DB-25.
DB-25 có 25 chân, nhƣng trong một số ứng dụng không cần thiết sử dụng toàn
bộ 25 chân. Vì vậy, DB-9 đƣợc tạo ra để tăng tính tiện dụng cho việc kết nối.

Hình 5.13. Sơ đồ chân (pin) của DB-9


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

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

200
- RS-485 với việc chỉ hoạt động trên dây Tx và Rx nên sẽ ít xảy ra nhiễu và
không làm gián đoạn việc giao tiếp. Vì vậy, RS-485 đƣợc truyền với tốc độ cao và xa
hơn.
5.1.4. Thiết kế mạng truyền thông Modbus với PLC S7_1200/1500
5.1.4.1. Lập trình ứng dụng Modbus RTU trên TIA Portal
Bài toán 1: Đọc tín hiệu của đồng hồ giám sát năng lƣợng.
a) Đặt vấn đề
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
201
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ị

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…

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

203
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

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

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:

205
Power ON

Communicaton
Load done

Read Slave 1

Read Slave 2

Real Slave 3

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.

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

207
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.
208
- Đặ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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Bài toán 2: Thiết lập truyền thông Modbus TCP giữa Client và Server với
PLC S7 trên TIA Portal
a) Đặt vấn đề
Sử dụng PLC S7 -1200/1500 thực hiện truyền dữ liệu giữa 2 PLC với nhau
bằng giao thức Modbus TCP.
b) Yêu cầu phần cứng

221
- CPU 1212C với địa chỉ IP 192.168.0.101 làm server.
- CPU 1511 với địa chỉ IP 192.168.0.100 làm Client.
c) Cấu hình Modbus cho PLC S7 làm Modbus TCP Server
Bƣớc 1: Khởi tạo thiết bị với tên TCP_Server, lựa chọn cấu hình PLC S7.
Bƣớc 2: tạo vùng nhớ dữ liệu DB1 với HoldReg để lƣu trữ thông tin thanh ghi
holding register của server. Chuyển vùng nhớ của HoldReg [DB1] sang dạng vùng
nhớ Non-optimized.
Bƣớc 3: Khởi tạo vùng dữ liệu Holding register: HoldReg [DB1]  Open 
Add new  đổi tên là TCPData  Chọn kiểu dữ liệu data type là Array [`1..100] of
Word.

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

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

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

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.

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

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

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

Hình 5.15. PROFINET đáp ứng mọi yêu cầu cho công nghệ tự động hóa
PROFINET là tiêu chuẩn mở cho Ethernet công nghiệp và đáp ứng mọi yêu cầu
cho công nghệ tự động hóa: tự động hóa sản xuất, tự động hóa quy trình hay truyền
động (có hoặc không có chức năng an toàn safety). PROFINET là công nghệ tiêu
biểu trong ngành công nghiệp ô tô, đƣợc sử dụng trong ngành chế tạo và đƣợc chứng
minh những ƣu điểm trong ngành công nghệ thực phẩm, hàng hải và đƣờng sắt, …

225
5.2.1. Giới thiệu chung
PROFINET là chuẩn giao thức mở cho Ethernet công nghiệp (IE) đƣợc phát
triển bởi hiệp hội PROFIBUS & PROFINET quốc tế.
PROFIBUS mang những đặc điểm tính năng của PROFINET nhƣ: giao tiếp I/O
tốc độ cao, an toàn dữ liệu, chức năng chuẩn đoán lỗi, … Và những đặc điểm tính
năng của ETHERNET nhƣ: tốc độ truyền cao 100Mbps hoặc nhanh hơn qua cáp
đồng hoặc cáp quang, có thể truyền không dây (wireless) và cho cấu trúc mạng linh
hoạt. Bởi vậy, PROFINET có những đặc điểm nhƣ:
 Hỗ trợ chức năng truyền thông thời gian thực
 Tích hợp các thiết bị trƣờng (field) vào hệ thống mạng
 Hỗ trợ các thiết bị điều khiển phân tán với nhiều nhà sản xuất thiết bị.
 Điều khiển truyền động đồng bộ
 Quản trị và chuẩn đoán mạng đơn giản với các dịch vụ hỗ trợ của công
nghệ thông tin.
 Bảo mật mạng để chống lại những truy cập và thao tác trái phép trên
đƣờng mạng.
 Truyền thông an toàn với chức năng PROFIsafe

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


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

Hình 5.17. Truyền thông Profinet IO và Proxy PN/BP


Profinet IO chỉ định việc trao đổi dữ liệu giữa các bộ điều khiển IO (IO
controller) với các thiết bị I/O phân tán, cũng nhƣ cài đặt các tham số và chuẩn đoán
thông tin gửi cho bộ điều khiển. Profinet IO đƣợc thiết kế để trao đổi dữ liệu nhanh
với thời gian đáp ứng chỉ vài ms, dựa trên mô hình provider và consumer. Các thiết
bị đƣợc định nghĩa trong Profinet IO là:
 IO controller: là các bộ điều khiển PLC. IO controller thực hiện việc nhận dữ
liệu đầu vào và cung cấp dữ liệu đầu ra cho các thiết bị IO device đƣợc cấu
hình trong mạng.
 IO device: là các thiết bị I/O phân tán đƣợc kết nối tới bộ điều khiển IO
controller thông qua Profinet. IO device thực hiện việc cung cấp dữ liệu đầu
vào và nhận dữ liệu đầu ra từ các bộ IO controller.
 IO Supervisor: là các thiết bị lập trình, máy tính PC, HMI để thực hiện
commissoning hoặc chuẩn đoán.
Trong một mạng Profinet IO thì có ít nhất một IO Controller và có một hoặc
nhiều IO device. Ngoài ra, các thiết bị trƣờng trong segment của Profibus có thể
đƣợc tích hợp vào hệ thống Profinet IO bằng cách sử dụng bộ Proxy PN/PB.
Để thiết lập giao tiếp giữa các bộ điều khiển với các thiết bị IO phải thiết lập
đƣờng dẫn truyền thông. Đƣờng dẫn truyền thông đƣợc thiết lập bởi IO Controller
227
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.4. Mối liên hệ giữa CR và AR


Các kênh truyền thông cho trao đổi dữ liệu theo chu kỳ với IO data CR, trao đổi
dữ liệu không theo chu kỳ với record data CR, và cảnh báo với Alarm CR đƣợc thiết
lập đồng thời.
Có thể sử dụng nhiều bộ IO controller trong hệ thống Profinet. Các bộ điều
khiển IO controller có thể cùng truy cập dữ liệu vào IO device nhƣng phải đƣợc chỉ
định khi khai báo cấu hình (chế độ shared device, shared input).

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

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

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


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

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

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


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

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

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


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

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

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


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

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

232
 Lệnh TSEND_C và TRCV_C không hỗ trợ cho việc truyền/nhận các dữ liệu
Boolean.

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


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

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


Tham số yêu cầu cho
lệnh thực thi: Cho phép
REQ IN BOOL I, Q, M, D, L
xuất dữ liệu khi có xung
cạnh lên
0 = Ngắt kết nối
CONT IN BOOL I, Q, M, D, L 1 = Cho phép và truy
trạng thái kết nối
Dung lƣợng truyền tối đa
0 = Tham số DATA định
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
CONNECT IN/OUT TCON_Param D nối. 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
COM_RST IN/OUT BOOL I, Q, M, D, L
hoạt động lại
Lệnh đƣợc thực thi thành
DONE OUT BOOL Q, M, D, L
công

233
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

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


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

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


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

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

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

235
Ngƣời dùng có thể sử dụng lệnh TCON để thiết lập kết nối truyền thông
TCP/IP giữa Client và server và lệnh TDISCON ngắt kết nối truyền thông.
Bảng 5.5. Tham số của tập lệnh TCON/TDISCON

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
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
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
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh

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


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

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

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

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


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

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


EN_R IN BOOL I, Q, M, D, L Nhận dữ liệu khi = 1

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

238
Tổng số lƣợng dữ liệu
RCVD_LEN OUT UDINT Q, M, D, L
đã nhận

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


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

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


Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
CONN_OUC I, Q, M, D, L Tham số để gán kết nối
ID IN
(WORD) hay hằng số
Tham số địa chỉ để chỉ
NDR OUT BOOL Q, M, D, L
định kết nối với Partner
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và ngƣời
dùng kiểm tra trạng thái
tại Status
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh

239
Pointer thực hiện chỉ định
ADDR_i IN/OUT ANY M, D vùng dữ liệu của CPU
Partner để đọc
RD_I Pointer thực hiện chỉ định
IN/OUT ANY M, D vùng dữ liệu của CPU
Local để nhận.

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


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

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


Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
CONN_OUC I, Q, M, D, L Tham số để gán kết nối
ID IN
(WORD) hay hằng số
Lệnh đƣợc thực thi thành
DONE OUT BOOL Q, M, D, L
công
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và ngƣời
dùng kiểm tra trạng thái
tại Status
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh
Pointer thực hiện chỉ định
ADDR_i IN/OUT ANY M, D
vùng dữ liệu của CPU

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

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

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


Trong phần này, ta sử dụng giao thức S7 Communication để thực hiện truyền
thông giữa hai PLC S7 với nhau.

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

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

- Send area (SD-i): CPU Local thực hiện truyền 10 Byte dữ liệu bắt đầu từ địa
chỉ M100.0

- Done: Chọn vùng nhớ báo cáo thực hiện lệnh hoàn tất

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

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

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

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

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

Việc truyền thông giao tiếp giữa PLC S7 – 1200 với PLC S7 – 300/400/1500
cũng tƣơng tự nếu sử dụng chuẩn truyền thông giao tiếp S7 Communication.
5.3.2. Ví dụ ứng dụng
Dƣới đây sẽ trình bày khai báo và lập trình truyền thông mạng Profinet giữa ba
PLC S7-500 tại phòng thí nghiệm PLC.
Bƣớc 1: Tạo Project mới.

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

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.

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

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


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

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.

247
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:
Program block → add new block → Data block → name =”TRUYEN_DULIEU” →
manual → OK.

Đối với block NHAN_DULIEU ta làm tƣơng tự.


Trong Block
NHAN_DULIEU ta tạo 1 biến static THANHGHI1, Data type int.

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

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

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

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

Tạo 2 block data TRUYEN_DULIEU và NHAN_DULIEU cho PLC_2 tƣơng


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

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

252
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

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

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

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

256

You might also like