Professional Documents
Culture Documents
HÀ NỘI – 2022
1
LỜI NÓI ĐẦU
Năm 2009, Siemens giới thiệu PLC S7 – 1200 cùng với phần mềm lập trình TIA
Portal V10.5 tích hợp sẵn Step 7 Basic, lập trình cho PLC S7 – 1200 và WinCC Basic
lập trình cho dòng màn hình KTP. Năm 2011, hãng Siemen giới thiệu phần mềm TIA
Portal phiên bản V11 – Hệ thống tích hợp tự động hóa toàn diện (Totally Integrated
Automation Portal), nhằm thay thế những phần mềm: Step7 Manager – phần mềm lập
trình cho PLC S7-300/400, TIA Portal V10.5 – phần mềm lập trình cho PLC S7-1200,
WinCC Flexible – phần mềm lập trình giao diện người và máy HMI dành cho các
màn hình của Siemen, WinCC – phần mềm lập trình hệ thống SCADA … bằng một
phần mềm duy nhất. Năm 2013, Siemen giới thiệu PLC S7-1500 cùng với phần mềm
lập trình TIA Portal V13. Cho đến nay, Siemens không ngừng cải thiện nâng cấp phần
mềm và phiên bản mới nhất hiện tại (2022) là TIA Portal V17.
Để cập nhật các kiến thức mới về PLC của hãng Siemen, phần mềm TIA Portal
và phù hợp với nội dung chương trình đào tạo hiện nay cho sinh viên ngành “Công
nghệ Kỹ thuật Điều khiển và Tự động hóa” và ngành “Công nghệ Kỹ thuật điện – điện
tử” của Khoa Điện trường Đại học Kinh tế - Kỹ thuật Công nghiệp; chúng tôi biên
soạn tài liệu học tập “Điều khiển lập trình PLC”. Nội dung tài liệu đề cập đến vấn đề
lập trình ứng dụng cơ bản, phương pháp lập trình, lập trình ứng dụng nâng cao, mạng
truyền thông công nghiệp với PLC S7-1200/1500 trên phần mềm TIA Portal.
Trong quá trình biên soạn, mặc dù các tác giả đã rất cố gắng, nhưng do trình độ
và thời gian có hạn, tài liệu học tập không tránh khỏi những sai sót. Chúng tôi mong
nhận được góp ý và nhận xét của bạn đọc để tài liệu học tập được hoàn thiện hơn
trong lần tái bản sau.
Địa chỉ: Khoa Điện, Trường Đại học Kinh tế Kỹ thuật Công nghiệp, 456 Minh
Khai, Hai Bà Trưng, Hà nội.
Website: khoadien.uneti.edu.vn.
Email: khoadien@uneti.edu.vn
Hà Nội, Ngày 28 tháng 3 năm 2022
2
MỤC LỤC
LỜI NÓI ĐẦU ...................................................................................................... 2
MỤC LỤC............................................................................................................. 3
DANH MỤC HÌNH VẼ ....................................................................................... 7
DANH MỤC BẢNG BIỂU ................................................................................ 10
CHƯƠNG 1. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC ....................................... 13
1.2. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-200 VÀ PLC S7-300 .............. 16
1.2.1. Bộ điều khiển lập trình PLC S7-200 .................................................. 16
1.2.2. Bộ điều khiển lập trình PLC S7-300 .................................................. 22
1.3. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-1200 VÀ S7-1500 ................... 26
1.3.1. Bộ điều khiển lập trình PLC S7-1200................................................ 26
1.3.2. Bộ điều khiển lập trình PLC S7-1500................................................ 32
1.3.3. Vùng nhớ, địa chỉ và kiểu dữ liệu ...................................................... 38
1.3.3.3. Kiểu dữ liệu..................................................................................... 39
1.3.3.4. Vùng nhớ địa chỉ ............................................................................. 40
1.4. PHẦN MỀM LẬP TRÌNH PLC ............................................................... 42
1.4.1. Giới thiệu phần mềm lập trình TIA Portal ......................................... 42
1.4.2. Ngôn ngữ lập trình trên phần mềm TIA PORTAL............................ 42
1.4.3. Cấu trúc chương trình trên TIA PORTAL......................................... 45
1.4.4. Vòng quét chương trình trên TIA PORTAL ..................................... 47
1.4.5. Làm việc với TIA PORTAL và PLC S7-1200/1500 ......................... 48
1.4.5.4. Lập trình trên TIA PORTAL .............................................................. 68
1.5. CÂU HỎI ÔN TẬP................................................................................... 77
CHƯƠNG 2. LẬP TRÌNH ỨNG DỤNG CƠ BẢN VỚI PLC ....................... 79
2.1. LẬP TRÌNH VỚI TẬP LỆNH LOGIC .................................................... 79
2.1.1. Lập trình với Tag và I/O Mapping ..................................................... 79
2.1.2. Làm việc với System memory và clock memory .............................. 83
2.1.3. Lập trình với các tiếp điểm I/O .......................................................... 84
2.1.4. Lập trình với tập lệnh SET, RESET .................................................. 88
2.1.5. Lập trình với các tập lệnh nhận biết cạnh xung ................................. 91
2.2. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐỊNH THỜI ................................... 95
2.2.1. Bộ định thì tạo xung – TP .................................................................. 96
3
2.2.2. Bộ định thì trễ sườn lên không nhớ – TON ....................................... 98
2.2.3. Bộ định thì trễ sườn xuống – TOFF................................................... 99
2.2.4. Bộ định thì trễ sườn lên có nhớ – TONR......................................... 101
2.3. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ
................................................................................................................................ 103
2.3.1. Các phép toán so sánh ...................................................................... 103
2.3.2. Tập lệnh chuyển đổi dữ liệu/giá trị .................................................. 106
2.4. LẬP TRÌNH ỨNG DỤNG VỚI BỘ ĐẾM............................................. 113
2.4.1. Bộ đếm lên CTU .............................................................................. 113
2.4.2. Bộ đếm xuống CTD ......................................................................... 115
2.4.3. Bộ đếm lên xuống CTUD ................................................................ 116
2.5. LẬP TRÌNH VỚI TÍN HIỆU TƯƠNG TỰ - ANALOG ....................... 118
2.5.1. Lập trình xử lý tín hiệu Analog input .............................................. 119
2.5.2. Lập trình xử lý tín hiệu Analog output ............................................ 124
2.6. CÂU HỎI ÔN TẬP VÀ BÀI TẬP ỨNG DỤNG .................................. 125
2.6.1. Câu hỏi ôn tập .................................................................................. 125
2.6.2. Bài tập ứng dụng .............................................................................. 126
CHƯƠNG 3. PHƯƠNG PHÁP LẬP TRÌNH PLC ...................................... 139
3.1. KỸ THUẬT LẬP TRÌNH PLC .............................................................. 139
3.1.1. Vòng quét chương trình ................................................................... 139
3.1.2. Cấu trúc chương trình ...................................................................... 140
3.2. PHƯƠNG PHÁP LẬP TRÌNH PLC ...................................................... 142
3.2.1. Phương pháp bảng trạng thái ........................................................... 142
3.2.2. Phương pháp hàm tác động .............................................................. 153
3.2.3. Phương pháp Grafcet ....................................................................... 164
3.3. KHỐI TỔ CHỨC OB VÀ LẬP TRÌNH KỸ THUẬT ........................... 177
3.3.1. Các khối tổ chức OB ........................................................................ 177
3.3.2. Lập trình kỹ thuật ............................................................................. 181
3.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3 ................................................... 196
3.4.1. Câu hỏi ............................................................................................. 196
3.4.2. Bài tập .............................................................................................. 197
CHƯƠNG 4. LẬP TRÌNH ỨNG DỤNG NÂNG CAO VỚI PLC ............... 200
4.1. LẬP TRÌNH ĐẾM VÀ PHÁT XUNG TỐC ĐỘ CAO .......................... 200
4
4.1.1. Đọc xung tốc độ cao ....................................................................... 200
4.1.2. Phát xung tốc độ cao với PWM ...................................................... 212
c. Hướng dẫn lập trình giải quyết vấn đề ................................................... 218
4.1.3. Điều khiển vị trí với Motion Control ............................................... 221
a. Chế độ Configuration của Axis TO ....................................................... 226
b. Chế độ Commissioning của Axis Technology ...................................... 227
4.1.3.4. Các tập lệnh điều khiển vị trí ............................................................ 228
4.2. Thiết kế hệ thống điều khiển vòng kín với bộ điều khiển PID ............... 246
4.2.1. Các tập lệnh xử lý thuật toán PID .................................................... 248
4.2.1.1 Bộ điều khiển PID_Compact ......................................................... 248
4.2.1.2. Bộ điều khiển PID_3Step ............................................................. 253
4.2.1.3. Bộ điều khiển PID_Temp ............................................................. 257
4.2.2. Thiết kế hệ thống điều khiển vòng kín với hàm PID – Compact .... 259
4.3. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4 ................................................... 270
4.3.1. Câu hỏi ôn tập .................................................................................. 270
4.3.2. Bài tập .............................................................................................. 270
CHƯƠNG 5. MẠNG TRUYỀN THÔNG CÔNG NGHIỆP ........................ 271
5.1. TỔNG QUAN MẠNG TRUYỀN THÔNG CÔNG NGHIỆP ............... 271
5.2. MẠNG TRUYỀN THÔNG ASI............................................................. 272
5.2.1. Tổng quan mạng truyền thông ASI.................................................. 272
5.2.2. Truyền thông và trao đổi dữ liệu ..................................................... 278
5.2.3. Thiết kế mạng truyền thông ASI...................................................... 281
5.3. MẠNG TRUYỀN THÔNG MODBUS .................................................. 285
5.3.1. Tổng quan mạng truyền thông Modbus ........................................... 285
5.3.2. Thiết kế mạng truyền thông Modbus RTU ...................................... 289
5.3.3. Thiết kế mạng truyền thông Modbus TCP ...................................... 312
5.4. MẠNG TRUYỀN THÔNG PROFIBUS ................................................ 327
5.4.1. Tổng quan mạng truyền thông Profibus .......................................... 327
5.4.2. Truyền thông dữ liệu với Profibus DP ............................................. 333
5.4.2.6. Một số DP Slave trong Simatic S7 ............................................... 337
5.4.3. Thiết kế mạng truyền thông Profibus DP ........................................ 338
5.5. MẠNG TRUYỀN THÔNG PROFINET ................................................ 348
5
5.5.1. Tổng quan mạng truyền thông Profinet ........................................... 348
Các cấu hình ứng dụng của Profinet ................................................... 349
5.5.2. Tập lệnh truyền thông Profinet ........................................................ 353
5.5.3. Thiết kế mạng truyền thông Profinet ............................................... 364
5.5.3.1. Truyền thông mạng Profinet PLC S7-1200 .................................. 364
5.6. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5 ................................................... 379
TÀI LIỆU THAM KHẢO ............................................................................... 380
6
DANH MỤC HÌNH VẼ
9
DANH MỤC BẢNG BIỂU
11
Bảng 5.9. Các tham số cấu hình của TCON_IP_v4 .......................................... 315
Bảng 5.10. Protocol và khai báo vùng nhận dữ liệu. ......................................... 353
Bảng 5.11. Protocol và lệnh truyền thông ......................................................... 354
Bảng 5.12. Tham số của tập lệnh TSEND_C .................................................... 356
Bảng 5.13. Tham số của tập lệnh TRCV_C ...................................................... 357
Bảng 5.14. Tham số của tập lệnh TCON/TDISCON ........................................ 359
Bảng 5.15. Tham số của tập lệnh TSEND ......................................................... 359
Bảng 5.16. Tham số của tập lệnh TRCV_C ...................................................... 360
Bảng 5.17. Tham số của tập lệnh GET .............................................................. 362
Bảng 5.18. Tham số của tập lệnh PUT .............................................................. 363
12
CHƯƠNG 1
BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC
Nội dung chương 1 sẽ trình bày cơ bản về cấu trúc phần cứng, đặc điểm của PLC
S7-200, S7-300, S7-1200, S7-1500. Các vấn đề từ việc kết nối giữa máy tính với PLC
S7-1200/1500, cách đặt và reset địa chỉ IP của CPU S7-1200/1500 về chế độ Reset
Factory. Cũng như giới thiệu một số khái niệm cơ bản về mạng Ethernet: IP Address,
Subnet mask, Router, …. Và việc khai báo, cấu hình phần cứng cho PLC S7-
1200/1500 trên phần mềm TIA Portal.
1.1. CẤU TRÚC CHUNG CỦA PLC
Các bộ điều khiển PLC được sản xuất theo dòng sản phẩm. Khi mới xuất xưởng,
chúng chưa có một chương trình cho một ứng dụng nào cả. Tất cả các cổng logic cơ
bản, timer, counter, ... được nhà chế tạo tích hợp trong chúng và được kết nối với nhau
bằng chương trình được viết bởi người dùng cho một nhiệm vụ điều khiển cụ thể nào
đó.
Các bộ điều khiển lớn thì các thành phần chức năng chuyên dụng được lắp thành
các modul riêng. Đối với các bộ điều khiển nhỏ, chúng được tích hợp trong bộ
điều khiển. Các bộ điều khiển nhỏ này có số lượng ngõ vào/ra cho trước cố định.
13
Hình 1.2. Các thành phần trong CPU của PLC
Bộ nhớ chương trình
Bộ nhớ chương trình trong PLC là một bộ nhớ điện tử đặc biệt có thể đọc được.
Nếu sử dụng bộ nhớ đọc-ghi được (RAM), thì nội dung của nó luôn luôn được thay
đổi ví dụ như trong trường hợp vận hành điều khiển. Trong trường hợp điện áp nguồn
bị mất thì nội dung trong RAM có thể vẫn được giữ lại nếu như có sử dụng Pin dự
phòng.
Nếu chương trình điều khiển làm việc ổn định, hợp lý, nó có thể được nạp vào
một bộ nhớ cố định, ví dụ như EPROM, EEPROM. Nội dung chương trình ở EPROM
có thể bị xóa bằng tia cực tím.
Bộ nhớ đọc-ghi RAM (random-access memory)
Bộ nhớ ghi-đọc có 1 số lượng các ô nhớ xác định. Mỗi ô nhớ có 1 dung lượng
nhớ cố định và nó chỉ tiếp nhận 1 lượng thông tin nhất định. Các ô nhớ được ký hiệu
bằng các địa chỉ riêng của nó. Bộ nhớ này chứa các chương trình còn sửa đổi hoặc các
dữ liệu, kết quả tạm thời trong quá trình tính toán, lập trình. Đặc điểm của loại này là
dữ liệu sẽ mất đi khi hệ thống mất điện. RAM được hình dung như một tủ chứa có
nhiều ngăn kéo. Mỗi ngăn kéo được đánh số một địa chỉ và người ta có thể cất vào
hoặc lấy các dữ liệu ra.
Bộ nhớ cố định ROM (read-only memory)
Bộ nhớ cố định (ROM) chứa các thông tin không có khả năng xóa được và không
thể thay đổi được. Các thông tin này do các nhà sản xuất viết ra và không thể thay đổi
được. Chương trình trong bộ nhớ ROM có nhiệm vụ sau:
14
- Điều khiển và kiểm tra các chức năng hoạt động của CPU. Được gọi là hệ điều
hành.
- Dịch ngôn ngữ lập trình thành ngôn ngữ máy.
Một ROM có thể so sánh với một quyển sách. Trong đó nó chứa các thông tin cố
định, không thể thay đổi được và ta chỉ đọc các thông tin đó mà thôi. Đặc điểm của
loại này là dữ liệu vẫn tồn tại khi mất điện.
EPROM (eraseable read-only memory)
EPROM là một bộ nhớ cố định có thể lập trình và xóa được. Nội dung của
EPROM có thể xóa bằng tia cực tím và có thể lập trình lại.
EEPROM (electrically eraseable read-only memory)
EPROM là bộ nhớ cố định có thể lập trình và xóa bằng điện. Mỗi ô nhớ trong
EEPROM cho phép lập trình và xóa bằng điện.
Hệ điều hành
Sau khi bật nguồn cung cấp cho bộ điều khiển, hệ điều hành của nó sẽ đặt các
counter, timer, dữ liệu và bit nhớ với thuộc tính non-retentive (không được nhớ bởi
Pin dự phòng) cũng như ACCU về 0.
Để xử lý chương trình, hệ điều hành đọc từng dòng chương trình từ đầu đến
cuối, tương ứng hệ điều hành thực hiện chương trình theo các câu lệnh.
Bit nhớ (Bit memory)
Các bit memory là các phần tử nhớ, mà hệ điều hành ghi nhớ trạng thái tín hiệu.
Bộ đệm (Proccess Image)
Bộ đệm là một vùng nhớ, mà hệ điều hành ghi nhớ các trạng thái tín hiệu ở các
ngõ vào ra nhị phân.
Accumulator
Accumulator là một bộ nhớ trung gian mà qua nó timer hay counter được nạp
vào hay thực hiện các phép toán số học.
Counter, Timer
Timer và counter cũng là các vùng nhớ, hệ điều hành ghi nhớ các giá trị đếm
trong nó.
Hệ thống Bus
Bộ nhớ chương trình, hệ điều hành và các modul ngoại vi (các ngõ vào và ngõ
ra) được kết nối với PLC thông qua Bus nối. Một Bus bao gồm các dây dẫn mà các dữ
liệu được trao đổi. Hệ điều hành tổ chức việc truyền dữ liệu trên các dây dẫn này.
15
1.2. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-200 VÀ PLC S7-300
1.2.1. Bộ điều khiển lập trình PLC S7-200
PLC S7-200 là thiết bị điều khiển lập trình loại vừa và nhỏ của hãng Siemens
(CHLB Đức) có cấu trúc theo kiểu modul và các modul mở rộng (xem hình 1.3).
Thành phần cơ bản của S7 - 200 là khối xử lý trung tâm (CPU: Central Processing
Unit) bao gồm hai chủng loại: CPU 21x và CPU 22x. Hiện nay, CPU 22x với nhiều
tính năng vượt trội đã thay thế loại CPU21x và hiện đang được sử dụng rất nhiều (loại
CPU21x ngày nay không còn sản xuất).
16
- 2 bộ phát xung tốc độ cao 20 KHz (Pulse outputs).
- Các chế độ ngắt và xử lý ngắt gồm: ngắt truyền thông, ngắt theo sườn lên hoặc
xuống, ngắt thời gian, ngắt của bộ đếm tốc độ cao và ngắt truyền xung.
Bảng 1.1. Đặc điểm các CPU họ 22x
Đặc điểm CPU 221 CPU 222 CPU 224 CPU 224 XP CPU 226
Bộ nhớ chương trình 4096 bytes 4096 bytes 8192 bytes 12288 bytes 16384 bytes
Bộ nhớ dữ liệu 2048 bytes 2048 bytes 8192 bytes 10240 bytes 10240 bytes
Lưu trữ dữ liệu khi 50 giờ 50 giờ 100 giờ 100 giờ 100 giờ
mất nguồn nuôi
Cổng vào ra số 6 In/4 Out 8 In/6 Out 14In/10Out 14 In/10 Out 24 In/16 Out
Cổng vào ra tương tự - - - 2 In/1 Out -
Real - time clock Card Card Tích hợp Tích hợp Tích hợp
17
Hình 1.4. Bộ điều khiển lập trình S7-200 CPU 224
Các đèn báo trên CPU
- SF (Đèn đỏ): Đèn đỏ SF báo hiệu hệ thống bị lỗi. Đèn SF sáng lên khi PLC có
lỗi.
- RUN ( Đèn xanh): cho biết PLC đang ở
chế độ làm việc và thực hiện chương
trình được nạp vào trong bộ nhớ chương
trình của PLC.
- STOP (Đèn vàng): Đèn vàng STOP chỉ
định PLC đang ở chế độ dừng. Dừng
chương trình đang thực hiện lại.
- Ix.x (Đèn xanh): Đèn xanh ở cổng vào
chỉ định trạng thái tức thời của cổng Ix.x.
Đèn này báo hiệu trạng thái của tín hiệu theo giá trị logic của cổng.
- Qy.y (Đèn xanh): Đèn xanh ở cổng ra chỉ định trạng thái tức thời của cổng
Qy.y. Đèn này báo hiệu trạng thái của tín hiệu theo giá trị logic của cổng.
Công tắc chọn chế độ làm việc trên PLC
- RUN: cho phép PLC thực hiện chương trình
trong bộ nhớ, PLC sẽ chuyển từ RUN qua
STOP nếu gặp sự cố.
- STOP: PLC dừng công việc thực hiện
chương trình ngay lập tức. Ở chế độ STOP,
PLC cho phép hiệu chỉnh, nạp, xóa một
chương trình.
18
- TERM: cho phép máy tính lập trình quyết định chế độ làm việc của PLC .
Dùng phần mềm lập trình điều khiển RUN, STOP.
Cổng truyền thông trên PLC
S7-200 sử dụng cổng truyền thông nối tiếp RS485 với phích nối 9 chân để phục
vụ cho việc ghép nối với thiết bị lập trình hoặc với các trạm PLC khác hay với các
màn hình HMI. Tốc độ truyền cho máy lập trình kiểu PPI là 9600 baud. Tốc độ truyền
cung cấp của PLC theo kiểu tự do là từ 300 baud đến 38400 baud.
Chân Giải thích
1 Đất
2 24 VDC
3 Truyền và nhận dữ liệu
4 Không sử dụng
5 Đất
6 5 VDC (điện trở trong 100Ω)
7 24 VDC (120mA tối đa)
8 Truyền và nhận dữ liệu
9 Không sử dụng
Hình 1.5. Cổng truyền thông của PLC S7-200
Ghép nối S7-200 với máy tính PC qua cổng RS-232 cần có cáp nối PC/PPI với
bộ chuyển đổi RS232/RS485, và qua cổng USB ta có cáp USB/PPI.
19
Pin nuôi và Card nhớ
S7-200 cung cấp nhiều biện pháp đảm bảo cho chương trình người dùng, dữ liệu
chương trình và cấu hình dữ liệu được duy trì sau:
Một tụ điện với điện dung lớn cho phép lưu trữ bộ nhớ RAM sau khi bị mất
nguồn điện cung cấp. Tùy theo loại CPU mà thời gian lưu trữ có thể kéo dài nhiều
ngày. Chẳng hạn ở CPU 224 là khoảng 100 giờ.
Nguồn Pin có thể được sử dụng để mở rộng thời gian lưu trữ cho các dữ liệu
trong RAM, có thể lên đến 200 ngày kể từ khi mất nguồn điện. Nguồn của Pin sẽ được
lấy sau khi tụ điện đã xả hết.
Card nhớ: Được sử dụng để lưu trữ chương trình. Chương trình chứa trong card
nhớ bao gồm: program block, data block, system block, công thức (recipes), dữ liệu
đo (data logs), và các giá trị cưỡng bức (force values).
Biến trở chỉnh giá trị analog
Hai biến trở này được sử dụng như hai ngõ vào analog cho phép điều chỉnh các
biến cần phải thay đổi và sử dụng trong chương trình.
Các modul mở rộng
Trên các CPU đã tích hợp sẵn một số các ngõ vào và ngõ ra số, chẳng hạn như
CPU 224 có sẵn 16 ngõ vào và 14 ngõ ra. Tuy nhiên trong thực tế, xuất phát từ yêu
cầu điều khiển như: cần nhiều hơn số ngõ vào/ra có sẵn, có sử dụng tín hiệu analog
hay có các yêu cầu về truyền thông, nối mạng các PLC…mà ta phải gắn thêm vào
CPU các khối mở rộng có các chức năng khác nhau.
Các modul mở rộng được ghép nối bên phải của CPU, làm thành một móc xích
như hình 1.7. Khả năng nắp đặt module mở rộng với từng loại CPU như hình 1.8, tối
đa là 7 modul với CPU 224, CPU 224XP, CPU 224XPsi, CPU 226.
20
Hình 1.8. Khả năng mở rộng modul của các loại CPU
Các modul có thể ra các cổng vào ra số, vào ra tương tự, modul chức năng chuyên
dụng, modul truyền thông. Khả năng truyền thông của S7-200 được cho như hình 1.9.
21
ví dụ về cách đặt địa chỉ cho các modul mở rộng trên CPU 224XP do tài liệu của hãng
cung cấp dưới đây.
22
Module CPU
Module CPU là loại module có chứa bộ vi xử lý, hệ điều hành, bộ nhớ, các bộ
thời gian, bộ đếm, cổng truyền thông… và có thể còn có một vài cổng vào ra (cổng
vào ra onboard) . Có nhiều loại CPU khác nhau, đặt tên theo bộ vi xử lý: module CPU
312, module CPU 314, module CPU 315, … Những module CPU cùng sử dụng một
loại vi sử lý, nhưng khác nhau về cổng vào ra onboard cũng như có thêm các hàm đặc
biệt sẽ được phân biệt với nhau trong tên gọi bằng cách thêm cụm chữ cái IFM
(Integrated Function Module). Ví dụ module CPU 312 IFM, CPU 314 IFM …
Module CPU có hai cổng truyền thông, trong đó cổng truyền thông thứ hai có
chức năng chính là phục vụ việc nối mạng phân tán. Tất nhiên kèm theo cổng truyền
thông thứ hai này là những phần mềm tiện dụng thích hợp cũng đã được cài sẵn trong
hệ điều hành. Các loại CPU này phân biệt với các CPU khác bằng cách thêm cụm từ
DP (Distributed Port).Ví dụ module CPU 315 –DP.
Mô tả module CPU:
23
- DC5V = Báo nguồn 5 V DC.
- FRCE = FORCE Báo lỗi chức năng một trong các I/O
- RUN = Nhấp nháy khi CPU khởi động, ổn định khi CPU làm việc.
- STOP = Báo ổn định khi dừng , chớp khi yêu cầu reset, chớp nhanh khi
đang reset.
Module PS
Module PS ( Power supply) : Module nguồn nuôi . Có 3 loại 2A, 5A và 10A .
Module SM
Module SM (Signal mudule) : module mở rộng cổng tín hiệu vào ra, bao gồm 5
loại chính:
1) DI (Digital input) : Module mở rộng các cổng vào số. Số các cổng vào số mở
rộng có thể là 8, 16 hoặc 32 tùy thuộc vào từng loại module .
2) DO (Digital output) : Module mở rộng các cổng ra số . Số các cổng ra số mở
rộng có thể là 8, 16 hoặc 32 tùy thuộc vào từng loại module .
3) DI/DO : Module mở rộng các cổng vào ra số . Số các cổng vào ra số mở rộng
có thể là 8 vào/8 ra hoặc 16 vào/16 ra tùy thuộc vào từng loại module .
4) AI (Analog input) : Module mở rộng các cổng vào tương tự. Về bản chất chúng
chính là bộ chuyển đổi tương tự số 12 bits (AD), tức là mỗi tín hiệu tương tự
được chuyển thành tín hiệu số (nguyên) có độ dài 12 bits. Số cổng vào tương tự
có thể là 2, 4 hoặc 8 tùy từng module.
5) AO (Analog output) : Module mở rộng các cổng ra tương tự . Chúng chính là
bộ chuyển đổi số tương tự (DA. Số các cổng ra tương tự có thể là 2 hoặc 4 tùy
từng module.
6) AI/AO : Module mở rộng các cổng vào ra tương tự . Số các cổng vào ra tương
tự có thể là 4 vào/2 ra, hoặc 4 vào/4 ra tùy từng loại module.
Modul IM
IM (Interface module ): Module ghép nối các racks. Đây là module chuyên dụng
có nhiệm vụ nối từng nhóm các module mở rộng với nhau thành một khối và được
quản lý chung bởi một module CPU.
Bộ IMS (send) là khối gửi , bộ IMR (receive) là khối nhận
24
Hình 1.12. Chức năng module IM
Cấu hình 2 chồng với IM 365 tối đa 1m (không dùng nguồn thêm, không nối
CP), nhiều chồng với IM 360/IM361 tối đa 10m (nếu cần, nguồn cung cấp gắn thêm ở
giá mở rộng ).
Module FM
FM ( Function module ) : Module có chức năng điều khiển riêng, ví dụ như
module điều khiển động cơ bước , module điều khiển động cơ servo, module PID,
module điều khiển vòng kín, bộ đếm tốc độ cao ,…
Controller Modules: Các module chức năng điều khiển.
M7 Application Modules: Các modules chức năng ứng dụng cho M7-300.
CNC’s: Các module chức năng cho điều khiển số.
Counter modules: Các module counter.
Positioning Modules: Các module chức năng vị trí.
Module CP
CP ( Communication module ) : Module phục vụ truyền thông trong mạng giữa
các PLC với nhau hoặc giữa PLC và máy tính .
AS-Interface: Các module truyền thông kết nối giao diện AS-i của S7-300.
Industrial Ethernet: Các module truyền thông cho Industrial Ethernet của S7-
300.
PROFIBUS: Các module dành cho Profibus của S7-300.
Point –to- Point: Các module truyền thông PtP của S7-300.
25
1.3. BỘ ĐIỀU KHIỂN LẬP TRÌNH PLC S7-1200 VÀ S7-1500
1.3.1. Bộ điều khiển lập trình PLC S7-1200
Bộ điều khiển PLC S7 – 1200 được sử dụng với sự linh hoạt và khả năng mở
rộng phù hợp đối với hệ thống tự động hóa nhỏ và vừa tương ứng với người dùng cần.
Thiết kế nhỏ gọn, cấu hình linh động, hỗ trợ mạnh mẽ về tập lệnh đã làm cho PLC S7-
1200 trở thành một giải pháp hoàn hảo trong việc điều khiển, chọn lựa phù hợp đối
với nhiều ứng dụng khác nhau.
Để có thể làm rõ hơn vấn đề chúng ta muốn nói tới, ta sử dụng hình 1.13 để
minh họa chi tiết về vị trí, vài trò của PLC S7 – 1200 được Siemens đưa ra.
Hình 1.13. Vị trí của PLC S7-1200 theo ứng dụng của các loại PLC S7.
CPU của S7 – 1200 được kết hợp với một vi xử lý, một bộ nguồn tích hợp, các
tín hiệu đầu vào/ra, thiết kế theo nền tảng Profinet, các bộ đếm/phát xung tốc độ cao
tích hợp trên thân, điều khiển vị trí (motion control), và ngõ vào Analog đã làm cho
PLC S7 – 1200 trở thành bộ điều khiển nhỏ gọn nhưng mạnh mẽ. Sau khi download
chương trình xuống CPU vẫn lưu giữ những logic cần thiết để theo dõi và kiểm soát
các thiết bị/thông tin trong ứng dụng của người lập trình. CPU giám sát ngõ vào và
những thay đổi của ngõ ra theo logic trong chương trình người dùng có thể bao gồm
các phép toán logic của đại số Boolean, những bộ đếm, bộ định thì, các phép toán
phức tạp, những giao tiếp truyền thông với những thiết bị thông minh khác.
PLC S7 – 1200 được tích hợp sẵn 1 cổng Profinet để truyền thông mạng
Profinet. Ngoài ra, PLC S7 – 1200 có thể truyền thông Profibus, RS485 hoặc RS232
thông qua các module mở rộng.
26
Hình 1.14. Hình ảnh PLC S7-1200
Hiện nay, PLC S7-1200 có nhiều dòng CPU khác nhau như: CPU 1211C, CPU
1212C, CPU 1214C, CPU 1215C, CPU 1217C và đồng thời cho người dùng có nhiều
sự lựa chọn với các nguồn điện áp AC/DC, tín hiệu đầu vào/ra Relay/DC…
Tuy nhiên, tùy ứng dụng và chương trình mà người dùng lựa chọn CPU cho phù
hợp với cấu hình hệ thống và giá thành để làm cho hệ thống tốt nhưng kinh tế thấp.
Bảng 1.2. Thông tin về CPU 1211C/1212C
27
30/120 KHz - I0.6 I0.7
28
Tổng cộng Lên tới 4
Hình 1.15. Ví dụ cấu hình phần cứng PLC S7-1200 trên phần mềm TIA PORTAL
Module xử lý trung tâm CPU
Module xử lý trung tâm CPU chứa vi xử lý, hệ điều hành, bộ nhớ, các bộ định
thì, bộ đếm, cổng truyền thông Profinet… module lưu trữ chương trình người dùng
trong bộ nhớ của nó. Ngoài ra, module CPU có thể tích hợp một vài cổng vào/ra số,
analog tùy thuộc vào mã hàng (order number).
29
Cổng profinet tích hợp cho phép CPU có thể kết nối với HMI, máy tính lập trình,
hay những PLC S7 thông qua PROFINET.
Module mở rộng tín hiệu SM
Các module mở rộng tín hiệu SM có thể là module mở rộng tín hiệu vào/ra số,
vào/ra Analog và được gắn bên phải CPU. Với CPU 1214 có thể quản lý được tối đa 8
module SM, việc kết nối các module này minh họa như hình dưới đây.
30
Module xử lý truyền thông
Module truyền thông được gắn trái CPU và được ký hiệu là CM1241 hoặc CP
124x. Tối đa chỉ có thể gắn được 3 module mở rộng về truyền thông.
Module xử lý truyền thông CM 1241
Module truyền thông CM 1241 hỗ trợ các protocol theo các tiêu chuẩn như:
Truyền thông ASCII: được sử dụng để giao tiếp với những hệ thống của bên thứ
3 (third – party systems) để truyền những giao thức protocol đơn giản như kiểm tra
các ký tự đầu và cuối hoặc kiểm tra các thông số của khối dữ liêu…
Truyền thông Modbus: được sử dụng truyền thông theo tiêu chuẩn Modbus RTU
Modbus Master: có thể giao thức với PLC S7 là Master
Modbus Slave: có thể giao thức với PLC S7 là Slave; và không cho phép trao đổi
dữ liệu giữa slave với slave trong truyền thông.
Truyền thông USS Drive: lệnh cho phép kết nối USS với Drive. Các Drive có
thể trao đổi dữ liệu theo chuẩn RS485, trong truyền thông cho phép điều khiển Drive
cũng như đọc và ghi các thông số cần thiết.
Truyền thông Point – to – point: kết nối đa điểm được sử dụng theo truyền thông
trao đổi dữ liệu nối tiếp. Truyền thông đa điểm được ứng dụng trong hệ thống tự động
hóa Simatic S7 và những hệ thống tự động hóa khác để liên kết với máy in, điều khiển
robot, máy scan, đọc mã vạch…
Truyền thông Profibus: được sử dụng với tiêu chuẩn profibus DP hỗ trợ DPV1,
có thể sử dụng làm Master hoặc slave tùy thuộc vào ứng dụng và module sử dụng.
Module hỗ trợ AS – I Master.
Module xử lý truyền thông CP124x
Module xử lý truyền thông CP 124x hỗ trợ những chuẩn truyền thông về
GPRS/GM, Messages/Email, DNP3, SNMP, TeleService…
Module CP1242 – 7: Hỗ trợ kết nối PPLC S7 – 1200 với GPRS/GSM
Module CP1243 – 1: Hỗ trợ kết nối PLC S7 – 1200 với Messages/Email, DNP3,
SNMP, Redundancy…
Module nguồn cung cấp Power module
Module nguồn Power module cung cấp nguồn hoạt động cho các module phần
cứng kết nối với CPU. Tên viết tắt module nguồn của S7 – 1200 là PM 1207
Module nguồn PM 1207 yêu cầu áp cung cấp đầu vào là 120/230VAC và ngõ ra
là 24 VDC/2.5A được thiết kế riêng dàng cho PLC S7 – 1200 và không cần khai báo
trong cấu hình phần cứng.
Signal board
31
Signal board được cắm phía mặt trên thân CPU để có thể mở rộng thêm DI/DO,
AI/AO, Pin backup (battery board) dữ liệu về thời gian thực, mở rộng truyền thông
với RS485 (Communications boards).
32
Hình 1.16. Hình ảnh minh họa trạm PLC S7-1500
Hình 1.17. Vị trí của PLC S7-1500 theo ứng dụng của các loại PLC S7.
SIMATIC S7-1500 được tích hợp sẵn một cổng Profinet để truyền thông mạng
Profinet. Ngoài ra, SIMATIC S7-1500 có thể truyền thông Profibus, RS485, RS232,
Modbus RTU/TCP, … thông qua các module mở rộng.
Một số dòng sản phẩm PLC S7-1500 hiện nay
Dòng sản phẩm PLC S7-1500 cho phép người sử dụng có nhiều sự lựa chọn cả
về mặt giá thành và tính năng phù hợp với yêu cầu hệ thống và mong muốn của khách
hàng.
Standard CPU gồm có CPU 1511-1 PN đến CPU 1518-4 PN/DP đáp ứng từ cỡ
trung bình đến lớn.
Dòng Standard CPU từ CPU 1511-1 PN đến CPU 1515-2 PN được sử dụng
cho các ứng dụng cỡ nhỏ và vừa.
33
Bảng 1.4. So sánh tính năng giữa các CPU Standard
34
Compact CPU: Được tích hợp I/O sẵn trên CPU để xử lý tín hiệu số, Analog
hoặc đếm/phát xung tốc độ cao. Tiết kiệm không gian, đáp ứng cho ứng dụng nhỏ và
vừa, phù hợp cho những nhà chế tạo máy.
Bảng 1.6. So sánh tính năng giữa các CPU Compact
36
Hình 1.19. Minh họa Module CPU S7-1500
Cổng Profinet tích hợp cho phép CPU có thể kết nối với HMI, máy tính lập trình,
hay những PLC S7 thông qua PROFINET.
Trên CPU có màn hình dùng để hiển thị các thông tin của CPU, trạng thái CPU,
và các trạng thái lỗi phần cứng, …
Module mở rộng
Các module mở rộng của PLC S7-1500 cũng tương tự như PLC S7-1200, dưới
đây chỉ trình bày ngắn gọn về các module mở rộng của PLC S7-1500.
Với PLC S7-1500 có thể ghép nối được tối đa 32 module mở rộng. Các module
mở rộng của PLC S7-1500 bao gồm các loại module sau:
37
1.3.3. Vùng nhớ, địa chỉ và kiểu dữ liệu
1.3.3.1. Vùng nhớ chương trình
CPU hỗ trợ những vùng nhớ để lưu trữ chương trình người dùng, dữ liệu và cấu
hình hệ thống như sau:
Load memory: không mất đi (non – volatile storage) và được sử dụng để lưu trữ
chương trình người dùng, dữ liệu và cấu hình PLC. Khi một project được download
xuống PLC, nó được lưu đầu tiên tại vùng nhớ Load memory. Vùng nhớ này nằm
trong thẻ nhớ MMC (nếu có) hoặc nằm trên CPU. Người dùng có thể tăng dung lượng
vùng nhớ bằng thẻ MMC.
Work memory: vùng nhớ sẽ bị mất dữ liệu khi CPU mất điện. Trong quá trình
hoạt động, CPU có thể copy một số phần, chức năng của project từ vùng nhớ Load
memory sang vùng nhớ Work memory để thực hiện.
Retentive memory: là vùng nhớ được sử dụng để lưu trữ lại những dữ liệu cần
thiết/mong muốn khi CPU mất điện hoàn toàn.
1.3.3.2. Thẻ nhớ MMC
Một lựa chọn khác để lưu trữ chương trình người dùng giống như những vùng
nhứo được nói ở trên đó là sử dụng Simatic MMC để lưu trữ chương trình người dùng
hoặc transfer chương trình người dùng. Nếu người sử dụng thẻ nhớ MMC, CPU sẽ
chạy chương trình từ thẻ nhớ chứ không phải trên vùng nhớ của CPU.
Thẻ nhớ Simatic MMC được sử dụng như một thẻ nhớ chương trình một thẻ nhớ
chương trình, một thẻ transfer, lưu dữ liệu data log hoặc sử dụng để nâng cao
firmware cho CPU.
Khi muốn download chương trình xuống nhiều CPU gióng nhau và cùng một
project. Việc sử dụng phần mềm làm cho tốn kém thời gian…thì việc sử dụng Simatic
38
MMC với chức năng là thẻ Transfer giúp cho hiệu quả hơn rất nhiều. Người dùng chỉ
cắm thẻ MMC và đợi Transfer xong và lấy thẻ nhớ ra.
Dùng thẻ nhớ với chức năng thẻ nhớ chương trình thì tất cả những chức năng
CPU hoạt động sẽ được load từ thẻ nhớ.
Ngoài ra, thẻ MMC cũng có thể sử dụng để lưu trữ thông tin về data log, mở
rộng vùng nhớ lưu trữ cho Web server, hoặc có thể sử dụng để nâng firmware cho
CPU (ví dụ từ V1.0 lê V2.0, V2.0 lên V2.2…)
1.3.3.3. Kiểu dữ liệu
Kiểu dữ liệu hỗ trợ cho PLC S7–1200/S7-1500 sẽ được giải thích cách định dạng
dữ liệu và kích thước dữ liệu thông qua bảng 1.7.
Bảng 1.7. Kiểu dữ liệu của PLC S7–1200/S7-1500
39
Hours (USInt): 0 → 23
Seconds (USInt): 0 → 59
Nanoseconds (UDInt): 0 → 999999999
Time là kiểu dữ liệu 32 bit được miêu tả theo chuẩn IEC Time
tầm giá trị lên đến T#24D20H31M23S647MS
TOD (Time of day) là kiểu dữ liệu 32 bit có tầm giá trị
TOD#0:0:0.0 đến TOD#23:59:59.999
Char và String Char là kiểu dữ liệu ký tự với 8 Bit
String là kiểu dữ liệu chuỗi lên tới 254 char
Array và Structure Array là kiểu dữ liệu mảng bao gồm nhiều thành phần đơn
giống nhau về kiểu dữ liệu. Mảng có thể tạo trong giao diện
interface của OB, FB, FC, DB.
Struct là kiểu dữ liệu định dạng theo cấu trúc thành phần có
thể bao gồm nhiều kiểu dữ liệu khác nhau
PLC data types PLC Data types hay còn gọi là UDT là dạng dữ liệu cấu trúc
có thể định nghĩa vởi người dùng.
Pointer Pointer hay con trỏ sử dụng để định địa chỉ gián tiếp
BCD(*) BCD16 có giá trị từ -999 → 999
BCD32 có giá trị -9999999 → 999999
Ghi chú: (*)BCD không phải kiểu dữ liệu, tuy nhiên được đưa vào vì liên quan tới
việc chuyển đổi dữ liệu sau này.
1.3.3.4. Vùng nhớ địa chỉ
Step 7 V1x của TIA Portal hỗ trợ cho việc lập trình bằng Tag nhớ (Symbolic).
Người dùng có thể tạo Tag nhớ hay symbolic (tên gợi nhớ) cho các địa chỉ dữ liệu cần
dùng, không phân biệt vùng nhớ toàn cục (global) hay vùng nhớ cục bộ (local). Để
truy xuất các Tag nhớ trong chương trình cần gọi tên của Tag cho các tham số của
lệnh.
Để hiểu rõ hơn về cấu trúc CPU và địa chỉ vùng nhớ, chúng ta sẽ đi vào tìm hiểu
sâu hơn về địa chỉ trực tiếp (absolute) là nền tảng cho việc sử dụng các Tag nhớ của
PLC.
Vùng nhớ toàn cục – Global memory: CPU cung cấp những vùng nhớ toàn cục
như: I (input), Q (output), vùng nhớ nội (memory). Những vùng nhớ toàn cục có thể
được truy xuất ở tất cả các khối.
40
Khối dữ liệu DB: Cũng là vùng nhớ toàn cục. Ngoài ra, vùng nhớ DB nếu được
sử dụng với chức năng Instance DB để lưu trữ chỉ định cho FB và cấu trúc bởi các
tham số của FB.
Vùng nhớ tạm – Temp (hay vùng nhớ Local): vùng dữ liệu cục bộ được sử dụng
trong các khối chương trình OB, FC, FB. Vùng nhớ L được sử dụng cho các biến tạm
(Temp) và trao đổi dữ liệu của biến hình thức với những khối chương trình gọi nó.
Nội dung của một khối dữ liệu trong miền nhớ này sẽ bị xóa khi kết thúc chương
trình.
Vùng nhớ I, Q có thể truy xuất dưới dạng process image. Để có thể truy xuất
trực tiếp và ngay lập tức với ngõ vào/ra vật lý, có thể thêm “:P”. Ví dụ như: I0.0:P,
Q0.0:P…
Chế độ Forcing chỉ có thể ứng dụng cho các tín hiệu vào/ra vật lý (Ix.y:P,
Qx.y:P)
Bảng 1.8. Bảng phân loại vùng nhớ PLC S7 – 1200
41
1.4. PHẦN MỀM LẬP TRÌNH PLC
PLC S7-1200/1500 đã dần thay thể cho PLC S7-200/300, dưới đây chỉ giới hạn
trình bày về phần mềm lập trình cho PLC S7-1200/1500 trên phần mềm TIA Portal.
1.4.1. Giới thiệu phần mềm lập trình TIA Portal
Năm 2009, Siemens giới thiệu PLC S7 – 1200 cùng với phần mềm lập trình TIA
Portal V10.5 tích hợp sẵn Step 7 Basic, lập trình cho PLC S7 – 1200 và WinCC Basic
lập trình cho dòng màn hình KTP.
Năm 2011, hãng Siemen giới thiệu phần mềm TIA Portal phiên bản V11 – Hệ
thống tích hợp tự động hóa toàn diện (Totally Integrated Automation Portal), nhằm
thay thế những phần mềm: Step7 Manager – phần mềm lập trình cho PLC S7-
300/400, TIA Portal V10.5 – phần mềm lập trình cho PLC S7-1200, WinCC Flexible
– phần mềm lập trình giao diện người và máy HMI dành cho các màn hình của
Siemen, WinCC – phần mềm lập trình hệ thống SCADA … bằng một phần mềm duy
nhất.
42
FBD – Function Block Diagram: Đây là ngôn ngữ lập trình dựa theo đại số
Boolean.
SCL – Structure Language Control: Đây là ngôn ngữ lập trình theo dạng text,
và là ngôn ngữ trình cấp cao sử dụng dựa trên nền Pascal phát triển. Ngôn ngữ lập
trình SCL có thể gọi là ngôn ngữ hướng đối tượng cho PLC, vì nó gần gũi với tư duy
người dùng.
43
Khi viết code cho một khối hàm nào đó (OB, FB, FC) thì người dùng có thể sử
dụng 1 trong 3 ngôn ngữ trên để có thể lập trình.
Ngôn ngữ lập trình cho PLC S7-1500
Với dòng sản phẩm PLC S7 – 1500, Siemens phát triển hỗ trợ 3 ngôn ngữ lập
trình cơ bản là: LAD, FBD, IL; và 2 ngôn ngữ lập trình cấp cao là: SCL, S7-Graph.
IL – (instruction list): Đây là dạng ngôn ngữ lập trình thông thường của máy
tính, một chương trình được ghép bởi nhiều câu lệnh theo một thuật toán nhất định
S7-Graph ứng dụng cho những quá trình tuần tự, tình bày dưới dạng đồ thị với
các chuỗi tuần tự, làm cho việc bảo trì và chỉnh sửa chương trình trở lên dễ dàng hơn,
có hỗ trợ các chức năng chuẩn đoán lỗi quá trình khi xảy ra. Hay nói cách khác đây là
ngôn ngữ lập trình theo phương pháp tổng hợp mạch trình tự Grafcet.
44
1.4.3. Cấu trúc chương trình trên TIA PORTAL
Chương trình trong S7-1200/1500 được lưu trong bộ nhớ của PLC ở vùng dành
riêng cho chương trình và có thể được lập trình với hai dạng cấu trúc khác nhau.
Lập trình tuyến tính: Toàn bộ chương trình nằm trong một khối của bộ nhớ. Loại
hình thức cấu trúc tuyến tính này phù hợp với những bài toán tự động nhỏ, không
phức tạp. Khối được chọn phải là khối OB1, là khối mà PLC luôn quét và thực hiện
các lệnh trong đó thường xuyên, từ lệnh đầu tiên đến lệnh cuối cùng và quay lại.
Lập trình có cấu trúc: Chương trình được chia thành những phần nhỏ và mỗi
phần thực thi những nhiệm vụ chuyên biệt riêng của nó, từng phần này nằm trong
những khối chương trình khác nhau. Loại hình thức cấu trúc này phù hợp với những
bài toán điều khiển nhiều nhiệm vụ và phức tạp. Có 4 loại khối cơ bản sau:
OB (Organization Block): là khối tổ chức và quản lý chương trình điều khiển.
Có nhiều khối OB với những chức năng khác nhau, chúng được phân biệt với
nhau bằng một số nguyên đi sau nhóm ký tự OB. Ví dụ: OB1, OB35, OB40, …
FC (Function): là chương trình với những chức năng riêng giống như chương
trình con và hàm chức năng. Một chương trình ứng dụng có thể có nhiều FC và
các FC này được phân biệt với nhau bằng một số nguyên sau nhóm ký tự FC.
Ví dụ: FC1, FC2, FC3, …
FB (Function Block): là loại khối FC đặc biệt có khả năng trao đổi một lượng
dữ liệu lớn với các khối chương trình khác. Các dữ liệu này phải được tổ chức
thành khối dữ liệu riêng có tên gọi là Data block. Một chương trình ứng dụng
có thể có nhiều khối FB và các khối FB này được phân biệt với nhau bằng một
số nguyên sau nhóm ký tự FB. Ví dụ: FB1, FB2, FB3, …
45
DB (Data Block): chứa các dữ liệu cần thiết để thực hiện chương trình. Các
tham số của khối do người dùng tự đặt. Một chương trình ứng dụng có thể có
nhiều khối DB và các khối DB này được phân biệt với nhau bằng một số
nguyên sau nhóm ký tự DB. Ví dụ: DB1, DB2, DB3, … Có hai loại của khối
dữ liệu DB :
+ Global DB nơi mà tất cả các khối OB, FB và FC có thể đọc được dữ liệu lưu
trữ, hoặc có thể tự mình ghi dữ liệu vào DB.
+ Instance DB được gán cho một khối FB nhất định.
Chương trình trong các khối được liên kết với nhau bằng các lệnh gọi khối,
chuyển khối. Xem những phần chương trình trong các khối như là các chương trình
con thì PLC S7 - 1200/1500 cho phép gọi chương trình con lồng nhau, tức là chương
trình con này gọi một chương trình con khác. Số các lệnh gọi lồng nhau phụ thuộc vào
từng loại CPU; cụ thể với PLC S7-1200 có thể gọi 16 khối từ OB khởi động và thêm
6 khối từ các khối OB ngắt, với PLC S7-1500 có thể gọi 24 khối chương trình.
Khi một chương trình khối FB được gọi, một Data Block (DB) được gán với
instance DB. Dữ liệu trong Instance DB sau đó truy cập vào các biến của khối FB.
Các khu vực bộ nhớ khác nhau đã được gán cho một FB nếu nó được gọi ra nhiều lần.
Các khối tổ chức OB có thể gọi các chương trình FB, FC. Các khối OB sẽ không
gọi được nhau, cũng như các gọi FB/FC cũng không thể gọi OB. Hình 1.22 minh họa
cho cấu trúc chương trình cho PLC S7-1200/1500, mối tương quan giữa các khối và
chu trình thực hiện chương trình. Dưới đây chỉ trình bày các khái niệm cơ bản, chi tiết
về các khối tổ chức và lập trình kỹ thuật được đề cập trong chương 3.
46
Startup routine
ON (Run)
OB 100 Warm
restart ...
Cyclic program
processing Interrupt-driven
Cycle program processing
OB 1
OB 10 ... 17
OB 56
Interruption
Interrupt ...
48
nhất trong cùng một cấp mạng. Nói đơn giản hơn, IP là một địa chỉ của một thiết bị
khi tham gia vào mạng nhằm giúp cho các thiết bị khác có thể vận chuyển thông tin
cho nhau một cách chính xác, tránh thất lạc thông tin. Có thể coi địa chỉ IP giống như
địa chỉ nhà của bạn để nhân viên bưu điện có thể đưa thư đúng cho bạn chứ không
phải một người nào khác. Hiện nay, đối với các thiết bị mạng đang sử dụng có IPv4 và
IPv6
Địa chỉ IPv4 chiếm 32 bit và được định nghĩa bởi 4 con số thập phân có giá trị
nằm trong tầm 0 đến 255, cách nhau bởi một dấu chấm. Ví dụ như:
192.168.0.10.
Địa chỉ IPv6 chiếm 128 bit để mã hóa dữ liệu, nó cho phép sử dụng nhiều địa
chỉ hơn so với IPv4.
Tuy nhiên vì lý do tương thích với các thiết bị cũ, nên hầu hết vẫn sử dụng địa
chỉ IPv4.
Subnet mask
Subnet mask hay còn gọi là subnet là sự phân chia logic địa chỉ TCP/IP thành
các mạnh con để dễ dàng quản lý hơn.
Thường thì mỗi tổ chức, công ty hay quốc gia được InterNIC cấp cho một số địa
chỉ IP nhất định với các máy tính đặt ở các nơi khác nhau. Để quản lý mạng hiệu quả,
người ta phân chia mạng của tổ chức này thành các mạng con và kết nối với nhau
thông qua các router. Những mạng con này được gọi là Subnet.
Một điều quan trọng là mỗi Subnet vẫn là một phần của mạng nhưng nó cũng
cần được phân biệt với các Subnet khác bằng cách thêm vào một định danh nào đó.
Định danh này được gọi là Subnet address. Để phân chia thành các Subnet, trước hết
cần định rõ số lượng subnet của mỗi mạng và số thiết bị trong mỗi subnet, trong khi
đó router trên mỗi subnet chỉ cần biết các thông tin địa chỉ của mỗi máy trên một
subnet mà nó quản lý.
Một địa chỉ subnet mask được xác định tương ứng cho một địa chỉ IP. Subnet
mask chiếm 32 bit. Với subnet mask, một nút mạng sẽ được xem như là một mạng
con.
Phân chia lớp mạng với IP và Subnet mask
Một địa chỉ IP bao gồm 2 thành phần là Net IP và Host ID
49
Các lớp ID bao gồm:
Lớp A: lên tới 16 triệu host với địa chỉ IP: 0.x.x.x – 127.x.x.x với subnet mask là
255.0.0.0
Lớp B: lên tới 65 nghìn host với địa chỉ IP: 128.0.x.x – 191.255.x.x với subnet
mask là 255.255.0.0
Lớp C: lên tới 254 host với địa chỉ IP: 192.0.0.x – 233.255.255.x với subnet
mask là 255.255.255.0
Các lớp D, E không phục vụ cho việc đánh địa chỉ các Host nên không trình bày
ở đây.
Gateway (Router)
Router hay còn gọi là thiết bị định tuyến hoặc bộ định tiến, là một thiết bị mạng
dùng để chuyển các gói dữ liệu qua một liên mạng và đến các đầu cuối thông qua một
tiến trình được gọi là định tuyến. Định tuyến xảy ra ở tầng 3 (network) của mô hình
OSI.
Tầm giá trị của Gateway (Router): Địa chỉ IP bao gồm 4 con số thập phân có giá
trị nằm trong tầm 0 đến 255, cách nhau bởi một dấu châm. Ví dụ như 192.168.0.1
Mối quan hệ giữa địa chỉ IP, router và subnet
Địa chỉ IP và địa chỉ của router chỉ khác nhau tại 1 vị trí số “0” nằm trong
subnet.
Ví dụ: Địa chỉ cho Subnet là 255.255.255.0, địa chỉ IP là 141.30.0.5 và địa chỉ
router là 141.30.128.1
Địa chỉ IP và địa chỉ router cần phải có một giá trị duy nhất khác nhau trong số
thứ 4 của số thập phân. Tuy nhiên, trong ví dụ trên thì vị trí số 3 đã khác. Do đó, ví dụ
trên cần phải sửa lại theo một trong những cách sau (chỉ chọn 2 trong 3 cách)
Thay đổi địa chỉ IP: 141.30.128.5
Hoặc thay đổi địa chỉ Router: 141.30.0.1
50
1.4.5.2. Kết nối PLC S7-1200/1500 với TCP/IP và FACTORY RESET
Để có thể kết nối PC/PG hoặc laptop tới SIMATIC S7-1200/1500, người dùng
cần phải sử dụng kết nối TCP/IP connection
Để cho PC và Simatic S7-1200 có thể kết nối với nhau thì địa chỉ IP (Internet
Protocol) phải phù hợp với nhau.
Các bước cài đặt địa chỉ IP cho máy tính
Trong phần này, chúng ta sẽ cùng thực hiện các bước cài đặt địa chỉ IP cho máy
tính, để có thể liên kết với PLC S7-1200/1500.
Chú ý: Máy tính kết nối với PLC S7-1200/1500 phải có cổng kết nối TCP/IP.
Dưới đây sẽ trình bày các bước cài đặt địa chỉ IP trên máy tính với hệ điều hành Win7
Click biểu tượng trên thanh taskbar góc phải màn hình → "Open Network
and Sharing Center".
Một cửa sổ Network and Sharing Center được mở ra, chọn → "Change adapter
settings". Chọn và nhấn chuột phải vào biểu tương "Local Area Connection" →
"Properties".
51
→
Khi một cửa sổ mới mở ra chọn giao thức truyền thông giao tiếp với PLC S7-
1200 → "Internet Protocol Version 4 (TCP/IP)". Sau đó cài đặt địa chỉ IP cho máy
tính: chọn Use the following IP addres → đặt địa chỉ IP address: 192.168.0.x (với x
khác địa chỉ IP mặc định của CPU S7-1200 là 192.168.0.1) → chọn Subnet mask là
255.255.255.0 → OK → Close. Ví dụ: IP address: 192.168.0.99
52
Bước 2: Chọn kết nối Online & Diagnostics để kiểm tra thông tin CPU: Project
tree → Device → Online accesses →… Network Connection (đây là card mạng sử
dụng để giao tiếp với PLC) → Update accessible → MAC= … → Online &
Diagnotics. Chú ý: Nếu có một địa chỉ IP được cài đặt sẵn cho CPU thì người dùng sẽ
thấy địa chỉ đó thay cho địa chỉ MAC
Bước 3: Cửa số giao diện Online & Diagnostics hiện ra, tiếp tục thực hiện các
thao tác sau để gán địa chỉ IP cho CPU: Function → Assign IP address và chọn IP
53
Address là: 192.168.0.1 → Subnet mask chọn là: 255.255.255.0 → Chọn Assign
address
54
Bước 4: Xác nhận để cho phép thực hiện chế độ reset to factory settings bằng
cách nhấn YES tại các cửa sổ dưới đây.
1.4.5.3. Khai báo và cấu hình phần cứng PLC trên TIA PORTAL
Về các bước khai báo, cấu hình của PLC S7-1200 và PLC S7-1500 là giống
nhau, vì vậy các nội dung dưới đây chỉ trình bày một loại PLC S7-1500. Ví dụ cấu
hình trạm PLC S7-1500 có các module sau:
① Module nguồn (PM): với nguồn đầu vào là 120/230 VAC, 50Hz/60 Hz,
190W và nguồn đầu ra là 24VDC/8A.
② Module CPU 1516F-3 PN/DP
③ IO module 32x digital input DI 32x24VDC HF
④ IO module 32x digital output DQ 32x24VDC/0.5A HF
⑤ IO module 8x analog input AI 8xU/I/RTD/TC ST
⑥ IO module 4x analog output AQ 4xU/I ST
Với phần mềm TIA Portal hỗ trợ cho người dùng sử dụng hai cách để có thể cấu
hình cho PLC S7-1200/1500
- Cấu hình chuẩn dựa theo phần cứng
- Cấu hình với chế độ Unspecified
55
Cấu hình chuẩn dựa theo phần cứng
Với chế độ này, người dùng phải đọc mã của CPU, các module mở rộng để có
thể khai báo chúng.
Bước 1: Khởi động chương trình TIA Portal, khi cửa sổ phần mềm hiện ra thì
nhấn chọn “Create New Project”
Thao tác trên sẽ làm xuất hiện giao diện với các thông tin của một project mới
như: tên project (Project name), đường dẫn để lưu project (Path), tên người khởi tạo
(Author), thông tin về project (comment). Sau khi điền đầy đủ thông tin về Project,
chọn Create để tiếp tục quá trình khởi tạo Project.
Bước 2: Lựa chọn cấu hình CPU cho project: Device & Networks → Add new
device, điền các thông tin cho CPU cần khai báo tại cửa sổ Add new device: tên thiết
bị (Device name), thông số kỹ thuật và dòng CPU sử dụng và chọn Add để hoàn tất
quá trình chọn thiết bị mới cho project.
56
Phần mềm TIA Portal tự động mở project hiển thị CPU đã được chọn và được
đặt ở slot 1 của thanh rail.
Bước 3: Cấu hình cổng giao tiếp Ethernet CPU 1516F-3 PN/DP bằng cách click đúp
vào CPU, xuất hiện cửa sổ phía dưới → "Properties" → "PROFINET-interface [X1]"
→ "Ethernet addresses".
57
Tại "Interface connected with", để khai báo một Ethernet subnet ta nhấn chọn
"Add new subnet".
Giữ nguyên các khai báo địa chỉ của "IP address" và "Subnet mask".
58
Bước 4: Cấu hình chế độ bảo mật → "Protection" → "Full access incl. fail-safe
(no protection)".
Bước 5: Chọn lựa những module mở rộng cần thiết theo cấu hình phần cứng của
hệ thống: Device configuration → Device view → Hardware catalog, ở đây người
dùng sẽ lựa chọn những module cần thiết và kéo thả đưa vào rail của PLC.
Bước 6: Cấu hình địa chỉ các tín hiệu vào/ra PLC
59
Bước 7: Save và compile cấu hình phần cứng
Trước khi compile cấu hình, ta phải tiến hành lưu project → . Quá
trình compile phần cứng đã cấu hình được thực hiện bằng cách chọn folder
"CPU_1516F [CPU1516F-3 PN/DP]" → "Compile".
Nếu project xảy ra lỗi thì xuất hiện minh họa như bảng dưới, ta tìm hiểu lỗi và
sửa lại rồi tiến hành compile lại.
60
Bước 8: Download cấu hình phần cứng xuống PLC
Chọn folder "CPU_1516F [CPU1516F-3 PN/DP]" và click biểu tượng →
"Download to device".
61
→ PG/PC interface → Intel(R) Ethernet Connection I217-LM (tùy từng máy tính
mà chọn card mạng khác nhau)
62
Để tìm kiếm các thiết bị đang kết nối với máy tính nhấn chọn .
CPU được tìm thấy và hiển thị tại mục "Compatible devices in target subnet", → CPU
1516F-3 PN/DP → "Load"
63
→ "Start all" → "Finish".
64
Điền các thông tin cho project: tên, đường dẫn lưu trữ, tác giả, chú thích →
"Create".
Sau đó lựa chọn cấu hình “Unspecified CPU 1500” với mã hiệu 6ES7 5XX-
XXXXX-XXXX: Controllers → SIMATIC S7-1500 → CPU → Unspecified CPU
1500 → 6ES75XX-XXXXX-XXXX → V1.8
65
Chọn "Add".
Một giao diện cấu hình phần cứng xuất hiện, với CPU nằm ở slot 1 trên thanh
rail và xuất hiện hộp thoại “The device is not specified”, tại hộp thoại này nhấn chọn
"detect" cấu hình CPU và những module mở rộng kèm theo.
66
Tại cửa sổ Hardware detection for CPU_1500 hiện ra. Tại đây người dùng chọn
giao diện Type of your PG/PC interface là PN/IE, chọn PG/PC interface là card mạng
internet (cổng RJ45) của máy tính, sau đó nhấn chọn .
Sau khi hoàn tất quá trình tìm kiếm thiết bị kết nối, một bảng liệt kê danh sách
các thiết bị xuất hiện như hình dưới. Nhấn chọn CPU và click "Detect" để hoàn tất
quá trình.
Nếu người dùng không đặt IP tĩnh cho PG/PC cùng một lớp mạng với PLC thì
phần mềm sẽ tự gán cho PG/PC một IP cùng subnet, khi đó xuất hiện hộp thoại
Assign IP address thì chọn YES để hoàn thành quá trình dò và upload cấu hình.
67
Trong một số trường hợp khi IP tĩnh do hệ thống tự cấp để PG/PC cùng subnet
với PLC bị lỗi thì người dùng nên chuyển sang đặt IP tĩnh của máy tính cùng subnet
với PLC.
Khi quá trình dò và upload cấu hình hoàn tất thì ta có các module hiển thị trên
các slot của thanh rail trong phần cấu hình. Tiến hành lưu Project.
Các bước cấu hình sau đó tương tự như phần “cấu hình chuẩn dựa theo phần
cứng”.
1.4.5.4. Lập trình trên TIA PORTAL
Sau khi đã hoàn tất việc khai báo phần cứng, tiến hành mở giao diện lập trình
ứng dụng để viết chương trình điều khiển PLC: Project tree → Devices → PLC →
Program blocks→ Main (OB1) để bắt đầu lập trình ứng dụng theo yêu cầu.
68
Người dùng có thể chọn PLC → Program blocks→ Add new block để gọi thêm
các khối dữ liệu DB, khối tổ chức OB hay khối hàm chức năng FB/FC, cũng như ngôn
ngữ lập trình cho các khối hàm ở đây.
Sau khi hoàn thành việc lập trình, tiến hành lưu project và dowload xuống PLC :
Chuột phải PLC → Dowload to device
69
1.4.5.4. Dowload và Upload PLC
Các bước dowload project xuống PLC
Bước 1: Mở project muốn dowload xuống PLC và thực hiện những thao tác sau
để tiến hành dowload chương trình: Project tree → Devices → Chọn CPU muốn
dowload → Online → Dowload to device (phím tắt Ctrl + L). Hoặc có thể chọn biểu
tượng trên thanh Menu.
Hoặc có thể làm cách sau: Project tree → Devices → Chọn CPU muốn dowload
và phải chuột → Dowload to device
70
- Hardware and software (only changes): Dowload cả phần cứng và phần
mềm (chỉ dowload những thay đổi mới)
- Hardware configuration: Dowload phần cứng
- Software (only changes): Dowload phần mềm (chỉ dowload những thay
đổi mới)
- Software (all): Dowload tất cả phần mềm
Bước 2: Cửa sổ giao diện Extened dowload to device hiển thị, người dùng chọn
Type of PG/PC interface là PN/IE, PG/PC interface là card mạng của máy tính
(RJ45). Trong một số trường hợp máy tính tìm không thấy device thì người dùng nên
check vào show all compatible devices.
Bước 3: Chọn "Load" để tiếp tục quá trình dowload xuống PLC. Bảng giao diện
Load preview hiển thị tại đây chọn Target của Device configuration là Dowload to
device, software là Consistent dowload. Chọn load để tiếp tục quá trình dowload
xuống PLC.
71
Bước 4. Cửa sổ giao diện Load results hiển thị tại đây chọn Start all để sau khi
dowload xong CPU chuyển sang trạng thái RUN. Chọn finish để hoàn thành quá trình
dowload xuống CPU
72
Bước 3: Cửa sổ giao diện Compare editor hiển thị và nhấn chọn biểu tượng
để so sánh toàn bộ chương trình online đang chạy dưới CPU với chương trình offline
mà chúng ta vừa upload phần hardware
Bước 4: Khi này người dùng có thể thấy biểu tượng upload hiển thị cho phép
người dùng upload chương trình từ PLC lên máy tính. Thực hiện thao tác upload
chương trình: Menu → Online → Upload from device
Bước 5: Cửa sổ giao diện Upload preview để người dùng chọn tiếp tục upload
chương trình cần click chọn Continue và nhấn Upload from device.
1.4.5.5. Phần mềm giả lập PLC S7-1200/1500
Với các phiên bản từ TIA Portal V13 SP1 thì có thể sử dụng PLC SIM cho PLC
S7-1200 (chỉ áp dụng CPU có firmware 4.0 trở lên) và PLC S7-1500 và người dùng
phải cài đặt bản Step7 Basic V13 SP1 và S7-PLCSIM V13 SP1 trở lên. Dưới đây trình
bày các bước thực hiện mô phỏng với PLC S7-1500.
73
Bước 1: Khởi tạo một project với một CPU PLC S7-1500. Ví dụ dùng CPU
1511-1PN.
Bước 2: Chọn khối tổ chức chương trình chính OB1 để bắt đầu lập trình theo yêu
cầu hệ thống. Ví dụ tạo chương trình đơn giản như hình dưới đây.
Bước 3: Tại Device chọn thư mục PLC cần mô phỏng → Thanh menu Online →
Simulation → Start. Hoặc nhấn chọn khối Main [OB1] → chọn biểu tượng Start
Simulation trên thanh công cụ.
74
Xuất hiện hộp thoại cảnh báo, chọn OK.
Lúc này trên màn hình sẽ xuất hiện PLC ảo PLC S7-1500 và cửa sổ “extended
download device”
Bước 4: Cửa sổ chọn giao thức kết nối với CPU xuất hiện và thực hiện chọn như
hình dưới. Sau đó nhấn Start search
75
Sau đó nhấn chọn Load → Load → Start all → Finish tại các hộp thoại tiếp theo.
Sau khi Dowload thành công, PLC ảo sẽ tự chuyển sang chế độ RUN
Bước 5: Trên PLCSIM nhấn chọn biểu tượng (Switch to project view) →
Chọn biểu tượng (New Project) → nhập tên file mô phỏng và đường dẫn lưu trữ →
Nhấn Create để hoàn tất.
Sau đó chọn SIM Table và đánh địa chỉ I/O thực tế để thực hiện giả lập tín hiệu
vào ra, còn nếu dùng vùng nhớ M, DB thì sử dụng chức năng Modify thực hiện trên
giao diện Project
76
Sau đó thao tác tác động vào I0.0 thì quan sát thấy Q0.0 có điện.
Đồng thời chọn chức năng Monitoring On/Off trên thanh công cụ của giao
diện lập trình để xem kết quả mô phỏng.
77
8. Trình bày vòng quét chương trình trong PLC?
9. Địa chỉ MAC, IP Address, Subnet Mask là gì? Địa chỉ MAC và IP khác nhau như
thế nào?
10. Trình bày các bước cấu hình địa chỉ IP cho máy tính?
11. Trình bày các bước cấu hình địa chỉ IP cho PLC S7-1200/1500?
12. Chế độ cấu hình chuẩn theo phần cứng khác với chế độ Unspecified như thế nào?
Hãy trình bày các bước khởi tạo Project mới với chế độ Unspecified và upload
chương trình dưới PLC lên máy tính?
13. Trình bày các bước thực hiện mô phỏng cho PLC S7-1200/1500?
78
CHƯƠNG 2
LẬP TRÌNH ỨNG DỤNG CƠ BẢN VỚI PLC
Nội dụng chương 2 cung cấp cho người học các tập lệnh cơ bản khi lập trình với
PLC S7-1200/1500 trên phần mềm TIA Portal: lập trình với tập lệnh logic, lập trình
ứng dụng với bộ định thời, bộ đếm, các tập lệnh so sánh, chuyển đổi kiểu dữ liệu, xử
lý tín hiệu Analog.
2.1. LẬP TRÌNH VỚI TẬP LỆNH LOGIC
2.1.1. Lập trình với Tag và I/O Mapping
Lập trình với Tag
Đối với những người dùng sử dụng PLC S7-200/300/400 với các phần mềm
Step7 Microwin, Step7 Manager sẽ quen gọi những tên gợi nhớ cho những vùng nhớ
hay các block là Symbol thì trên TIA Portal những vùng nhớ, tên gợi nhớ gọi là Tag.
“PLC Tags” là tên tượng trưng, gợi nhớ cho I/O và địa chỉ. TIA Portal đã cho
phép người dùng truy xuất với Tag. Điều này có nghĩa là khi có một lỗi nào đó trong
chương trình, I/O hoặc vùng nhớ nào đó bị hỏng thì chỉ cần thay đổi I/O hoặc vùng
nhớ trong Tag table. Người dùng lên tạo bảng Tag table để quản lý Tag trước khi bắt
đầu việc lập trình cho hệ thống. Các bước tạo PLC Tags được trình bày dưới đây.
Bước 1: Tạo một bảng Tag table để quản lý Tag: Project tree → Device →
CPU… → PLC Tags → Add new tag table.
79
Bước 2: Đổi tên Tag table để dễ quản lý những Tag trong đó
Bước 3: Khai báo Tag cũng như kiểu dữ liệu được sử dụng tương ứng.
80
Lập trình với I/O Mapping
Memory mapped I/O (MMIO) và Port mapped (PMIO) hay còn gọi là I/O
Mapping là một kỹ thuật được sử dụng cơ bản trong lập trình vi điều khiển, nhằm cô
lập I/O với code lập trình xử lý trước khi xuất ra ngoại vi. I/O mapping sẽ thực hiện
ánh xạ nhận giá trị giữa vùng nhớ (PLC Tag) từ ngõ vào Input của PLC và xuất tới
ngõ ra của PLC. Điều này có nghĩa là, mọi hoạt động từ xử lý Boolean cho đến các
hoạt động tính toán các khối chức năng đều xử lý trên các vùng nhớ M, DB thay vì xử
lý trực tiếp trên I/O thực (I, Q) giúp cho tránh những lỗi lập trình về trùng lặp vùng
nhớ hay khi cần sửa đổi gì trên chương trình thì người dùng chỉ cần sửa đổi PLC Tags
và các vùng nhớ M, DB.
Với các phần mềm lập trình trước đây cho PLC thì việc sử dụng kỹ thuật lập
trình I/O Mapping sẽ phức tạp hơn nhưng với TIA Portal hỗ trợ truy xuất dữ liệu theo
Tag cho nên I/O Mapping sẽ là một kỹ thuật phù hợp cho tất cả những ứng dụng mà
người dùng phát triển. Các bước làm việc với I/O Mapping trên phần mềm TIA Portal
được thực hiện theo các bước sau đây.
Bước 1: Tạo một bảng Tag table để quản lý Tag: Project tree → Device →
CPU… → PLC Tags → Add new tag table và đổi tên là IO Mapping.
Bước 2: Khởi tạo Tag để Mapped cho Input và Output
Bước 3: Khởi tạo hàm chức năng FC1 để thực hiện lập trình I/O Mapping:
Program blocks → Add new block → Function và đặt tên là IO Mapping.
81
Bước 4: Lập trình Memory mapped I/O (MMIO) và Port mapped (PMIO) để
thực hiện IO Mapping với FC1
Bước 5: Gọi hàm chức năng FC1 – IO Mapping trong chương trình Main OB1
để hoàn thành việc Mapped I/O giữa Tag nhớ và I/O ngoại vi. Và người dùng không
82
cần truy xuất trực tiếp tới Tag nhớ của vùng nhớ I, Q nữa mà chỉ cần thông qua các
Tag đã được Mapping.
83
Người dùng có thể gắn một byte của vùng nhớ M để trở thành clock memory.
Mỗi Bit của clock memory có tần số khác nhau và nằm trong dải tần số từ 0.5Hz đến
10Hz.
Để kích hoạt các chức năng trên ta thực hiện như sau: Lựa chọn CPU để thực
hiện: Device configuration → Device view → CPU … → Properties. Sau đó bật chế độ
system memory, clock memory và lựa chọn vùng nhớ M làm việc. Tiến hành Compile
để hoàn thành việc khởi tạo System and clock memory và lưu lại kết quả trên.
2.1.3. Lập trình với các tiếp điểm I/O
Ký hiệu Khai báo Kiểu Vùng nhớ Miêu tả
dữ liệu
S7-1200 S7-1500
Công tắc/Tiếp điểm
Công tắc thường mở
hay thường đóng.
Để có thể đọc ngay
84
Input BOOL I, Q, M, I, Q, M, lập tức ngõ vào có
D, L D, L, T, thể sử dụng cấu trúc
C “:P” để sử dụng ngõ
vào vật lý thay vì
biến quá trình
Input/Output BOOL Đảo trạng thái ngõ
vào/ra hoặc kết quả
phép toán logic
trước đó.
Cuộn coil/Ngõ ra
Trạng thái ngõ ra là
kết quả xử lý của
phép toán logic. Để
có thể đọc ngay lập
tức ngõ vào có thể
Output BOOL I, Q, M, D, L sử dụng cấu trúc
“:P” để sử dụng ngõ
ra vật lý thay vì biến
quá trình
Output BOOL I, Q, M, D, L Đảo kết quả ngõ ra
của phép toán logic
85
Đặt X = M0.3 = Input_Mapping_3; Y = M0.4 = Input_Mapping_4; Z = M1.1 =
Out_Mapping_1
b. Phép toán OR
Phép toán OR sẽ được sử dụng khi trạng thái của một trong hai (hoặc nhiều) tín
hiệu thỏa mãn điều kiện của yêu cầu điều khiển thì sẽ thực hiện một nhiệm vụ điều
khiển nào đó. Ví dụ:
1. Thực hiện phép toán logic sau: X or Y or S = X + Y + S = Z
Đặt X = M0.5 = Input_Mapping_5; Y = M0.6 = Input_Mapping_6; S = M0.7 =
Input_Mapping_7; Z = M1.2 = Out_Mapping_2.
86
3. Thực hiện phép toán logic sau: ( A and B ) or ( C and D ) = ( A × B ) + ( C × D ) = Z .
Đặt: A = M0.0 = Input_Mapping_0; B = M0.1 = Input_Mapping_1; C = M0.2 =
Input_Mapping_2; D = M0.3 = Input_Mapping_3; Z = M1.3 = Out_Mapping_3.
87
d. Phép toán NAND
Phép toán NAND là kết hợp của phép toán AND và lệnh NOT, là lệnh phủ định
lại kết quả của phép toán AND. Giả sử thực hiện phép toán
logic: A nand B = A × B = Z
Đặt A = Input_Mapping_0 = M0.0; B = Input_Mapping_4 = M0.4; và Z =
Out_Mapping_6 = M1.6.
88
BOOL Khi lệnh RESET_BF được tác động, một chuỗi
gồm “n” bit (được khai báo bên dưới lệnh) sẽ
trở về 0 bắt đầu tại địa chỉ khai báo bên trên.
BOOL Mạch chốt RS ưu tiên SET
Lệnh SET
Giá trị của bit trạng thái ngõ ra bằng 1 khi đầu vào của lệnh này bằng 1, khi đầu
vào của lệnh về 0 thì bit này vẫn giữ nguyên trạng thái ngõ ra ở mức 1 và bit này chỉ
bằng 0 khi gặp lệnh Reset.
Lệnh RESET
Giá trị của bit trạng thái ngõ ra bằng 0 khi đầu vào của lệnh này bằng 1, khi đầu
vào của lệnh về 0 thì bit này vẫn giữ nguyên trạng thái ngõ ra ở mức 0, nếu không
nhận thêm tác động khác ảnh hưởng tới ngõ ra.
Lệnh Flipflop SR và RS
Khối hàm SR và RS là những khối lệnh tổ hợp từ 2 lệnh SET và RESET nhưng
có xét tới sự ưu tiên.
Trong khối SR flipflop hoặc RS flipflop thì <toán hạng> được sử dụng có thể là
một trong những vùng nhớ Q, M, D, L nhưng theo toàn bộ hệ thống thì nên sử dụng
vùng nhớ M, D hoặc L để dễ dàng quản lý và thuận tiện cho các đoạn chương trình.
89
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
S Input BOOL I, Q, M, D, L Ngõ vào cho phép lệnh
SET thực hiện
R Input BOOL I, Q, M, D, Ngõ vào cho phép lệnh
T, C, L RESET thực hiện
<toán hạng> Output BOOL Q, M, D, L Toán hạng được thực hiện
khi tác động ngõ vào
Q Output BOOL Q, M, D, L Trạng thái tín hiệu của
toán hạng
Ví dụ sử dụng lệnh SR Flipflop – Ưu tiên RESET
Để giải thích rõ hơn và chi tiết hơn cho đoạn chương trình trên ta có thể sử dụng
bảng trạng thái như sau:
M0.2 M0.3 M1.1
0 0 0
0 1 0
1 0 1
1 1 0
Ví dụ sử dụng lệnh RS Flipflop – Ưu tiên SET
90
Để giải thích rõ hơn và chi tiết hơn cho đoạn chương trình trên ta có thể sử dụng
bảng trạng thái như sau:
M0.4 M0.5 M1.2
0 0 0
0 1 1
1 0 0
1 1 1
2.1.5. Lập trình với các tập lệnh nhận biết cạnh xung
Ký hiệu Kiểu dữ liệu Miêu tả
BOOL Nhận biết xung cạnh lên của tín hiệu đầu
vào
BOOL Nhận biết xung cạnh xuống của tín hiệu đầu
vào
91
2.1.5.1. Nhận biết xung cạnh lên của tín hiệu
Khi tín hiệu chuyển trạng thái từ 0 lên 1 thì ta có thể dùng lệnh (P) để nhận biết
sự thay đổi này. Lệnh nhận biết xung cạnh lên có thể biểu diễn dưới 2 dạng: tiếp điểm
hay dạng khối (block)
a. Sử dụng tập lệnh kiểu tiếp điểm
Lệnh sẽ so sánh trạng thái tín hiệu hiện tại của <toán hạng 1> với trạng thái tín
hiệu trước khi quét, đã được lưu trong bit nhớ trạng thái <toán hạng 2>. Nếu có sự
thay đổi trong kết quả toán học logic từ “0” lên “1” – có xung cạnh lên, thì ngõ ra của
lệnh sẽ trả về tín hiệu “1” trong một chu kỳ lệnh. Trong tất cả các trường hợp khác thì
trạng thái tín hiệu của ngõ ra là “0”.
Chỉ định toán hạng được truy vấn <toán hạng 1> sẽ nằm vị trí trên trong tập
lệnh, chỉ định bit nhớ trạng thái <toán hạng 2> nằm vị trí dưới của tập lệnh.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Giải thích
<toán hạng 1> Input BOOL I, Q, M, T, C, Tín hiệu ngõ vào để
D, L quét kiểm tra
<toán hạng 2> Input/Output BOOL M, D, L Bit nhớ cạnh lên
I0.0 0
M0.0 0
1
0
Q0.0
1
Q0.1 0
92
Chú ý: Bit nhớ trạng thái không được lặp lại và chỉ được sử dụng một làn duy
nhất. Bit nhớ trạng thái nên sử dụng các vùng nhớ M hoặc D sẽ thuận tiện để lưu trữ
và giám sát cho hoạt động của chương trình.
b. Sử dụng tập lệnh kiểu khối
Lệnh kiểu khối được sử dụng cho một tổ hợp ngõ vào cùng tác động, trong khi
lệnh kiểu tiếp điểm chỉ áp dụng cho từng tiếp điểm, bit đầu vào đơn.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Giải thích
CLK Input BOOL I, Q, M, D, L Kết quả trả về từ tổ
hợp ngõ vào
<toán hạng > Input/Output BOOL M, D, L Bit nhớ cạnh lên
Q Output BOOL Q, M, D, L Kết quả xung ngõ ra
Ví dụ:
Khi cả trạng thái đầu vào ( I 0.3 × I 0.4 + I 0.5) thay đổi trạng thái từ 0 lên 1 thì
ngay lập tức ngõ ra Q0.4 sẽ được SET lên mức 1 và ngõ ra Q0.5 sáng trong một chu
kỳ lệnh rồi tắt.
2.1.5.2. Nhận biết cạnh xuống của tín hiệu
Khi tín hiệu chuyển trạng thái từ 1 về 0 thì ta có thể dùng lệnh (N) để nhận biết
sự thay đổi này. Lệnh nhận biết xung cạnh xuống có thể biểu diễn dưới 2 dạng: tiếp
điểm hay dạng khối (block).
a. Sử dụng tập lệnh kiểu tiếp điểm
Lệnh sẽ so sánh trạng thái tín hiệu hiện tại của <toán hạng 1> với trạng thái tín
hiệu trước khi quét, đã được lưu trong bit nhớ trạng thái <toán hạng 2>. Nếu có sự
thay đổi trong kết quả toán học logic từ “1” về “0” – có xung cạnh xuống, thì ngõ ra
của lệnh sẽ trả về tín hiệu “1” trong một chu kỳ lệnh. Trong tất cả các trường hợp khác
thì trạng thái tín hiệu của ngõ ra là “0”.
Chỉ định toán hạng được truy vấn <toán hạng 1> sẽ nằm vị trí trên trong tập
lệnh, chỉ định bit nhớ trạng thái <toán hạng 2> nằm vị trí dưới của tập lệnh.
93
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Giải thích
<toán hạng 1> Input BOOL I, Q, M, T, C, Tín hiệu ngõ vào để
D, L quét kiểm tra
<toán hạng 2> Input/Output BOOL M, D, L Bit nhớ cạnh xuống
Ví dụ:
I0.0
M0.0
Q0.0
Q0.1
Chu kỳ lệnh
94
Ví dụ:
Khi cả trạng thái đầu vào ( I 0.3 × I 0.4 + I 0.5) thay đổi trạng thái từ 1 về 0 thì ngay
lập tức ngõ ra Q0.3 sẽ được RESET về mức 0 và ngõ ra Q0.5 sáng trong một chu kỳ
lệnh rồi tắt.
Để làm rõ vấn đề trên, xét bài toán một nút nhấn hai tác động. Trạng thái ban
đầu đèn tắt, khi tác động nút nhấn đèn sáng và tác động lần tiếp theo đèn tắt, trạng thái
cứ thế lặp lại.
95
Khi một bộ định thì khai báo với chuẩn IEC Timer được gọi sẽ tự động tạo ra
một khối dữ liệu DB với tên IEC_TIMER_... nằm trong System Blocks.
Người dùng có thể sử dụng các tham số của khối dữ liệu thông qua khai báo
“<Data block name>”.<tag name>. Tag name có thể là IN, PT, Q, ET, R và tùy vào
mục đích sử dụng để lựa chọn.
Ký hiệu Miêu tả
Bộ định thì tạo xung
96
thúc quá trình phát xung. Trong thời gian bộ định thì hoạt động, ngõ vào IN tác động
không ảnh hưởng.
Tham số bộ định thì
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
Đồ thị Timming của bộ định thì
Ví dụ minh họa
97
Khi ngõ vào M0.0 tác động thì ngõ ra Q của bộ định thị TP sẽ tạo ra một xung có
độ rộng bằng thời gian đặt PT và M1.0 chuyển lên trạng thái mức 1 trong khoảng thời
gian ET=10s. Khi ET > 10s thì ngõ ra M1.0 trở lại trạng thái ban đầu.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TP hay có thể sử
dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.2.2. Bộ định thì trễ sườn lên không nhớ – TON
Nguyên lý hoạt động
Khi ngõ vào IN tác động và duy trì trạng thái cho phép TON hoạt động tới khi
giá trị ET > PT thì ngõ ra Q đổi trạng thái lên mức 1. Khi ngõ vào IN chuyển trạng
thái từ 1 về 0 thì Timer TON kết thúc hoạt động.
Tham số bộ định thì
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
Đồ thị Timming của bộ định thì
98
Ví dụ minh họa
Khi ngõ vào M0.1 tác động và duy trì trạng thái cho phép TIMER TON hoạt
động tới khi giá trị ET > 10s thì ngõ ra Q sẽ đổi trạng thái lên mức 1 hay M1.3 chuyển
trạng thái lên mức 1. Khi ngõ vào M0.1 ngừng tác động thì ngõ ra Q sẽ trở về trạng
thái ban đầu và M1.3 chuyển về trạng thái mức 0.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TON hay có thể sử
dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.2.3. Bộ định thì trễ sườn xuống – TOFF
Nguyên lý hoạt động
Timer trễ sườn xuống bắt đầu hoạt động khi ngõ vào cho phép chuyển trạng thái
từ 0 lên 1, đồng thời tiếp điểm của Timer chuyển trạng thái: tiếp điểm thường mở
đóng lại và tiếp điểm thường đóng mở ra.
99
Khi ngõ vào cho phép Timer hoạt động chuyển trạng thái từ 1 về 0 thì sau đó
một khoảng thời gian T# đặt trước thì trạng thái tiếp điểm của TIMER trở về trạng
thái ban đầu.
Tham số bộ định thì
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
Ví dụ minh họa
100
Khi ngõ vào cho phép M0.2 chuyển trạng thái từ 0 lên 1 thì tiếp điểm của bộ
định thì TOF sẽ chuyển trạng thái: tiếp điểm thường đóng sẽ mở ra, còn tiếp điểm
thường mở sẽ đóng lại đồng thời ngõ ra M1.4 sẽ chuyển trạng thái từ 0 lên 1.
Khi ngõ vào cho phép M0.2 chuyển trạng thái từ 1 về 0 thì sau đó 10s tiếp điểm
của bộ định thì TOF sẽ chuyển về trạng thái ban đầu.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TOF hay có thể sử
dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.2.4. Bộ định thì trễ sườn lên có nhớ – TONR
Nguyên lý hoạt động
Bộ định thì trễ sườn lên có nhớ bắt đầu hoạt động khi có tín hiệu ngõ vào IN
chuyển từ trạng thái 0 lên 1, nếu thời gian tác động của ngõ vào IN < PT thì giá trị ET
vẫn lưu lại và sẽ được cộng dồn cho tới khi IN > PT thì ngõ ra của bộ định thì TONR
sẽ chuyển trạng thái.
Nếu ngõ vào cho phép chuyển trạng thái từ 1 về 0 thì TIMER vẫn tiếp tục trạng
thái cho tới khi có tín hiệu Reset Timer hoạt động. Nói cách khác, TIMER trễ sườn
lên có nhớ chỉ cần tác động tín hiệu cho phép chuyển trạng thái từ 0 lên 1, không ảnh
hưởng của tín hiệu khi chuyển trạng thái từ 1 về 0, do đó cần lệnh Reset để thực hiện
lệnh Reset Timer.
Tham số bộ định thì
Tham Khai Kiểu dữ liệu Vùng nhớ Miêu tả
số báo
S7-1200 S7-1500 S7-1200 S7-1500
IN Input BOOL BOOL I, Q, M, L, D I, Q, M, L, Ngõ vào cho
D, P phép TIMER
101
hoạt động
PT Input TIME TIME, L, Q, M, D, L, Q, M, D, Giá trị đặt trước
LTIME L hoặc hằng L, P hoặc cho TIMER
số hằng số
Q Output BOOL BOOL Q, M, L, D Q, M, L, D, Ngõ ra xung
P
ET Output TIME TIME, Q, M, L, D Q, M, L, D, Giá trị hiện hành
LTIME P của TIMER
Đồ thị Timming của bộ định thì
Ví dụ minh họa
102
Bộ định thì TONR sẽ cộng dồn thời gian tác động của ngõ vào M0.3 cho tới khi
ET > PT thì ngõ ra của bộ định thì sẽ chuyển trạng thái của tiếp điểm, hay M1.6 sẽ lên
mức 1.
Ngõ ra sẽ duy trì trạng thái ở mức 1 cho tới khi có tín hiệu Reset Timer tác động,
thì bộ định thì TONR sẽ trở về trạng thái ban đầu.
Người dùng có thể sử dụng trực tiếp ngõ ra Q của bộ định thì TOF hay có thể sử
dụng tiếp điểm ngõ ra Q thông qua khai báo “<Data block name>”.Q
2.3. CÁC PHÉP TOÁN SO SÁNH VÀ CHUYỂN ĐỔI DỮ LIỆU/GIÁ TRỊ
2.3.1. Các phép toán so sánh
Trong phần này chúng ta cùng khảo sát và tìm hiểu về các tập lệnh so sánh được
hỗ trợ trong TIA Portal cho PLC S7-1200/S7-1500. Chúng ta có thể so sánh các kiểu
dữ liệu: INT, DINT, REAL, WORD, DWORD, TIME thông qua 6 tập lệnh so sánh:
so sánh bằng (==), so sánh khác (< >), so sánh lớn hơn (>), so sánh lớn hơn bằng (>=),
so sánh nhỏ hơn (<), so sánh nhỏ hơn bằng (<=). Phép so sánh được thực hiện bằng
cách lấy <toán hạng 1> đem so sánh với <toán hạng 2> nếu thỏa điều kiện thì sẽ cho
ngõ ra bằng 1, còn ngược lại ngõ ra bằng 0.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
<toán hạng 1> Input INT, DINT, REAL, I, Q, M, D, L Giá trị thứ nhất
WORD, DWORD, hoặc hằng số đem so sánh
TIME
<toán hạng 2> Input I, Q, M, D, L Giá trị thứ hai
hoặc hằng số để so sánh
So sánh bằng
Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có
bằng giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn,
phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:
103
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 16, nếu giá trị trong vùng nhớ
MW10=16 thì ngõ ra Q0.0 bằng 1, ngược lại Q0.0 bằng 0.
So sánh khác
Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có
khác giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn,
phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 16, nếu giá trị trong vùng nhớ
MW10≠16 thì ngõ ra Q0.0 bằng 1, ngược lại Q0.0 bằng 0.
So sánh lớn hơn
Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có
lớn hơn giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn,
phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 16, nếu giá trị trong vùng nhớ
MW10>16 thì ngõ ra Q0.0 bằng 1, ngược lại Q0.0 bằng 0.
104
So sánh lớn hơn bằng
Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có
lớn hơn bằng giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa
mãn, phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 20, nếu giá trị trong vùng nhớ
MW10≥20 thì ngõ ra Q0.1 bằng 1, ngược lại Q0.1 bằng 0.
So sánh nhỏ hơn
Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có
nhỏ hơn giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa mãn,
phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 20, nếu giá trị trong vùng nhớ
MW10<20 thì ngõ ra Q0.3 bằng 1, ngược lại Q0.3 bằng 0.
So sánh nhỏ hơn bằng
Lệnh so sánh bằng được sử dụng để xác định giá trị thứ nhất <toán hạng 1> có
nhỏ hơn bằng giá trị của số thứ hai <toán hạng 2> không? Nếu điều kiện so sánh thỏa
mãn, phép so sánh sẽ trả về kết quả logic 1, ngược lại bằng 0.
Xét ví dụ sau:
105
Tín hiệu ngõ vào I0.0 ở mức tích cực (mức 1) sẽ cho thực hiện phép so sánh giữa
vùng nhớ MW10 (kiểu dữ liệu Interger) với giá trị 20, nếu giá trị trong vùng nhớ
MW10≤20 thì ngõ ra Q0.3 bằng 1, ngược lại Q0.3 bằng 0.
2.3.2. Tập lệnh chuyển đổi dữ liệu/giá trị
Khi có những giá trị không đồng nhất về kiểu dữ liệu thì việc so sánh, tính toán
giữa các giá trị sẽ trở lên khó khăn cho nên việc chuyển đổi đồng nhất giá trị là cần
thiết. Để thực hiện việc chuyển đổi giá trị này người dùng có thể sử dụng các tập lệnh
Conversion operations để chuyển đổi dữ liệu/giá trị.
Lệnh chuyển đổi giá trị - Convert
Để thực hiện việc chuyển đổi các giá trị từ BCD sang I, BCD sang DI, I sang DI,
DI sang R, … thì chúng ta sẽ sử dụng tập lệnh CONV
106
Lệnh chuyển đổi Int to DInt sẽ chuyển đổi giá trị Int trong vùng nhớ MW10
thành giá trị DInt và đưa vào vùng nhớ MD52.
Lệnh chuyển đổi DInt to Real sẽ chuyển đổi giá trị DInt trong vùng nhớ MD52
thành giá trị thực Real và đưa vào vùng nhớ MD96.
Tuy nhiên người dùng chỉ có thể sử dụng phép chuyển đổi Bcd to Interger cho
số BCD nằm trong vùng nhớ Word. Nếu chúng ta có một số BCD nằm trong vùng nhớ
một byte thì chúng ta sẽ xử lý như thế nào? Để giải quyết vấn đề này chúng ta khảo
sát một ví dụ như sau:
107
Như vậy, muốn thực hiện bài toán như trên chúng ta sẽ phải mượn thêm một
byte cao để trở thành một word hoàn chỉnh, đồng thời để đảm bảo không làm ảnh
hưởng đến giá trị ban đầu chúng ta sẽ xóa toàn bộ giá trị trong byte cao. Sau đó, chúng
ta sẽ dùng lệnh Bcd16 to Int để chuyển giá trị đó sang số Int.
Lệnh chuyển đổi số nguyên sang số thực NORM_X
Người dùng có thể sử dụng lệnh Normalize để chuyển đổi giá trị đầu vào nằm
trong giới hạn [Min , Max] với ngõ ra thay đổi tuyến tính trong giới hạn [0.0 , 1.0].
108
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM
Trong đó các tham số và hằng số được sử dụng trong lệnh SCALE:
Tham số IN là giá trị đầu vào cần chuyển đổi, với kiểu dữ liệu số nguyên (K1 ≤
IN ≤ K2), thông thường khai báo là địa chỉ của tín hiệu ngõ vào Analog là PIW.
Hằng số K1 và K2 được xác định dựa theo giá trị của tham số Bipolar:
Nếu Bipolar = 1 thì giá trị K1 = -27648.0 và K2 = +27648.0
Nếu Bipolar = 0 thì giá trị K1 = 0.0 và K2 = +27648.0
Tham số HI_LIM và LO_LIM là giá trị cận trên và cận dưới của đơn vị kỹ thuật,
với kiểu dữ liệu là số thực (Real)
Tham số OUT là ngõ ra của lệnh chuyển đổi, với kiểu dữ liệu số thực – Real
(LO_LIM ≤ OUT ≤ HI_LIM), có giá trị đúng với giá trị cảm biến trả về hoặc tương
ứng theo tỉ lệ % của hệ thống tùy thuộc với người dùng khai báo ở LI_LIM và
LO_LIM.
Tham số RET_VAL là kết quả lỗi trả về, với kiểu dữ liệu WORD. Nếu không
xảy ra lỗi thì kết quả trả về W#16#0000 và ngược lại.
Ví dụ:
109
Giải thích:
Khi nhấn I125.0 thì hệ thống hoạt động, nhấn I125.1 thì hệ thống dừng hoạt
động.
Nếu tín hiệu analog từ cảm biến trả về nhỏ hơn hoặc bằng 3.0V (tương ứng
30%) thì cho đầu ra Q124.0 hoạt động.
Nếu tín hiệu analog từ cảm biến trả về lớn hơn hoặc bằng 7.0V (tương ứng
70%) thì cho đầu ra Q124.0 dừng hoạt động.
Lệnh chuyển đổi số thực sang số nguyên SCALE_X
Người dùng có thể sử dụng lệnh SCALE-X để chuyển đổi giá trị sang một tầm
giá trị mới phù hợp với yêu cầu sử dụng. Khi lệnh SCALE_X được thực hiện thì giá
trị VALUE sẽ được chuyển đổi nằm trong giới hạn [MIN, MAX] và được lưu trữ vào
vùng nhớ OUT.
110
ENO OUT BOOL Q, M, D, L Ngõ ra cho phép hoạt động
MIN IN INT, REAL I, Q, M, D, L Giới hạn dưới của Value
hay hằng số
VALUE IN REAL I, Q, M, D, L Giá trị Value đưa vào
hay hằng số
MAX IN INT, REAL I, Q, M, D, L Giới hạn trên của Value
hay hằng số
OUT OUT INT, REAL Q, M, D, L Kết quả trả về nằm trong
giới hạn [MIN , MAX]
Chuyển đổi số thực sang số nguyên UNSCALE có giới hạn MIN - MAX
Lệnh này không có với PLC S7-1200. Lệnh UNSCALE có tác dụng chuyển đổi
ngược từ giá trị kỹ thuật sang số nguyên (INT) để xuất tín hiệu ngõ ra module AO.
Dựa theo công thức sau:
OUT = [ ((IN–LO_LIM)/(HI_LIM–LO_LIM)) ∗ (K2–K1) ] + K1
Trong đó các tham số và hằng số được sử dụng trong lệnh UNSCALE:
Tham số IN là giá trị đầu vào cần chuyển đổi, với kiểu dữ liệu số thực (LO_LIM
≤ IN ≤ HI_LIM).
Hằng số K1 và K2 được xác định dựa theo giá trị của tham số Bipolar:
Nếu Bipolar = 1 thì giá trị K1 = -27648.0 và K2 = +27648.0
Nếu Bipolar = 0 thì giá trị K1 = 0.0 và K2 = +27648.0
Tham số HI_LIM và LO_LIM là giá trị cận trên và cận dưới của đơn vị kỹ thuật,
với kiểu dữ liệu là số thực (Real)
Tham số OUT là ngõ ra của lệnh chuyển đổi, với kiểu dữ liệu số nguyên – INT
(K1 ≤ OUT ≤ K2).
Tham số RET-VAL là kết quả lỗi trả về, với kiểu dữ liệu WORD. Nếu không
xảy ra lỗi thì kết quả trả về W#16#0000 và ngược lại.
Ví dụ:
111
Lệnh làm tròn giá trị số thực về số nguyên
Trong một số trường hợp người dùng muốn lấy phần nguyên của số thực theo
mục đích nào đó thì có thể sử dụng các tập lệnh chuyển đổi từ số thực sang số nguyên
như: Round, Ceil, Floor, Trunc.
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
IN Input REAL I, Q, M, D, L, P hay Giá trị ngõ vào muốn
hằng số làm tròn.
OUT Output DINT Q, M, D, L, P Kết quả làm tròn.
Lệnh làm tròn giá trị số thực về số nguyên gần nhất – Round:
Lệnh làm tròn giá trị số thực về số nguyên lớn gần nhất – Ceil:
112
Lệnh làm tròn giá trị số thực về số nguyên nhỏ gần nhất - Floor:
113
Khi có sự chuyển trạng thái từ mức 0 lên mức 1 tại chân CU thì giá trị bộ đếm
CV tăng lên 1. Trạng thái ngõ vào R bằng 1 thì giá trị bộ đếm CV=0 và ngõ ra Q bằng
0. Khi giá trị đếm được CV ≥ PV thì ngõ ra Q bằng 1.
Khối dữ liệu DB được sử dụng để lưu trữ tham số cho các hàm đếm theo chuẩn
IEC, có thể khai báo và nạp giá trị cho CTU từ khối DB.
Tham số của bộ đếm
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CU Input BOOL I, Q, M, D, L Ngõ vào cho phép đếm lên
R Input BOOL I, Q, M, D, L Reset bộ đếm
PV Input INT I, Q, M, D, L, Giá trị đặt trước cho bộ đếm.
hoặc hằng số Giá trị đặt trước từ 0 đến
32767
Q Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
CV Output INT Q, M, D, L Giá trị hiện hành của bộ đếm
từ 0 đến 32767.
Ví dụ minh họa
114
Khi ngõ vào M0.0 chuyển trạng thái từ 0 lên 1 thì giá trị bộ đếm lưu tại địa chỉ
“<Data block name>”.CV sẽ tăng lên 1, khi giá trị CV≥PV thì ngõ ra M1.0 sẽ lên
mức 1, ngược lại ngõ ra M1.0 sẽ bằng 0. Khi ngõ vào M0.1 chuyển trạng thái từ 0 lên
1 thì giá trị bộ đếm sẽ trở về 0.
2.4.2. Bộ đếm xuống CTD
Nguyên lý
Tác động chân LD chuyển trạng thái sang mức 1 thì giá trị đặt trước được nạp
cho bộ đếm, lúc này CV=PV và ngõ ra Q bằng 0. Khi có sự chuyển trạng thái từ 0 lên
1 tại chân CD thì giá trị bộ đếm CV giảm xuống 1. Khi giá trị bộ đếm nhỏ hơn hoặc
bằng 0 (CV≤0) thì ngõ ra Q bằng 1.
Khối dữ liệu DB được sử dụng để lưu trữ tham số cho các hàm đếm theo chuẩn
IEC, có thể khai báo và nạp giá trị cho CTU từ khối DB.
Tham số của bộ đếm
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CD Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm xuống
PV Input INT I, Q, M, D, L, Giá trị đặt trước cho bộ đếm.
hoặc hằng số Giá trị đặt trước từ -32678 đến
32767
LD Input BOOL I, Q, M, D, L Ngõ vào cho phép nạp giá trị
vào bộ đếm
Q Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
CV Output INT Q, M, D, L Giá trị hiện hành của bộ đếm.
Ví dụ minh họa
115
Khi ngõ vào M0.3 chuyển trạng thái từ 0 lên 1 thì giá trị hiện hành của bộ đếm
CV=PV và ngõ ra M1.1 sẽ về mức 0. Khi ngõ vào M0.2 chuyển trạng thái từ 0 lên 1,
thì giá trị bộ đếm sẽ giảm xuống 1. Khi giá trị bộ đếm CV≤0 thì ngõ ra M1.1 sẽ lên
mức 1.
2.4.3. Bộ đếm lên xuống CTUD
Nguyên lý
Tác động chân LD chuyển trạng thái sang mức 1 thì giá trị đặt trước được nạp
cho bộ đếm, lúc này CV=PV và ngõ ra QD bằng 0. Khi có sự chuyển trạng thái từ 0
lên 1 tại chân CU thì giá trị bộ đếm CV tăng lên 1. Khi có sự chuyển trạng thái từ 0
lên 1 tại chân CD thì giá trị bộ đếm CV giảm xuống 1.
- Khi giá trị bộ đếm CV≥PV thì ngõ ra QU bằng 1
- Khi giá trị bộ đếm CV≤0 thì ngõ ra QD bằng 1
- Trạng thái ngõ vào R bằng 1 thì giá trị bộ đếm CV bằng 0.
Tham số của bộ đếm
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
CU Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm lên
CD Input BOOL I, Q, M, D, L Ngõ vào thực hiện đếm xuống
116
R Input BOOL I, Q, M, D, L Reset bộ đếm
LD Input BOOL I, Q, M, D, L Ngõ vào cho phép nạp giá trị
vào bộ đếm
PV Input INT I, Q, M, D, L, Giá trị đặt trước cho bộ đếm.
hoặc hằng số Giá trị đặt trước từ -32678 đến
32767
QU Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
lên
QD Output BOOL Q, M, D, L Trạng thái ngõ ra của bộ đếm
xuống
CV Output INT Q, M, D, L Giá trị hiện hành của bộ đếm.
Ví dụ minh họa
Khi ngõ vào M0.4 chuyển trạng thái từ 0 lên 1 thì giá trị hiện hành của bộ đếm
CV tăng lên 1, nếu ngõ vào M0.5 chuyển trạng thái từ 0 lên 1 thì giá trị bộ đếm CV
giảm xuống 1. Nếu ngõ vào M0.7 được tác động thì giá trị bộ đếm CV=PV. Ngõ ra
M1.2 lên mức 1 khi CV≥PV, ngõ ra M1.3 lên mức 1 khi CV≤0. Nếu tác động M0.6
thì giá trị bộ đếm CV=0.
117
2.5. LẬP TRÌNH VỚI TÍN HIỆU TƯƠNG TỰ - ANALOG
Tín hiệu logic chỉ biểu diễn hai mức trạng thái đó là 0 hoặc 1, ví dụ: có điện
+24V tương ứng mức 1, còn không có điện 0V tương ứng mức 0. Khác với tín hiệu
logic, tín hiệu Analog (tương tự) không chỉ có hai trạng thái là có điện +24VDC hay
không có điện 0V, mà tín hiệu Analog có nhiều tầm giá trị trong một phạm vi nào đó.
Những tín hiệu Analog như: Nhiệt độ (50…150oC), lưu lượng (0…200 lít/phút),
tốc độ quay (0…1500 vòng/phút), áp suất (0...10 Bar), độ ẩm (1…100%RH), … Cảm
biến để nhận biết được các đại lượng vật lý này gọi là cảm biến Analog, chúng chuyển
đổi các giá trị của các đại lượng đề cập ở trên thành những tín hiệu điện áp chuẩn,
chẳng hạn như: -500…+500 mV, -5…+5V, -10…+10V, -20…+20 mA, 0…20 mA,
4…20 mA.
PLC sử dụng module Analog để xử lý các đại lượng này, quá trình xử lý được
minh họa như sau:
118
chúng chỉ mất đi khi có giá trị mới viết đè lên và chúng được cập nhật theo chu kỳ lấy
mẫu của modul. Tín hiệu Analog qua chuyển đổi được CPU xử lý theo chương trình.
Với những tín hiệu ra dạng Analog như van tuyến tính, đầu vào Analog biến tần,
… thì khi CPU truyền các giá trị Analog tới module Analog ngõ ra, một bộ DAC
chuyển chúng sang các tín hiệu Analog chuẩn để đưa qua cơ cấu chấp hành Analog.
2.5.1. Lập trình xử lý tín hiệu Analog input
Có rất nhiều cảm biến đọc tín hiệu Analog trong thực tế như: cảm biến nhiệt, áp
suất, siêu âm, cảm biến màu sắc, lưu lượng… trả về các tín hiệu analog chuẩn với tín
hiệu chuẩn như:
- Tín hiệu dòng điện: 0-20mA, 4-20mA, …
- Tín hiệu điện áp ±10V, 0-10V, ±5V, 0-5V,…
- Tín hiệu nhiệt độ trả về với RTD, TC,
- Tín hiệu loadcell cho cân định lượng.
Khi tín hiệu analog trả về từ cảm biến qua module analog sẽ được bộ ADC
chuyển sang dạng số Interger dưới dạng số hóa (mức) tín hiệu. Các giá trị số hóa này
sẽ khó quan sát hơn các giá trị thực tế, cũng như việc xử lý phép toán của các số hóa
có thể làm cho người dùng không quen và khó xử lý. Để đơn giản hóa chúng ta có thể
vẽ biểu đồ biểu diễn cho số hóa trả về và giá trị thực tế đưa vào như sau:
- K1: mức tín hiệu nhỏ nhất tương ứng với tín hiệu analog nhỏ nhất Lo_Lim đưa
vào module analog
- K2: mức tín hiệu nhỏ nhất tương ứng với tín hiệu analog lớn nhất Hi_Lim đưa
vào module analog
Vậy giá trị đọc về từ module Analog thông qua bộ ADC đưa vào PLC S7 1200
chỉ có tầm giá trị K1≤IN≤K2. Với IN là giá trị trả về từ module Analog input. Từ đó
119
ta viết phương tình đọc và hiển thị giá trị Analog, với giá trị thực tế tương ứng với giá
trị đưa vào module analog:
(*)
OUT=[((FLOAT(IN) - K1)/(K2 - K1))*(HI_LIM-LO_LIM)] + LO_LIM
Với:
- IN là giá trị trả về cho các chân tín hiệu AIW (K1≤IN≤K2)
- OUT là giá trị thực tế đưa vào module analog (Lo_Lim≤OUT≤Hi_Lim).
Trong một số trường hợp có thể sử dụng phần trăm % hệ thống, hay đơn vị hệ
thống (mét, nhiệt độ…)
Gía trị của [K1,K2] có các khoảng phân giải: [0,27648], [-27648,27648],
[0,32767], [-32767,32767] tùy theo phần cứng và độ phân giải của module analog
input.
Dựa vào phần cứng thiết bị và tín hiệu trả về mà ta chia thành hai định dạng xử
lý phù hợp:
- Xử lý tín hiệu dòng/áp: tất cả các tín hiệu có thể chuyển đổi về thành dạng này
để sử lý
- Xử lý tín hiệu nhiệt: Áp dụng xử lý với các module đọc RTD, TC và không
phân biệt đó là cảm biến loại K,C,B,N,S
2.5.1.1. Lập trình xử lý tín hiệu dòng/áp
Để xử lý tín hiệu analog trả về tín hiệu dòng/áp ta sử dụng trực tiếp công thức (*). Tuy
nhiên trong thư viện tập lệnh Step 7 Basic V1x không hỗ trợ lệnh đọc tín hiệu analog
nên ta sử dụng kết hợp 2 tập lệnh SCALE_X và NORM_X tương ứng với công thức
(*)
a. Lệnh NORM_X
Người dùng có thể sử dụng lệnh Normalize để chuyển đổi giá trị đầu vào nằm
trong giới hạn [Min , Max] với ngõ ra thay đổi tuyến tính trong giới hạn [0.0 , 1.0].
120
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
EN IN BOOL I, Q, M, D, L Ngõ vào cho phép hoạt
động
ENO OUT BOOL Q, M, D, L Ngõ ra cho phép hoạt động
MIN IN INT, REAL I, Q, M, D, L Giới hạn dưới của Value
hay hằng số
VALUE IN INT, REAL I, Q, M, D, L Giá trị Value đưa vào
hay hằng số
MAX IN INT, REAL I, Q, M, D, L Giới hạn trên của Value
hay hằng số
OUT OUT REAL Q, M, D, L Kết quả trả về nằm trong
giới hạn [0.0 , 1.0]
b. Lệnh SCALE_X
Người dùng có thể sử dụng lệnh SCALE-X để chuyển đổi giá trị sang một tầm
giá trị mới phù hợp với yêu cầu sử dụng. Khi lệnh SCALE_X được thực hiện thì giá
trị VALUE sẽ được chuyển đổi nằm trong giới hạn [MIN, MAX] và được lưu trữ vào
vùng nhớ OUT.
121
VALUE IN REAL I, Q, M, D, L Giá trị Value đưa vào
hay hằng số
MAX IN INT, REAL I, Q, M, D, L Giới hạn trên của Value
hay hằng số
OUT OUT INT, REAL Q, M, D, L Kết quả trả về nằm trong
giới hạn [MIN , MAX]
c. Ứng dụng lệnh NORM_X và SCALE_X để đọc tín hiệu analog
Lập trình ứng dụng giám sát mức nước trong bình với yêu cầu:
- Cảm biến siêu âm đo mức trong bình trả về điện áp với mức tín hiệu 0V tương
ứng 100 lít nước và 10V tương ứng 1000 lít nước.
- Cảm biến được kết nối với ngõ vào Analog AI0 tính hợp trên S7 1200
- Lập trình giám sát bồn nước và báo hiển thị giá trị mức cao là 990 lít và báo
hiển thị giá trị mức thập là 110 lít
Bước 1: Khởi tạo Project với CPU 1214C
Bước 2: Cấu hình phần cứng CPU 1214C để kiểm tra địa chỉ và cấu hình hoạt
động cho các kênh Analog: CPU →Properties→AI 2→Analog input
Bước 3:Tạo tag giám sát biến trạng thái của các tín hiệu: PLC tag →Add new
tag table
122
Bước 4: Lập trình đọc tín hiệu analog trả về từ cảm biến
Giá trị các ngõ Analog input tích hợp trên CPU có hệ số [K1,K2] là [0, 27648]
được đưa vào [Min, Max] trong hàm Norm_X
Giá trị [Min, Max] trong hàm Scale_X là giá trị cận trên và cận dưới của đơn vị
kỹ thuật tương ứng với giá trị [Lo_Lim, Hi_Lim], với kiểu dữ liệu là số thực. Giá trị
cảm biến trả về từ 0V đến 10V thì có thể khai báo Max=10.0 và Min=0.0. Hoặc có thể
khai báo theo tỉ lệ % hệ thống.
Bước 5: Lập trình báo đèn trạng thái mức đầy khi cao hơn 990 lít, mức thấp khi
thấp hơn 110 lít
123
2.5.2. Lập trình xử lý tín hiệu Analog output
2.5.2.1. Thiết lập công thức toán học xử lý tín hiệu Analog output
Biểu đồ biểu diễn cho số thực trả về số hóa để xuất ra Analog output:
124
Bước 1: Khai báo, kiểm tra cấu hình phần cứng của module Analog để kiểm tra
địa chỉ và cấu hình hoạt động cho các kênh Analog theo yêu cầu bài toán thực tế:
Signal board Analog →Properties →Analog output
127
Bài tập 4: Điều khiển cửa lò
Một cửa lò có chức năng “mở, đóng và ở vị trí bất kỳ” được điều khiển bởi một
cylinder. Ở vị trí bình thường thì cửa lò được đóng.
- Khi tác động nút nhấn “S1” (NO) thì cửa lò mở ra và khi đến công tắc hành
trình giới hạn mở cửa “S4” (NC) thì dừng lại.
- Nếu cửa đã mở ra ở vị trí giới hạn mở cửa “S4” thì sẽ tự động đóng lại sau thời
gian 6s hoặc nút nhấn đóng cửa “S2” (NO) được ấn.
- Khi đến giới hạn cửa đóng “S5” (NC) thì việc đóng cửa kết thúc.
- Quá trình đóng cửa dừng ngay lập tức nếu cảm biến L1 (NO) bị tác động.
Nhưng nếu cảm biến quang không bị tác động thì quá trình đóng cửa vẫn tiếp tục.
- Khi cửa lò đang dịch chuyển có thể dừng bằng cách ấn nút dừng “S3” (NC).
128
chỉ cho phép một xe chạy. Hai cảm biến S1 và S2 được đặt gần nhau để nhận biết xe
vào và ra:
129
Các thanh kim loại cần được uốn một đầu theo theo một khuôn cho trước (sơ đồ
công nghệ). Qui trình hoạt động của máy như sau:
- Thanh kim loại cần uốn được đặt lên khuôn uốn
- Ấn nút khởi động S0 thì xy lanh Cyl.1 hạ xuống để giữ lấy thanh kim loại.
Khi thanh kim loại được giữ chặt (nhận biết bởi công tắc hành trình S2) thì xy
lanh Cyl.2 hạ xuống để uốn thanh kim loại vuông góc trước. Sau khi uốn xong thì tự
động nâng lên nhờ công tắc hành trình S4.
- Khi xy lanh Cyl.2 trở về vị trí cơ bản (nhận biết bởi S3) thì xy lanh Cyl.3 được
đẩy để uốn thanh kim loại ở giai đọan uốn cuối theo định hình của khuôn uốn. Khi xy
lanh Cyl.3 đến vị trí S6 thì tự động rút ngược về.
- Khi xy lanh Cyl.3 rút về đến vị trí cơ bản (nhận biết bởi S5) thì xy lanh Cyl.1
cũng rút về vị trí cơ bản của nó (nhận biết bởi S1). Lúc này thanh kim loại được tự do.
Người sử dụng có thể lấy ra và đặt một thanh kim loại mới vào. Và một chu kỳ mới lại
có thể bắt đầu.
Bài tập 8: Máy doa miệng ống kim loại
Ống kim loại cần được doa miệng theo một khuôn cho trước (sơ đồ công nghệ).
130
Máy hoạt động như sau: Người vận hành đặt ống kim loại cần doa miệng vào vị
trí sao cho miệng ống phải chạm vào cử chặn miệng ống. Sau đó ấn nút nhấn S0, xy
lanh Cyl.1 sẽ kẹp ống lại. khi ống đã được kẹp thì cử chặn miệng ống tự động rút về.
Xy lanh Cyl.2 sẽ hạ xuống doa miệng ống theo khuôn A. thời gian doa khỏang 3s. Sau
đó xy lanh Cyl.2 rút về và khuôn B được xylanh Cyl.4 đưa vào. Sau khi khuôn B được
đưa vào thì xy lanh Cyl.2 hạ xuống để doa miệng ống theo khuôn B. Tương tự như
khuôn A việc doa khoảng 3s. Sau đó xy lanh Cyl.2 trở về vị trí cơ bản của nó và xy
lanh Cyl.4 cũng rút khuôn B về và đặt khuôn A về vị trí sẵn sàng cho ống kim loại kế
tiếp. Sau khi miệng ống đã được doa theo khuôn B xong thì xy lanh kẹp ống Cyl.1 co
về thả ống kim loại khỏi hàm kẹp. Xy lanh Cyl.2 được đẩy trở về vị trí chặn miệng
ống. Một chu kỳ mới lại có thể bắt đầu.
Bài tập 9: Đảo chiều quay động cơ có khống chế thời gian
Một động cơ điện 3 pha có thể đảo chiều quay. Khi ấn nút nhấn quay phải “S1”
(NO) thì động cơ quay phải, đèn “H1” sáng báo động cơ quay phải. Khi ấn nút nhấn
quay trái “S2” (NO) thì động cơ quay trái, đèn “H2” sáng báo động cơ quay trái. Động
cơ có thể dừng bất cứ lúc nào nếu ấn nút nhấn dừng “S3” (NC) hoặc xảy ra sự cố. Khi
dừng thì đèn báo “H0” sáng.
Việc đảo chiều quay không thể thực hiện được sau khi nút dừng “S3” được ấn và
chưa hết 5s chờ cho động cơ dừng hẳn. Đèn báo chờ đợi “H3” sẽ chớp tắt với tần số
1Hz trong thời gian chờ động cơ dừng hẳn.
Bài tập 10: Thiết bị rót chất lỏng vào thùng chứa
131
Khi bật công tắc “S1” thì thùng từ kho chứa thùng rỗng sẽ được đưa vào băng
tải, và băng tải vận chuyển thùng hoạt động. Khi một thùng rỗng đến dưới bồn chứa
(được nhận biết bởi cảm biến “S2”) thì băng tải dừng. Van “Y1” mở rót chất lỏng
trong bồn vào thùng. Sau thời gian 5s thì thùng chứa đầy. Van “Y1” đóng lại, một
thùng rỗng sẽ được đưa vào băng tải và băng tải tiếp tục di chuyển cho đến khi nào
thùng đến dưới bồn chứa thì dừng lại. Quá trình cứ lặp lại. Nếu chất lỏng trong bồn
chứa hết thì còi “H1” sẽ báo với tần số 1Hz. Nếu thùng chứa trong kho hết thì băng tải
cũng tự động dừng sau thời gian 15s kể từ thùng cuối cùng được rót đầy.
Chú ý: “Y2” là một solenoid được sử dụng để chặn thùng trong kho. Để thùng rớt vào
băng tải chỉ cần solenoid có điện trong thời gian 100ms.
Bài tập 11: Điều khiển đèn giao thông
Lập trình chương trình điêu khiển hệ thống đèn giao thông tại ngã tư:
Nhấn Start hệ thống làm việc: Đèn đỏ sáng 70s, đèn vàng sáng 10s, đèn xanh
sáng 60s. Nhấn Stop dừng hệ thống và đèn vàng nhấp nháy.
Bài tập 12: Giám sát hoạt động băng tải bằng cảm biến phát xung
132
Một băng tải được truyền động thông qua một động cơ. Khi băng tải hoạt động
thì cảm biến giám sát băng tải “S2” phát xung có điện áp 24V với tần số 10Hz. Khi
băng tải đứng yên thì “S2” phát ra tín hiệu “0”. Khi có lỗi xảy ra, ví dụ băng tải bị kẹt,
tín hiệu giám sát không phát ra, ta cũng không biết là động cơ có tắt hay không. Trong
trường hợp này, động cơ kéo băng tải phải dừng ngay lập tức và chuông báo băng tải
bị lỗi “H1” vang với tần số 1Hz.
- Băng tải khởi động bằng nút nhấn “S1” (NO).
- Băng tải dừng bằng nút nhấn “S0” (NC).
Bài tập 13: Giám sát hoạt động băng tải bằng thời gian
Một băng tải vận chuyển sản phẩm được truyền động thông qua một động cơ.
Sản phẩm trên băng tải được nhận biết bởi hai cảm biến “S2” và “S3”. Thời gian tối
đa để sản phẩm di chuyển từ “S2” đến “S3” là 3s. Nếu vượt quá thời gian này thì băng
tải xem như bị lỗi. Khi bị lỗi thì động cơ kéo băng tải dừng ngay lập tức và một
chuông báo phát ra với tần số 3Hz.
- Băng tải khởi động bằng nút nhấn “S1” (NO).
- Băng tải dừng bằng nút nhấn “S0” (NC).
133
Khi nhấn nút LV thì cần bơm nguyên liệu di chuyển từ A đến B (nhờ động cơ 1
kéo). Khi đến B thì cần bơm dừng lại và bắt đầu bơm nguyên liệu vào bồn 1 nhờ bơm
1. Khi bồn 1 đầy thì ngừng bơm và mở van V1, đồng thời bơm nguyên liệu ra khỏi
bồn 1 nhờ bơm 2.
Khi bồn 1 đã cạn thì ngừng bơm 2 và đóng van V1 lại, sau đó cần bơm trở về vị
trí A. Muốn làm việc nữa thì nhấn nút LV trở lại.
Bài tập 15: Hệ thống khoan tự động
Hệ thống gồm 3 pitton 1A, 2A, 3A; 1A+, 2A+, 3A+ là các cuộn coil điều khiển
duỗi của lần lượt 3 van; 1A-, 2A-, 3A- là các cuộn coil điều khiển co của lần lượt 3
van; 1A1, 2A1, 3A1 là hành trình khi pittong co; 1A2, 2A2, 2A2 là hành trình khi
pittong duỗi. Nút nhấn khởi động SS2, nút nhấn dừng SS1; cảm biến nhận diện có sản
phẩm SS0; đèn báo H1; động cơ khoan AC Ma.
Nguyên lý hoạt động: Nếu không có sản phẩm, đèn chớp tắt với tần số 1Hz,
động cơ khoan Ma dừng. Nếu có sản phẩm, đèn sáng màu xanh, động cơ khoan Ma
hoạt động.
Nhấn SS2, pittong 1A đẩy sản phẩm ra khỏi kho đến cuối hành trình và kẹp chặt
sản phẩm. Pittong 2A đẩy khoan ăn xuống, đến cuối hành trình, delay thêm 2s sau đó
134
trở về vị trí ban đầu. Sau đó pittong 3A duỗi ra để đẩy sản phẩm vào thùng, hệ thống
quay về ban đầu.
Bài tập 16: Hệ thống khoan - doa
Sản phẩm từ dây chuyền được thực hiện khoan - doa sau khi đi qua hệ thống. Ở
trạng thái ban đầu, các pittong ở trạng thái co.
Nguyên lý hoạt động:
- Băng tải được điều khiển chuyển động dùng pittong 3A1 với giới hạn hành
trình 3B1 cà 3B2.
- Vật thể cần khoan được xác định bằng cảm biến B4, cần taro được xác định
bằng cảm biến B5.
- Hành trình của khoan được điều khiển bằng pittong 1A1, giới hạn bằng 1B1 và
1B2. Khi thực hiện khoan, động cơ quay theo chiều thuận, đồng thời với việc
pittong đẩy vào. Khi chạm giới hạn 1B2, động cơ quay theo chiều nghịch, đồng
thời với việc pittong kéo về cho đến khi chạm giới hạn1B1.
- Hành trình của taro được điều khiển bằng pittong 2A1, giới hạn bằng 2B1 và
2B2. Khi thực hiện taro, động cơ quay theo chiều thuận, đồng thời với việc
pittong đẩy vào. Khi chạm giới hạn 2B2, động cơ quay theo chiều nghịch, đồng
thới với việc pittong kéo về cho đến khi chạm giới hạn 2B1.
- Khi nhấn Start, pittong 3A1 duỗi ra vận chuyển sản phẩm đến. Nếu cảm biến
B4 phát hiện có vật thì thực hiện khoan. Nếu cảm biến B5 phát hiện có vật thì
taro. Sau khi động tác khoan và taro được thực hiện xong, pittong 3A1 lùi về để
tiếp tục vận chuyển sản phẩm đến.
135
Phân tích bài toán
Giai đoạn đầu: Động cơ khoan và động cơ làm mát nghỉ, Phần nâng/hạ khoan ở
vị trí trên cùng, Không có vật liệu trong phần kẹp
Trình tự khoan: Đưa đối tượng vào phần kẹp (bằng tay) → bật công tắc cho phần
làm mát (nếu cần) → nhấn nút START để chạy động cơ khoan → vật liệu được kẹp
với một áp lực đặt trước → hạ khoan tới vị trí thấp (Khoan) → chờ 0,5s ở vị trí thấp
(Khoan) → nâng khoan tới vị trí cao (Dừng khoan, dừng bơm nước) → tháo vật liệu
(bằng tay).
Bài tập 18: Băng chuyền đếm táo
Khi ấn nút khởi động ON thì băng chuyền thùng hoạt động. Khi thùng đến vị trí
thì dừng lại và băng chuyền táo hoạt động. Nếu số lượng táo đếm được bằng 12 thì
băng chuyền táo dừng. Băng chuyền chạy tiếp cho đến khi một thùng thứ hai đúng vị
trí thì dừng lại. Quá trình được lặp đi lặp lại cho đến khi nào ấn nút OFF.
136
Bài tập 19: Điều khiển dây chuyền rót và đóng lắp trai
Yêu cầu công nghệ: Nhấn nút ON băng tải 1 hoạt động đưa chai không chạy trên
băng tải 1, tới vị trí rót nhớt băng tải một dừng, hệ thống rót nhớt vào chai và đồng
thời băng tải 2 cũng hoạt động. Sau 5s (thời gian rót nhớt là 5s) thì băng tải 1 hoạt
động trở lại. Khi chai gặp cảm biến đóng lắp (tại băng tải 2) thì băng tải 2 dừng để quá
trình đóng lắp bắt đầu. Thời gian đóng lắp là 5s sau đó băng tải 2 hoạt động và vận
chuyển chai vào thùng. Một thùng 10 chai, khi đếm đủ mười chai thì số thùng tăng lên
một đơn vị. Nhấn nút nhấn OFF tắt dây chuyền, reset bộ đếm.
Trạng thái ban đầu tay gắp nằm ở vị trí trên cùng (được xác định bằng cảm biến
vị trí Ta) và bên trái (được xác định bằng cảm biến vị trí Tc). Khi mở máy, nếu tại vị
trí PDA không có sản phẩm băng tải hoạt động, nếu có sản phẩm băng tải dừng để đưa
sản phẩm tới vị trí được xác định bằng cảm biến vị trí “PDA”. Nếu tại PDA có sản
phẩm thì tay gắp sẽ đi xuống và thực hiện gắp sản phẩm trong thời gian 1s. Hết thời
gian tay gắp đi lên vị trí trên cùng và di chuyển sang phải tới vị trí được xác định bằng
137
cảm biến vị trí Td, tay gắp đi xuống dưới cùng và nhả sản phẩm trong thời gian 1s, tay
gắp tự động đi về vị trí ban đầu. Nếu tại PDA có sản phẩm, tay gắp thực hiện tiếp chu
trình như đã mô tả. Trong quá trình đang thực hiện việc gắp sản phẩm, nếu nhấn nút
tắt máy, hệ thống vẫn hoạt động cho tới hết chu trình dở rồi mới dùng lại ở vị trí ban
đầu. Nếu gặp sự cố, nhấn nút dùng khẩn cấp, hệ thống sẽ dừng tức thời tại vị trí đó.
Bài tập 21: Xe chuyển nhiên liệu
138
CHƯƠNG 3. PHƯƠNG PHÁP LẬP TRÌNH PLC
Nội dung chương 3 cung cấp cho sinh viên kiến thức về kỹ thuật lập trình PLC,
phương pháp lập trình PLC, các khối tổ chức và lập trình kỹ thuật. Từ đó sinh viên có
thể lựa chọn các kỹ thuật lập trình và phương pháp lập trình PLC tùy theo công nghệ
cụ thể.
3.1. KỸ THUẬT LẬP TRÌNH PLC
3.1.1. Vòng quét chương trình
PLC thực hiện chương trình theo chu kỳ lặp hay còn gọi là vòng quét (scan).
Mỗi vòng quét được bắt đầu bằng giai đoạn chuyển dữ liệu từ các cổng vào số tới
vùng bộ đệm ảo I, tiếp theo là giai đoạn thực hiện chương trình. Trong từng vòng quét
chương trình thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OB1. Sau giai đoạn
thực hiện chương trình là giai đoạn chuyển các nội dung của bộ đệm ảo Q tới các cổng
ra số. Vòng quét được kết thúc bằng giai đoạn truyền thông nội bộ và kiểm tra lỗi.
139
Nếu sử dụng các khối chương trình đặc biệt có chế độ ngắt, ví dụ như khối
OB35, OB40, … chương trình của các khối đó sẽ được thực hiện trong vòng quét khi
xuất hiện tín hiệu báo ngắt tương ứng. Các khối chương trình này có thể thực hiện tại
mọi điểm trong vòng quét chứ không bị gò ép là phải ở trong giai đoạn thực hiện
chương trình. Với hình thức xử lý tín hiệu ngắt như vậy, thời gian vòng quét càng lớn
khi càng có nhiều tín hiệu ngắt xuất hiện trong vòng quét, do đó để nâng cao tính thời
gian thực cho chương trình điều khiển không nên viết chương trình xử lý ngắt quá dài
hoặc quá lạm dụng việc sử dụng chế độ ngắt trong chương trình điều khiển.
3.1.2. Cấu trúc chương trình
Chương trình trong S7-1200/1500 được lưu trong bộ nhớ của PLC ở vùng dành
riêng cho chương trình và có thể được lập trình với hai dạng cấu trúc khác nhau.
Lập trình tuyến tính: Toàn bộ chương trình nằm trong một khối của bộ nhớ. Loại
hình thức cấu trúc tuyến tính này phù hợp với những bài toán tự động nhỏ, không
phức tạp. Khối được chọn phải là khối OB1, là khối mà PLC luôn quét và thực hiện
các lệnh trong đó thường xuyên, từ lệnh đầu tiên đến lệnh cuối cùng và quay lại.
Lập trình có cấu trúc: Chương trình được chia thành những phần nhỏ và mỗi
phần thực thi những nhiệm vụ chuyên biệt riêng của nó, từng phần này nằm trong
những khối chương trình khác nhau. Loại hình thức cấu trúc này phù hợp với những
bài toán điều khiển nhiều nhiệm vụ và phức tạp. Có 4 loại khối cơ bản sau:
OB (Organization Block): là khối tổ chức và quản lý chương trình điều khiển.
Có nhiều khối OB với những chức năng khác nhau, chúng được phân biệt với
nhau bằng một số nguyên đi sau nhóm ký tự OB. Ví dụ: OB1, OB35, OB40, …
FC (Function): là chương trình với những chức năng riêng giống như chương
trình con và hàm chức năng. Một chương trình ứng dụng có thể có nhiều FC và
các FC này được phân biệt với nhau bằng một số nguyên sau nhóm ký tự FC.
Ví dụ: FC1, FC2, FC3, …
FB (Function Block): là loại khối FC đặc biệt có khả năng trao đổi một lượng
dữ liệu lớn với các khối chương trình khác. Các dữ liệu này phải được tổ chức
thành khối dữ liệu riêng có tên gọi là Data block. Một chương trình ứng dụng
có thể có nhiều khối FB và các khối FB này được phân biệt với nhau bằng một
số nguyên sau nhóm ký tự FB. Ví dụ: FB1, FB2, FB3, …
DB (Data Block): chứa các dữ liệu cần thiết để thực hiện chương trình. Các
tham số của khối do người dùng tự đặt. Một chương trình ứng dụng có thể có
nhiều khối DB và các khối DB này được phân biệt với nhau bằng một số
nguyên sau nhóm ký tự DB. Ví dụ: DB1, DB2, DB3, … Có hai loại của khối
dữ liệu DB :
140
+ Global DB nơi mà tất cả các khối OB, FB và FC có thể đọc được dữ liệu lưu
trữ, hoặc có thể tự mình ghi dữ liệu vào DB.
+ Instance DB được gán cho một khối FB nhất định.
Chương trình trong các khối được liên kết với nhau bằng các lệnh gọi khối,
chuyển khối. Xem những phần chương trình trong các khối như là các chương trình
con thì PLC S7 - 1200/1500 cho phép gọi chương trình con lồng nhau, tức là chương
trình con này gọi một chương trình con khác. Số các lệnh gọi lồng nhau phụ thuộc vào
từng loại CPU; cụ thể với PLC S7-1200 có thể gọi 16 khối từ OB khởi động và thêm
6 khối từ các khối OB ngắt, với PLC S7-1500 có thể gọi 24 khối chương trình.
Khi một chương trình khối FB được gọi, một Data Block (DB) được gán với
instance DB. Dữ liệu trong Instance DB sau đó truy cập vào các biến của khối FB.
Các khu vực bộ nhớ khác nhau đã được gán cho một FB nếu nó được gọi ra nhiều lần.
Các khối tổ chức OB có thể gọi các chương trình FB, FC. Các khối OB sẽ không
gọi được nhau, cũng như các gọi FB/FC cũng không thể gọi OB. Hình 4.2 minh họa
cho cấu trúc chương trình cho PLC S7-1200/1500, mối tương quan giữa các khối và
chu trình thực hiện chương trình.
141
Startup routine
ON (Run)
OB 100 Warm
restart ...
Cyclic program
processing Interrupt-driven
Cycle program processing
OB 1
OB 10 ... 17
OB 56
Interruption
Interrupt ...
142
- Các cột của bảng ghi các biến vào và các biến ra. Các tín hiệu vào là các tín
hiệu điều khiển (α, β, …) và cũng có thể là tín hiệu điều khiển của người vận hành, của
thiết bị chương trình hoặc các tín hiệu phát ra từ các thiết bị công nghệ. Các tín hiệu ra
(Y1, Y2, …) là tín hiệu kết quả của quá trình điều khiển và được ghi ở cột đầu ra.
Số cột của bảng = (2số tín hiệu vào (n) + Số tín hiệu ra (m) +1.
- Các hàng của bảng ghi các trạng thái trong của mạch (S1, S2, …)
Số hàng của bảng = Số trạng thái trong cần có của hệ (k) +1.
- Các ô giao nhau của cột biến vào và các hàng trạng thái sẽ ghi trạng thái của
mạch. Nếu một trạng thái có tên trạng thái mạch trùng với tên hàng thì đó là trạng thái
ổn định hoặc trạng thái bền vững. Nếu trạng thái không trùng với tên hàng thì đó là
trạng thái không ổn định hay trạng thái không bền vững.
- Các ô giao nhau của cột tín hiệu ra và các hàng trạng thái sẽ ghi giá trị ra tương
ứng.
Xét ví dụ ở bảng 3.2: Với α, β, γ là các tín hiệu vào; Y1, Y2 là tín hiệu ra. Hệ có 3
trạng thái: S1 (làm việc ở tốc độ thấp), S2 (đảo chiều quay), S3 (dừng máy). Mỗi trạng
thái của mạch có thể có thể diễn đạt bằng ngôn ngữ và kèm theo một con số để gọi tên
trạng thái đó.
Bảng 3.2. Ví dụ mô tả công nghệ bằng bảng trạng thái
Trạng thái Tín hiệu vào Tín hiệu ra
α β γ Y1 Y2
S1 (tốc độ thấp) S1 S2 S3 0 0
Ví dụ ta xét trạng thái S1, lúc này máy hoạt động ở tốc độ thấp. Nếu lúc này cho
biến α tác động thì máy vẫn làm việc ở trạng thái S1 (trạng thái S1 là ổn định), nếu cho
biến β tác động thì máy sẽ chuyển sang trạng thái S2 (nhưng trạng thái S2 ghi ở hàng
S1 là không ổn định – trạng thái trung gian, mạch đang chuẩn bị chuyển đến trạng thái
ổn định khác), nếu cho biến γ tác động thì mạch sẽ chuyển từ trạng thái S1 sang trạng
thái S3 (trạng thái S3 không ổn định). Các biến đầu ra Y1 và Y2 lúc này đều bằng 0.
Tương tự như vậy ta sẽ lý giải các trạng thái và kết quả ở hàng 2, hàng 3.
3.2.1.2. Các bước tổng hợp mạch trình tự bằng phương pháp bảng trạng thái
Các bước tổng hợp mạch trình tự theo phương pháp bảng trạng thái là:
- Bước 1: Phân tích tín hiệu vào/ra → lập Graph chuyển trạng thái của hệ,
143
- Bước 2: Thành lập bảng chuyển trạng thái. (diễn đạt các yêu cầu công nghệ
thành ký hiệu kiểu bảng),
- Bước 3: Thành lập bảng trạng thái rút gọn,
- Bước 4: Xác định biến trung gian và tìm hàm logic của nó,
- Bước 5: Tìm hàm logic của các biến ra khi có mặt của biến trung gian,
- Bước 6: Lập sơ đồ mạch động lực và mạch điều khiển.
- Bước 7: Phân tích mạch điều khiển và hiệu chỉnh nếu có,
3.2.1.3. Ví dụ áp dụng
a) Ví dụ áp dụng 1: Điều khiển máy phay đơn giản
Máy phay đơn giản (hình 3.4) có nguyên lý hoạt động như sau: Khi ấn nút khởi
động M thì bàn máy di chuyển về hướng phải. Khi bàn máy gặp công tắc hành trình a1
thì tự động quay ngược trở lại. Trong chiều chạy ngược, nếu bàn phay đụng công tắc
hành trình a0 thì tự động đảo chiều. Quá trình cứ thế lặp đi lặp lại. Khi ấn nút dừng D
thì bàn phay dừng hoạt động.
144
Các bước tiến hành.
Bước 1: Phân tích tín hiệu vào/ra
+ Có 2 tín hiệu vào:
a0: Là công tác hành trình báo trạng thái chuyển động sang trái.
a1: Là công tác hành trình báo trạng thái chuyển động sang phải .
+ Các tín hiệu ra: Có 2 tín hiệu ra
P: Bàn máy sang phải (tín hiệu điều khiển động cơ quay thuận).
T: Bàn máy sang trái (tín hiệu điều khiển động cơ quay ngược).
Graph chuyển trạng thái được thiết lập như sau:
Trạng thái 1 (10/10) là trạng thái công tác hành trình a0 tác động (a0 =1), a1 chưa
tác động (a1=0). Khi đó bàn máy chạy sang phải (P =1, T=0). Khi bàn máy chạy khỏi
vị trí cảm biến thì a0 trở về trạng thái không tác động (a0=0), bàn máy vẫn tiếp tục
chạy sang phải, ta có trạng thái 2 (00/10). Khi bàn máy di chuyển sang phải và tác
động vào công tắc hành trình a1 (a1=1), thì bàn máy chuyển hướng chạy sang trái (P =
0, T= 1). Ta có trạng thái 3 (01/01). Khi bàn máy chạy khỏi vị trí công tắc hành trình
a1 thì a1 trở về trạng thái không tác động (a1=0), bàn máy vẫn tiếp tục chạy sang trái,
ta có trạng thái 4 (00/01). Bàn máy sau đó sẽ gặp a0 và chu trình sẽ lặp lại.
Nhìn vào Graph chuyển trạng thái ta thấy: Trạng thái 2 và trạng thái 4 có cùng tổ
hợp tín hiệu vào nhưng tổ hợp tín hiệu ra lại khác nhau, chính vì sự khác nhau đó nên
công nghệ đã cho mới được gọi là mạch kép. Nhiệm vụ của người thiết kế: phân biệt
điểm “nước đôi” – là điểm mà tại đó có nhiều hơn một tín hiệu ra.
Bước 2: Thành lập bảng chuyển trạng thái
- Số cột: Số tổ hợp biến vào + số biến ra +1
Trong đó: Số tổ hợp biến vào = 2 số biến vào = 22 = 4
Số biến ra: 4 (P, T)
Vậy: Số cột = 4 + 2 + 1 = 7
Số hàng = Số trạng thái +1
Trong đó: Số trạng thái = 4 (1, 2, 3, 4) → Số hàng = 4 + 1 = 5
Từ trên ta có bảng trạng thái như bảng 3.3.
145
Bảng 3.3. Bảng chuyển trạng thái
Trong bảng trên các ký hiệu 1 , 2 , 3 , 4 là các trạng thái ổn định còn 1, 2,
3, 4 là các trạng thái không ổn định.
Bước 3: Rút gọn bảng chuyển trạng thái
Rút gọn bảng chuyển trạng thái là ghép các hàng của bảng chuyển trạng thái.
Các hàng trong bảng chuyển trạng thái có thể ghép được với nhau khi chúng thỏa mãn
các yêu cầu sau:
Không quan tâm đến các đầu ra của các trạng thái ứng với các hàng.
Tất cả các ô cùng cột phải được điền cùng một số (không quan tâm đến ổn định
hay không ổn định), hoặc là ô trống. Nếu chỉ cần một cột có 2 ô trong cột đó
điền số khác nhau thì không ghép được.
Nguyên tắc ghép hàng như sau:
Nếu ghép các ô có trạng thái ổn định với trạng thái không ổn định sẽ ghi trạng
thái ổn định.
Ghép các ô có trạng thái ổn định hoặc không ổn định với một ô trống thì sẽ ghi
trạng thái ổn định hoặc không ổn định.
Vậy từ bảng trạng thái 3.3; ta thấy hàng 1 và 2 có thể ghép với nhau, hàng 3 và 4
có thể ghép với nhau. Ta có bảng bảng 3.4.
Bảng 3.4. Rút gọn bảng trạng thái 3.3
Trạng thái 00 01 11 10
10 10
1 + 2 2 3 1
01 01
3 + 4 4 3 1
Bước 4: Xác định biến trung gian và tìm hàm số logic trung gian.
Biến trung gian có nhiệm vụ phân biệt các trạng thái ra khi tổ hợp biến vào giống
nhau. Đây là điểm khác biệt của mạch trình tự và mạch tổ hợp, với mạch tổ hợp thì
tương ứng với một tổ hợp tín hiệu vào chỉ có duy nhất tổ hợp tín hiệu ra.
146
+ Xác định số lượng biến trung gian dựa vào công thức:
2Smin ≥ n1 − 1
Trong đó: Smin là số lượng biến trung gian tối thiểu phải dùng.
n1 là số hàng của bảng trạng thái sau khi đã rút gọn. Khi đó (n1-1) chính là số
trạng thái cần phân biệt
Trong ví dụ ta có: n1 = 3 → Smin = 1
→ Số lượng biến trung gian cần dùng là 1. Gọi biến trung gian đó là y.
Số trạng thái cần phân biệt là 2 (đó là trạng thái đi xuống X và sang phải P).
+ Từ bảng 3.4 ta có thể mã hóa biến trung gian như bảng 3.5.
Bảng 3.5. Mã hóa biến trung gian
1 2
y 3 4
Cách mã hóa trên có nghĩa là: Tương ứng với các trạng thái 3 và trạng thái 4
thì biến y có giá trị 1, còn các trạng thái 1 và 2 biến y sẽ có giá trị 0.
+ Để tìm được hàm logic của biến trung gian thì phải lập được bảng Karnaugh
cho biến trung gian.
Cách lập bảng Karnaugh cho biến trung gian được thực hiện như bảng 3.6. Đối
với biến trung gian chúng ta phải xét cả trường hợp các trạng thái không ổn định. Giá
trị của biến trung gian đối với các trạng thái không ổn định sẽ bằng giá trị của nó đối
với trạng thái ổn định có cùng tên.
Bảng 3.6. Bảng Karnaugh cho biến trung gian Y
a0a1 00 01 11 10
y
0 0 1 0
1 1 1 0
Các trạng thái 1 và 2 ứng với y = 0 nên trong các ô trong bảng Karnaugh ứng với
các ô trong bảng trạng thái rút gọn có ghi trạng thái 1 và 2 (ổn định và không ổn định)
ta điền giá trị 0. Các trạng thái 3 và 4 ứng với y = 1 nên trong các ô trong bảng
Karnaugh ứng với các ô trong bảng trạng thái rút gọn có ghi trạng thái 3 và 4 (ổn định
và không ổn định) ta điền giá trị 1.
Tối thiểu hóa được hàm logic cho biến trung gian Y như sau: f (Y ) = a1 + a0 . y
147
Bước 5: Tìm hàm logic của các biến ra
Làm tương tự như đối với biến trung gian nhưng khác ở chỗ không xét đến các
trạng thái không ổn định.
+ Tìm hàm logic cho biến ra P:
Bảng 3.7. Bảng Karnaugh viết cho biến ra P
a0a1 00 01 11 10
y
0 1 1
1 0 0
Các trạng thái 1 và 2 ứng với P = 1, trạng thái 3 và 4 ứng với P = 0 nên trong các
ô trong bảng Karnaugh ứng với các ô trong bảng trạng thái rút gọn có ghi trạng thái 1
và 2 ổn định ta điền giá trị 1, ghi trạng thái 3 và 4 ổn định ta điền 0, ghi các trạng thái
không ổn định ta để trống. Cuối cùng ta được bảng Karnaugh như bảng 3.7 và tối
thiểu hóa được hàm logic sau: f ( P ) = y .
+ Tìm hàm logic cho biến ra T.
Bảng 3.8. Bảng Karnaugh viết cho biến ra T
a0a1 00 01 11 10
y
0 0 0
1 1 1 1
Các trạng thái 1 và 2 ứng với T = 0, trạng thái 3 và 4 ứng với T = 1 nên trong các
ô trong bảng Karnaugh ứng với các ô trong bảng trạng thái rút gọn có ghi trạng thái 1
và 2 ổn định ta điền giá trị 0, ghi trạng thái 3 và 4 ổn định ta điền 1, ghi các trạng thái
không ổn định ta để trống. Cuối cùng ta được bảng Karnaugh như bảng 3.8 và tối
thiểu hóa được hàm logic sau: f (T ) = y .
Các phương trình logic của các biến ra và biến trung gian đã tìm được như sau:
f (Y ) = a1 + a0 . y
f ( P) = y
f (T ) = y
Bước 6: Phân tích mạch điều khiển và hiệu chỉnh nếu có
Trạng thái đi sang phải - sang trái là các trạng thái trái đối ngược nhau, là quá
trình quay thuận, quay ngược của động cơ. Cho nên các trạng thái trên không được có
148
đồng thời, vì vậy chúng ta bổ xung thêm các phần tử khóa chéo (bảo vệ liên động
điện). Các hàm logic của P, T được hiệu chỉnh như sau: f ( P ) = yt , f (T ) = yt . Từ các
hàm logic thu được, tiến hành xây dựng chương trình PLC.
b) Ví dụ áp dụng 2: Hệ thống điều khiển cần trục có sơ đồ công nghệ như hình 3.6.
149
Graph chuyển trạng thái được thiết lập như sau:
Nhận xét: Từ Graph chuyển trạng thái trên thì ta sẽ có bảng chuyển trạng thái
lớn. Vậy để đơn giản chúng ta có thể coi:
a=0 tương ứng a0
a=1 tương ứng a1
b=0 tương ứng b0
b=1 tương ứng b1
Chọn biến a thay cho a0 và a1 sao cho: a0 tác động làm cho biến a được thiết lập
giá trị 0, duy trì giá trị 0 khi a0 đã ngừng tác động. Và biến a chỉ được thiết lập giá trị
1 khi biến a1 tác động và duy trì giá trị 1 khi a1 ngừng tác động. Lý luận tương tự cho
biến b.
a = (a1 + a )a0
Do đó ta có mối quan hệ sau:
b = (b1 + b)b0
Graph chuyển trạng thái trở thành:
150
Bảng 3.9. Bảng chuyển trạng thái cho công nghệ hệ thống điều khiển cần trục
Trạng Biến vào Biến ra
thái
00 01 11 10 X L P T
1 1 2 1 0 0 0
2 3 2 0 1 0 0
3 3 4 0 0 1 0
4 1 4 0 0 0 1
Bước 3: Thành lập bảng trạng thái rút gọn (bảng 3.10).
Bảng 3.10. Rút gọn bảng trạng thái 3.9
Trạng thái 00 01 11 10
1 + 4 1 4 2
2 + 3 3 4 2
Bước 4: Xác định biến trung gian và tìm hàm số logic trung gian.
Số lượng biến trung gian cần dùng là 1. Gọi biến trung gian đó là y. Số trạng thái
cần phân biệt là 2, đó là trạng thái đi xuống X và sang phải P.
Ta có bảng mã hóa như bảng 3.11.
Bảng 3.11. Mã hóa biến trung gian
1 4
y 2 3
+ Tìm hàm logic cho biến trung gian: Lập bảng Karnaugh như bảng 3.12.
Bảng 3.12. Bảng Karnaugh viết cho biến trung gian Y
ab 00 01 11 10
y
0 0 0 1
1 1 0 1
Tổng hợp bảng Karnaugh trên ta có: hàm logic của biến trung gian:
f (Y ) = a + b . y
Bước 5: Tìm hàm logic của các biến ra
+ Tìm hàm logic cho biến ra X
151
Bảng 3.13. Bảng Karnaugh cho biến ra X
ab 00 01 11 10
y
0 1 0 1
1 0 0
Từ bảng 3.13 ta có hàm logic viết cho biến X:
f ( X ) = b .y
+ Tìm hàm logic cho biến ra L
Bảng 3.14. Bảng Karnaugh viết biến ra L
ab 00 01 11 10
y
0 0 0
1 0 1
Từ bảng 3.14, ta có hàm logic viết cho biến L: f ( L ) = a
+ Tìm hàm logic cho biến ra P
Bảng 3.15. Bảng Karnaugh viết cho biến P
ab 00 01 11 10
y
0 0 0
1 1 0
Từ bảng 3.15, ta có hàm logic viết cho biến P:
f ( P ) = ay
+ Tìm hàm logic cho biến ra T.
Bảng 3.16. Bảng Karnaugh viết cho biến ra T
ab 00 01 11 10
y
0 0 1
1 0 0
Từ bảng 3.16, ta có hàm logic viết cho biến T:
152
f (T ) = b
Các phương trình logic của các biến ra và biến trung gian đã tìm được như sau:
f (Y ) = a + b . y
f ( X ) = b .y
f ( L) = a
f ( P ) = ay
f (T ) = b
Bước 6: Phân tích mạch điều khiển và hiệu chỉnh
Trạng thái đi xuống- đi lên và sang phải - sang trái là các trạng thái trái đối
ngược nhau, là quá trình quay thuận, quay ngược của các động cơ. Cho nên các trạng
thái trên không được có đồng thời, vì vậy chúng ta bổ xung thêm các phần tử khóa
chéo (bảo vệ liên động điện). Các hàm logic của X, L, P, T được hiệu chỉnh như sau:
f ( X ) = b . y .l , f ( L ) = a.x , f ( P ) = ayt , f ( T ) = b p .
153
Việc phát tín hiệu điều khiển trong hệ thống được thực hiện do sự bắt đầu hoạt
động hay sự bắt đầu ngừng hoạt động của các phần tử. Phần tử đứng trước là nguyên
nhân gây nên sự bắt đầu hoạt động hay ngưng hoạt động của phần tử đứng ngay sau
nó. Chẳng hạn sự ngừng hoạt động của X (-X) làm ngừng hoạt động Z (-Z)…
Nếu có sự hoạt động đồng thời (hoạt động song song) giữa một số phần tử thì
các phần tử được đặt trong dấu ngoặc đơn. Ví dụ: F = A (+X, +Y)…có nghĩa là tín
hiệu điều khiển A gây nên sự hoạt động đồng thời của X, Y.
Trong hàm tác động F, các phần tử phát tín hiệu điều khiển từ ngoại vi vào hệ
thống (hay các phần tử đầu vào, các phần tử điều khiển) như các nút nhấn, các công
tắc hành trình, các bộ cảm biến thì trước chúng có thể không cần đặt dấu (+) nhưng
lúc này chúng ta vẫn hiểu là trước chúng có dấu (+). Dấu (+) này chỉ rằng nó bắt đầu
hoạt động (được đưa vào hệ thống trạng thái tích cực). Dấu (+) ở đây không có nghĩa
là chúng nhận tín hiệu của phần tử đứng ngay trước nó để bắt đầu hoạt động, mà có
nghĩa rằng do tác động của các tác nhân từ bên ngoài hệ thống làm cho nó hoạt động
phát tín hiệu vào hệ thống (chẳng hạn người ta thao tác nhấn nút, công tắc hành trình
bị tác động, các sensor đặt mức ngưỡng đã đặt…).
Khi trước chúng có dấu (-) thì hiểu là phần tử điều khiển này trước đó đã hoạt
động và lúc này bắt đầu ngừng hoạt động cũng do các tác nhân bên ngoài hệ thống.
Để làm rõ tính chất của các tín hiệu của các phần tử loại này, người ta phân biệt
hai trường hợp:
- Nếu tín hiệu chúng phát ra có dạng một xung thì lúc đó trong hàm tác động (F)
sẽ chỉ xuất hiện dấu (+) mà không thấy xuất hiện dấu (-), loại tín hiệu này chỉ xuất
hiện một thời gian ngắn trong quá trình làm việc của hệ (thiết bị tương ứng là nút
nhấn…).
- Nếu tín hiệu phát ra là tín hiệu thế (mức liên tục) thì lúc đó trong hàm F chúng
sẽ xuất hiện với dấu (+) và sau đó là với dấu (-)…
Các tín hiệu vào thường ký hiệu bằng các chữ cái ở đầu bảng chữ cái La Tinh
(A, B, C…) và các phần tử chấp hành đầu ra của hệ thống thường ký hiệu bằng các
chữ cái ở cuối bảng chữ cái La Tinh như X, Y, Z, …Khi cần dùng đến các biến trung
gian (biến trong, biến nội bộ không đưa tín hiệu ra ngoài) thường dùng các chữ cái ở
khoảng giữa của bảng chữ cái La Tinh như K, L, …, P, Q, …
3.2.2.2. Các bước tổng hợp bằng phương pháp hàm tác động
Bước 1: Phân tích tín hiệu vào/ra.
- Xác định tín hiệu vào.
- Xác định tín hiệu ra.
154
Bước 2: Xác định chu kỳ hoạt động của từng phần tử chấp hành và chu kỳ
hoạt động của cả hệ.
Mỗi phần tử châp hành đều có chu kỳ hoạt động riêng bao gồm hai giai đoạn:
giai đoạn đóng (giai đoạn làm việc - ON) và giai đoạn cắt (giai đoạn nghỉ - OFF).
Ví dụ trong hàm tác động:
1 2 3 4 5 6 7 8 9 1 2 3
F = A (+X, +Y) + B – Y + C + Z – X – Z + A (+ X, + Y)…
Phần tử chấp hành X có một chu kỳ hoạt động gồm giai đoạn đóng từ thời điểm
2 đến thời điểm 7, giai đoạn cắt từ thời điểm 8 đến thời điểm 1 của chu kỳ sau. Chu kỳ
của hệ thống từ 1 đến 9.
Ngoài phần tử X thì phần tử Y và Z cũng là các phần tử chấp hành đầu ra, đều
phải xác định chu kỳ làm việc cho chúng.
Bước 3: Xác định hàm logic cho từng phần tử chấp hành.
Hàm điều khiển của phần tử X là f(X) bao gồm hàm đóng fđ(X) và hàm cắt fc(X)
theo công thức sau:
f ( X ) = f d ( X ). f c ( X )
Cách xác định fđ(X) và fc(X) như sau:
Trong phương pháp này, hàm đóng hay hàm cắt của một phần tử nào đó chính là
tín hiệu mà nó nhận được từ phần tử đứng ngay trước nó trong dãy F để khởi động
hoặc kết thúc sự làm việc của phần tử đó. Sẽ có thể xảy ra các trường hợp sau:
+ Nếu trong hàm F có một đoạn sau:
F = ... + Y + X ...
thì: fd ( X ) = y
+ Nếu có đoạn:
F = ... − Y + X ...
thì: fd ( X ) = y
Tương tự cho hàm cắt:
+ Nếu có
F = ... + Y − X ...
thì: fc ( X ) = y
+ Nếu có
F = ... − Y − X ...
thì: fc ( X ) = y
155
Nếu mỗi phần tử chấp hành nào đó có nhiều chu kỳ hoạt động thì hàm tác động
tổng được xác định như sau: (trong đó n là số chu kỳ hoạt động)
f ( X ) = f1 ( X ) + f 2 ( X ) + .... + fi ( X ) + ... + f n ( X )
Bước 4: Kiểm tra tính đúng đắn của hàm điều khiển vừa xác định được, bao
gồm kiểm tra trong giai đoạn đóng và kiểm tra trong giai đoạn cắt.
Kiểm tra hàm đóng sẽ xảy ra hai trường hợp:
+ fđ(X) không đổi trị trong giai đoạn đóng, fđ(X) thỏa mãn hàm F.
+ Nếu fđ(X) đổi trị trong giai đoạn đóng, sẽ không thỏa mãn hàm F vì không bảo
đảm tác động suốt trong cả giai đoạn đóng của hàm F. Lúc này phải hiệu chỉnh hàm
fđ(X) bằng cách đưa vào một biến trung gian p1, làm cho hàm đóng mới sau khi hiệu
chỉnh là không đổi trị trong giai đoạn đóng. Hàm đóng mới đã được hiệu chỉnh là:
f d' ( X ) = f d + p1
Và hàm điều khiển mới sau hiệu chỉnh là:
fi ( X ) = f di' ( X ). f ci ( X )
fi ( X ) = ( f di ( X ) + p1 ). f ci ( X )
Trong nhiều trường hợp có thể dùng trị duy trì của chính phần tử đầu ra để hiệu
chỉnh mà không cần đưa thêm biến phụ vào, tức là:
f di ( X ) = f di ( X ) + x
fi ( X ) = ( f di ( X ) + x). f ci ( X )
Kiểm tra hàm cắt cũng xảy ra hai trường hợp.
+Nếu fc(X) không đổi trị trong giai đoạn đóng, tức là trong giai đoạn đóng hàm
fci(X) phải luôn bằng 0, lúc đó fc(X) thỏa mãn.
+Nếu fc(X) đổi trị trong giai đoạn đóng, tức có xuất hiện giá trị 1 chứ không phải
luôn bằng 0 sẽ làm cho f ( X ) = f d ( X ) = f c ( X ) = 0 sẽ làm ngừng hoạt động của X
ngay trong giai đoạn đóng. Lúc này phải dùng thêm biến trung gian p2 để hiệu chỉnh
hàm cắt:
f c' ( X ) = f c ( X ). p2
Và hàm điều khiển của phần tử X sẽ là:
f ( X ) = f d ( X ). f c ( X ). p2
Nếu cả hàm đóng và hàm cắt đều phải hiệu chỉnh thì ta có:
f ( X ) = [f d ( X ) + p1 ]. f c ( X ). p2
156
Khi đã đưa các biến phụ p1 và p2 vào hiệu chỉnh thì sau đó phải xác định được
hàm logic của p1 và p2. Để làm được việc này cần phải vạch rõ ra rằng các biến phụ
này cần phải xuất hiện ở đâu và phải kết thúc ở đâu trong dãy hoạt động của hàm F.
Trong bước này để có được kết quả đơn giản luôn luôn phải xét đến khả năng tự duy
trì và khả năng kết hợp hai biến trung gian p1 và p2 làm một biến trung gian p nếu p
thỏa mãn được miền thời gian của p1 và p2.
Kiểm tra tính đúng đắn của các hàm thu được trong mỗi chu kỳ hoạt động.
Nếu thấy hàm nào có giá trị bằng 1 khi chưa đưa tín hiệu vào (tự khởi động) và
trái với công nghệ thì khi đó phải đưa thêm biến phụ. Việc kiểm tra phải tiến hành cho
mọi hàm logic của các phần tử đầu ra, cũng như của biến trung gian.
Bước 5: Viết chương trình điều khiển trên PLC
Bước 6: Phân tích chương trình điều khiển và hiệu chỉnh nếu có.
3.2.2.3. Ví dụ áp dụng
a) Ví dụ áp dụng 1: Hãy thiết kế hệ thống điều khiển cho công nghệ như hình 3.7
bằng phương pháp hàm tác động.
a0 a1
P
T
Hình 3.7. Sơ đồ công nghệ ví dụ 1
Các bước tiến hành.
Bước 1: Phân tích tín hiệu vào/ra:
+ Có 2 tín hiệu vào:
a0: Là tín hiệu báo trạng thái chuyển động sang trái.
a1: Là tín hiệu báo trạng thái chuyển động sang phải .
+Các tín hiệu ra: Có 2 tín hiệu ra
P: Trạng thái sang phải.
T: Trạng thái sang trái.
Bước 2: Xác định chu kỳ hoạt động
Ta có hàm tác động của hệ thống như sau:
1 2 3 4 5 6
F = (+ao – T) + P + (a1 – P) + T + …
Chu kỳ hoạt động của hệ là từ 1 → 6, ta thấy trong một chu kỳ của hệ thống:
- Phần tử P: giai đoạn đóng 3 → 4, giai đoạn cắt 5→ 2 sau.
157
- Phần tử T: giai đoạn đóng 6→1 sau, giai đoạn cắt 2→ 5.
Bước 3: Xác định hàm điều khiển của các phần tử.
a) Phần tử P:
fñ ( P) = a0T
fc (P ) = a1
f (P ) = a0 T .a1
b) Phần tử T:
fñ (T ) = a1P
fc (T ) = a0
f (T ) = a1 P.a0
Bước 4: Kiểm tra tính đúng đắn của hàm điều khiển vừa xác định được.
a) Phần tử P
- Kiểm tra hàm đóng fđ(P): hàm đóng f(P) đổi trị trong giai đoạn đóng, do tín
hiệu vào a0 là công tắc hành trình (dạng tín hiệu xung), nên ngay sau khi thiết bị rời
khỏi vị trí a0 thì a0=0, nó làm cho hàm đóng bằng 0. Vì thế ta phải sử dụng biến trung
gian, trong trường hợp này ta hiệu chỉnh bằng tự duy trì của P. Nên hàm đóng hiệu
chỉnh sẽ là:
fñ ' (P) = (a0 + p)T
- Kiểm tra hàm cắt fc(P): Hàm cắt fc (P ) không đổi trị trong giai đoạn đóng của
chúng. Nên hàm cắt thỏa mãn yêu cầu.
Vậy f ' ( P) = (a0 + p)T .a1
b) Phần tử T
- Kiểm tra hàm đóng fđ(T): hàm đóng f(T) đổi trị trong giai đoạn đóng, do a1
cũng là dạng tín hiệu xung, nên ngay sau khi thiết bị rời khỏi vị trí a1 thì a1=0, nó làm
cho hàm đóng bằng 0. Vì thế ta phải sử dụng biến trung gian, trong trường hợp này ta
cũng hiệu chỉnh bằng tự duy trì của T. Nên hàm đóng hiệu chỉnh của T sẽ là:
fñ ' (T ) = (a1 + t )P
- Kiểm tra hàm cắt fc(T): Hàm cắt fc (T ) không đổi trị trong giai đoạn đóng của
chúng. Nên hàm cắt thỏa mãn yêu cầu.
Vậy f ' (T ) = (a1 + t )P.a0
Cuối cùng ta có hàm F = f ' ( P ) + f ' (T ) = (a0 + p)T .a1 + (a1 + t )P.a0
158
b) Ví dụ áp dụng 2: Tổng hợp công nghệ hình 3.5 theo phương pháp hàm tác động.
159
Bước 3: Xác định hàm điều khiển của các phần tử. Sau khi xác định được
hàm điều khiển ta thực hiện bước 4 là kiểm tra tính đúng đắn của hàm điều khiển
vừa xác định được.
Phần tử P:
fñ ( P) = a0T
fc (P ) = a1
f (P ) = a0 T .a1
Kiểm tra hàm fđ(P): a0 là tín hiệu xung nên fđ(P) bị mất ngay sau khi a0 mất. Để
hiệu chỉnh hàm trong trường hợp này ta dùng tự duy trì của đầu ra P:
fñ' ( P) = (a0 + p)T
Kiểm tra hàm f c ( P) = a1 : Hàm cắt không thay đổi giá trị trong giai đoạn đóng
của phần tử nên hàm cắt thỏa mãn yêu cầu.
f ' ( P) = f d' (T ). fc (T ) = (a0 + p)T .a1
Phần tử T:
fñ (T ) = b0 L
fc (T ) = a0
f (T ) = b0 L .a0
Kiểm tra fđ(T): b0 là tín hiệu xung nên fđ(T) bị mất ngay sau khi b0 mất. Để hiệu
chỉnh hàm trong trường hợp này ta dùng tự duy trì của đầu ra T:
fñ ' (T ) = (b0 + t )L
Kiểm trả hàm cắt fc (T): Hàm cắt thỏa mãn.
Ta nhận thấy đi sang phải, sang trái là các cặp đối ngược nhau. Tức là nếu có P
thì không có T, nếu có T thì không có P. Chu trình sang phải và sang trái là điều khiển
động cơ quay thuận hoặc ngược. Vì vậy để bảo vệ liên động điện cho động cơ, ta hiệu
chỉnh hàm cắt của T như sau: fc (T ) = a0 P .
161
làm việc còn X không làm việc thì ta phải đưa thêm vào hàm điều khiển X biến phụ
q2. Khi đó:
fhc' ( X ) = (a1 + x )Pb1 q2
Xác định hàm điều khiển cho biến phụ q2: Biến phụ q2 tác động khi b1 tác động
và mất tác động khi a0 tác động. Hàm tác động của biến trung gian q1 được xác định
như sau: (b1 là biến xung nên ta dùng tự duy trì của đầu ra để duy trì hàm đóng)
f (Q2 ) = (b1 + q2 )a0
Kết quả cuối cùng ta thu được như sau:
f ' ( P ) = f d' (T ). f c (T ) = (a0 + p )T .a1
f hc' (T ) = (b0 + t ) La0 Pq1
f hc' ( X ) = ( a1 + x) Pb1 Lq2
f ( L) = (b1 + l ) X b0
f (Q1 ) = (a0 + q1 )b1
f (Q2 ) = (b1 + q2 )a0
Khi phân tích mạch điều khiển, ta thấy có thể bỏ các tiếp điểm thường đóng L
của hàm T, tiếp điểm thường đóng P của hàm X mà không ảnh hưởng đến nguyên lý
hoạt động của công nghệ.
c) Vi dụ áp dụng 3: Hãy thiết kế hệ thống điều khiển cho công nghệ hình 3.9 bằng
phương pháp hàm tác động.
162
Từ sơ đồ công nghệ và các hàm tác động tìm được, xem xét khả năng biến vào
(hoặc các tổ hợp biến vào) xuất hiện trong các hàm đóng mấy lần. Nếu xuất hiện n lần
thì cần (n-1) biến trung gian.
Tìm hàm trung gian, ta phải xem xét nó xuất hiện khi nào và mất khi nào để
phân biệt được số lần xuất hiện của các biến vào.
Dưới đây sẽ giải quyết bài toán theo hướng suy luận trên.
Bước 1: Phân tích tín hiệu vào/ra
Các tín hiệu vào: A, B, C
Các tín hiệu ra: X, L, P, T
Bước 2: Xác định hàm tác động của từng phần tử.
fñ ( X ) = ( A + x )
f ( X ) = fñ ( X ). fc ( X ) = ( A + x ) Bl
fc ( X ) = B + l
fñ ( L ) = ( B + l )
f ( L ) = fñ ( L ). fc ( L ) = ( B + l) A x
fc ( L ) = A + x
fñ ( P ) = ( A + p)
f ( P ) = fñ ( P ). fc ( P ) = ( A + p)Ct
fc ( P ) = C + t
fñ (T ) = (C + t )
f (T ) = fñ (T ). fc (T ) = (C + t ) A p
fc (T ) = A + p
Bước 3: Xác định biến trung gian
Ta thấy tại vị trí A, có khả năng xảy ra hai trường hợp:
- Gặp A lần thứ nhất: Có tín hiệu ra X,
- Gặp A lần thứ hai: Có tín hiệu ra P.
Như vậy biến vào A xuất hiện hai lần trong hàm đóng của X và P. Ta cần một
biến trung gian để phân biệt các trạng thái này. Đặt biến trung gian là y.
Giả sử khi gặp A lần thứ nhất thì y chưa xuất hiện, khi gặp A lần thứ hai thì y đã
xuất hiện, có nghĩa là y xuất hiện khi bắt đầu gặp B (sau khi gặp A lần thứ nhất) và tín
hiệu y mất khi gặp C.
Vậy hàm tác động của biến trung gian y được xác định như sau:
fñ (Y ) = B + y
f (Y ) = ( B + y )C
fc (Y ) = C
Hàm tác động của các phần tử khi có biến phụ y:
163
f ( X ) = ( A + x ) By l
f ( L ) = ( B + l) Ax
f ( P ) = ( A + p)Cyt
f (T ) = (C + t ) A p
f (Y ) = ( B + y )C
3.2.3. Phương pháp Grafcet
3.2.3.1. Khái niệm và các thành phần của Grafcet
Grafcet là từ viết tắt của tiếng pháp “Graphe fonctionnel de commande estape
transition”, là một đồ hình chức năng cho phép mô tả các trạng thái làm việc của hệ
thống và biểu diễn quá trình điều khiển với các trạng thái chuyển biến từ trạng thái
này sang trạng thái khác. Grafcet cho một quá trình luôn luôn là một đồ hình khép kín
trạng thái đầu đến trạng thái cuối và từ trạng thái cuối đến trạng thái đầu.
Mạch trình tự có đặc tính hoạt động theo chu kỳ, người ta có thể cho nó hoạt
động một chu kỳ hoặc cho nó hoạt động tự động liên tiếp nhiều chu kỳ. Trong mỗi
chu kỳ hệ thống trải qua nhiều giai đoạn, ở các giai đoạn khác nhau thì trạng thái của
hệ sẽ khác nhau. Trong một trạng thái, hệ thống có thể thực hiện một hay vài hành
động đầu ra, cũng có thể không có hành động đầu ra nào mà chỉ có sự thay đổi trạng
thái nội bộ (trạng thái trong).
Hệ thống chỉ có thể chuyển từ giai đoạn này sang một giai đoạn khác tiếp sau khi
có một sự kiện nào đó xảy ra, sự kiện này được gọi là biến cố. Biến cố là sự kiện xảy
ra làm cho hệ thống vận động từ giai đoạn trên xuống giai đoạn dưới.
a) b)
Hình 3.11. Các loại biến cố
Các điều kiện logic cũng có thể là sự lật trạng thái (0 lên 1 hay 1 xuống 0) của
các biến điều khiển hay của hàm ra như hình 3.11a. Để vận động từ 5 xuống 6 cần
xuất hiện sườn lên của a, để chuyển từ 6 xuống 7 cần xuất hiện sườn xuống của Y.
165
Khi thời gian là một điều kiện logic thì phải chỉ ra đầy đủ sau ký hiệu t gốc thời
gian quy định và khoảng thời gian kéo dài của nó tính từ gốc đã chỉ.
Khi một giai đoạn bắt đầu tích cực được lấy làm mốc thời gian của một thời gian
trễ, nó có thể được dùng cách thể hiện như là một hành động gắn với giai đoạn này. Ví
dụ xem hình 3.11b, với cách ghi t/8/5s chỉ rằng thời gian trễ là 5s tính từ lúc giai đoạn
8 bắt đầu tích cực, tương tự t/8/10s chỉ rằng thời gian trễ là 10s kể từ lúc giai đoạn 8
bắt đầu tích cực.
c) Các đường định hướng
Các đường định hướng hướng chỉ ra các con đường vận động của Grafcet, nối
các giai đoạn với biến cố rồi biến cố với các giai đoạn theo quy tắc xen kẽ. Nó có thể
nằm ngang hoặc thẳng đứng. Chiều của các liên lạc này là từ trên xuống dưới, đi vào
giai đoạn cũng như đi ra khỏi giai đoạn đều phải vẽ vuông góc với giai đoạn, và không
cần ghi dấu mũi tên. Các dấu mũi tên chỉ sử dụng khi mà biến cố đi vào trạng thái ban
đầu, và khi Grafcet có phân nhánh hay quay vòng.
d) Các hành động
Các hành động đầu ra gắn với các giai đoạn là những hành động phải được thực
hiện khi giai đoạn nó gắn vào là tích cực. Các hành động này có thể rất đa dạng.
Chẳng hạn như được chỉ ra trên hình 3.12a.
Có các kiểu hành động gắn liền với các giai đoạn như dưới đây.
Hành động có điều kiện: Việc thực hiện một hành động đầu ra gắn với một giai
đoạn đôi khi phải chịu nhưng điều kiện logic của sự thay đổi tín hiệu vào hoặc của
trạng thái tích cực hay không tích cực của một giai đoạn khác. Trên hình 3.12b hành
động bật sáng đèn L1 là hành động có điều kiện.
Hành động mức: là hành động được thực hiện suốt cả thời gian mà giai đoạn nó
gắn vào ở trạng thái tích cực.
Hành động xung: là hành động chỉ được thực hiện ngay khi giai đoạn mà nó
được gắn vào trở lên tích cực và chỉ được tiếp tục trong một khoảng thời gian nào đó.
a) b)
Hình 3.12. Các loại hành động có thể xảy ra của các giai đoạn
166
3.2.3.2. Các kiểu kết cấu của Grafcet
Phần dưới đây sẽ đưa ra các kiểu kết cấu cũng như các thuật ngữ tên gọi các kiểu
kết cấu đó.
a) Phân phối đồng thời (hình 3.13a)
Giai đoạn 2 và giai đoạn 3 cùng nối đến biến cố a nên các liên lạc từ 2 với 3
được tập hợp lại thành một nhóm bởi hai nét song song.
Quy tắc chuyển tiếp là: Khi giai đoạn 1 tích cực, biến cố a hiệu lực, hệ sẽ chuyển
tiếp đồng thời đến cả hai giai đoạn 2 và 3. Sau khi cả giai đoạn 2 và 3 trở thành tích
cực thì giai đoạn 1 trở thành không tích cực.
4. 5.
c. Rẽ nhánh (Phân phối theo cách HOẶC) d. Hội tụ theo cách HOẶC
Hình 3.13. Các trường hợp phân phối và hội tụ
167
b. Hội tụ đồng thời (hình 3.13b)
Phải đồng thời có: giai đoạn 4 và giai đoạn 5 tích cực và biến có b hiệu lực thì hệ
sẽ chuyển sang giai đoạn 6. Sau khi giai đoạn 6 tích cực thì giai đoạn 4 và 5 trở thành
không tích cực
c. Rẽ nhánh (hình 3.13c)
Khi giai đoạn 7 đang tích cực, thì xảy ra các trường hợp sau.
+ Nếu biến cố c có hiệu lực và biến cố d không hiệu lực (hoặc không xuất hiện
kịp) thì hệ chuyển sang giai đoạn 8.
+ Nếu biến cố d có hiệu lực và biến cố c không hiệu lực (hoặc không xuất hiện
kịp) thì hệ chuyển sang giai đoạn 9.
Vậy ở đây hệ sẽ chọn một trong hai nhánh để chuyển tiếp giai đoạn. Còn nếu
biến cố c và d đồng nhất hiệu lực (cùng xuất hiện) thì trở về giống kiểu phân phối
đồng thời, tức giai đoạn 8 và giai đoạn 9 đều tích cực.
d. Hội tụ theo cách HOẶC (hình 3.13d)
Khi giai đoạn 10 là tích cực và biến cố e hiệu lực thì hệ chuyển sang giai đoạn
12, giai đoạn 10 trở về không tích cực.
Khi giai đoạn 11 là tích cực và biến cố f hiệu lực thì hệ chuyển sang giai đoạn
12, giai đoạn 11 trở về không tích cực.
e) Quay vòng các giai đoạn (hình 3.14a)
Khi giai đoạn 15 tích cực thì xảy ra các trường hợp sau đây.
+ Nếu biến cố j có hiệu lực thì hệ chuyển đến giai đoạn 16, khi giai đoạn trở
thành tích cực thì giai đoạn 15 trở về không tích cực.
+ Nếu biến cố k có hiệu lực thì hệ quay vòng về giai đoạn 13, khi giai đoạn 13
tích cực trở lại thì giai đoạn 15 trở về không tích cực.
Chú ý là một vòng kín cần phải có ít nhất là ba giai đoạn, trong trường hợp logic
nối cứng (mạch rơle).
f) Nhảy qua các giai đoạn (hình 3.14b)
Khi giai đoạn 17 tích cực, xảy ra các trường hợp sau đây.
+ Nếu biến có p có hiệu lực thì hệ chuyển đến giai đoạn 18, khi giai đoạn 18 trở
thành tích cực thì giai đoạn 17 trở về không tích cực.
+ Nếu biến cố q có hiệu lực thì hệ chuyển đến giai đoạn 20, nhảy qua các giai
đoạn 18, 19 và 20. Lúc này giai đoạn 20 trở thành tích cực và khi đó thì giai đoạn 17
trở về không tích cực.
168
`
a) Quay vòng b) Rẽ nhánh
Hình 3.14. Các trường hợp quay vòng và rẽ nhánh
3.2.3.3. Lập các phương trình điều khiển logic từ Grafcet
a) Phương trình tổng quát của trạng thái tích cực của một giai đoạn
Một giai đoạn bậc (n) có hai trạng thái: Tích cực và không tích cực, nó có thể
được viết dưới dạng lần lượt là M ( n ) và M ( n ) .
169
Ngoài ra sau khi tích cực, giai đoạn ghi nhớ trạng thái của nó (tự duy trì). Nếu
gọi m(n) là trạng thái nhớ của nó, ta có: m( n ) = 1 .
Phương trình tổng quát của trạng thái tích cực của một giai đoạn được viết:
M(n) = [Tích cực HOẶC với nhớ trạng thái ] VÀ – KHÔNG với không tích cực:
M ( n ) = M ( n −1) .t( n −1) →( n ) + m( n ) .M ( n +1)
b) Các ví dụ
- Giai đoạn trước khi bắt đầu hai giai đoạn đồng thời .
Đây chính là giai đoạn 2 trong hình 3.15a.
M 2 = [ M 1.a + m2 ] .M 3 M 4 = [ M 1.a + m2 ] .( M 3 + M 4 )
Trong đó [ M 1.a + m2 ] là điều kiện để không tích cực cho giai đoạn 2 khi xét đến
kiểu phân kỳ theo VÀ.
- Giai đoạn trước khi chọn có điều kiện giữa nhiều giai đoạn
Đó chính là giai đoạn 2 trong hình 3.15b
M 2 = [ M 1.a + m2 ].M 3 + M 4 = ( M 1.a + m2 ).( M 3 .M 4 )
Trong đó ( M 3 .M 4 ) là điều kiện để không tích cực cho giai đoạn 2 khi xét đến kiểu
phân kỳ theo HOẶC
170
a) Hội tụ kiểu VÀ b) Hội tụ kiểu HOẶC
Hình 3.16. Phương trình logic cho các giai đoạn trong trường hợp hội tụ
Đây chính là trường hợp các giai đoạn 8 và giai đoạn 10 trong hình 3.16a,b.
M 8 = [ M 7 .a + m8 ].M 11
M 10 = [ M 9 .b + m9 ].M 11
Trong đó M 11 là điều kiện chung cho cả hai giai đoạn 8 và 10 để chúng không
tích cực.
- Giai đoạn bắt đầu của một dãy sau một hội tụ kiểu VÀ
Đây chính là trường hợp của giai đoạn 11 trong hình 3.17a:
M 11 = [ M 8 .M 10 .c + m11 ] .M 12
M 8 .M 10 . f : là điều kiện cho giai đoạn 11 tích cực khi tính đến kiểu hội tụ theo
VÀ
- Giai đoạn bắt đầu của một dãy sau một hội tụ kiểu HOẶC
Đây là trường hợp của giai đoạn 11 trong hình 3.17b:
M 11 = [ M 8 d + M 10 .e + m11 ].M 12
[ M 8 d + M 10 .e + m11 ] là điều kiện để cho giai đoạn 11 tích cực khi xét đến kiểu hội
tụ HOẶC.
171
- Quay vòng kín (xem hình 3.17a)
13
14
15
16
k
17
172
Giai đoạn trước khi nhảy là giai đoạn 19:
M 19 = [ M 18 .l + m19 ].M 20 + M 22 = [ M 18 .l + m19 ].M 20 .M 22
Giai đoạn tiếp sau nhảy là giai đoạn 22:
M 22 = [ M 21.m + M 19 .q + m22 ].M 23
M 21.m : là điều kiện để tích cực trong trường hợp khi không có nhảy.
M 19 .q : là điều kiện để tích cực trong trường hợp có nhảy.
3.2.3.4. Các bước thực hiện khi tổng hợp mạch trình tự bằng phương pháp
Grafcet
Bước 1: Phân tích tín hiệu vào/ra
Bước 2: Lập Grafcet 1 (G1) là một đồ hình trạng thái mà trên các trang thái
người ta ghi bằng chữ chi tiết các hàng vi hoạt động công nghệ theo đúng yêu cầu.
Bước 3: Lập Grafcet 2 (G2): Chọn thiết bị trong đó các thiết bị điều khiển là các
tín hiệu vào, các thiết bị chấp hành là các tín hiệu ra. Sau đó thay việc mô tả công
nghệ bằng chữ viết bằng ký hiệu các thiết bị vào và ra.
Bước 4: Thiết lập các phương trình logic của các phần tử.
3.2.3.5. Ví dụ áp dụng
a) Ví dụ áp dụng 1:
Hãy thiết kế hệ thống điều khiển cho công nghệ theo như hình 3.15 bằng phương
pháp Grafcet.
173
Bước 2: Thiết lập Grafcet 1 như hình 3.19.
174
Bước 4: Thiết lập các phương trình logic của các phần tử.
M 0 = ( g + a0 .M 2 + m0 ) M 1
P = M1
M 1 = (m.a0 .M 0 + m1 ) M 2
T = M 0 a0 + M 2
M 2 = ( a1.M 1 + m2 ) M 0
b. Ví dụ áp dụng 2
Cho công nghệ điều khiển như hình 3.21, thiết kế mạch điều khiển theo phương
pháp Grafcet.
175
Bước 2: Thiết lập Grafcet 1 (hình 3.22)
Xác lập trạng thái ban đầu
1 Đi xuống
2 Đi lên
3 Sang phải
4 Sang trái
Trong phạm vi phần này, chúng ta sẽ tìm hiểu về các khối OB, FB, FC và chức
năng của chúng, đồng thời chúng ta sẽ tìm hiểu sâu hơn về lập trình kỹ thuật – lập
trình cấu trúc.
3.3.1. Các khối tổ chức OB
Các khối tổ chức OB đã được nhắc tới trong nội dung chương 1, cho nên chúng
ta sẽ không nhắc lại khái niệm cơ bản. Các khối tổ chức OB sẽ không thể gọi được
nhau, cũng như trong các khối FB/FC cũng không thể gọi OB. Chỉ khi có một sự kiện
ngắt thực hiện mới có thể gọi một khối OB.
CPU tổ chức các khối OB thành những mức độ ưu tiên khác nhau và những khối
OB có mức độ ưu tiên cao hơn sẽ được thực hiện trước những khối OB có mức độ ưu
tiên thấp hơn. Mức độ thấp nhất là khối OB1 với mức ưu tiên là 1, và mức cao nhất là
24 (những version 4.0 trở lên là 26).
Bảng 3.19. Khối tổ chức OB và số lượng (PLC S7-1200)
178
Hình 3.24. Quá trình thực hiện quét của khối tổ chức chính OB1.
Chương trình trong OB1 có thể gọi các hàm FC/FB, người dùng có thể gọi nhiều
khối tổ chức OB trong chương trình điều khiển.
Thời gian thực hiện khối OB1 gọi là thời gian quét (scan time), CPU ấn định thời
gian quét tối đa, thông thường 150ms và tùy thuộc vào CPU, tuy nhiên người dùng có
thể thay đổi được trong cấu hình Device trên phần mềm. Nếu chu kỳ quét của CPU
vượt thời gian quét tối đa thì CPU sẽ gọi OB80 (Time error interrupt) hay chuyển sang
STOP.
Khối tổ chức ngắt trì hoãn – Time delay Interrupt
Có 4 khối tổ chức OB cho phép thực hiện ngắt thời trễ bắt đầu từ OB20 đến
OB23.
Chức năng của khối tổ chức Time delay Interrupt OB
Hệ thống sẽ gọi khối OB tương ứng sau một thời gian trễ, tên của OB sẽ được
định danh trong tập lệnh SRT_DINT. Để thực hiện việc gọi một OB ngắt trì hoãn
(ngắt trễ), người dùng cần phải thực hiện những nhiệm vụ sau:
- Cần phải gọi tập lệnh SRT_DINT
- Sử dụng lệnh CAN_DINT để hủy ngắt trì hoãn thực hiện khi chưa gọi khối
OB ngắt trì hoãn
- Gọi khối OB ngắt trì hoãn trong Program blocks và download xuống CPU
Một số đặc điểm của khối OB ngắt trì hoãn
- Ngắt trì hoãn có độ chính xác tới 1ms
- Khối OB ngắt trì hoãn chỉ được thực hiện khi CPU trong trạng thái RUN.
Chế độ Warm Restart sẽ xóa tất cả sự kiện của ngắt trì hoãn.
- Người dùng có thể hủy ngắt trì hoãn với DIS_AIRT và cho phép ngắt trì
hoãn thực hiện lại với EN_AIRT.
179
Chú ý: Nếu người dùng thực hiện lệnh DIS_AIRT sau khi thực hiện lệnh
SRT_DINT, ngắt trì hoãn chỉ có thể thực hiện lại sau khi thực hiện lệnh EN_AIRT.
Khối tổ chức ngắt chu kỳ - Cyclic interrupts
Có 4 khối tổ chức ngắt chu kỳ OB33 được gọi theo chu kỳ tuần hoàn. Thời
gian thực hiện mỗi khối OB ngắt chu kỳ phải nhỏ hơn chu kỳ ngắt. Thời gian thực
hiện mỗi khối OB ngắt chu kỳ phải nhỏ hơn chu kỳ ngắt.
Thời gian thực hiện của OB ngắt chu kỳ có thể thay đổi từ 1ms đến 60000ms
Khối OB ngắt chu kỳ được sử dụng với chức năng lấy mẫu dữ liệu, thông tin…
Khối tổ chức ngắt phần cứng – Hardware Interrupts
Có 50 khối tổ chức ngắt phần cứng bắt đầu từ OB40. Khi có lỗi xảy ra ở phần
cứng thì khối tổ chức ngắt phần cứng sẽ được gọi, và tương ứng với một sự kiện ngắt
sẽ cho phép gọi một khối OB do người dùng quy định. Ngắt phần cứng chỉ được gọi
trong chế độ RUN của CPU.
Đặc điểm của khố tổ chức ngắt phần cứng
Khi có một sự kiện ngắt phần cứng xảy ra, do người dùng định nghĩa cho các
ngõ vào (rising, falling), do bộ đếm tốc độ cao, hay được gán trong phần cứng để thực
hiện ngắt thì một khối tổ chức ngắt phần cứng OB được gọi.
Nếu không có khối OB ngắt nào thực hiện thì OB ngắt phần cứng sẽ thực hiện.
Nếu có một khối ngắt khác thực hiện thì khối tổ chức OB ngắt phần cứng sẽ phụ thuộc
vào mức độ ưu tiên mà thực hiện trước hay sau. Khối OB ngắt phần cứng được xác
nhận sau khi hoàn thành chương trình trong nó.
Nếu một sự kiện khác gây ra một ngắn phần cứng trong cùng một module giữa
thời gian xác định ngắt và xác nhận ngắt thì áp dụng theo phương pháp sau:
- Nếu sự kiện ngắt xảy ra trên cùng một channel thì sự kiện gọi tước đó sẽ được
thực hiện và không thực hiện thêm ngắt phần cứng lần nữa. Một ngắt phần
cứng khác chỉ được thực hiện nếu như ngắt phần cứng hiện tại đã được xác
nhận.
- Nếu sự kiện ngắt xảy ra trên một kênh khác, thì cả 2 ngắt phần cứng đều được
thực hiên theo thứ tự ưu tiên.
Những sự kiện cho phép ngắt phần cứng thực hiện.
- Nhận tín hiệu xung sườn lên (rising): Tối đa là 16 sự kiện.
- Nhận tín hiệu xung sườn xuống (falling): Tối đa là 16 sự kiện.
- Sự kiện của bộ đếm tốc độ cao khi thay đổi chiều đếm cung (Direction
changed) tối đa là 6 sự kiện.
180
- Sự kiện của bộ đếm tốc độ cao khi thực hiện External Reset tối đa là 6 sự
kiện.
Khối tổ chức ngắt lỗi thời gian – Time error interrupt OB
Khối tổ chức OB80 được gọi trong những trường hợp sau:
- Nếu số lệnh trong chương trình vượt quá giới hạn chu kỳ quét (mặc định là
150ms) sẽ gây lỗi và khối tổ chức OB80 sẽ được gọi.
- Thời gian xử lý ngắt chu kỳ lớn hơn chu kỳ ngắt.
- Khi thay đổ thời gian cài đặt/hoạt động của khối tổ chức ngắt thời gian lỗi.
Chú ý: Nếu OB80 được gọi hai lần trong cùng một chu kỳ quét do thời gian bị
vượt quá giới hạn thì CPU sang chế độ STOP. Người dùng có thể ngăn chặn điều này
bằng cách gọi lệnh RE_TRIGR tại một thời điểm thích hợp trong chương trình.
Khối tổ chức ngắt chuẩn đoán – Diagnostic error interrupt OB
Khối tổ chức ngắt chuẩn đoán OB thực hiện khi CPU phát hiện ra lỗi chuẩn
đoán, hoặc nếu module có chức năng chuẩn đoán có khả năng nhận dạng lỗi và người
dùng kích hoạt ngắt chuẩn đoán lỗi cho module. Khối OB ngắt chuẩn đoán lỗi thực
hiện ngắt chương trình Program cycle một cách bình thường.
Người dùng có thể gọi là STP trong khối OB chuẩn đoán để chuyển CPU sang
trạng thái STOP như mong muốn khi phát hiện ra sự kiện tương ứng. Nếu người dùng
gọi OB82 để thực hiện chuẩn đoán lỗi nhưng không chương trình chuẩn đoán lỗi thì
CPU sẽ bỏ qua lỗi và tiếp tục trạng thái RUN.
Khối tổ chức báo lỗi thêm bớt module – Pull/plug of module OB
Khối tổ chức báo lỗi thêm bớt module được thực thi khi cấu hình các module I/O
phân tán, module mạng Profibus, Profinet, AS-I với sự kiện tháo/lắp module vào
CPU.
3.3.2. Lập trình kỹ thuật
Các chương trình lớn thường được viết dạng cấu trúc, gồm khối OB1 và các khối
chương trình FC, FB. Sử dụng lập trình cấu trúc giúp chương trình dễ quản lý và sửa
lỗi, thuận tiện cho việc lập trình theo nhóm. Khối tổ OB và các khối FC, FB có thể
gọi những khối hàm FB, FC khác.
181
Instance
DB1
KHỐI
KHỐI CHƯƠNG
CHƯƠNG TRÌNH FC2
TRÌNH FB1
KHỐI CHƯƠNG
Global
TRÌNH CHÍNH DB2
OB1
KHỐI
CHƯƠNG
TRÌNH FC1
Bước 2: Tại giao diện lập trình của hàm chức năng FC Math_1 vừa mới khởi
tạo, khai báo các thông số cần thiết, cũng như kiểu dữ liệu phù hợp cho dữ liệu bài
toán vừa đưa ra.
183
Bước 3: Lập trình hàm chức năng FC1: K=4X + 5XYZ
Bước 4: Gọi hàm chức năng FC Math_1 trong OB1 và thử mô phỏng kết quả với
X=1.0, Y=2.0, Z=3.0
Nhờ việc lập trình chương trình thành các khối Block, các công thức toán học
được lặp lại nhiều lần một cách dễ dàng bằng cách gọi khối hàm trở lại nhiều lần,
không phải lặp lại những đoạn chương trình giống nhau…giúp cho việc lập trình trở
nên đơn giản hơn, đồng thời làm giảm dung lượng bộ nhớ hơn khi lập trình trùng lặp
nhiều lần, cũng như dễ dàng truy xuất.
3.3.2.2. Lập trình khối hàm chức năng FB Function block
Giới thiệu về khối hàm chức năng FB
Khối hàm chức năng FB là khối logic với các biến In, Out, In/Out, Static và
Temp – các biến này được tạo ra trong bảng giao tiếp khối đi kèm – block interface.
184
Các biến In, Out, In/Out là các tham số có địa chỉ cụ thể do chương trình gọi cung cấp
cho hàm, biến Static là biến trong chương trình FB được lưu lại khi ra khỏi khối FB,
biến Temp mất giá trị khi ra khỏi khối FB.
Khai báo khối hàm FB bắt buộc phải có khối dữ liệu DB – Data block – để chứa
các biến In, Out, In/Out và Static. Có thể có nhiều khối dữ liệu DB cho 1 khối hàm
chức năng FB để thực hiện các nhiệm vụ khác nhau với quy trình vận hành giống
nhau, những DB đó được gọi là Instance DB. Như vậy, khi chương trình gọi FB cần
phải kèm theo Instance DB tương ứng.
Quy tắc để gọi khối hàm FB
Khi điều khiển tự động cho các đối tượng như động cơ, băng tải, thuật toán
PID, Fuzzy, Noron, … người dùng sẽ được sử dụng các khối hàm chức năng FB để
viết chương trình.
Để không vi phạm các nguyên tắc của lập trình cấu trúc, người dùng không nên
truy cập trực tiếp những địa chỉ toàn cục trong khối hàm FB như: I, Q, M,…mỗi thông
tin truyền nhận giữa tín hiệu xử lý với các khối dữ liệu khác nhau phải sử dụng thông
qua tham số của khối hàm FB.
Chỉ khi gọi khối FB ở mức cao nhất – liên quan tới các khối tổ chức OB, người
dùng có thể gắn những tín hiệu xử lý I, Q, M… trực tiếp đến tham số của khối.
Hướng dẫn lập trình khối hàm chức năng FB
a. Đặt vấn đề
Cho dây chuyền như hình dưới đây:
185
Tạo khối FB1 với tên Mode_Selection, thực hiện điều khiển On/Off dây chuyền
khởi động và lựa chọn chế độ hoạt động của dây chuyền. Khối FB1 có những tham số
đầu vào/đầu ra như sau:
- #Start (in, BOOL): khởi động dây chuyền khi #Start=1
- #Stop (in, BOOL): dây chuyền tắt khi tác động #Stop, và ưu tiên #Stop.
- #Plant_on (out, BOOL): khi dây chuyền khởi động thì Plant_on = 1.
Người dùng có thể chọn chế độ hoạt động khi dây chuyền khởi động:
- #Auto_Man (in, BOOL): #Auto_Man = 0 chế độ manual
#Auto_Man = 1 chế độ auto.
- #OM_activate (in, BOOL): chế độ lựa chọn khi có một xung (Adopt mode) của
#OM_activate.
Khi chế độ hoạt động được lựa chọn thì các đèn báo chỉ thị được xuất ra ngõ ra
của khối FB1.
- #OM_Man (out, BOOL): chế độ manual được kích hoạt.
- #OM_Auto (out, BOOL): chế độ auto được kích hoạt.
b. Hướng dẫn thực hiện.
Bước 1: Khai báo các biến I/O theo phần ứng tương ứng.
Bước 2: khởi tạo khối hàm FB1 với tên Mode_Selection: Program blocks →
Add new block, đặt tên Mode_Selection và chọn OK.
186
Bước 3: Tại giao diện lập trình của khối FB Mode_Selection vừa mới khởi tạo.
Khai báo các thông tin cần thiết, cũng như kiểu dữ liệu phù hợp cho dữ liệu bài toán
vừa đưa ra.
Bước 4: Lập trình khối FB theo yêu cầu bài toán đưa ra:
187
Bước 5: Gọi khối hàm FB Mode_Selection trong OB1 và khai báo đầy đủ tham
số Input/output cho khối hàm.
188
Trong quá trình gọi khối hàm FB thì cần phải có 1 khối dữ liệu Instance DB đi
kèm, khi đó phần mềm TIA Portal sẽ tự tạo đi kèm với người dùng chỉ cần chọn OK
để FB có thêm Interface DB.
3.3.2.3. Định dạng khối dữ liệu người dùng với Share DB và UDT.
Sử dụng khối dữ liệu DB – Data Block
Khối dữ liệu DB – data block – khác với các hàm chức năng FB, FC là trong
khối dữ liệu không thể lập trình – không sử dụng được các tập lệnh – thay vào đó,
khối dữ liệu DB cung cấp vùng nhớ để lưu giá trị theo yêu cầu người dùng.
Khi người dùng gọi khối hàm chức năng FB hệ thống sẽ yêu cầu 1 khối dữ liệu
DB đi kèm chung với FB, khối dữ liệu DB đó được gọi là Instance DB. Tuy nhiên,
chúng ta sẽ không tập trung vào Instance DB vì đã nhắn tới khi nói về khối hàm chức
năng FB. Trong phần này chúng ta sẽ chỉ tập trung nói về khối dữ liệu toàn cục –
global data, cách khởi tạo và truy xuất dữ liệu.
Khối dữ liệu DB có thể chứa các biến dữ liệu của người dùng giống như biến
M. Khối dữ liệu toàn cục Global DB có thể được truy cập bởi tất cả các khối hàm OB,
FB, FC… Số lượng khối dữ liệu DB phụ thuộc vào CPU.
Bảng 3.20. Kiểu dữ liệu trong khối dữ liệu DB có thể khai báo
Date and Time • Date là kiểu dữ liệu 16 bit chỉ số ngày có tầm từ
189
D#1990 – 1 – 1 đến D#2168 – 12 – 31
• DTL (date and time long) bao gồ dữ liệu với 12
Byte lưu trữ thông tin về ngày, tháng, năm.
Year (UInt): 1970 → 2554
Month (USInt): 1 → 12
Day (USInt): 1 → 31
Weekday (USInt): 1 → 7 (1 là ngày chủ nhật)
Hours (USInt): 0 → 23
Seconds (USInt): 0 → 59
Nanoseconds (UDInt): 0 → 999999999
• Time là kiểu dữ liệu 32 bit được miêu tả theo
chuẩn IEC Time tầm giá trị lên đến
T#24D20H31M23S647MS
• TOD (Time of day) là kiểu dữ liệu 32 bit có tầm
giá trị TOD#0:0:0.0 đến TOD#23:59:59.999
Array và Structure • Array là kiểu dữ liệu mảng bao gồm nhiều thành
phần đơn giống nhau về kiểu dữ liệu. Mảng có thể
tạo trong giao diện interface của OB, FB, FC, DB.
• Struct là kiểu dữ liệu định dạng theo cấu trúc
thành phần có thể bao gồm nhiều kiểu dữ liệu
khác nhau
PLC data types • PLC Data types hay còn gọi là UDT là dạng dữ
liệu cấu trúc có thể định nghĩa vởi người dùng.
Pointer • Pointer hay con trỏ sử dụng để định địa chỉ gián
tiếp
190
a. Các bước khởi tạo và truy xuất 1 khối dữ liệu toàn cục – global DB
Bước 1: Khởi tạo khối dữ liệu DB1 với tên Global_1: Program blocks → Add
new block → Data block, đặt tên Global block, đặt tên Global_1, chọn kiểu (type) là
Global DB, và chọn OK để hoàn thành việc khởi tạo.
Bước 2: Đặt tên và khai báo kiểu dữ liệu muốn sử dụng trong khối dữ liệu DB.
Chú ý: Nếu người dùng khi tạo Tag trong khối dữ liệu toàn cục DB có chọn
Retain thì giá trị của Tag đó sẽ được lưu, dù CPU mất điện, với phương pháp này sẽ
hỗ trợ cho người dùng trong việc lập trình lưu trữ dữ liệu khi PLC mất điện một cách
đơn giản,
191
Bước 3: Truy xuất biến dữ liệu của khối dữ liệu DB trong các chương trình OB,
FB, FC giống như vùng nhớ memory – M
192
Bước 2: bảng thông báo hiện ra cảnh báo, để tiếp quá trình chọn OK → OK.
Tạo bảng biến dữ liệu và save compile để hoàn thành và lưu lại kết quả khởi tạo.
Với chế độ Standard trong khố dữ liệu DB cột Offset chính là địa chỉ để truy
xuất dữ liệu của khối. Và cách đọc địa chỉ sẽ được thể hiện dưới dạng dưới đây:
Bảng 3.21. Định dạng vùng nhớ trong khối dữ liệu DB với chế độ Standard
193
Bước 2: Đặt tên và khai báo kiểu dữ liệu sử dụng trong UDT
Bước 3: Truy xuất dữ liệu UDT ở khối dữ liệu DB hay trong giao diện Interface
của OB, FB, FC. Chúng ta đặt tên biến sau đó chọn kiểu dữ liệu “Data type” là dữ liệu
UDT Motor
Truy xuất dữ liệu UDT trong khối dữ liệu DB
Truy xuất dữ liệu UDT trong các khối hàm OB, FB, FC.
194
3.3.2.3. Thư viện cho người dùng
Phần thư viện của TIA Portal được sử dụng với mục đích lưu trữ lại những khối
hàm FB, FC để người dùng sử dụng đó như một thư viện chung những Project tương
tự. Ngoài ra, thư viện của TIA Portal còn có thể lưu trữ cả cấu hình CPU, HMI, Tag
(symbol),… một cách đơn giản và dễ dàng với thao tác kéo thả.
Các bước để tạo một thư viện cho người dùng:
Bước 1: Chọn thẻ Libraries để mở giao diện thư viện người dùng. Libraries cho
người dùng 2 sự lựa chọn khi tạo thư viện đó là:
- Thư viện cho người từng Project – Project library – với những định dạng
thư viện này, những phần tử nằm trong thư viện chỉ được dùng trong project
hiện hành và không bị truy cập hay sử dụng cho những người khác.
- Thư viện toàn cục – Global libraries – với định dạng thư viện này, những
phần tử nằm trong thư viện có thể truy xuất và được gọi với tất cả project khi
làm việc với TIA Portal. Bởi tính năng này, chúng ta sẽ chỉ tập trung vào thư
viện toàn cục – global libraries.
Bước 2: Tạo thư viện toàn cục – global libraries: Libraries → Global libraries
→ Creating a global library.
Khai báo đầy đủ tên thư viện, đường dẫn lưu thư viện, tên người dùng tạo thư
viện… → chọn Create để hoàn thành việc khởi tạo thư viện người dùng.
195
Bước 3: Đưa các phần tử vào trong thư viện vừa tạo bằng việc kéo nhả những
đối tượng này vào thư viện Master Copies của thư viện người dùng. Thư viện người
dùng của Tia Portal có thể đưa nhiều định dạng phần tử vào trở thành thư viện chung
như: Project, CPU, Data block, UDT, VAT,…
Bước 4: Sau đó, chọn Save để hoàn thành việc khởi tạo thư viện người dùng.
3.4. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3
3.4.1. Câu hỏi
1. Khối OB khởi động, OB ngắt chu kỳ được sử dụng trong trường hợp nào?
2. Sự khác giữa lập trình tuyến tính và lập trình cấu trúc như thế nào?
3. Khi nào người dùng lập trình với hàm chức năng FC? Khi nào người dùng lập trình
với khối hàm chức năng FB? Nêu sự khác nhau giữa các khối hàm OB, FB, FC.
4. Khối dữ liệu DB được sử dụng để làm gì? Hãy nêu sự khác nhau giữa Instance DB
và global DB?
5. Định dạng dữ liệu người dùng UDT sử dụng làm gì? Nêu sự giống nhau và khác
nhau giữa khối dữ liệu DB với định dạng dữ liệu người dùng UDT.
196
3.4.2. Bài tập
Câu 1. Sử dụng PLC S7-1200 lập trình điều khiển cho các công nghệ sau:
a) b)
c) d)
Câu 2. Sử dụng PLC S7-1200 lập trình điều khiển cho các công nghệ sau:
a) b)
197
c) d)
Câu 3. Sử dụng PLC S7-1200 lập trình điều khiển cho công nghệ máy khoan tự động
sau:
Trong đó:
Đường nét liền: : chuyển động với tốc độ V1
Đường nét đứt: -------- : Chuyển động với tốc độ V2
Câu 4. Tay máy có nhiệm vụ vận chuyển các chi tiết cần gia công từ vị trí A sang vị
trí B.
198
Hãy sử dụng PLC S7-1200 lập trình điều khiển cho tay máy theo nhiệm vụ trên.
199
CHƯƠNG 4
LẬP TRÌNH ỨNG DỤNG NÂNG CAO VỚI PLC
Nội dung chương 4 cung cấp cho sinh viên kiến thức về lập trình đếm xung tốc
độ cao (encoder) và phát xung tốc độ cao ứng dụng cho điều khiển động cơ bước,
Servor. Và giới thiệu thuật toán PID, sử dụng bộ điều khiển PID, lựa chọn tham số bộ
điều khiển trên TIA PORTAL
4.1. LẬP TRÌNH ĐẾM VÀ PHÁT XUNG TỐC ĐỘ CAO
Trong công nghiệp, để nhận biết vị trí góc quay, chiều dài, tốc độ quay ta có thể
sử dụng một thiết bị chuyên dụng Encoder. Tín hiệu phản hồi từ encoder là những tín
hiệu xung tốc độ cao, những xung tốc độ cao này bộ đếm thường không thể đếm được,
mà thay vào độ ta phải sử dụng bộ đếm tốc độ cao của PLC gọi là HSC. Bộ điều khiển
PLC S7-1200 hỗ trợ tối đa 6 bộ đếm HSC và được tích hợp trên CPU.
Ngoài ra, việc điều khiển tốc độ, vị trí động cơ phương pháp PWM ngày nay
được sử dụng phổ biến. Bộ điều khiển PLC S7-1200 hỗ trợ chức năng phát xung
PWM, PTO.
4.1.1. Đọc xung tốc độ cao
4.1.1.1. Hoạt động của bộ đếm tốc độ cao HSC
Nếu các sự kiện đếm xảy ra có thời gian thực hiện chậm hơn so với các khối OB
thì người dùng có thể sử dụng các bộ đếm CTU, CTD, CTUD để đếm những sự kiện
này. Tuy nhiên, với những sự kiện xảy ra có thời gian thực thi nhanh hơn các khối OB
thì người dùng cần sử dụng các bộ đếm tốc độ cao HSC để nhận tín hiệu trả về từ một
encoder tương đối (incremental encoder).
Lệnh CTRL_HSC cho phép người dùng có thể lập trình và thay đổi những thông
số của bộ HSC.
Bộ đếm HSC được thiết lập một giá trị cài đặt trước, và ngõ ra sẽ được kích hoạt
trong khoảng thời gian CV<PV. Bộ HSC cho phép thực hiện ngắt khi giá trị CV=PV
Lựa chọn kênh đếm tốc độ cao HSC
Những thông tin ở bảng sau sẽ giúp cho người dùng có thể kết nối và sử dụng
được tần số xung tối đa từ tín hiệu trả về CPU và SB
Bảng 4.1. Tần số đọc xung tối đa trên thân CPU
CPU Địa chỉ Input Chế độ 1 hay 2 phase Chế độ Phase A/B
Quadrature
1211C I0.0÷I0.5 100 Khz 80 Khz
1212C I0.0÷I0.5 100 Khz 80 Khz
200
CPU Địa chỉ Input Chế độ 1 hay 2 phase Chế độ Phase A/B
Quadrature
I0.0÷I0.7 30 Khz 20 Khz
1214C và I0.0÷I0.5 100 Khz 80 Khz
1215C I0.6÷I1.5 30 Khz 20 Khz
1217C I0.0÷I0.5 100 Khz 80 Khz
I0.6÷I1.1 30 Khz 20 Khz
I1.2÷I1.5 1Mhz 1Mhz
Bảng 4.2. Tần số đọc xung tối đa trên SB
Signal board Địa chỉ Input Chế độ 1 hay 2 phase Chế độ Phase A/B
Quadrature
SB 1221, 200 kHz I4.0 ÷ I4.3 200 Khz 160 Khz
SB 1223, 200 kHz I4.0 ÷ I4.1 200 Khz 160 Khz
SB 1223 I4.0 ÷ I4.1 30 Khz 20 Khz
4.1.1.2. Lựa chọn chức năng đếm cho bộ đếm tốc độ cao HSC
Tất cả các bộ HSC đều được cấu hình giống nhau để có thể làm chức năng giống
nhau. Các chế độ đếm, điều hướng, và giá trị khởi đầu đều được cấu hình trong
Configuration Device của CPU cho HSC hoạt động
Có 4 chức năng của bộ HSC là:
- Đếm Single-phase với điều hướng internal
- Đếm Single-phase với điều hướng external
- Đếm 2 phase với 2 ngõ vào xung
- Đếm phase A/B lệch nhau 900
Một số chức năng khác của bộ HSC:
- Chức năng đo tần số: một vài chế độ HSC cho phép cấu hình bộ HSC thực hiện
đo tần số thay vì chỉ đọc tín hiệu xung. Có 3 khoảng đo lường tần số cho phép
thực hiện trong CPU S7 -1200 là:0.01, 0.1 và 1.0 giây.
- Chế độ Axis
- Những chế độ đếm và các tín hiệu ngõ vào: các tín hiệu ngõ vào được sử dụng
như xung clock, điều hướng, chức năng reset hỗ trợ cho bộ HSC. Cùng một tín
hiệu ngõ vào không thể sử dụng với hai chức năng khác nhau, nhưng những
201
ngõ vào không sử dụng trong chế độ HSC hiện tại của nó thì có thể sử dụng với
một mục đích khác. Ví dụ: Nếu HSC1 chỉ sử dụng 2 ngõ vào nhưng không sử
dụng ngõ vào thứ 3 với chế độ external reset(mặc định là I0.3) thì I0.3 có thể
được sử dụng để làm tín hiệu ngắt HSC2.
Bảng 4.3. Chức năng đếm của HSC trong CPU S7-1200
Bảng 4.6. Tín hiệu ngõ vào của bộ HSC on-board của CPU 1214C…1217C
Tín hiệu ngõ vào on-board của CPU (I0.x)
Chế độ đếm HSC
0 1 2 3 4 5 6 7
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 2 AB-phase [R] A B
1-phase C [d] [R]
2-phase CU CD [R]
HSC 3 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 4 AB-phase [R] A B
203
Tín hiệu ngõ vào on-board của CPU (I0.x)
Chế độ đếm HSC
0 1 2 3 4 5 6 7
1-phase C [d] [R]
2-phase CU CD [R]
HSC 5 AB-phase A B [R]
1-phase C [d] [R]
2-phase CU CD [R]
HSC 6 AB-phase A B [R]
Tín hiệu của Signal board hỗ trợ cho người dùng 2 kênh đọc xung tốc độ cao với
2 sự lựa chọn sau:
- Trong trường hợp người dùng mua CPU với kiểu AC/DC/RL muốn xử lý xung
tốc độ cao đầu vào thì cần mua thêm SB sẽ cho phép sử dụng được HSC1 và
HSC2
- Trường hợp người dùng sử dụng CPU 1211 và CPU 1212 thì mở rộng thêm 2
HSC là HSC5 và HSC6.
Bảng 4.7. Bảng tín hiệu ngõ vào của bộ HSC và SB
Tín hiệu ngõ vào on-board của SB
Chế độ đếm HSC (I4.x)
0 1 2 3
1-phase C [d] [R]
2-phase CU CD [R]
HSC 1 AB-phase A B [R]
1-phase [R] C [d]
2-phase [R] CU CD
HSC 2 AB-phase [R] A B
Chú ý: Các tín hiệu I/O được sử dụng với bộ đếm tốc độ cao phải được khai báo
trong cấu hình của CPU. Khi địa chỉ I/O được gắn cho bộ đếm HS thì không thể bị
chỉnh sửa được bởi chức năng Force trong bảng Watch.
4.1.1.4. Tập lệnh xử lý xung tốc độ cao CTRL_HSC
Mỗi lệnh CTRL_HSC sử dụng một khối dữ liệu Instance DB để lưu trữ dữ liệu
của bộ đếm, cấu trúc và tham số. Khi gọi tập lệnh CTRL_HSC trong chương trình thì
Step 7 Basic V1x sẽ tự động tạo ra 1 instance DB tương ứng.
204
Bảng tham số và kiểu dữ liệu của tập lệnh CTRL_HSC:
Khai Kiểm tra
Tham số Miêu tả
báo dữ liệu
HSC IN HW_HSC HSC identifier
DIR IN BOOL 1= cho phép điều hướng mới
CV IN BOOL 1= cho phép cài đặt giá trị mới
RV IN BOOL 1= cho phép cài đặt giá trị tham chiếu mới
1= cho phép cài đặt khoảng thời gian đếm
PERIOD IN BOOL
mới (chỉ áp dụng cho chế độ đo tần số)
NEW_DIR IN INT Hướng đếm mới: 1=forward, -1=backward
NEW_CV IN DINT Giá trị đếm mới
NEW_RV IN DINT Giá trị tham chiếu mới (reference)
Khoảng thời gian mới được cài đặt (chỉ áp
NEW_PERIOD IN INT dụng cho chế độ đo tần số). 1=1s, 2=0.1s,
3=0.01s
BUSY OUT BOOL Hàm chức năng đang bận xử lý
STATUS OUT WORD Mã code báo trạng thái
Chú ý: HSC Identifier là địa chỉ quy định của các bộ HSC trong CPU. Người
dùng có thể kiểm tra và tìm HSC Identifier cho từng kênh đọc HSC trong cấu hình
Device của CPU: Device configuration -> Device view -> CPU …-> Properties ->
HSC -> Hardware Identifier. Mã này là số decimal và cần chuyển sang mã hexa để sử
dụng với lệnh CTRL_HSC.
• Nếu các tham số DIR, CV, RV, PERIOD không được kích hoạt thì những tham
số NEW_DIỈ< NEW_CV. NEW_RV, NEW_PERIOD sẽ không đươc thực
hiện.
205
• Tham số DIR chỉ có tác dụng khi người dùng cấu hình điều hướng cho bộ đếm
xung là “ User Program (internal direction control)” trong cấu hình device CPU
cho bộ đếm HSC.
• Để cho bộ HSC thực hiện trên on_board của CPU, hay trên SB thì tham số
BUSY luôn luôn bằng 0.
Người dùng có thể cấu hình tham số cho từng bộ đếm HSC trong device
configuration để CPU thực hiện chức năng đếm xung/đo tần số, chức năng reset, cấu
hình cho ngắt, hardware I/O, và địa chỉ của giá trị đếm.
Một vài tham số của bộ đếm HSC có thể được chỉnh sửa bởi chương trình người
dùng thông qua các tham số DIR, CV, RV, PERIOD.
• Khi DIR=1 thì cho phép thay đổi hướng đếm tại tham số NEW_DIR
• Khi CV=1 cho phép cài đặt giá trị đếm bắt đầu tại NEW_CV
• Khi RV=1 cho phép cài đặt giá trị tham chiếu mới tại NEW_RV
• Khi PERIOD=1 cho phép cài đặt khoảng thời gian mới ( áp dụng cho chế
độ đo tần số) tại NEW_PERIOD.
• Khi các tham số DIR, CV, RV, PERIOD=0 thì giá trị đếm, giá trị tham
chiếu, và hướng đếm không thay đổi.
Lệnh CTRL_HSC có thể viết trong khối OB ngắt phần cứng và đây là đặc trưng
của lệnh. Khi giá trị CV=RV thì sẽ có một trigger gọi khối OB ngắt phần cứng để
người dùng có thể nạp các tham số NEW_CV, NEW_RV, NEW_PERIOD…
Giá trị đếm được của HSC không có trong các tham số của lệnh CTRL_HSC mà
được truy xuất thông qua địa chỉ process image, và được cấu hình trong Device
configuration. Như vậy, người dùng có thể sử dụng trực tiếp địa chỉ này để đọc giá trị
đếm được của bộ HSC. Để truy xuất địa chỉ process image của bộ HSC chúng ta sẽ
thực hiện thao tác sau: Device configuration → Device view → CPU .. → Properties
→ HSC[n] → I/O address.
Ví dụ như hình trên thì người dùng có thể truy xuất giá trị của HSC 1 thông qua
địa chỉ: ID1000 với tầm giá trị của bộ đếm là: -2147483648→+2147483647
206
Bảng 4.8. Kiểu dữ liệu và địa chỉ của các bộ HSC
207
Với HSC của PLC S7 1200 yêu cầu người dùng phải bật chế độ cho phép HSC
hoạt động và cấu hình các tham số liên quan: tín hiệu Reset bộ đếm, chế độ điều
hướng đếm, giá trị cài đặt ban đầu..
Bước 1: Khởi tạo Project với tên HSC với cấu hình CPU 1214C
Bước 2: Cấu hình khai báo cho bộ HSC hoạt động: Device configuration → Device
view →CPU→Properties→High Speed Counter (HSC) →HSC 1(người dùng chọn bộ
đếm HSC cần sử dụng).
Bật chế độ Enable cho bộ HSC hoạt động
Chế độ đếm Type of counting chọn Count để thực hiện đếm xung, đếm tín hiệu
encoder trả về là dạng Singe phase, hướng đếm chọn User program (internal direction
control) để người dùng có thể thay đổi hướng đếm trong chương trình hoặc HMI, chế
độ đếm ban đầu chọn là đếm lên (count up).
Thiết lập giá trị đếm ban đầu
Thiết lập giá trị bắt đầu đếm và giá trị tham chiếu khởi đầu (initial reference) cho
bộ đếm. Các giá trị này có thể thay đổi thông qua các tham số của tập lệnh
CTRL_HSC.
Thiết lập sư kiện hoạt động khi CV=RV
208
Tùy theo ứng dụng và phương pháp lập trình mà người dùng có thể chọn hoặc bỏ
chế độ thiết lập này. Trong ứng dụng bài toán trên, tác giả sử dụng tới việc gọi OB
ngắt phần cứng khi giá trị đếm CV=RV.
Tại tham số Hardware interupt, người dùng có thể chọn khối OB ngắt phần cứng
để gọi khi CV=RV, nếu khối OB ngắt phần cứng chưa được khởi tạo thì người dùng
có thể chọn Add Object → Organization block → Hardware interrupt.
Kiểm tra kết quả sau cấu hình cho địa chỉ input của CPU hoạt động với chế độ
HSC 1 thông qua Hard ware address, I/O address là địa chỉ để người dùng có thể truy
xuất giá trị CV của bộ đếm ( mặc định địa chỉ của HSC 1 là ID1000), Hardware
identifier được đọc trong Device configuration là số Decimal và người dùng sẽ chuyển
sang số Hexa trong khai báo của tập lệnh CTRL_HSC.
c. Lập trình chương trình điều khiển
Bước 1: Khởi tạo khối dữ liệu DB1 với tên HSC: Program blocks → Add new
block →Data block, đặt tên HSC, chọn kiểu là Global DB, chọn OK để hoàn thành
việc khởi tạo
209
Bước 2: Đặt tên và khai báo kiểu dữ liệu muốn sử dụng trong khối DB
Bước 3: Lập trình chương trình trong khối tổ chức Main OB1 thực hiện việc đọc
dữ liệu của bộ đếm HSC 1 và thực hiện reset các tín hiệu enable trạng thái chuyển
hướng (Dir), giá trị đếm (CV) và các giá trị tham chiếu (RV).
210
Chú ý: Các địa chỉ "HSC".CV, "HSC".Dir, "HSC".RV, "HSC".HSC_Value là dữ
liệu đã được khai báo tron khối DB1
Bước 4: Lập trình chương trình trong khối tổ chức ngắt phần cứng (OB40) thực
hiện ngắt và nạp thông số mới cho hướng đếm (New_Dir), giá trị đếm (New_CV), và
giá trị tham chiếu cho bộ đếm (New_RV)
Khi giá trị CV=RV thì khối tổ chức ngắt phần cứng OB40 sẽ được gọi. Khối
OB40 sẽ thực hiện nhiệm vụ Set các bit trạng thái : "HSC".Dir, "HSC".CV,
"HSC".RV và cho người dùng thay đổi các tham số mới cho hướng đếm New_Dir, giá
trị đếm New_CV, và giá trị tham chiếu cho bộ đếm New_RV từ màn hình
HMI/SCADA. Sau khi thực hiện xong nhiệm vụ hệ thống sẽ tự động trở về chương
trình Main OB1 để hoạt động.
Bước 5: Cài đặt cho màn hình HMI/SCADA thì người dùng thiết kế giao diện có
các I/O field hiển thị New_Dir, New_CV, New_RV ...
211
4.1.2. Phát xung tốc độ cao với PWM
4.1.2.1. Hoạt động của bộ phát xung tốc độ cao
Độ rộng xung PWM của S7-1200 có thể được biều diễn dưới dạng tỉ lệ phần
trăm, tỉ lệ phần nghìn, tỉ lệ phần mười nghìn của chu kỳ thời gian, hoặc có thể định
dạng theo S7-Analog. Độ rộng xung PWM có thể thay đổi từ 0 (trạng thái không phát
xung với ngõ ra luôn tắt ) đến giá trị full scale (trạng thái không phát xung với ngõ ra
luôn sáng).
Khi giá trị ngõ ra PWM thay đổi từ 0 đến full scale, ngõ ra phát xung hoạt động
giông như ngõ ra tín hiệu tương tự. Ví dụ, ngõ ra PWM có thể sử dụng điều khiển tốc
độ động cơ từ trạng thái dừng đến tốc độ tối đa (full scale), hoặc có thể sử dụng để
điều khiển vị trí của các van tuyến tính nhận tín hiệu dạng xung.
Có 4 ngõ ra phát xung để thực hiện phát xung tốc độ cao với 2 sự lựa chọn đó là
PWM và PTO (pulse train output). Người dùng có thể gán cho ngõ ra thực hiện phát
xung PWM hay PTO, nhưng không thể thực hiện 2 chế độ đồng thời. Chế độ phát
xung PTO sẽ được tìm hiểu rõ hơn với các tập lệnh điều khiển vị trí (motion control).
Người dùng có thể sử dụng ngõ ra tích hợp trên thân (On - board) của CPU hoặc
Signal board. Số lượng kênh phát xung ứng với từng CPU sẽ được trình bày ở các
bảng liệt kê phía dưới. Nếu ngõ ra không được sử dụng với chế độ phát xung thì vẫn
có thể sử dụng với các mục đích khác của người dùng.
Bảng 4.10. Số lượng kênh phát xung và tần số của CPU S7-1200
On board Q0.0
PWM1
SB Q4.0
212
Kênh phát xung Pulse Direction
On board Q0.2
PWM2
SB Q4.2
On board Q0.4
PWM3
SB Q4.1
On board Q0.6
PWM4
SB Q4.3
4.1.2.2 Tập lệnh điều khiển quá trình phát xung PWM
Tập lệnh CTRL_PWM cho phép phát xung PWM liên tục với chu kỳ cố định và
duty cycle (cycle time) thay đổi được. Khi gọi tập lệnh CTRL_PWM trong chương
trình STEP 7 Basic V1x sẽ tự động tạo ra 1 instance DB tương ứng
Bảng 4.11. Tham số và kiểu dữ liệu của tập lệnh CTRL_PWM
213
Tham số Khai báo Kiểu dữ liệu Miêu tả
Lệnh CTRL_PWM lưu trữ thông tin của những tham sô" vào trong khôi dữ liệu
Instance DB và không thể thay đổi bởi người dùng, tuy nhiên các tham số đó có thể
được điều khiển (controlled) bởi tập lệnh CTRL_PWM.
Tham số ENABLE cho phép lệnh CTRL_PWM hoạt động để thực hiện phát
xung PWM. Độ rộng xung sẽ được cài đặt trong cấu hình Device configuration khi
CPU chuyển sang trạng thái RUN. Độ rộng xung (duty cycle) chỉ có thể thay đổi
dựa vào ngõ ra của process image (QW...).
Lưu ý:
Các phiên bản trước đây chỉ cho phép thay đổi duty time nhưng CPU có
firmware V4.x trở lên với hỗ trợ của phần mềm TIA Portal V14 SP1 trở lên đã
cho phép thay đổi thời gian chu kỳ.
Khi sử dụng I/O với chế độ PWM và PTO thì không thể sử dụng bảng Force
table để thay đổi các biến này.
4.1.2.3. Cấu hình phần cứng cho một kênh phát xung
Để CPU thực hiện chức năng phát xung (PWM/PTO) thì người dùng cần phải
cấu hình bật chế độ Enable cho chức năng phát xung hoạt động trong giao diện Device
view của CPU S7 - 1200.
Bảng 4.12. Tần số phát xung lớn nhất của ngõ ra on- board
Pulse và
CPU Ngõ ra CPU Các chế độ khác
direction
1 MHz 1 MHz
1217C Q0.0 - Q0.3
214
Pulse và
CPU Ngõ ra CPU Các chế độ khác
direction
Đồng thời, người dũng cũng có thể thay đổi những tham số phù hợp với ứng
dụng mong muốn tại parameter assignment.
Signal type: Tín hiệu xung ngõ ra dạng PWM hoặc PTO tùy vào ứng dụng của
người dùng.
215
Output source: Chọn phát xung On — board hoặc trên SB.
Time base: Thời gian cơ bản cho phép người dùng chọn mili giây (ms) hoặc
micro giây.
Pulse duration format - định dạng độ rộng xung: Cho phép người dùng chọn
theo tỷ lệ phần trăm, phần nghìn, mười nghìn hoặc có thể theo định dạng S7 -
Analog.
Cycle time: Chu kỳ xung phát. Giá trị này chỉ có thể thay đổi trong Device
configuration.
Initial pulse width: Độ rộng xung ban đầu có thể thay đổi trong quá trình chạy
thông qua process image QW.
Bảng 4.14. Địa chỉ các bộ PWM
PWM 1 QW1000
PWM 2 QW1002
PWM 3 QW1004
PWM 4 QW1006
4.1.2.4. Hướng dẫn lập trình phát xung PWM
a. Đặt vấn đề
Cấu hình hệ thống bao gồm: CPU 1214C, động cơ AC (DC) và bộ Driver điều
khiển kết nối với ngõ ra phát xung của CPU, màn hình HMI giao tiếp với PLC để thay
đổi độ rộng xung. Lập trình PLC thực hiện yêu cầu sau:
Kết nối vào các chân tín hiệu của bộ phát xung PWM 1 với bộ Driver điều
khiển động cơ.
Khi nhấn Start thì CPU phát xung với tần sô" là 20 Khz tại ngõ ra Q0.0.
HMI thay đổi số duty của xung cần phát.
b. Cấu hình cho bộ phát xung PWM
Với chế độ phát xung PWM (hoặc PTO) của PLC S7 - 1200 yêu cầu người dùng
phải bật chế độ cho phép PWM hoạt động và cấu hình các tham số liên quan: thời gian
cơ bản, định dạng độ rộng xung, chu kỳ phát xung...
Bước 1: Khởi tạo Project với cấu hình là CPU 1214C DC/DC/DC.
216
Bước 2: Cấu hình khai báo PWM hoạt động: Device configuration Device
view CPU Properties Pulse generators ( PTO/PWM) PTO1/PWM1 (kênh
cần sử dụng )
Bật chế độ Enable cho bộ phát xung hoạt động
Lựa chọn chức năng hoạt động cho bộ phát xung PWM
217
Cho phép thay đổi độ rộng xung thông qua process image QW.
Kiểm tra địa chỉ Hardware identifier được đọc trong PLC tag và có thể sử dụng
dạng số Hexa trong khai báo tập lệnh CTRL_PWM. Đồng thời cần lưu ý rằng các sô"
HW_ID này sẽ thay đổi theo cấu hình CPU và các mô-đun thực tế, do đó cần kiểm tra
kỹ trước khi sử dụng.
218
Bước 2: Khai báo các thông số và kiểu dữ liệu muốn sử dụng:
Bước 3: Tạo hàm PWM_Pulse [FC1] để lập trình thực hiện phát xung PWM với
lệnh CTRL_PWM
219
Lưu ý:
Tham số PWM của lệnh CTRL_PWM có thế khai báo dưới định dạng HW
identifier hoặc khai báo theo dạng số hexa. Tham số này có thể tìm thấy trong
PLC tag hoặc trong cấu hình phần cứng Device configuration (đối với các
phiên bản thấp hơn TIA Portai V13).
TIA Portai V14 SP1 trở đi cho phép người lập trình có thể thay đổi cả độ rộng
xung (duty - Pulse duration) và thời gian chu kỳ (Cycle time). Ví dụ: cấu hình
ngõ ra của PWM 1 gồm 6 byte dữ liệu từ QB1008 - QB1013 với: QW1008 cho
220
phép thay đổi độ rộng xung và QD1010 cho phép thay đổi thời gian chu kỳ
phát xung PWM.
Bước 4: Gọi chương trình PWM_Pulse [FC1] trong Main [OB1]
Bước 5: Cài đặt cho màn hình HMI/SCADA thì người dùng chỉ cần phải thiết kế
một giao diện có với I/O fileld cho thay đổi độ rộng xung và nút nhấn Start để cho
phép phát xung... tùy theo ứng dụng bài toán/ hệ thông cụ thể.
Nếu người dùng không kết nối với HMI thực có thể sử dụng chế độ Runtime trên
PC, hoặc có thể sử dụng bảng Watch Table để thay đổi các tham số thay cho việc kết
nối với HMI thật.
4.1.3. Điều khiển vị trí với Motion Control
CPU S7 - 1200 hỗ trợ chức năng điều khiển vị trí (motion control) để điều khiển
hoạt động của động cơ bước (stepper motor) và động cơ servo thông qua chế độ phát
xung tích hợp trên CPU. Các bộ drive có thể điều khiển và giám sát trạng thái của
động cơ bước và động cơ servo thông qua chức năng điều khiển vị trí này.
Đối tượng “Axis technology” thực hiện cấu hình tham số, dữ liệu về phần cơ
khí, giao tiếp drive, và các tham sô" khác.
Người dùng thực hiện cấu hình ngõ ra phát xung và hướng quay (thuận hoặc
nghịch) để điều khiển drive.
Lập trình sử dụng các tập lệnh điều khiển vị trí để điều khiển trục (axis) và vị
trí bắt đầu hoạt động.
221
Giao thức Profinet cho phép kết nối CPU và phần mềm để có thể kiểm tra trạng
thái CPU online, thực hiện chạy thử và chẩn đoán lỗi cho chế độ điều khiển vị
trí.
Có thể sử dụng mô-đun SB với ngõ ra DC để mở rộng chức năng phát xung tốc
độ cao với tần cố lên tời 200 Khz, hoặc mở rộng chức năng phát xung tốc độ cao cho
những CPU với kiểu ngõ ra rơ- le (AC/DC/Rly hoặc DC/DC/Rly).
4.1.3.1. Chế độ điều phase- Phasing
Người dùng có 4 lựa chọn để thực hiện chế độ điều phase (phasing) với drive của
động cơ bước và động cơ servo:
PTO (pulse A và direction B): Ngõ ra P0 thực hiện phát xung và ngõ ra P1
điều khiển hướng phát xung: nếu Pl = 1 thì phát xung theo hướng thuận
(positive) và nếu P1 = 0 thì phát xung theo hướng nghịch (negative). Địa chỉ
mặc định của PTO1: P0 là Q0.0 và PI là Q0.1.
PTO (count up A và count down B): Ngõ ra P0 thực hiện phát xung thuận
(positive) và ngõ ra P1 thực hiện phát xung nghịch (negative).
222
PTO (A/B phase - shifted): Cả hai ngõ ra P0 và P1 đều phát xung nhưng lệch
nhau 90°. Với cấu hình IX, một xung phát ra là thời gian giữa 2 cạnh lên của
P0. Nếu P0 nhanh phase hơn P1 thì di chuyển theo hướng thuận, nếu P1 nhanh
phase hơn P0 thì di chuyển theo hướng nghịch.
223
PTO (pulse và direction (direction de – selected):
Chế độ này chỉ sử dụng ngõ ra P0 để điều khiển xung và không cần cấu hình P1
làm chân điều hướng phát, và ngõ ra P1 có thể sử dụng với một chức năng khác
tùy vào ứng dụng của người dùng. Khi đó chỉ có thể phát theo 1 hướng duy
nhất.
224
CPU có firmware < V2.2 khi cấu hình hoạt động PTO thì các HSC tương ứng
không được sử dụng cho mục đích khác. Có nghĩa là, nếu PTO1 được kích hoạt thì nó
sẽ tự động kết nối với HSC1 và không thể giám sát giá trị ID1000 khi xung đang phát.
CPU có firmware > V3.0 thì các bộ HSC vẫn có thể được cấu hình theo ứng
dụng nào đó kể các khi chế độ phát xung PTO đã được cấu hình trong CPU.
Bảng 4.15. Những công cụ hỗ trợ điều khiển truyền động
Chức năng cho kiểm tra trạng thái của Axis. Khi công cụ được kích
hoạt thì bảng điều khiển sẽ hiển thị và người dùng thực hiện chạy thử
Axis (commissing):
- Bật/tắt hoạt động của Axis.
Commissioning - Thực hiện chuyển động Axis trong chế độ Jog.
- Điều khiển vị trí Axis trong chế độ chính xác - Absolute hoặc
chế độ tương đối - Relative trong sách tác giả giữ nguyên tên
gọi là Absolute axis và Relative axis.
- Vị trí gốc - Home axis.
225
Công cụ hỗ trợ Miêu tả
- Xác nhận lỗi xảy ra.
Những thuộc tính về vận tốc, tăng/ giảm tốc có thể thay đổi bằng cách
các tập lệnh con Motion.
Diagnostic Cho phép hiển thị trạng thái lỗi và thông tin lỗi của Axis và drive
Cấu hình thuộc tính cho drive, phần cơ khí và chuyển động của drive, cũng như
giám sát giới hạn trên /dưới cho cả phần cứng và phần mềm.
226
Cấu hình truyền động motion và trạng thái dừng khẩn cấp — emergency stop.
Người dùng có thể cấu hình trạng thái về vị trí gốc (passive và active)
227
điều khiển sẽ hiển thị và cho người dùng thực hiện cấu hình hoàn thiện và chạy thử
Axis.
Bật/tắt hoạt động của Axis
Thực hiện chuyển động Axis trong chế độ Jog
Điều khiển vị trí Axis trong chế độ Absolute hoặc Relative.
Vị trí gốc - Home axis.
Xác nhận lỗi xảy ra.
Các thuộc tính vận tốc, tăng/giảm tốc có thể thay dổi thông qua các tập lệnh
Motion.
4.1.3.4. Các tập lệnh điều khiển vị trí
Các tập lệnh điều khiển truyền động Motion được sử dụng để tìm và nhập các
thông số cho đối tượng Axis TO và xuất xung PTO để điều khiển truyền động cho các
trục (Axis).
Các tập lệnh MC có thể thay đổi do các phiên bản TIA Portal, vì vậy bạn đọc phải
tham chiếu lại với các phiên bản đang sử dụng.
a. Lệnh MC_Power
Lệnh MC_Power cho phép các trục Axis được kích hoạt hoặc ngừng kích hoạt.
Trước khi người dùng có thể tắt/mở các trục Axis chắc chắn thỏa mãn những điều
kiện sau:
Đối tượng TO đã được cấu hình một cách chính xác.
Lệnh không được hủy trong quá trình thực hiện nhiệm vụ truyền động. Khi
lệnh được ngắt thì tất cả tập lệnh của MC sẽ dừng không điều khiển đối tượng
Axis TO nữa.
Bảng 4.16. Tham số cho tập lệnh MC_Power
228
Tham số Khai báo TO_Axis Miêu tả
Khi Enable = 0 thì Axis sẽ thắng
servo/step theo cấu hình dừng khẩn cấp
trong bảng trạng thái. Axis sẽ tắt khi
hoàn thành tới trạng thái Standstill.
- 1 = Immediate stop: ngõ ra sẽ dừng phát
xung ngay lập tức
- 2 = Emergency stop with jerk control:
khi tín hiệu Enable = 0 thì Axis sẽ thắng
servo/step theo cấu hình dừng khẩn
cấp.Axis sẽ tắt khi hoàn thành tới trạng
thái Standsill
ErrorInfo OUT Word Thông tin mã lỗi trả về cho tham sô Error.
229
Khi tín hiệu Drive ready = True thì trục Axis TO được bật và bắt đầu
hoạt động. Ngõ ra trạng thái “ Status” và Tag < Axis_ name
>.StatusBits.Enable= True
Các bước tắt trục Axis hoạt động
1. Cài đặt Axis tới trạng thái Standstill của cấu hình Axis TO.
2. Cho tham sô" Enable = FALSE.
3. Nếu ngõ ra “Busy” và “Status” = FALSE thì quá trình tắt Axis hoàn thành.
Nếu trục Axis TO ngừng hoạt động bởi lỗi thì nó sẽ tự hoạt động trở lại sau khi
đã xác nhận lỗi xảy ra. Để thực hiện điều đó thì tham sô" Enable phải luôn trong trạng
thái TRUE.
Restart IN BOOL TRUE = tải lại cấu hình trục Axis từ vùng nhớ
230
Tham số Khai Kiểu dữ Miêu tả
báo liệu
Load memory đến Work memory.
FALSE = lỗi đã xác nhận
c. Lệnh MC_Home
Sử dụng lệnh MC_Home để đưa vị trí của Drive về vị trí gốc ban đầu, nhằm
đảm bảo cho Axis hoạt động chính xác trong hoạt động điều khiển, với chế độ điều
khiển vị trí chính xác - Absolute.
Để sử dụng tập lệnh MC_Home thì trục Axis TO phải ở trạng thái hoạt động.
❖ Các chế độ Home được xác định như sau:
Mode 0 = Direct homing absolute: vị trí mới của trục Axis được cài đặt tại giá
trị của tham sô" Position.
Mode 1 = Direct homing relative: vị trí mới của trục Axis là vị trí hiện tại của
Axis + giá trị tại tham số Position.
Mode 2 = Passive homing: lệnh thực hiện tìm kiếm vị trí Home theo cấu hình
Passive của trục Axis
Mode 3 =Active homing: lệnh thực hiện tìm kiếm vị trí Home theo cấu hình
Active của trục Axis.
231
Bảng 4.18. Tham số tập lệnh MC_ Home
Position IN READ Mode 0, 2, 3: Vị trí chính xác của Axis là sau khi
thực hiện xong trạng thái tìm kiếm vị trí gốc.
Mode 1: giá trị chính xác với vị trí hiện tải của
Axis
Command OUT BOOL True: quá trình thực thi bị nhắt bởi một nhiệm vụ
Aborted khác
232
2. Khởi tạo các tham số cần thiết cho hoạt động về vị trí gốc trong cấu hình Axis
và kích xung cạnh lên cho tham số Execute
3. Khi tham số Done và <Axis namexStatusBits.HomingDone = TRUE thì hoàn
thành việc tìm kiếm vị trí gốc
d. Lệnh MC_Halt
Lệnh MC_Halt sử dụng để dừng tất cả các truyền động Motion và đưa trục Axis
TO sang trạng thái Standstill. Để lệnh thực hiện được thì Axis phải đang hoạt động.
Bảng 4.19. Tham số tập lệnh MC_ Halt
Command OUT BOOL True: Quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác
233
Tham số Khai báo Kiểu dữ liệu Miêu tả
Command
Out Bool TRUE: Quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác.
e. Lệnh MC_MoveRelative
Lệnh MC_MoveRelative sử dụng để di chuyển trục Axis tới vị trí tương đối so
với vị trí ban đầu, nói một cách đơn gian thì: Vị trí Motion Relative = Vị trí hiện tại +
giá trị cài đặt của Distance. Để lệnh có thể thực hiện thì trục Axis cần phải được bật.
Bảng 4.21. Tham số tập lệnh MC_MoveRelative
234
Tham số Khai báo Kiểu dữ liệu Miêu tả
f. Lệnh MC_MoveVelocity
Lệnh được sử dụng để di chuyển trục Axis với một vận tốc cố định được cài đặt
sẵn tại tham số Velocity. Điều kiện để lệnh thực hiện là Axis phải được bật.
Bảng 4.22. Tham số tập lệnh MC_MoveVelocity
235
Tham số Khai Kiểu dữ Miêu tả
báo liệu
In OUT BOOL Current= False: Vận tốc được chỉ định tại
Velocity tham số Velocity tới khi đạt
Current= True: Axis sẽ duy trì vận tốc
hiện tại
Command OUT BOOL True: quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác
Lưu ý: Đối với việc cài đặt giá trị vận tốc là 0 (Velocity = 0.0)
Velocity = 0.0 giống như gọi MC_Halt đó là ngắt các lệnh truyền động của
trục Axis chuyển sang trạng thái dừng với cấu hình giảm tôc. Khi Axis tới vị
trí standstill thì tham số “InVelocity” = TRUE.
Chỉ thị Busy = TRUE trong suốt quá trình giảm tốc và chuyển sang FALSE
236
cùng với InVelocity.
g. Lệnh MC_MoveJog
Lệnh được sử dụng đế di chuyển trục Axis với vận tốc cố định cài đặt sẵn tại
tham số Velocity trong chế độ Jog. Lệnh được sử dụng trong việc kiểm tra trạng thái
và chạy thử hệ thống.
Bảng 4.23. Tham số tập lệnh MC_MoveJog
In Velocity OUT BOOL True: Vận tốc đặt tại tham số Velocity
đã đặt
Command OUT BOOL True: quá trình thực thi bị ngắt bởi một
Aborted nhiệm vụ khác
Nếu cả JogForward và JogBackward đều được kích hoạt thì Axis sẽ dừng và
hoạt động theo cấu hình giảm tốc và báo lỗi.
237
4.1.3.5. Lập trình phát xung PTO với các lệnh điều khiển truyền động
a. Đặt vấn đề
Cấu hình hệ thống bao gồm: 1 CPU 1214C, 1 động cơ servo thông qua Driver
kết nối với ngõ ra phát xung của CPU, 1 màn hình HMI giao tiếp với PLC để thay đổi
giá trị điều khiển. Lập trình PLC thực hiện phát xung PTO điều khiển động cơ Servo
hoạt động.
b. Cấu hình thiết lập phần cứng PLC và Driver
Bước 1: Chọn địa chỉ ngõ vào/ra PLC tương ứng với tín hiệu của Driver:
Bước 2: Kết nối ngõ ra PLC tới ngõ vào của Driver
Hoạt động của Servo ảnh hưởng bởi tác động từ các tín hiệu như sau:
238
Xung trả về - Pulse
Hướng quay
Xung ngõ vào cho phép hoạt động
Tín hiệu cho phép Drive hoạt động
Tín hiệu reset báo lỗi – alarm reset
Bước 3: Kết nối ngõ vào PLC với ngõ ra Driver trả về để nhận tín hiệu hồi tiếp
của encoder, tín hiệu alarm, tín hiệu ready
c. Điều khiển động cơ Servo bằng xung
Một xung tín hiệu Drive nhận được và động cơ servo có thể di chuyển một góc là
bao nhiêu độ thì phụ thuộc vào cài đặt của Drive
Nếu Drive cài đặt là 1000 xung/vòng thì động cơ có thể di chuyển 0.360/xung.
Vận tốc động cơ được xác định thông qua số xung/giây. Và PLC S7 -1200 có
vận tốc phát lên tới 100000 xung/giây (PPS) hoặc hơn nữa phụ thuộc vào tín hiệu on-
board hay SB.
d. Công thức tính toán tần số tối đa của động cơ
Để chắc chắn rằng điều khiển vị trí của động cơ được thực thi không vượt quá
vận tốc tối đa, chúng ta cần xác định tần số tối đa của động cơ để đạt được tốc độ như
mong muốn khi nhận xung từ PLC.
Ví dụ:
Tốc độ của động cơ Servo là: Tmotor= 2000 rpm (vòng/phút)
Số xung trên vòng quay: Pmotor = 2000 ppr (xung/vòng)
Tần số tối đa của động cơ được tính sẽ là fmotor = Pmotor x
Vậy tần số tối đa của động cơ fmotor =83333 pps (xung/giây)
e. Cấu hình cho bộ phát xung PTO hoạt động
Bước 1: Tiếp tục phát triển dựa vòa Project ở các phần trước
Bước 2: Cấu hình cho PTO hoạt động: Device configuration – Device view –
CPU – Properties – Pulse generators (PTO/PWM) – PTO2/PWM2 – đặt tên là PTO
Chọn Enable this pule generator
Chế độ phát xung là PTO
239
f. Cấu hình cho đối tượng kỹ thuật Axis
Bước 1: Khởi taọ đối tượng kỹ thuật Axis: Technology – Add new object –
Motion control – TO_Axis_PTO – đặt tên và chọn Version được hỗ trợ tương ứng với
cấu hình của CPU và Version của TIA Portal – OK.
TO_PositioningAxis: Cho phép thực hiện điều khiển truyền động riêng lẻ.
TO_CommandTable: Kết hợp các tập lệnh thực hiện truyền thông đơn lẻ thành
một chuỗi thực hiện liên tục.
240
Bước 2: Cấu hình cho trục Axis TO hoạt động theo yêu cầu đặt ra: Chọn Basic
parameters – General. Tại đây người dùng có thể đặt tên lại cho Axis và lựa chọn
Hardware interface và đơn vị tính:
Axis name: Axis_2
Drive: cho phép lựa chọn cho các kết nối với Drive
o PTO ( Pulse Train Output): Điều khiển bằng xung
o Analog drive connection: Điều khiển bằng analog.
o PROFIDrive: Điều khiển bằng giao thức Profidrive
Đơn vị tính: Có thể tùy chọn là mm, m, inches,…Ở đây tác giả lựa chọn đơn vị
là mm.
Hardware interface: Lựa chọn kênh phát xung đã cấu hình trước đó
(PTO2/PWM2).
241
Lựa chọn tín hiệu điều khiển và phản hồi Drive – PLC: Sử dụng để tắt/mở
servo drive và kiểm tra hoạt động của lệnh MC_Power
Ngõ ra PLC S7 -1200 kích hoạt Drive hoạt động.
Tín hiệu relay báo Drive đã sẵn sàng. Drive không có tín hiệu ready thì chọn
tín hiệu Ready là True.
Bước 3: Lựa chọn các tham số mở rộng cho đối tượng Axis:
Mechanics: Định nghĩa giới hạn tốc độ động cơ và chuyển đổi xung tương ứng
với đơn vị chiều dài.
Pulses per motor revolution (ppr):2500 – công thức tính và ý nghĩa đã nói ở
phần trước
Distance per motor revolution: Chọn chiều quay cho phép
242
Invert direction signal: Đảo chiều quay động cơ
Position limit (monitoring): Tính năng tùy chọn để xác định giới hạn cho cả
phần cứng, phần mềm và vị trí của chúng.
Dynamics General: cấu hình cài đặt giới hạn tốc độ, thời gian tăng tốc, giảm
tốc. Các công thức liên hệ đã được xác định ở các mục trước
o Vận tốc lớn nhất xung/giây (pps):83,333 pps
o Vận tốc start/stop:1000.0 pps
o Thời gian tăng/giảm tốc chọn 2s. Phần mềm tự tính chuyển đổi về mm/s2
243
o Lựa chọn thời gian giảm tốc khẩn cấp là 1s
Homing: Vị trí gốc để hoạt động. Ở đây không sử dụng bỏ qua, người dùng có
thể đọc lại các mục trên để lựa chọn phù hợp.
Bước 2: Khởi tạo khối dữ liệu Control_PTO: Program blocks – add new block –
data block, đặt tên Control_PTO, chọn kiểu Global DB – OK.
Bước 3: Khai báo các thông số và kiểu dữ liệu muốn sử dụng:
244
Bước 4: Khởi tạo hàm PTO_Pulse FC để lập trình phát xung PTO sử dụng các
tập lệnh MC_Power và MC_MoveRelative thực hiện yêu cầu: Instruction –
Technology – Motion Control.
Gọi lệnh MC_Power để cho phép các lệnh truyền động khác hoạt động
Gọi lệnh MC_MoveRelative để thực hiện điều khiển tương đối – thực hiện dịch
chuyển động cơ so với vị trí hiện hành
245
Kích hoạt cho phép Drive Servo hoạt động
Dựa theo tính toán tự động với các thông số trước đã lựa chọn thì:
Distance: Khoảng dịch chuyển với đơn vị tính là:mm
Velocity: Đơn vị là mm/s. 4.0 ≤ Velocity ≤ 333.32 ( các giá trị này đã được xác
định tại Dynamics General)
Bước 5: Cài đặt cho màn hình HMI/SCADA thieeys kế giao diện với I/O field
cho thay đổi số xung/khoảng cách … tùy theo ứng dụng bài toán/hệ thống cụ thể của
người dùng
4.2. Thiết kế hệ thống điều khiển vòng kín với bộ điều khiển PID
Bộ điều khiển PID (Proportional Integral Derivative controller) là bộ điều khiển
sử dụng kỹ thuât điều khiển theo vòng lặp có hồi tiếp được sử dụng rộng rãi trong các
hệ thống điều khiển tự động ,nó hiệu chỉnh sai lệch giữa tín hiệu ra và vào sau đó đưa
ra một một tín hiệu điều khiển để điều chỉnh quá trình cho phù hợp.
Bộ điều khiển PID (vi tích phân tỉ lệ) rất hay dùng trong các hệ thống điều khiển.
Vì nó tăng chất lượng đáp ứng của hệ thống với các ưu điểm sau: PID là sự kết hợp ưu
điểm của hai khâu PD và PI, nó làm giảm thời gian xác lập, tăng tốc độ đáp ứng của
hệ thống, giảm sai số xác lập, giảm độ vọt lố,…
Sơ đồ khối hệ điều khiển PID:
246
KI 1
GPID = K P + + K D s = K P (1 + + TD s )
s TI s
Khâu P - Proportional: Tạo ra tín hiệu điều khiển tỉ lệ với giá trị của sai lệch.
Việc này được thực hiện bằng cách nhân sai lệch e với hằn số - Hằng số tỉ lệ.
P = K P e(t )
Trong đó: P - Giá trị ngõ ra ; - Hằng số tỉ lệ ; e - sai lệch giữa giá trị đặt với
giá trị điều khiển.
Khâu I - Integral: Cộng thêm tổng các sai số trước đó vào giá trị điều khiển.
Viêvj tính tổng các sai số được thực hiện liên tục cho đến khi giá trị đạt đượcbằng với
giá trị đặt, và kết quả là khi hệ cân bằng thì sai số bằng 0.
t
I = K I e(t )dt
0
247
Chọn luật điều khiển cho các bài toán tiêu biểu:
- Vòng điều khiển lưu lượng: Động học của đối tượng phụ thuộc chủ yếu vào
van điều khiển, nhiễu đo cao tần => hầu như chỉ cần sử dụng luật PI.
- Vòng điều khiển mức: Quá trình có đặc tính tích phân, phép đo mức thường rất
bị ảnh hưởng của nhiễu => luật P cho điều khiển lỏng và luật PI cho điều khiển chặt.
- Vòng điều khiển áp suất chất khí: Động học của đối tượng phụ thuộc chủ yếu
vào thiết bị chấp hành, quá trình cũng có đặc tính tích phân tương tự như bài toán điều
khiển mức nhưng cao hơn về độ chính xác => Luật PI là chủ yếu.
- Vòng điều khiển nhiệt độ: Động học chậm, phép đo ít chịu ảnh hưởng của
nhiễu cao tần => sử dụng luật PID.
- Vòng điều khiển thành phần: Tương tự như vòng điều khiển nhiệt độ =>
thường sử dụng PID.
4.2.1. Các tập lệnh xử lý thuật toán PID
4.2.1.1 Bộ điều khiển PID_Compact
Lệnh được sử dụng với các thuật toán PID theo kiểu đa dụng, được tích hợp sẵn
bộ tự chình (auto-turning) cho cả chế độ Auto và chế độ Manual. Lệnh thực hiện với
các chế độ như:
Inactive Ngắt hoạt động (Mode/State = 0)
Pretuning Tiền tinh chỉnh (Mode/State = 1)
Fine tuning Tinh chỉnh (Mode/State = 2)
Automatic mode Chế độ tự động (Mode/State = 3)
Manual mode Chế độ chỉnh bằng tay (Mode/State = 4)
Substitute output value with error Giá trị ngõ ra khi có lỗi xảy ra (Mode/State = 5)
monitoring
a) Thuật toán điều khiển PID_Compact
PID_Compact là bộ PIDT1 với anti – windup và trọng số P và D. Công thức hoạt
động của thuật toán PID được thể hiện như sau:
1 TD ∗ s
Y = K p (b ∗ w − x) + (w − x ) + (c ∗ w-x)
TI ∗ s a ∗ TD ∗ s + 1
Trong đó:
Y Giá trị ngõ ra của thuật toán PID
Kp Độ lợi gain
248
s Toán tử laplace
b Trọng số của khâu P
w Giá trị cài đặt mong muốn – Setpoint Value
x Giá trị quá trình của hệ thống – Process Value
TI thời gian tích phân
TD Thời gian vi phân
a Hệ số trễ của khâu D (T1 = a*TD)
c Trọng số của khâu D
b) Sơ đồ khối của lệch PID_Compact
249
Hình 4.2. Sơ đồ khối của lệnh PID_Compact với Anti – Windup
c) Gọi lệnh PID_Compact
Đầu tiên mở tia portal lên sau đó tạo project mẫu pid vói cpu s7-1200. Tiếp theo
vào mục Program Block rồi chọn add new block.
Lệnh xử lý PID_Compact cần được gọi trong OB ngắt chu kỳ với thời gian
không đổi.
Chọn mục Cyclic Interrupt, ở mục Cyclic Time là thời gian cập nhật của khối
này bạn nhập thời gian vào, nếu nhập càng nhỏ thì thời gian cập nhật càng nhanh.
250
Khởi động và cài đặt lệnh PID_Compact
Sau khi nhập lệnh xong, bấm vào biểu tượng khoan đỏ như trên hình để cài đặt
thông số bộ PID, ở mục đầu tiên Controller type nên quan tâm tới dạng điều khiển và
nên đánh dấu tích vào mục Enable last mode after cpu restart.
251
Tiếp theo ở phần Input/ output parameters chọn kiểu ngõ vào là ô nhớ hay ngõ
vào analog, ngõ ra là ô nhớ, ngõ ra analog hay dạng pwm.
Phần PID Parameters bấm vào để cài đặt thông số cho bộ pid.
Khi đánh dấu tích vào mục Enable manual Entry là cài đặt thông số bằng tay,
còn mặc định thì bộ thông số này sẽ dò tự động.
252
Sau khi nhập lệnh vào cài đặt thông số cho bộ pid thì bấm vào biểu tượng khoan
tròn màu vàng ở lệnh PID để tiến hành kích hoạt lệnh pid hoạt động.
Thao tác kích hoạt này chỉ thực hiện 1 lần bởi vì ở phần trên ta đã đánh dấu tích
vào mục Enable last mode after cpu restart nên những lần sau khi cpu khởi động thì
lệnh pid sẽ tự chạy luôn.
Trong ví dụ như trên hình lệnh pid có setpoint là 90 có nghĩa là 90%, ngõ vào
input là ô nhớ MD0, ngõ ra là MD4. Lưu ý tất cả dữ liệu để ở dạng số thực Real.
4.2.1.2. Bộ điều khiển PID_3Step
Lệnh PID_3Step được sử dụng cho các đối tượng điều khiển có tích hợp các bộ
tự chỉnh (self turning) như: van điện từ (valve), cơ cấu chấp hành actuator. Lệnh
PID_3Step cung cấp thêm 2 ngõ ra theo kiểu Boolean. Lệnh thực hiện với các chế độ
như:
Chế độ Inactive Mode/State = 0
Chế độ Pretuning Mode/State = 1
Chế độ Fine tuning Mode/State = 2
Chế độ Automatic mode Mode/State = 3
Chế độ Manual mode Mode/State = 4
Chế độ Approach substitute output value Mode/State = 5
253
Chế độ Transition time measurement Mode/State = 6
Chế độ Error monitoring Mode/State = 7
Chế độ Approach substitute output value Mode/State = 8
with error monitoring
Chế độ Manual mode without endstop Mode/State = 9
signals
a) Thuật toán PID_3Step
PID_3Step là bộ PIDT1 với anti-windup và trọng số là P và D. Công thức của
thuật toán được thể hiện như sau:
1 TD ∗ s
∆Y = K p ∗ s ∗ (b ∗ w − x) + (w − x) + (c ∗ w-x)
TI ∗ s a ∗ TD ∗ s + 1
Trong đó:
∆Y Giá trị ngõ ra của thuật toán PID
Kp Độ lợi gain
s Toán tử laplace
b Trọng số của khâu P
w Giá trị cài đặt mong muốn – Setpoint Value
x Giá trị quá trình của hệ thống – Process Value
TI thời gian tích phân
TD Thời gian vi phân
a Hệ số trễ của khâu D (T1 = a*TD)
c Trọng số của khâu D
254
b) Sơ đồ khối của lệnh PID_3Step
255
Hình 4.4. Sơ đồ khối có tín hiệu phản hồi
256
Khởi động lệnh PID_3Step
Khi CPU khởi động, lệnh PID_3Step bắt đầu chế độ hoạt động đã được lưu trước
đó trong tham số Mode
Để chuyển sang chế độ “Inactive” trong quá trình khởi động, cần phải thiết lập
tham số RunModeByStarup = FALSE
4.2.1.3. Bộ điều khiển PID_Temp
Lệnh PID_Temp được sử dụng để điều chỉnh đối tượng chuyên về xử lý nhiệt
độ. Bộ điều khiển PID_Temp có thể sử dụng thực hiện đốt nóng (heating) thuần túy
hoặc cả chế độ lam nóng và làm lạnh (heating/cooling). Lệnh có thể thực hiện các chế
độ:
Chế độ Inactive Mode/State = 0
Chế độ Pretuning Mode/State = 1
Chế độ Fine tuning Mode/State = 2
Chế độ Automatic mode Mode/State = 3
Chế độ Manual mode Mode/State = 4
Chế độ Substitute output value with error Mode/State = 5
monitoring
a) Thuật toán điều khiển PID_Temp
PID_Temp là bộ PIDT1 với anti-windup và trọng số cho P và D. Công thức hoạt
động của thuật toán PID được thể hiện như sau:
1 TD ∗ s
Y = K p ∗ (b ∗ w − x) + (w − x) + (c ∗ w-x)
TI ∗ s a ∗ TD ∗ s + 1
Trong đó:
Y Giá trị ngõ ra của thuật toán PID
Kp Độ lợi gain
s Toán tử laplace
b Trọng số của khâu P
w Giá trị cài đặt mong muốn – Setpoint Value
x Giá trị quá trình của hệ thống – Process Value
TI thời gian tích phân
TD Thời gian vi phân
257
a Hệ số trễ của khâu D (T1 = a*TD)
c Trọng số của khâu D
b) Sơ đồ khối của lệnh PID_Temp
258
Hình 4.7. Sơ đồ khối của lệnh PIDT1 với anti-windup
Khởi động lệnh PID_Temp
Khi CPU khởi động, lệnh PID_Temp bắt đầu chế độ hoạt động đã được lưu
trước đó trong tham số Mode
Để chuyển sang chế độ “Inactive” trong quá trình khởi động, cần phải thiết lập
tham số RunModeByStarup = FALSE
PID_Temp mặc định sử dụng với ngõ ra dụng đốt nóng – heating. Giá trị ngõ ra
của thuật toán PID (PidOutputSum) được chuyển đổi tương ứng với ngõ ra thực tế để
điều khiển việc đốt nóng, có thể sử dụng định dạng ngõ ra tùy chọn:
OutputHeat_PWM, OutputHeat hoặc OutputHeat_PER.
Khi Config.ActiveCooling = TRUE ngõ ra để thực hiện chế độ làm lạnh –
cooling được kích hoạt. Giá trị ngõ ra ở trạng thái dương đáp ứng việc đốt nóng, giá
trị âm đáp ứng việc làm lạnh. Có thể lựa chọn ngõ ra làm lạnh với các lựa chọn là:
OutputCool, OutputCool_PWM, OutputCool_PER.
4.2.2. Thiết kế hệ thống điều khiển vòng kín với hàm PID – Compact
4.2.2.1. Đặt vấn đề
Hệ thống gồm: 1 bồn nước, 1 cảm biến siêu âm đọc tín hiệu trả về từ 0-10V tương
ứng chiều dài 0-100% của bồn nước, 1 bơm tuyến tính nhận tín hiệu từ 0-10V, 1 van
xả on/off, 1 nút start, 1 nút stop.
Yếu cầu:
- Bấm start hệ thống hoạt động, bấm stop hệ thống dừng.
Khi hệ thống chạy bơm được 70% giá trị đặt cho valve xả hoạt động.
259
Lập trình PLC S7 – 1200 điều khiển mô hình bồn nước hoạt động theo quy trình
sau:
- Nhấn nút Start cho phép hệ thống hoạt động
- Nhấn Stop hệ thống dừng hoạt động
- Tất cả giá trị cài đặt SP, giá trị phản hồi PV, sai số ER, độ lợi Gian, thời gian
Ti, Td… có thể thay đổi thông qua màn hình điều khiển HMI/SCADA
- Khi hệ thống chạy được 70% giá trị SP (0.7*Setpoint) thì cho van xả hoạt
động.
4.2.2.2. Yêu cầu và kết nối phần cứng
a) Yếu cầu phần cứng
- CPU S7 -1200: Tích hợp sẵn I/O và AI.
- Modul xử lý ngõ ra tương tự: sử dụng SB hoặc modul chuẩn
- Các cơ cấu chấp hành đáp ứng yêu cầu bài toán đặt ra.
b) Kết nối phần cứng
- Start_PID có địa chỉ: I8.4
- Stop_PID có địa chỉ: I8.5.
- Valve_Out có địa chỉ: Q8.5.
- Ultra_Sensor nhận tín hiệu từ cảm biến siêu âm: IW80.
- Pump_Analog gửi tín hiệu điều khiển cho biến tần: QW80.
4.2.2.3. Hướng dẫn thực hiện bài toán
a) Bước khai báo tham số biến và lập trình khởi động cho PID
260
Bước 1: Cấu hình phần cứng bao gồm modul CPU S7 1200, modul AI/AO theo
yêu cầu công nghệ.
Bước 2: Tạo Tag-Symbol theo phần cứng: PLC Tags Add new tag table đặt
tên là PID tag.
Bước 3: Tạo khối dữ liệu PID_Data [DB12]: Program block Add new block
Data block, đặt tên PID_Data, chọn kiểu (type) là Global DB chọn OK để hoàn
thành
Bước 4: Khai báo các thông số và kiểu dữ liệu muốn sử dụng.
Bước 5: Khởi tạo hàm PID_Control_Paramter [FC15] để lập trình điều khiển
hoạt động của Van xả và kích hoạt lệnh PID.
261
Bước 6: Gọi hàm PID_Control_paramter [FC15] trong Main[OB1].
262
Bước 2: Cài đặt và cấu hình cho chế độ Basic Settings.
Controller type: Cho phép người lập trình lựa chọn đối tượng điều khiển và kiểu
giá trị vào/ra cho bộ điều khiển PID.
- Có thể lựa chọn kiểu điều khiển PID theo tỉ lệ %, nhiệt độ, ánh sáng, lưu lượng,
dòng, áp…
- Đối với các phiên bản nhỏ hơn TIA Protal V13: Chế độ Enable last mode
after CPU restart giúp người dùng giữ được trạng thái hoạt động của bộ PID khi đã
cấu hình hoàn chỉnh xong, dù CPU khởi động lại hay mất điện
- Đối với TIA V14 trở lên cho phép người thiết kế lựa chọn chế độ hoạt động của
PID khi CPU khởi động lại.
Input/Output Paramters: Cho phép lựa chọn tham số phẩn hồi PV và ngõ ra
điều khiển PID là kiểu I/O analog hoặc giá trị được Scale bởi người dùng.
263
Kiểu dữ liệu Input_PER và Output_PER cho phép sử dụng trực tiếp các thanh
ghi của ngõ vào/ra tương tự (AIW/AQW).
Kiểu dữ liệu Input và Output thì người lập trình cần phải chuyển đổi dữ liệu
tương tự.
Bước 3: Cài đặt cấu hình cho chế độ Process value settings.
- Process value limits: Cho phép cài đặt và lựa chọn giá trị giới hạn trên/ dưới
cho giá trị quá trình hoạt động.
- Process value Scaling: Cho phép chọn tỉ lệ chuyển đổi tương ứng với số hóa.
264
- PWM limits: Cho phép người lập trình cài đặt thời gian tắt/mở nhỏ nhất ngõ ra
PID theo định dạng điều chế độ rộng xung.
- Output value limits: Cho phép người lập trình cài đặt giá trị nhỏ nhất và lớn
nhất có thể xuất ra.
- Reaction to error: Cho phép người lập trình tùy chỉnh ngõ ra PID khi có lỗi
xảy ra trong quá trình thực hiện bộ điều khiển PID.
- PID Parameters: Cho phép người dùng chọn chế độ PI/PID để hoạt động hay
cài đặt các giá trị PID bằng manual.
265
Bước 5: Thực hiện biên dịch Compile và lưu chương trình trước khi tiếp tục các
bước tiếp theo.
c) Khai báo PID_Compact trong OB ngắt chu kỳ
Bước 1: Khởi tạo OB ngắt chu kỳ: Program Block Add new block
Organization block (OB) Cyclic interrupt Chọn thời gian lấy mẫu (mặc định
100ms) OK.
Bước 2: Khai báo khối điều khiển PID_Compact và các tham số cần thiết để
điều khiển trong Cyclic interrupt [OB30]: Network 1 Instructions Technology
PID Control Compact PID.
- Khi khai báo bộ điều khiển PID_Compact thì phần mềm TIA Portal tự động tạo
Instane DB cho khối hàm, và đây chính là đối tượng TO cho PID_Compact.
266
Bước 3: Thực hiện khai báo đối tượng TO và các tham số cần thiết cho bộ điều
khiển PID_Compact.
- Kéo đối tượng kỹ thuật TO của PID_Compact từ trình biên soạn Technology
Object đưa vào <???> trên giao diện lệnh PID_Compact.
- Các giá trị cài đặt, giá trị quá trình được hiển thị và cài đặt trên giao diện màn
hình HMI/SCADA.
- Trong cấu hình của đối tượng kỹ thuật TO sử dụng chế độ I/O nên người lập
trình sử dụng trực tiếp địa chỉ AI và AQ mà không cần phải dùng hàm chuyển đổi
tương tự.
- Các thám số khác như State, Error giúp người lập trình biết được chế độ hoạt
động của PID_Compact và các trạng thái báo lỗi để hiệu chỉnh PID cho phù hợp.
Lưu ý:
- Chế độ hoạt động của PID có thể thay đổi trong quá trình chạy thông qua thám
số ModeActive và Mode theo mô tả các tham số ngõ vào ra của PID_Compact.
267
- Tham số ngõ ra Output của PID_Compact mặc định có tầm giá trị từ 0 – 100%
cho nên người lập trình càn lưu ý khi muốn hiển thị lên HMI/SCADA.
- Có thể truy vấn tín hiệu tương tự trực tiếp với IW hoặc PIW. Ví dụ có thể sử
dụng IW80 hoặc PIW80.
c) Thực hiện Commissioning cho bộ điều khiển PID
Bước 1: Sau khi thực hiện lập trình đầy đủ theo yêu cầu thì thực hiện biên dịch
lại toàn bộ phần cứng và phần mềm trước khi tải chương trình xuống CPU.
Bước 2: Thực hiện tải chương trình xuống CPU.
Bước 3: Chọn PLC Technology Object DB của PID_Compact
Commissioning chọn biểu tượng Monitor All để thực hiện giám sát và chọn chế độ
hoạt động cho bộ điều khiển PID.
- Measurement: Cho phép lựa chọn thời gian lấy mẫu để giám sát đồ thị hoạt
động của PID với sampling time có thời gian nhỏ nhất là 0.3s.
- Tuning mode: Cho phép chọn chế độ tự chỉnh với hai chế độ: Pretuning và Fine
tuning.
268
- Bộ điều khiển PID hoạt động trong tầm giới hạn vận hành.
- Và không có nhiễu không mong muốn xảy ra.
Sauk hi thực hiện quá trình Pretuning và Fine tuning hoàn thiện hệ thống sẽ kết
thúc và người lập trình cần lưu trữ lại tham số PID vào trong project bằng thao tác
Upload PID Parameter.
Đồng thời kích hoạt chế độ Enable manual entry để thay đổi các giá trị của PID
(Nếu cần).
Để đưa các tham số PID lên giao diện màn hình HMI/SCADA có thể kiểm tra
địa chỉ vùng nhớ như sau: PLC Technology chọn đối tượng kỹ thuật TO của
PID… chuột phải Open DB editor Retain CtrlParams…
Lưu ý:
- Nếu trong quá trình hoạt động người lập trình xác định được nhiễu ảnh hưởng
tới hệ thống thì có thể thực hiện bù nhiễu với tham số Disturbance.
- Có thể sử dụng lệnh MOVE để nạp các giá trị trạng thái cho bộ PID. Để thực
hiện chạy Fine Tuning có thể viết:
Ngoài ra người lập trình có thể tìm hiểu thêm các tập lệnh phụ trợ được tích hợp
thêm như Polyline, SplitRange và RampFunction để tăng tính hiệu quả khi sử dụng
các bộ điều khiển PID.
269
4.3. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4
4.3.1. Câu hỏi ôn tập
1. Trình bày cấu tạo và nguyên lý hoạt động của Encoder?
2. PLC S7-1200 có bao nhiêu kênh đếm phát xung tốc độ cao và tần số lớn nhất có thể
đếm là bao nhiêu?
3. Sự khác nhau giữa xung PWM và PTO ?
4. Thuật toán PID là gì? Khi nào chúng ta sử dụng thuật toán này trong quá trình điều
khiển?
5. Bộ PID bao gồm những thành phần gì? Mỗi thành phần ảnh hưởng như thế nào tới
quá trình điều khiển?
6. Để cải thiện đáp ứng của hệ thống thì chúng ta cần thay đổi những thông số nào?
Nếu giá trị PV lúc nào cũng nhỏ hơn SP thì chúng ta cần thay đổi thông số nào?
7. Nếu sai số xác lập lớn thì chúng ta cần thay đổi những thông số nào? Thay đổi như
thế nào?
8. Tại sao chúng ta phải rời rạc hóa tín hiệu? Vì sao lại phải gọi bộ điều khiển PID
trong những khối OB ngắt chu kỳ? có thể gọi trong OB Main được không? Tại sao?
9. Khi muốn điều khiển hệ thống nhiệt thì chúng ta có thể sử dụng những bộ điều
khiển PID nào?
10. Các bước thực hiện thiết lập một bộ điều khiển PID hoạt động như thế nào để sau
khi CPU tắt nguồn và khởi động lại vẫn hoạt động tốt
4.3.2. Bài tập
1. Bài toán Đo vị trí của trục vitme.
Mục đích: Sử dụng bộ đếm tốc độ cao PLC S7-1200 để đọc xung encoder, từ đó
tính được vị trí của trục vitme. Và hiển thị vị trí trục vitme lên màn hình HMI.
Trục vitme trên mô hình thực nghiệm có bước ren là 10mm. Encoder là 200
xung/vòng. Như vậy, sau khi sử dụng PLC thu được số xung encoder (gọi là X), tính
được vị trí trục vitme là (X.0,05) mm.
2. Điều khiển vị trí trục vitme
Mục đích: Nhập vị trí cần của trục vitme trên màn hình HMI, PLC điều khiển
động cơ chạy tới vị trí cần. Dùng Encoder để xác định vị trí, sử dụng PWM để điều
khiển động cơ. Phương pháp điều khiển sử dụng bộ điều khiển PID.
270
CHƯƠNG 5
MẠNG TRUYỀN THÔNG CÔNG NGHIỆP
Nội dung chương 5 cung cấp cho sinh viên kiến thức về tổng quan mạng truyền
thông ASI, MODBUS, PROFIBUS, PROFINET, và các cách thức truyền thông, các
tập lệnh hỗ trợ truyền thông trên phần mềm TIA PORTAL. Thiết kế và lập trình các
mạng truyền thông tiêu biểu trên phần mềm TIA PORTAL.
5.1. TỔNG QUAN MẠNG TRUYỀN THÔNG CÔNG NGHIỆP
Hệ thống điều khiển, điều hành và quản lý sản xuất một cách tự nhiên được phân
chia thành nhiều cấp. Phù hợp với thực tế này, hệ thống tự động hóa quá trình sản xuất
cũng được phân chia thành nhiều cấp và điển hình của một hệ thống tự động hóa quá
trình sản xuất thường bao gồm 5 cấp như trên hình 5.1.
5. Cấp Workstation,
quản lý PC, Servers
công ty
Workstation,
3. Cấp giám sát - chỉ huy
PC
Controllers,
2. Cấp điều khiển PLC,
CNC, PC
Controllers,
1. Cấp trường (cảm biến - chấp hành) sensors,
actuators
Hình 5.1. Sơ đồ phân cấp hệ thống điều khiển tự động hóa quá trình sản xuất
Đặc điểm của các cấp này như sau:
Cấp thứ nhất: là cấp cảm biến – chấp hành hay cấp trường. Nó thực hiện kết
nối các bộ điều khiển, cảm biến và các cơ cấu chấp hành.
Cấp thứ hai: là cấp điều khiển (phân xưởng) thực hiện việc điều khiển các quá
trình công nghệ và thực hiện việc kết nối các bộ điều khiển, thiết bị điều khiển logic
271
khả trình PLC, thiết bị điều khiển quá trình công nghệ trong máy điều khiển số CNC
hoặc các máy tính PC công nghiệp.
Cấp thứ ba: là cấp vận hành, giám sát chỉ huy và thực hiện chức năng vận hành
giám sát và điều khiển chi huy cho quá trình công nghệ. Tại cấp thứ ba này thực hiện
các chức năng giao diện người – máy, lưu trữ các số liệu liên quan tới sản xuất, ra các
lệnh, thiết lập cấu hình và thay đổi chế độ làm việc cho quá trình công nghệ, máy sản
xuất,... Thiết bị trong cấp thứ ba này là các máy trạm làm việc, các máy tính PC. Các
cấp 1, 2 và 3 là các cấp trực tiếp thực hiện quá trình công nghệ.
Cấp thứ tư: là cấp quản lý nhà máy và thực hiện phối hợp nhiều nhiệm vụ quản
lý khác nhau như quản lý kỹ thuật, quản lý sản xuất, quản lý nguồn lực,...
Cấp thứ năm: là cấp quản lý công ty và nó thực hiện kết nối và phối hợp các
hoạt động quản lý khác nhau trên mọi nhà máy, chi nhánh và văn phòng công ty tại
nhiều thành phố và quốc gia khác nhau.
Trong sơ đồ phân cấp của hệ thống tự động hóa quá trình sản xuất thì các cấp 1,
2 và 3 là các cấp trực tiếp thực hiện quá trình công nghệ và hệ thống điều khiển tự
động áp dụng cho các cấp này còn được gọi là hệ thống tự động hóa quá trình công
nghệ còn các cấp thứ 4 và thứ 5 thực hiện chức năng quản lý và hệ thống tự động hóa
áp dụng cho hai cấp này được gọi là hệ thống tự động hóa điều hành và quản lý sản
xuất. Trong phạm vi tài liệu này, hệ thống được đề cập chủ yếu là hệ thống tự động
hóa quá trình công nghệ, có nghĩa là các cấp 1, 2 và 3 trong sơ đồ phân cấp hệ thống
tự động hóa quá trình sản xuất. Nội dung tiếp theo trình bày các mạng truyền thông
tiêu biểu trong công nghiệp: mạng truyền thông ASI, MODBUS, PROFIBUS,
PROFINET.
5.2. MẠNG TRUYỀN THÔNG ASI
5.2.1. Tổng quan mạng truyền thông ASI
a. Tổng quan
Giao tiếp ASI (Actuator Sensor Interface) hay giao tiếp actuator/sensor là hệ
thống kết nối cho cấp quá trình thấp nhất trong hệ thống tự động hóa. Các kiểu
actuator và sensor nhị phân đơn giản nhất được nối với trạm hệ thống tự động qua bus
giao tiếp AS ( ASI bus). Giao tiếp này ra đời vào năm 1994
272
Hình 5.2. Vị trí của mạng AS-I trong hệ thống mạng công nghiệp
ASI là kết quả phát triển hợp tác của 11 hãng sản xuất thiết bị cảm biến và cơ
cấu chấp hành có tên tuổi trong công nghiệp, trong đó có SIEMENS AG,Festo
KG,Pepperl & Fuchs GmbH. Như tên gọi của nó phần nào diễn tả mục đích sử dụng
duy nhất của ASI là kết nối các thiết bị cảm biến và cơ cấu chấp hành số với cấp điều
khiển . Từ thực tế là hơn 80 % cảm biến và cơ cấu chấp hành trong một hệ thống máy
móc làm việc với các biến logic, cho nên việc nối mạng chúng trước hết phải đáp ứng
được yêu cầu về giá thành thấp cũng như lắp đặt ,vận hành và bảo dưỡng đơn giản .Vì
thế, các tính năng kỹ thuật được đặt ra là:
- Khả năng tải nguồn, tức là dữ liệu và dòng nuôi cho toàn bộ các cảm biến và
một phần lớn các cơ cấu chấp hành phải được truyền tải trên cùng một cáp hai dây.
- Phương pháp truyền phải thật bền vững trong môi trường công nghiệp nhưng
không đòi hỏi cao về chất lượng đường truyền .
- Cho phép thực hiện cấu trúc mạng đường thẳng cũng như hình cây.
- Các thành phần giao diện có thể thực hiện với giá thành thấp.
- Các bộ nối phải nhỏ, gọn, đơn giản và giá cả hợp lý.
Với các hệ thống bus đã có, các yêu cầu trên chưa đáp ứng một cách thỏa đáng
.Đó chính là động lực cho việc hợp tác phát triển hệ bus ASI .Thế mạnh của ASI là sự
đơn giản trong thiết kế, lắp đặt và bảo dưỡng cũng như giá thành thấp nhờ phương
pháp truyền thông đặc biệt cũng như kỹ thuật điện cơ mới.
273
a) Nối điểm–điểm cổ điển b) Bus trường vào /ra c) Giao tiếp ASI phân tán
Hình 5.3. Ghép nối cảm biến và cơ cấu chấp hành số với ASI
Hình 5.3 minh họa mạng thiết bị cảm biến và cơ cấu chấp hành sử dụng ASI đối
chiếu với các phương pháp khác. Hình bên trái là cách kết nối dây điểm-điểm cổ điển,
trong đó một bộ điều khiển như PLC đóng vai trò là nút trung tâm trong cấu trúc hình
sao.Việc thay thế cách ghép nối cổ điển này bằng một hệ thống bus để có thể thực
hiện theo hai phương pháp sau:
- Sử dụng bus trường nối PLC với các thiết bị vào/ra phân tán (hình 5.3b).
- Sử dụng một hệ thống bus như ASI nối PLC trực tiếp với các cảm biến và cơ
cấu chấp hành (hình 5.3c).
b. Đặc tính của giao tiếp AS-i
- ASI được tối ưu hóa để kết nối các sensor và các actuator nhị phân. Cáp ASI
được sử dụng vừa để trao đổi dữ liệu giữa các sensor và các actuator và master cũng
như vừa cung cấp điện nguồn cho các sensor .
- Đơn giản hóa cấu trúc liên kết giữa các thiết bị.
- Giảm đáng kể giá thành dây nối và công lắp đặt hệ thống.
- Nâng cao độ chính xác trong truyền dữ liệu.
- Nâng cao độ linh hoạt và tính năng mở của hệ thống.
- Đơn giản hoá , tiện lợi trong việc chẩn đoán, định vị lỗi và sự cố các thiết bị.
- Nâng cao khả năng tương tác giữa các thành phần (phần cứng và phần mềm)
nhờ giao diện chuẩn .
274
- Mở rộng nhiều chức năng và khả năng ứng dụng mới của hệ thống ( có khả
năng điều khiển phân tán, điều khiển giám sát từ xa qua Internet).
- Thời gian đáp ứng nhanh: ASI master cần tối đa 5ms để trao đổi dữ liệu tuần
hoàn đến 31 trạm .
- Với các ASI module thì có thể lên đến 124 sensor và 124 actuator hoạt động
trên cáp ASI.
Hình 5.4. Với giao tiếp ASI việc lắp đặt trở nên đơn giản.
c. Các thành phần tạo thành mạng ASI:
- ASI master.
- ASI module.
- Cáp ASI.
- Nguồn ASI.
- Sensor/Actuator với chip ASI được tích hợp.
- Đơn vị định địa chỉ .
- Phần mềm cho ASI .
275
Hình 5.5. Các thành phần trong mạng ASI
d. Kiến trúc mạng ASI
Các hình dưới đây cho ta thấy các kiến trúc của hệ thống ASI. Các thành phần
thêm vào có thể được đặt dọc theo đường ASI hoặc theo các nhóm , thí dụ như đầu
của các nhánh cây khác nhau .Không cần có các điện trở kết thúc.
Thí dụ các cấu trúc thể có:
- Đường dây 100m và một ASI slave có một đầu.
- Đường dây 90m và hình sao 31 slave ở cuối đường dây.
- Hình sao với 31 Slave và chiều dài cáp bằng nhau hay không đến master .
- Đường thẳng với 31 slave được phân bố trên mạng.
Chú ý : Tổng chiều dài bị giới hạn ở 100m. Muốn cho mạng rộng hơn ta phải sử
dụng repeater hay extender.
- Kiểu hình sao : Các Slave được nối chung vào một Master controller thông
qua cáp ASI.
276
- Kiểu đường thẳng : Các Slave được nối tiếp với nhau thông qua cáp ASI và
cáp này nối vào Master Controler
- Kiểu hình nhánh : Các Slave được nối song song với cáp ASI thông qua các
đầu nối T (T connector) và cáp ASI này được nối vào Master Controler.
- Kiểu hình cây : Các Slave cũng được nối chung với nhau bằng đầu nối T và từ
đầu nối này được nối song song lên cáp ASI và từ cáp ASI này được nối với Master
Controler.
277
5.2.2. Truyền thông và trao đổi dữ liệu
5.2.2.1. Cấu trúc khung dữ liệu
Quá trình liên kết dữ liệu của mạng ASI được thực hiện bằng việc master gửi
yêu cầu và nhận phản hồi từ Slave. Khung dữ liệu của master có độ dài 14 bit trong
khi slave phản hồi lại 7 bit và giữa các quá trình sẽ có một khoảng dừng được sử dụng
để đồng bộ hóa tín hiệu.
Master call Salve reply Slave
pase
0 CB A4 A3 A2 A1 A0 I4 I3 I2 I1 I0 1 0 I3 I2 I1 I0 PB 1
ST EB ST EB
Phụ thuộc vào kiểu yêu cầu 5 bit chứa thông tin sẽ được
I0 … I4 (thông tin)
truyền đi. Chi tiết được cho cùng với mỗi thông điệp.
Reset trạm tớ
278
5.2.2.2. Bảng quy định địa chỉ của Slave
Ngoài việc giảm số lượng dây dẫn tín hiệu thì lợi thế lớn khi sử dụng truyền
thông ASI đó là người lập trình có thể sử dụng địa chỉ trực tiếp giống như tín hiệu I/O
bình thường mà không cần phải sử dụng thêm bất kỳ phần mềm nào khác. ASI master
sẽ tự động gán địa chỉ ASI trong quá trình xử lý truyền thông.
Các ngõ vào/ra của tất cả các slave sẽ được lưu trữ trong một vùng địa chỉ trong
PLC. Vùng địa chỉ này bao gồm 16 byte, và hai slave sẽ chiếm 1 byte dữ liệu – mỗi
slave chiếm một nibble (4 bit) của byte. Bit 4 đến bit 7 của byte đầu tiên chứa thông
tin điều khiển
Bảng 5.1. Bảng quy định địa chỉ của ASI slave
279
Bit 4-7 Bit 0 -3
Địa chỉ của Byte 7 6 5 4 3 2 1 0
N+18 Slave 04B Slave 05B
N+19 Slave 06B Slave 07B
N+20 Slave 08B Slave 09B
N+21 Slave 10B Slave 11B
N+22 Slave 12B Slave 13B
N+23 Slave 14B Slave 15B
N+24 Slave 16B Slave 17B
N+25 Slave 18B Slave 19B
N+26 Slave 20B Slave 21B
N+27 Slave 22B Slave 23B
N+28 Slave 24B Slave 25B
N+29 Slave 26B Slave 27B
N+30 Slave 28B Slave 29B
N+31 Slave 30B Slave 31B
Trong đó: N là địa chỉ byte bắt đầu của ASI. Địa chỉ dành cho Standard (ASI
V2.0) và Slave A (ASI V2.1) cùng sử dụng một bảng địa chỉ.
Địa chỉ bắt đầu của ASI phụ thuộc vào vị trí gắn modul ASI master hay nói cách
khác địa chỉ bắt đầu của ASI được bắt đầu bằng địa chỉ của ASI master.
Để làm rõ vấn đề này chúng ta xét một vài ví dụ sau với địa chỉ ASI master là
64.
Ví dụ 1: Giả sử modul 4 ngõ ra sử dụng để điều khiển van điện từ được cài đặt
là salve 2. Hãy tìm địa chỉ Out3?
Địa chỉ byte bắt đầu slave 2 = N +1 = 64 +1 = 65.
Salve 2 có 4 ngõ ra bắt đầu từ bit 4 đến bit 7. Như vậy, địa chỉ bit của Out3 là bit
6. Kết quả địa chỉ Out3 là Q65.6
Ví dụ 2: Giả sử modul 4 ngõ vào sử dụng để đọc tín hiệu cảm biến được cài đặt
là slave 23 . Hãy tìm địa chỉ In3?
Địa chỉ byte bắt đầu slave 23 = N +1 = 64 +11 = 75.
280
Salve 23 có 4 ngõ vao bắt đầu từ bit 0 đến bit 3. Như vậy, địa chỉ bit của In3 là
bit 2. Kết quả địa chỉ In3 là I75.2
281
Hình 5.6. Bộ định địa chỉ ASI slave
Bộ định địa chỉ ASI thực hiện việc gán địa chỉ đến cho các slave. Thiết bị này sẽ
kết nối trực tiếp với socket địa chỉ của modul hoặc kết nối đến cáp mạng ASI. Bộ định
địa chỉ tự động nhận ra các slave được kết nối và lựa chọn một địa chỉ phù hợp trên
màn hình . Địa chỉ này có thể được thay đổi bởi người dùng thông qua các phím trên
thiết bị và được xác nhận thông qua phím trở về.
5.2.3.3. Cấu hình truyền thông ASI với PLC S7-1200
a) Yêu cầu phần cứng
- PLC S7-1200: CPU 1214C DC/DC/DC
- Module CM 1243 – 2 mở rộng ASI Master.
282
Bước 2: Cấu hình địa chỉ bắt đầu cho module CM 1243-2 để đọc các tín hiệu từ
ASI slave về PLC: CM 1243-2 → Properties → General → I/O address. Với thiết bị
ASI Slave của hãng Siemen thì ta có thể cấu hình trực tiếp trên phần mềm TIA
PORTAL.
Bước 3: Cấu hình ASI slave vào Network View: Network View → Hardware
catalog → Field devices → ASI Interface → lựa chọn các thiết bị tương ứng theo thiết
kế với các mã sản phẩm tương ứng
283
Bước 4: Thực hiện nối ASI Master với các ASI Slave
Bước 5: Lựa chọn cấu hình địa chỉ cho các Slave trên TIA PORTAL: lựa chọn
ASI Slave → Device View → Properties → General → AS Interface → Address
284
5.3. MẠNG TRUYỀN THÔNG MODBUS
5.3.1. Tổng quan mạng truyền thông Modbus
5.3.1.1. Giới thiệu
Modbus là một giao thức truyền thông nối tiếp được phát triển bởi Modicon (nay
là Schneider Electric) vào năm 1979 để dử dụng với các bộ điều khiển PLC. Modbus
đã trở thành một giao thức truyền thông chuẩn và bây giờ là một trong những giao
thức phổ biến để kết nối các thiết bị điện tử công nghiệp.
Một số lý do chính để sử dụng Modbus trong môi trường công nghiệp là:
- Giao thức truyền thông mở và miễn phí bản quyền
- Dễ dàng phát triển và bảo trì hệ thống
- Đơn giản trong lắp đặt, cấu hình và cho phép trao đổi dữ liệu cả tín hiệu rời rạc
và tương tự
Modbus cho phép truyền thông nhiều thiết bị khác nhau cùng kết nối trên cùng
một hệ thống mạng, ví dụ như hệ thống đo lường nhiệt độ, độ ẩm và gửi về máy tính
chủ. Các kiểu tín hiệu được sử dụng trong truyền thông modbus như:
- Tín hiệu ngõ ra vật lý với trạng thái 1 bit đơn gọi là Coil. Hỗ trợ trạng thái
đọc/ghi
285
- Tín hiệu ngõ vào vật lý với trạng thái 1 bit đơn gọi là Discrete input. Chỉ hỗ trợ
trạng thái đọc
- Thanh ghi Input register với độ dài dữ liệu là 16 bit. Chỉ hỗ trợ trạng thái đọc
- Thanh ghi Holding resgiter với độ dài dữ liệu là 16 bit. Hỗ trợ trạng thái
đọc/ghi
Modbus được thiết kế theo giao thức Master – Slave (với Modbus RTU) và
Client – Server (với Modbus TCP/IP). Điều này sẽ có nghĩa là Master sẽ khởi tạo kết
nối và ra lệnh cho các Slave thực hiện theo yêu cầu của master. Slave sẽ không gửi bất
kỳ dữ liệu nào trên liên kết truyền thông trừ khi được master ra lệnh yêu cầu dữ liệu
cụ thể. Mỗi thiết bị tham gia vào mạng giao tiếp Modbus được cấp một địa chỉ và địa
chỉ này không được lặp lại trong hệ thống mạng.
Các dạng Modbus thông dụng hiện nay:
- Modbus RTU (Serial): RS-232, RS-485, …
- Modbus TCP/IP
- Modbus ASCII
Mỗi dạng Modbus đều có các đặc điểm khác nhau. Tùy theo thiết bị và yêu cầu
của người sử dụng, các loại Modbus sẽ được lựa chọn.
Modbus RTU
Dữ liệu được mã hóa theo hệ nhị phân, và chỉ cần một byte để biểu diễn cho một
byte dữ liệu gốc. Đây là chuẩn giao tiếp lý tưởng đối với RS-232 hay mạng RS- 485
đa điểm, tốc độ từ 1200 đến 115200 Baud/s. Tốc độ phổ biến nhất là 9600, 38400 hay
115200 Baud/s. Đây là chuẩn Modbus thông dụng nhất. Do Tin nhắn được mã hóa nhị
phân nên không thể đọc được trong quá trình giám sát.
Modbus TCP/IP
Modbus TCP/IP đơn giản là giao thức Modbus sử dụng mô hình TCP/IP. Trong
đó, giao thức Modbus thuộc lớp ứng dụng, xác định dữ liệu cần truyền, TCP là lớp
vận chuyển đảm bảo việc truyền nhận dữ liệu chính xác đến đúng địa điểm thông qua
địa chỉ IP của thiết bị. Với Modbus TCP/IP, dữ liệu được đóng gói trong một gói tin
TCP/IP (gồm dữ liệu và các header) và được truyền qua Ethernet.
Modbus ASCII
Mọi thông tin dữ liệu được chuyển đổi sang dạng Hexadecimal (hệ thập lục
phân), và sử dụng bảng mã ASCII. Việc chuyển đổi này khiến cho một byte dữ liệu
gốc thực tế cần hai byte để biểu diễn, gấp đôi so với Modbus RTU hay Modbus
TCP/IP.
286
Trái ngược với Modbus RTU, người dùng khi sử dụng Modbus ASCIIthì có thể
đọc được nội dung tin nhắn trong quá trình giám sát.
Tuy nhiên, do Modbus ASCII mang nhiều thông tin mã hóa lệnh hơn nên
ModbusASCIIcó tốc độ chậm hơn Modbus RTUvà Modbus TCP/IP, vì vậy thường
không được sử dụng nhiều trong thực tế.
Modbus Gateway
Ngoài ra, khi sử dụng các thiết bị với giao thức Modbus, đặc biệt là Modbus
RTU và Modbus TCP, người dùng sẽ được hỏi về Modbus Gateway.
Vậy Modbus Gateway là gì?
Modbus Gateway hay còn được gọi là Cổng giao tiếp Ethernet (Ethernet
communication gateway). Đây là bộ chuyển đổi giữa Modbus RTU/ASCII và Modbus
TCP/IP. Thông thường Modbus Gateway sẽ có 1 cổng RS-232/RS- 485 dùng cho
Modbus RTU/ASCII và 1 cổng Ethernet dùng cho Modbus TCP/IP.
Modbus TCP/IP có các ưu điểm vượt trội hơn so với Modbus RTU, ví dụ như
việc sử dụng cáp Ethernet tiết kiệm chi phí hơn so với sử dụng cáp cho RS- 232 hay
RS-485, truyền được xa hơn và kết nối được nhiều Client hơn. Trong thực tế, nhiều
thiết bị được điều khiển chỉ được hỗ trợ 1 loại Modbus RTU hoặc Modbus TCP/IP
khiến cho việc kết hợp các thiết bị với nhau trở nên khó khăn. Modbus Gateway
thường được sử dụng như một bộ phiên dịch kết nối các thiết bị vào hệ thống Modbus
chung.
5.3.1.2. Cấu trúc giao thức của Modbus
Modbus Master gửi gói tin để đọc hoặc ghi dữ liệu tới slave và ngược lại. Giao
thức Modbus cũng mở rộng phần tùy chỉnh cho gói tin thay đổi theo yêu cầu người sử
dụng.
Định dạng chung các gói tin của Modbus được gọi là ADU bao gồm địa chỉ của
Slave, mã chức năng thực hiện, kích thước dữ liệu và kiểm tra lỗi truyền thông
Hình 5.7. Định dạng chung các gói tin của Modbus
Trong đó:
- AD là một đơn vị dữ liệu ứng dụng tương ứng với một gói tin của Modbus
Master
287
- PDU là một đơn vị giao thức với dữ liệu được Master yêu cầu tới Slave
Định dạng gói tin của RTU và TCP/IP minh họa như hình 5.8.
Kiểu chức năng Tên chức năng Mã chức năng Địa chỉ tuyệt đối
Bit Ngõ vào dạng Bit Đọc bit ngõ vào 02 10001 đến 19999
Đọc bit ngõ ra 01 00001 đến 09999
Ghi vào 1 bit đơn 05 00001 đến 09999
Ngõ ra dạng Bit của ngõ ra
Ghi vào nhiều bit 15 00001 đến 09999
ngõ ra
Ngõ vào dạng Đọc Word ngõ vào 04 30001 đến 39999
Word
Word
Thanh ghi Đọc giá trị các 03 40001 đến 49999
Holding thanh ghi Holding
288
Kiểu chức năng Tên chức năng Mã chức năng Địa chỉ tuyệt đối
Ghi vào 1 Word 06 40001 đến 49999
của thanh ghi
Holding
Ghi nhiều Word 16 40001 đến 49999
của thanh ghi
Holding
Đọc/ghi nhiều 23
Word của thanh
ghi Holding
Xóa/ghi các bit 22
đơn của một thanh
ghi
Đọc tuần tự trạng 24
thái FIFO
Một số manual hướng dẫn về thanh ghi Modbus (holding register) của một số
nhà sản xuất thiết bị không cung cấp địa chỉ tuyệt đối mà chỉ cung cấp địa chỉ tương
đối (relative addresses) hay còn gọi là thanh ghi cơ bản, thì người lập trình có thể sử
dụng công thức sau để tìm địa chỉ tuyệt đối của Modbus:
- Địa chỉ Modbus = Req.adr. + offset
- Req.adr là 40001 hoặc 400001
5.3.2. Thiết kế mạng truyền thông Modbus RTU
5.3.2.1. Tập lệnh truyền thông Modbus RTU
Các tập lệnh để thực hiện cấu hình truyền thông Modbus RTU cũng như thực
hiện các chức năng của Modbus Master và Slave được thực hiện qua các lệnh dưới
đây.
- Modbus_Comm_Load (MB_COMM_LOAD)
- Modbus_Master (MB_MASTER)
- Modbus_Slave (MB_SLAVE)
Các tập lệnh truyền thông Modbus RTU nằm trong các tập lệnh truyền thông trong
phần của phần mềm TIA Portal: Instruction Communication Communication
Processor MODBUS (RTU) hay MODBUS
289
a) Lệnh cấu hình truyền thông Modbus
Lệnh Modbus_Comm_Load cấu hình một modul truyền thông để cho phép PLC
có thể thiết lập giao thức Modbus RTU. Khi gọi lệnh thì phần mềm tự động tạo thêm
một khối dữ liệu Instance DB vào trong chương trình người dùng. Thay đổi cấu hình
của Modbus_Comm_Load được lưu trên CM chứ không phải trong CPU.
Modbus_Comm_Load được sử dụng để thực hiện cấu hình cổng ứng dụng (Port)
cho giao thức RTU. Một khi đã thực hiện cấu hình Port này cho giao thức Modbus
RTU thì nó chỉ có thể được sử dụng bởi các lệnh Modbus_Master hoặc
Modbus_Slave.
Lệnh Modbus_Comm_Load chỉ thực hiện một lần duy nhất trong quá trình khởi
động truyền thông để nó thực hiện bắt tay giữa các thiết bị modbus với nhau
290
Tham số Khai báo Kiểu dữ liệu Miêu tả
thông với địa chỉ quy định bởi HW
identifier
BAUD IN UDInt Lựa chọn tốc độ truyền nhận dữ
liệu: 300, 600, 1200, 2400, 4800,
9600, 19200, 38400, 57600,
76800, 115200 bps
PARITY IN UInt Lựa chọn trạng thái chẵn lẻ
0: No parity (mặc định)
1: Odd parity (lẻ)
2: Even parity (chẵn)
FLOWCTRL IN UInt Kiểm soát luồng dữ liệu
0: no flow control
1: Phần cứng RTS luôn ON
2: Phần cứng RTS chuyển trạng
thái
RTS_ON_DLY IN UInt Lựa chọn độ trễ của RTS ON
0: Không trễ
1: 1 đến 65535 là độ trễ tính theo
mili giây từ khi RTS được kích
hoạt
RTS_ONFF_DLY IN UInt Lựa chọn độ trễ của RTS OFF
0: Không trễ
1: 1 đến 65535 là độ trễ tính theo
mili giây từ khi RTS ngắt kích
hoạt
RESP_TO IN UInt Thời gian timeout: từ 5ms đến
65535 ms để chờ tín hiệu phản hồi
của Slave
MB_DB IN/OUT MB_Base Tham chiếu đến instance data
block của modbus master hoặc
slave
COM_RST IN/OUT Bool Khởi động tập lệnh. Giá trị khởi
291
Tham số Khai báo Kiểu dữ liệu Miêu tả
động là TRUE sau đó chuyển trạng
thái FALSE
DONE OUT Bool TRUE sau một chu kỳ nếu không
có lỗi
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi
b) Lệnh truyền thông Modbus RTU Master
Lệnh Mobus_Master cho phép PLC thực hiện chức năng giao tiếp là Modbus
Master thông qua cổng truyền thông đã được cấu hình bởi lệnh
Modbus_Comm_Load. Một khối dữ liệu instance DB tự động gán cho lệnh
Modbus_Master trong chương trình người dùng. Tham số MB_DB của lệnh
Modbus_Comm_Load phải được kết nối tới tham số MB_DB (biến static) của lệnh
Modbus_Master.
Một số quy tắc giao tiếp của Modbus_Master
Modbus_Comm_Load phải được chạy để cấu hình Port, nhờ đó mà lệnh
Modbus_Master có thể giao tiếp với Port này.
Một Port đã được dùng với chức năng Modbus master thì không được sử dụng
với Modbus slave
Lệnh Modbus không sử dụng trong các khối OB ngắt để thực hiện quá trình
truyền thông.
Nếu lệnh Modbus_Master gửi một yêu cầu tới Salve, phải đảm bảo rằng
Modbus_Master vẫn tiếp tục thực thi cho tới khi nhận được phản hồi của Slave
292
Bảng 5.4. Tham số lệnh Modbus_Master
293
tự động gán cho lệnh Modbus_Salve khi gọi lệnh. Tham số MB_DB của lệnh
Modbus_Comm_Load phải được kết nối tới tham số MB_DB (biến static) của lệnh
Modbus_Slave.
294
d) Tham số DATA_ADDR và MODE
Tham số DATA_ADDR chỉ định địa chỉ bắt đầu để master truy cập dữ liệu của Salve.
Với tham số MODE và địa chỉ Modbus cho phép người thiết kế chỉ định mã chức
năng sẽ được chuyển tới Slave
Bảng 5.6. Mối quan hệ giữa MODE, mã chức năng
295
trình và commissioning hệ thống thì người thực hiện cần chú ý và tự điều chỉnh cho
phù hợp với thực tế.
5.3.2.2. Lập trình ứng dụng Modbus RTU trên TIA Portal
Bài toán 1: Đọc tín hiệu của đồng hồ giám sát năng lượng.
a) Đặt vấn đề
Sử dụng Modbus RTU của PLC S7 1200/1500 để đọc các thông số dữ liệu của
đồng hồ giám sát năng lượng: điện áp, dòng điện…
b) Yếu câu phần cứng
- Sử dụng PLC S7 -1200: CPU 1214C
- Modul RS485 cho PLC: CM 1241 (RS 422/485).
- Đồng hồ giám sát năng lượng: SENTRON PAC 4200 của Siemens.
c) Cấu hình Modbus cho slave và tìm hiểu các thanh ghi dữ liệu
Bước 1: Cấu hình đồng hồ giám sát năng lượng SENTRON PAC 4200 hỗ trợ
Modbus RTU. Các thông số cấu hình truyền thông của slave phải tương thích với
Master.
- Mode: Modbus RTU
- Địa chỉ lần lượt là : 10, 11, 12.
- Baud rate: 19.2 kbps
- Parity: No parity.
- Data bits: 8 bit per character
- Stop bits: 1
Bước 2: tìm các thanh ghi dữ liệu: holding register, kiểu dữ liệu của các slave
trong manual của thiết bị
296
Bước 3: Tính toán các biến cho Modbus Master
- Để đọc thông tin của các thanh ghi thì sử dụng MODE = 0 tương ứng với mã
chức năng 0x03 (function code)
- Xác định thanh ghi địa chỉ DATA_ADDR = Req.adr. + offset
d) Khai báo cấu hình phần cứng PLC S7 – 1200/1500
Bước 1: Khởi tạo project với tên RTU_SENTRON, lựa chọn cấu hình PLC S7
và mô đun hỗ trợ truyền thông Modbus RTU. Với bài này sẽ chọn CPU 1214C và mô
đun CM1241 (RS422/485).
Bước 2: Cấu hình cho cổng RS485 (Port) tương thích cấu hình của slave: CM
1214(RS422/485) Properties General RS422/485 interface Port
configuration…
297
Bước 3: Khởi tạo các bit trạng thái và bit hệ thống cho PLC
298
e) Khởi tạo vùng nhớ dữ liệu lưu trữ thông tin đọc về
Bước 1: tạo kiểu dữ liệu người dùng với PLC data type (UDT) để tiện lợi cho
việc đọc cùng lúc nhiều slave có cùng các thông số dữ liệu: PLC data types add
new data type đổi tên thành sentron_data khai báo các thông số và kiểu dữ liệu
cần đọc về.
Bước 2: tạo vùng nhớ dữ liệu DB1 với tên Modbus_Data để lưu trữ thông tin
đọc về từ các slave
Bước 3: Khởi tạo vùng dữ liệu để truy vấn thông tin từ các slave:
Modbus_Data[DB1] Open Add new đổi tên là PM_1, PM_2, PM_3 chọn
kiểu dữ liệu data type là sentron_data.
299
Bước 4: Khởi tạo vùng dữ liệu DB2 để lưu trữ các tham số khai báo cấu hình
cũng như các biến chuyển trạng thái khi đọc các slave
300
Bước 2: Gọi lệnh khởi tạo cấu hình Modbus trong FC1: FC1 Network 1
Intructions Communication Communication Processor MODBUS hoặc
MODBUS RTU Modbus_Comm_Load.
- Đặt tên DB Instance cho lệnh là Comm_Load.
- REQ chỉ cần xung trigger một lần duy nhất cho nên có thể sử dụng biến
FirstScan.
- PORT khai báo địa chỉ Hardware identifier của mô đun truyền thông: PLC tags
Default tag table System contants tìm tên tương ứng và điền thông tin vào
PORT.
- MB_DB sẽ được chỉ định vào MB_DB của Modbus_Master. Được thực hiện
khai báo sau khi gọi lệnh Modbus_Master.
301
Bước 3: Tạo trạng thái nhớ khi FirstScan thực hiện lưu trạng thái này cho việc
thiết lập vòng lặp (Network 2).
Bước 4: Tạo thời gian trễ (tùy chọn) để cho hoàn thành việc thiết lập truyền
thông (network 3).
Bước 5: Gọi lệnh đọc tín hiệu đồng hồ đo điện bằng SENTRON 1: Network 4
Instructions Communication Communication Processor MODBUS
Modbus_Master.
302
- Đặt tên DB Instance cho lệnh là Master_DB.
- Địa chỉ của đồng hồ đo điện năng SENTRON 1 là 10.
- Đọc thông tin thiết bị nên MODE = 0.
- Địa chỉ bắt đầu: 40001+1=40002.
- Độ dài dữ liệu: 9 thông số * độ dài 2 word = 18.
- Địa chỉ con trỏ DATA_PTR: nếu vùng nhớ DB là non-optimized thì khai báo
theo dạng sau: P#DB1.DBX0.0 REAL 9.
Bước 6: thực hiện chuyển tiếp trạng thái để đọc đồng hồ thứ 2 với địa chỉ slave
là 11 (network 5).
Bước 7: Đọc thông tin của đồng hồ SENTRON 2. Ở network 6 tiếp tục gọi lệnh
Modbus_Master giữa nguyên Instanced DB. Chỉ thay đổi những thông tin liên quan
tới Modbus slave và vùng nhớ trao đổi dữ liệu với slave (Network 6).
303
Bước 8: Thực hiện chuyển tiếp trạng thái để đọc đồng hồ thứ 3 với địa chỉ slave
là 12 (Network 7).
304
Bước 10: Thực hiện chuyển tiếp trạng thái để thực hiện vòng lặp cho phép đọc
đồng hồ 1 với địa chỉ 10 (network 9).
Bước 11: Gọi chương trình con Modbus [FC1] ở chương trình OB1.
305
Bài toán 2: Thiết lập truyền thông Modbus RTU giữa Master và Slave với
PLC S7 trên TIA Portal
a) Đặt vấn đề
Sử dụng giao thức Modbus RTU với PLC S7 -1200/1500 thực hiện truyền thông trao
đổi dữ liệu giữa 2 PLC.
b) Yêu cầu phần cứng
- Sử dụng CPU 1214C làm Modbus slave và CPU 1511 làm Modbus Master.
- Modul mở rộng RS485 cho PLC: CM 1241 (RS422/485) và CM PtP
RS422/485 HF.
306
Bước 3: Tạo vùng nhớ dữ liệu DB1 với tên HoldReg để lưu trữ thông tin thanh
ghi holding register của slave.
Bước 4: trong quá trình truyền thông giữa PLC S7 với PLC khác thì cần phải sử
dụng vùng nhớ thực (absolute address) để truy xuất dữ liệu cho nên sẽ chuyển
HoldReg [DB1] sang vùng nhớ Non-optimized: HoldReg [DB1] Properties
Attributes bỏ chọn Optimized block access OK.
Bước 5: Khởi tạo vùng dữ liệu Holding Register: HoldReg [DB1] Open
Add new đổi tên là Data chọn kiểu dữ liệu data type là Array[1..100] of Word.
Tùy theo mục đích và số lượng dữ liệu truyền mà người sử dụng có thể dùng Word,
Int, Dint, Real…
Bước 6: Tạo hàm FC1 với chức năng Modbus: Program blocks Add new
block Function, đặt tên Modbus OK.
307
Bước 7: Gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1 Network 1
Instructions Communication Communications processor MODBUS hoặc
MODBUS RTU Modbus_Comm_Load.
- MB_DB sẽ được chỉ định vào MB_DB của Modbus_Slave. Được thực hiện
khai báo sau khi gọi lệnh Modbus_Slave.
308
Bước 8: Gọi lệnh thiết lập Modbus slave cho PLC S7: FC1 network 2
Instructions Communication Communication Processor MODBUS RTU
Modbus_Slave.
- Đặt tên DB Instance cho lệnh là Slave_DB.
- Địa chỉ tùy chọn từ 1 – 247 và không trùng với bất kỳ slave nào có trên đường
mạng. Ở đây chọn là 1.
- Địa chỉ con trỏ DATA_PRT: Tùy theo số lượng và kiểu dữ liệu cần truyền về
cho master: P#DB1.DBX0.0 WORD 100.
Lưu ý: Sau khi thực hiện lệnh khởi tạo Modbus Slave cho PLC S7 thì thanh ghi
bắt đầu của Holding register là 40001.
Bước 9: Gọi chương trình con Modbus [FC1] ở chương trình OB1.
309
Bước 4: Tạo vùng nhớ dữ liệu DB1 với tên ModbusReg_S7PLC để lưu giữ
thông tin đọc về từ PLC S7. Chuyển ModbusReg_S7PLC[DB1] sang vùng nhớ Non-
optimized.
Bước 5: Khởi tạo vùng dữ liệu để đọc và ghi dữ liệu tới Slave:
ModbusReg_S7PLC [DB1] Open Add new đổi tên là Read và Write chọn
kiểu dữ liệu data type là Array [1..50] of word. Tùy theo mục đích và số lượng dữ liệu
truyền mà người sử dụng có thể dùng Word, Int, Dint, Real,…
Bước 6: Tạo hàm FC1 với chức năng Modbus: Program blocks Add new
block Function, đặt tên Modbus OK.
Bước 7: Gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1 Network 1
Intructions Communication Communication Processor MODBUS hoặc
MODBUS RTU Modbus_Comm_Load.
310
Bước 8: Gọi lệnh Modbus_Master truy xuất dữ liệu tới Slave: Network 2
Instructions Communication Communication Processor MODBUS RTU
Modbus_Master. Ở đây ta thực hiện đọc 50 word liên tục với tần số 10 Hz từ PLC
RTU Slave.
Bước 9: Gọi chương trình con Modbus [FC1] ở chương trình OB1
311
5.3.3. Thiết kế mạng truyền thông Modbus TCP
5.3.3.1. Tập lệnh truyền thông Modbus TCP
Tập lệnh truyền thông Modbus TCP hỗ trợ cho PLC S7-1200/1500 đã qua khá
nhiều phiên bản cập nhật và bổ sung đầy đủ các tính năng. Các tập lệnh truyền thông
Modbus nằm trong các tập lệnh truyền thông trong phần của phần mềm TIA Portal:
Instruction Communication Others MODBUS TCP
312
Bảng 5.7. Tham số lệnh MB_CLIENT
313
Tham số Khai báo Kiểu dữ liệu Miêu tả
hiện
1: Lệnh Modbus đang thực hiện
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi
314
Tham số Khai báo Kiểu dữ liệu Miêu tả
+ TCON_Configured
NDR OUT Bool Dữ liệu mới sẵn sàng
0: Không có dữ liệu mới
1: Dữ liệu mới được ghi bởi Client
DR OUT Bool Dữ liệu được đọc
0: Không có dữ liệu được đọc
1: Dữ liệu được đọc bởi Client
ERROR OUT Bool TRUE sau một chu kỳ nếu bị lỗi
STAUTS OUT Word Bảng mã lỗi
c) Tham số CONNECT
Hai tập lệnh MB_CLIENT và MB_SERVER đều sử dụng tham số CONNECT
để miêu tả các kết nối tới Modbus TCP còn lại. Có hai tham số CONNECT đó là:
- Cấu hình tham số TCON_IP_v4: các dữ liệu tham số cấu hình của Modbus
TCP được lưu trong đây và kết nối sẽ được thực hiện khi gọi lệnh Modbus tương ứng
- Cấu hình tham số TCON_Configured: chỉ được sử dụng khi kết nối của CPU
đã được thực hiện .
Mỗi lệnh truyền thông Modbus chỉ sử dụng duy nhất một cấu hình tham số
CONNECT. Tuy nhiên, để thực hiện với những kết nối Modbus TCP mới thì người
thiết kế chỉ sử dụng TCON_IP_v4
Cần chú ý thông tin khi sử dụng TCON_IP_v4 như sau:
- Đảm bảo rằng cấu trúc TCON_IP_v4 sử dụng kết nối là kiểu kết nối TCP.
- Kết nối không sử dụng các cổng Port sau để kết nối TCP: 20, 21, 25, 80, 102,
123, 5001, 34962, 34963 và 34964.
Bảng 5.9. Các tham số cấu hình của TCON_IP_v4
315
Byte Tham số Kiểu dữ liệu Miêu tả
19: UDP
5 ActiveEstalished Bool TRUE: Nếu là Client
FALSE: Nếu là Server
6-9 RemoteAddress Array[1..4] of Địa chỉ IP của Partner. Ví dụ
Byte 192.168.0.1
Addr[1] = 192
Addr[2] = 168
Addr[3] = 0
Addr[4] = 1
10 – 11 RemotePort UInt Cổng Port của partner
12 – 13 LocalPort UInt Cổng Port của PLC local
Cổng port: 1 – 49151
Any Port: 0
5.3.3.2. Lập trình ứng dụng Modbus TCP trên TIA Portal
Bài toán 1: Đọc tín hiệu của đồng hồ SENTRON PAC
a) Đặt vấn đề
Sử dụng PLC S7 -1200 đọc các thông số dữ liệu của đồng hồ giám sát năng
lượng: Điện áp, dòng điện,… bằng giao thức truyền thông Modbus TCP.
b) Yêu cầu phần cứng
- Sử dụng PLC: CPU 1212C
- Đồng hồ giám sát năng lượng: SENTRON PAC 4200.
c) Cấu hình Modbus TCP cho đồng hồ
Cấu hình đồng hồ giám sát năng lượng SENTRON PAC 4200 cho phép truy cập
dữ liệu thông qua Modbus TCP.
- Mode: Modbus TCP.
- Địa chỉ IP: 192.168.0.10.
- Port: 502
d) Cấu hình Modbus TCP Client cho PLC S7
Bước 1: Khởi tạo thiết bị với tên TCP_SENTRON, lựa chọn cấu hình PLC S7.
Chọn CPU 1212C AC/DC/Rly.
316
Bước 2: Khởi tạo các bits trạng thái và bits hệ thống cho PLC với MB100 chứa
các System memory bits và MB101 chứa các clock memory bits.
Bước 3: Tạo kiểu dữ liệu theo người dùng với PLC data type (UDT) để tiện lợi
cho việc đọc cùng lúc nhiều slave có cùng các thông số dữ liệu: PLC data type Add
new data types đổi tên thành sentron_data khai báo các thông số và kiểu dữ liệu
cần đọc về.
Bước 4: Tạo vùng nhớ dữ liệu DB1 với tên Modbus_Data để lưu trữ thông tin
đọc về từ server (PAC 4200).
Bước 5: Khởi tạo vùng dữ liệu để truy vấn thông tin từ các Slave: Modbus_Data
[DB1] Open Add new đổi tên là PM chọn kiểu dữ liệu data type là
sentron_data.
Bước 6: Khởi tạo biến CONNECT cho client truy vấn dữ liệu tới server:
Modbus_Data [DB1] Add new đặt tên CONNECT chọn kiểu dữ liệu data
_type là TCON_IP_v4.
Bước 7: Khai báo tham số dữ liệu cho CONNECT để thiết lập truyền thông giữa
Client và server.
- HW_ANY của mô đun truyền thông: PLC tags Defualt tag table System
constants tìm tên tương ứng và điền thông tin vào
(Local~PROFINET_interface_1).
- ID là tùy chọn tương ứng với ID sẽ đặt trên server.
- ConnectionType chọn là 11 để kết nối TCP/IP.
- Thiết lập kết nối là TRUE để chọn làm Client.
- RemotePort là 502 để truy xuất tới port của server.
317
Bước 8: Tạo hàm FC2 với chức năng đọc Modbus của các đồng hồ đo điện năng
SENTRON: Program block Add new block Function, đặt tên ModbusTCP
OK.
Bước 9: Gọi lệnh thực hiện khởi tạo cấu hình trong FC2: FC2 Network 1
Instructions Communication Others MODBUS TCP MB_CLIENT.
318
Bài toán 2: Thiết lập truyền thông Modbus TCP giữa Client và Server với
PLC S7 trên TIA Portal
a) Đặt vấn đề
Sử dụng PLC S7 -1200 thực hiện truyền dữ liệu giữa 2 PLC với nhau bằng giao
thức Modbus TCP.
b) Yêu cầu phần cứng
- CPU 1212C với địa chỉ IP 192.168.0.101 làm server.
- CPU 1212C với địa chỉ IP 192.168.0.100 làm Client.
c) Cấu hình Modbus cho PLC S7 làm Modbus TCP Server
Bước 1: Khởi tạo thiết bị với tên TCP_Server, lựa chọn cấu hình PLC S7.
Bước 2: tạo vùng nhớ dữ liệu DB1 với HoldReg để lưu trữ thông tin thanh ghi
holding register của server. Chuyển vùng nhớ của HoldReg [DB1] sang dạng vùng
nhớ Non-optimized.
Bước 3: Khởi tạo vùng dữ liệu Holding register: HoldReg [DB1] Open
Add new đổi tên là TCPData Chọn kiểu dữ liệu data type là Array [`1..100] of
Word.
Bước 4: Khởi tạo biến CONNECT cho Server để kết nối tới Client: HoldReg
[DB1] Add new đặt tên là CONNECT chọn kiểu dữ liệu data type là
TCON_IP_v4.
Bước 5: Khai báo tham số dữ liệu cho CONNECT.
- HW_ANY của mô đun truyền thông: PLC tags Default tag table System
constants tìm tên tương ứng và điền thông tin vào
(Local~PROFINET_interface_1).
- Thiết lập kết nối là FALSE để chọn làm Server.
- Định địa chỉ LocalPort là 502.
- Địa chỉ IP của client là: 192.168.0.100.
Bước 6: Tạo hàm FC1 với chức năng Modbus: Program blocks Add new
block Function, đặt tên TCPServer OK.
319
Bước 7: gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1 Network 1
Instructions Communication Others MODBUS TCP MB_SERVER.
- Đăt tên DB Instance cho lệnh là SERVER_DB.
- Chọn Disconnect là bất kỳ trạng thái M hoặc DB nào miễn sao có thể thay đổi
bằng phần mềm hoặc chọn false để luôn luôn cho truyền thông thực hiện.
- CONNECT được chỉ định vào kiểu dữ liệu TCON_IP_v4 trong vùng dữ liệu
DB1.
320
Bước 5: Khởi tạo biến CONNECT cho client truy xuất dữ liệu tới server:
TCPData [DB1] Add new đặt tên CONNECT chọn kiểu dữ liệu data
type là TCON_IP_v4.
Bước 6: Khai báo tham số dữ liệu cho CONNECT.
- HW_ANY của mô đun truyền thông: PLC tags Default tag table System
constants tìm tên tương ứng và điền thông tin vào (Local ~
PROFINET_interface_1).
- Thiết lập kết nối là TRUE để chọn làm Client.
- Định địa chỉ LocalPort là 0 (any port) và RemotePort là 502.
- Địa chỉ IP của server là: 192.168.0.101.
- ID trùng với server: 110.
Bước 7: tạo hàm FC1 với chức năng Modbus: Program blocks Add new
block Function, đặt tên TCPClient OK.
Bước 8: Gọi lệnh thực hiện khởi tạo cấu hình trong FC1: FC1 Network 1
Instructions Communication Others MODBUS TCP MB_CLIENT.
- Đặt tên DB Instance cho lệnh là CLIENT_DB.
- REQ chọn Clock 10Hz để cứ 0.1s truy xuất server một lần.
321
Bước 9: Gọi chương trình con TCPCLient [FC1] trong OB1.
Bài toán 3: Sử dụng PLC S7-1500 thực hiện truyền dữ liệu giữa 2 PLC với
nhau thông qua giao thức Modbus TCP
Thiết lập phần cứng:
PLC S7-1500 CPU 1512C – 1PN với địa chỉ IP 192.168.0.10 làm Client
PLC S7-1500 CPU 1512C – 1PN với địa chỉ IP 192.168.0.5 làm Server
Tạo dữ liệu bên SERVER với mảng dữ liệu gồm 100 số thực, bên CLIENT thực
hiện đọc và ghi với 50 dữ liệu đầu tiên của Server.
Thực hiện bài toán:
Cấu hình và chương trình cho PLC làm Modbus TCP Server
Bước 1: Khởi tạo thiết bị với tên PLC_Server
322
Bước 2: Tạo vùng nhớ dữ liệu DB1 với tên DB_MB_Server_DATA để lưu trữ
thông tin thanh ghi Holding register của Server.
Chuyển vùng nhớ của DB_MB_Server_DATA [DB1] sang vùng nhớ Non-
optimized bằng cách bỏ dấu tích tại Optimized block access
Bước 3: Khởi tạo vùng dữ liệu Holding register: Tên dữ liệu là TCPData với
kiểu dữ liệu data type là Array[1..100] of real
323
Khai báo tham số dữ liệu cho CONNECT:
- HW_ANY của modul truyền thông: PLC tags Default tag table System
constants tìm tên tương ứng và điền thông tin vào (Local~PROFINET_interface_1)
- Thiết lập kết nối là FALSE để chọn làm Server
- Định địa chỉ LocalPort là 502.
- Địa chỉ IP của Client là: 192.268.0.10
Bước 6: Gọi lệnh thực hiện khởi tạo cấu hình trong OB1
- Đặt tên DB Instance cho lệnh là MB_SERVER_DB
- Chọn Disconnect là bất kỳ trạng thái M hoặc DB nào miễn sao có thể thay đổi
bằng phần mềm hoặc chọn False để luôn cho truyền thông thực hiện.
- CONNECT được chỉ định vào kiểu dữ liệu TCON_IP_v4 trong vùng dữ liệu
DB_MB_Server_Connect[DB3]
324
Cấu hình và chương trình cho PLC làm Modbus TCP Client
Bước 1: Khởi tạo thiết bị với tên PLC_Client
Bước 2: khởi tạo các bit trạng thái và bit hệ thống cho PLC với MB100 chứa các
System memory bits và MB101 chứa các Clock memory bits.
Bước 2: Tạo vùng nhớ dữ liệu DB1 với tên DB_MB_Client_DATA để lưu trữ
thông tin thanh ghi Holding register của Server. Chuyển vùng nhớ của D
DB_MB_Client_DATA [DB1] sang vùng nhớ Non-optimized
Bước 3: Khởi tạo vùng dữ liệu truy vấn các thanh ghi dữ liệu của Server: Tên dữ
liệu là Read_Data và Write_Data với kiểu dữ liệu data type là Array[1..50] of real
325
Bước 4: Khởi tạo các biến cho khối MB_CLIENT và biến CONNECT với kiểu
dữ liệu TCON_IP_v4
326
5.4. MẠNG TRUYỀN THÔNG PROFIBUS
5.4.1. Tổng quan mạng truyền thông Profibus
PROFIBUS là một Bus trường chuẩn mở rộng, không phụ thuộc vào nhà sản
xuất dùng cho các ứng dụng trong tự động hoá sản xuất và xử lý. Sự độc lập và tính
mở rộng được đảm bảo theo tiêu chuẩn quốc tế EN 50170 và EN 50254. PROFIBUS
cho phép truyền thông giữa các thiết bị của các nhà sản xuất khác nhau không đòi hỏi
giao tiếp đặc biệt. PROFIBUS không những sử dụng cho các ứng dụng nhanh theo
chu kỳ mà còn cho các nhiệm vụ tryền thông đặc biệt. Nhờ sự phát triển kỹ thuật liên
tục mà PROFIBUS vẫn còn là một hệ thống truyền thông công nghiệp trong tương lai.
327
PROFIBUS có các phương thức truyền thông được chia theo dạng truyền thông
(Communication Profiles): DP và FMS. Tùy thuộc vào ứng dụng có thể sử dụng kỹ
thuật truyền RS 485, IEC 1158-2 hoặc cáp quang. Trong tài liệu kỹ thuật nâng cao, tổ
chức sử dụng PROFIBUS đang thực thi các khái niệm chung cho tích hợp dựa trên cơ
sở TCP/IP.
Dạng ứng dụng (Application profiles): qui định các phương thức và công nghệ
truyền tùy chọn cần thiết theo vùng ứng dụng cho các loại thiết bị. Các profiles này
cũng qui định các đặc tính thiết bị mở rộng của nhà sản xuất.
5.4.1.1. Dạng truyền thông (Communication profiles)
PROFIBUS communication Profiles qui định các trạm tuyền dữ liệu nối tiếp của
nó qua môi trường truyền chung như thế nào.
DP
DP là dạng truyền thông được sử dụng nhiều nhất. Nó tối ưu hoá tốc độ truyền,
hiệu quả và chi phí kết nối và được thiết kế đặc biệt cho truyền thông giữa các hệ
thống tự động và ngoại vi phân tán. DP, là sự thay thế phù hợp cho truyền tín hiệu
song song 24V thông thường trong tự động hoá sản xuất cũng như truyền tín hiệu
Analog 4...20mA hoặc Hart trong tự động hoá xử lý.
FMS
Đây là dạng truyền thông đa năng cho các công việc truyền thông theo yêu cầu.
FMS mang lại các chức năng truyền thông hiện đại cho truyền thông giữa các thiết bị
thông minh (Intelligent Device). Tuy nhiên, do sự phát triển kỹ thuật của PROFIBUS
và việc sử dụng TCP/IP ở cấp Cell mà FMS ngày càng chiếm một vai trò ít quan trọng
trong tương lai.
328
5.4.1.2. Kỹ thuật truyền
Vùng ứng dụng của hệ thống Bus trường chủ yếu được xác định bằng sự lựa
chọn kỹ thuật truyền hiện có. Cũng như các yêu cầu chung dựa trên hệ thống Bus như
độ tin cậy, khoảng cách lớn và tốc độ truyền cao. Trong tự động hoá xử lý các yêu cầu
khác phải được thoả mãn như hoạt động trong các vùng nguy hiểm, truyền dữ liệu và
năng lượng trên cùng một cáp. Bởi vì vẫn chưa thể thoả mãn tất các các yêu cầu bằng
một kỹ thuật truyền chung nên hiện vẫn có 3 phương pháp truyền (Physical profiles)
cho PROFIBUS là:
- RS 485 dùng cho các ứng dụng vạn năng
- IEC 1158-2 dùng trong tự động hoá quá trình.
- Cáp quang dùng chống nhiễu và mạng có khoảng cách truyền lớn.
Trong tài liệu kỹ thuật nâng cao, có khuynh hướng dùng các thành phần của
Ethernet thương mại với 10Mbit/s và 100Mbit/s như là cấp vật lý cho PROFIBUS.
Các bộ nối (Coupler) và Link dùng cho việc chuyển đổi giữa các kỹ thuật truyền
khác nhau. Các Coupler
5.4.1.3. Ứng dụng
PROFIBUS Application Profiles mô tả các tác động qua lại giữa phương thức
truyền thông với kỹ thuật truyền được sử dụng. Chúng cũng qui định các đặc tính của
thiết bị trường trong suốt quá trình truyền thông qua PROFIBUS. Qui định ứng dụng
quan trọng nhất của PROFIBUS là các qui định (Profiles) về PA, trong đó qui định
các thông số và khối chức năng của các thiết bị tự động hoá quá trình như các bộ
chuyển đổi đo, các van, các bộ định vị. Cao hơn là các bộ điều khiển tốc độ, HMI và
các bộ mã hoá (Encoder) qui định các đặc tính thiết bị mở rộng của nhà sản xuất.
5.4.1.4. Các đặc tính cơ bản
PROFIBUS qui định các đặc tính của một hệ thống Bus trường nối tiếp, với các
qui định này các bộ điều khiển lập trình số đặt phân tán có thể nối mạng, từ cấp field
tới cấp Cell
PROFIBUS là một hệ thống Multi-Master và cho phép kết hợp nhiều hệ thống tự
động hoá, hệ thống công nghệ và hệ thống điều khiển với các thiết bị ngoại vi phân
tán của chúng vào trong một Bus.
Profibus có hai loại thiết bị sau:
- Master xác định việc truyền dữ liệu trên BUS. Một Master được phép gửi thông
báo mà không cần yêu cầu từ bên ngoài, khi nó giữ quyền truy cập BUS (giữ
TOKEN). Các Master cũng được gọi là các trạm tích cực.
329
Slave là các thiết bị ngoại vi như các I/O, các van, các bộ truyền động và các bộ
biến đổi đo lường. Chúng không có quyền truy cập BUS, có nghĩa là nó được phép
nhận các thông báo hoặc gửi các thông báo tới các Master khi có yêu cầu. Slave cũng
được gọi là các trạm thụ động. Các slave cần sử dụng ít giao thức BUS, sự trang bị
của chúng đơn giản, kinh tế.
Cấu trúc giao thức
PROFIBUS dựa trên các tiêu chuẩn quốc tế công nhận. Cấu trúc của giao thức
theo chuẩn OSI (Open System Interconnection), tương xứng với tiêu chuẩn quốc tế
ISO 7498. Theo đó mỗi lớp truyền thực hiện một nhiệm vụ nhất định.
Lớp 1 (Physical Layer) xác định các đặc điểm truyền vật lý. Lớp 2 (Date Link
Layer) xác định phương thức truy cập BUS, Lớp 7 xác định các chức năng ứng dụng.
Cấu trúc của giao thức PROFIBUS được mô tả trong hình
330
- Kỹ thuật truyền RS - 485 thường được sử dụng nhất trong PROFIBUS. Nó
được sử dụng trong tất cả các lĩnh vực ứng dụng mà yêu cầu tốc độ truyền cao, lắp đặt
đơn giản, rẻ tiền, sử dụng cáp đôi dây xoắn.
- Kỹ thuật truyền RS - 485 dễ dàng sử dụng. Sự lắp đặt cáp đôi dây xoắn không
đòi hỏi kiến thức cao. Cấu trúc BUS cho phép thêm vào hoặc tháo bớt ra các trạm
hoặc vận hành hệ thống từng bước. Sự mở rộng sau này không làm ảnh hưởng đến các
trạm đang hoạt động.
- Tốc độ truyền có thể chọn trong vùng 9,6Kbit/s đến 12Mbit/s. Khi hệ thống
hoạt động có thể chọn một tốc độ truyền duy nhất cho tất cả các thiết bị trên BUS.
Kỹ thuật truyền IEC 1158 – 2
- Sự truyền đồng bộ theo qui định IEC 1158-2 với tốc độ truyền từ 31,25 kbit/s,
được sử dụng trong tự động hoá quá trình. Nó thoả mãn các yêu cầu quan trọng trong
công nghiệp hoá chất, hoá dầu nơi có các đòi hỏi an toàn về cháy nổ và nguồn cung
cấp, nó sử dụng cáp đôi dây xoắn. Do đó PROFIBUS được sử dụng trong các môi
trường nguy hiểm.
- Khả năng và giới hạn của PROFIBUS với kỹ thuật truyền IEC 1158 - 2 cho các
thiết bị trong vùng cháy nổ được qui định qua mô hình FISCO (Fieldbus Intrinically
Safe Concept).
- Sự truyền theo IEC 1158-2 và FISCO dựa trên các nguyên tắc cơ bản sau:
• Khi một trạm đang gửi dữ liệu thì không được cấp nguồn cho BUS.
• Một đoạn mạng chỉ được phép có một nguồn cung cấp.
• Trong trạng thái bình thường, mỗi thiết bị trường đều tiêu thụ một dòng
điện không đổi.
• Các thiết bị trường như là một bộ tiêu thụ dòng thụ động.
• Mỗi đầu cuối của đường dây BUS chính được kết thúc bằng một điện trở.
331
Nguồn BUS của các thiết bị trường ở PROFIBUS
- Cáp quang có thể sử dụng cho PROFIBUS khi các ứng dụng ở môi trường có
nhiễu từ trường cao, cần cách ly về điện hay cần tăng khoảng cách truyền tối đa với
tốc độ truyền cao. Hiện có nhiều loại cáp quang với các đặc điểm khác nhau về
khoảng cách, giá cả và ứng dụng.
- Các đoạn mạng PROFIBUS dùng cáp quang có cấu trúc hình sao(Star) hoặc
vòng (Ring). Các thành phần cáp quang của một số nhà sản xuất cho phép tạo ra các
kết nối Redandant, có khả năng tự động chuyển đổi đường truyền vật lý khi có sự cố.
Nhiều hãng sản xuât các khớp nối (Coupler) dùng nối cáp RS 485 và cáp quang. Điều
này cho phép có thể chuyển đổi bất cứ khi nào giữa truyền RS 485 hay cáp quang
trong một hệ thống.
Phương thức truy cập PROFIBUS
Truyền thông PROFIBUS sử dụng một phương thức truyền đồng nhất. Phương
thức này thuộc lớp 2 của kiểu OSI. Nó cũng bao gồm an toàn dữ liệu, xử lý các
phương thức truy cập và các bức điện. Trong PROFIBUS, lớp 2 được gọi là Fieldbus
Data Link (FDL).
Điều khiển truy cập (Medium Access Control: MAC) xác định thủ tục khi một
trạm được phép gửi dữ liệu. MAC phải đảm bảo rằng tại một thời điểm chỉ có một
trạm có quyền gửi dữ liệu.
Phương thức truy cập PROFIBUS được thiết kế để giải quyết 2 yêu cầu chính
của điều khiển truy cập MAC là :
• Trong thời gian truyền thông giữa các hệ thống tự động phức (master),
phải đảm bảo rằng mỗi một trạm có đủ thời gian cần thiết để thực hiện
xong các công việc truyền thông của nó.
332
• Mặt khác, để truyền thông giữa các bộ điều khiển lập trình và các Slave
gán cho nó thì sự truyền dữ liệu theo chu kỳ, thời gian thực cần phải
được trang bị càng nhanh và càng đơn giản càng tốt.
Phương thức truy cập PROFIBUS gồm phương thức vòng Token được sử dụng
để các Master truyền thông với nhau và phương thức master-slave được các master sử
dụng để truyền thông với các Slave.
Cấu hình PROFIBUS có 3 Master và 7 Slave 3 Master tạo nên một vòng Token
Phương thức Token passing bảo đảm rằng quyền truy cập Bus (token) được gán
cho mỗi master theo đúng khung thời gian đã xác định. Thông báo Token là một bức
điện đặc biệt để chuyển Token từ một master này sang một master khác và phải
chuyển theo vòng token tới tất cả các master trong khoảng thời gian tối đa cho phép
(có thể cấu hình). Trong PROFIBUS, phương thức Token passing được sử dụng cho
truyền thông giữa các master.
Phương thức master-slave cho phép các master (các trạm tích cực) hiện đang giữ
Token truy cập các Slave (các trạm thụ động). Điều này cho phép các master có thể
gửi hay nhận các thông báo từ Slave. Phương thức truy cập này trang bị các cấu hình
hệ thống sau:
• Hệ thống Master-Slave
• Hệ thống Master-Master (token passing)
• Kết hợp cả 2 hệ thống trên
5.4.2. Truyền thông dữ liệu với Profibus DP
Dạng truyền thông DP được dùng cho việc trao đổi dữ liệu ở cấp trường có hiệu
quả. Các thiết bị tự động hoá trung tâm như PLC/PC hoặc các hệ thống điều khiển quá
trình qua một kết nối nối tiếp nhanh với các thiết bị trường phân tán như I/O, các bộ
333
truyền động, các van cũng như các bộ chuyển đổi đo. Trao đổi dữ liệu với các thiết bị
phân tán diễn ra chủ yếu theo chu kì.
Các chức năng truyền thông cần thiết cho trao đổi theo chu kỳ là các chức năng
DP cơ bản xác định theo tiêu chuẩn EN 50 170. Ngoài các chức năng cơ bản này, DP
cũng có các chức năng truyền thông không chu kì mở rộng dùng cho gán thông số,
vận hành, giám sát và cảnh báo của các thiết bị trường thông minh.
Các bộ điều khiển trung tâm (Master) đọc các thông tin ngõ vào của Slave theo
chu kỳ và ghi các thông tin ngõ ra tới các Slave theo chu kỳ. Thời gian chu kỳ BUS
phải ngắn hơn thời gian chu kỳ chương trình của hệ thống tự động hoá trung tâm, thời
gian chu kỳ BUS trong nhiều ứng dụng khoảng 10ms. Bên cạnh sự truyền dữ liệu ứng
dụng theo chu kỳ, DP cũng có các chức năng cho chuẩn đoán và chọn chế độ hoạt
động. Sự truyền thông dữ liệu được giám sát bởi các chức năng giám sát ở cả hai phía
Master và Slave. Bảng 9 cho biết tất cả các chức năng cơ bản của DP.
5.4.2.1. Các đặc điểm cơ bản
Truyền dữ liệu tốc độ cao không phải là điều kiện đủ cho sử dụng thành công
một hệ thống Bus. Để thoả mãn các yêu cầu của người dùng thì các chức năng như:
Điều khiển đơn giản, khả năng chuẩn đoán tốt và kỹ thuật truyền chống nhiễu cần
được đáp ứng. DP thể hiện sự kết hợp tối ưu các đặc tính trên.
Tốc độ
DP chỉ mất 1ms tại tốc độ 12Mbit/s để truyền 512 bit dữ liệu ngõ vào và 512 bit
dữ liệu ngõ ra tới 32 trạm. Hình 9 mô tả thời gian truyền điển hình của DP phụ thuộc
vào số lượng trạm và tốc độ truyền. Việc truyền dữ liệu ngõ vào và ngõ ra trong một
chu kỳ bus làm cho tốc độ truyền tăng đáng kể so với FMS. Trong DP dữ liệu người
dùng được truyền bằng dịch vụ SRD lớp 2.
Các chức năng chuẩn đoán
Các chức năng chuẩn đoán mở rộng của DP cho phép tìm ra vị trí lỗi nhanh
chóng. Các thông báo chuẩn đoán được truyền trên Bus và tập trung tại Master. Các
thông báo này được chia làm 3 cấp:
- Chuẩn đoán các trạm liên quan
Các thông báo dạng này đề cập tới trạng thái hoạt động chung của một trạm (ví
dụ quá nhiệt hay thấp áp)
- Chuẩn đoán các modul liên quan
Các thông báo này chỉ ra trong phạm vi một vùng I/O (ví dụ 8 bit của modul ngõ
ra) của một trạm có các thông báo chuẩn đoán.
- Chuẩn đoán các kênh liên quan:
334
Trong trường hợp này nguyên nhân của lỗi được xác định liên quan tới một bit
ngõ vào/ngõ ra riêng biệt (kênh). Ví dụ ngắn mạch tại ngõ ra thứ 7.
5.4.2.2. Cấu hình hệ thống và các dạng thiết bị
Với DP có thể thực hiện hệ thống Mono-Master hoặc Multi-Master. Điều này
mang lại độ linh hoạt cao khi cấu hình hệ thống. Tối đa 126 thiết bị (Master hoặc
Slave) có thể kết nối trên một Bus. Các thông số Số lượng ngõ vào và ngõ ra phụ
thuộc vào trang thiết bị. Tối đa là 246 byte dữ liệu ngõ vào và 246 byte dữ liệu ngõ ra.
Trong hệ thống- mono - master chỉ một master được kích hoạt trên bus trong
suốt qúa trình hoạt động của hệ thống bus. Hình 10 cho biết cấu hình của một hệ
thống mono - master. Bộ điều khiển lập trình là phần điều khiển trung tâm. các slave
phân tán kết nối với PLC qua các môi trường truyền thông. Hệ thống mono - master
có được thời gian chu kì bus ngắn nhất.
335
Trong cấu hình multi - master có nhiều master kết nối tới một bus. Các master
này có thể là các hệ thống phụ (subsystem) mỗi hệ thống gồm có một master DPM1
và các slave của nó, hoặc cấu hình mở rộng và các thiết bị chuẩn đoán. Tất cả các
master đều có thể đọc các bộ đệm ngõ vào và ra của slave. Tuy nhiên chỉ một DP
master (ví dụ DPM1 được gán trong khi cấu hình) mới có thể truy cập ghi các ngõ ra.
5.4.2.3. Đặc tính hệ thống
DP cũng tiêu chuẩn hoá đặc tính hệ thống, để đảm bảo khả năng tráo đổi thiết bị
một các rộng rãi. Đặc tính hệ thống được xác định chủ yếu dựa vào trạng thái hoạt
động của DPM1.
DPM1 có thể được điều khiển tại chỗ hoặc qua bus bởi thiết bị cấu hình. Có 3
trạng thái chính là:
- Stop:Trong trạng thái này không xảy ra sự truyền dữ liệu giữa DPM1 và các
slave.
- Clear: Trong trạng thái này DPM1 đọc thông tin ngõ vào của các slave và giữ
các ngõ ra ở trạng thái an toàn (failsafe).
- Operate: Trong trạng thái này DPM1 đang ở trong pha truyền dữ liệu. Trong
truyền thông dữ liệu theo chu kì sẽ đọc các ngõ vào của các slave và ghi các thông tin
ngõ ra tới slave.
DPM1 gởi trạng thái của nó tới tất cả các slave theo chu kì sử dụng lệnh
multicast trong khoảng thời gian đã được cấu hình.
Đáp ứng hệ thống khi có một lỗi xảy ra trong pha truyền dữ liệu của DPM1 (như
sự cố của một slave) được xác định bởi thông số “auto - clear”.
Nếu thông số này được set = true, DPM1 chuyển tất cả các ngõ ra của slave sang
trạng thái failsafe ngay khi một slave không sẵn sàng truyền dữ liệu. Sau đó DPM1
chuyển sang trạng thái clear.
Nếu thông số này = false thì DPM1 vẫn duy trì trạng thái hoạt động thậm chí khi
một sự cố xảy ra, và người dùng có thể xác định đáp ứng hệ thống.
5.4.2.4. Truyền dữ liệu theo chu kì giữa DPM1 và slave
Sự truyền dữ liệu giữa DPM1 và slave được xử lý tự động bởi DPM1 theo một
trình tự đã được định nghĩa. Khi cấu hình hệ thống bus, người sử dụng xác định các
slave được gán tới DPM1. Đồng thời cũng phải xác định các slave nào tham gia vào
truyền thông dữ liệu theo chu kì.
Sự truyền dữ liệu tới DPM1 và slave được chia ra làm 3 pha: truyền thông số,
cấu hình và truyền dữ liệu. Trước khi một DP slave tham gia vào pha truyền dữ liệu,
nó sẽ được kiểm tra trong pha truyền thông số và pha cấu hình xem cấu hình đặt trước
có phù hợp với cấu hình thưc hay không. Trong phần kiểm tra này dạng thiết bị, dạng
336
dữ liệu và chiều dài thông tin cũng như số lượng ngõ vào và ngõ ra phải phù hợp. Các
kiểm tra này mang lại cho người dùng sự bảo vệ đáng tin cậy chống lại các lỗi về
thông số. Ngoài việc truyền dữ liệu được xử lý theo chu kì bởi DPM1 thì dữ liệu
thông số mới có thể được gởi tới các slave khi người sử dụng yêu cầu.
337
thành từng khối I/O (block) để tạo thành các Compact slave như ET 200AL, ET
200eco PN,...
- Các Modular slave: các slave này có cấu trúc vùng dữ liệu vào/ra tùy biến
theo mục đích sử dụng và được cấu hình thay đổi trong cấu hình phần mềm. Những
slave này có thể là ET 200M, ET 200MP, ET 200S, ET 200SP,...
- Các intellegent slave (I-slave): các bộ điều khiển PLC S7- 300/400/1200/1500
có thể tích hợp sẵn cổng DP hay sử dụng các card truyền thông CP, CM để sử dụng
chức năng DP slave và những thiết bị này được gọi là I – slave. Đặc điểm của các bộ I
– slave đó là vùng địa chỉ ngõ vào/ra cung cấp cho master không phải là vùng nhớ I/O
thật mà là vùng nhớ ảnh (I/O image), do đó người thiết kế cần mapping vùng dữ liệu
này vào vùng nhớ nội CPU để lập trình.
5.4.3. Thiết kế mạng truyền thông Profibus DP
5.4.3.1. Đặt vấn đề
Thiết lập và lập trình mô hình mạng truyền thông Profibus DP theo mô hình sau:
24VDC
CPU 313C – 2DP
I0.0 (ON)
EM277 EM277
CPU 222 CPU 222
Salve 1 Salve 2
338
m
P (5s)
T (5s)
X L
(5s) (5s)
Trong đó: Quá trình P, T và X, L được điều khiển bởi 2 động cơ ba pha không
đồng bộ roto lồng sóc.
Yêu cầu thiết bị phần cứng
Bàn thực hành mạng truyền thông Profibus DP gồm các thiết bị sau:
- 01 PLC S7-300 CPU 313C – 2DP
- 02 PLC S7-200 CPU 222 AC/DC/RL
- 02 Module EM 277
- Các thiết bị vào/ra cơ bản: Nút nhấn, cảm biến, bóng báo, rơle trung gian,
contactor.
5.4.3.2. Cấu hình phần cứng hệ thống mạng truyền thông mạng Profibus DP
+ Chọn Voffset: 100
+ Chọn số byte truyền nhận: 2byte I/O
+ Địa chỉ vào ra cho EM277 Slave 1: IB2 – IB3, QB2 – QB3
+ Địa chỉ vào ra cho EM277 Slave 2: IB4 – IB5, QB4 – QB5
→ Cách thức trao đổi dữ liệu giữa Master và các Slaves:
Master Slave 1
IB0 VB0
Offset
100 Bytes
IB1 VB99
IB2 VB100
2 byte nhận
2 byte nhận
VB101
VB102
IB3
IB4 2 byte gửi
VB103
2 byte nhận
Slave 2
VB0
IB5
QB2
Offset
100 Bytes
2 byte gửi VB99
VB100
QB3
2 byte nhận
QB4
VB101
VB102
2 byte gửi
2 byte gửi
QB5
VB103
Hình 5.21. Cách thức trao đổi dữ liệu giữa Master và các Slaves
339
a) Thiết lập địa chỉ cho DP Slave (EM 277 PROFIBUS-DP)
- Bỏ nguồn cấp từ CPU S7-200 và EM 277.
- Đặt nút vặn ở mặt trước của EM 277 đến vị trí mong muốn. Nút gạt trên cùng
(đánh dấu X10) là chữ số hàng chục của địa chỉ. Nút gạt thấp hơn (đánh dấu
X1) là chữ số hàng đơn vị của địa chỉ. Đối với bài toán này, với EM277 của
Slave 1 đặt nút X1 đến 6 và nút gạt X10 đến 0 để chọn địa chỉ là 6 cho Slave 1,
với EM277 của Slave 2 đặt nút X1 đến 4 và nút gạt X10 đến 0 để chọn địa chỉ
là 4 cho Slave 2.
340
- Xác định địa chỉ MPI để kết nối và nạp chương trình từ máy tính
- Cài đặt địa chỉ mạng PROFIBUS và chế độ hoạt động DP master
341
Bước 2: Tiến hành lấy module EM PROFIBUS-DP 277 và cài đặt địa chỉ cho
từng module EM 277
Ta phải thêm file GSD của EM 277 bằng cách chọn Options trên thanh công cụ
→ Chọn Manage general station description files (GSD)
342
Sau đó ta có thể thêm Modul EM 277
Tiếp theo ta thêm Modul EM 277 → Other field devices → PROFIBUS DP →
PLCs → SIEMENS AG → SIMATIC → EM 277 PROFIBU-DP
Tiếp đến ta kết nối thiết bị trong mạng với nhau
Sau đó cài đặt cấu hình cho Slave1, Slave2. Kích đúp chuột vào Slave 1 → Hộp
thoại xuất hiện. Ta chọn PROFIBUS address > thay đổi địa chỉ Address thành 06
343
Chọn cửa sổ theo hướng mũi tên → sau đó chọn 2 Bytes Out/ 2 Bytes In
344
Như vậy là ta đã hoàn thành việc kết nối giữa 1 PLC S7-300 với 2 PLC S7-200
thông qua mạng Profibus. Trong đó PLC S7-300 đóng vai trò là Master để điều khiển
2 Slave là PLC S7-200.
5.4.3.3. Xây dựng chương trình điều khiển
Bước 1: Khai báo các biến đầu vào, đầu ra
Bước 2: Vào giao diện làm việc để lập trình cho bài toán:
Chương trình Master ( PLC S7-300 ) được lập trình trên khối OB1
345
346
Chương trình Slave 1:
347
5.5. MẠNG TRUYỀN THÔNG PROFINET
Trong phần này, chúng ta cùng tìm hiểu về tổng quan mạng truyền thông
PROFINET, các cách thức truyền thông Profinet theo các chuẩn ISO, TCP/IP, Client
– Server,… các tập lệnh hỗ trợ truyền thông, các giao thức Protocol, và thực hành giao
tiếp truyền thông Profinet giữa các CPU S7 – 1200/1500 một cách đơn giản nhất.
5.5.1. Tổng quan mạng truyền thông Profinet
Với công nghệ tự động hóa ngày nay, Ethernet và công nghệ thông tin ngày càng
có nhiều tiến bộ trong việc xây dựng các chuẩn giao thức như TCP/IP và XML. Việc
tích hợp công nghệ thông tin vào tự động động hóa đã mở ra các giao tiếp truyền
thông tốt hơn trong việc lựa chọn giao tiếp giữa hệ thống tự động hóa, mở ra khả năng
cấu hình và chuẩn đoán hệ thống tốt hơn, và mở rộng các chức năng dịch vụ mạng
toàn cầu … và những chức năng được tích hợp trở thành phần không thể thiếu của
PROFINET ngay từ đầu
Hình 5.22. PROFINET đáp ứng mọi yêu cầu cho công nghệ tự động hóa
348
PROFINET là tiêu chuẩn mở cho Ethernet công nghiệp và đáp ứng mọi yêu cầu
cho công nghệ tự động hóa: tự động hóa sản xuất, tự động hóa quy trình hay truyền
động (có hoặc không có chức năng an toàn safety). PROFINET là công nghệ tiêu biểu
trong ngành công nghiệp ô tô, được sử dụng trong ngành chế tạo và được chứng minh
những ưu điểm trong ngành công nghệ thực phẩm, hàng hải và đường sắt, …
PROFINET là chuẩn giao thức mở cho Ethernet công nghiệp (IE) được phát
triển bởi hiệp hội PROFIBUS & PROFINET quốc tế.
PROFIBUS mang những đặc điểm tính năng của PROFINET như: giao tiếp I/O
tốc độ cao, an toàn dữ liệu, chức năng chuẩn đoán lỗi, … Và những đặc điểm tính
năng của ETHERNET như: tốc độ truyền cao 100Mbps hoặc nhanh hơn qua cáp đồng
hoặc cáp quang, có thể truyền không dây (wireless) và cho cấu trúc mạng linh hoạt.
Bởi vậy, PROFINET có những đặc điểm như:
Hỗ trợ chức năng truyền thông thời gian thực
Tích hợp các thiết bị trường (field) vào hệ thống mạng
Hỗ trợ các thiết bị điều khiển phân tán với nhiều nhà sản xuất thiết bị.
Điều khiển truyền động đồng bộ
Quản trị và chuẩn đoán mạng đơn giản với các dịch vụ hỗ trợ của công
nghệ thông tin.
Bảo mật mạng để chống lại những truy cập và thao tác trái phép trên
đường mạng.
Truyền thông an toàn với chức năng PROFIsafe
350
Trong một mạng Profinet IO thì có ít nhất một IO Controller và có một hoặc
nhiều IO device. Ngoài ra, các thiết bị trường trong segment của Profibus có thể được
tích hợp vào hệ thống Profinet IO bằng cách sử dụng bộ Proxy PN/PB.
Để thiết lập giao tiếp giữa các bộ điều khiển với các thiết bị IO phải thiết lập
đường dẫn truyền thông. Đường dẫn truyền thông được thiết lập bởi IO Controller
trong quá trình khởi động hệ thống dựa trên dữ liệu cấu hình nhận được từ hệ thống
thiết kế.
Mỗi dữ liệu trao đổi được nhúng vào một AR (Application Relation). Trong AR,
các CR (Communication Relation) mô tả dữ liệu truyền thông một cách rõ ràng. Kết
quả là tất cả dữ liệu cho thiết bị được mô hình hóa, bao gồm các tham số truyền thông
được tải xuống IO Device. Một IO Device có thể có nhiều AR được thiết lập từ các IO
Controller khác nhau. Ví dụ như shared device.
Hình 5.26. Một thiết bị trường có thể truy cập bởi nhiều IO Controller
351
Profinet CBA
Profinet CBA cho phép người dùng có cái nhìn tổng quan hơn về việc tự động
hóa trong nhà máy. Profinet CBA thực hiện việc module hóa nhà máy thành từng
phần riêng, hoạt động độc lập và có thể kết hợp trở lại thành một hệ thống hoàn chỉnh
khi cần, đáp ứng cho việc xây dựng nhà máy theo từng giai đoạn.
352
Profinet rất linh hoạt khi thiết lập cấu trúc hệ thống mạng. Tuy nhiên, cấu trúc
mạng thường thiết lập với 4 kiểu thông dụng như: Line, Tree, Star, Ring.
353
truyền và gộp các gói tin khi
nhận
UDP Truyền thông CPU – CPU với User Datagram Protocol
chương trình người dùng
S7 Truyền thông giữa CPU – Dữ liệu truyền và nhận được
Communication CPU. Thực hiện việc truyền chỉ định độ dài theo người
nhận dữ liệu tới 1 CPU dùng
PROFINET RT Truyền thông kết nối CPU với Dữ liệu truyền và nhận được
Profinet I/O chỉ định độ dài theo người
dùng
Bảng 5.11. Protocol và lệnh truyền thông
354
người dùng sử dụng chế độ truyền thông “AD HOC” để nhận gói dữ liệu với một độ
dài biến đổi (variable length) từ 1 byte đến 1472 byte.
Để cấu hình lệnh TRCV_C và TRCV cho chế độ “AD HOC” cần phải nhập giá
trị cho tham số đầu vào cho lệnh ADHOC.
Chú ý: Nếu người dùng lưu trữ dữ liệu trong Optimized DB, thì người dùng chỉ
có thể nhận những kiểu dữ liệu như: mảng dữ liệu của Byte, Char, USInt và SInt.
2. Chuẩn truyền thông với TC và ISO của TCP
Transport Control Protocol (TCP) là chuẩn protocol được miêu tả bởi RFC 793:
Transmission Control Protocol. Mục đích cơ bản của TCP là cung cấp độ đáng tin cậy,
an toàn trong kết nối truyền thông giữa local và partner. Protocol này có những đặc
điểm như sau:
Một giao thức truyền thông hiệu quả vì gắn liền với phần cứng.
Dữ liệu truyền thông cho cá ứng dụng trung bình và lớn (lên tới 8192 byte)
Routing-capable, sử dụng với chế độ LAN
Chỉ áp dụng cho những dữ liệu có độ dài cố định (static length)
Thông tin xác nhận lỗi
Các ứng dụng được thực hiện bằng địa chỉ cố định.
Hầu hết các ứng dụng được người dùng sử dụng giao thức như: TELNET, FPT.
Lập trình hiệu quả với việc quản lý dữ liệu theo giao thức truyền nhận dữ liệu.
Internation Standard Organization (ISO) on Transport Control Protocol (TCP)
(RFC 1006) gọi tắt là ISO – on – TCP là một giao thức với cơ chế cho phép ứng dụng
các mạng TCP/IP theo chuẩn ISO. Giao thức này có các đặc điểm sau đây:
Một giao thức truyền thông hiệu quả vì gắn liền với phần cứng.
Dữ liệu truyền thông cho các ứng dụng trung bình và lớn (lên tới 8192 byte).
Routing-capable, sử dụng với chế độ WAN.
Có thể áp dụng cho các dữ liệu có độ dài thay đổi (dynamic data length)
Lập trình hiệu quả với việc quản lý dữ liệu theo giao thức truyền nhận dữ liệu.
Sử dụng các giao thức TSAP (Transport Service Access Points), TCP cho phép
nhiều kết nối tới một địa chỉ IP (lên tới 64K dữ liệu). Với RFC 1006, TSAP cho phép
xác định những điểm kết nốt cuối đến một địa chỉ IP.
3. Truyền nhận dữ liệu thông qua lệnh TSEND-C và TRCV-C
Lệnh TSEND_C và TRCV_C thực hiện nhiệm vụ truyền nhận dữ liệu thông qua
Ethernet.
Lệnh TSEND-C là sự kết hợp các lệnh TCON, TDISCON và TSEND
Lệnh TRCV-C là sự kết hợp của các lệnh TCON, TDISCON và TRCV.
Dữ liệu truyền/nhận tối thiểu 1 Byte và tối đa là 8192 Byte
355
Lệnh TSEND_C và TRCV_C không hỗ trợ cho việc truyền/nhận các dữ liệu
Boolean.
a. Lệnh truyền dữ liệu TSEND_C
Lệnh TSEND_C thiết lập kết nối truyền thông từ Local đến Partner theo tiêu
chuẩn TCP hay ISO – on – TCP. Lệnh thực hiện việc gửi dữ liệu và có thể ngắt kết
nối. Sau khi được thiết lập và cài đặt, lệnh sẽ được tự động duy trì và kết nối và truyền
dữ liệu với CPU.
Bảng 5.12. Tham số của tập lệnh TSEND_C
356
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
0 = Lệnh không được thực
BUSY OUT BOOL Q, M, D, L thi hoặc đang thực thi
1 = Lệnh đã được thực thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái
tại Status
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh
b. Lệnh nhận dữ liệu TRCV_C
Lệnh TRCV_C thiết lập kết nối truyền thông từ Local đến Partner theo tiêu
chuẩn TCP hay ISO – on – TCP. Lệnh thực hiện việc nhận dữ liệu và có thể ngắt kết
nối. Sau khi được thiết lập và cài đặt, lệnh sẽ tự động duy trì kết nối và truyền dữ liệu
với CPU.
Bảng 5.13. Tham số của tập lệnh TRCV_C
357
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
Vùng gửi dữ liệu được
DATA IN/OUT VARIANT I, Q, M, D, L định dạng theo kiểu
Pointer
Cho phép restart lệnh
COM_RST IN/OUT BOOL I, Q, M, D, L
hoạt động lại
Lệnh được thực thi
DONE OUT BOOL Q, M, D, L
thành công
0 = Lệnh không được
thực thi hoặc đang thực
BUSY OUT BOOL Q, M, D, L thi
1 = Lệnh đã được thực
thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái
tại Status
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh
Tổng số lượng dữ liệu
RCVD_LEN OUT UDINT Q, M, D, L
đã nhận
4. Truyền nhận dữ liệu với TCON, TDISCON, TSEND và TRCV (truyền
thông TCP).
Tập lệnh TSEND_C và TRCV_C giúp cho việc lập trình truyền thông
Profinet/Ethernet trở nên đơn giản hơn. Tuy nhiên, về bản chất thì 2 tập lệnh
TSEND_C và TRCV_C là sự kết hợp của các tập lệnh như TCON, TDISCON,
TSEND và TCV như đã trình bày sơ lược như khi giới thiệu về 2 tập lệnh trên.
TSEND và TRCV thực hiện việc truyền nhận dữ liệu
a. Lệnh thực hiện kết nối với TCON và ngắt kết nối với TDISCON
Người dùng có thể sử dụng lệnh TCON để thiết lập kết nối truyền thông TCP/IP
giữa Client và server và lệnh TDISCON ngắt kết nối truyền thông.
358
Bảng 5.14. Tham số của tập lệnh TCON/TDISCON
Khai
Tham số Kiểu dữ liệu Vùng nhớ Miêu tả
báo
Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
CONN_OUC I, Q, M, D, L Tham số để gán kết nối
ID IN
(WORD) hay hằng số
Pointer để miêu tả kết nối.
CONNECT IN/OUT TCON_Param D Tham khảo thêm phần
Help của Tia Portal.
Lệnh được thực thi thành
DONE OUT BOOL Q, M, D, L
công
0 = Lệnh không được thực
BUSY OUT BOOL Q, M, D, L thi hoặc đang thực thi
1 = Lệnh đã được thực thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh
Khai
Tham số Kiểu dữ liệu Vùng nhớ Miêu tả
báo
Tham số yêu cầu cho lệnh
REQ IN BOOL I, Q, M, D, L thực thi: Cho phép xuất dữ
liệu khi có xung cạnh lên
359
Khai
Tham số Kiểu dữ liệu Vùng nhớ Miêu tả
báo
Dung lượng truyền tối đa
0 = Tham số DATA định
I, Q, M, D, L, nghĩa độ dài dữ liệu truyền
LEN IN UINT
hay hằng số 65535 = AD HOC: Độ dài
dữ liệu thay đổi theo người
dùng
Vùng gửi dữ liệu được
DATA IN/OUT VARIANT I, Q, M, D, L định dạng theo kiểu
Pointer
Lệnh được thực thi thành
DONE OUT BOOL Q, M, D, L
công
0 = Lệnh không được thực
BUSY OUT BOOL Q, M, D, L thi hoặc đang thực thi
1 = Lệnh đã được thực thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh
c. Lệnh nhận dữ liệu TRCV
Khi lệnh TCON được thực hiện thì lệnh TRCV sẽ cho phép nhận dữ liệu của
Partner gửi sang.
Bảng 5.16. Tham số của tập lệnh TRCV_C
360
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
hay là hằng số đa:
0 = Tham số DATA
định nghĩa độ dài dữ
liệu truyền
65535 = AD HOC: ĐỘ
dài dữ liệu thay đổi theo
người dùng.
Pointer để miêu tả kết
CONNECT IN/OUT TCON_Param D nối. Tham khảo thêm
phần
Vùng gửi dữ liệu được
DATA IN/OUT VARIANT I, Q, M, D, L định dạng theo kiểu
Pointer
Cho phép restart lệnh
COM_RST IN/OUT BOOL I, Q, M, D, L
hoạt động lại
Lệnh được thực thi
DONE OUT BOOL Q, M, D, L
thành công
0 = Lệnh không được
thực thi hoặc đang thực
BUSY OUT BOOL Q, M, D, L thi
1 = Lệnh đã được thực
thi.
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái
tại Status
Trạng thái báo lỗi của
STATUS OUT WORD Q, M, D, L
lệnh
Tổng số lượng dữ liệu
RCVD_LEN OUT UDINT Q, M, D, L
đã nhận
361
5. Lệnh truyền thông bằng S7 Communication
Để thực hiện truyền thông giữa các CPU S7 thì người dùng có rất nhiều chuẩn để
thực hiện truyền thông giao tiếp như: TCP, ISO – on – TCP, UDP, S7
Communication… với các tập lệnh hỗ trợ tương ứng với các chuẩn truyền thông. Tuy
nhiên, trong nội dung tài liệu chỉ giới thiệu với người đọc về chuẩn giao tiếp truyền
thông giữa các CPU S7 bằng S7 Communication thông qua lệnh PUT và GET bằng
việc khai báo/thực hiện một cách rất đơn giản.
a. Lệnh nhận dữ liệu GET
Người dùng có thể sử dụng lệnh GET để đọc dữ liệu từ một remote CPU. Lệnh
được thực hiện khi có xung cạnh lên tại ngõ vào điều khiển REQ:
Dữ liệu sẽ được nhận từ địa chỉ ADDR_i của Partner và đưa vào cùng địa chỉ
RD-i của Local thông qua Pointer.
Khi lệnh thực hiện xong thì tham số NDR sẽ lên 1
Nếu lệnh thực hiện lỗi thì tham số Error lên mức 1 và trạng thái báo lỗi được
truy xuất thông qua tham số Status.
363
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Miêu tả
công
Trạng thái của tham số:
0 = Không có lỗi
ERROR OUT BOOL Q, M, D, L 1 = Lỗi xảy ra và người
dùng kiểm tra trạng thái tại
Status
STATUS OUT WORD Q, M, D, L Trạng thái báo lỗi của lệnh
Pointer thực hiện chỉ định
ADDR_i IN/OUT ANY M, D vùng dữ liệu của CPU
Partner để đọc
Pointer thực hiện chỉ định
RD_I IN/OUT ANY M, D vùng dữ liệu của CPU
Local để nhận.
5.5.3. Thiết kế mạng truyền thông Profinet
Người lập trình có thể sử dụng lệnh PUT/GET để thực hiện lệnh truyền thông
giữa các PLC S7 thông qua kết nối Profinet và Profibus
- CPU Firmware ≤ V3.x thì chức năng hỗ trợ PUT/GET tự động được kích hoạt
trong cấu hình phần cứng
- CPU Firmware ≥ V4.x thì chức năng hỗ trợ PUT/GET không tự động được
kích hoạt trong cấu hình phần cứng nên cần phải thực hiện kích hoạt trong cấu hình
Device configuration như sau: Device configuration → CPU → Properties →
Protection → kích hoạt Permit access with PUT/GET …
364
Lập trình giao tiếp truyền thông Profinet giữa 2 CPU S7 – 1200 với nhau. Thực
hiện truyền/nhận 10 Byte dữ liệu giữa 2 CPU.
Hướng dẫn thực hiện
a. Cấu hình phần cứng
Bước 1: Khởi tạo Project đặt tên là Profinet gồm PLC_1 và PLC_2 là CPU S7 –
1200 – cấu hình thực tế tương ứng với phần cứng người dùng có.
- PLC_1 có địa chỉ IP là 192.168.0.1
- PLC_2 có địa chỉ IP là 192.168.0.2
Bước 2: Chọn Project (Profinet) → Device & Network → Thực hiện kết nối 2
CPU với nhau bằng cách kéo/nhả các node mạng với nhau.
Bước 3: Thực hiện kích hoạt chức năng hỗ trợ PUT/GET trong cấu hình phần
cứng cho cả 2 PLC: Device configuration → CPU → Properties → Protection →
Connection mechanisms
365
- Dữ liệu khai báo theo kiểu mảng (array) để thuận tiện cho việc truy xuất và
quản lý trong DB
- Chuyển DB sang chế độ Standard DB (non-optimized)
Bước 2: Thực hiện gọi lệnh truyền dữ liệu tới Server trong khối tổ chức OB1:
Instruction → Communication → S7 Communication → PUT
Bước 3: Cấu hình và khai báo tham số cho lệnh PUT hoạt động: PUT → Start
configuration (Properties).
366
- Connection parameter: Thực hiện chọn Partner là SERVER, các tham số sẽ
được tự động khởi tạo tương ứng.
- Block parameter: thực hiện chọn các tham số cho lệnh truyền thông.
• Start request (REQ): Chọn tín hiệu trigger cho lệnh hoạt động.
• Write area (ADDR-i): CPU Partner nhận 10 Byte dữ liệu bắt đầu từ địa chỉ
DB1.DBX10.0
• Send area (SD-i): CPU Local thực hiện truyền 10 Byte dữ liệu bắt đầu từ
địa chỉ DB100.DBX0.0
- Done: Chọn vùng nhớ báo cáo thực hiện lệnh hoàn tất
367
- Error: Chọn tín hiệu báo lỗi khi thực hiện lệnh sai
Bước 4: thực hiện gọi lệnh và cấu hình cho lệnh truyền thông nhận dữ liệu GET
từ Client tương tự như 3 bước trên.
Như vậy, sau khi khai báo và cấu hình tham số cho những tham số cần thiết
chúng ta sẽ có kết quả như sau:
Lệnh Client Server
PUT DB100.DBB0 → DB100.DBB10 DB1.DBB10 → DB100.DBB19
GET DB100.DBB10 → DB100.DBB19 DB1.DBB1 → DB100.DBB10
Network 1: Thực hiên gọi lệnh truyền thông PUT truyền dữ liệu từ Server
(Local) sang Client (Partner)
Network 2: Thực hiện khai báo cho tín hiệu Trigger hoạt động như sau
Network 3: Thực hiện gọi lệnh truyền thông GET nhận dữ liệu từ Client
(Partner).
368
Network 4: Thực hiện khai báo cho tín hiệu Trigger hoạt động như sau
Việc truyền thông giao tiếp giữa PLC S7 – 1200 với PLC S7 – 300/400/1500
cũng tương tự nếu sử dụng chuẩn truyền thông giao tiếp S7 Communication.
5.5.3.2. Truyền thông mạng Profinet PLC S7-1500
Dưới đây sẽ trình bày khai báo và lập trình truyền thông mạng Profinet giữa ba
PLC S7-500 tại phòng thí nghiệm PLC.
Bước 1: Tạo Project mới.
Bước 2: Sau khi tạo project. Online → Accessible devices → Start search để
kiểm tra thông tin các thiết bị để kết nối trong mạng.
369
Bước 3: Tiến hành thay đổi địa chỉ IP cho các CPU. Lần lượt là 192.168.0.21,
192.168.0.22, 192.168.0.23. Chú ý rằng để thay đổi IP ta cần reset địa chỉ IP trước.
Bước 4: Chọn add new device để tạo cấu hình PLC, ở bước này ta cần tạo 3
device PLC.
Sau khi tạo device xong, ta cần phải kiểm tra lại IP address của các device xem
đã đúng với IP đã tạo hay chưa.
370
Bước 5: Tiến hành nạp cấu hình đã tạo cho các device.
371
Click Connection, Chọn S7 connection là phương thức kết nối.
Click chuột trái vào cổng ethernet trên thiết bị rồi kéo kết nối đến thiết bị
khác.Trong ví dụ này ta thực hiện 2 connection: S7_Connection_1 và
S7_Connection_2.
Click Connections để xem thông tin kết nối và cài đặt Local ID, Parner ID. Các
ID được thay đổi như trong hình.
Kết thúc phần cấu hình mạng ta đi đến phần viết chương trình cho Project.
Bước 7: Viết chương trình
Mở giao diện lập trình: PLC_1[CPU 1511-1 PN] → Program blocks →
Main[OB1]. Ta cần tạo 2 Block data là TRUYEN_DULIEU và NHAN_DULIEU:
372
Program block → add new block → Data block → name =”TRUYEN_DULIEU” →
manual → OK.
Click chuột phải vào các Block → Properties → attributes rồi bỏ tích chọn
optimized block access → OK.
373
Trong phần truyền thông ta sẽ phải sử dụng các khối PUT GET để truyền và
nhận dữ liệu.
Khối PUT: Click Communication → S7 Communication → PUT
374
Ta sẽ tạo thêm một data block để gán các thông số trạng thái của PUT như:
Done, error, status ... data block này đặt tên là PRA_DB.
Chuột phải vào PUT → Properties → Configuration → Partner chọn PLC_2 (Vì
ta đang thực hiện giao tiếp giữa PLC_1 và PLC_2).
375
Tạo 2 block data TRUYEN_DULIEU và NHAN_DULIEU cho PLC_2 tương tự
đối với PLC_1.
Tại PLC_1[CPU 1511-1 PN] → Main[OB1]. Chương trình của ta như sau:
Với ADDR_1: P#DB2.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1 trong
block NHAN_DULIEU của PLC_2
376
SD_1: P#DB1.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1 trong block
TRUYEN_DULIEU của PLC_1.
Cứ sau 1s là giá trị của THANHGHI1 trong block TRUYEN_DULIEU của
PLC_1 tăng lên 1 đơn vị và gửi vào THANHGHI1 trong block NHAN_DULIEU của
PLC_2.
PLC_2[CPU 1511-1 PN] → Properties → Protection & Security click chọn
Permit access with PUT/GET communication để cho phép PUT/GET. Thực hiện
tương tự đối với PLC_1.
Khối GET: ADDR_1: P#DB1.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1
trong block NHAN_DULIEU của PLC_1
377
SD_1: P#DB2.DBX0.0 là địa chỉ tuyệt đối của THANHGHI1 trong block
TRUYEN_DULIEU của PLC_2.
Tại PLC_2[CPU 1511-1 PN]-> Main[OB1] ta viết chương trình sau để tăng giá
trị THANHGHI1 trong block TRUYEN_DULIEU của PLC_2 1 đơn vị/s.
Tiến hành nạp chương trình. Giao tiếp giữa PLC_1 và PLC_3 ta thực hiện tương
tự các bước trên.
378
5.6. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5
1. Mạng truyền thông ASI thực hiện cho những thiết bị nào? Kể một vài thiết bị được
dử dụng trong mạng truyền thông ASI.
2. Những ưu điểm của mạng truyền thông ASI?
3. Những thành phần cơ bản để tạo thành một mạng ASI là những thiết bị gì ? Hãy
nêu những đặc điểm chức năng của chúng?
4. Ý nghĩa bảng địa chỉ ASI là gì? ASI V2.0 có bao nhiêu slave trong một mạng ASI?
5. Ưu điểm của mạng truyền thông Modbus là gì ? Hãy kể tên một số phiên bản của
giao thức Modbus?
6. Hãy trình bày cấu trúc của Modbus?
7. Hãy trình bày những điều cần lưu ý trong giao thức Modbus? Mối quan hệ giữa mã
chức năng với các bảng định dạng địa chỉ, dữ liệu trong giao thức Modbus như thế
nào?
8. Hãy so sánh giao thức Modbus RTU và TCP để tìm ra những điểm giống và khác
nhau?
9. Hãy trình bày những tập lệnh Modbus được sử dụng TIA PORTAL cho PLC S7-
1200/1500?
10. Trình bày cách thực hiện truyền thông giữa các PLC S7 với nhau bằng giao thức
Modbus RTU và TCP
11. Giao thức truyền thông PROFIBUS là gì? Có bao nhiêu định dạng truyền thông
PROFIBUS mà hiện nay đang sử dụng? Hãy nêu những đặc điểm của chúng?
12. Trình bày giao thức truyền thông PROFIBUS theo mô hình OSI?
13. Trong mạng truyền thông PROFIBUS DP thì có tối đa bao nhiêu nút mạng? Có
thể sử dụng nhiều hơn một DP master trên một đường truyền PROFIBUS được
không?
14. Trình bày đặc điểm của mạng truyền thông PROFINET dựa trên nền tảng của
ETHERNET và PROFIBUS ?
15. Có bao nhiêu cấu hình truyền thông của PROFINET ? Hãy kể tên và nêu những
đặc điểm và tính năng của chúng.
16. Hãy kể tên nhưng cấu hình ứng dụng của PROFINET và phạm vi ứng dụng của
chúng.
379
TÀI LIỆU THAM KHẢO
1. Trần Ngọc Sơn, Nguyễn Đức Điển, Trần Ngọc Sâm (2016), “Giáo trình Điều
khiển logic khả trình PLC 1”, Nhà xuất bản Lao Động.
2. Trần Văn Hiếu (2015), “Tự động hóa PLC S7-1200 với TIA Portal”, Nhà xuất
bản Khoa học và Kỹ thuật.
3. Trần Văn Hiếu (2016), “Tự động hóa PLC S7-300 với TIA Portal”, Nhà xuất
bản Khoa học và Kỹ thuật.
4. Trần Văn Hiếu (2018), “Thiết kế hệ thống mạng truyền thông công nghiệp với
TIA Portal”, Nhà xuất bản Khoa học và Kỹ thuật.
5. Siemens AG (2012), “TIA Portal Module 010”, SCE Training Curriculum
Automation System SIMATIC S7-1200.
6. Siemens AG (2012), “ SIMATIC S7-1500 Technical Slides”.
7. Siemens AG (2016), “TIA Portal Module 010, 030, 040”, SCE Training
Curriculum Automation System SIMATIC S7-1500
8. Help của phần mềm TIA Portal V15.
380