Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

MỤC LỤC
Bài 1: TỔNG QUAN VỀ PLC ............................................................................................... 4
1.1 Tổng quan về PLC ................................................................................................... 4
1.2 Cấu trúc của PLC S7-1200 ....................................................................................... 7
1.2.1. Cấu trúc chung của PLC ....................................................................................... 7
1.2.2. Cấu trúc PLC S7 – 1200 ....................................................................................... 8
1.3 Hoạt động của PLC S7-1200 .................................................................................. 13
1.3.1. Quá trình khởi động ( STARTUP) .................................................................. 13
1.3.2. Quá trình quét chu kỳ chương trình trong chế độ RUN.................................... 14
1.4 Các vùng nhớ trong PLC S7-1200.......................................................................... 15
1.5 Các kiểu dữ liệu ..................................................................................................... 19
1.5.1. Kiểu dữ liệu Bool, Byte, Word, DWord. ......................................................... 19
1.5.2. Kiểu dữ liệu Interger (số nguyên).................................................................... 20
1.5.3. Kiểu dữ liệu Float-point real (số thực) ............................................................ 20
1.5.4. Kiểu dữ liệu Time và Date ( giờ và ngày)........................................................ 21
1.5.5. Kiểu dữ liệu Character và String ( ký tự và chuỗi)........................................... 22
1.5.6. Kiểu dữ liệu Array (mảng) .............................................................................. 24
1.5.7. Truy cập vào một lát cắt (slice) của một kiểu dữ liệu được tag ....................... 25
Bài 2: KẾT NỐI PHẦN CỨNG ........................................................................................... 27
2.1 Các kiểu ngõ vào, ngõ ra của PLC ......................................................................... 27
2.1.1 Ngõ vào (Input) .............................................................................................. 28
2.1.2 Ngõ ra (Output) .............................................................................................. 29
2.2 Kết nối thiết bị ngoại vi với PLC DC/DC/DC ........................................................ 32
2.3 Kết nối thiết bị ngoại vi với PLC AC/DC/RELAY ................................................. 33
2.4 Kết nối thiết bị ngoại vi với PLC DC/DC/RELAY ................................................. 34
Bài tập ............................................................................................................................. 35
Bài 3: PHẦN MỀM TIA PORTAL ...................................................................................... 36
3.1 Tổng quan về phần mềm TIA PORTAL................................................................. 36
3.2 Tổ chức lập trình trong phần mềm ......................................................................... 37
3.3 Hoạt động của chương trình lập trình. .................................................................... 40
Bài tập: ............................................................................................................................ 55
Bài 4: TẬP LỆNH CƠ BẢN TRONG PLC .......................................................................... 56
4.1 Nhóm lệnh logic tiếp điểm ..................................................................................... 56
4.1.1 Bit logic và ngõ ra cuộn dây (coil) .................................................................. 56
4.1.2 Lệnh SET và RESET: ..................................................................................... 57
4.2 Nhóm lệnh di chuyển dữ liệu ................................................................................. 59
4.3 Nhóm lệnh so sánh................................................................................................. 60

1
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

4.4 Nhóm lệnh toán học ............................................................................................... 61


4.4.1. Calculate instruction ....................................................................................... 61
4.4.2. Add, subtract, multiply and divide .................................................................. 62
4.4.3. Phép chia lấy dư ............................................................................................. 62
4.4.4. Phép toán đổi dấu ........................................................................................... 62
4.4.5. Phép toán tăng và giảm 1 đơn vị ..................................................................... 63
4.4.6. Phép tính trị tuyệt đối...................................................................................... 63
4.4.7. Phép tính giá trị nhỏ nhất và lớn nhất .............................................................. 64
4.4.8. Kiểm tra giới hạn ............................................................................................ 64
4.4.9. Các phép toán khác ......................................................................................... 65
4.5 Bộ đếm .................................................................................................................. 65
4.5.1. Counter đếm lên ............................................................................................. 65
4.5.2. Counter đếm xuống......................................................................................... 66
4.5.3. Counter đếm lên và đếm xuống ....................................................................... 67
4.6 Bộ định thời ........................................................................................................... 68
4.6.1. Bộ định thời TP .............................................................................................. 68
4.6.2. Bộ định thời TON ........................................................................................... 69
4.6.3. Bộ định thời TOF............................................................................................ 70
4.6.4. Bộ định thời TONR ........................................................................................ 71
4.6.5. Các lệnh khác ................................................................................................. 72
4.7 Lệnh chuyển đổi kiểu dữ liệu ................................................................................. 73
4.7.1. CONV ............................................................................................................ 73
4.7.2. Lệnh làm tròn (ROUND) và Cắt bỏ (TRUNC) ................................................ 73
4.7.3. Lệnh CEIL và FLOOR.................................................................................... 74
4.8 Lệnh điều khiển chương trình ................................................................................ 74
4.8.1. Lệnh nhảy và tạo nhãn .................................................................................... 74
4.8.2. Lệnh JMP_LIST ............................................................................................ 75
4.8.3. Lệnh SWITCH ............................................................................................... 75
4.8.4. Lệnh điều khiển thực thi RET ......................................................................... 76
4.9 Nhóm lệnh phép toán logic .................................................................................... 77
4.9.1 AND, OR và XOR .......................................................................................... 77
4.9.2 Lệnh đảo bit .................................................................................................... 77
4.10 Lệnh dịch và xoay .............................................................................................. 78
4.10.1. Lệnh dịch (Shift) ......................................................................................... 78
4.10.2. Lệnh xoay ................................................................................................... 79
Bài tập: ............................................................................................................................ 80
Bài 5: CÁC CHỨC NĂNG ĐẶC BIỆT CỦA PLC .............................................................. 84

2
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

5.1 Xử lý ngắt .............................................................................................................. 84


5.1.1. Lệnh Attach và Detach.................................................................................... 84
5.1.2. Ngắt theo chu kỳ ............................................................................................. 87
5.2.1. Ngắt trì hoãn thời gian: ................................................................................... 89
5.1.3. Không đồng bộ sự kiện ngắt ........................................................................... 91
5.2 Xử lý tín hiệu tương tự........................................................................................... 92
5.2.1. Lệnh PID và đối tượng kỹ thuật ...................................................................... 94
5.2.2. Lệnh PID_Compact ........................................................................................ 95
5.2.3. Thông số ErrorBits của lệnh PID_Compact: ................................................. 100
5.2.4. Lệnh PID_3STEP ......................................................................................... 101
5.2.5. Các thông số ErrorBits của lệnh PID_3STEP ................................................ 106
5.2.6. Cấu hình bộ điều khiển PID .......................................................................... 108
5.2.7. Vận hành bộ PID .......................................................................................... 112
5.3 Đồng hồ thời gian thực tích hợp ........................................................................... 112
5.3.1. Ngày và Thời gian: ....................................................................................... 112
5.3.2. Thiết lập và đọc thời gian hệ thống: .............................................................. 114
5.3.3. Run-time meter ............................................................................................. 115
5.3.4. SET_TIMEZONE ......................................................................................... 117
Bài tập : ......................................................................................................................... 119
Bài 6: BỘ LẬP TRÌNH SIEMENS LOGO! ....................................................................... 120
6.1 Tổng quan về SIEMENS LOGO! ......................................................................... 120
6.2 Cấu trúc và chức năng của LOGO!0BA7 ............................................................ 121
6.2.1. Cấu trúc ........................................................................................................ 121
6.2.2. Chức năng .................................................................................................... 122
6.3 Kết nối phần cứng LOGO!0BA7.......................................................................... 122
6.3.1 Kết nối nguồn cung cấp ................................................................................ 122
6.3.2. Kết nối ngõ vào ............................................................................................ 123
6.3.3. Kết nối ngõ ra ............................................................................................... 124
6.4 Tập lệnh của LOGO!0BA7 .................................................................................. 124
6.4.1. Constants and connecters – Co...................................................................... 125
6.4.2. Các hàm cơ bản (GF) .................................................................................... 126
6.5 Lập trình LOGO!0BA7 ........................................................................................ 135
Bài tập : ......................................................................................................................... 140

3
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Bài 1: TỔNG QUAN VỀ PLC


Mục tiêu : Sau khi học xong bài này, học sinh có khả năng :

 Trình bày được cấu trúc tổng quát và lịch sử hình thành PLC.
 Trình bày được vai trò của PLC trong các ứng dụng thực tế.
 Trình bày được tổng quát về phần cứng trong PLC.
Nội dung :

1.1 Tổng quan về PLC


PLC viết tắt của Programmable Logic Controller, là thiết bị điều khiển lập
trình được (khả trình) cho phép thực hiện linh hoạt các thuật toán điều khiển logic
thông qua một ngôn ngữ lập trình. Người sử dụng có thể lập trình để thực hiện một
loạt trình tự các sự kiện. Các sự kiện này được kích hoạt bởi tác nhân kích thích (ngõ
vào) tác động vào PLC hoặc qua các hoạt động có trễ như thời gian định thì hay các sự
kiện được đếm. PLC dùng để thay thế các mạch relay trong thực tế. PLC hoạt động
theo phương thức quét các trạng thái trên đầu ra và đầu vào. Khi có sự thay đổi ở đầu
vào thì đầu ra sẽ thay đổi theo. Ngôn ngữ lập trình của PLC có thể là Ladder hay State
Logic. Hiện nay có nhiều hãng sản xuất ra PLC như Siemens, Mitsubishi, General
Electric, Omron, Rockwell, Danfoss,...
Một khi sự kiện được kích hoạt thật sự, nó bật ON hay OFF thiết bị điều khiển
bên ngoài được gọi là thiết bị vật lý. Một bộ điều khiển lập trình sẽ liên tục “lặp” trong
chương trình do “người sử dụng lập ra” chờ tín hiệu ở ngõ vào và xuất tín hiệu ở ngõ
ra tại các thời điểm đã lập trình.
Để khắc phục những nhược điểm của bộ điều khiển dùng dây nối ( bộ điều khiển
bằng Relay) người ta đã chế tạo ra bộ PLC nhằm thỏa mãn các yêu cầu sau :
 Lập trình dễ dàng , ngôn ngữ lập trình dễ học .
 Gọn nhẹ, dễ dàng bảo quản , sửa chữa.
 Dung lượng bộ nhớ lớn để có thể chứa được những chương trình phức tạp .
 Hoàn toàn tin cậy trong môi trường công nghiệp .
 Giao tiếp được với các thiết bị thông minh khác như : máy tính , nối mạng , các
modul mở rộng.
 Giá cả có thể cạnh tranh được.
Các thiết kế đầu tiên là nhằm thay thế cho các phần cứng Relay dây nối và các
Logic thời gian .Tuy nhiên, bên cạnh đó việc đòi hỏi tăng cường dung lượng nhớ và
tính dễ dàng cho PLC mà vẫn bảo đảm tốc độ xử lý cũng như giá cả … Chính điều này
đã gây ra sự quan tâm sâu sắc đến việc sử dụng PLC trong công nghiệp. Các tập lệnh
nhanh chóng đi từ các lệnh logic đơn giản đến các lệnh đếm, định thời, thanh ghi

4
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

dịch… sau đó là các chức năng làm toán trên các máy lớn… Sự phát triển các máy
tính dẫn đến các bộ PLC có dung lượng lớn , số lượng I/O nhiều hơn.
Trong PLC, phần cứng CPU và chương trình là đơn vị cơ bản cho quá trình điều
khiển hoặc xử lý hệ thống. Chức năng mà bộ điều khiển cần thực hiện sẽ được xác
định bởi một chương trình . Chương trình này được nạp sẵn vào bộ nhớ của PLC, PLC
sẽ thực hiện việc điều khiển dựa vào chương trình này. Như vậy nếu muốn thay đổi
hay mở rộng chức năng của qui trình công nghệ , ta chỉ cần thay đổi chương trình bên
trong bộ nhớ của PLC. Việc thay đổi hay mở rộng chức năng sẽ được thực hiện một
cách dễ dàng mà không cần một sự can thiệp vật lý nào so với sử dụng các bộ dây nối
hay Relay .
Ví dụ điều khiển hai xylanh theo sơ đồ trạng thái sau:

S1 S2

4 2

Y1 Y2
5 3
1

Hình 1.1. Sơ đồ trạng thái xylanh và mạch khí nén

- Bên dưới là mạch điều khiển sử dụng relay


+24V 1 2 3 4

START K K K

S2

K Y1 Y2
0V

4 2
3

Hình 1.2 Mạch điều khiển sử dụng relay

5
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Sử dụng PLC để điều khiển


+ Kết nối phần cứng:
Nút nhấn thường hở START nối với
ngõ vào DI + 0.0
Công tắc hành trình S2 nối với ngõ
vào DI+0.1
Solenoid Y1, Y2 lần lượt nối với
ngõ ra DO+0.0 và DO+0.1

Hình 1.3. Sơ đồ kết nối PLC với các thiết bị


+ Chương trình lập trình bằng ngôn ngữ LAD

Từ ví dụ trên, ta nhận thấy có thể thay thế mạch điện relay bởi chương trình lập
trình PLC giống với sơ đồ mạch điện.
6
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

1.2 Cấu trúc của PLC S7-1200


1.2.1. Cấu trúc chung của PLC
Phần cứng PLC có 5 thành phần chính: bộ xử lý, bộ nhớ, bộ nguồn, giao diện
vào/ra và thiết bị lập trình.

Hình 1.4 Cấu trúc phần cứng cơ bản của PLC


- Bộ xử lý thực hiện chương trình đã lưu trong bộ nhớ. Đọc các tín hiệu từ Giao
diện vào, đưa vào chương trình xử lý để đưa ra các tín hiệu điều khiển phù hợp,
sau đó xuất tín hiệu điều khiển đó ra Giao diện ra. Bộ xử lý thực hiện tuần tự
theo thứ tự nội dung chương trình ( từ dòng lệnh đầu tiên cho đến dòng lệnh cuối
cùng _ một chu kỳ) đã lưu trong bộ nhớ và được kiểm soát bằng bộ đếm chương
trình. Khi thực hiện đến dòng lệnh cuối cùng thì bộ xử lý sẽ quay lên dòng lệnh
đầu tiên theo qui trình sau:

Network 1

Network 2

Network …

Network n

Hình 1.5 Chu kỳ thực hiện lệnh trong PLC


Thời gian thực hiện một chu kỳ nhanh hay chậm phụ thuộc tốc độ xử lý của CPU.

7
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

- Bộ nguồn: có hai loại là nguồn AC 220V và nguồn DC 24V. Cung cấp điện áp và
dòng điện cho bộ xử lý, bộ nhớ, giao điện vào/ra.
- Thiết bị lập trình: là thiết bị cho phép người sử dụng viết chương trình cho PLC
thực hiện. Thiết bị lập trình có thể tích hợp sẳn trên PLC, hoặc thiết bị cầm tay
hoặc phần mềm được cài đặt trên máy tính.
- Bộ nhớ: để lưu trữ dữ liệu lập trình và dữ liệu xử lý. Có các dạng bộ nhớ như
RAM, ROM, EPROM, thẻ nhớ SD,…Đặc biệt là RAM luôn có một nguồn dự
phòng để duy trì chương trình trong trường hợp mất điện đột ngột.
- Giao diện vào/ra: được kết nối với các thiết bị ngoại vi. Các thiết bị như nút điều
khiển, cảm biến,… kết nối với giao diện vào; các thiết bị như đèn, solenoid,
contractor , động cơ,… kết nối với giao diện ra.
1.2.2. Cấu trúc PLC S7 – 1200
a. Bộ xử lý trung tâm CPU
Bộ điều khiển S7 – 1200 cung cấp sự linh hoạt và mạnh mẽ để điều khiển nhiều
thiết bị, hỗ trợ các nhu cầu tự động hoá. Thiết kế nhỏ gọn, cấu hình linh hoạt, tập lệnh
mạnh mẽ đã kết hợp trong S7-1200, khiến nó trở thành một giải pháp hoàn hảo cho
việc điều khiển nhiều thiết bị đa dạng.
CPU kết hợp một bộ vi xử lý, một bộ nguồn tích hợp, mạch ngõ vào/ra, tích hợp
PROFINET, I/O điều khiển chuyển động tốc độ cao, ngõ vào tín hiệu tương tự trong
một hộp nhỏ gọn tạo nên một bộ điều khiển mạnh mẽ. Sau khi nạp xuống một chương
trình sử dụng thì CPU chứa các thuật toán logic giám sát và điều khiển các thiết bị ứng
dụng. CPU sẽ giám sát các ngõ vào và thay đổi ngõ ra theo yêu cầu của thuật toán
logic trong chương trình đã nạp, mà trong chương trình có thể xử lý bit logic, đếm,
định thời, thực hiện phép toán phức hợp và kết nối truyền thông với các thiết bị thông
minh khác.
CPU cung cấp một cổng truyền thông PROFINET. Ngoài ra, còn có thể thêm vào
các mô-đun truyền thông khác như PROFIBUS, GPRS, RS485 hay RS232.

 Kết nối nguồn


 Khe cấm thẻ nhớ
 Kết nối dây với các thiết bị
 Đèn báo trạng thái I/O
 Cổng kết nối PROFINET

Hình 1.6 CPU S7 – 1200


8
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Bảng thông số của các loại CPU


Chức năng CPU 1211C CPU 1212C CPU 1214C CPU 1215C
Kích thước 90x100x75 90x100x75 110x100x75 130x100x75
Bộ nhớ Làm việc 30 KB 50 KB 75 KB 100 KB
Nạp 1 MB 1 MB 4 MB 4 MB
Giữ lại 10 KB 10 KB 10 KB 10 KB
I/O trên Tín hiệu số 6 ngõ vào 8 ngõ vào 14 ngõ vào 14 ngõ vào
CPU 4 ngõ ra 6 ngõ ra 10 ngõ ra 10 ngõ ra
Tín hiệu 2 ngõ vào 2 ngõ vào 2 ngõ vào 2 ngõ vào
tương tự 2 ngõ ra
Bộ nhớ Ngõ vào (I) 1024 B 1024 B 1024 B 1024 B
ảnh tiến Ngõ ra (Q) 1024 B 1024 B 1024 B 1024 B
trình
Bit nhớ (M) 4096 B 4096 B 4096 B 4096 B
Mô-đun tín hiệu mở 0 2 8 8
rộng (SM)
Mạch tín hiệu (SB), 1 1 1 1
mạch pin (BB), mạch
truyền thông (CB)
Mô-đun truyền thông 3 3 3 3
(CM)
Bộ đếm Tổng cộng 3 trên CPU 4 trên CPU 6 6
tốc độ cao 5 trên SB 6 trên SB
Pha đơn 3 (100 kHz) 3 (100kHz) 3 (100kHz) 3 (100kHz)
SB:2 (30kHz) 1 (30kHz) 3 (30kHz) 3 (30kHz)
SB:2 (30kHz)
Pha vuông 3 (80 kHz) 3 (80kHz) 3 (80kHz) 3 (80kHz)
SB:2 (20kHz) 1 (20kHz) 3 (20kHz) 3 (20kHz)
SB:2 (20kHz)
Ngõ ra xung 4 4 4 4
Thẻ nhớ Thẻ nhớ SIMATIC (Tuỳ chọn)
Thời gian lưu trữ thời Thông thường 20 ngày, ít nhất 12 ngày ở 40oC
gian thực

9
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

PROFINET 1 cổng Ethernet 2 cổng


Ethernet
Tốc độ thực hiện toán số 2.3 μs/lệnh
thực
Tốc độ thực hiện toán 0.08 μs/lệnh
logic
Các khối, timer và counter trong S7 – 1200
Thành phần Mô tả
Khối Loại OB, FB, FC, DB
Kích cỡ 30 KB (CPU 1211C); 50 KB (CPU 1212C)
64 KB (CPU 1214C và 1215C)
Số lượng Tổng cộng lên đến 1024 khối (OB+FB+FC+DB)
Phạm vi địa chỉ 1 đến 65535 ( ví dụ: FB 1 đến FB 65535)
cho FB, FC, DB
Độ sâu lòng ghép 16 từ chu kỳ chương trình hoặc OB khởi động;
khối 4 từ ngắt trì hoãn thời gian, ngăt thời gian của ngày,
ngắt theo chu kỳ, ngắt phần cứng, ngắt lỗi thời gian
hay ngắt lỗi chẩn đoán OB.
Giám sát Trạng thái của 2 khối mã được giám sát cùng lúc
OB Chu kỳ chương Có nhiều: OB 1, OB 200 đến OB 65535
trình
Khởi động Có nhiều:OB 100, OB 200 đến OB 65535
Ngắt trì hoãn thời 4 ( 1 cho mỗi sự kiện): OB 200 đến OB 65535
gian và ngắt theo
chu kỳ
Ngắt phần cứng ( 50 ( 1 cho mỗi sự kiện): OB 200 đến OB 65535
cạnh và HSC)
Ngắt lỗi thời gian 1: OB 80
Ngắt lỗi chẩn đoán 1: OB 82
Timer Loại IEC
Số lượng Chỉ giới hạn bởi kích thước bộ nhớ
Lưu trữ Cấu trúc trong DB, 16B cho mỗi thời gian
Counter Loại IEC
Số lượng Chỉ giới hạn bởi kích thước bộ nhớ
Lưu trữ Cấu trúc trong OB, kích thước phụ thuộc vào kiểu

10
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

số

 SInt, USInt: 3 bytes


 Int, UInt: 6 bytes
 DInt, UDInt: 12 bytes

b. Các mô – đun mở rộng


S7 – 1200 cung cấp nhiều mô-đun khác nhau và các bo mạch ghép để mở rộng khả
năng của CPU với các I/O và những phương thức truyền thông khác.
 Mô-đun truyền thông (CM), mô-
đun xử lý truyền thông (CP), hoặc
TS Adapter
 CPU
 Bo mạch tính hiệu (SB), bo
mạch truyền thông (CB), bo mạch
pin (BB)
 Mô-đun tín hiệu (SM)
Mô-đun truyền thông
Mô - đun Loại Mô tả
 Mô-đun truyền thông RS232 Truyền song công
(CM) RS422/485 Truyền song công (RS422)
Bán song công (RS485)
PROFIBUS Master DPV1
PROFIBUS Slave DPV1
AS-i Master (CM 1243- AS-Interface
2)
 Mô-đun xử lý truyền Kết nối modem GPRS
thông (CP)
Bo mạch truyền thông RS485 Truyền bán song công
TeleService TS Adapter IE Basic1 Kết nối đến CPU
TS Adapter GSM GSM/GPRS
TS Adapter Modem Modem
TS Adapter ISDN ISDN
TS Adapter RS232 RS232
Mô-đun tín hiệu:

11
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Loại Chỉ ngõ vào Chỉ ngõ ra Kết hợp ngõ vào/ra
 Digital  4 x 24VDC In,  4 x 24VDC Out,  2 x 24VDC In /2 x 4VDC
SB 200 kHz 200 kHz Out
 4 x 5VDC In,  4 x 5VDC Out, 200  2 x 24VDC In /2 x 4VDC
200 kHz kHz Out, 200 kHz
 2 x 5VDC In /2 x 5VDC
Out, 200 kHz

 Digital  8 x 24VDC In  8 x 24VDC Out  8 x 24VDC In / 8 x24VDC


SM  8 x Relay Out Out
 8 x Relay Out  8 x 24VDC In / 8 x Relay
(Changeover) Out
 8 x 120/230VAC In/ 8 x
Relay Out

 16 x24VDC In  16 x24VDC Out  16 x24VDC In/16 x 24VDC


 16 x Relay Out Out
 16 x 24VDC In / 16 x Relay
Out

Analog  1 x 12 bit  1 x Analog Out


SB Analog In
 1 x 16 bit RTD
 1 x 16 bit
Thermocouple
 Analog  4 x Analog In  2 x Analog Out  4 x Analog In / 2 x Analog
SM  4 x Analog In  4 x Analog Out Out
x 16 bit
 8 x Analog In
 Thermocouple
- 4 x 16 bit TC
- 8 x 16 bit TC
 RTD:
- 4 x 16 bit RTD
- 8 x 16 bit RTD
Mô-đun khác:
Mô - đun Mô tả

12
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

 Battery Thêm vào vị trí đặt bo mạch mở rộng ở mặt trước CPU. Cung cấp
board việc lưu trữ lâu dài của đồng hồ thời gian thực.

1.3 Hoạt động của PLC S7-1200


CPU có ba chế độ hoạt động: STOP, STARTUP và RUN
- Chế độ STOP: CPU không thực hiện chương trình, ta có thể nạp chương trình
cho PLC.
- Chế độ STARTUP: OB khởi động (nếu có) được thực thi một lần. Sự kiện ngắt
không được xử lý trong suốt quá trình khởi động.
- Chế dộ RUN: OB chu kỳ chương trình được thực hiện nhiều lần. Sự kiện ngắt có
thể được xảy ra và được xử lý tại bất kỳ thời điểm nào trong chế độ RUN. Một
vài phần của dự án có thể được nạp trong chế độ RUN.
Trong chế độ STARTUP và RUN, CPU thực hiện những nhiệm vụ được biểu diễn
trong sơ đồ sau:

STARTUP
A Xoá vùng nhớ I.
B Khởi chạy các ngõ ra cả với giá trị cuối cùng hay giá trị thay thế
C Thực thi các OB khởi động.
D Sao chép trạng thái của ngõ vào vật lý đến vùng nhớ I.
E Lưu trữ bất kỳ các sự kiện ngắt nào vào trong thứ tự để xử lý trong chế độ RUN.
F Kích hoạt việc ghi vùng nhớ Q đến các ngõ ra vật lý.
RUN
 Ghi bộ nhớ Q đến các ngõ ra vật lý.
 Sao chép trạng thái các ngõ vào vật lý đến vùng nhớ I.
 Thực thi các OB chu kỳ chương trình.
 Thực hiện các chẩn đoán tự kiểm tra.
 Xử lý các ngắt và truyền thông trong suốt bất kỳ phần nào của chu kỳ quét.
1.3.1. Quá trình khởi động ( STARTUP)

13
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Bất cứ khi nào chế độ hoạt động chuyển từ STOP sang RUN, thì CPU xoá ngõ vào
ảnh tiến trình, khởi tạo ngõ ra ảnh tiến trình và xử lý OB khởi động. Bất cứ việc đọc
truy cập nào đến ngõ vào ảnh tiến trình bằng các lệnh ở trong OB khởi động chỉ đọc
được giá trị 0 chứ không phải là giá trị ngõ vào vật lý hiện hành. Do đó, để đọc được
trạng thái hiện hành của ngõ vào vật lý trong suốt chế độ khởi động thì ta phải thưc
hiện việc đọc trực tiếp. OB khởi động và bất kỳ FC hay FB liên quan được thực hiện
tiếp theo. Nếu tồn tại nhiều OB khởi động thì từng OB được thực hiện lần lược theo số
thứ tự của nó, OB nào có số thứ tự thấp nhất được thực hiện đầu tiên. Mỗi OB khởi
động bao gồm thông tin khởi động giúp xác định tính hợp lệ của dữ liệu lưu lại và
đồng hồ thời gian thực. Ta có thể lập trình các lệnh bên trong OB khởi động để kiểm
tra giá trị khởi động và để có những hành động phù hợp. Các vị trí khởi động sau được
cung cấp bởi OB khởi động:
Ngõ vào Kiểu dữ liệu OB khởi động
LostRetentive Bool = True, nếu vùng lưu trữ dữ liệu lưu lại bị mất.
LostRTC Bool = True, nếu đồng hồ thời gian thực bị mất.
CPU cũng thực hiện những nhiệm vụ sau trong suốt quá trình khởi động:
- Ngắt được xếp hàng nhưng không được xử lý trong suốt giai đoạn khởi động.
- Không giám sát thời gian chu kỳ trong suốt giai đoạn khởi động.
- Có thể thay đổi cấu hình của HSC ( bộ đếm tốc độ cao), PWM ( điều chế độ
rộng xung), và mô-đun PtP (Truyền thông điểm đến điểm) trong giai đoạn khởi
động.
- Thực tế hoạt động của HSC, PWM, PtP chỉ xảy ra ở giai đoạn RUN.
Sau khi thực hiện xong OB khởi động, CPU sang chế độ RUN và xử lý những
nhiệm vụ điều khiển trong chu kỳ quét liên tục.
1.3.2. Quá trình quét chu kỳ chương trình trong chế độ RUN
Mỗi chu kỳ quét, CPU viết giá trị ra ngõ ra, đọc giá trị ngõ vào, thực thi chương
trình, câp nhật mô-đun truyền thông, và báo cáo sự kiện ngắt và yêu cầu truyền thông.
Yêu cầu truyền thông được xử lý định kỳ trong suốt quá trình quét.
Những tác động đó ( ngoại trừ các sự kiện ngắt) được xử lý thường xuyên và tuần
tự. Sự kiện ngắt được kích hoạt sẽ được xử lý ưu tiên theo thứ tự mà chúng xảy ra.
Hệ thống đảm bảo rằng chu kỳ quét sẽ được hoàn thành trong một khoảng thời gian,
gọi là thời gian tối đa của chu kỳ; nếu không một lỗi thời gian sẽ được phát ra.
- Mỗi chu kỳ quét bắt đầu bằng việc lấy giá trị hiện hành của ngõ ra số và ngõ ra
tương tự từ ảnh tiến trình và sau đó viết chúng ra ngõ ra vật lý của CPU, SB và
mô-đun SM cấu hình cho việc cập nhật I/O tự động (cấu hình mặc định). Khi một
14
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

ngõ ra vật lý được truy cập bởi một lệnh, thì cả ngõ ra ảnh tiến trình và ngõ ra vật
lý của chính nó được cập nhật.
- Chu kỳ quét tiếp tục bằng việc đọc giá trị hiện hành của ngõ vào số và ngõ vào
tương tự từ CPU, SB và mô-đun SM cấu hình cho việc cập nhật I/O tự động (cấu
hình mặc định), và sau đó viết những giá trị này đến ảnh tiến trình. Khi ngõ vào
vật lý được truy cập bởi một lệnh, thì giá trị của ngõ vào vật lý được truy cập bởi
lệnh này nhưng ngõ vào ảnh tiến trình không được cập nhật.
- Sau khi đọc ngõ vào, chương trình được thực thi từ lệnh đầu tiên cho đến lệnh
cuối cùng. Điều này bao gồm tất cả các OB chu kỳ chương trình cộng với tất cả
các FC và FB liên quan của chúng. Các OB chu kỳ chương trình được thực thi
lần lược theo số thứ tự của các OB, với OB có số thứ tự nhỏ nhất được thực thi
đầu tiên.
Xử lý truyền thông xảy ra theo định kỳ trong suốt quá trình quét, có thể ngắt
chương trình thực hiện.
Kiểm tra tự chẩn đoán bao gồm kiểm tra định kỳ của hệ thống và kiểm tra trạng thái
mô-đun I/O.
Ngắt có thể xảy ra ở bất kỳ phần nào của chu kỳ quét, và sự kiện điều khiển. Khi sự
kiện xảy ra, CPU ngắt chu kỳ quét và gọi OB mà được cấu hình để xử lý sự kiện đó.
Sau khi OB hoàn thành xử lý sự kiện, CPU quay lại thực hiện chương trình tại điểm
ngắt đó.
1.4 Các vùng nhớ trong PLC S7-1200
Ta có thể tạo tên tượng trưng hoặc “tag” cho địa chỉ của dữ liệu, cho dù tag PLC
liên quan tới địa chỉ bộ nhớ và địa chỉ I/O hoặc biến cục bộ sử dụng ở trong khối mã.
Để sử dụng những tag đó trong chương trình chỉ cần nhập tên tag đó cho tham số của
lệnh.
CPU cung cấp các dạng lưu trữ dữ liệu trong quá trình thực thi chương trình như
sau:
- Bộ nhớ toàn cục: CPU cung cấp một loạt các vùng nhớ chuyên dụng, bao gồm
vùng nhớ ngõ vào (I), vùng nhớ ngõ ra (Q) và bit nhớ (M). Các vùng nhớ này
có thể được truy cập không giới hạn bởi tất cả các khối mã.
- Bảng tag PLC: có thể nhập tên tượng trưng vào bảng tag STEP 7 PLC cho vị
trí bộ nhớ cụ thể. Những tag này là biến toàn cục cho chương trình STEP 7 và
cho phép lập trình với cái tên mà nó có ý nghĩa cho ứng dụng.
- Khối dữ liệu (DB): có thể sử dung DB trong chương trình để lưu trữ dữ liệu
cho khối mã. Các dữ liệu lưu trữ vần tồn tại khi việc thực hiện các khối mã liên

15
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

quan kết thúc. DB toàn cục lưu trữ dữ liệu có thể được sử dụng bởi tất cả các
khối mã, trong khi một DB mẫu lưu trữ dữ liệu cho cho một FB xác định và
được cấu trúc bởi các tham số của FB.
- Bộ nhớ tạm: bất kỳ khi nào một khối mã được gọi, hệ thống vận hành của CPU
phân bổ bộ nhớ tạm, hoặc cục bộ, bộ nhớ (L) để sử dụng trong suốt quá trình
thực thi của khối. Khi việc thực thi của khối mã hoàn thành, thì CPU phân bổ
lại bộ nhớ cục bộ cho việc thực thi của khối mã khác.
Mỗi vị trí bộ nhớ khác nhau có một địa chỉ duy nhất.Chương trình sử dụng địa chỉ
để truy cập thông tin trong vị trí bộ nhớ. Tham chiếu đến vùng nhớ ngõ vào (I) hay
ngõ ra (Q), chẳng hạn như I0.3, Q1.4, truy cập ảnh tiến trình. Để truy cập trực tiếp ngõ
vào hay ngõ ra vật lý thì phải thêm tham chiếu “:P” ( ví dụ: I0.3:P, Q1.4:P hoặc
“Stop:P”).

Bảng liệt kê vùng nhớ:


Vùng nhớ Mô tả Ép buộc Lưu lại
I Sao chép từ ngõ vào vật lý tại thời Không Không
Ngõ vào ảnh tiến trình điểm bắt đầu chu kỳ quét
I_:P Đọc trực tiếp ngõ vào vật lý trên Có Không
Ngõ vào vật lý CPU, SB và SM
Q Sao chép đến ngõ ravật lý tại thời Không Không
Ngõ ra ảnh tiến trình điểm bắt đầu chu kỳ quét
Q_:P Viết trực tiếp ngõ ra vật lý trên Có Không
Ngõ ra vật lý CPU, SB và SM
M Bộ nhớ điều khiển và bộ nhớ dữ Không Có
Vùng nhớ bit liệu (Tuỳ chọn)
L Dữ liệu tạm thời cho khối cục bộ Không Không
Bộ nhớ tạm
DB Bộ nhớ dữ liệu và cũng như bộ Không Có
Khối dữ liệu nhớ tham số cho FB (Tuỳ chọn)
Địa chỉ tuyệt đối bao gồm các thành phần sau:
- Định danh vùng nhớ ( như I, Q hay M)
- Kích thước dữ liệu để được truy cập ( ‘B’ = Byte, ‘W’ = Word, ‘D’ = DWord)
- Địa chỉ bắt đầu của dữ liệu ( như byte 3 hay word 3)

16
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Khi truy cập một bit ở trong địa chỉ cho giá trị Boolean, không cần nhập kích thước
bộ nhớ, chỉ cần nhập vùng nhớ, vị trí byte, và vị trí bit cho dữ liệu ( ví dụ: I0.0, Q1.2,
M3.4).

(A) Định danh vùng nhớ ( vùng nhớ M)


(B) Địa chỉ byte: byte 3
(C) Dấu phân cách (“byte.bit”)
(D) Vị trí bit của byte (bit thứ 4)
(E) Byte của vùng nhớ
(F) Bit của byte đã chọn

Truy xuất dữ liệu trong vùng nhớ của CPU


I ( ngõ vào ảnh tiến trình): Thông thường, ngõ vào ảnh tiến trình là bộ nhớ chỉ đọc.
Có thể truy cập ngõ vào ảnh tiến trình theo kiểu bit, byte, word, double word.
Địa chỉ tuyệt đối cho bộ nhớ I
Bit I[địa chỉ byte].[địa chỉ bit] I0.1
Byte, Word, hoặc DWord I[kích cỡ][địa chỉ byte bắt đầu] IB4, IW5, ID12
Thêm “:P” vào địa chỉ để đọc trực tiếp giá trị ngõ vào số hoặc tương tự của CPU,
SB hay SM. Sự khác nhau giữ truy cập sử dụng I_:P thay vì I là dữ liệu đến trực tiếp
từ điểm kết nối giữa thiết bị trường và CPU, SB hay SM chứ không phải là ngõ vào
ảnh tiến trình.
Việc truy cập sử dụng I_:P không ảnh hưởng đến giá trị tương ứng đã lưu trữ trong
ngõ vào ảnh tiến trình.
Địa chỉ tuyệt đối cho bộ nhớ I ( trực tiếp)

Bit I[địa chỉ byte].[địa chỉ bit]:P I0.1:P


Byte, Word, hoặc I[kích cỡ][địa chỉ byte bắt IB4:P, IW5:P, ID8:P
DWord đầu]:P
Q ( ngõ ra ảnh tiến trình): Cho phép cả việc ghi và đọc dữ liệu vào bộ nhớ ngõ ra ảnh
tiến trình. Có thể truy cập ngõ ra ảnh tiến trình theo kiểu bit, byte, word, double word.
Địa chỉ tuyệt đối cho bộ nhớ Q
Bit Q[địa chỉ byte].[địa chỉ bit] Q1.1

17
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Byte, Word, hoặc Q[kích cỡ][địa chỉ byte bắt đầu] QB5, QW10, QD40
DWord
Thêm “:P” vào địa chỉ để viết giá trị số hoặc tương tự trực tiếp vào ngõ ra vật lý của
CPU, SB hay SM. Sự khác nhau giữ truy cập sử dụng Q_:P thay vì Q là ngoài việc ghi
dữ liệu vào ngõ ra ảnh tiến trình, còn ghi trực tiếp đến điểm kết nối giữa thiết bị trường
và CPU, SB hay SM ( tức là ghi vào cả hai nơi).
Truy cập sử dụng Q_:P ảnh hưởng đến cả ngõ ra vật lý cũng như giá trị tương ứng
đã lưu trữ trong ngõ ra ảnh tiến trình.
Địa chỉ tuyệt đối cho bộ nhớ I ( trực tiếp)

Bit Q[địa chỉ byte].[địa chỉ bit]:P Q1.1:P


Byte, Word, hoặc Q[kích cỡ][địa chỉ byte bắt QB2:P, QW4:P,
DWord đầu]:P QD8:P
M (vùng nhớ bit): Sử dụng vùng nhớ bit ( vùng nhớ M) cho cả relay điều khiển và dữ
liệu để lưu trữ trạng thái tức thì của một hoạt động hoặc thông tin điều khiển khác. Có
thể truy cập vùng nhớ bit kiểu bit, byte, word hoặc duoble word. Cho phép cả việc ghi
và đọc dữ liệu vào vùng nhớ M.
Địa chỉ tuyệt đối cho bộ nhớ M.
Bit M[địa chỉ byte].[địa chỉ bit] M20.1
Byte, Word, hoặc M[kích cỡ][địa chỉ byte bắt đầu] MB1, MW4, MD20
DWord
Temp ( vùng nhớ tạm): CPU phân bổ bộ nhớ tạm trên cơ sở nhu cầu. CPU phân bổ bộ
nhớ tạm cho khối mã tại thời điểm khối mã bắt đầu (OB) hoặc được gọi (FC hay FB).
Bộ nhớ tạm phân bổ cho một khối mã có thể sử dụng lại cùng một bộ nhớ tạm trước
đó đã sử dụng bởi các OB, FC hay FB khác. CPU không khởi tạo bộ nhớ tạm tại thời
điểm phân bổ và vì thê bộ nhớ tạm có thể chứa bất kỳ giá trị nào.
Bộ nhớ tạm tương tự như bộ nhớ M và chỉ có một sự khác biệt quan trọng là: bộ
nhớ M có phạm vi “ toàn cục”, còn bộ nhớ tạm có phạm vi “ cục bộ”.
CPU cung cấp bộ nhớ tạm cho một trong 3 nhóm OB ưu tiên:
- 16 KB cho khởi động và chu kỳ chương trình, bao gồm các FB và FC liên quan.
- 4 KB cho sự kiện ngắt tiêu chuẩn, bao gồm các FB và FC.
- 4 KB cho sự kiện ngắt lỗi, bao gồm các FB và FC .
Ta truy cập vùng nhớ tạm chỉ bằng các địa chỉ tượng trưng.
DB (khối dữ liệu): Sử dụng bộ nhớ DB để lưu trữ các loại dữ liệu khác nhau, bao gồm
trạng thái tức thời của một hoạt động hoặc thông số thông tin điều khiển cho các FB,
và cấu trúc dữ liệu yêu cầu nhiều lệnh chẳng hạn như timer và counter. Có thể truy cập
18
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

khối dữ liệu kiểu bit, byte, word hoặc duoble word. Được phép truy cập đọc và ghi đối
với khối dữ liệu DB đọc/ghi. Chỉ được phép truy cập đọc đối với khối dữ liệu DB chỉ
đọc.
Địa chỉ tuyệt đối cho bộ nhớ M.
Bit DB[số khối dữ liệu].DBX[địa DB1.DBX2.3
chỉ byte].[địa chỉ bit]
Byte, Word, hoặc DB[số khối dữ liệu].DB[kích DB1.DBB4, DB10.DBW2,
DWord cỡ][địa chỉ byte bắt đầu] DB20.DBD8
Chú ý: Khi chỉ định một địa chỉ tuyệt đối, STEP 7 đặt trước địa chỉ này một ký tự
“%” để cho biết rằng nó là địa chỉ tuyệt đối. Trong khi lập trình, bạn có thể nhập vào
địa chỉ tuyệt đối có hoặc không có ký tự”%” ( ví dụ: I0.0 hoặc %I0.0). Nếu không ghi
ký tự “%” thì STEP 7 tự động thêm vào địa chỉ mà ta đã nhập.

1.5 Các kiểu dữ liệu


1.5.1. Kiểu dữ liệu Bool, Byte, Word, DWord.

Kiểu Số Kiểu số Phạm vi VD hằng số VD địa chỉ


dữ liệu bit
Bool 1 Boolean FALSE hoặc TRUE TRUE, 1 I1.0
Binary 0 hoặc 1 0, 2#0 Q0.1
Octal 8#0 hoặc 8#1 8#1 M50.7
Hexadecimal 16#0 hoặc 16#1 16#1 DB1.DBX2.3
Tag_name
Byte 8 Binary 2#0 ÷ 2#11111111 2#00001111 IB2
Unsigned 0 ÷ 255 15 MB10
integer DB1.DBB4
Octal 8#0 ÷ 8#377 8#17 Tag_name
Hexadecimal B#16#0 ÷ B#16#FF B#16#F, 16#F
Word 16 Binary 2#0 ÷ 2#1111000011 MW10
2#1111111111111111 110000 DB1.DBW2
Unsigned 0 ÷ 65535 61680 Tag_name
integer
Octal 8#0 ÷ 8#177777 8#170360
Hexadecimal W#16#0 ÷ W#16#F0F0,
W#16#FFFF, 16#F0F0
16#0 ÷ 16#FFFF

19
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

DWord 32 Binary 2#0 ÷ 2#1111000011 MD10


2#11111111111111111 111111000011 DB1.DBD8
111111111111111 11 Tag_name
Unsigned 0 ÷ 4294967295 15793935
integer
Octal 8#0 ÷ 8#37777777777 8#74177417
Hexadecimal DW#16#0000_0000 ÷ DW#16#F0FF
DW#16#FFFF_FFFF, 0F,
16#0000_0000 ÷ 16#F0FF0F
16#FFFF_FFFF

1.5.2. Kiểu dữ liệu Interger (số nguyên)

Kiểu dữ Số bit Phạm vi VD hằng số VD địa chỉ


liệu
USInt 8 0 ÷ 255 78, 2#01001110 MB0, DB1.DBB4,
SInt 8 -128 ÷ 127 +50, 16#50 Tag_name
UInt 16 0 ÷ 65,535 65295, 0 MW2, DB1.DBW2,
Int 16 -32,768 ÷ 32,767 30000, +30000 Tag_name
UDInt 32 0 ÷ 4042322160 MD6, DB1.DBD8,
4,294,967,295 Tag_name
DInt 32 -2,147,483,648 ÷ -2131754992
2,147,483,647
1.5.3. Kiểu dữ liệu Float-point real (số thực)

Kiểu Số Phạm vi VD hằng số VD địa chỉ


dữ liệu bit
Real 32 -3.402823e+38 ÷ 123.456, -3.4, 1.0e-5 MD100,
-1.175 495e-38, DB1.DBD8,
±0, Tag_name
+1.175 495e-38 ÷
+3.402823e+38
LReal 64 -1.7976931348623158e+308 ÷ 12345.123456789e40, DB_name.var_name
-2.2250738585072014e-308, 1.2E+40 Quy định:
±0,
- Không cung cấp
+2.2250738585072014e-308 ÷
+1.7976931348623158e+308
địa chỉ trực tiếp.
- Có thể gán vào

20
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

trong bảng giao


diện khối OB,
FB hay FC

1.5.4. Kiểu dữ liệu Time và Date ( giờ và ngày)

Kiểu Kích Phạm vi VD hằng số


dữ liệu thước
Time 32 bit T#-24d_20h_31m_23s_648ms ÷ T#5m_30s
T#24d_20h_31m_23s_647ms T#1d_2h_15m_30s_45ms
Lưu trữ dạng: -2,147,483,648 ms ÷ TIME#10d20h30m20s630ms
+2,147,483,647 ms 500h10000ms
10d20h30m20s630ms
Date 16 bit D#1990-1-1 ÷ D#2168-12-31 D#2009-12-31
DATE#2009-12-31
2009-12-31
TOD 32 bit TOD#0:0:0.0 ÷ TOD#23:59:59.999 TOD#10:20:30.400
TIME_OF_DAY#10:20:30.40
23:10:1
DTL 12 byte Min.: DTL#1970-01-01-00:00:00.0 DTL#2008-12-16-
Max.: DTL#2554-12-31- 20:30:20.250
23:59:59.999 999 999
Time
Dữ liệu TIME lưu trữ như kiểu số nguyên có dấu 32 bit (DInt) với đơn vị
milliseconds. Sử dụng định dạng thông tin kiểu ngày (d), giờ (h), phút (m), giây (s) và
mili giây (ms).
Khi nhập thì không cần thiết phải chỉ định hết tất cả đơn vị thời gian. Ví dụ:
T#5h10s hay 500h.
Giá trị thời gian sử dụng không được vượt quá giới hạn trên và dưới của kiểu dữ
liệu thời gian (từ -2,147,483,648 ms đến +2,147,483,647 ms). (Chuyển đổi tất cả các
đơn vị thời gian sang đơn vị milliseconds để kiểm tra)
Date
Dữ liệu DATE được lưu trữ như một giá trị số nguyên không dấu 16 bit (UInt) mà
được hiểu là số ngày cộng vào ngày cơ bản 01/01/1990, để có được ngày cụ thể. Định
dạng biên tập phải chỉ định được năm, tháng, ngày.
TOD

21
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Dữ liệu TOD ( Time_of_date) được lưu trữ như kiểu số nguyền không dấu 32 bit
(UDInt) mà được hiểu là số giây tính từ nữa đêm (0 ms) đến thời gian được chỉ định
trong ngày. Giờ (24h /ngày),phút và giây phải được xác định.
DTL
Kiểu dữ liệu DTL(Date and Time Long) sử dụng cấu trúc 12 byte để lưu trữ thông
tin ngày và thời gian. Có thể định nghĩa dữ liệu DTL trong bộ nhớ tạm của một khối
hoặc trong một DB. Giá trị của tất cả các thành phần phải được nhập vào trong cột “
Start value” của trình soạn thảo DB.
Kích thước và phạm vi DTL
Chiều Định dạng Phạm vi giá trị VD giá trị ngõ vào
dài
12 Byte Đồng hồ và lịch: Min.: DTL#1970-01-01- DTL#2008-12-16-
Year-Month-Day: 00:00:00.0 20:30:20.250
Hour:Minute: Max.: DTL#2554-12-31-
Second.Nanoseconds 23:59:59.999 999 999
Mỗi thành phần của DTL chứa một kiểu dữ liệu và phạm vi giá trị khác nhau. Kiểu
dữ liệu của một giá trị xác định phải phù hợp với kiểu dữ liệu của thành phần tương
ứng.
Thành phần của cấu trúc DTL
Byte Thành phần Kiểu dữ liệu Phạm vi giá trị
0 Year UINT 1970 đến 2554
1
2 Month USINT 1 đến 12
3 Day USINT 1 đến 31
4 Weekday USINT 1(Sunday) đến 7(Saturday)
5 Hour USINT 0 đến 23
6 Minute USINT 0 đến 59
7 Second USINT 0 đến 59
8 Nanoseconds USINT 0 đến 999 999 999
9
10
11
1.5.5. Kiểu dữ liệu Character và String ( ký tự và chuỗi)

Kiểu dữ liệu Kích cỡ Phạm vi Ví dụ


Char 8 bit Mã ký tự ASCII: 16#00 đến 16#FF ‘A’, ‘t’, ‘@’

22
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

String n+ 2 byte n = ( 0 đến 254 byte ký tự) ‘ABC’


Char
Kiểu dữ liệu Char chiếm một byte trong bộ nhớ và lưu trữ một mã ký tự trong định
dạng ASCII. Cú pháp soạn thảo sử dụng ký tự dấu nháy đơn phía trước và phía sau của
ký tự ASCII. Ký tự nhìn thấy và ký tự cho phép có thể được sử dụng Bảng ký tự điều
khiển hợp lệ thể hiện trong mô tả của kiểu dữ liệu String.
String
CPU cung cấp kiẻu dữ liệu String để lưu trữ một chuỗi các byte ký tự đơn. Kiểu dữ
liệu String bao gồm giá trị đếm tổng số ký tự ( số ký tự trong một chuỗi) và đếm số ký
tự hiện hành. Kiểu String cung cấp đến 256 byte cho việc lưu trữ trong đó 1 byte đếm
tổng số ký tự tối đa, 1 byte đếm số ký tự hiện hành và 254 byte ký tự, với mỗi ký tự
lưu trữ 1 byte.
Có thể sử dụng chuỗi chữ ( hằng) cho tham số IN của lệnh về chuỗi, chuỗi đó phải
nằm trong cặp dấu nháy đơn. Ví dụ: ‘ABC’ là chuỗi 3 ký tự có thể được sử dụng như
là giá trị đầu vào cho tham số IN của lệnh S_CONV. Có thể tạo biến chuỗi bằng cách
lựa chọn kiểu dữ liệu “String” trong giao diện soạn thảo khối cho OB, FB , FC và DB.
Không thể tạo chuỗi trong trình soạn thảo PLC tag.

Có thể chỉ ra kích cở chuỗi tối đa trong byte bằng cách nhập vào giữa dấu ngoặc
vuông sau từ khoá “String”. Ví dụ: “MyString String[10]” sẽ xác định chuỗi MyString
có kích cỡ tối đa là 10 byte. Nếu không khai báo dấu ngoặc vuông với kích cỡ tối đa
kèm theo thì kích cỡ của chuỗi đó sẽ là 254 byte.
Ví dụ về kiểu dữ liệu chuỗi:
Tổng số Số ký tự Ký tự 1 Ký tự 2 Ký tự 3 … Ký tự
ký tự hiện hành 10
10 3 ‘C’ (16#43) ‘T’ (16#54) ‘A’ (16#41) … -
Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6
Ký tự điều khiển mã ASCII có thể được sử dụng trong dữ liệu kiểu Char và String.
Bảng ký tự điều khiển ASCII hợp lệ.
Ký tự điều Giá trị ASCII Chức năng điều khiển Ví dụ
khiển Hex
$L hoặc $l 0A Chuyển dòng '$LText', '$0AText'
$N $n 0A and 0D Ngắt dòng '$NText',
23
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

'$0A$0DText'
$P or $p 0C Nạp trang mới '$PText', '$0CText'
$R or $r 0D Xuống dòng (CR) '$RText','$0DText'
$T or $t 09 Tab '$TText', '$09Text’
$$ 24 Ký hiệu Dollar '100$$', '100$24'
$' 27 Đơn giá '$'Text$'','$27Text$27'
1.5.6. Kiểu dữ liệu Array (mảng)
Có thể tạo ra một mảng chứa đa thành phần của cùng một kiểu dữ liệu. Mảng có thể
được tạo ở trong giao diện soạn thảo khối OB, FB, FC và DB. Không thể tạo mảng ở
trong trình soạn thảo PLC tag.
Để tạo ra một mảng từ giao diện soạn thảo của khối, tên mảng và chọn kiểu dữ liệu
"Array [lo .. hi] of type", sau đó chỉnh sửa “lo”, “hi” và “type” như sau:
- lo – chỉ số bắt đầu (thấ nhất) cho mảng.
- hi – chỉ số cuối cùng (cao nhất) cho mảng.
- type – kiểu dữ liệu của mảng, ví dụ BOOL, SINT, UDINT,…
Quy định về kiểu dữ liệu mảng
Kiểu dữ liệu Cấu trúc mảng
ARRAY Name [index1_min..index1_max, index2_min..index2_max] of <data
type>
- Tất cả các thành phần của mảng phải có cùng kiểu dữ liệu
- Chỉ số có thể là số âm, nhưng giới hạn thấp phải nhỏ hơn hoặc bằng
giới hạn cao.
- Mảng có thể có 1 hoặc 6 chiều.
- Khai báo chỉ số đa chiều min…max được phân cách nhau bằng dấu
phẩy.
- Không được có các mảng lồng nhau, hoặc mảng của mảng.
- Kích cở bộ nhớ của 1 mảng = (kích cỡ 1 thành phần* tổng số các
thành phần trong mảng)

Chỉ số Kiểu dữ liệu Quy định chỉ số mảng


mảng hợp lệ của
chỉ số
Hằng số USInt, Sint,  Giá trị giới hạn: -32768 đến +32767
hoặc biến Uint, Int,  Được phép kết hợp các hằng số và
UDInt,DInt biến.

24
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

 Được phép có biểu thức hằng.


 Không hợp lệ nếu có biểu thức biến.

Ví dụ: Khai báo mảng


- Mảng 1 chiều, 20 thành phần: ARRAY[1..20] of REAL
- Mảng 1 chiều, 11 phần tử: ARRAY[-5..5] of REAL
- Mảng 2 chiều, 4 phần tử: ARRAY[1..2,3..4] of REAL
Ví dụ: địa chỉ mảng
- ARRAY1[0] ARRAY1 thành phần 0
- ARRAY2[1,2] ARRAY2 thành phần [1,2]
- ARRAY3 [i,j] Nếu i = 3 và j = 4, thì mảng ARRAY3 thành
phần [3,4] là địa chỉ.
1.5.7. Truy cập vào một lát cắt (slice) của một kiểu dữ liệu được tag
PLC tag và data block tag có thể được truy xuất bit, byte, hoặc word phù hợp với
kích thước của nó. Cú pháp để truy xuất một data slice (gói dữ liệu) như sau :

 ”< PLC tag name >” .xn (truy xuất bit)


 ”< PLC tag name >” .bn (truy xuất byte)
 ”< PLC tag name >” .wn (truy xuất word)
 ”<Data block name >”.<tag name >”.xn (truy xuất bit)
 ”<Data block name >”.<tag name >”.bn(truy xuất byte)
 ”<Data block name >”.<tag name >”.wn(truy xuất word)
Một double word-sized tag có thể được truy xuất bằng bit 0 -31, byte 0 -3, hoặc
word 0 -1. Một word-sized tag có thể được truy xuất bằng bit 0 -15, byte 0 -2, hoặc
word 0. Một byte sized tag có thể được truy xuất bằng bit 0 -8 hoặc byte 0. Bit, byte
và word slice có thể được dùng bất cứ đâu mà bit, byte, word là toán hạng dự kiến.

Chú ý : Kiểu dữ liệu hợp lệ được truy cập bởi slice là Byte, Char, Conn_Any, Date,
Dint, Dword, Event_Any, Event_Att, Hw_Any, Hw_Device, HW_Interface, Hw_Io,

25
Tài liệu giảng dạy môn lập trình PLC Khoa Công nghệ tự động

Hw_Pwm, Hw_SubModule, Int, OB_Any, OB_Att, OB_Cyclic, OB_Delay,


OB_WHINT, OB_PCYCLE, OB_STARTUP, OB_TIMEERROR, OB_Tod, Port, Rtm,
Sint, Time, Time_Of_Day, UDInt, UInt, USInt, and Word. PLC Tag của kiểu Real có
thể được truy cập bằng slice, nhưng data block tag không phải kiểu Real.
Ví dụ: Trong bảng PLC tag, ”DW” là một tag công khai của kiểu DWORD. Ví dụ
thể hiện truy suất gói bit, byte, và word:

26

You might also like