You are on page 1of 124

GIÁO TRÌNH LÝ THUYẾT

ĐIỀU KHIỂN LOGIC

ThS. Nguyễn Bá Hội


Đại học Đà Nẵng - Trường Đại học Bách khoa
hoinb@ud.edu.vn

Giáo trình đầy đủ bao gồm 3 phần:


1. Giáo trình lý thuyết
2. Giáo trình tập lệnh
3. Giáo trình bài tập
nguyen ba hoi

Chương 1 Giới thiệu .......................................................................................................................................... 4


1.1. PLC....................................................................................................................................................................4
1.2. Thế hệ PLC S7-200 ...........................................................................................................................................4
1.3. Thuật ngữ..........................................................................................................................................................5

Chương 2 Bắt đầu với S7-200 ........................................................................................................................... 6


2.1. Hình dáng bên ngoài ........................................................................................................................................6
2.2. Các thành viên họ S7-200 ................................................................................................................................7
2.3. Module mở rộng .............................................................................................................................................10
2.4. Chuẩn bị khi lập trình .....................................................................................................................................14

Chương 3 Đấu nối S7-200 ............................................................................................................................... 14


3.1. PLC sử dụng nguồn nuôi xoay chiều............................................................................................................14
3.2. PLC sử dụng nguồn nuôi một chiều .............................................................................................................15
3.3. Bảo vệ đầu ra PLC..........................................................................................................................................16
3.4. Sơ đồ đấu nối chi tiết .....................................................................................................................................17

Chương 4 Ngôn ngữ lập trình......................................................................................................................... 20


4.1. Statement List (STL).......................................................................................................................................20
4.2. Ladder Logic (LAD) ........................................................................................................................................20
4.3. Function Block Diagram (FBD) ......................................................................................................................21
4.4. Phân biệt SIMATIC với IEC 1131-3.................................................................................................................21

Chương 5 Khái niệm, qui ước và đặc điểm lập trình .................................................................................... 24
5.1. Cấu trúc chương trình....................................................................................................................................24
5.2. Phân loại lệnh .................................................................................................................................................24
5.2.1 Lệnh cơ bản ................................................................................................................................................24
5.2.2 Lệnh đặc biệt...............................................................................................................................................24
5.2.3 Lệnh tốc độ cao...........................................................................................................................................25
5.3. Qui ước ...........................................................................................................................................................25
5.4. Ký hiệu ............................................................................................................................................................25
5.4.1 Contact........................................................................................................................................................25
5.4.2 Coil..............................................................................................................................................................25
5.4.3 Box..............................................................................................................................................................25
5.5. Bài toán AND, OR ...........................................................................................................................................25
5.6. Trạng thái chương trình.................................................................................................................................26
5.7. Forcing ............................................................................................................................................................26
5.8. Bài toán logic tổng quát .................................................................................................................................27

Chương 6 STEP7-MicroWIN ............................................................................................................................ 31


6.1. Giao tiếp máy tính và PLC S7-200 (b2) ..........................................................................................................31
6.1.1 Đặt cấu hình cho cáp PC/PPI ......................................................................................................................31
6.1.2 Đặt cấu hình truyền thông cho CPU S7-200 ................................................................................................32
6.2. Cách thức S7-200 lưu và phục hồi dữ liệu (b6) ............................................................................................32
6.2.1 Download và Upload ...................................................................................................................................33
6.2.2 Lưu trữ vùng nhớ M khi mất nguồn .............................................................................................................33
6.2.3 Phục hồi dữ liệu khi có nguồn trở lại............................................................................................................33
6.3. Mật khẩu (b6) ..................................................................................................................................................34
6.4. Gỡ rối (Debug) (b6).........................................................................................................................................34
6.5. Thông báo và xử lý lỗi (Troubleshooting) (b6) .............................................................................................35

Chương 7 I/O .................................................................................................................................................... 36


7.1. Vào ra số (b3)..................................................................................................................................................36
7.1.1 Nối dây và chương trình điều khiển .............................................................................................................36
7.1.2 Ví dụ điều khiển motor.................................................................................................................................36
7.1.3 Mở rộng ......................................................................................................................................................38
7.2. Vào ra tương tự (b3).......................................................................................................................................40
7.2.1 Vào tương tự...............................................................................................................................................40
7.2.2 Ví dụ ứng dụng ...........................................................................................................................................40
7.2.3 Ra tương tự ................................................................................................................................................40

Trang 2
nguyen ba hoi
7.3. I/O cục bộ và mở rộng (b3) ............................................................................................................................40
7.4. Lọc đầu vào số (b3) ........................................................................................................................................41
7.5. Lọc đầu vào tương tự (b3).............................................................................................................................41
7.6. Bắt xung vào (b3)............................................................................................................................................42
7.7. Bảng đầu ra (b3) .............................................................................................................................................42
7.8. Vào ra tốc độ cao (b5) ....................................................................................................................................43
7.8.1 HSC ............................................................................................................................................................43
7.8.2 PTO ............................................................................................................................................................44
7.8.3 PWM ...........................................................................................................................................................44
7.9. Đinh chỉnh tương tự (b5) ...............................................................................................................................44

Chương 8 Vòng quét ....................................................................................................................................... 45


Chương 9 Bộ nhớ dữ liệu và cách định địa chỉ............................................................................................. 48
9.1. Định địa chỉ trực tiếp......................................................................................................................................48
9.1.1 Vùng ảnh các đầu vào I...............................................................................................................................48
9.1.2 Vùng ảnh các đầu ra Q................................................................................................................................49
9.1.3 Vùng nhớ các biến V ...................................................................................................................................49
9.1.4 Vùng nhớ các bit M .....................................................................................................................................49
9.1.5 Vùng nhớ các rơ le điều khiển tuần tự S .....................................................................................................49
9.1.6 Vùng các bit đặc biệt SM.............................................................................................................................49
9.1.7 Vùng nhớ cục bộ L ......................................................................................................................................50
9.1.8 Vùng các bộ định thời T ..............................................................................................................................50
9.1.9 Vùng các bộ đếm C.....................................................................................................................................51
9.1.10 Vùng các đầu vào tương tự AI ....................................................................................................................51
9.1.11 Vùng các đầu ra tương tự AQ .....................................................................................................................51
9.1.12 Các accumulator AC....................................................................................................................................52
9.1.13 Các bộ đếm tốc độ cao HC..........................................................................................................................52
9.1.14 Các hằng số ................................................................................................................................................52
9.2. Định địa chỉ gián tiếp......................................................................................................................................53
9.3. Không gian địa chỉ các vùng nhớ..................................................................................................................54
9.4. Bảo toàn dữ liệu .............................................................................................................................................55

Chương 10 Timer và Counter.......................................................................................................................... 57


10.1. Các loại timer (b3)...........................................................................................................................................57
10.2. TON (b3) ..........................................................................................................................................................57
10.3. TONR (b4)........................................................................................................................................................58
10.4. TOFF (b4) ........................................................................................................................................................59
10.5. Bài tập Timer (b4) ...........................................................................................................................................60
10.6. Chú ý khi dùng Timer với độ phân giải khác nhau (b4) ...............................................................................60
10.7. Counter (b5) ....................................................................................................................................................60
10.8. Counter tốc độ cao (b5)..................................................................................................................................60

Chương 11 Giải bài toán có cấu trúc ............................................................................................................. 62


11.1. GBT bằng giản đồ thời gian (Timing diagram) .............................................................................................62
11.2. GBT bằng lưu đồ (flowchart) và các bit tuần tự (sequence bits).................................................................62
11.3. GBT bằng sơ đồ trạng thái (state diagram) ..................................................................................................62
11.4. Các lệnh còn lại trong tập lệnh......................................................................................................................62

Chương 12 Ngắt ............................................................................................................................................... 63


Chương 13 PID, Freeport................................................................................................................................. 65
13.1. PID ...................................................................................................................................................................65
13.2. Freeport...........................................................................................................................................................65

Chương 14 Các phương thức truyền thông .................................................................................................. 66


14.1. PPI ...................................................................................................................................................................67
14.2. MPI...................................................................................................................................................................67
14.3. PROFIBUS.......................................................................................................................................................67

Trang 3
nguyen ba hoi

Chương 1 Giới thiệu


1.1. PLC
PLC (Programmable Logic Controllers) là những bộ điều khiển lập trình được.
Chúng được ứng dụng rộng rãi trong công nghiệp hay trong thương mại. PLC theo
dõi các trạng thái ngõ vào, ra các quyết định theo chương trình định sẵn và xuất
các tín hiệu điều khiển ra ngõ ra để tự động hóa quá trình (process) hay máy móc
(machine).

Hoạt động của PLC

Ưu điểm của PLC so với đấu dây thuần túy


· Kích cỡ nhỏ hơn
· Thay đổi thiết kế dễ hơn và nhanh hơn khi có yêu cầu
· Có chức năng chẩn đoán lỗi và ghi đè
· Các ứng dụng có thể dẫn chứng bằng tài liệu
· Các ứng dụng được nhân bản nhanh chóng và thuận tiện

1.2. Thế hệ PLC S7-200


S7-200 là PLC thuộc họ Micro Automation của hãng SIEMENS, có thể điều khiển
hàng loạt các ứng dụng khác nhau trong tự động hoá. Với cấu trúc nhỏ gọn, có khả
năng mở rộng, giá rẻ và một tập lệnh SIMATIC mạnh, PLC S7-200 là một lời giải
hoàn hảo cho các bài toán tự động vừa và nhỏ.

PLC S7-200 cho phép tự động hoá tối đa với


chi phí tối thiểu.
- Cài đặt, lập trình và vận hành rất đơn giản.
- Các CPU có thể sử dụng trong mạng, hệ
thống phân tán hoặc sử dụng đơn lẻ.
- Có khả năng tích hợp trên quy mô lớn.
- Ứng dụng cho những điều khiển đơn giản
và phức tạp.
- Truyền thông mạnh (PPI, Profibus-DP, AS-
Trang 4
nguyen ba hoi
i).

1.3. Thuật ngữ


Cảm biến Thiết bị chấp hành

CPU, RAM, ROM, Firmware

Ngõ vào rời rạc Ngõ ra rời rạc

Ngõ vào tương tự

Ngõ ra tương tự

Trang 5
nguyen ba hoi

Chương 2 Bắt đầu với S7-200


2.1. Hình dáng bên ngoài

Chỉ thị trạng thái Đánh số các ngõ vào ra

Chuyển chế độ và hiệu chỉnh tương tự Cartridge

Trang 6
nguyen ba hoi

Input Simulator Removable Terminal Strip

2.2. Các thành viên họ S7-200

Trang 7
nguyen ba hoi

Trang 8
nguyen ba hoi

Trang 9
nguyen ba hoi

2.3. Module mở rộng

Lắp đặt CPU và module

Trang 10
nguyen ba hoi

Trang 11
nguyen ba hoi

Trang 12
nguyen ba hoi

Trang 13
nguyen ba hoi
2.4. Chuẩn bị khi lập trình
· PLC S7-200 CPU từ 221 đến
226XM
· Máy tính (PC hoặc PG)
· Phần mềm lập trình STEP7-
MicroWin
· Cáp truyền thông PC/PPI

Chương 3 Đấu nối S7-200


3.1. PLC sử dụng nguồn nuôi xoay chiều

[a] Công tắc ngắt nguồn cho CPU, toàn bộ mạch vào và ra của PLC.
[b] Thiết bị chống quá dòng cho CPU, các mạch vào và ra. Có thể sử dụng cầu chì
riêng cho từng phần (CPU, mạch vào, mạch ra) để bảo vệ tốt hơn.
[c] Bảo vệ quá dòng cho mạch vào không cần thiết nếu các đầu vào sử dụng
nguồn 24VDC do PLC cung cấp. Nguồn này (gọi là nguồn cảm biến) đã được thiết
kế chống ngắn mạch.
Trang 14
nguyen ba hoi

[d] Nối đầu đấu mát của


PLC vào điểm nối đất gần
nhất để chống nhiễu. Tất cả
các đầu đấu mát trong một
hệ thống nên được đấu vào
cùng một điểm. Tốt nhất nên
sử dụng dây 14 AWG hay
dây 1.5 mm(.
[e] Nguồn 24VDC do PLC
cung cấp (nguồn cảm biến) có thể được sử dụng cho mạch các đầu vào.
[f] Nguồn 24VDC do PLC cung cấp (nguồn cảm biến) có thể được sử dụng cho
mạch các đầu vào mở rộng.
[g] Nguồn 24VDC do PLC cung cấp (nguồn cảm biến) có thể được sử dụng nuôi
các module ra mở rộng.
(Nguồn cảm biến này đã được thiết kế chống ngắn mạch.)
[h] Trong đa số các trường hợp, nối đất đầu M của nguồn cảm biến 24VDC này là
một trong những cách chống nhiễu tốt nhất.

3.2. PLC sử dụng nguồn nuôi một chiều

[a] Công tắc ngắt nguồn cho


CPU, toàn bộ mạch vào và
ra của PLC.
[b] Thiết bị bảo vệ quá dòng
cho CPU.
[c] Thiết bị bảo vệ quá dòng
cho mạch vào.
[d] Thiết bị bảo vệ quá dòng
cho mạch ra.
[e] Cần đảm bảo nguồn một
chiều có đủ độ “cứng” cần
thiết nhất là trong các trường hợp tải thay đổi (đóng ngắt đầu ra). Nếu cần phải đấu
thêm tụ điện ngoài.
[f] Trong đa số các trường hợp, nối đất đầu âm của tất cả các nguồn 24VDC là một
trong những cách chống nhiễu tốt nhất.
[g] Điện trở cho phép dòng điện rò chạy qua để chống hiện tượng tích điện tĩnh
(thường có giá trị khoảng 1M(). Tụ điện chống các nhiễu hài bậc cao (thường có
giá trị khoảng 4700 pF).
Trang 15
nguyen ba hoi
[h] Nối đầu đấu mát của PLC vào điểm nối đất gần nhất để chống nhiễu. Tất cả các
đầu đấu mát trong một hệ thống nên được đấu vào cùng một điểm. Tốt nhất nên
sử dụng dây 14 AWG hay dây 1.5 mm(.

Chỉ sử dụng nguồn cung cấp 24VDC có cách điện tốt với lưới điện xoay chiều cũng
như với các nguồn điện khác.

3.3. Bảo vệ đầu ra PLC


§ Bảo vệ các đầu ra 24V một chiều (Transistors)

§ Bảo vệ rơ le đóng ngắt dòng điện một chiều

§ Bảo vệ rơ le đóng ngắt dòng điện xoay chiều

Trang 16
nguyen ba hoi
3.4. Sơ đồ đấu nối chi tiết

Trang 17
nguyen ba hoi

Trang 18
nguyen ba hoi

Trang 19
nguyen ba hoi

Chương 4 Ngôn ngữ lập trình


Có 03 ngôn ngữ lập trình thông dụng cho PLC, (ta tạm dùng chữ “ngôn ngữ” để chỉ
môi trường (editor) lập trình cho PLC). 03 ngôn ngữ thông dụng đó là:
Statement List (STL), Ladder Logic (LAD), Function Block Diagram (FBD)
Với S7-200, mỗi ngôn ngữ có thể sử dụng tập lệnh SIMATIC hay tập lệnh theo
chuẩn IEC 1131-3, riêng STL chỉ có thể sử dụng tập lệnh SIMATIC.

4.1. Statement List (STL)


STL cho phép tạo chương trình
bằng cách viết từng câu lệnh,
khác với hai ngôn ngữ kia là
dạng đồ họa. Chính vì thế trong
STL có thể viết những chương
trình mà trong hai ngôn ngữ
còn lại không viết được, bởi vì
nó sát với ngôn ngữ máy hơn,
không bị giới hạn bởi các qui tắc đồ họa. STL thường dành cho các lập trình viên
giàu kinh nghiệm.

STL có nhiều nét tương tự ngôn ngữ lập trình Assembler. Một khái niệm rất quan
trọng trong STL là Ngăn xếp (Stack), khái niệm này không có trong LAD và FBD.
Ngăn xếp trong STL về kích thước nhỏ hơn nhiều so với khái niệm ngăn xếp trong
Assembler, chỉ bao gồm 09 bits. Tuy nhiên nó lại đóng vai trò lớn hơn, ảnh hưởng
tới sự thực hiện của hầu hết các lệnh và các lệnh cũng luôn tác động tới nội dung
ngăn xếp.
STL thường dành
cho các lập trình
viên giàu kinh
nghiệm; STL có thể
giải quyết được một
số vấn đề không thể
giải quyết dễ dàng
trong LAD và FBD;
STL chỉ có thể sử
dụng với tập lệnh
SIMATIC; Mọi
chương trình viết
bằng LAD hay FBD
đều có thể chuyển
về xem và sửa trong
STL nhưng không
phải tất cả những
chương trình viết
trong STL đều có thể
xem bằng LAD hoặc FBD.

4.2. Ladder Logic (LAD)


Một chương trình viết trong LAD rất giống với một sơ đồ điện, vì thế được rất nhiều
người lựa chọn khi lập trình cho PLC nói chung. Chương trình thường được chia
thành nhiều phần nhỏ, rất dễ hiểu và tương đối độc lập gọi “network”. Những thành
phần cơ bản của một chương trình trong LAD là các tiếp điểm (contacts) - đại diện
cho các đầu vào như nút bấm, tiếp điểm, điều kiện, . . . các cuộn dây (coils) - đại
Trang 20
nguyen ba hoi
diện cho các đầu ra như đèn, van, cuộn hút, . . và các hộp (box) - đặc trưng cho
các phép tính, các bộ định thời,
các bộ đếm, . . .
Những lý do chính để LAD
được yêu thích là: dễ hiểu cho
người mới bắt đầu; dễ sử dụng
và thông dụng trên toàn thế
giới; bao gồm tập lệnh
SIMATIC và cả IEC 1131-3; dễ
dàng chuyển sang dạng STL.

4.3. Function Block


Diagram (FBD)
Ví dụ chương trình trong FBD cho thấy nó rất giống với một sơ đồ mạch điện tử số.
Đó là ưu điểm của FBD. FBD bao gồm cả
tập lệnh SIMATIC và IEC 1131-3 và dễ
dàng chuyển sang STL.

4.4. Phân biệt SIMATIC với IEC


1131-3
Tập lệnh SIMATIC được thiết kế dành cho S7-200. Tập lệnh này có vẻ riêng và hoạt động
cũng có hơi khác so với các tập lệnh dành cho các loại PLC khác. Tuy nhiên hầu hết các
loại PLC trên thế giới đều sử dụng những tập lệnh có rất nhiều nét tương đồng như tập
lệnh này, với đôi nét khác biệt nhỏ giữa các nhà sản xuất PLC khác nhau. Đối với S7-200,
các lệnh SIMATIC là tối ưu về mặt thời gian (thực hiện nhanh nhất). Ngoài ra tập lệnh
SIMATIC sử dụng được trong cả ba ngôn ngữ STL, LAD và FBD.

Tập lệnh IEC 1131-3, đối lại, tuân thủ theo đúng chuẩn qui định bởi Ủy ban Kỹ thuật Điện
Quốc tế (International Electrotechnical Commission). Ủy ban này là một tổ chức có hoạt
động rộng rãi cũng như có uy tín cao trên thế giới. Trong vài năm trở lại đây, cùng với sự
phát triển mạnh mẽ của PLC, IEC cố gắng đưa ra một chuẩn chung nhằm thống nhất các
nhà sản xuất PLC khắp nơi trên toàn cầu, để xây dựng một tập lệnh có hình thức cũng
như cách hoạt động giống nhau cho mọi loại PLC, tạo dễ dàng cho người sử dụng.

Như vậy, tập lệnh IEC 1131-3 bị giới hạn trong số các lệnh chung nhất của các nhà sản
xuất PLC khác nhau trên thế giới. Nhiều lệnh bình thường trong SIMATIC không còn là
lệnh chuẩn trong hệ IEC 1131-3. Tất nhiên, người sử dụng vẫn có thể dùng những lệnh
này trong IEC 1131-3 như các lệnh ‘ngoại chuẩn’, nhưng khi đó chương trình không còn
hoàn toàn tương thích với chuẩn IEC 1131-3 nữa.

Một số lệnh trong IEC 1131-3 chấp nhận nhiều dạng dữ liệu. Ví dụ lệnh cộng số học trong
SIMATIC có nhiều kiểu lệnh: ADD_I để cộng các số nguyên, ADD_R dành cho các số
thực; Trong khi đó chỉ có một lệnh cộng ADD trong IEC 1131-3, lệnh này tự động kiểm tra
dạng dữ liệu của các toán hạng và biên dịch thành lệnh thích hợp cho CPU. Điều này,
cũng được gọi là “overloading”, tiết kiệm thời gian quí giá cho người lập trình.

Các lỗi cú pháp ít hơn trong IEC 1131-3 vì dạng dữ liệu được tự động kiểm tra.

Tóm lại với tập lệnh theo chuẩn IEC 1131-3, người sử dụng dễ dàng hơn trong việc làm
quen với PLC nói chung. Số lệnh được sử dụng cũng ít hơn, tuy nhiên các lệnh SIMATIC
vẫn có thể được sử dụng. Nhiều lệnh khác với những lệnh tương ứng trong SIMATIC như
các bộ định thời, bộ đếm, các lệnh nhân, chia, . . . Các lệnh trong IEC 1131-3 có thể có
thời gian thực hiện lâu hơn. Các lệnh này chỉ có trong LAD và FBD (không áp dụng được
trong STL). IEC 1131-3 chỉ định rằng phải định nghĩa dạng dữ liệu cho các biến và cung
cấp khả năng kiểm tra tính hợp lệ của các biến.

Trang 21
nguyen ba hoi
Trong nội dung tài liệu này chúng ta sẽ không đi sâu hơn về vấn đề đang nêu mà chỉ điểm
qua một số khái niệm cơ bản. Trước hết là những dạng dữ liệu cơ bản:
Có 03 mức kiểm tra tính
hợp lệ của dữ liệu: kiểm
tra chặt chẽ (strong data
type checking), kiểm tra
đơn giản (simple data
type checking) hoặc
không kiểm tra (no data
type checking). Trong
IEC 1131-3 áp dụng
mức kiểm tra chặt chẽ
còn trong SIMATIC chỉ
kiểm tra đơn giản. Kiểm tra chặt chẽ nghĩa là dạng dữ liệu phải tuyệt đối phù hợp, thường
thì mỗi lệnh yêu cầu đúng một loại dữ liệu nào đó và điều này phải được đáp ứng (tất
nhiên không kể trường hợp các lệnh “overloading” như đã nêu ở trên). Trong khi đó kiểm
tra đơn giản chỉ kiểm tra dung lượng bộ nhớ của biến (số bit mà biến đó chiếm), ví dụ biến
dạng WORD (không dấu) và dạng INT (có dấu) không bị phân biệt vì đều chiếm 16 bit
trong bộ nhớ. Lưu ý trong kiểm tra đơn giản, dạng REAL vẫn được phân biệt riêng dù
cũng chiếm 32 bit như các dạng DWORD và DINT. Không kiểm tra dạng dữ liệu áp dụng
cho các biến chung (global) trong SIMATIC, ví dụ VD100 chiếm 32 bit có thể được hiểu
như DWORD, DINT hay REAL.
Sau đây là các dạng dữ
liệu tổng hợp:
Việc kiểm tra tính hợp lệ
của dữ liệu hay không
kiểm tra đóng vai trò rất
quan trọng. Ví dụ trong các
lệnh so sánh số nguyên
(>I, <I), nếu số dạng
WORD được hiểu là số
dạng INT thì PLC có thể
cho rằng 40000 nhỏ hơn 1.
Do việc kiểm tra tính hợp
lệ của dữ liệu trong IEC
1131-3 và SIMATIC khác
nhau nên không thể
chuyển đổi chương trình
giữa hai dạng lệnh này
được. Cần phải lựa chọn
một tập lệnh duy nhất để
sử dụng ngay từ đầu, khi bắt đầu tạo chương trình.
Như trên có nhắc đến các lệnh “overloading”, sau đây là một ví dụ đơn giản về việc kiểm
tra dạng dữ liệu cho những lệnh này: ta thực hiện lệnh cộng ADD hai toán hạng IN1 (dạng
INT) và IN2 (dạng WORD), lưu kết quả vào OUT (dạng INT). Trong IEC 1131-3 sẽ báo lỗi
biên dịch (kiểm tra chặt chẽ) còn với kiểm tra bình thường thì lệnh trên được hiểu là lệnh
ADD_I (cộng số nguyên). Khi kiểm tra bình thường (đơn giản), lệnh cộng ADD hai số
40000 và 1 sẽ cho kết quả là một số âm chứ không phải là 40001.

Một điều cũng nên nhắc đến là các lệnh “overloading” sử dụng cách đánh địa chỉ gián tiếp.
Do cách đánh địa chỉ gián tiếp không xác định dạng dữ liệu của toán hạng nên lệnh thực
hiện tự xác định theo dạng của các toán hạng còn lại. Khi không làm được điều này (toàn
địa chỉ gián tiếp hay sử dụng accumulator chẳng hạn) thì sẽ báo lỗi biên dịch.

Điều cuối cùng cần nói đến trong phần này là việc chuyển dạng dữ liệu. Tồn tại các lệnh
riêng để chuyển số liệu từ dạng này sang dạng khác, chẳng hạn chuyển số -5 (dạng INT)
thành -5.00 (dạng REAL). Một cách chuyển dạng dữ liệu khá thông dụng là bằng lệnh

Trang 22
nguyen ba hoi
“overloading” MOVE, cho phép chuyển số liệu khác dạng nhưng cùng kích thước (chiếm
cùng số bit trong bộ nhớ, ví dụ như INT và WORD, DWORD và DINT).

Trang 23
nguyen ba hoi

Chương 5 Khái niệm, qui ước và đặc điểm lập trình


STEP7-MicroWIN là phần mềm được sử
dụng với PLC S7-200 để tạo ra chương
trình điều khiển PLC. Sắp xếp các lệnh
theo một trật tự logic hợp lí để tạo nên một
đoạn chương trình vận hành PLC mong
muốn. Các lệnh được chia thành 3 nhóm
lệnh như sau: lệnh cơ bản, lệnh đặc biệt và
lệnh tốc độ cao.

5.1. Cấu trúc chương trình

Cấu trúc một chương trình trong PLC khá đơn giản, chương trình được tạo thành
từ 03 thành phần cơ bản: một chương trình chính (main program); có thể có một
hay nhiều chương trình con (subroutines); các chương trình con xử lý ngắt
(interrupt routines) có thể có hoặc không.
· Chương trình chính bao gồm các lệnh điều khiển ứng dụng. Các lệnh này được
thực hiện tuần tự một cách liên tục, cứ mỗi vòng quét một lần.
· Các chương trình con, có thể có hoặc không tùy yêu cầu, chỉ được thực hiện
nếu được gọi đến từ chương trình chính.
· Các chương trình con xử lý ngắt (có thể có hoặc không) được thực hiện khi xảy
ra sự kiện gắn với ngắt tương ứng. Sự kiện đó có thể là sự thay đổi mức ở một
đầu vào, bộ định thời đếm đủ hay nhận được dữ liệu trên cổng truyền thông, . . .

5.2. Phân loại lệnh


5.2.1 Lệnh cơ bản
Là những lệnh được tìm thấy trong hầu hết các chương trình như: timer, counter,
math, logical, increment/decrement/invert, move, & block instructions.
5.2.2 Lệnh đặc biệt
Dùng để thao tác dữ liệu: shift, table, find, conversion, for/next, & real-time
instructions.
Trang 24
nguyen ba hoi
5.2.3 Lệnh tốc độ cao
Cho phép các sự kiện hoặc ngắt xảy ra độc lập với thời gian một vòng quét. Bao
gồm high-speed counters, interrupts, output & transmit instructions.

5.3. Qui ước


#, “?.?”, “????”, --->>, EN, ENO

5.4. Ký hiệu
Ngôn ngữ LAD bao gồm các ký hiệu thông dụng đại diện cho các thành phần điều
khiển.
5.4.1 Contact

5.4.2 Coil
Coil đại diện cho relay. Được cấp năng lượng khi có nguồn cung
cấp. Khi có năng lượng nghĩa là ngõ ra thay đổi trạng thái sang ON,
và bit trạng thái lên 1. Bit trạng thái này có thể được sử dụng để
điều khiển NO hay NC ở bất cứ đâu trong chương trình.
5.4.3 Box

Box = function, các box chứa bên trong nhiều câu lệnh để thực thi
nhiệm vụ của một khối chức năng. Các box có thể là timer, counter
hay các phép toán học.

5.5. Bài toán AND, OR

Trang 25
nguyen ba hoi

5.6. Trạng thái chương trình

5.7. Forcing

Trang 26
nguyen ba hoi

5.8. Bài toán logic tổng quát

Trang 27
nguyen ba hoi

Trang 28
nguyen ba hoi

Hệ thống cảnh báo trộm (Burglar Alarm System):

Đơn giản biểu thức


và viết chương trình
LAD:

Trang 29
nguyen ba hoi
Đơn giản biểu thức
và viết chương trình
LAD:

Viết chương trình


LAD khi trước và
sau khi tối giãn:

Bảng Karnagh:

Trang 30
nguyen ba hoi

Chương 6 STEP7-MicroWIN
STEP 7–Micro/WIN là phần mềm của hãng SIEMENS chạy được trên các hệ điều
hành Windows 95/98/Me/NT/2000/XP hỗ trợ việc lập trình và cấu hình PLC họ S7-
200 từ đơn giản đến phức tạp. Ngoài ra, nó còn có thể cấu hình cho một số màn
hình giao diện người-máy (HMI), truyền thông giữa các thiết bị trong họ
MICROMASTER. Với STEP 7–Micro/WIN, người lập trình tiết kiệm rất nhiều thời
gian, có thể chuyển đổi giữa các kiểu soạn thảo tiêu chuẩn STD, LAD và FBD; tạo
được các thư viện người dùng riêng.
Tools: Program Block:
cửa sổ soạn thảo. Data
Block: Gán địa chỉ và
giá trị đầu. Symbol
Table: để đánh địa chỉ
cho các biến. Local
Variable Table: khai báo
các biến địa phương
cho các chương trình
con hoặc chương trình
con ngắt. Status Chart.
System Block.
Communications. Set
PG/PC interface.
Instructions: Bit logic,
clock, comm, compare,
convert, counter,
floating-point math, integer math, int, logical operation, move, program control,
shift/rotate, string, table, timer, call.

6.1. Giao tiếp máy tính và PLC S7-200 (b2)


6.1.1 Đặt cấu hình cho cáp PC/PPI

Trang 31
nguyen ba hoi

Trong cửa sổ STEP 7 - MicroWin 32, nhắp chuột lên biểu tượng
Communications hoặc chọn
View ® Component ®
Communications. Trên hộp
đối thoại xuất hiện
(Communications Setup),
nhắp đúp lên biểu tượng
PC/PPI Cable. Xuất hiện hộp
thoại Setting the PG/PC
Interface, chọn nút Properties
và kiểm tra các tham số.

Trong cửa sổ STEP 7 - MicroWin 32, nhắp


chuột lên biểu tượng Communications hoặc
chọn View ® Component ® Communications.
Trên hộp đối thoại xuất hiện (Communications
Setup), nhắp đúp lên biểu tượng Refresh. CPU
đang được kết nối (và được cấp nguồn) sẽ xuất
hiện như một biểu tượng. Có thể nhắp đúp lên
biểu tượng này để kiểm tra các thông số của
PLC tương ứng.

6.1.2
ặt
cấu hình truyền thông cho
CPU S7-200

Trong cửa sổ STEP 7 - MicroWin


32, nhắp chuột lên biểu tượng
System Block hoặc chọn Menu
View > Component System
Block. Trên hộp đối thoại xuất
hiện (System Block), chọn trang Port(s) để xem
và thay đổi các tham số truyền thông.

6.2. Cách thức S7-200 lưu và phục


hồi dữ liệu (b6)

Trang 32
nguyen ba hoi

6.2.1 Download và Upload

6.2.2 Lưu trữ vùng nhớ M khi mất nguồn

6.2.3 Phục hồi dữ liệu khi có nguồn trở lại

Định nghĩa bộ nhớ dữ liệu cần lưu giữ: Trên đây chúng ta nhận thấy rằng, bộ
nhớ dữ liệu không phải toàn bộ đều được lưu giữ trong EEPROM mà chỉ một
phần, được định nghĩa như là phần “retentive”. Phần này được định nghĩa bằng
cách chọn thực đơn View ®Component®System Block và chọn Tag Retentive
Ranges:

Trang 33
nguyen ba hoi

Chú ý: vùng M mặc định được xem là “non-


retentive”, khi đó không sử dụng đặc điểm
lưu giữ dữ liệu lúc mất điện có nói đến trên
đây. Phần được lưu giữ trong các vùng T
và C (nếu được định nghĩa) là những giá trị
đếm, các bit trạng thái không được lưu giữ.
Trong vùng T chỉ được phép định nghĩa
những timer dạng TONR, không phải TON.

6.3. Mật khẩu (b6)


Tất cả các CPU đời S7-200 đều có khả năng bảo vệ và hạn chế truy nhập bằng
mật khẩu. Có 3 mức hạn chế, trong đó người sử dụng sẽ được toàn quyền nếu có
mật khẩu, nếu không có, người sử dụng sẽ bị hạn chế quyền tùy theo mức được
đặt mật khẩu như trong bảng dưới đây:
Ta có thể thấy thực tế chỉ có
02 mức bảo vệ, mức 1
chính là mức không hạn chế
gì (không có mật khẩu).
Nếu quên mật khẩu, chỉ có
cách xóa bộ nhớ của CPU
và nạp lại chương trình. Lúc
bị xóa bộ nhớ, CPU chuyển
về chế độ STOP, cấu hình
mặc định như khi mới xuất
xưởng trừ địa chỉ CPU, tốc
độ truyền thông và đồng hồ thời gian thực. Cần chú ý điều kiện an toàn khi PLC ở
trong hệ thống vì tất cả các đầu ra sẽ chuyển về “0”. Để xóa, vào menu chính
PLC®Clear... Nếu chương trình có mật khẩu, một hộp thoại sẽ hiện ra hỏi, ta phải
gõ vào mật khẩu xóa (clearplc). Động tác này không xóa chương trình trong
“Cartridge”. Vì chương trình được lưu cùng với mật khẩu nên ta cũng phải nạp lại
chương trình cho cartridge để xóa mật khẩu cũ.
Đặt mật khẩu bằng cách vào menu chính View®Component®System Block và
chọn tag Password.

6.4. Gỡ rối (Debug) (b6)


Vào Menu Debug ®Multiple Scans và chọn
số vòng quét muốn gỡ lỗi.

Trang 34
nguyen ba hoi

6.5. Thông báo và xử lý


lỗi (Troubleshooting)
(b6)
Phần này chỉ dành cho lập
trình viên có kinh nghiệm.
Thông thường lỗi được chia
thành 02 loại chính: nghiêm
trọng và không nghiêm trọng
(fatal errors & non-fatal errors).
Lỗi nghiêm trọng gây ngừng
chương trình và ta phải tiến hành “Reset” (bằng một trong 03 cách: tắt rồi bật
nguồn, chuyển công tắc về STOP rồi bật lên lại, vào menu chính PLC®Power-Up
Reset), lỗi này có thể được thông báo trên đèn LED phía trước CPU. Lỗi không
nghiêm trọng bao gồm lỗi lúc chạy chương trình (run-time errors), lỗi lúc biên dịch
(program-compile errors) và lỗi do chương trình thực hiện. Lỗi không nghiêm trọng
không gây ngừng chương trình, trừ khi được lập trình với lệnh STOP, ví dụ:
Lỗi do chương trình thực
hiện là lỗi gây nên bởi lô gic
của người lập trình. Ta có
thể xử lý các lỗi còn lại với
sự trợ giúp của phương tiện
lập trình (vào menu chính
PLC®information) và tra
mã lỗi trong phụ lục kèm theo (C Error Codes trong System Manual).

Trang 35
nguyen ba hoi

Chương 7 I/O
Các ngõ vào ra chính là các điểm điều khiển của một hệ thống: các ngõ vào phản
ảnh trạng thái các thiết bị như các đầu dò, các công tắc,... và các đầu ra điều khiển
những bộ phận chấp hành như mô tơ, bơm, van,...

7.1. Vào ra số (b3)


7.1.1 Nối dây và chương trình điều khiển

7.1.2 Ví dụ điều khiển motor

Chương trình:

Trang 36
nguyen ba hoi

Trang 37
nguyen ba hoi
7.1.3 Mở rộng

Thêm chuyển mạch giới hạn

Trang 38
nguyen ba hoi

2 motor?

Trang 39
nguyen ba hoi

7.2. Vào ra tương tự (b3)


Giá trị tương tự phổ biến cho S7-200 là
0-10VDC hoặc 4-20mA. Các đại lượng
tương tự có thể là tốc độ, nhiệt độ, trọng
lượng, mức… Khi chuyển sang giá trị thì
thường là giá trị số 12 bit được lưu giữ
trong thanh ghi hay tại các vị trí từ đơn.
Thực nghiệm tính năng Trend View để
xem dạng sóng vào chân tương tự PLC.

7.2.1 Vào tương tự

1 kg = 2,2 lbs
7.2.2 Ví dụ ứng dụng

7.2.3 Ra tương tự

7.3. I/O cục bộ và mở rộng (b3)


Cấu trúc MODULE của S7-200 tạo sự linh hoạt tối đa để giải quyết các bài toán, nó
cho phép chúng ta chọn số đầu vào ra tối ưu về mặt kinh tế. Tăng số ngõ vào ra
bằng các module mở rộng.

Trang 40
nguyen ba hoi
Các module mở rộng này được
cắm nối tiếp nhau vào bên phải
CPU. Địa chỉ các đầu vào ra trên
các module mở rộng được tính
liên tiếp, riêng cho từng loại
(vào, ra, vào tương tự, ra tương
tự) không ảnh hưởng lẫn nhau.
Các đầu vào ra rời rạc được
định địa chỉ chẵn byte, nghĩa là
trên một module phải bắt đầu
bằng x.0, x.1,... còn các đầu vào
ra tương tự được định địa chỉ
theo từ đơn, cách hai, nghĩa là
bằng các số chẵn: AIW0, AIW2, AIW4,... AQW0, AQW2, AQW4,...

7.4. Lọc đầu vào số (b3)


S7-200 có khả năng lọc các đầu vào số
(chỉ các đầu cục bộ) bằng thời gian trễ
để loại trừ hiện tượng nhiễu xung (có thể
chọn từ 0.2 ms đến 12.8 ms). Tất nhiên,
điều đó sẽ làm chậm tín hiệu vào. Chúng
ta có thể đặt thời gian trễ thích hợp cho
từng nhóm 04 đầu vào trong cấu hình
của CPU bằng vào menu chính
View®Component®System Block và
chọn tag Input Filters.

7.5. Lọc đầu vào tương tự (b3)


Các đầu vào tương tự, cũng như các
đầu vào rời rạc, có thể được lọc để
chống hiện tượng nhiễu. Bản chất bộ lọc
của một đầu vào tương tự là phép tính
giá trị trung bình một số hữu hạn các giá
trị lấy mẫu liên tiếp, nhằm giảm tác động
của các giá trị ngoại lai. Tất nhiên tác
động của bộ lọc bao giờ cũng làm chậm
tín hiệu, trong trường hợp này có thể
không thích hợp nếu đầu vào biển đổi
nhanh. S7-200 xử lý vấn đề đó bằng
khái niệm “deadband”: nếu giá trị lấy
mẫu vượt ra ngoài khoảng qui định so
với giá trị trung bình thì bộ lọc không tính
giá trị trung bình nữa mà cập nhật luôn
giá trị mới.

Trong mọi trường hợp, người lập trình có thể bật hay tắt chức năng lọc cho từng
đầu vào theo yêu cầu và cũng có thể đặt thông số chung cho các bộ lọc tương tự
(số giá trị để tính trung bình, deadband) thông qua menu chính
View®Component®System Block và chọn tag Analog Input Filters.
Trang 41
nguyen ba hoi
7.6. Bắt xung vào (b3)
Bên cạnh vấn đề lọc đầu vào, chúng ta có thể nêu vấn đề một cách logic: PLC có
thể bỏ qua những xung quá ngắn ở đầu vào ngoài ý muốn của chúng ta. Bởi vì
chúng ta đã biết CPU chỉ cập nhật các đầu vào mỗi vòng quét một lần. S7-200
khắc phục điểm yếu này bằng chức năng “pulse catch”:

Ta có thể bật hoặc tắt tính năng này cho mỗi


đầu vào cục bộ trong cấu hình CPU từ menu
chính View®Component®System Block và
chọn tag Pulse Catch Bits.

Ví dụ minh họa:

7.7. Bảng đầu ra (b3)


Bảng các đầu ra (output table) qui định
trạng thái cho các đầu ra rời rạc khi CPU
chuyển từ chế độ RUN sang chế độ STOP
(bằng 0, 1 hay giữ nguyên trạng thái). Điều
này rất quan trọng vì mục đích an toàn.
Chúng ta định nghĩa bảng các đầu ra trong
cấu hình của CPU bằng cách chọn menu
chính View®Component®System Block
và chọn tag Output Table.

Trang 42
nguyen ba hoi
7.8. Vào ra tốc độ cao (b5)
Khác với các vi mạch điện tử, các mạch điều khiển tự động thông thường hoạt
động với tốc độ thấp hơn. Tuy nhiên, thỉnh thoảng chúng ta cũng cần ghi nhận và
xử lý những biến đổi tốc độ cao. S7-200 đáp ứng yêu cầu này bằng các đầu vào và
các bộ đếm tốc độ cao cũng như bằng đầu ra xung tốc độ cao.
7.8.1 HSC
HSC: Bộ đếm tốc độ cao.
Các bộ đếm tốc độ cao trong S7-200 có khả năng đếm những tần số đến 20 kHz
với nhiều chế độ hoạt động khác nhau:
· HSC0 và HSC4 hoạt động ở một trong 08 chế độ, có thể đếm các đầu vào một
pha hoặc hai pha.
· HSC1 và HSC2 có 12 chế độ hoạt động, với các đầu vào một pha hoặc hai pha.
· HSC3 và HSC5 là những bộ đếm đơn giản, với một chế độ hoạt động và chỉ
đếm đầu vào một pha.

Xem các bảng tóm tắt về các bộ đếm này bên dưới. Chúng ta nhận thấy rằng nếu
sử dụng HSC0 trong những chế độ từ 3 đến 11 thì không thể sử dụng HSC3 bởi vì
HSC0 và HSC3 cả hai đều dùng đầu vào I0.1. Tương tự như thế đối với HSC4 và
HSC5. I0.0 đến I0.3 còn có thể được sử dụng làm các đầu vào gây ngắt, cần chú ý
không sử dụng chúng vừa làm các đầu vào gây ngắt vừa làm các đầu vào bộ đếm
tốc độ cao. Nếu HSC0 đang hoạt động ở chế độ 2, chỉ sử dụng I0.0 và I0.2 thì I0.1
vẫn có thể được khai thác bởi ngắt hay HSC3.

Hai bộ đếm HSC1 và HSC2 hoạt động hoàn toàn độc lập với nhau, có thể khai thác
tối đa cả hai cùng một lúc mà không hề ảnh hưởng lẫn nhau.

Trang 43
nguyen ba hoi
Ngõ ra xung tốc độ cao:
S7-200 cho phép sử dụng Q0.0 và Q0.1 như những đầu ra phát xung tốc độ cao,
dạng PTO hoặc PWM. Chi tiết xem chương 8, sau đây là vài nét sơ lược:
7.8.2 PTO
Xung kiểu PTO (Pulse Train
Output) là sóng vuông, 50%
chu kỳ có giá trị 0, 50% chu
kỳ có giá trị 1. Có thể định
nghĩa số xung phát ra nằm
trong khoảng từ 1 xung đến
4.294.967.295 xung. Chu kỳ
có thể xác định theo độ phân giải là us hoặc ms với giá trị từ 50us đến 65535us
hay từ 2 ms đến 65535 ms. Lưu ý nên chọn chu kỳ là số chẵn (chu kỳ lẻ có thể gây
biến dạng sóng). S7-200 còn cho phép tạo dãy xung PTO với chu kỳ biến thiên
theo qui luật tùy biến, điều khiển động cơ bước chẳng hạn.
7.8.3 PWM
Xung kiểu PWM (Pulse Width Modulation)
có chu kỳ cố định và độ rộng xung (thời
gian có giá trị bằng 1) thay đổi. Cả hai giá
trị này đều có thể xác định theo độ phân
giải là us hoặc ms. Chu kỳ xung có thể nằm
trong khoảng từ 50us đến 65535us hay từ
2ms đến 65535 ms. Độ rộng xung có thể nằm trong khoảng từ 0us đến 65535us
hay từ 0ms đến 65535 ms. Nếu độ rộng xung bằng chu kỳ, đầu ra = 1. Nếu độ rộng
xung bằng 0, đầu ra = 0.

7.9. Đinh chỉnh tương tự (b5)


S7-200 CPU có 1 hoặc 2 đinh chỉnh tương tự phía trước. Ta có thể vặn chúng theo
chiều kim đồng hồ hay ngược lại trong khoảng 270 (để tăng hay giảm giá trị tương
ứng với chúng là các byte trong SMB28 và SMB29. Như vậy những giá trị này có
thể thay đổi trong khoảng từ 0 đến 255 và chương trình có thể sử dụng chúng như
những giá trị chỉ đọc, thay đổi được theo sự can thiệp từ ngoài chương trình. Ví dụ:

Trang 44
nguyen ba hoi

Chương 8 Vòng quét


Các lập trình viên trên máy vi tính thường quen với các loại cấu trúc chương trình
như: chương trình kiểu dòng lệnh (Assembler, Basic); chương trình kiểu cấu trúc
(C, Pascal); chương trình hướng đối tượng (Visual Basic, C, Pascal for Windows).
Các kiểu chương trình này thông thường hoặc kết thúc sau khi thực hiện, hoặc tiếp
tục một cấu trúc vòng lặp nào đó chờ tương tác với người sử dụng. Chương trình
trong PLC cũng có thể bao gồm các cấu trúc vòng lặp nhưng không phải với mục
đích như trên. Chương trình trong PLC nhìn chung giống dạng chương trình kiểu
dòng lệnh, ở đó các lệnh được thực thi một cách tuần tự. Tuy nhiên một chương
trình trong PLC sẽ được tự động thực hiện một cách tuần hoàn. Cứ một lần
chương trình được thực hiện gọi là một vòng quét (SCAN).

Vòng quét khi CPU ở chế độ RUN:

Theo hình vẽ chúng ta dễ dàng nhận thấy những công đoạn chính của một vòng
quét:
· Đầu tiên là cập nhật các đầu vào. Đầu mỗi vòng quét, CPU đọc trạng thái
các đầu vào vật lý (các đầu vào rời rạc hiện hữu thực tế trên PLC) và ghi vào “vũng
ảnh các đầu vào”. Đây là một vùng nhớ, mỗi bit trong vùng này là “ảnh” của một
đầu vào, “ảnh” được cập nhật trạng thái từ đầu vào vật lý tương ứng chính ở trong
công đoạn này. Về sau trong vòng quét, chương trình hiểu các giá trị đầu vào là
các giá trị ảnh này, trừ những lệnh truy cập giá trị “tức khắc” (immediate). Lưu ý,
các đầu vào tương tự (analog) chỉ được cập nhật như thế nếu bộ lọc (filter) tương
ứng hoạt động. Trong trường hợp ngược lại, chương trình sẽ đọc trực tiếp từ đầu
vào tương tự vật lý mỗi khi truy cập. Cụ thể hơn về các đầu vào ra sẽ được nói đến
ở chương 6.
· Tiếp theo là thực hiện chương trình. thực thi các lệnh trong chương trình
chính một cách tuần tự từ đầu đến cuối. Chương trình xử lý ngắt được thực hiện
không liên quan đến vòng quét mà bất cứ lúc nào xảy ra sự kiện ngắt liên quan.
Chỉ những lệnh vào ra “tức khắc” mới truy cập đến các đầu vào ra vật lý.
· Thực hiện các yêu cầu truyền thông: CPU xử lý các thông tin nhận được
trên cổng truyền thông.

Trang 45
nguyen ba hoi
· CPU tự kiểm tra: CPU tự kiểm tra các thông số của mình, bộ nhớ chương
trình (chỉ trong chế độ RUN) và trạng thái các module nếu có.
· Cuối cùng là ghi các đầu ra: CPU ghi giá trị “vùng ảnh các đầu ra” ra các
đầu ra vật lý. Vùng ảnh này được cập nhật theo chương trình trong quá trình thực
hiện chương trình. Khi CPU chuyển từ chế độ RUN sang chế độ STOP, các đầu ra
có thể có giá trị như trong “bảng ra”, hay giữ nguyên giá trị. Thông thường mặc
định là các đầu ra trở về “0”. Riêng các đầu ra tương tự giữ nguyên giá trị được
cập nhật sau cùng.

Nếu có sử dụng ngắt, các chương trình xử lý ngắt được lưu như một phần của
chương trình trong bộ nhớ. Tuy nhiên chúng không được thực hiện như một phần
của vòng quét bình thường. Chúng được thực hiện khi sự kiện tương ứng xảy ra,
bất kỳ lúc nào trong vòng quét, theo nguyên tắc ngắt đến trước được xử lý trước,
tất nhiên có tính đến mức độ ưu tiên của các loại ngắt khác nhau.

Như trên đã nêu, trong quá trình thực hiện, chương trình truy cập đến các đầu vào
và đầu ra thông qua vùng ảnh của chúng. Vùng ảnh các đầu vào được cập nhật từ
các đầu vào vật lý một lần trong một vòng quét, ngay ở đầu vòng quét. Vùng ảnh
các đầu ra cũng cập nhật ra các đầu ra vật lý cuối mỗi vòng quét. Nguyên tắc này
đảm bảo sự đồng bộ cũng như tính ổn định, cân bằng cho hệ thống; quá trình thực
hiện chương trình nhanh hơn; khả năng linh động cho phép truy nhập các đầu vào
ra chung như tập hợp các bit, byte hay từ đơn, từ kép.

Các lệnh vào ra trực tiếp (tức khắc) cho phép khai thác trạng thái các đầu vào vật
lý cũng như xuất ra các đầu ra vật lý ngay thời điểm thực hiện lệnh, không phụ
thuộc và vòng quét. Lệnh đọc đầu vào trực tiếp không ảnh hưởng gì đến vùng ảnh
các đầu vào. Bit ảnh đầu ra được cập nhật đồng thời với lệnh xuất trực tiếp ra đầu
ra đó.

CPU coi các lệnh đối với các đầu vào ra tương tự như các lệnh vào ra trực tiếp, trừ
trường hợp ngoại lệ đầu vào tương tự có bộ lọc hoạt động.

Vòng quét khi CPU ở chế độ STOP:

Trang 46
nguyen ba hoi

Trang 47
nguyen ba hoi

Chương 9 Bộ nhớ dữ liệu và cách định địa chỉ


S7-200 PLC quản lý bộ nhớ dữ liệu theo từng vùng riêng biệt nhằm xử lý nhanh
hơn và hiệu quả hơn. Đó là các vùng I, Q, V, M, S, SM, L, T, C, HC, AC. Ta sẽ xem
xét từng vùng cụ thể ở phần sau.

9.1. Định địa chỉ trực tiếp


Trong các vùng cơ bản I, Q, V, M, S, SM, L ta có thể truy cập đến từng bit, từng
byte, từng từ đơn (word) hoặc từng từ kép (double word) dựa trên địa chỉ cơ sở là
địa chỉ byte.

Cách định địa chỉ một bit: trước hết là tên vùng (I, Q, V, M, S, SM, L), tiếp theo là
địa chỉ byte trong vùng, cuối cùng sau dấu chấm là địa chỉ bit ở trong byte (từ 0
đến 7).

Muốn truy cập đến một byte trong một vùng nào đó, trước hết phải định vùng (I, Q,
V, M, S, SM, L), tiếp theo là B (đặc trưng cho byte) và địa chỉ byte trong vùng. Địa
chỉ một từ đơn hoặc một từ kép cũng bắt đầu bằng tên vùng (I, Q, V, M, S, SM, L),
tiếp theo là W (word) hay D (double word) và sau cùng là địa chỉ byte đầu tiên trong
từ (byte cao nhất). (Xem các ví dụ phía trên). Tuỳ theo kích thước ô nhớ được truy
cập (dung lượng chiếm trong bộ nhớ) mà con số sử dụng sẽ bị giới hạn, ví dụ với
các số nguyên:

Riêng giới hạn


cho số thực
(32 bit),
dương từ
+1.175495e-
38 đến
+3.402823e+3
8, âm từ -
1.175495e-38 đến -3.402823e+38.
Đối với các vùng thiết bị (T, C, HC, AC), ta truy cập đến bằng tên vùng và địa chỉ
thiết bị. Sau đây ta xét đến từng vùng cụ thể:
9.1.1 Vùng ảnh các đầu vào I
Như đã nêu, CPU lấy mẫu các đầu vào mỗi vòng quét một lần và lưu giá trị vào
vùng ảnh. Sau đó chương trình truy nhập vào vùng ảnh này, đến từng bit, từng
byte, từng từ đơn hoặc từng từ kép bằng cách định địa chỉ ô nhớ tương ứng:
Bit I[byte address].[bit address] I0.1

Trang 48
nguyen ba hoi
Byte, Word, Double Word I[size][starting byte address] IB4
trong đó: bit address = từ 0 đến 7
byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể
size = B với byte; W với từ đơn; D với từ kép
9.1.2 Vùng ảnh các đầu ra Q
Chương trình truy xuất các đầu ra thông qua vùng ảnh các đầu ra, vùng ảnh này
được ghi ra các đầu ra vật lý mỗi vòng quét một lần ở cuối vòng quét. Chương
trình truy xuất các đầu ra có thể như một bit, một byte hay một từ đơn, từ kép:
Bit Q[byte address].[bit address] Q1.2
Byte, Word, Double Word Q[size][starting byte address] QW6
trong đó: bit address = từ 0 đến 7
byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể
size = B với byte; W với từ đơn; D với từ kép
9.1.3 Vùng nhớ các biến V
Vùng này có thể được sử dụng để lưu các giá trị trung gian, bit, byte, từ đơn hay từ
kép:
Bit V[byte address].[bit address] V100.7
Byte, Word, Double Word V[size][starting byte address] VD10
trong đó: bit address = từ 0 đến 7
byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể
size = B với byte; W với từ đơn; D với từ kép
9.1.4 Vùng nhớ các bit M
Vùng M có tên là vùng nhớ các bit, thực tế chúng ta có thể sử dụng y như vùng V
(thường dung lượng vùng M nhỏ hơn):
Bit M[byte address].[bit address] M0.3
Byte, Word, Double Word M[size][starting byte address] MW4
trong đó: bit address = từ 0 đến 7
byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể
size = B với byte; W với từ đơn; D với từ kép
9.1.5 Vùng nhớ các rơ le điều khiển tuần tự S
Vùng này thường được sử dụng để điều khiển quá trình thực hiện các công
đoạn chương trình, cách truy cập giống như các vùng V và M:
Bit S[byte address].[bit address] S0.0
Byte, Word, Double Word S[size][starting byte address] SB4
trong đó: bit address = từ 0 đến 7
byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể
size = B với byte; W với từ đơn; D với từ kép
9.1.6 Vùng các bit đặc biệt SM
Mỗi ô nhớ trong vùng SM (bit, byte, từ đơn, từ kép) đều có một ý nghĩa gì đó đối
với hệ thống. Khi đọc trạng thái ô nhớ từ vùng SM, ta biết thông tin về PLC và khi
ghi dữ liệu vào đó, ta có thể thay đổi tham số, cấu hình của PLC. Cụ thể hơn xem
phụ lục (Appendix C). Tuy gọi là các bit đặc biệt nhưng ta có thể truy nhập như bit,
cả như byte, từ đơn hay từ kép:

Trang 49
nguyen ba hoi
Bit SM[byte address].[bit address] SM0.1
Byte, Word, Double Word SM[size][starting byte address] SMB86
trong đó: bit address = từ 0 đến 7
byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể
size = B với byte; W với từ đơn; D với từ kép
9.1.7 Vùng nhớ cục bộ L
Về mặt sử dụng, vùng L giống hệt vùng V nhưng chỉ có dung lượng 64 byte. Chú ý
trong LAD và FBD, 04 byte cuối được dành cho mục đích riêng nên chỉ còn 60 byte
cho chương trình. Trong STL có thể sử dụng cả 64 byte nhưng cũng có khuyến
cáo không nên sử dụng 04 byte cuối.
Khác nhau cơ bản giữa vùng L và vùng V rất quan trọng: trong khi các vùng được
nêu đến thời điểm này đều có giá trị toàn cục thì vùng L chỉ có giá trị cục bộ (local).
Điều đó có nghĩa là chương trình chính có 64 byte vùng nhớ L riêng của mình, mỗi
chương trình con cũng có riêng một vùng L với dung lượng 64 byte và mỗi chương
trình xử lý ngắt cũng vậy. Nội dung bit nhớ L3.1 trong chương trình chính chẳng có
gì chung với bit nhớ L3.1 trong chương trình con số 1. Chương trình con không thể
truy cập vùng L của chương trình chính và ngược lại.
Vùng L có giá trị ngẫu nhiên khi chưa được ghi vào, vì vậy phải cẩn thận lúc sử
dụng. Có thể sử dụng ô nhớ trong vùng L làm thanh trỏ chứa các địa chỉ gián tiếp
nhưng không thể truy nhập vùng L một cách gián tiếp.
Cách truy nhập vùng L giống truy nhập vùng V:
Bit L[byte address].[bit address] L0.0
Byte, Word, Double Word L[size][starting byte address] LB33
trong đó: bit address = từ 0 đến 7
byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể
size = B với byte; W với từ đơn; D với từ kép
9.1.8 Vùng các bộ định thời T
Các bộ định thời (timers) được coi là những thiết bị đếm thời gian. S7-200 có 03
loại timer với độ phân giải khác nhau: 1ms, 10 ms và 100ms
Thời gian đếm được = số đang đếm * độ phân giải.
Mỗi timer đã được xác định cố định một độ phân giải nào đó trong 03 loại nói trên,
cách định địa chỉ rất đơn giản:
T[timer number] Ví dụ: T24
trong đó: timer number = từ 0 đến giới hạn bởi từng loại CPU cụ thể
Một địa chỉ như thế có thể chỉ một giá trị 16 bit có dấu là giá trị mà timer đó đang
đếm; hoặc chỉ bit trạng thái của timer. Chương trình tự phân biệt điều này bằng
từng lệnh cụ thể: lệnh có toán hạng kiểu từ đơn sẽ hiểu đó là địa chỉ giá trị timer,
ngược lại lệnh có toán hạng kiểu bit sẽ coi đó là địa chỉ bit trạng thái. Xem các ví
dụ sau:

Trang 50
nguyen ba hoi

9.1.9 Vùng các bộ đếm C


Các bộ đếm trong S7-200 đếm sự thay đổi đầu vào của chúng từ mức thấp lên
mức cao. Chúng có thể đếm lên (tiến), đếm xuống (lùi) hoặc cả đếm tiến lẫn đếm
lùi. Cách định địa chỉ một bộ đếm (counter):
C[counter number] Ví dụ: C20
trong đó: counter number = từ 0 đến giới hạn bởi từng loại CPU cụ thể.

Một địa chỉ như thế có thể chỉ một giá trị 16 bit có dấu là giá trị mà counter đó đang
đếm; hoặc chỉ bit trạng thái của counter. Chương trình tự phân biệt điều này bằng
từng lệnh cụ thể: lệnh có toán hạng kiểu từ đơn sẽ hiểu đó là địa chỉ giá trị counter,
ngược lại lệnh có toán hạng kiểu bit sẽ coi đó là địa chỉ bit trạng thái.
9.1.10 Vùng các đầu vào tương tự AI
S7-200 chuyển các giá trị tương tự thành những giá trị số 16 bit nên vùng này chỉ
được truy nhập đến như những từ đơn:
AIW[starting byte address] Ví dụ: AIW4
trong đó: starting byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể nhưng luôn luôn
là số chẵn (0, 2, 4, 6, . . .).

Chú ý đây là các giá trị chỉ đọc (không ghi vào đó được).
9.1.11 Vùng các đầu ra tương tự AQ
S7-200 chuyển những giá trị số 16 bit thành các giá trị ra tương tự nên vùng này
cũng chỉ được truy nhập đến như những từ đơn:
Trang 51
nguyen ba hoi
AQW[starting byte address] Ví dụ: AQW4
trong đó: starting byte address = từ 0 đến giới hạn bởi từng loại CPU cụ thể nhưng luôn luôn
là số chẵn (0, 2, 4, 6, . . .).

Chú ý đây là các giá trị chỉ ghi (không có ý nghĩa đọc từ đó).
9.1.12 Các accumulator AC
S7-200 bao gồm 04 accumulator dung lượng 32 bit: AC0, AC1, AC2 và AC3. Tuy
nhiên có thể dùng accumulator để chứa dữ liệu byte, từ đơn hoặc từ kép. Chương
trình tự phân biệt điều này bằng lệnh cụ thể (đòi hỏi toán hạng là kiểu byte, từ đơn
hay từ kép) như các ví dụ sau:

Các accumulator được sử dụng như những thanh ghi (registers) đọc / ghi đa năng.
9.1.13 Các bộ đếm tốc độ cao HC
Bộ đếm tốc độ cao trong S7-200 dùng để đếm những đầu vào thay đổi nhanh (tần
số cao) độc lập với vòng quét. Địa chỉ bộ đếm tốc độ cao chỉ đến giá trị 32 bit có
dấu là con số bộ đếm đang đếm:
HC[high- speed counter number] Ví dụ: HC1
trong đó: high-speed counter number = từ 0 đến giới hạn bởi từng loại CPU cụ thể (1,2 hoặc
3).
Con số này là giá trị chỉ đọc, luôn luôn 32 bit.

9.1.14 Các hằng số


Nhiều lệnh trong S7-200 có thể sử dụng các hằng số dưới các dạng khác nhau,
CPU luôn lưu bằng dạng nhị phân. S7-200 CPU không lưu giữ dạng dữ liệu, ví dụ
Trang 52
nguyen ba hoi
lệnh ADD_I luôn hiểu giá trị đã lưu vào VW100 là số nguyên 16 bit có dấu trong khi
lệnh WOR_W lại hiểu đúng giá trị đó trong VW100 là số nguyên 16 bit không dấu.
Sau đây là một vài ví dụ về các kiểu hằng số:
Decimal constant: 20047
Hexadecimal constant: 16#4E4F
ASCII constant: ’Text goes between single quotes.’
Real or floating-point format: +1.175495E-38 (positive) -1.175495E-38
(negative)
Binary format: 2#1010_0101_1010_0101

9.2. Định địa chỉ gián tiếp


S7-200 cho phép truy nhập các ô nhớ trong các vùng I, Q, V, M, S, T (chỉ giá trị 16
bit), C (chỉ giá trị 16 bit) một cách gián tiếp, nghĩa là dùng một ô nhớ khác làm
thanh trỏ trỏ đến ô nhớ này. Lưu ý không thể truy cập một bit bằng cách gián tiếp.
Trong S7-200, thanh trỏ chỉ có thể là một ô nhớ 32 bit (từ kép) trong một trong
những vùng V, L hay AC (trừ AC0). Ta có thể tạo thanh trỏ bằng lệnh MOVD với
toán tử & và sử dụng thanh trỏ bằng toán tử *. Ví dụ:
Chúng ta có
thể sử dụng
các lệnh số
học đơn giản
như cộng hoặc
tăng 1 dành
cho từ kép
(ADD_D hoặc INC_D) để thay đổi giá trị thanh trỏ. Tuy nhiên phải đặc biệt chú ý
đến kích cỡ dữ liệu mà thanh trỏ đó trỏ đến:
Nếu một thanh trỏ đang trỏ đến một byte, nó có thể trỏ đến byte kế tiếp bằng cách
tăng giá trị nó lên 01 đơn vị.
Nếu một thanh trỏ đang trỏ đến một từ đơn, nó có thể trỏ đến từ đơn kế tiếp bằng
cách tăng giá trị nó lên 02 đơn vị.
Nếu một thanh trỏ đang trỏ đến một từ kép, nó có thể trỏ đến từ kép kế tiếp bằng
cách tăng giá trị nó lên 04 đơn vị.
Ví dụ:

Trang 53
nguyen ba hoi
9.3. Không gian địa chỉ các vùng nhớ
Địa chỉ vùng nhớ đối với các CPU họ 22X (họ CPU hiện tại)

Khả năng CPU 226 &


Vùng nhớ CPU221 CPU222 CPU224
truy cập CPU226XM
Bit (Byte.bit) V 0.0 - 2047.7 0.0 - 2047.7 0.0 - 5119.7 0.0 - 10239.7
I 0.0 - 15.7 0.0 - 15.7 0.0 - 15.7 0.0 - 15.7
Q 0.0 - 15.7 0.0 - 15.7 0.0 - 15.7 0.0 - 15.7
M 0.0 - 31.7 0.0 - 31.7 0.0 - 31.7 0.0 - 31.7
SM 0.0 - 179.7 0.0 - 299.7 0.0 - 549.7 0.0 - 549.7
S 0.0 - 31.7 0.0 - 31.7 0.0 - 31.7 0.0 - 31.7
T 0 - 255 0 - 255 0 - 255 0 - 255
C 0 - 255 0 - 255 0 - 255 0 - 255
L 0.0 - 59.7 0.0 - 59.7 0.0 - 59.7 0.0 - 59.7
Byte VB 0 - 2047 0 - 2047 0 - 5119 0 - 10239
IB 0 - 15 0 - 15 0 - 15 0 - 15
QB 0 - 15 0 - 15 0 - 15 0 - 15
MB 0 - 31 0 - 31 0 - 31 0 - 31
SMB 0 - 179 0 - 299 0 -549 0 - 549
SB 0 - 31 0 - 31 0- 31 0 - 31
LB 0 - 59 0 - 59 0 - 59 0 - 59
AC 0-3 0-3 0-3 0–3
Word VW 0 - 2046 0 - 2046 0 - 5118 0 - 10238
IW 0 - 14 0 - 14 0 - 14 0 - 14
QW 0 - 14 0 - 14 0 - 14 0 - 14
MW 0 - 30 0 - 30 0 - 30 0 - 30
SMW 0 - 178 0 - 298 0 - 548 0 - 548
SW 0 - 30 0 - 30 0 - 30 0 - 30
T 0 - 255 0 - 255 0 - 255 0 - 255
C 0 - 255 0 - 255 0 - 255 0 - 255
LW 0 - 58 0 - 58 0 - 58 0 - 58
AC 0-3 0-3 0-3 0-3
AIW 0 - 30 0 - 30 0 - 62 0 - 62
AQW 0 - 30 0 - 30 0 - 62 0 – 62
Double Word VD 0 - 2044 0 - 2044 0 - 5116 0 - 10236
ID 0 - 12 0 - 12 0 - 12 0 - 12
QD 0 - 12 0 - 12 0 - 12 0 - 12
MD 0 - 28 0 - 28 0 - 28 0 - 28
SMD 0 - 176 0 - 296 0 - 546 0 - 546
SD 0 - 28 0 - 28 0 - 28 0 - 28
LD 0 - 56 0 - 56 0 - 56 0 - 56
AC 0-3 0-3 0-3 0-3
HC 0-5 0-5 0-5 0–5

Địa chỉ vùng nhớ đối với các CPU họ 21X (họ CPU cũ)

Khả năng Vùng nhớ CPU 210 CPU 212 CPU 214 CPU 215 CPU 216
truy cập
Bit (Byte.bit) V 0.0 - 1023.7 0.0 - 4095.7 0.0 - 5119.7 0.0 - 5119.7
I 0.0 - 0.3 0.0 - 7.7 0.0 - 7.7 0.0 - 7.7 0.0 - 7.7
Q 0.0 - 0.3 0.0 - 7.7 0.0 - 7.7 0.0 - 7.7 0.0 - 7.7
M 0.0 - 5.7 0.0 - 15.7 0.0 - 31.7 0.0 - 31.7 0.0 - 31.7
SM 0.0 - 1.7 0.0 - 45.7 0.0 - 94.7 0.0 - 194.7 0.0 - 194.7
T 0 - 63 0 - 127 0 - 255 0 - 255
Trang 54
nguyen ba hoi
C 0 - 63 0 - 127 0 - 255 0 - 255
S 0.0 - 7.7 0.0 - 15.7 0.0 - 31.7 0.0 - 31.7
Byte VB 0 - 1023 0 - 4095 0 - 5119 0 - 5119
IB 0-7 0-7 0-7 0-7
QB 0-7 0-7 0-7 0-7
MB 0 - 15 0 - 31 0 - 31 0 - 31
SMB 0 - 45 0 - 94 0 - 194 0 - 194
AC 0-3 0-3 0-3 0-3
SB 0-7 0 - 15 0 - 31 0 – 31
Word VW 0 - 1022 0 - 4094 0 - 5118 0 - 5118
IW 0-6 0-6 0-6 0-6
QW 0-6 0-6 0-6 0-6
MW 0-4 0 - 14 0 - 30 0 - 30 0 - 30
SMW 0-2 0 - 44 0 - 93 0 - 193 0 - 193
T 0-3 0 - 63 0 - 127 0 - 255 0 - 255
C 0-3 0 - 63 0 - 127 0 - 255 0 - 255
AC 0-3 0-3 0-3 0-3
AIW 0 - 30 0 - 30 0 - 30 0 - 30
AQW 0 - 30 0 - 30 0 - 30 0 - 30
SW 0-6 0 - 14 0 - 30 0 – 30
Double Word VD 0 - 1020 0 - 4092 0 - 5116 0 - 5116
ID 0-4 0-4 0-4 0-4
QD 0-4 0-4 0-4 0-4
MD 0 - 12 0 - 28 0 - 28 0 - 28
SMD 0 - 42 0 - 91 0 - 191 0 - 191
AC 0-3 0-3 0-3 0-3
HC 0-2 0-2 0–2

9.4. Bảo toàn dữ liệu


S7-200 cung cấp nhiều khả năng cho phép lưu giữ chương trình, dữ liệu cũng như
cấu hình hệ thống trong những trường hợp mất nguồn cung cấp:
§ CPU có bộ nhớ kiểu EEPROM để lưu toàn bộ chương trình, cấu hình và phần dữ
liệu quan trọng nhất.
§ Bộ nhớ RAM được trang bị “super capacitor” có thể giữ nguyên vẹn thông tin một
thời gian dài sau khi mất nguồn nuôi. Tuỳ loại CPU, thời gian đó có thể kéo dài
vài ngày.
Super Capacitor 72h:

§ Ta có thể chọn gắn thêm “cartridge” chứa pin để kéo dài thời gian nói trên. Pin sẽ
giữ dữ liệu trong RAM sau khi “super capacitor” cạn.
Trang 55
nguyen ba hoi

Trang 56
nguyen ba hoi

Chương 10 Timer và Counter

10.1. Các loại timer (b3)

Mạch timer dây nối

10.2. TON (b3)

Trang 57
nguyen ba hoi

Bài thực hành: Đèn nhấp nháy tự động

10.3. TONR (b4)

Trang 58
nguyen ba hoi

10.4. TOFF (b4)

Trang 59
nguyen ba hoi
10.5. Bài tập Timer (b4)
Các bài thực hành liên quan: Điều
khiển đèn nhấp nháy, bơm định
lượng, điều khiển hệ thống ATS,
đèn giao thông, băng tải, trộn phối
liệu, hóa chất, thang nâng hàng,
ATS.

10.6. Chú ý khi dùng Timer


với độ phân giải khác nhau
(b4)
Xem giáo trình tập lệnh.

10.7. Counter (b5)

10.8. Counter tốc độ cao (b5)


6 bộ đếm tốc độ cao với CPU224: HSC0 à HSC5.

Các ví dụ:
Trang 60
nguyen ba hoi

Trang 61
nguyen ba hoi

Chương 11 Giải bài toán có cấu trúc


11.1. GBT bằng giản đồ thời gian (Timing diagram)
Các bài toán handicap door, pulse.

11.2. GBT bằng lưu đồ (flowchart) và các bit tuần tự (sequence


bits)
Chú giải các dạng kí hiệu khi xây dựng lưu đồ.
Các bài toán tank filler, garage door controller.

11.3. GBT bằng sơ đồ trạng thái (state diagram)


Các bài toán garage door controller, coffee machine, traffic light controller.

11.4. Các lệnh còn lại trong tập lệnh


Xem giáo trình tập lệnh.

Trang 62
nguyen ba hoi

Chương 12 Ngắt
3 nguồn tạo ngắt:
ç Ngắt truyền thông
ç Ngắt I/O
ç Ngắt thời gian

Các lệnh cho phép ngắt toàn cục (ENI), cấm ngắt toàn cục
(DISI), đính kèm (ATCH), giải đính kèm (DTCH), lệnh quay
về từ CT con ngắt (RETI)

Trang 63
nguyen ba hoi

Trang 64
nguyen ba hoi

Chương 13 PID, Freeport


13.1. PID
Xem chi tiết trong giáo trình tập lệnh.

13.2. Freeport
Các câu lệnh
Transmit (XMT) và
Receive (RCV) cho
phép giao tiếp với các
thiết bị bên ngoài như
máy in, modem, máy
tính thông qua cổng
truyền thông.

Trang 65
nguyen ba hoi
Chương 14 Các phương thức truyền thông
Truyền thông là phần khá phức tạp trong việc làm chủ PLC. Điều quan trọng là
chúng ta phải nắm rõ các kiểu cấu trúc mạng khác nhau của các PLC, các phương
thức truyền thông được sử dụng và làm chủ tất cả các thành phần cấu thành nên
mạng. Chúng ta không đi sâu vào chi tiết trong tài liệu này mà chỉ điểm qua những
nét chính.
Trước hết, ta phân biệt một số mô hình mạng:
· Mạng đơn chủ (Single Master)
· Mạng đa chủ (Multiple Master)
· Sử dụng Modem 10 bit nối 01 chủ với 01 PLC S7-200 hoạt động như trạm
(Slave)
· Sử dụng Modem 11 bit trong mạng đơn chủ
Ví dụ về cấu hình mạng:

Trong những thành phần tham gia mạng, các CPU có thể hoạt động như chủ hoặc
như trạm; TD 200 là thiết bị chủ; thiết bị lập trình hoặc máy vi tính cài STEP 7 cũng
là thiết bị chủ. Phần mềm STEP 7 - Micro / Win 32 được thiết kế chỉ kết nối được
với một CPU S7-200 tại một thời điểm, tuy nhiên nó có thể kết nối tới bất cứ CPU
nào trong mạng.
Các phương thức truyền thông chính:
· Điểm đối điểm: Point-to-Point Interface (PPI)
· Đa điểm: Multipoint Interface (MPI)
· PROFIBUS (Process Field Bus)
Các phương thức này đều đặt cơ sở trên cấu trúc OSI (Open System
Interconnection) 7 lớp. Các phương thức PPI và MPI cũng sử dụng nguyên lý
mạch hỏi vòng (Token ring), phù hợp với chuẩn PROFIBUS đã được qui định trong
bộ chuẩn châu Âu EN 50170.
Những phương thức trên đều là bất đồng bộ, đơn vị cơ sở là ký tự với 01 start bit,
08 data bit, even parity và 01 stop bit. Khung dữ liệu bao gồm những ký tự đặc biệt
mở đầu và kết thúc, địa chỉ nguồn (nơi gửi) và đích (nơi đến), độ dài dữ liệu và
“checksum”. Cả ba phương thức có thể cùng hoạt động chung trên một mạng, chỉ
cần điều kiện cùng tốc độ truyền (baud rate).
Mạng theo chuẩn PROFIBUS sử dụng đường truyền là những cặp dây xoắn theo
chuẩn RS-485. Chuẩn đường truyền này cho phép nối tới 32 thiết bị trên một bộ
phận (segment). Khoảng cách giữa hai điểm xa nhất trong một bộ phận như vậy,
tùy theo tốc độ đường truyền sử dụng, có thể lên đến 1200 m. Các bộ phận lại có
thể nối với nhau qua những “repeater” để tăng số thiết bị trong mạng cũng như
khoảng cách hoạt động cho đến 9600 m tùy theo tốc độ truyền.
Trang 66
nguyen ba hoi
Các phương thức này phân biệt 02 loại thiết bị: chủ và tớ (trạm). Thiết bị chủ có thể
gửi yêu cầu lên mạng trong khi trạm chỉ trả lời, không bao giờ tự gửi thông tin lên
mạng.
Số địa chỉ tối đa là 127 (0 đến 126) với nhiều nhất là 32 thiết bị chủ. Mỗi thiết bị
trên mạng phải có địa chỉ khác nhau. Mặc định, thiết bị lập trình (hay PC) được
định địa chỉ 0, các thiết bị giao diện như TD 200, OP3, OP7, ... có địa chỉ là 1 còn
PLC được định địa chỉ mặc định là 2.

14.1. PPI
PPI là phương thức chủ / tớ. Các thiết bị chủ (CPU, thiết bị lập trình, TD 200) gửi
yêu cầu đến các trạm và các trạm trả lời. Các trạm không bao giờ tự gửi thông tin
lên mạng mà chỉ chờ nhận các yêu cầu của các thiết bị chủ để trả lời. Tất cả các
CPU S7-200 đều có thể hoạt động như trạm trong mạng.
Một số CPU có thể hoạt động như thiết bị chủ trong mạng khi ở chế độ RUN, nếu
chương trình bật chế độ PPI master (với SMB30). Một khi ở trong chế độ này, ta có
thể đọc hay viết vào một CPU khác bằng các lệnh NETR và NETW. Trong khi đó
CPU vẫn trả lời các thiết bị chủ khác như một trạm thông thường. PPI không hạn
chế số thiết bị chủ được phép nối với một trạm, tuy nhiên như trên đã nêu, số thiết
bị chủ tối đa trong một mạng là 32.

14.2. MPI
MPI có thể là phương thức chủ / tớ hay chủ / chủ. Cách thức hoạt động phụ thuộc
vào loại thiết bị. Chẳng hạn nếu thiết bị đích là CPU S7-300 thì MPI tự động trở
thành chủ / chủ bởi vì các CPU S7-300 là các thiết bị chủ trong mạng. Nhưng nếu
đích là CPU S7-200 thì MPI lại là chủ / tớ vì các CPU S7-200 lúc đó được coi như
là trạm.
Khi hai thiết bị trong mạng kết nối với nhau bằng phương thức MPI, chúng tạo nên
một liên kết riêng, không thiết bị chủ nào khác có thể can thiệp vào liên kết này.
Thiết bị chủ trong hai thiết bị kết nối thường giữ mối liên kết đó trong một khoảng
thời gian ngắn hoặc hủy liên kết vô thời hạn (giải phóng đường truyền).
Những liên kết như trên đòi hỏi một tài nguyên nhất định trong CPU nên mỗi CPU
chỉ có thể hỗ trợ một số lượng hữu hạn các liên kết như vậy. Thông thường một
CPU cho phép 04 liên kết, 02 trong đó một dành riêng cho thiết bị lập trình hay PC,
một dành cho giao diện. Điều này cho phép lúc nào cũng có thể kết nối ít nhất một
thiết bị lập trình hoặc PC, một giao diện với CPU. Những thiết bị chủ khác (như các
CPU khác chẳng hạn) không thể kết nối qua các liên kết dành riêng này.
Các CPU S7-300 và S7-400 có thể kết nối với các CPU S7-200 bằng một trong hai
liên kết còn lại của CPU S7-200 và đọc hay ghi dữ liệu vào CPU S7-200 với các
lệnh XGET và XPUT.

14.3. PROFIBUS
Phương thức PROFIBUS được thiết kế cho việc truyền thông tốc độ cao với các
thiết bị phân phối vào ra, thường cũng được gọi là các đầu vào ra từ xa (remote
I/O). Những thiết bị như vậy được nhiều nhà sản xuất cung cấp, từ các module vào
ra đơn giản đến các bộ điều khiển mô tơ và các PLC.
Mạng PROFIBUS thường bao gồm một thiết bị chủ và nhiều trạm vào ra. Thiết bị
chủ được đặt cấu hình để nhận biết loại cũng như địa chỉ của các trạm nối vào nó.
Sau đó nó sẽ tự kiểm tra các trạm theo cấu hình được đặt. Thiết bị chủ ghi vào các
trạm và đọc dữ liệu từ đó một cách liên tục. Nói chung mỗi thiết bị chủ thường làm
chủ các trạm của mình, các thiết bị chủ khác trên mạng (nếu có) chỉ có thể truy cập
rất hạn chế vào các trạm không phải của chúng.
Phương thức định nghĩa bởi người sử dụng (FreePort)

Trang 67
nguyen ba hoi
Phương thức này cho phép người lập trình làm chủ việc truyền thông, thực tế là
định nghĩa phương thức truyền thông riêng, có thể kết nối tới nhiều loại thiết bị
thông minh khác.
Chương trình kiểm soát cổng truyền thông trong phương thức này thông qua các
ngắt nhận, ngắt gửi, lệnh nhận (RCV) và lệnh gửi (XMT). Cách thức truyền thông
hoàn toàn do chương trình làm chủ. Phương thức này được điều khiển với byte
SMB30 (dành cho cổng 0) và chỉ hoạt động trong chế độ RUN. Khi CPU chuyển
sang chế độ STOP, phương thức này bị hủy và cổng truyền thông trở về phương
thức bình thường PPI.

Cấu hình phần cứng của mạng:


Do phần này nặng về tính kỹ thuật và đòi hỏi tính chính xác trong từng trường hợp
cụ thể nên chúng ta sẽ không nói đến kỹ trong tài liệu này. Sơ lược như ta đã biết,
đường dây truyền tuân theo chuẩn RS 485, bản chất là cặp dây xoắn:
General Features Specification
Type Shielded, twisted pair
Conductor cross section 24 AWG (0.22 mm 2 ) or larger
Cable capacitance < 60 pF/m
Nominal impedance 100 ohm to 120 ohm
Cách đấu nối như những mạng sử dụng Token ring (mạch hỏi vòng) thông thường:

Khoảng cách truyền tối đa giới hạn tùy theo tốc độ truyền:
Transmission Rate Maximum Cable Length of a Segment
9.6 kbaud to 19.2 kbaud 1,200 m (3,936 ft.)
187.5 kbaud 1,000 m (3,280 ft.)
Có thể dùng bộ lặp để tăng khoảng cách cũng như số thiết bị:

Cổng truyền thông trên CPU S7-200:

Trang 68
nguyen ba hoi

Kết nối PC với mạng RS 485:


Ở đây chúng ta không đi sâu
vào cách thiết lập thông số
cho cáp PC/PPI cũng như
các card CP hay MPI hoạt
động. Chúng ta chỉ nói thêm
một chút về cáp PC/PPI vì
nó được sử dụng khá thông
dụng mà chúng ta đã nhắc
đến trong phần đầu của tài liệu này (chương 3). Đây là cáp chuyển đổi giữa hai
chuẩn RS 485 và RS 232. Nếu nối với máy vi tính, đầu RS 232 được cắm vào
cổng COM, chú ý với loại cáp có DIP switch 05 vị trí thì phải chọn DCE (Data
Control Equipment). Cáp này còn được sử dụng để nối với Modem, cũng có giao
tiếp RS 232 nhưng là DTE (Data Terminal Equipment) như các minh họa sau:

Trang 69
Tập lệnh S7-200

GIÁO TRÌNH TẬP LỆNH


PLC SIEMENS S7-200
ThS. Nguyễn Bá Hội
Đại học Đà Nẵng - Trường Đại học Bách khoa
hoinb@ud.edu.vn

Giáo trình đầy đủ bao gồm 3 phần:


1. Giáo trình lý thuyết
2. Giáo trình tập lệnh
3. Giáo trình bài tập

Trang 1
Tập lệnh S7-200

MỤC LỤC

1. Lệnh logic với bit............................................................................................................. 4


1.1 Contact ............................................................................................................................................... 4
1.1.1 Công tắc ..................................................................................................................................... 4
1.1.2 Công tắc tức khắc ...................................................................................................................... 4
1.1.3 Lệnh đảo bit, lệnh sườn ............................................................................................................. 4
1.2 Coil...................................................................................................................................................... 6
1.2.1 Lệnh ra ....................................................................................................................................... 6
1.2.2 Lệnh ra tức khắc......................................................................................................................... 6
1.2.3 Lệnh Set, Reset.......................................................................................................................... 6
1.2.4 Lệnh Set, Reset Immediat.......................................................................................................... 6
1.2.5 Lệnh không làm gì cả ................................................................................................................. 7
2. Lệnh so sánh ................................................................................................................... 8
3. Lệnh chuyển đổi .............................................................................................................. 9
4. Lệnh định thời ............................................................................................................... 11
5. Lệnh bộ đếm .................................................................................................................. 13
6. Lệnh dịch chuyển ô nhớ ............................................................................................... 15
7. Lệnh với Bảng ............................................................................................................... 16
7.1 Lệnh thêm vào bảng ....................................................................................................................... 16
7.2 Lệnh Memory Fill............................................................................................................................. 17
7.3 Lệnh tìm kiếm trong bảng .............................................................................................................. 17
8. Lệnh toán số học........................................................................................................... 19
8.1 Cộng, Trừ, Nhân, Chia số nguyên, số thực.................................................................................. 19
8.2 Lệnh tăng giảm một đơn vị ............................................................................................................ 21
8.3 Các lệnh hàm số học ...................................................................................................................... 22
9. Lệnh vòng lặp PID ......................................................................................................... 22
10. Lệnh phép toán logic .................................................................................................... 29
10.1 Lệnh đảo byte, word, doubleword ............................................................................................ 29
10.2 Lệnh AND, OR, XOR ................................................................................................................... 29
11. Lệnh dịch và quay ......................................................................................................... 30
11.1 Dịch trái hay phải ........................................................................................................................ 30
11.2 Quay trái hay phải....................................................................................................................... 31
11.3 Lệnh dịch thanh ghi các bit (Shift Register Bit): ..................................................................... 32
11.4 Lệnh SWAP.................................................................................................................................. 33
12. Các lệnh điều khiển chương trình................................................................................ 33
12.1 END có điều kiện ........................................................................................................................ 33
12.2 STOP ............................................................................................................................................ 33
12.3 Lệnh Watchdog Reset ................................................................................................................ 34
12.4 Lệnh nhảy .................................................................................................................................... 34
12.5 Lệnh SCR..................................................................................................................................... 35
13. Lệnh chương trình con ................................................................................................. 36
14. Lệnh ngắt ....................................................................................................................... 38

Trang 2
Tập lệnh S7-200

Một số qui định khi tra cứu lệnh và sử dụng lệnh:


- Trên cùng là phần tên lệnh hoặc nhóm lệnh.
- Tiếp theo là cú pháp lệnh, lần lượt trong LAD, FBD và STL.
- Dưới cùng là những loại CPU S7-200 cho phép sử dụng lệnh, lưu ý ở đây chỉ bao gồm 03 loại CPU
mới: 221, 222 và 224.
- Bên cạnh là phần mô tả hoạt động của lệnh.
Trang 3
Tập lệnh S7-200
Các trường hợp lỗi là các trường hợp gây lỗi khiến đầu ra ENO = 0, bình thường khi lệnh được thực hiện thì
ENO = 1.
- Các bit đặc biệt trong vùng SM có giá trị thay đổi tùy theo kết quả thực hiện lệnh.
- Bảng các toán hạng chỉ ra các thông số hợp lệ của lệnh
- Sau đây là những ký hiệu khi gõ lệnh trong STEP 7:
o Trong LAD: ---> nghĩa là có thể nối tiếp lệnh khác (nhưng không bắt buộc).
o Trong LAD: --->> nghĩa là bắt buộc phải nối tiếp lệnh khác.
o Tên biến nằm trong ngoặc kép (ví dụ “var”) là biến toàn cục.
o Tên biến có ký hiệu # đằng trước là biến cục bộ.
o Ký hiệu ? hay ???? nghĩa là yêu cầu toán hạng.
o Ký hiệu << hoặc >> yêu cầu hoặc toán hạng hoặc nối lệnh khác.
o Ký hiệu >I cho biết đó là đầu ra ENO.
o Ký tự % trước tên biến nghĩa là biến trực tiếp trong IEC.
o Trong FBD, dấu tròn nhỏ ở đầu vào đánh dấu đảo (như trong điện tử); một gạch dọc ngắn
(|) ở đầu vào đánh dấu giá trị tức khắc (đầu vào trực tiếp).
1. Lệnh logic với bit
1.1 Contact
1.1.1 Công tắc
Công tắc thường mở (Normally Open, viết tắt là NO) và công tắc thường
đóng (Normally Closed, viết tắt là NC). Đối với PLC, mỗi công tắc đại diện
cho trạng thái một bit trong bộ nhớ dữ liệu hay vùng ảnh của các đầu vào,
ra. Công tắc thường mở sẽ đóng (ON - nghĩa là cho dòng điện đi qua) khi
bit bằng 1 còn công tắc thường đóng sẽ đóng (ON) khi bit bằng 0.

Trong LAD, các lệnh này được biểu diễn bằng chính các công tắc thường
mở và thường đóng. Trong FBD, các công tắc thường mở được biểu diễn
như các đầu vào hoặc ra của các khối chức năng AND hoặc OR. Công tắc
thường đóng được thêm dấu đảo (vòng tròn nhỏ) ở đầu vào tương ứng.

Trong STL, các công tắc thường mở được sử dụng trong các lệnh LOAD,
AND hoặc OR. Lệnh LOAD ghi giá trị bit được đánh địa chỉ bởi toán hạng
của lệnh vào đỉnh ngăn xếp, những giá trị cũ trong ngăn xếp bị đẩy xuống
một bậc (giá trị dưới cùng sẽ mất). Các lệnh AND và OR thực hiện phép
toán logic AND hay OR giữa giá trị được trỏ đến bởi toán hạng với đỉnh
ngăn xếp, kết quả được ghi vào đỉnh ngăn xếp, những giá trị cũ trong ngăn
xếp bị đẩy xuống một bậc. Hoàn toàn tương tự đối với các công tắc thường
đóng, được sử dụng trong các lệnh LOAD NOT, AND NOT và OR NOT
(giá trị được trỏ đến bởi toán hạng sẽ bị đảo).

1.1.2 Công tắc tức khắc


Trong STL, các công tắc thường mở tức khắc được sử dụng trong các lệnh
LOAD IMMEDIATE (ghi giá trị đầu vào vật lý vào đỉnh ngăn xếp, những
giá trị cũ trong ngăn xếp bị đẩy xuống một bậc (giá trị dưới cùng sẽ mất)),
AND IMMEDIATE hoặc OR IMMEDIATE (thực hiện phép toán lô gic And hay Or giữa giá trị đầu vào
vật lý với đỉnh ngăn xếp, kết quả được ghi vào đỉnh ngăn xếp, những giá trị cũ trong ngăn xếp bị đẩy xuống
một bậc). Hoàn toàn tương tự đối với các công tắc thường đóng tức khắc, được sử dụng trong các lệnh
LOAD NOT IMMEDIATE, AND NOT IMMEDIATE và OR NOT IMMEDIATE (giá trị đầu vào vật lý bị
đảo).
1.1.3 Lệnh đảo bit, lệnh sườn
Lệnh đảo thay đổi dòng năng lượng (Power Flow). Nếu dòng năng lượng gặp lệnh này, nó sẽ bị chặn lại.
Ngược lại nếu phía trước lệnh này không có dòng năng lượng, nó sẽ trở thành nguồn cung cấp dòng năng
lượng. Trong LAD, lệnh này được biểu diễn như một công tắc. Trong FBD, lệnh đảo không có biểu tượng
riêng. Nó được tích hợp như là đầu vào đảo của những khối chức năng khác (với vòng tròn nhỏ ở đầu vào
của các khối chức năng đó). Trong STL, lệnh đảo đảo giá trị của đỉnh ngăn xếp: 0 thành 1 và 1 thành 0.
Lệnh này không có toán hạng.

Trang 4
Tập lệnh S7-200
Lệnh sườn: Đều thuộc nhóm lệnh các công tắc, ghi nhận trạng thái các bit dữ liệu (0 hay 1), quen thuộc với
khái niệm “mức”. Các lệnh về sườn ghi nhận không phải mức đơn thuần mà là sự biến đổi mức. Lệnh sườn
dương (Positive Transition) cho dòng năng lượng đi qua trong khoảng thời gian bằng thời gian một vòng
quét khi ở đầu vào của nó có sự thay đổi mức từ 0 lên 1. Lệnh sườn âm (Negative Transition) cho dòng
năng lượng đi qua trong khoảng thời gian bằng thời gian một vòng quét khi ở đầu vào của nó có sự thay đổi
mức từ 1 xuống 0.
Trong LAD, các lệnh này được biểu diễn cũng như các công tắc. Trong FBD, các lệnh này được biểu diễn
bằng các khối chức năng P và N. Trong STL, lệnh Edge Up, nếu phát hiện có sự thay đổi mức của đỉnh
ngăn xếp từ 0 lên 1, sẽ đặt vào đỉnh ngăn xếp giá trị 1. Trong trường hợp ngược lại, nó đặt vào đó giá trị 0.
Tương tự, lệnh Edge Down, nếu phát hiện có sự thay đổi mức của đỉnh ngăn xếp từ 1 xuống 0, sẽ đặt vào
đỉnh ngăn xếp giá trị 1. Trong trường hợp ngược lại, nó cũng đặt vào đó giá trị 0.

Chú ý: Theo cấu trúc hoạt động của PLC, sự thay đổi mức tất nhiên chỉ được phát hiện giữa các
vòng quét liên tiếp. Do đó mỗi lệnh sườn này cần một bit nhớ để nhớ trạng thái đầu vào của nó ở
vòng quét kế trước. Vì đặc tính này mà tổng số lệnh sườn được sử dụng trong một chương trình
bị hạn chế (do dung lượng bộ nhớ dành cho chúng có hạn).
Ví dụ cho các lệnh NOT, P, N:

Trang 5
Tập lệnh S7-200
1.2 Coil
1.2.1 Lệnh ra
Giá trị bit được định địa chỉ bởi toán hạng của lệnh ra phản ảnh trạng thái của
dòng năng lượng (Power Flow) ở đầu vào lệnh này. Trong LAD và FBD, lệnh
ra đặt giá trị bit được trỏ đến bởi toán hạng của nó bằng giá trị dòng năng
lượng ở đầu vào của lệnh. Trong STL, lệnh ra sao chép giá trị đỉnh ngăn xếp
ra giá trị bit được trỏ đến bởi toán hạng của lệnh.
1.2.2 Lệnh ra tức khắc
Giá trị đầu ra rời rạc (digital) vật lý được định địa chỉ bởi toán hạng của lệnh
ra trực tiếp phản ảnh trạng thái của dòng năng lượng (Power Flow) ở đầu vào
lệnh này. Trong LAD và FBD, lệnh ra trực tiếp đặt đồng thời giá trị đầu ra vật
lý được trỏ đến bởi toán hạng của nó và bit ảnh của đầu ra này bằng giá trị
dòng năng lượng ở đầu vào của lệnh. Điều đó khác với lệnh ra thông thường
ở chỗ lệnh ra thông thường chỉ ghi giá trị vào bit ảnh của đầu ra. Trong STL,
lệnh ra trực tiếp sao chép giá trị đỉnh ngăn xếp ra đồng thời giá trị đầu ra vật
lý được trỏ đến bởi toán hạng của lệnh và bit ảnh của đầu ra này.
1.2.3 Lệnh Set, Reset
Các lệnh SET và RESET đặt một số các bit liên tiếp trong bộ nhớ dữ liệu
thành 1 (Set) hay 0 (Reset). Số lượng các bit được định bởi toán hạng [N] và
bắt đầu từ bit được định địa chỉ bởi toán hạng [bit]. Số lượng các bit có
thể Set hoặc Reset nằm trong khoảng từ 1 đến 255. Trong trường hợp sử dụng
lệnh Reset với các bit nằm trong những vùng T hay C, các bộ định thời hay
bộ đếm tương ứng sẽ bị reset. Nghĩa là bit trạng thái của chúng được đưa về 0 và số đang đếm cũng bị xóa
(sẽ có giá trị 0).
Những lỗi có thể được gây nên bởi các lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Lỗi 0091: toán hạng vượt quá giới hạn cho phép.
1.2.4 Lệnh Set, Reset Immediat
Các lệnh SET IMMEDIATE và RESET IMMEDIATE đặt một số các đầu ra rời rạc (digital) vật lý liên tiếp
thành 1 (Set) hay 0 (Reset). Số lượng các đầu ra được định bởi toán hạng [N] và bắt đầu từ đầu ra được định
địa chỉ bởi toán hạng [bit]. Số lượng các đầu ra vật lý có thể Set hoặc Reset nằm trong khoảng từ 1 đến 12.
Ký tự “I” trong những lệnh này (Immediate) nói lên tính tức thời. Các lệnh này ghi giá trị mới ra các đầu ra
vật lý đồng thời ghi cả vào các giá trị ảnh của chúng. Điều đó khác với những lệnh Set và Reset thông
thường chỉ ghi giá trị mới vào vùng ảnh của các đầu ra.
Những lỗi có thể được gây nên bởi các lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Lỗi 0091: toán hạng vượt quá giới hạn cho phép.

Ví dụ:

Trang 6
Tập lệnh S7-200

1.2.5 Lệnh không làm gì cả


Lệnh không làm gì (No Operation) không tác động đến chương trình. Mặc dù nó
cũng có một toán hạng [N] dạng Byte, là một hằìng số trong khoảng từ 1 đến 255.

Trang 7
Tập lệnh S7-200

2. Lệnh so sánh

So sánh Byte: Lệnh so sánh Byte dùng để so sánh 02 giá trị dạng byte
được định địa chỉ bởi hai toán hạng ở đầu vào của lệnh: [IN1] và [IN2].
Có tất cả 06 phép so sánh có thể được thực hiện: [IN1] = [IN2], [IN1]
>= [IN2], [IN1] <= [IN2], [IN1] > [IN2], [IN1] < [IN2], [IN1] <>
[IN2]. Các byte được đem so sánh là những giá trị không dấu. Trong
LAD, lệnh này có dạng một công tắc và công tắc đó đóng (ON) khi điều kiện đem so sánh có giá trị đúng.
Trong FBD, đầu ra sẽ có giá trị 1 nếu điều kiện đem so sánh là đúng. Trong STL, lệnh được thực hiện sẽ ghi
giá trị 1 vào đỉnh ngăn xếp (với những lệnh Load) hoặc thực hiện phép toán lô gic AND hay OR (tùy theo
lệnh cụ thể) giá trị 1 với đỉnh ngăn xếp nếu điều kiện so sánh đúng.

So sánh số nguyên (Integer): Lệnh so sánh số nguyên dùng để so sánh 02 giá trị dạng Integer được định
địa chỉ bởi hai toán hạng ở đầu vào của lệnh: [IN1] và [IN2]. Có tất cả 06 phép so sánh có thể được thực
hiện: [IN1] = [IN2], [IN1] >= [IN2], [IN1] <= [IN2], [IN1] > [IN2], [IN1] < [IN2], [IN1] <> [IN2].
Các số nguyên được đem so sánh là những giá trị có dấu: 16#7FFF > 16#8000.

So sánh từ kép (Double Word): Lệnh so sánh từ kép dùng để so sánh 02 giá trị dạng Double Word được
định địa chỉ bởi hai toán hạng ở đầu vào của lệnh: [IN1] và [IN2]. Có tất cả 06 phép so sánh có thể được
thực hiện: [IN1] = [IN2], [IN1] >= [IN2], [IN1] <= [IN2], [IN1] > [IN2], [IN1] < [IN2], [IN1] <> [IN2].
Các giá trị từ kép được đem so sánh là những giá trị có dấu: 16#7FFFFFFF > 16#80000000.

So sánh số thực (Real): Lệnh so sánh số thực dùng để so sánh 02 giá trị dạng Real được định địa chỉ bởi
hai toán hạng ở đầu vào của lệnh: [IN1] và [IN2]. Có tất cả 06 phép so sánh có thể được thực hiện: [IN1] =
[IN2], [IN1] >= [IN2], [IN1] <= [IN2], [IN1] > [IN2], [IN1] < [IN2], [IN1] <> [IN2]. Các số thực được
đem so sánh là những giá trị có dấu theo kiểu dấu phẩy động.

Ví dụ sử dụng lệnh so sánh:

Trang 8
Tập lệnh S7-200

3. Lệnh chuyển đổi

Ví dụ Round và Truncate:

Trang 9
Tập lệnh S7-200

Ví dụ SEG (Segment):

Ngoài ra còn có các lệnh chuyển đổi sang mã ASCII.

Trang 10
Tập lệnh S7-200
4. Lệnh định thời
SIMATIC S7-200 có 03 loại bộ định thời:
- Bộ đóng trễ (On - Delay Timer) TON
- Bộ đóng trễ có nhớ (Retentive On - Delay Timer) TONR
- Bộ ngắt trễ (Off - Delay Timer) TOF

Các bộ đóng trễ và đóng trễ có nhớ bắt đầu đếm thời gian khi có đầu
vào EN (Enable) ở mức 1 (ON). Lúc giá trị đếm được lớn hơn hoặc
bằng giá trị đặt trước tại đầu vào PT (Preset Time) thì bit trạng thái sẽ
được đặt bằng 1 (ON). Điều khác nhau giữa hai loại bộ đóng trễ này
là: bộ đóng trễ bình thường sẽ bị reset (cả giá trị đang đếm lẫn bit
trạng thái đều bị xóa về 0) khi đầu vào EN bằng 0; trong khi đó bộ định thời có nhớ lưu lại giá trị của nó khi
đầu vào EN bằng 0 và tiếp tục đếm nếu đầu vào EN lại bằng 1. Như vậy ta có thể dùng loại có nhớ để cộng
thời gian những lúc đầu vào EN bằng 1. Loại bộ định thời này có thể reset (xóa giá trị đang đếm về 0) bằng
lệnh R (Reset). Cả hai loại bộ đóng trễ vẫn tiếp tục đếm thời gian ngay cả sau khi đã đạt đến giá trị đặt trước
PT và chỉ dừng đếm khi đạt giá trị tối đa 32767 (16#7FFF).

Bộ ngắt trễ dùng để đưa giá trị đầu ra (bit trạng thái) về 0 (OFF) trễ một khoảng thời gian sau khi đầu vào
(EN) đổi về 0. Khi đầu vào EN được đặt bằng 1 (ON) thì bit trạng thái của bộ ngắt trễ cũng bằng 1 ngay lúc
đó đồng thời giá trị đếm của nó bị xóa về 0. Khi đầu vào EN về 0, bộ định thời bắt đầu đếm và đếm cho đến
khi đạt giá trị đặt trước PT. Lúc đó bit trạng thái của bộ ngắt trễ sẽ về 0 đồng thời nó cũng ngừng đếm. Nếu
đầu vào EN chỉ bằng 0 trong khoảng thời gian ngắn hơn thời gian được đặt rồi quay lại bằng 1 thì bit trạng
thái của bộ định thời vẫn giữ nguyên bằng 1. Bộ ngắt trễ chỉ bắt đầu đếm khi có sườn thay đổi từ 1 thành 0
ở đầu vào EN.

Nếu bộ ngắt trễ ở trong vùng một SCR (Sequence Control Relay) và vùng SCR đó không được kích hoạt thì
giá trị đếm của nó được xóa về 0, bit trạng thái cũng bằng 0 (OFF) và bộ định thời không đếm. Khái niệm
vùng SCR sẽ được định nghĩa ở phần sau của tài liệu này.

Thời gian trễ được tính như là tích của giá trị đang đếm với độ phân giải của của bộ định thời.

Những bộ định thời có nhớ có địa chỉ được qui định riêng. Những bộ định thời còn lại (không nhớ) có thể
được khai báo như là bộ đóng trễ hoặc ngắt trễ, nhưng không thể là cả hai. Ví dụ không thể có TON 33 và
TOF 33 đồng thời.
Bảng sau tóm tắt những đặc điểm hoạt động của ba loại bộ định thời nêu trên:

Trang 11
Tập lệnh S7-200

Lệnh Reset (R) có thể được sử dụng để reset bất kỳ bộ định thời nào. Các bộ định thời có nhớ (loại TONR)
chỉ có thể reset bằng lệnh này. Các bộ định thời sau khi reset có bit trạng thái cũng như giá trị đếm đều
được xóa về 0. Các bộ ngắt trễ (TOF) chỉ bắt đầu đếm khi có sự thay đổi từ 1 xuống 0 ở đầu vào IN.

Các bộ định thời có độ phân giải khác nhau có cách hoạt động cũng khác nhau. Chúng ta xem xét kỹ
hơn về vấn đề này:

Bộ định thời với độ phân giải 1 ms:


Bộ định thời loại này đếm số khoảng thời gian 1 ms trôi qua kể từ khi nó được kích hoạt. Bộ định thời với
độ phân giải 1 ms được kích hoạt bằng lệnh khai báo của nó nhưng sau đó nó được cập nhật (bit trạng thái
cũng như giá trị đếm) mỗi giây một lần một cách độc lập không phụ thuộc vào vòng quét chương trình. Nói
một cách khác, một bộ định thời loại này có thể được cập nhật nhiều lần trong một vòng quét nếu như thời
gian vòng quét lớn hơn 1 ms. Bởi vì một bộ định thời với độ phân giải 1 ms có thể được kích hoạt ở bất kỳ
một thời điểm nào trong vòng 1 ms nên ta nên đặt giá trị đặt trước lớn hơn 1 đơn vị so với giá trị yêu cầu
cần đếm. Ví dụ để đếm khoảng thời gian 56 ms, ta thường đặt giá trị đặt trước bằng 57.

Bộ định thời với độ phân giải 10 ms:


Bộ định thời loại này đếm số khoảng thời gian 10 ms trôi qua kể từ khi nó được kích hoạt. Bộ định thời với
độ phân giải 10 ms được kích hoạt bằng lệnh khai báo của nó và sau đó nó được cập nhật (bit trạng thái
cũng như giá trị đếm) mỗi vòng quét một lần ở ngay đầu mỗi vòng quét bằng cách cộng vào giá trị đang
đếm của nó số khoảng thời gian 10 ms trôi qua kể từ đầu vòng quét trước. Nói một cách khác, giá trị đang
đếm của bộ định thời loại này giữ nguyên không đổi trong suốt thời gian một vòng quét. Bởi vì một bộ định
thời với độ phân giải 10 ms có thể được kích hoạt ở bất kỳ một thời điểm nào trong vòng 10 ms nên ta nên
đặt giá trị đặt trước lớn hơn 1 đơn vị so với giá trị yêu cầu cần đếm. Ví dụ để đếm khoảng thời gian 140 ms,
ta thường đặt giá trị đặt trước bằng 15.

Bộ định thời với độ phân giải 100 ms: Bộ định thời loại này tính số khoảng thời gian 100 ms trôi qua kể từ
khi nó được cập nhật lần cuối. Lệnh khai báo bộ định thời với độ phân giải 100 ms cập nhật bit trạng thái
cũng như giá trị đếm của nó bằng cách cộng vào giá trị đang đếm của nó số khoảng thời gian 100 ms trôi
qua kể từ vòng quét trước. Như vậy, giá trị đang đếm của bộ định thời loại này chỉ được cập nhật khi có
lệnh khai báo nó thực hiện. Vì thế nếu bộ định thời với độ phân giải 100 ms đã được kích hoạt nhưng lệnh
khai báo nó không được thực hiện trong mỗi vòng quét thì nó có thể không được cập nhật kịp thời và đếm
thiếu thời gian. Ngược lại nếu lệnh khai báo bộ định thời được thực hiện nhiều lần trong một vòng quét thì
nó có thể đếm dư thời gian do một số khoảng thời gian 100 ms được cộng nhiều lần. Tóm lại nên sử dụng
bộ định thời loại này với lệnh khai báo thực hiện chính xác mỗi vòng quét một lần. Bởi vì một bộ định thời
với độ phân giải 100 ms có thể được khởi động ở bất kỳ một thời điểm nào trong vòng 100 ms nên ta nên
đặt giá trị đặt trước lớn hơn 1 đơn vị so với giá trị yêu cầu cần đếm. Ví dụ để đếm khoảng thời gian 2100
ms, ta thường đặt giá trị đặt trước bằng 22.

Để hiểu thêm về cơ chế cập nhật của các bộ định thời với những độ phân giải khác nhau, chúng ta xem
xét ví dụ sau, tạo bộ định thời 3 giây với lần lượt ba bộ định thời khác nhau (xem chương trình kèm
theo):
§ Đầu tiên bộ định thời với độ phân giải 1 ms được sử dụng (T32, giá trị đặt trước 300). Q0.0 sẽ có giá trị
bằng 1 (ON) trong thời gian một vòng quét khi và chỉ khi nào thời điểm cập nhật của bộ định thời mà giá
trị đếm vượt qua giá trị đặt trước rơi vào đúng giữa lúc thực hiện hai lệnh này. Nghĩa là sau khi lệnh
trước được thực hiện nhưng phải trước khi thực hiện lệnh sau.

Trang 12
Tập lệnh S7-200
§ Nếu sử dụng bộ định thời với độ phân giải 10 ms (T33, giá trị đặt trước 30), Q0.0 không bao giờ có giá
trị 1 (luôn luôn OFF).
§ Trường hợp cuối cùng sử dụng bộ định thời với độ phân giải 100 ms (T37, giá trị đặt trước bằng 3). Q0.0
luôn luôn có giá trị bằng 1 (ON) trong đúng thời gian một vòng quét.
Để đảm bảo chắc chắn Q0.0 sẽ có giá trị 1 (ON) trong thời gian một vòng quét, ta phải dùng công tắc
thường đóng Q0.0 để kích hoạt các bộ định thời thay vì dùng công tắc thường đóng với bit trạng thái của
nó.

5. Lệnh bộ đếm
Ba loại bộ đếm: bộ đếm lên (Count Up), bộ đếm xuống (Count Down)
và loại bộ đếm có thể vừa đếm lên vừa đếm xuống (Count Up / Down).

Bộ đếm lên đếm cho đến giá trị tối đa của nó (32767) mỗi khi có sườn
lên ở đầu vào đếm lên (CU). Khi giá trị đếm (Cxxx) lớn hơn hoặc bằng
giá trị đặt trước (PV) thì bit trạng thái (Cxxx) sẽ có giá trị 1 (ON). Bộ
đếm có thể bị xóa (reset) bởi mức 1 ở đầu vào reset (R), lúc đó cả giá trị
đếm lẫn bit trạng thái sẽ bị xóa về 0.

Bộ đếm xuống đếm từ giá trị đặt trước (PV) mỗi khi có sườn lên ở đầu
vào đếm xuống (CD). Khi giá trị đếm (Cxxx) bằng 0, bit trạng thái
(Cxxx) sẽ bằng 1 đồng thời bộ đếm ngừng đếm. Mức cao ở đầu vào LD
xóa bit trạng thái về 0 và tải giá trị đặt trước PV vào giá trị đếm.

Bộ đếm vừa đếm lên vừa đếm xuống đếm lên khi có sườn lên ở đầu vào
đếm lên (CU) và đếm xuống khi có sườn lên ở đầu vào đếm xuống
(CD). Khi giá trị đếm (Cxxx) lớn hơn hoặc bằng giá trị đặt trước (PV)
thì bit trạng thái (Cxxx) sẽ có giá trị 1 (ON). Bộ đếm có thể bị xóa
(reset) bởi mức 1 ở đầu vào reset (R), lúc đó cả giá trị đếm lẫn bit trạng
thái sẽ bị xóa về 0.

Số hiệu các bộ đếm: C0 đến C255. Trong CPU 221, 222 và 224 mỗi bộ đếm được xác định loại tùy theo
lệnh khai báo nhưng không thể khai báo các bộ đếm loại khác nhau với cùng một địa chỉ (trong vùng C).

Trong STL, đầu vào reset (R) của bộ đếm tiến là bit đỉnh của ngăn xếp và đầu vào đếm của nó (CU) là bit
thứ hai của ngăn xếp. Trong STL, đầu vào tải (LD) của bộ đếm lùi là bit đỉnh của ngăn xếp và đầu vào đếm
của nó (CD) là bit thứ hai của ngăn xếp. Trong STL, đầu vào reset (R) của bộ đếm vừa đếm tiến vừa đếm

Trang 13
Tập lệnh S7-200
lùi là bit đỉnh của ngăn xếp, đầu vào đếm lùi của nó (CD) là bit thứ hai của ngăn xếp và đầu vào đếm tiến
của nó (CU) là bit thứ ba của ngăn xếp.

Các bộ đếm còn có thể bị reset bởi lệnh Reset. Bộ đếm vừa tiến vừa lùi khi đếm đến giá trị tối đa (32767)
mà tiếp tục đếm lên thi số đếm sẽ nhảy sang giá trị tối thiểu (-32768) và tiếp tục đếm bình thường. Tương
tự, nếu nó đếm lùi khi đã ở giá trị nhỏ nhất (-32768) thì số đếm sẽ nhảy thành giá trị lớn nhất (32767).

Ví dụ sử dụng bộ đếm:

Trang 14
Tập lệnh S7-200

Các bộ đếm tốc độ cao xem giáo trình lí thuyết.

6. Lệnh dịch chuyển ô nhớ


Các lệnh dịch chuyển một Byte, một từ đơn (Word), một từ kép
(Double Word) hay một số thực (Real):
Lệnh dịch chuyển một Byte, Move Byte, sao chép nội dung ô nhớ kích
thước một byte được định địa chỉ ở đầu vào IN lên ô nhớ kích thước một
byte được định địa chỉ ở đầu ra OUT. Nội dung byte nhớ ở địa chỉ [IN]
không thay đổi. Tương tự cho các câu lệnh với W, DW.
Lệnh dịch chuyển một Số thực, Move Real, sao chép số thực kích thước
32 bit được định địa chỉ ở đầu vào IN lên số thực kích thước 32 bit được
định địa chỉ ở đầu ra OUT. Số thực ở địa chỉ [IN] không thay đổi.
Những lỗi có thể được gây nên bởi các lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.

Các lệnh dịch chuyển một Byte, một từ đơn (Word) tức khắc: đọc hoặc
ghi.

Lệnh dịch chuyển một khối các byte, Block Move Byte: sao chép nội
dung một số các ô nhớ liên tiếp (xác định bởi toán hạng ở đầu vào N),
mỗi ô kích thước một byte với byte đầu tiên được định địa chỉ ở đầu vào
IN lên khối các ô nhớ liên tiếp kích thước mỗi ô nhớ một byte và byte
đầu tiên được định địa chỉ ở đầu ra OUT. Số lượng các byte có thể sao
chép nằm trong khoảng từ 1 đến 255.
Lệnh dịch chuyển một khối các từ đơn, Block Move Word, sao chép nội

Trang 15
Tập lệnh S7-200
dung một số các ô nhớ liên tiếp (xác định bởi toán hạng ở đầu vào N), mỗi ô kích thước một word với word
đầu tiên được định địa chỉ ở đầu vào IN lên khối các ô nhớ liên tiếp kích thước mỗi ô nhớ một word và
word đầu tiên được định địa chỉ ở đầu ra OUT. Số lượng các word có thể sao chép nằm trong khoảng từ 1
đến 255.

Lệnh dịch chuyển một khối các từ kép, Block Move Double Word, sao chép nội dung một số các ô nhớ liên
tiếp (xác định bởi toán hạng ở đầu vào N), mỗi ô kích thước một từ kép với từ kép đầu tiên được định địa
chỉ ở đầu vào IN lên khối các ô nhớ liên tiếp kích thước mỗi ô nhớ một từ kép và từ kép đầu tiên được định
địa chỉ ở đầu ra OUT. Số lượng các từ kép có thể sao chép nằm trong khoảng từ 1 đến 255.

Những lỗi có thể được gây nên bởi các lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Lỗi 0091: toán hạng vượt quá giới hạn cho phép.

7. Lệnh với Bảng


7.1 Lệnh thêm vào bảng

Trang 16
Tập lệnh S7-200

7.2 Lệnh Memory Fill


Lệnh này điền đầy một khoảng nhớ bao gồm một số các từ đơn liên tiếp
(được xác định bởi đầu vào N) với từ đơn (Word) đầu tiên được định địa
chỉ bởi đầu ra OUT bằng từ đơn được định địa chỉ ở đầu vào IN. Kích
thước khoảng nhớ có thể nằm trong khoảng từ 1 đến 255 từ đơn.
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Lỗi 0091: toán hạng vượt quá giới hạn cho phép.

Ví dụ:

7.3 Lệnh tìm kiếm trong bảng

Trang 17
Tập lệnh S7-200

Trang 18
Tập lệnh S7-200

8. Lệnh toán số học


8.1 Cộng, Trừ, Nhân, Chia số nguyên, số thực
Các lệnh này cộng (Add) hay trừ (Subtract) hai số nguyên được định địa
chỉ ở các đầu vào IN1 và IN2, kết quả lưu vào số nguyên được định địa
chỉ bởi đầu ra OUT.
[IN1] + [IN2] = [OUT]
[IN1] - [IN2] = [OUT]
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Bit đặc biệt SM1.1 = 1: lỗi tràn (Overflow).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng 1 nếu kết quả bị tràn.
+ SM1.2 (Negative): bằng 1 nếu kết quả là số âm.

Các lệnh này cộng (Add) hay trừ (Subtract) hai số nguyên 32 bit được định địa chỉ ở các đầu vào IN1 và
IN2, kết quả lưu vào số nguyên 32 bit được định địa chỉ bởi đầu ra OUT.
[IN1] + [IN2] = [OUT]
[IN1] - [IN2] = [OUT]
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.

Trang 19
Tập lệnh S7-200
+ Lỗi 0006: địa chỉ gián tiếp.
+ Bit đặc biệt SM1.1 = 1: lỗi tràn (Overflow).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng 1 nếu kết quả bị tràn.
+ SM1.2 (Negative): bằng 1 nếu kết quả là số âm.

Các lệnh nhân (Multiply) hay chia (Divide) hai số nguyên 16 bit được định địa chỉ ở các đầu vào IN1 và
IN2, kết quả lưu vào số nguyên được định địa chỉ bởi đầu ra OUT. Trong phép chia, số dư bị bỏ qua. Bit
báo tràn sẽ thành 1 nếu kết quả lớn hơn một số nguyên 16 bit. Những lệnh này không có trong các CPU
212, 214.
[IN1] * [IN2] = [OUT]
[IN1] / [IN2] = [OUT]
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Bit đặc biệt SM1.1 = 1: lỗi tràn (Overflow).
+ Bit đặc biệt SM1.3 = 1: lỗi chia cho 0 (Divide-by-zero).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng 1 nếu kết quả bị tràn.
+ SM1.2 (Negative): bằng 1 nếu kết quả là số âm.
+ SM1.3 (Divide-by-zero): bằng 1 nếu số chia bằng 0.
Trong trường hợp bit SM1.1 (Overflow) bằng 1, kết quả sẽ không được ghi và các bit đặc biệt khác liên quan
đến các phép toán (Zero, Negative, ...) đều được xóa về 0.
Trong trường hợp bit SM1.3 (Divide-by-zero) bằng 1, các bit đặc biệt khác liên quan đến các phép toán
(Zero, Negative, ...) đều được giữ nguyên không thay đổi và các toán hạng ở đầu vào cũng không đổi.
Trong các trường hợp còn lại, các bit đặc biệt nói trên sẽ có giá trị phản ảnh trạng thái của kết quả theo tính
năng của chúng

Các lệnh nhân (Multiply) hay chia (Divide) hai số nguyên 32 bit được định địa chỉ ở các đầu vào IN1 và
IN2, kết quả lưu vào số nguyên 32 bit được định địa chỉ bởi đầu ra OUT. Trong phép chia, số dư bị bỏ qua.
Bit báo tràn sẽ thành 1 nếu kết quả lớn hơn một số nguyên 32 bit. Những lệnh này không có trong các CPU
212, 214.
[IN1] * [IN2] = [OUT]
[IN1] / [IN2] = [OUT]
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Bit đặc biệt SM1.1 = 1: lỗi tràn (Overflow).
+ Bit đặc biệt SM1.3 = 1: lỗi chia cho 0 (Divide-by-zero).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng 1 nếu kết quả bị tràn.
+ SM1.2 (Negative): bằng 1 nếu kết quả là số âm.
+ SM1.3 (Divide-by-zero): bằng 1 nếu số chia bằng 0.
Trong trường hợp bit SM1.1 (Overflow) bằng 1, kết quả sẽ không được ghi và các bit đặc biệt khác liên quan
đến các phép toán (Zero, Negative, ...) đều được xóa về 0.
Trong trường hợp bit SM1.3 (Divide-by-zero) bằng 1, các bit đặc biệt khác liên quan đến các phép toán
(Zero, Negative, ...) đều được giữ nguyên không thay đổi và các toán hạng ở đầu vào cũng không đổi.

Các lệnh Nhân, Chia hai số nguyên (Integer) và ghi kết quả vào số nguyên dài (Double Integer): Các
lệnh này nhân (Multiply) hay chia (Divide) hai số nguyên 16 bit được định địa chỉ ở các đầu vào IN1 và
IN2, kết quả lưu vào số nguyên 32 bit được định địa chỉ bởi đầu ra OUT. Trong phép chia, kết quả bao gồm
số dư ở 16 bit cao và thương số ở 16 bit thấp.
[IN1] * [IN2] = [OUT]
[IN1] / [IN2] = [OUT]
Trong STL, lệnh MUL chỉ sử dụng 16 bit thấp của từ kép [OUT] làm số nhân. Tương tự lệnh DIV cũng chỉ
sử dụng 16 bit thấp của từ kép [OUT] làm số bị chia.
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.

Trang 20
Tập lệnh S7-200
+ Bit đặc biệt SM1.1 = 1: lỗi tràn (Overflow).
+ Bit đặc biệt SM1.3 = 1: lỗi chia cho 0 (Divide-by-zero).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng 1 nếu kết quả bị tràn.
+ SM1.2 (Negative): bằng 1 nếu kết quả là số âm.
+ SM1.3 (Divide-by-zero): bằng 1 nếu số chia bằng 0.
Trong trường hợp bit SM1.3 (Divide-by-zero) bằng 1, các bit đặc biệt khác liên quan đến các phép toán
(Zero, Negative, ...) đều được giữ nguyên không thay đổi và các toán hạng ở đầu vào cũng không đổi.

Các số thực được biểu diễn bằng 32 bit dưới dạng dấu phẩy động theo chuẩn ANSI / IEEE 754 - 1985.

Các ví dụ:

8.2 Lệnh tăng giảm một đơn vị

Trang 21
Tập lệnh S7-200
Thêm vào hay bớt đi một đơn vị từ một Byte được định địa chỉ ở đầu vào
IN, kết quả lưu vào Byte được định địa chỉ bởi đầu ra OUT. Các số trong
Byte toán hạng được xem là các số không dấu.
[IN] + 1 = [OUT]
[IN] - 1 = [OUT]
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Bit đặc biệt SM1.1 = 1: lỗi tràn (Overflow).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng 1 nếu kết quả bị tràn.

Tương tự đối với W, DW.

8.3 Các lệnh hàm số học

9. Lệnh vòng lặp PID


Lệnh này tính toán vòng lặp PID (PID Loop) theo các đầu vào và những thông số từ bảng được định địa chỉ
bởi TBL.
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Bit đặc biệt SM1.1 = 1: lỗi tràn (Overflow).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.1 (Overflow): bằng 1 nếu kết quả bị tràn.

Lệnh PID Loop (Proportional, Integral, Derivative Loop) được sử dụng để tính toán vòng lặp PID. Lệnh
này chỉ được thực hiện nếu như đỉnh của ngăn xếp (Top Of Stack) bằng 1 trong STL, hay có Power Flow
trong LAD. Lệnh này có hai toán hạng: [TBL] là địa chỉ byte đầu tiên của một bảng dữ liệu còn [LOOP] là
một số nằm trong khoảng từ 0 đến 7. Điều này cũng có nghĩa là chỉ có tối đa 8 lệnh PID Loop có thể được

Trang 22
Tập lệnh S7-200
sử dụng trong một chương trình. Nếu có hai lệnh PID Loop với cùng một số [LOOP] thì dù chúng có sử
dụng hai bảng khác nhau đi nữa cũng vẫn ảnh hưởng đến nhau và có thể gây những hậu quả không lường
trước được.

Bảng dữ liệu của lệnh PID Loop bao gồm 09 tham số dùng để điều khiển hoạt động của vòng lặp: giá trị tức
thời và giá trị kế trước (current and previous value) của biến điều khiển (process variable), giá trị yêu cầu
(setpoint), giá trị xử lý (output - đầu ra của PID), hệ số khuếch đại (gain), thời gian lấy mẫu (sample time),
hệ số tích phân (integral time - reset), hệ số vi phân (derivative time - rate) và integral sum (bias).

Để thực hiện lệnh này ở một tần suất lấy mẫu xác định, nó phải hoặc là được đặt trong một ngắt thời gian
hoặc là được thực hiện trong chương trình chính qua kiểm soát bởi một bộ định thời. Đồng thời, thời gian
lấy mẫu tương ứng phải được đưa vào bảng dữ liệu của lệnh.

Trong STEP 7 Micro / Win 32, chúng ta có thể sử dụng PID Wizard để tạo thuật toán với PID cho một
mạch điều khiển kín bằng cách chọn Tools Instruction Wizard -> PID từ Menu chính.

Ở trạng thái ổn định, một bộ điều khiển PID sẽ điều chỉnh sao cho sai số giữa giá trị yêu cầu (setpoint SP)
và giá trị điều khiển (process variable PV) bằng 0. Nguyên lý của một bộ điều khiển PID như vậy thể hiện
trong phương trình sau:
t
de
M (t ) = Kc * e + Ki * ò
0
edt + Mi + Kd *
dt
output = proportional + integral + differential
trong đó:
M(t): đầu ra của PID (đại lượng xử lý) như một hàm theo thời gian
Kc: hằng số khuếch đại
e: sai số. e = SP - PV
Mi: giá trị ban đầu của PID
Nhằm mục đích áp dụng bộ điều khiển PID trên máy vi tính hay PLC nói riêng và trong kỹ thuật số
nói chung, chúng ta phải tiến hành “rời rạc hóa” phương trình nêu trên. Cụ thể là lấy mẫu và lượng tử hóa
các biến. Phương trình được viết lại như sau:
n
Mn = Kc * en + Ki * å
i =1
ei + Mi + Kd * (en - en - 1 )

output = proportional + integral + differential


trong đó:
Mn: đầu ra của PID (đại lượng xử lý) ở thời điểm lấy mẫu n
Kc: hằng số khuếch đại
en: sai số ở thời điểm lấy mẫu n. en = SPn - PVn
en-1: sai số ở thời điểm lấy mẫu ngay trước đó (n-1). en-1 = SPn-1 - PVn-1
Ki: hằng số khuếch đại của thành phần tích phân
Mi: giá trị ban đầu của PID
Kd: hằng số khuếch đại của thành phần vi phân
Từ phương trình này ta nhận thấy rằng, nếu như thành phần tỉ lệ (proportional) chỉ là hàm của sai số
ở thời điểm lấy mẫu thì thành phần vi phân (differential) là hàm số của sai số ở thời điểm lấy mẫu lẫn thời
điểm lấy mẫu kế trước còn thành phần tích phân (integral) lại là hàm của tất cả các sai số từ thời điểm lấy
mẫu đầu tiên cho đến thời điểm lấy mẫu hiện tại. Trong kỹ thuật số, lưu lại tất cả các sai số là điều không
thể thực hiện được, cũng như thật sự không cần thiết.
Vì giá trị xử lý luôn được tính toán ở mọi thời điểm lấy mẫu, kể từ thời điểm đầu tiên, nên chỉ cần
lưu lại giá trị kế trước của sai số và thành phần tích phân. Phương trình được đơn giản thành:
Mn = Kc * en + Ki * en + MX + Kd * (en - en - 1 )
output = proportional + integral + differential
trong đó:
Mn: đầu ra của PID (đại lượng xử lý) ở thời điểm lấy mẫu n
Kc: hằng số khuếch đại
en: sai số ở thời điểm lấy mẫu n. en = SPn - PVn
en-1: sai số ở thời điểm lấy mẫu ngay trước đó (n-1). en-1 = SPn-1 - PVn-1
Ki: hằng số khuếch đại của thành phần tích phân

Trang 23
Tập lệnh S7-200
MX: giá trị thành phần tích phân ở thời điểm lấy mẫu kế trước (n-1)
Kd: hằng số khuếch đại của thành phần vi phân
Một cách viết khác của phương trình:
Mn = MPn + MIn + MDn
output = proportional + integral + differential
trong đó:
Mn: đầu ra của PID (đại lượng xử lý) ở thời điểm lấy mẫu n
MPn: thành phần tỉ lệ của đầu ra PID ở thời điểm lấy mẫu n
MIn: thành phần tích phân của đầu ra PID ở thời điểm lấy mẫu n
MDn: thành phần vi phân của đầu ra PID ở thời điểm lấy mẫu n
Ta lần lượt xét đến từng thành phần một của đại lượng xử lý:

Thành phần tỉ lệ (proportional) MP là tích của hằng số khuếch đại Kc với sai số e. Trong đó Kc đặc trưng
cho độ nhạy của đầu ra PID (Kc càng lớn, bộ điều khiển PID càng nhạy) còn e là sai số giữa đại lượng yêu
cầu (setpoint SP) và đại lượng thực tế (process variable PV). Phương trình biểu diễn:
MPn = Kc * (SPn - PVn)
trong đó:
MPn: thành phần tỉ lệ của đầu ra PID ở thời điểm lấy mẫu n
Kc: hằng số khuếch đại
SPn: đại lượng yêu cầu tại thời điểm lấy mẫu n
PVn: đại lượng thực tế tại thời điểm lấy mẫu n

Thành phần tích phân (integral) MI tỉ lệ với tổng các sai số qua thời gian, thể hiện bằng phương
trình:
MIn = KC * Ts / Ti * (SPn - PVn ) + MX
trong đó:
MIn: thành phần tích phân của đầu ra PID ở thời điểm lấy mẫu n
Kc: hằng số khuếch đại
Ts: thời gian lấy mẫu
Ti: hệ số tích phân
SPn: đại lượng yêu cầu tại thời điểm lấy mẫu n
PVn: đại lượng thực tế tại thời điểm lấy mẫu n
MX: giá trị của thành phần tích phân ở thời điểm lấy mẫu kế trước (n-1), còn được gọi là integral
sum hay bias.
Sau khi tính toán giá trị MIn, bias MX được thay thế bởi chính giá trị MIn đó với khả năng có thể bị
điều chỉnh hoặc cắt (chặn giới hạn), điều này sẽ được nói rõ ở phần sau. Giá trị ban đầu của bias MX, Mi
thường được lấy là giá trị của đầu ra bộ PID ngay trước thời điểm thực hiện lệnh PID lần đầu tiên. Các hằng
số khác ảnh hưởng đến thành phần này là: Kc - hằng số khuếch đại, Ts - thời gian lấy mẫu và Ti - hệ số tích
phân là đặc trưng cho ảnh hưởng của thành phần này lên toàn bộ đại lượng xử lý.

Thành phần vi phân (differential) MD tỉ lệ với độ thay đổi của sai sô, thể hiện qua phương trình:
MDn = KC * Td / Ts * ((SPn - PVn ) - (SPn - 1 - PVn - 1 ))
Với đặc tính có quán tính của mọi hệ vật chất, chúng ta có thể giả thiết rằng đại lượng thực tế PV không bao
giờ có sự thay đổi một cách gián đoạn. Tuy nhiên đại lương yêu cầu thì có thể tăng giảm gãy khúc (do được
tính trên lý thuyết). Về bản chất toán học, thành phần vi phân là phép lấy đạo hàm nên những sự thay đổi
gián đoạn có thể gây nên các giá trị vô cùng lớn ở đầu ra. Để tránh hiện tượng này, trong phương trình trên
ta giả thiết SPn = SPn - 1 và có thể viết:
MDn = KC * Td / Ts * (PVn - 1 - PVn)
trong đó:
MDn: thành phần vi phân của đầu ra PID ở thời điểm lấy mẫu n
Kc: hằng số khuếch đại
Ts: thời gian lấy mẫu
Td: hệ số vi phân
SPn: đại lượng yêu cầu tại thời điểm lấy mẫu n
SPn-1: đại lượng yêu cầu tại thời điểm lấy mẫu n-1
PVn: đại lượng thực tế tại thời điểm lấy mẫu n
PVn-1: đại lượng thực tế tại thời điểm lấy mẫu n-1

Trang 24
Tập lệnh S7-200
Như vậy trên thực tế không cần nhớ sai số ở thời điểm lấy mẫu kế trước mà chỉ cần nhớ đại lượng
thực tế. Trong lần tính toán đầu tiên PVn-1 được lấy bằng PVn.

Tùy theo ứng dụng thực tế, có thể bỏ bớt thành phần trong bộ điều khiển PID chứ không nhất thiết
phải bao gồm đủ cả ba thành phần, chẳng hạn có thể tạo bộ điều khiển tỉ lệ (P) hay bộ điều khiển chỉ chứa
các thành phần tỉ lệ và tích phân (PI). Sự lựa chọn này dựa trên cách đặt các tham số.
Nếu muốn bỏ thành phần tích phân (bỏ I), ta chọn hệ số tích phân bằng vô cùng (Ti = (). Trong
trường hợp này, thành phần tích phân vẫn không nhất thiết bằng không mà có thể bằng một giá trị không
đổi thông qua giá trị bias MX ban đầu.
Nếu muốn bỏ thành phần vi phân (bỏ D), ta chọn hệ số vi phân bằng không (Td = 0.0).
Nếu muốn bỏ thành phần tỉ lệ (bỏ P), ta chọn hệ số khuếch đại bằng không (Kc = 0.0). Trong trường hợp
này, vì các hằng số của các thành phần tích phân và vi phân có tính theo Kc nên đối với những thành phần
ấy, Kc được hiểu là bằng 1.0.

Một bộ điều khiển PID có hai đầu vào: đại lượng yêu cầu và đại lượng thực tế. Đây là những đại
lượng thật trong ứng dụng như nhiệt độ, áp suất, tốc độ, ... Để đưa vào tính toán trong một bộ điầu khiển,
chúng phải được đo, chuyển đổi về giá trị thích hợp và chuẩn hóa (nếu cần). Các bước này đều cần thiết cho
một bộ điều khiển PID, bộ này đòi hỏi các giá trị đầu vào là những giá trị số thực (dấu phẩy động) nằm
trong khoảng từ 0.0 đến 1.0.
Thông thường, những giá trị đo được được đưa vào PLC qua các đầu vào tương tự (qui về điện áp
trong khoảng 0 - 10VDC hoặc dòng điện 0 - 20mADC) thành những giá trị số nguyên 16 bit có dấu. Trước
hết những giá trị này phải được đổi thành các số thực 32 bit (dấu phẩy động), chẳng hạn theo thuật toán sau:
XORD AC0, AC0 //Clear the accumulator.
MOVW AIW0, AC0 //Save the analog value in the accumulator.
LDW>= AC0, 0 //If the analog value is positive,
JMP 0 //then convert to a real number.
NOT //Else,
ORD 16#FFFF0000, AC0 //sign extend the value in AC0.
LBL 0
DTR AC0, AC0 //Convert the 32-bit integer to a real number.
Bước tiếp theo là chuẩn hóa về khoảng [0.0 - 1.0] theo phương trình:
NNorm = (NRaw / Span) + Offset
trong đó:
NNorm là giá trị đã chuẩn hóa, đại diện cho một đại lượng thật
NRaw là giá trị thực chưa chuẩn hóa, đại diện cho một đại lượng thật
Span là hiệu của giá trị lớn nhất có thể có trừ đi giá trị nhỏ nhất có thể có của giá trị chưa chuẩn
hóa. Trong S7-200 thường là 32000 - 0 = 32000 đối với các đại lượng không đổi dấu (unipolar) và khi đó
Offset = 0.0, hay 32000 - (-32000) = 64000 đối với các đại lượng có thể vừa có giá trị dương vừa có giá trị
âm (bipolar) và khi đó Offset = 0.5.
Đoạn lệnh sau đây minh họa cho thuật toán này trong trường hợp đại lượng có dấu (bipolar):
/R 64000.0, AC0 //Normalize the value in the accumulator
+R 0.5, AC0 //Offset the value to the range from 0.0 to 1.0
MOVR AC0, VD100 //Store the normalized value in the loop TABLE

Một cách lô gic chúng ta thấy rằng cần phải có quá trình ngược lại với quá trình trên đối với giá trị
ở đầu ra của bộ điều khiển PID. Nghĩa là biến đổi và đưa về thang giá trị thích hợp cho đầu ra từ giá trị đầu
ra đã chuẩn hóa trong khoảng 0.0 đến 1.0. Phương trình thuật toán:
RScale = (MNorm - Offset) * Span
trong đó:
RScale là giá trị thích hợp cho đầu ra, đại diện cho một đại lượng thật
MNorm là giá trị đầu ra chuẩn hóa, đại diện cho một đại lượng thật
Span là hiệu của giá trị lớn nhất có thể có trừ đi giá trị nhỏ nhất có thể có của giá trị chưa chuẩn
hóa. Trong S7-200 thường là 32000 - 0 = 32000 đối với các đại lượng không đổi dấu (unipolar) và khi đó
Offset = 0.0, hay 32000 - (-32000) = 64000 đối với các đại lượng có thể vừa có giá trị dương vừa có giá trị
âm (bipolar) và khi đó Offset = 0.5.
Đoạn lệnh minh họa cho thuật toán:
MOVR VD108, AC0 //Move the loop output to the accumulator.
-R 0.5, AC0 //Include this statement only if the value is

Trang 25
Tập lệnh S7-200
//bipolar.
*R 64000.0, AC0 //Scale the value in the accumulator.
ROUND AC0 AC0 //Convert the real number to a 32-bit integer.
MOVW AC0, AQW0 //Write the 16-bit integer value to the analog
//output.

Chúng ta thường nói về vòng lặp điều khiển thuận khi hệ số khuếch đại dương (Kc > 0) hay vòng
lặp điều khiển đảo (nghịch) khi hệ số khuếch đại âm (Kc < 0). Trong trường hợp không có thành phần P
(Kc = 0), ta xét dấu của các hệ số Ti và Td.

Các giá trị yêu cầu và giá trị thực tế (biến điều khiển) là những đầu vào của bộ điều khiển PID, do
đó các trường tương ứng với chúng trong bảng dữ liệu của PID sẽ không bị thay đổi bởi lệnh này.
Ngược lại trường tương ứng với đầu ra được cập nhật bởi PID. Nó sẽ bị cắt (chặn) nếu vượt ra
ngoài khoảng cho phép [0.0 - 1.0].
Nếu có sử dụng thành phần tích phân (I), bias cũng được cập nhật và lại được dùng làm đầu vào
cho lần lấy mẫu kế tiếp. Tuy nhiên nó có thể được điều chỉnh trong trường hợp đầu ra bị chặn (vì vượt ra
ngoài khoảng [0.0 - 1.0]) theo phương trình sau:
MX = 1.0 - (MPn + MDn )
khi đầu ra lớn hơn 1.0, hay
MX = - (MPn + MDn )
khi đầu ra nhỏ hơn 0.0, trong đó:
MX là giá trị bias đã được điều chỉnh
MPn là giá trị thành phần tỉ lệ (P) của đầu ra ở thời điểm lấy mẫu n
MDn là giá trị thành phần vi phân (D) của đầu ra ở thời điểm lấy mẫu n
Mn là giá trị của đầu ra ở thời điểm lấy mẫu n
Bằng sự điều chỉnh này, giá trị đầu ra sẽ được đưa về khoảng hợp lệ. Giá trị bias cũng bị chặn trong
khoảng [0.0 - 1.0] và ghi vào bảng dữ liệu cho lần lấy mẫu tiếp theo sử dụng.
Giá trị bias trong bảng dữ liệu có thể thay đổi được ngay trước khi thực hiện lệnh PID nhưng phải
chú ý đây là một số thực nằm trong khoảng [0.0 - 1.0].
Giá trị đại lượng thực tế của lần lấy mẫu trước được lưu lại trong bảng dữ liệu để tính toán thành
phần vi phân, không bao giờ được thay đổi giá trị này.

Một bộ điều khiển PID có thể hoạt động ở một trong hai chế độ: Auto hoặc Manual. Thực ra không có chế
độ hoạt động nào được xây dựng sẵn cho PID trong S7-200. Sự tính toán chỉ được thực hiện khi có dòng
năng lượng (powerflow) đến đầu EN (enable) của bộ PID. PID được xem như hoạt động ở chế độ Auto khi
nó thực hiện tính toán một cách tuần hoàn liên tục. Trong trường hợp ngược lại, PID được xem như hoạt
động ở chế độ Manual. Vấn đề chúng ta cần xét đến là sự chuyển đổi đảm bảo tính liên tục từ chế độ
Manual sang chế độ Auto. Điều đó đòi hỏi đầu ra được tính trong chế độ Manual phải được ghi vào đầu vào
ở thời điểm chuyển đổi sang chế độ Auto. Tương tự như cách hoạt động của bộ đếm, CPU sử dụng một bit
nhớ để xác định thời điểm chuyển đổi: khi dòng năng lượng thay đổi từ 0 lên 1. Lúc đó CPU sẽ thực hiện
một loạt thao tác cần thiết:
Đặt giá trị yêu cầu bằng giá trị thực tế: SPn = PVn
Đặt giá trị kế trước của giá trị thực tế: PVn-1 = PVn
Đặt Bias bằng giá trị đầu ra: MX = Mn
Bit nhớ của một bộ PID có giá trị mặc định là 1 (ON), được đặt khi CPU khởi động hay chuyển từ chế độ
STOP sang chế độ RUN. Điều đó cũng có nghĩa là khi bộ PID được thực hiện lần đầu tiên, CPU không
nhận biết sự chuyển đổi trạng thái của dòng năng lượng từ 0 lên 1 và do đó không thực hiện các thao tác
nêu ở trên.

Lệnh PID là một lệnh đơn giản nhưng rất mạnh trong việc tính toán thuật toán PID. Nếu cần một số tính
năng khác, ví dụ như báo động hay những thay đổi đặc biệt, có thể sử dụng các lệnh khác để can thiệp.
Khi chương trình sử dụng được biên dịch, lỗi biên dịch có thể xuất hiện nếu địa chỉ bảng tham số [TBL]
hoặc toán hạng [LOOP] của bộ PID vượt ra ngoài phạm vi cho phép (out of range).
Một số phạm vi cho phép không được kiểm tra, vì vậy người lập trình phải chú ý. Chẳng hạn như những giá
trị yêu cầu và thực tế phải là các số thực nằm trong khoảng từ 0.0 đến 1.0, cũng như các giá trị thực tế kế
trước hay Bias, nếu được sử dụng, không được vượt ra ngoài khoảng [0.0 - 1.0].
Nếu lỗi xuất hiện trong quá trình tính toán thuật toán PID, bit đặc biệt SM1.1 (overflow) sẽ bằng 1 và quá
trình tính toán bị dừng lại. Trong những trường hợp như vậy, đầu ra của bộ PID có thể chưa được hoàn

Trang 26
Tập lệnh S7-200
thành, vì vậy người lập trình phải chú ý kiểm tra bit đặc biệt này để sử dụng đầu ra một cách hợp lý cũng
như điều chỉnh các dầu vào nếu cần thiết.
Định dạng bảng các tham số của một bộ PID bao gồm 36 bytes như sau:

Một ví dụ dùng bộ điều khiển PID:

Một bể nước được dùng để giữ một áp lực cột nước cố định. Nước chảy ra khỏi bể với tốc độ thay đổi
không xác định. Để đạt mục đích người ta sử dụng một bơm nước có lưu lượng điều chỉnh được một cách
liên tục để bơm nước vào bể.

Giá trị yêu cầu trong ví dụ này là phải giữ mức nước trong bể ở 75%. Giá trị thực tế chính là mức nước đo
được, thay đổi từ 0% (khi bể cạn) đến 100% (khi bể đầy). Giá trị xử lý (đầu ra bộ điều khiển PID) là vận tốc
bơm, điều chỉnh được từ 0% đến 100% lưu lượng danh định.

Giá trị yêu cầu, không thay đổi, sẽ được ghi trực tiếp vào bảng các tham số của bộ PID. Giá trị thực tế là giá
trị không đổi dấu (chỉ dương - unipolar) và là giá trị tương tự đọc vào từ bộ đo mức. Giá trị đầu ra PID cũng
là giá trị tương tự, unipolar, dùng để diều khiển tốc độ bơm. Cả hai giá trị tương tự này, đối với S7-200,
nằm trong khoảng từ 0 đến 32000.

Ta sử dụng bộ điều khiển PI (chỉ bao gồm thành phần tỉ lệ và tích phân, không chứa thành phần vi phân).
Các hằng số điều khiển được tính toán dựa trên những thông số kỹ thuật của hệ điều khiển và có thể điều
chỉnh trong quá trình khai thác thực tế. Ở đây ta không đi sâu vào vấn đề này.
Kc = 0.25
Ts = 0.1 s
Ti = 30 min
Bơm được điều khiển bằng tay cho đến khi mức nước trong bể đạt 75% thì chuyển sang chế độ tự động và
mở van cho nước chảy ra khỏi bể. Đầu vào I0.0 được sử dụng để đổi chế độ: I0.0 = 0 là Manual; I0.0 = 1 là
Auto. Khi ở trong chế độ Manual, tốc độ bơm được xác định bởi số thực trong khoảng [0.0 - 1.0] ghi ở
VD10

Chương trình:

Trang 27
Tập lệnh S7-200

Trang 28
Tập lệnh S7-200

10. Lệnh phép toán logic


10.1 Lệnh đảo byte, word, doubleword

10.2 Lệnh AND, OR, XOR

Trang 29
Tập lệnh S7-200
AND bytes, OR bytes, EXCLUSIVE OR bytes: Lệnh AND Bytes thực
hiện phép toán lô gic AND giữa các bit tương ứng của các byte đầu vào
được định địa chỉ bởi các đầu vào IN1 và IN2, kết quả lưu vào byte được
định địa chỉ bởi đầu ra OUT. Lệnh OR Bytes thực hiện phép toán lô gic
OR giữa các bit tương ứng của các byte đầu vào được định địa chỉ bởi
các đầu vào IN1 và IN2, kết quả lưu vào byte được định địa chỉ bởi đầu
ra OUT. Lệnh EXCLUSIVE OR Bytes thực hiện phép toán lô gic XOR
giữa các bit tương ứng của các byte đầu vào được định địa chỉ bởi các
đầu vào IN1 và IN2, kết quả lưu vào byte được định địa chỉ bởi đầu ra
OUT.
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
Tương tự cho các câu lệnh AND words, OR words, EXCLUSIVE OR words. AND double words, OR double
words, EXCLUSIVE OR double words.

Ví dụ các lệnh lô gic:

11. Lệnh dịch và quay


11.1 Dịch trái hay phải
Những lệnh ghi dịch (shift) nội dung một byte được định địa chỉ bởi
đầu vào IN đi [N] lần (định bởi toán hạng N), mỗi lần một bit sang phải
(Shift Right Byte) hoặc sang trái (Shift Left Byte), kết quả lưu vào byte
được định địa chỉ bởi đầu ra OUT. Phép ghi dịch (shift) điền giá trị 0
(OFF) vào các bit đã bị dịch đi. Như vậy nếu số lần dịch [N] lớn hơn 8,
thực tế chỉ cần dịch tối đa 8 lần vì sau đó kết quả chắc chắn bằng 0.
Nếu số lần dịch [N] lớn hơn 0, bit cuối cùng trong byte bị dịch ra ngoài
sẽ được ghi vào bit đặc biệt SM1.1 (overflow). Bit đặc biệt SM1.0
(zero) sẽ có giá trị 1 (ON) nếu kết quả cuối cùng sau phép dịch bằng 0.
Các lệnh ghi dịch một byte đều xem các byte là những số không dấu (unsigned).
Trang 30
Tập lệnh S7-200
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng bit cuối cùng bị dịch ra ngoài.
11.2 Quay trái hay phải
Những lệnh quay (rotate) nội dung một byte được định địa chỉ bởi đầu vào IN đi [N] lần (định bởi toán
hạng N), mỗi lần một bit sang phải (Rotate Right Byte) hoặc sang trái (Rotate Left Byte), kết quả lưu vào
byte được định địa chỉ bởi đầu ra OUT. Phép quay (rotate) điền giá trị bit cuối cùng (bị quay ra ngoài) vào
bit đầu tiên. Như vậy nếu số lần quay [N] lớn hơn 8, thực tế chỉ cần quay một số lần bằng số dư trong phép
chia [N] cho 8 vì sau đó quá trình sẽ được lặp lại. Do đó số lần quay thực tế chỉ nằm trong khoảng từ 0 đến
7. Nếu số lần quay bằng 0 (hay số lần quay chia hết cho 8), phép quay không được thực hiện. Trong trường
hợp phép quay được thực hiện, bit cuối cùng trong byte bị quay ra ngoài sẽ được ghi vào bit đặc biệt SM1.1
(overflow). Bit đặc biệt SM1.0 (zero) sẽ có giá trị 1 (ON) nếu kết quả cuối cùng sau phép quay bằng 0.
Các lệnh ghi quay một byte đều xem các byte là những số không dấu (unsigned).
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.0 (Zero): bằng 1 nếu kết quả bằng 0.
+ SM1.1 (Overflow): bằng bit cuối cùng bị quay ra ngoài.

Ví dụ sử dụng các phép dịch và quay:

Trang 31
Tập lệnh S7-200

11.3 Lệnh dịch thanh ghi các bit (Shift Register Bit):
Lệnh này dịch (shift) nội dung một khối các bit liên tiếp đi một bit, với
bit đầu tiên bị dịch đi được thay thế bằng giá trị bit được trỏ đến bởi toán
hạng DATA và bit cuối cùng bị dịch ra ngoài sẽ được ghi vào bit đặc biệt
SM1.1. Khối các bit liên tiếp này được xác định với bit đầu tiên (bit thấp
nhất) có địa chỉ định bởi toán hạng S_BIT và có độ dài bằng giá trị tuyệt
đối của toán hạng [N]. Điều đó có nghĩa [N] là một số có dấu, dấu của
[N] xác định chiều dịch chuyển: [N] dương thì dịch lên còn [N] âm thì
dịch xuống.
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.
+ Lỗi 0091: toán hạng vượt quá giới hạn cho phép.
+ Lỗi 0092: lỗi trường số (count field).
Những bit nhớ đặc biệt có nội dung bị ảnh hưởng bởi lệnh này:
+ SM1.1 (Overflow): bằng bit cuối cùng bị quay ra ngoài.
Minh họa lệnh này với khối các bit bắt đầu từ V33.4 và có độ dài 14 bit:

Ví dụ khác:

Trang 32
Tập lệnh S7-200

11.4 Lệnh SWAP


Lệnh này (Swap Bytes) có toán hạng là một từ đơn (Word) được định địa
chỉ bởi đầu vào IN. Lệnh Swap tráo đổi nội dung hai byte nhớ của một từ
đơn: byte cao thành byte thấp và byte thấp thành byte cao. Kết quả được
ghi vào chính từ đơn là toán hạng của lệnh.
Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0006: địa chỉ gián tiếp.

Ví dụ về lệnh dịch chuyển và lệnh Swap:

12. Các lệnh điều khiển chương trình


12.1 END có điều kiện
Lệnh END có điều kiện dùng để kết thúc chương trình chính khi thỏa
mãn điều kiện trước nó.
Lệnh END không có toán hạng, không được sử dụng trong các chương
trình con hay trong các chương trình xử lý ngắt. Phần mềm STEP 7
Micro / Win 32 tự động thêm lệnh END không điều kiện (lệnh END
không có bất cứ điều kiện nào trước nó) vào cuối mỗi chương trình
chính.
12.2 STOP
Lệnh STOP dừng chương trình đang được thực hiện ngay lập tức bằng
cách chuyển CPU từ chế độ hoạt động (RUN) sang chế độ STOP. Nếu lệnh STOP được thực hiện từ một
chương trình xử lý ngắt thì chương trình xử lý ngắt ấy sẽ bị kết thúc ngay đồng thời tất cả những ngắt đang
chờ được xử lý (nếu có) cũng đều bị hủy. Tuy nhiên CPU vẫn xử lý nốt những lệnh còn lại trong vòng quét

Trang 33
Tập lệnh S7-200
của chương trình chính khi bị ngắt và chỉ dừng chương trình ở cuối vòng quét bằng cách chuyển chế độ từ
RUN sang STOP.
12.3 Lệnh Watchdog Reset
Lệnh này khởi động lại đồng hồ canh hệ thống (System Watchdog). Điều đó cho phép kéo dài thời gian
thực hiện vòng quét mà không bị lỗi “watchdog”. Chú ý cẩn thận khi sử dụng lệnh này vì khi nó nằm trong
các vòng lặp (không kết thúc vòng quét) hay khi nó kéo dài vòng quét sẽ ảnh hưởng tới hệ thống, chẳng hạn
như việc thực thi các tính năng:
§ Truyền thông (trừ chế độ FreePort)
§ Cập nhật các đầu vào ra (trừ những lệnh truy xuất trực tiếp)
§ Cập nhật “Forcing”
§ Cập nhật các bit đặc biệt, như SM0, SM5 đến SM29
§ Chẩn đoán lỗi Run-Time
§ Các bộ định thời có độ phân giải 10 ms và 100ms hoạt động sai lệch (đặc biệt khi thời gian vòng quét vượt quá 25s)
§ Lệnh STOP được sử dụng trong chương trình con xử lý ngắt
Nếu mong muốn thời gian vòng quét quá 500ms, hoặc mong là có thể chờ ngắt quá 300ms thì phải dùng
lệnh WDR.

Việc chuyển công tắc của CPU sang vị trí STOP sẽ dừng chương trình trong vòng 1.4 giây.
12.4 Lệnh nhảy
Lệnh nhảy (Jump to Label) rẽ nhánh chương trình đến một đoạn lệnh
được đánh dấu bằng một nhãn. Khi một lệnh nhảy được thực hiện, đỉnh
ngăn xếp luôn luôn có giá trị 1. Nhãn dùng để đánh dấu vị trí cho các
lệnh nhảy.
Cả hai lệnh trên có toán hạng là một số nguyên trong khoảng từ 0 đến
255 (số nhãn). Đối với CPU 212 chỉ được từ 0 đến 63. Lệnh nhảy chỉ
được phép rẽ nhánh chương trình đến một nhãn hoặc ở cùng trong
chương trình chính, hoặc ở cùng trong một chương trình con hay chương
trình xử lý ngắt.

Trang 34
Tập lệnh S7-200
12.5 Lệnh SCR

Ví dụ:

Trang 35
Tập lệnh S7-200

Xem thêm: Điều khiển hội tụ, phân tán, có điều kiện, Lệnh vòng lặp For-Next.

13. Lệnh chương trình con


Lệnh gọi (CALL) một chương trình con chuyển quyền điều khiển đến
cho chương trình con đó. S7-200 có thể gọi một chương trình con có
hoặc không có tham số. Trong STEP 7 Micro / Win 32, ta thêm chương
trình con vào chương trình từ Menu chính Edit > Insert > Subroutine.
Lệnh kết thúc chương trình con (Return) có điều kiện kết thúc việc thực
hiện chương trình con đó và trở về chương trình chính khi thỏa mãn điều
kiện trước nó.
Một khi việc thực hiện một chương trình con kết thúc, quyền điều khiển
được chuyển về cho lệnh kế tiếp lệnh gọi chương trình con ấy.
Toán hạng của lệnh gọi chương trình con chính là định danh của chương trình con, là một số nguyên trong
khoảng từ 0 đến 255.

Những lỗi có thể được gây nên bởi lệnh này (ENO = 0):
+ Bit đặc biệt SM4.3 = 1: lỗi Run - Time.
+ Lỗi 0008: số lần gọi chương trình con vượt quá con số cho phép.

STEP 7 Micro / Win 32 tự động gắn lệnh kết thúc và trở về từ chương trình con (RET) vào cuối mỗi
chương trình con được thêm vào.

Một chương trình con có thể được gọi từ trong một chương trình con, hiện tượng này gọi là Nesting. Độ sâu
của Nesting tối đa là 08 lần gọi. Việc gọi đến một chương trình con từ chính nó (đệ qui - Recursion) không
bị cấm nhưng người lập trình phải thật sự cẩn trọng với cách dùng này.

Khi gọi một chương trình con, CPU lưu lại toàn bộ ngăn xếp, ghi giá trị 1 vào đỉnh ngăn xếp và 0 vào các
giá trị còn lại của ngăn xếp rồi chuyển quyền điều khiển cho chương trình con. Khi việc thực hiện một
chương trình con hoàn tất, ngăn xếp được phục hồi lại trạng thái trước đó và quyền điều khiển được chuyển
Trang 36
Tập lệnh S7-200
về cho chương trình đã gọi. Lưu ý những thanh ghi đa năng (Accumulators) không được lưu hay phục hồi
trong các quá trình trên.

Việc gọi một chương trình con với tham số được thực hiện thông qua việc định nghĩa cho chương trình con
một bảng tham số cục bộ. Mỗi tham số bao gồm tên tham số (tối đa 08 ký tự), kiểu biến (vào, ra hay tạm
thời) và kiểu dữ liệu (Bool, Byte, INT, ...). Mỗi chương trình con có thể có nhiều nhất 16 tham số.

Kiểu biến của tham số xác định tham số vào cho chương trình con (IN), vừa vào vừa ra (IN_OUT) hay là
tham số ra từ chương trình con (OUT). Cụ thể như sau:
§ Tham số dạng vào (IN) được truyền đến cho chương trình con: Nếu tham số là địa chỉ trực tiếp (ví dụ
VB10), nội dung ô nhớ ở địa chỉ ấy sẽ được truyền vào cho chương trình con; Nếu tham số là địa chỉ
gián tiếp (ví dụ *AC1), nội dung ô nhớ được trỏ đến sẽ được truyền vào cho chương trình con; Nếu tham
số là hằng số (ví dụ 16#9A8B) hay là một địa chỉ (ví dụ &VB100), hằng số hay địa chỉ ấy sẽ được
truyền vào cho chương trình con.
§ Tham số dạng vào - ra (IN_OUT): chương trình con sử dụng số liệu từ địa chỉ xác định bởi tham số này
đồng thời xuất dữ liệu cũng ra địa chỉ ấy. Hiển nhiên rằng tham số dạng này không thể là một hằng số
(như 16#1234) hay địa chỉ (như &VB100).
§ Tham số dạng ra (OUT): chương trình con xuất dữ liệu ra địa chỉ này. Tham số dạng này không thể là
một hằng số (như 16#1234) hay địa chỉ (như &VB100).
§ Tham số cục bộ (TEMP): là những tham số được chương trình con sử dụng chỉ trong phạm vi chương
trình con này.
Local variable tabble:

Để thêm vào một tham số cho một chương trình con, trong bảng các tham số ở đầu chương trình con (hình
phía trên) đặt con trỏ vào kiểu biến ta muốn thêm (IN, IN/OUT, OUT hay TEMP), nhấn phím phải chuột và
chọn Insert > Row below để thêm vào một tham số mới ở vị trí dưới con trỏ với dạng tham số thích hợp.

Kiểu dữ liệu của tham số xác định kích thước cũng như định dạng của nó:
§ Kiểu dòng năng lượng (Boolean Power Flow): được xem là kiểu bit lô gic nhưng chỉ có thể là dạng vào
(IN) và phải được khai báo trước tất cả các kiểu khác (như những tham số EN và IN1 trong ví dụ trên).
§ Kiểu bit lô gic (Boolean): đại diện cho một bit, có thể là dạng ra (OUT) hoặc vào (IN), như IN3.
§ Kiểu Byte, Word, DWord: tham số ra hoặc vào, 1, 2 hay 4 bytes đại diện cho các số không dấu
§ Kiểu Int, DInt: tham số ra hoặc vào, 2 hay 4 bytes đại diện cho các số nguyên có dấu (signed).
§ Kiểu Real: tham số ra hoặc vào, đại diện cho các số thực dấu phẩy động 4 bytes (theo chuẩn IEEE).

Một ví dụ gọi chương trình con với các tham số được khai báo như trên:

Trong ví dụ trên, tham số IN4 = &VB100 được chứa vào một từ kép (double word unsigned). Nếu gán cho
tham số một giá trị là hằng số, 16#1234 chẳng hạn thì phải xác định kiểu dữ liệu cho nó bằng cách viết
DW#16#1234.
Trang 37
Tập lệnh S7-200
Khi một chương trình con được gọi, nó bao gồm một vùng dữ liệu cục bộ chứa các tham số (được đánh địa
chỉ như cột đầu tiên của bảng các tham số). Những tham số dạng vào sẽ được sao chép vào vùng dữ liệu cục
bộ này trước khi chương trình con thực hiện và những tham số dạng ra lại được sao chép ra từ vùng ấy sau
khi việc thực hiện chương trình con hoàn thành. Lưu ý chương trình con không kiểm tra kiểu dữ liệu nên
người lập chương trình phải chú ý sử dụng đúng kiểu đã khai báo.
Tất nhiên thứ tự các tham số cũng phải phù hợp như đã khai báo (đặc biệt trong STL): đầu tiên là dạng vào
(IN) rồi đến các dạng vào - ra (IN/OUT) và dạng ra (OUT).

Ví dụ sử dụng chương trình con:

14. Lệnh ngắt


Xem giáo trình lí thuyết.

Trang 38
GIÁO TRÌNH BÀI TẬP
ĐIỀU KHIỂN LOGIC
(Sử dụng với Training Kit S7-200)

ThS. Nguyễn Bá Hội


Đại học Đà Nẵng - Trường Đại học Bách khoa
hoinb@ud.edu.vn

Giáo trình đầy đủ bao gồm 3 phần:


1. Giáo trình lý thuyết
2. Giáo trình tập lệnh
3. Giáo trình bài tập

Giáo trình bài tập S7-200 có kèm theo:


1. Hướng dẫn sử dụng Training Kit
2. S7-200 System Manual
3. CD phần mềm Step7-MicroWin v4.0

Các bài tập thể hiện qua mô hình được chọn lọc từ những ứng
dụng thực tế, sắp xếp từ đơn giản đến phức tạp.
nguyen ba hoi

MỤC LỤC:

1. ON/OFF (Contact, coil, box).................................................3


2. ĐẢO CHIỀU ĐỘNG CƠ (Set, reset)....................................3
3. ĐÈN GIAO THÔNG (Timer, Compare, SM, M)....................4
4. BĂNG TẢI (Timer)................................................................5
5. KHỞI ĐỘNG SAO TAM GIÁC (Timer).................................6
6. TỰ ĐỘNG ĐÓNG CÁC CẤP ĐIỆN TRỞ (Timer) ................7
7. HỆ THỐNG CẤP NƯỚC (Timer, P, N)................................8
8. ĐÈN NHẤP NHÁY (Timer, Rotate, SM, Subroutine) ...........9
9. BƠM ĐỊNH LƯỢNG CHẤT LỎNG (Timer, Compare).......10
10. ATS (Timer, Counter, Compare) ........................................11
11. THANG NÂNG HÀNG (V, Set, Reset) ...............................12
12. TRỘN PHỐI LIỆU (Timer)..................................................13
13. TRỘN HOÁ CHẤT (Timer).................................................13
14. MÁY PHA CÀ PHÊ/TRÀ (Timer)........................................15
15. CẢNH BÁO LỖI TRẠM BIẾN ÁP (Timer, subroutine)........16
16. BÃI ĐẬU XE .......................................................................16
17. ĐIỀU KHIỂN QUY TRÌNH GIA CÔNG SP .........................17

Chương trình cho các bài tập được trình bày cuối giáo trình.

Trang 2
nguyen ba hoi

1. ON/OFF (Contact, coil, box)


I. Yêu cầu
§ Đóng cắt một tiếp điểm vào ra bằng nút ấn
II. Bảng đầu vào ra.
1.1.1.1.1 Tên
Địa chỉ Ghi chú
biến
Bat I0.0 Nút nhấn Bật
Tat I0.1 Nút nhấn Tắt
HT Q0.0 Đầu ra bật/tắt hệ thống

III. Giản đồ thời gian

t
Bat
t
Tat
t
HT

2. ĐẢO CHIỀU ĐỘNG CƠ (Set, reset)


MOTOR INVERTOR CIRCURT
I. Mô hình và Yêu cầu
L1 START
L2
K1 L3
Nút “Direct” ßà động cơ quay
thuận.
REVERSAL
K1 K3
Nút “Reversal” ßà động cơ quay
DIRECT
ngược.
K3 STOP
Nút Stop ßà dừng động cơ.

II. Bảng đầu vào ra


K1
PI

U1
V1 M
K3 W1 3
H2

H1

2.1.1.1.1 Tên
Địa chỉ Ghi chú
biến
Start I0.0 Cap nguon (Bat)
Stop_off I0.1 Cat nguon (Tat)
Direct I0.2 Nut chay thuan
Reversal I0.3 Nut chay nguoc
K1 Q0.0 Contactor K1
K3 Q0.1 Contactor K3
H1 Q0.2 Chi thi DC dang chay thuan
H2 Q0.3 Chi thi DC dang chay nguoc
Mean1 V0.0 Bit trung gian bat/tat
Mean2 V0.1 Bit trung gian "Chay thuan"
Mean3 V0.2 Bit trung gian "Chay nguoc"

Trang 3
nguyen ba hoi

III. Giản đồ thời gian

t
Start
t
Stop_off
t
Direct
t
Reversal
t
K1
t
K3
t
H1
t
H2

3. ĐÈN GIAO THÔNG (Timer, Compare, SM, M)


I. Mô hình và Yêu cầu

TRAFFIC LIGHT SYSTEM

G2 On
GF2
Automatic
Y2
R1 Y1 G1 On
R2 Flash
RF2
RF1 GF1 Pedestrian
button

Off

RF2
GF1 RF1

GF2 RF2
R2
G1 Y1 R1 GF2
RF1 Y2

G2
R2 GF1

Y2 R1

G2 Y1

G1

Điều khiển đèn giao thông ngã tư. – Thời gian sáng đèn đỏ, vàng, xanh lần lượt là 30s, 3s, 27s.
Đèn xanh đi bộ sáng khi đèn đỏ cùng phía sáng và nhấp nháy với chu kỳ 1s khi đèn vàng cùng
phía sáng.
II. Bảng đầu vào ra
Symbol Address Comment
Automatic I0.0 Nút nhấn start
Off I0.1 Nút nhấn stop
R1 Q0.0 Đỏ 1
Y1 Q0.1 Vàng 1
G1 Q0.2 Xanh 1

Trang 4
nguyen ba hoi

RF1 Q0.3 Xanh đi bộ 1


GF1 Q0.4 Đỏ đi bộ 1
R2 Q0.5 Đỏ 2
Y2 Q0.6 Vàng 2
G2 Q0.7 Xanh 2
RF2 Q1.0 Xanh đi bộ 2
GF2 Q1.1 Đỏ đi bộ 2

III. Giản đồ thời gian


T=60s
t
Automatic
t
Off
T37=30s
t
R1
T42=3s
t
Y1
T40=27s
t
G1
t
RF1
t
GF1
T41=30s
t
R2
T39 =3s
t
Y2
T38=27s
t
G2
RF2
t
GF2

4. BĂNG TẢI (Timer)


I. Mô hình và Yêu cầu

SEQUENCE CONTROL CIRCURT Start


L1
L2 Enable
L3
Conv 3

Conv 2

Conv 1

K1 K3 K4 STOP

U1V1 W1 U1V1 W1 U1V1 W1

M1 M2 M2

Conveyor 1 Conveyor 2 Conveyor 3


K1

H4

K3 H3

K4 H2

H1

§ Sử trong các nhà máy chuyển cát, hệ thống trộn bê tông nhựa nóng hay định lượng phối liệu
trong nhà máy xi măng …
§ Timer
Chế đố tự động: Nút ENABLE: băng tải thứ nhất hoạt đông, 10s tiếp theo thì băng tải thứ 2 hoạt động,
10s nữa băng tải thứ 3. Chế đố tay: Muốn băng tải nào hoạt động thì ấn nút CONV của băng tải đó. Để
chuyển đổi giữa hai chế độ: nhấn STOP rồi nhấn START trở lại.
II. Bảng đầu vào ra
Trang 5
nguyen ba hoi

Symbol Address Comment


Start I0.0 Nút nhấn start
STOP I0.1 Nút nhấn stop
Enable I0.2 Cho phép hoạt động tự động
Conv 1 Q0.0 Băng tải 1 (K1)
Conv 2 Q0.1 Băng tải 2 (K3)
Conv 3 Q0.2 Băng tải 3 (K4)
H1 Q0.4 Đèn báo Conv 1
H2 Q0.5 Đèn báo Conv 2
H3 Q0.6 Đèn báo Conv 3
H4 Q0.7 Đèn báo ở chế độ tự động

III. Giản đồ thời gian

t
Start
t
STOP
t
Enable
t
Conv 1
t
Conv 2 T=10s

t
Conv 3 T=20s

t
H1
t
H2
t
H3
t
H4

5. KHỞI ĐỘNG SAO TAM GIÁC (Timer)


I. Mô hình và Yêu cầu
§ Mục đích: giảm điện áp khi khởi động động cơ để đảm bảo dòng khởi động không
ảnh hưởng đến điện lưới.
STAR-DELTA CIRCURT
L1 START Nhấn nút START (S6) hệ
K1
L2
L3 thống đóng contactor K3 và
K4: động cơ hoạt động chế
độ đấu sao (điện áp làm việc
FAST
220VAC). Sau thời gian 30
SLOW
giây hệ thống ngắt contactor
K3 K1 K3 K4 STOP K3 và chuyển sang đóng
contactor K1, động cơ hoạt
K4
động ở chế độ đấu tam giác
(điện áp làm việc 380VAC).
Các rơle K1, K3, K4 cho
K1 phép đấu nối motor thực bên
ngoài.
U1 W2
V1 M V2
K3
W1 3 U2 II. Bảng đầu vào ra
K4 H2

H1 Trang 6
nguyen ba hoi

Symbol Address Comment


STOP I0.0 Dừng
SLOW I0.1 Chạy chậm
FAST I0.2 Chạy nhanh
START I0.3 Khởi động động cơ sao tam giác
K1 Q0.0 Contactor K1
K3 Q0.1 Contactor K3
K4 Q0.2 Contactor K4
H1 Q0.4 Đèn báo chạy chậm
H2 Q0.5 Đèn báo chạy nhanh

III. Giản đồ thời gian

t
STOP
t
SLOW
t
FAST
t
START
t
K1
t
K3 T=30s

t
K4 T=30s

t
H1
t

6. TỰ ĐỘNG ĐÓNG CÁC CẤP ĐIỆN TRỞ (Timer)


I. Mô hình và Yêu cầu
THREE PHASE AUTOMATIC STARTER
§ Mục đích: giảm dòng khởi động
L1
L2
AUTO
của toàn hệ thống hoặc thay đổi
K1 L3 MANUAL
tốc độ động cơ bằng các cấp điện
K2
K2
trở
K3
K1 K2 K3 K4
K4 Chế độ tự động: nhấn nút AUTO (S5) thì hệ
K3 STOP thống đóng contactor K1, sau 10s đóng K4, và
10s tiếp theo đóng K3, 10s tiếp theo đóng K2.
K4 Nhấn STOP thì các contactor K1 đến K4 đều
mở
K1 Chế độ tay: Nhấn MANUAL để chuyển sang
K2 UVW
chế độ bằng tay, muốn đóng cấp điện trở nào
M X
K3 H3 3 Y
Z
nhấn nút tương ứng K2, K3, K4ó (S3, S2, S1)
K4 H2
lúc này contactor K1 đóng kèm theo với
H1
contactor K2 hoặc K3 hoặc K4
II. Bảng đầu vào ra
Symbol Address Comment
AUTO I0.0 Chế độ tự động
STOP I0.1 Chế độ dừng
MANUAL I0.2 Chế độ bằng tay

Trang 7
nguyen ba hoi

S1(K4) I0.3 Nút nhấn S1 tác động contactor K4


S2(K3) I0.4 Nút nhấn S2 tác động contactor K3
S3(K2) I0.5 Nút nhấn S3 tác động contactor K2
K1 Q0.0 Đóng contactor K1
K2 Q0.1 Đóng contactor K2
K3 Q0.2 Đóng contactor K3
K4 Q0.3 Đóng contactor K4
H1 Q0.4 Đèn báo đóng contactor K2 ở chế độ MANUAL
H2 Q0.5 Đèn báo đóng contactor K3 ở chế độ MANUAL
H3 Q0.6 Đèn báo đóng contactor K4 ở chế độ MANUAL

III. Giản đồ thời gian


AUTO MANUAL
t
AUTO
t
STOP
t
MANUAL
t
S1 (K4)
t
S2 (K3)
t
S3 (K2)
t
K1
t
K4 T=10s

t
K3 T=10s

t
K2 T=10s

t
H1
t
H2
t
H3

7. HỆ THỐNG CẤP NƯỚC (Timer, P, N)


I. Mô hình và Yêu cầu công nghệ
§ Điều khiển cung cấp và phân phối nước sinh hoạt dân cư
Hệ thống bể chứa (tank) gồm 4 mức
AUTOMATIC WATER CONTROL SYSTEM cảm biến S6, S7, S9, S11.
S4: AUTO PUMP 1,2: bơm nước vào bể chứa
S3: K2
PUMP 3,4: bơm nước từ bể chứa đến
S11
hộ sinh hoạt
TANK S2: K3
S11 Chế độ bằng tay:
S1: MANUAL
S9
S9
Nhấn nút MANUAL (S1) cho phép
S0: STOP
thử các PUMP 1 và PUMP 3 độc lập
S7 nhau.
S6
S7 Nhấn nút S2 thì PUMP1 bơm nước
S6 vào bể cho đến khi S11=1 thì dừng lại.
Khi nhấn nút S3 thì PUMP3 bơm nước
PUMP 4
cấp cho các hộ sinh hoạt cho đến khi
K2 H4 H3
S6=0 thì dừng lại.
PUMP 3
K3 H3 K2 PUMP 2 Nhấn STOP hệ thống dừng hoạt động.
PUMP 1
H2 H1 K3 Chế độ tự động:
H1 PUMP1,2 bơm nước vào bể chứa cho
đến khi S9=1 thì tắt PUMP1 (PUMP2
tiếp tục), PUMP 3,4 hoạt động bơm nước đến các hộ sinh hoạt, đến khi S7=1 thì PUMP3 dừng và bật
PUMP1 trở lại.
II. Bảng đầu vào ra
Trang 8
nguyen ba hoi

Symbol Address Comment


STOP I0.0 Dừng
MANUAL I0.1 Chế độ tay
S2(K3) I0.2 Nút nhấn chọn bơm 3 hoạt động ở chế độ bằng tay
S3(K2) I0.3 Nút nhấn chọn bơm 1 hoạt động ở chế độ bằng tay
AUTO I0.4 Chế độ tự động
S6 I0.5 Sensor cảm biến mức thấp S6
S7 I0.6 Sensor cảm biến mức thấp S7
S9 I0.7 Sensor cảm biến mức cao S9
S11 I1.0 Sensor cảm biến mức cao S11
PUMP1 (K2) Q0.0 Bơm 1 hoạt động
PUMP2 (H1) Q0.1 Bơm 2 hoạt động
PUMP3(K3) Q0.2 Bơm 3 hoạt động
PUMP4(H3) Q0.4 Bơm 4 hoạt động

III. Giản đồ thời gian


AUTO MANUAL
t
STOP
t
MANUAL
t
AUTO
t
S2(K3)
t
S3(K2)
t
S6
t
S7
t
S9
t
S11
t
PUMP1 (K2)
t
PUMP2 (H1)
t
PUMP3 (K3)
t
PUMP4 (H3)

8. ĐÈN NHẤP NHÁY (Timer, Rotate, SM, Subroutine)


I. Mô hình và Yêu cầu
§ Bảng quảng cáo, điều khiển hệ thống đèn ở các sân khấu hay các vũ trường…

Nút UP: sáng dần từ H1 đến H8,


AUTOMATIC LIGHT
H8
S5: AUTO cách nhau 1s.
S4: CLOCK Nút DOWN: tắt dần từ H8 đến H1,
H7 S3: UP cách nhau 1s.
S2: DOWN Nút AUTO: đèn sáng quay vòng.
H6
S1: START

S0: STOP
H5

H8 II. Bảng cấu hình đầu vào ra


H4
H7

H6
H3
H5

H4 H2

H3
H1 Trang 9
H2

H1
nguyen ba hoi

Symbol Address Comment


STOP I0.0 Dừng
START I0.1 Khởi động
DOWN I0.2 Chế độ hiển thị giảm dần
UP I0.3 Chế độ hiển thị tăng dần
CLOCK I0.4 Chế độ nhấp nháy xung
AUTO I0.5 Chế độ tự động
H1 Q0.0 Led hiển thị 1
H2 Q0.1 Led hiển thị 2
H3 Q0.2 Led hiển thị 3
H4 Q0.3 Led hiển thị 4
H5 Q0.4 Led hiển thị 5
H6 Q0.5 Led hiển thị 6
H7 Q0.6 Led hiển thị 7
H8 Q1.7 Led hiển thị 8

II. Giản đồ thời gian


DOWN UP CLOCK AUTO
t
STOP
t
START
t
DOWN
t
UP
t
CLOCK
t
AUTO
t
H1
t
H2
t
H3
T=1s
T=1s t
H4
t
H5
t
H6
t
H7
H8

9. BƠM ĐỊNH LƯỢNG CHẤT LỎNG (Timer, Compare)


I. Mô hình và Yêu cầu

XILO CONTROL § Hệ thống sẽ tự điều khiển


Full
bơm hoặc xả để mực chất
Level 4
lỏng đến vị trí Level 1, Level
S11
Level 3
2, Level 3, Level 4, Full,
S10
Level 2
Empty
S11 Full
Level 1
S9
S9 Level 4 Empty
S8

S7
S8 Level 3
II. Bảng đầu vào ra
S7 Level 2
S6
S6 Level 1

S10 Empty

V1 H4

M1 H3
M1
H2 V1

H1 Trang 10
nguyen ba hoi

9.1.1.1.1 Tên
Địa chỉ Ghi chú
biến
Level1 I0.0 Dieu khien chat long ve muc 1
Level2 I0.1 Dieu khien chat long ve muc 2
Level3 I0.2 Dieu khien chat long ve muc 3
Level4 I0.3 Dieu khien chat long ve muc 4
Empty I0.4 Dieu khien bom chat long day xilo
Full I0.5 Dieu khien hut het chat long trong xilo
S6 I0.6 Sensor xac dinh chat long co o vi tri muc 1
S7 I0.7 Sensor xac dinh chat long co o vi tri muc 2
S8 I1.0 Sensor xac dinh chat long co o vi tri muc 3
S9 I1.1 Sensor xac dinh chat long co o vi tri muc 4
S10 I1.2 Sensor xac dinh het chat long
S11 I1.3 Sensor xac dinh chat long day binh
V1 Q0.0 Bat van xa
M1 Q0.1 Bat bom day chat long
H1 Q0.2 Chi thi dieu khien o muc 1
H2 Q0.3 Chi thi dieu khien o muc 2
H3 Q0.4 Chi thi dieu khien o muc 3
H4 Q0.5 Chi thi dieu khien o muc 4
HEmpty M1.0 Chi thi trung gian cho 'Empty'
HFull M0.1 Chi thi trung gian cho 'Full'
Lev_Var VW0 Chi muc hien tai cua chat long

10. ATS (Timer, Counter, Compare)


I. Mô hình và Yêu cầu
§ Chuyển đổi điện áp lưới
sang chế độ điện áp máy
AUTOMATIC TRANSFER SYSTEM phát khi mất điện và
LINE POWER
L1
L2
ngược lại.
L3 Hệ thống điều khiển đóng cắt
thông qua cặp contactor K1
S2: Feedback
K1 K2 và K2.
S1: Status
K1: đóng nguồn điện lưới
K2: đóng nguồn máy phát
H1: tín hiệu đề máy phát
H2: tín hiệu dừng máy phát
H3: báo lỗi máy phát không đề
MF
được
K1 GENERATO R S1: Status: nhận biết trạng thái
của lưới điện (S1=0: có điện hay
K2
S1=1: mất điện), vẫn mất điện
H3 sau 10s thì phát tín hiệu đề máy
H2 phát (H1). Nếu đề lần đầu máy
H1 phát hoạt động tốt thì tín hiệu
feedback=1, bộ điều khiển sẽ
không phát tín hiệu đề nữa. Nếu máy phát chưa hoạt động thì đề tiếp lần 2, 3. Sau 3 lần mà máy phát vẫn
không hoạt động thì báo đèn H3 sẽ báo lỗi. Khi có điện lưới trở lại: sau 10s thì cắt contactor máy phát,
sau 30s thì phát tín hiệu dùng máy phát và phát tín hiệu đóng contactor lưới điện
S2: Feedback: hồi tiếp cho biết trạng thái của máy phát đã hoạt động hay chưa
II. Bảng đầu vào ra
Symbol Address Comment

Trang 11
nguyen ba hoi

Status I0.0 Trạng thái: có hay cúp điện


Feedback I0.1 Hồi tiếp báo máy phát có đề được hay không
K1 Q0.0 Contactor lưới điện
K2 Q0.1 Contactor máy phát
START(H1) Q0.2 Phát tín hiệu đề máy khi cúp điện
OFF GEN(H2) Q0.3 Phát tín hiệu tắt máy phát
FAULT(H3) Q0.4 Báo lỗi khi máy phát không đề được

III. Giản đồ thời gian


Line Power Generator Line Power

t
Status
t
Feedback
t
K1
t
K2 30s
10s
t
START(H1)
10s
t
OFF GEN(H2)
t
FAULT(H3)
t

11. THANG NÂNG HÀNG (V, Set, Reset)


I. Mô hình và Yêu cầu
§ Nâng hạ hàng hoá ở toà
GOODS LIFT MACHINE START nhà, bến cảng, nhà máy
STATION 4 § V, Set, Reset
STATION 3
S11
Thang nâng hàng gồm 4 tầng. Vị trí
STATION 2
S10
20 S11 các sensor cảm biến tầng 1 đến 4 (S1
STATION 1
S9
16 S9 STATION 4
đến S4). Việc lựa chọn tầng thông
S8
STOP qua các nút ấn S0 – S5. Khi thang
12
S7
S8 STATION 3
nâng ở vị trí tầng nào thì đèn chỉ thị
8 S7 STATION 2 tầng tương ứng sáng (H1 – H4).
S6
4 S6 STATION 1 Sensor S10 và S11 là nhằm bảo vệ
1
hành trình thang nâng hàng, khi lỗi,
M2
buồng thang dịch chuyển gặp các
S10
H4 sensor bảo vệ S10, S11 thì sẽ dừng.

M1
H3
II. Bảng đầu vào ra
H2

H1

Tên
Địa chỉ Ghi chú
biến
Station1 I0.0 Dieu khien hang hoa ve tram 1
Station2 I0.1 Dieu khien hang hoa ve tram 2
Station3 I0.2 Dieu khien hang hoa ve tram 3
Station4 I0.3 Dieu khien hang hoa ve tram 4
Stop_off I0.4 Tat
Start I0.5 Bat
Trang 12
nguyen ba hoi

S6 I0.6 Sensor xac dinh hang hoa o tram 1


S7 I0.7 Sensor xac dinh hang hoa o tram 2
S8 I1.0 Sensor xac dinh hang hoa o tram 3
S9 I1.1 Sensor xac dinh hang hoa o tram 4
S10 I1.2 Sensor xac dinh hang hoa o vi tri thap nhat
S11 I1.3 Sensor xac dinh hang hoa o vi tri cao nhat
M1 Q0.0 Ha hang
M2 Q0.1 Nang hang
H1 Q0.2 Chi thi dieu khien o tram 1
H2 Q0.3 Chi thi dieu khien o tram 2
H3 Q0.4 Chi thi dieu khien o tram 3
H4 Q0.5 Chi thi dieu khien o tram 4
on_off M0.2 Bien trung gian de on/off
Lev_Var VW0 Chi vi tri hien tai

12. TRỘN PHỐI LIỆU (Timer)


I. Mô hình và Yêu cầu
§ Hệ thống định lượng phối
MIXING UNIT S5: Automatic
liệu các loại phụ gia trong
Substance 1 Substance 2
S4: Conveyor 2
nhà máy xi măng, định
lượng và trộn phối liệu
S3: Conveyor 1
trong máy trộn bê tông…
L- Min Level
S2: Conveyor 3 Chế độ tay: (Manual) Lúc này ta
S1: Manual có thể điều khiển độc lập các
S0: Stop
băng tải (Conveyor) 1, 2 hoặc 3
bằng các nút S1, S2, S3 đèn báo
L+ Max Level
Conveyor 1 Conveyor 2 tương ứng là H2, H3, H4.
L+ Chế độ tự động: (Auto) tín hiệu
điều khiển mở van Enable
Drive Conveyor 2
L-
Substances 1/2 tác động để băng
Enable
Subst 1/2
Drive Conveyor 1 tải 1 và 2 hoạt động, đến khi liệu
H4 trong xilo đạt mức cao L+ thì
H3 Enable
Mix dừng. Tiếp đó băng tải 3 hoạt
Drive Substances 1/2 động đưa phối liệu ra ngoài đến
H2
Conveyor3 Conveyor 3 khi liệu trong xilo tới mức thấp
H1 L- thì dừng, van Enable
Substances 1/2 tác động trở lại.

13. TRỘN HOÁ CHẤT (Timer)


I. Mô hình và Yêu cầu

Trang 13
nguyen ba hoi

CHEMICAL PLANTS
AUTO

MIX INERT

CATAL
M2 SUBS
L- 3
MANUAL
K2 K3
INERT GAS
STOP
CATALYST

L+ Outlet
L+
MIX

M3
INERT GAS
L- Coolant
M3 CATALYST Inlet
M1 H4
V1
V1 H3
M1
H2 Product
H1 SUBSTANCE

§ Sử dụng trong các nhà máy chế biết dược phẩm, chế biến thuốc nông sản hay trong các
nhà máy trộn sơn…
+ CATALYST: (H5) Chất xúc tác + COOLANT: (M3) Nước làm mát hệ thống
+ INERT GAS: (H6) Khí trơ + L+, L-: cảm biến mức cao và thấp của thùng trộn
+ SUBSTANCE: (M1) Liệu chính + MIX: động cơ trộn hoá chất
+ PRODUCT: (V1) hóa chất thành phẩm
Chế độ tay: (Manual) nhấn nút S2, S3, S4 để đóng các van CATALYST, INERT GAS, SUBSTANCE
độc lập nhau để kiểm tra hoạt động của các bơm và van.
Chế độ tự động: (Auto) tự động mở van CATALYST, INERT GAS và bơm SUBSTANCE vào buồng
trộn, đến khi cảm biến báo mức cao L+ tác động thì hệ thống chuyển sang trộn (MIX) theo hai chiều
thuận và nghịch (mỗi chiều chạy 10s ) đồng thời nước làm mát COOLANT luân chuyển làm mát thùng .
Hết thời gian trộn, hệ thống xả hóa chất thông qua van xả V1 cho thành phẩm đầu ra, đến khi cảm biến
mức thấp L- tác động thì khóa van V1, khóa COOLANT, hệ thống bắt đầu chu trình mới.
II. Bảng đầu vào ra
Symbol Address Comment
AUTO I0.0 Chế độ tự động
STOP I0.1 Chế độ dừng
MANUAL I0.2 Chế độ bằng tay
S1(SUBS) I0.3 Nút nhấn bơm chất liệu chính (MANUAL)
S2(CATAL) I0.4 Nút nhấn mở van chất xúc tác (MANUAL)
S3(INERT) I0.5 Nút nhấn mở van khí trơ (MANUAL)
L+ I0.6 Sensor báo mức cao
L- I0.7 Sensor báo mức thấp
Coolant(M3) Q0.0 Bơm nước làm mát
SUBS(M1) Q0.1 Bơm chất liệu chính
Product(V1) Q0.2 Mở van đưa sản phẩm ra ngoài
CATALYST Q0.4 Mở van chất xúc tác
INERT GAS Q0.5 Mở van khí trơ
MIX DIR Q0.6 Độngcơ trộn quay thuận
MIX REV Q0.7 Động cơ trộn quay ngược
H1 Q1.0 Đèn báo ở chế độ MANUAL
H2 Q1.1 Đèn báo chất liệu chính (SUBS) ở chế độ MANUAL
H3 Q1.2 Đèn báo chất xúc tác (CATAL) ở chế độ MANUAL
H4 Q1.3 Đèn báo chất khí trơ(INERT) ở chế độ MANUAL

III. Giản đồ thời gian

Trang 14
nguyen ba hoi

AUTO MANUAL
t
AUTO
t
STOP
t
MANUAL
t
S1(SUBS)
t
S2(CATAL)
t
S3(INERT)
t
L+
t
L-
t
Coolant(M3)
t
SUBS(M1)
t
Product(V1)
t
CATALYST
t
INERT GAS
t
MIX DIR T=10s

T=10s t
MIX REV
t
H1
t
H2
H3
t
H4

14. MÁY PHA CÀ PHÊ/TRÀ (Timer)


I. Mô hình

TEA/COFFEE VENDING MACHINE Insert Coin

Milk

Sugar
Drinkfit
Cup Filled Tea

Coffee

Sugar Milk Remove Cup

Cup Removed

Milk Valve
Drink
Sugar Valve
Valve
H4

H3
Remove
H2
Cup
H1

Trang 15
nguyen ba hoi

15. CẢNH BÁO LỖI TRẠM BIẾN ÁP (Timer, subroutine)


I. Mô hình và Yêu cầu
§ Hiện nay, hầu hết các trạm biến áp 110KV sử dụng PLC để cảnh báo các lỗi nhiệt độ, áp
suất, đóng cắt các dao cách ly… bằng còi hoặc chuông, đồng thời hiển thị các lỗi qua
bảng LED ở bàn điều khiển trung tâm
Khi có lỗi báo về thì sẽ có còi
TRANSFORMER ALARM SYSTEM hoặc chuông báo động và các đèn
P- Fault 8 H8
S4: Reset báo lỗi sẽ báo vị trí lỗi xuất hiện
S3: Acknowledge ở dạng nhấp nháy.
P- Fault 7 H7
S2: Off bell horn
- Nút Off_bell_horn dùng để tắt
báo động.
P- Fault 6 H6 S1: Test Display
- Nút Acknowledge dùng để xác
K3 K4
Bell Horn
nhận lỗi và tắt nhấp nháy các đèn.
P- Fault 5 H5
- Nút Reset: reset lỗi.
H8 Nếu lỗi không duy trì đèn báo lỗi
P- Fault 4 H4
H7 tắt
Nếu lỗi duy trì đèn báo lỗi vẫn
H6 P- Fault 3 H3
sáng cho đến khi người vận hành
H5
khắc phục được lỗi
H2
H4 P- Fault 2
- Nút Test_Display dùng để kiểm
K3 H3 tra các đèn còn tốt hay không.
P- Fault 1 H1
K4 H2
Trình tự nhấn nút: Acknowledge
® Reset. Ngược lại thì Reset vô
H1
dụng.
II. Bảng đầu vào ra
15.1.1.1.1 Tên
Địa chỉ Ghi chú
biến
ACK I1.0 Xac nhan loi
Reset I1.1 Reset loi
Test I1.2 Thu den va coi
Faul1 I0.0 Nguon loi 1
Faul2 I0.1 Nguon loi 2
Faul3 I0.2 Nguon loi 3
Faul4 I0.3 Nguon loi 4
Faul5 I0.4 Nguon loi 5
Faul6 I0.5 Nguon loi 6
Faul7 I0.6 Nguon loi 7
Faul8 I0.7 Nguon loi 8
Pos_Fau1 Q0.0 Chi thi loi 1
Pos_Fau2 Q0.1 Chi thi loi 2
Pos_Fau3 Q0.2 Chi thi loi 3
Pos_Fau4 Q0.3 Chi thi loi 4
Pos_Fau5 Q0.4 Chi thi loi 5
Pos_Fau6 Q0.5 Chi thi loi 6
Pos_Fau7 Q0.6 Chi thi loi 7
Pos_Fau8 Q0.7 Chi thi loi 8
Horn Q1.0 Coi

16. BÃI ĐẬU XE


I. Mô hình

Trang 16
nguyen ba hoi

MULTI-STOREY CAR PARK


3 4 5 6
Emergency
2

1 Ticket
Stop

ON

OFF

P RED
RED P

EXIT GREEN

P
GREEN

17. ĐIỀU KHIỂN QUY TRÌNH GIA CÔNG SP


I. Mô hình

SEQUENCE CONTROL S5: AUTO

S4: STATION 4
Production line

Work place machined


S3: STATION 3
S11
S2: STATION 2
S10
Eject Station 4 S1: STATION 1
S11
S9 Cut screw thread
S9 right M10 9mm deep
S0: OFF
S8 Lower left Lower right
Station 3 side S8 side
S7
Drill F 8,5mm
S7 (Bore through)
Station 2
S6
Drill F 4mm
Station 1 (Bore through) S6
Place an arrest
S10 the tool

M2
H4
Crude work place
H3
M1
H2

H1

Trang 17

You might also like