Tải bản đầy đủ (.pdf) (63 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.36 MB, 63 trang )

ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình




PHẦN I

ĐIỀU KHIỂN LẬP TRÌNH (PLC)



CHƯƠNG 3
NGÔN NGỮ LẬP TRÌNH













Chủ đề:
 Biến và vùng nhớ
 Các loại lệnh logic trên bit
 Các lệnh xử lý dữ liệu: dòch chuyển,so sánh, toán học…


 Các bộ chức năng đònh thời và đếm
 Các lệnh điều khiển chương trình

Mục đích:
 Sử dụng và gán biến cho các đòa chỉ.
 Vận dụng các lệnh để viết chương trình ứng dụng.
 Hiểu rõ mối quan hệ chương trình với kết nối thiết bò

36
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.1. GIỚI THIỆU
Các loại PLC nói chung thường có nhiều ngôn ngữ lập trình để phục vụ các đối
tượng sử dụng khác nhau. Tuy nhiên hầu hết đề xoay quanh 3 ngôn ngữ cơ bản. Đó là:
 Ngôn ngữ “ kiểu liệt kê”, kí hiệu là STL (Statement List). Đây là dạng của ngôn ngữ
Assembler máy tính.
 Ngôn ngữ “hình thang”, kí hiệu là LAD (Ladder Logic). Đây là dạng ngôn ngữ theo
kiểu thiết kế mạch điều khiển logic rờ le.
 Ngôn ngữ “hình khối”, kí hiệu là FBD (Function Block Diagram). Đây là dạng ngôn
ngữ theo kiểu thiết kế mạch điều khiển logic số.























Function Block Diagram
Statement List
Ladder Diagram
Hình 3.1-Ba kiểu ngôn ngữ lập trình
M

Một chương trình có thể viết trên LAD hoặc FBD có thể chuyển được sang dạng STL,
nhưng ngược thì có thể không. Trong STL có những lệnh mà trong LAD hoặc FBD không
diễn tả được. Tuy vậy về mặt lập trình, ngôn ngữ LAD rất đơn giản dễ dàng cho lập trình.
Chính vì lý do này, tài liệu quan tâm đến ngôn ngữ STL và lấy nó để lập trình.

Chú ý: Hiện nay trên thế giới có rất nhiều loại PLC do nhiều hãng của nhiều nước sản xuất
khác nhau và đa dạng. Nhưng bản chất, phương pháp lập trình của ngôn ngữ không khác
nhau mà chỉ khác nhau ở chỗ là các kí hiệu đòa chỉ, tên gọi của các I/O, vùng nhớ mà thôi.



37
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.2. CẤU TRÚC LỆNH VÀ TRẠNG THÁI KẾT QUẢ
3.2.1. Kiểu dữ liệu và phân chia bộ nhớ
3.2.1.1. Kiểu dữ liệu
Các kiểu dữ liệu được sử dụng trong S7-300:
1) BOOL: với dung lượng một bit và có giá trò 1 hoặc 0 ( đúng hoặc sai). Đây là kiểu
dữ liệu cho biến hai trò.
2) Byte: gồm 8 bit, thường được biểu diễn một số nguyên dương từ 0 đến 255 hoặc là
mã ASCII của một ký tự.
3) Word: gồm 2 byte, biểu diễn số nguyên từ 0 đến 65535.
4) Int: cũng có dung lượng 2 byte, dùng để biểu diễn một số nguyên từ –32768 đến
32767.
5) Dint: gồm 4 byte, dùng để biểu diễn số nguyên từ –2147483648 đến 2147483647.
6) Real: gồm 4 byte, dùng để biểu diễn số thực có dấu phẩy động.
7) S5t: khoảng thời gian, được tính bằng giờ, phút, giây, miligiây.
8) Tod: biểu diễn giá trò thời gian tính theo giờ/phút/giây.
9) Date: biểu diễn giá trò thời gian tính theo năm/tháng/ngày.
10) Char: biểu diễn một ký tự hay nhiều ký tự (nhiều nhất là 4 ký tự).
3.2.1.2. Phân chia bộ nhớ
Bộ nhớ S7-300 chia làm ba vùng chính:
1) Vùng chứa chương trình ứng dụng. Vùng nhớ chia thành 3 miền:
a) OB (Organization Block): Miền chứa chương trình tổ chức.
b) FC (Function): Miền chứa chương trình con, được tổ chức thành hàm và có biến
hình thức để trao đổi dữ liệu với chương trình gọi nó.
c) FB (Function Block): Miền chứa chương trình con, được tổ chức thành hàm và có
khả năng trao đổi dữ liệu với bất kỳ một khối chương trình nào khác. Các dữ liệu

này phải được xây dựng thành một khối dữ liệu riêng (gọi là DB – Data Block).
2) Vùng chứa tham số của hệ điều hành và chương trình ứng dụng, được chia thành 7
miền khác nhau, bao gồm:
a) I (Process image input): Miền bộ đệm các dữ liệu cổng vào số. Trước khi bắt đầu thực
hiện chương trình, PLC sẽ đọc tất cả các giá trò logic của tất cả các cổng vào và lưu trữ
ở vùng nhớ I. Chương trình ứng dụng không đọc trực tiếp trạng thái logic của cổng vào
số mà chỉ lấy dữ liệu của cổng vào từ bộ đệm I.
b) Q (Process image output): Miền bộ đệm các dữ liệu cổng ra số. Kết thúc giai đoạn thực
hiện chương trình, PLC sẽ chuyển giá trò logic của bộ đệm Q đến các cổng ra số.
Chương trình không trực tiếp gán giá trò tới cổng ra mà chỉ chuyển chúng vào bộ đệm
Q.
c) M: Miền các biến cờ. Chương trình sử dụng các vùng nhớ này để lưu trữ các tham số
cần thiết và có thể truy nhập theo kiểu bit (M), byte (MB), từ đơn (MW)hay từ kép
(MD).
d) T: Miền nhớ phục vụ bộ thời gian (timer) bao gồm lưu trữ giá trò thời gian đặt trước (PV
– preset value), giá trò đếm thời gian tức thời (CV – Current value) cũng như giá trò
logic ở đầu ra của timer.

38
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


e) C: Miền nhớ phục vụ bộ đếm (counter) bao gồm lưu trữ giá trò thời gian đặt trước (PV –
preset value), giá trò đếm tức thời (CV – Current value) cũng như giá trò logic ở đầu ra
của bộ đếm.
f) PI: Miền đòa chỉ cổng vào của các module tương tự (I/O External input). Các giá trò
tương tự tại cổng vào của module tương tự sẽ được module đọc và chuyển tự động theo
những đòa chỉ. Chương trình ứng dụng có thể truy nhập miền nhớ PI theo các kiểu biến
byte (PIB), từ đơn (PIW) hay từ kép (PID).

g) PQ: Miền đòa chỉ cổng ra của các module tương tự (I/O External output). Các giá trò
theo những đòa chỉ này sẽ được module tương tự chuyển tự động tới các cổng ra tương
tự. Chương trình ứng dụng có thể truy nhập miền nhớ PQ theo các kiểu biến byte
(PQB), từ đơn (PQW) hay từ kép (PQD).
3) Vùng chứa các khối dữ liệu
a) DB (Data Block): miền chứa dữ liệu được tổ chức thành hình khối. Kích thước và số
lượng khối cũng do người dùng quy đònh tùy theo chương trình. Chương trình ứng dụng
có thể truy nập tới miền nhớ này theo bit (DBX), byte (DBB), từ đơn (DBW) hặoc từ
kép (DBD).
b) L (Local data bolck): Miền dữ liệu cục bộ, được các khối chương trình OB, FC, FB tổ
chức và sử dụng cho các biến nháp tức thời và trao đổi dữ liệu của biến hình thức với
những khối chương trình đã gọi nó. Nội dung của một số dữ liệu trong miền nhớ này sẽ
bò xóa khi kết thúc chương trình tương ứng trong OB, FC, FB. Miền này có thể truy
nhập được từ chương trình theo bit (L), byte (LB), từ (LW) hoặc từ kép (LD).
3.2.2. Cấu trúc lệnh và trạng thái kết quả
3.2.2.1. Toán hạng là dữ liệu
a) Dữ liệu logic True và False có độ dài 1 bit. Ví dụ
Bit_1 = True //giá trò logic 1 được gán cho bit_1
b) Số nhò phân. Ví dụ
L 2#00101101 //nạp số nhò phân vào thanh ghi ACCU1
c) Số Hexadecimal x có độ dài 1 byte(B#16#x), 1 từ (W#16#x) hoặc 1 từ kép (DW#16#x).
Ví dụ
L B#16#2E //nạp số 2E vào byte thấp thanh ghi ACCU1
L W#16#4D2 //nạp số 4D2 vào 2 byte thấp thanh ghi ACCU1
L DW#16#D1B2E //nạp số D1B2E vào thanh ghi ACCU1
d) Số nguyên x với độ dài 2byte cho biến kiểu INT. Ví dụ
L 960
e) Số nguyên x với độ dài 4byte dạng L#x cho biến kiểu DINT. Ví dụ
L L#600
f) Số thực x cho kiển biến REAL. Ví dụ

L 450.0
g) Dữ liệu thời gian cho biến kiểu S5T dạng giờ_phút_giây_miligiây. Ví dụ
L S5T#3h_5m_1s_10ms
h) Dữ liệu thời gian cho biến kiểu TOD dạng giờ:phút:giây. Ví dụ
L TOD#6:30:15

39
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


i) DATE: biểu diễn giá trò thời gian tính theo năm/tháng/ngày. Ví dụ
L DATE#2000-12-9
j) C: biểu diễn giá trò số đếm đặt trước cho bộ đếm. Ví dụ
L C#50
k) P: dữ liệu biểu diễn đòa chỉ của một bit ô nhớ. Ví dụ
L P#Q0.3
l) Dữ liệu kí tự. Ví dụ
L ‘BCDE’
3.2.2.2. Toán hạng là đòa chỉ
 Đòa chỉ ô nhớ được cấu tạo thành hai phần: phần chữ và phần số. Ví dụ

M0.9

PQW272




Phần chữ Phần số Phần chữ Phần số



 Phần chữ chỉ vò trí và kích thước của ô nhớ (tham khảo 3.2.1)
 Phần số chỉ đòa chỉ của byte hoặc bit trong miền nhớ đã xác đònh.
3.2.2.3. Thanh ghi trạng thái
Khi thực hiện lệnh, CPU sẽ ghi nhận lại trạng thái của phép tính trung gian cũng
như của kết quả vào một thanh ghi 16 bit và được gọi là thanh ghi trạng thái (status word).
Tuy nhiên nó chỉ sử dụng với 9 bit và cấu trúc được mô tả như sau:

8 7 6 5 4 3 2 1 0
BR CC1 CC0 OV OS OR STA RLO FC

- FC (First check ): Khi phải thực hiện một dãy các lệnh logic liên tiếp nhau gồm các
phép tính và, hoặc và nghòch đảo, bit FC có giá trò bằng 1. Ngược lại, FC=0 khi dãy
lệnh logic tiếp điểm vừa hoàn tất.
Ví dụ:
A I0.2 //FC=0
O I0.4 //FC=0
= Q1.0 //FC=0
- RLO (Result of Logic Operation): Kết quả tức thời của phép toán logic vừa được thực
hiện. Ví dụ:
A I0.1
a) Nếu trước khi thực hiện bit FC=0 thì có tác dụng chuyển nội dung của ngõ vào số I0.1
vào bit trạng thái RLO.
b) Nếu trước khi thực hiện bit FC=1 thì có tác dụng thực hiện phép toán và giữa RLO và
giá trò logic ngõ vào I0.1. Kết quả của phép tính được ghi lại vào bit trạng thái RLO.
- STA (Status bit): Bit trạng thái này luôn có giá trò logic của tiếp điểm được chỉ đònh
trong lệnh.

40

ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


Ví dụ:
A I1.0
AN I1.0
Cả hai lệnh đều gán cho STA cùng một giá trò là nội dung của ngõ vào số I1.0.
- OR: Ghi lại giá trò logic của phép toán và cuối cùng được thực hiện để giúp đỡ cho việc
thực hiện phép toán hoặc sau đó. Điều này là cần thiết vì cùng một biểu thức hàm hai
trò thì bao giờ phép toán và cũng thực hiện trước phép toán hoặc.
- OS (Stored overflow bit): Ghi lại giá trò bit bò tràn ra ngoài mảng ô nhớ.
- OV (Overflow bit): Bít báo kết quả bò tràn ra ngoài mảng ô nhớ.
- CC0 và CC1 (Condition code): Hai bit báo trạng thái kết quả phép tính với số nguyên,
số thực, phép dòch chuyển hoặc phép tính logic trong ACCU.
- BR (Binary result bit): Bit trạng thái cho phép liên kết hai loại ngôn ngữ lập trình STL
và LAD. Chẳng hạn cho phép người sử dụng có thể viết một khối chương trình FB hoặc
FC trên STL nhưng gọi và sử dụng trong chương trình viết trên LAD. Để tạo ra mối
liên kết đó, ta phải thực hiện việc kết thúc chương trình trong FB, FC bằng lệnh ghi:
a) 1 vào BR, nếu chương trình chạy không có lỗi.
b) 0 vào BR, nếu chương trình chạy có lỗi.

Chú ý
: Một chương trình có thể có một hay nhiều network tùy thuộc vào tính chất, mức độ
trạng thái hoạt động của hệ thống. Nhưng mỗi Network chỉ chứa một đoạn chương trình
thực hiện một nhiệm vụ cụ thể.



Network 1



Đoạn chương trình 1

Network 2



Đoạn chương trình 2

Network 3



Đoạn chương trình 3

3.3. CÁC LỆNH LOGIC

Lệnh logic làm việc trên hệ thống số nhò phân với hai bit số, đó là : bit
1
và bit
0

Trong điều khiển người ta thường quy đònh
1
là trạng thái hoạt động hay có năng lượng,
0

là trạng thái không hoạt động hay không năng lượng.
Các lệnh Logic trên bit thể hiện các trạng thái tín hiệu 1 và 0 và liên kết chúng

thành phép toán logic. Kết quả của kết hợp này là 1 hoặc 0 và được gọi là RLO.
Lệnh toán logic bao gồm các lệnh cơ bản sau:
• A Và (And)
• AN Phủ đònh và (And Not)

41
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


• O Hoặc (Or)
• ON Phủ đònh hoặc (Or Not)
• X Loại trừ (Exclusive)
• XN Phủ đònh loại trừ (Exclusive Not)
• And trước Or
Chúng ta có thể sử dụng các lệnh sau để thực hiện các biểu thức lồng vào nhau:
• A( Và với lồng mở
• AN( Phủ đònh và với lồng mở
• O( Hoặc với lồng mở
• ON( Phủ đònh hoặc với lồng mở
• X( Loại trừ với lồng mở
• XN( Phủ đònh loại trừ với lồng mở
• ) Đóng lồng kết thúc đoạn lệnh.
Chúng ta có thể kết thúc chuỗi lệnh biểu thức logic bằng các lệnh:
• =
Phép gán
(Assign)

• R
Xoá nhớ

(Reset)
• S N
hớ
(Set)
Chúng ta có thể sử dụng một trong những lệnh sau để thay đổi kết quả của phép toán logic
(RLO):
• NOT Phủ đònh RLO
• SET Nhơ RLO (=1)
• CLR Xóa RLO (=0)
• SAVE Lưu trữ RLO ở thanh ghi BR
Hay là sử dụng một lệnh sau để phát hiện sườn lên và xuống của tín hiệu:
• FN Phát hiện cạnh xuống (Edge Negative)
• FP Phát hiện cạnh lên (Edge Positive)
3.3.1. Lệnh gán
Cú pháp = <toán hạng>
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D
Ví dụ:

Chương trình STL








42


ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.3.2. Lệnh thực hiện phép tính và
Cú pháp A <toán hạng>
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D, T, C

A kiểm tra không biết trạng thái của bit đòa chỉ (toán hạng) là 1 hay không, và AND kết
quả kiểm tra với RLO.
Ví dụ:

Q0.2 mức tín hiệu 0
I1.1 mức tín hiệu 0
I1.0 mức tín hiệu 0
Nguồn điện
A I1.1
= Q0.2
A I1.0
Rờ le logicChươnh trình STL
Cuộn dây
NO tiếp điểm
NO tiếp điểm











3.3.3. Lệnh thực hiện phép tính và với giá trò nghòch đảo
Cú pháp AN <Toán hạng>
AN kiểm tra không biết trạng thái của bit đòa chỉ (toán hạng) là 0 hay không, và AND kết
quả kiểm tra với RLO.
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D, T, C
NO tiếp điểm
NC tiếp điểm
Cuộn dây
I1.1 mức tín hiệu 1
Q0.2 mức tín hiệu 0
I1.0 mức tín hiệu 0
Nguồn điện
A I1.1
= Q0.2
A I1.0
Rờ le logicChươnh trình STL
Ví dụ:













43
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.3.4. Lệnh thực hiện phép tính hoặc
Cú pháp O <Toán hạng>
O kiểm tra không biết trạng thái của bit đòa chỉ (toán hạng) là 1 hay không, và OR kết quả
kiểm tra với RLO và ghi lại kết quả vào RLO.
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D, T, C
O I1.1
= Q0.2
O I1.0
Rờ le logicChươnh trình STL
NO tiếp điểm
Cuộn dây
Nguồn điện
I1.0 mức tín hiệu 0 I1.1 mức 0

Q0.2 mức tín hiệu 0
Ví dụ:












3.3.5. Lệnh thực hiện phép tính hoặc với giá trò nghòch đảo
Cú pháp ON <Toán hạng>
ON kiểm tra không biết trạng thái của bit đòa chỉ (toán hạng) là 0 hay không, và OR kết
quả kiểm tra với RLO và ghi lại kết quả vào RLO.
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D, T, C
NC tiếp điểm
Cuộn dây
Nguồn điện
I1.0 mức tín hiệu 0
I1.1 mức tín hiệu1
Q0.2 mức tín hiệu 1
NO tiếp điểm
ON I1.1
= Q0.2
O I1.0
Rờ le logicChươnh trình STL
Ví dụ 5:














44
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.3.6. Lệnh thực hiện phép tính exclusive or
Cú pháp X <Toán hạng>
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D, T, C
X kiểm tra không biết trạng thái của bit đòa chỉ (toán hạng) là 1 hay không, và XOR kết quả kiểm
tra với RLO và ghi lại kết quả vào RLO

Ví dụ:


Q0.2 cuộn dây

Tiế
p điểm I1.1
Tiếp điểm I1.0
Nguồn điện
X I0.1
= Q1.2
X I0.0
Rờ le logicChươnh trình STL







3.3.6. Lệnh thực hiện phép tính exclusive or not
Cú pháp XN <Toán hạng>

Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D, T, C

X kiểm tra không biết trạng thái của bit đòa chỉ (toán hạng) là 0 hay không, và XOR kết quả kiểm
tra với RLO và ghi lại kết quả vào RLO

Ví du:


Q0.2 cuộn dây
Tiế

p điểm I1.1
Tiếp điểm I1.0
Nguồn điện
XN I0.1
= Q1.2
X I0.0
Rờ le logicChươnh trình STL










45

ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.3.7. Lệnh thực hiện phép tính và với giá trò một biểu thức
Cú pháp A(
Chú ý: lệnh không có Toán hạng
A( thực hiện phép tính và giữa RLO với biểu thức trong dấu ngoặc sau nóvà ghi lại kết quả vào
RLO.
Ví dụ:


Q1.2 cuộn dây
I0.4
M0.0
M0.1
M1.1
M1.4
A M1.4
A(
O M1.1

)
O I0.4
A(
Nguồn điện
= Q1.2
O I0.0
O M0.1

)
Rờ le logicChươnh trình STL















3.3.8. Lệnh thực hiện phép tính hoặc với giá trò nghòch đảo một biểu thức
Cú pháp O(
Chú ý: lệnh không có Toán hạng
O(
thực hiện phép tính hoặc giữa RLO với giá trò logic của biểu thức trong dấu ngoặc sau nóvà ghi
lại kết quả vào RLO.
Ví dụ:


Q1.2 cuộn dây
I0.4
I0.0
M1.1
M1.4
A M1.4
O(
AN M1.1

)
A I0.4
Nguồn điện
= Q1.2
A I0.0
Rờ le logicChươnh trình STL















46
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


Ví dụ:
Viết chương trình khởi động động không đồng bộ 3 phase mô tả hình 3.2. Nhấn nút Start PB
động cơ chạy, nhấn nút Stop PB thì động cơ dừng.
• Bảng gán nhiệm vụ I/O
• Chương trình
Network1:
A(
O “Start PB”
O “Coil MC”
)
A “Stop PB”
= “Coil MC”
Ví dụ:

Viết chương trình cho PLC điều khiển công đoạn cắt sản phẩm theo kích thước được xác
đònh trước được mô tả hình 3.3. Chiều dài của sản phẩm là khoảng cách giữa dao cắt và giới hạn
hành trình SS1.
Khi nhấn nút Start PB thì động cơ truyền chuyển động bánh ma sát (1) đẩy
phôi thép dòch chuyển. Gặp SS1 thì thắng động cơ làm việc và động cơ dừng, đồng thời
dao cắt đi xuống để cắt phôi thép và gặp SS2 thì cắt xong và dao sẽ trở về vò trí ban đầu
(trên cùng) kết thúc quá trình cắt một thanh thép.

Bảng gán nhiệm vụ I/O

• Chương trình
Network1:
A "Start PB"
AN "Motor Brake"
S "Friction Wheel Motor"
Network2:
A "Dimension sensor"
R "Friction Wheel Motor"
S "Cutting Knife"
S "Motor Brake"
Network3:
A "Cutting Finish Sensor"
R "Cutting Knife"
Input (ngỏ vào) Output (ngỏ ra)
Tên gọi Đòa chỉ Tên gọi Đòa chỉ
Start PB I0.0 Coil MC Q0.0
Stop PB I0.1
I0.0
I0.1
Hình 3.2 – Mạch điện động cơ

Input (ngỏ vào) Output (ngỏ ra)
Tên gọi Đòa chỉ Tên gọi Đòa chỉ
Start PB I0.0 Friction Wheel Motor Q0.0
1Y
P
Hình 3.3 – Cơ cấu cắt sản phẩm theo kích thước
Motor Brake
Friction Wheel Motor
Workpiece
Cutting Knife
Dimension Sensor
Cutting Finish
Sensor
Q0.2 Cutting Knife I0.2 Cutting Finish Sensor
Motor Brake Q0.1 I0.1 Dimension sensor
Biểu đồ trạng thái theo thời gian
Q0.0
R "Motor Brake"

47
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.3.9. Lệnh gán giá trò logic 1 vào ô nhớ (Set bit)
Cú pháp S <Toán hạng>
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D


S sẽ đặt giá trò 1 vào ô nhớ của bit đòa chỉ, nếu RLO=1.
Ví dụ:

Coil Q4.0
NC contact
NO contact
I1.0
Nguồn điện
Rờ le logicChươnh trình STL










3.3.10. Lệnh gán giá trò logic 0 vào ô nhớ (Reset bit)
Cú pháp R <Toán hạng>
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D

R sẽ đặt giá trò 0 vào ô nhớ của bit đòa chỉ,
nếu RLO=1. Xem ở lệnh Set bit.
Hình 3.4 – Cơ cấu khoan
Ví dụ:
Viết chương trình cho PLC điều khiển thiết bò

khoan thủy lực của một đầu khoan tự động mô tả
hình 3.4, với yêu cầu kỹ thuật như sau: Đưa chi
tiết vào vò trí cần khoan, rồi ấn nút Drill Start,
mũi khoan xoay, đầu khoan tònh tiến và khoan chi
tiết. Đạt đủ chiều sâu khoan cần thiết (S4 tác
động), đầu khoan tự động quay về và kết thúc
một chu kỳ khoan tại S3. Trong quá trình gia công
nếu xảy ra sự cố ta ấn nút Home Back, đầu khoan
tự động lui về.

48
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


• Bảng gán nhiệm vụ I/O

Input (ngỏ vào) Output (ngỏ ra)
Tên gọi Đòa chỉ Tên gọi Đòa chỉ
Drill Start I0.0 Sol 1Y Q0.0
Home Back I0.1
S3 I0.2
S4 I0.3
I0.3
I0.2
Q0.0
I0.1
I0.0
Biểu đồ trạng thái theo thời gian
• Chương trình

Network1:
// Khi Drill Start là 1 thì 1Y được nhớ lên 1.
Network2:
// S4 là 1 hoặc Home Back là 0 thì
xóa 1Y

A "Drill Start" O "S4"
A "S3" ON "Home Back"
S "Solenoid 1Y" R "Solenoid 1Y"
3.3.11. Lệnh đảo giá trò của RLO
Cú pháp NOT
NOT đảo nội dung của RLO. Chú ý: lệnh không có Toán hạng
Ví dụ:

I1.0
I1.0
Q4.0
Signal state diagram
1
0
0
1
A I1.0
NOT
= Q4.0
Coil Q4.0
NC contact
Nguồn điện
Rờ le logic Chươnh trình STL











3.3.12. Lệnh ghi giá trò 1 vào RLO
Cú pháp SET
Lệnh không có toán hạng và có tác dụng ghi 1 vào RLO.
Ví dụ:


Mức tín hiệu Kết qủa trạng thái logic









49
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình



3.3.13. Lệnh ghi giá trò 0 vào RLO
Cú pháp CLR
Lệnh không có toán hạng và có tác dụng ghi 0 vào RLO.
xem ở lệnh SET (3.3.12).
3.3.14. Lệnh chuyển giá trò RLO vào BR
Cú pháp CLR
Lệnh chuyển nội dung của RLO vào bit trạng thái BR. Lệnh không làm thay đổi nội dung
các bit còn lại của thanh ghi trạng thái.
3.3.15. Lệnh phát hiện sườn xuống
Cú pháp FN <Toán hạng>
FN sẽ phát hiện sườn xuống của tín hiệu khi RLO chuyển từ 1 sang 0 và sẽ ghi giá
trò 1 vào RLO. Đặc điểm được mô tả ở hình 3.5.
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D







Hình 3.5 – Đặc điểm sườn lên

Ví dụ:

Khi PLC phát hiện sườn xuống ở tiếp điểm I1.0, nó sẽ tạo ra một xung tại đòa chỉ ngõ ra
Q0.4 ứng với một vòng quét OB1.



Biển đồ trạng thái tín hiệu Chươnh trình STL








Ví dụ
: Viết chương trình điều khiển đóng mở cửa kho tự động mô tả hình 3.6.
Khi xe đang tiến về gần cửa kho, cảm biến Ultrasounic SS1 nhận dạng được xe và cửa sẽ
được mở ra đến gặp giới hạn hành trình trên LS2 thì cửa dừng lại rồi xe chạy vào. Khi cảm
biến quang SS2 đặt phía trong cổng cửa nhận dạng được xe đã đi qua khỏi cửa thì cửa sẽ

50
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


được đóng lại, chạm vào giới hạn hành trình dưới LS1 thì cửa dừng lại. Chú ý xe chỉ đi một
chiều.

• Bảng gán nhiệm vụ các I/O


• Chương trình điều khiển
Network1:
// Khi SS1 là 1 (có xe vào) thì cửa cuốn lên


A "SS1"
S "Raisedoor"
Cảm biến
Ultrasounic SS1
Động cơ
kéo cửa
Cảm biến vò trí
{LS1, LS2}
Cảm biến
quang SS2
Xe chở hàng
Hình 3.6 Điều khiển cửa tự động
Cửa cuốn
Input (ngỏ vào) Output (ngỏ ra)
SS2 I0.1 Downdoor(CCW) Q0.1
LS1 I0.2
LS2 I0.3
Tên gọi Đòa chỉ Tên gọi Đòa chỉ
SS1 I0.0 Raisedoor(CW) Q0.0
R "Downdoor"
Biểu đồ trạng thái theo thời gian
M0.0
Downdoor
LS2
SS1
Network2:
// Khi LS1 là 1 thì cửa dừng lại tại giới hạn
trên

SS2

A "LS1"
LS1
R "Raisedoor"
Network3:
// Khi SS2 chuyển trạng thái 1sang 0 (xe
qua khỏi nó) thì cửa cuốn xuống để đóng cửa

A "SS2"
FN M 0.0
S "Downdoor"
Network4:
// Khi LS2 là 1 thì cửa dừng lại tại giới hạn
dưới

A "LS2"
R "Downdoor"

3.3.16. Lệnh phát hiện sườn lên
Cú pháp FP <Toán hạng>
Toán hạng
Đòa chỉ Loại dữ liệu Vùng biến nhớ
Bit Bool I, Q, M, L, D

FP sẽ phát hiện sườn lên của tín hiệu khi RLO chuyển từ 0 sang 1 và sẽ ghi giá trò 1 vào
RLO. Đặc điểm được mô tả ở hình 3.5.
Ví dụ:


51
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC

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


Khi PLC phát hiện sườn lên ở tiếp điểm I1.0, nó sẽ tạo ra một xung tại đòa chỉ ngõ ra Q0.4
ứng với một vòng quét OB1

Biển đồ trạng thái tín hiệu Chươnh trình STL








Ví dụ:

Viết chương trình cho máy dập thủy lực mô tả
hình 3.7, với yêu cầu kỹ thuật như sau:Lúc đầu, đầu dập
ở vò trí chờ (S4), khi đưa chi tiết cần dập vào ta ấn nút S1,
đầu dập tònh tiến ra và dập chi tiết và trở về khi gặp S5.
Trong quá trình gia công nếu xảy ra sự cố, ấn nút S3 đầu
dập sẽ dừng lại ở vò trí đó. Sau đó, ta ấn nút S2 đầu dập
quay về.
• Bảng gán nhiệm vụ I/O







• Chương trình
Network1:
// Khi S1 và S4 là 1 thì 1Y1 là 1

A "S1"
A "S4"
O "1Y1"
AN "S5"
AN "S3"
= "1Y1"
Network2:
// Khi S5 là 1 thì 1Y2 là 1

A "S5"
O "S2"
O "1Y2"

52
Hình 3.7 – Cơ cấu dập thủy lực
S1
S2
S3
S4
1Y2
Biểu đồ trạng thái theo thời gian
S5
1Y1
t
t

t
Xy lanh
L
Input (ngỏ vào) Output (ngỏ ra)
Tên gọi Đòa chỉ
S5 I0.4
Tên gọi Đòa chỉ
S1 I0.0 1Y1 Q0.0
S2 I0.1 1Y2 Q0.1
S1 I0.2
S2 I0.3
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


AN M0.1
AN "S3"
= "1Y2"
Network3:
// Khi S4 chuyển trạng thái từ 0 -> 1 thì bit M0.1 là 1

A "S4"
FP M 0.0
= M 0.1
3.4. LỆNH NẠP VÀ CHUYỂN NỘI DUNG THANH GHI
Trong CPU của S7-300 thường có hai thanh ghi Accumulator (ACCU) kí hiệu là
ACCU1 và ACCU2. Hai thanh ghi có cùng kích thước 32 bit (~ 1 Double Word).
Chúng có cấu trúc như sau:

Từ thấp Từ cao

ACCU1 Byte cao Byte thấp Byte cao Byte thấp

ACCU1 Byte cao Byte thấp Byte cao Byte thấp
31 07815162324


Lệnh nạp (L - Load) và chuyển (T – Transfer) cho phép chúng ta có khả năng lập
trình thay đổi thông tin lẫn nhau giữa các module ngõ vào hoặc ra và các vùng nhớ, hoặc
giữa các vùng nhớ.
3.4.1. Lệnh nạp vào ACCU
Cú pháp L <Toán hạng>

Toán hạng
Kiểu dữ liệu Vùng biến nhớ Đòa chỉ nguồn
BYTE
WORD
DWORD
I, Q, PQ, M, L, D
0…65535
0…65334
0…65332






Lệnh L có tác dụng chuyển dữ liệu hoặc nội dung ô nhớ có đòa chỉ là toán hạng vào
thanh ghi ACCU1. Nội dung cũ của ACCU1 được chuyển vào ACCU2. Trong trường hợp
giá trò chuyển vào có kích thước nhỏ hơn từ kép thì nó sẽ được ghi theo thứ tự từ byte thấp

của từ thấp đến byte cao của từ cao. Những bit còn trống trong ACCU1 được ghi 0.
Chẳng hạn
:
Lệnh L IB2 sẽ chuyển nội dung của IB2 vào ACCU1 như sau:

24 23 16 15 8 7 031
ACCU1 0 0 0 IB2



Lệnh L MW10 sẽ chuyển nội dung của MW10 gồm 2 byte MB10, MB11 vào
ACCU1 theo thứ tự sau:

53
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình



54

24 23 16 15 8 7 031
ACCU1 0 0 MB10 MB11


Lệnh không thay đổi trạng thái của thanh ghi (Status word)
3.4.2. Lệnh chuyển nội dung ACCU vào ô nhớ
Cú pháp T <Toán hạng>



Toán hạng
Kiểu dữ liệu Vùng biến nhớ Đòa chỉ nguồn
BYTE
WORD
DWORD
I, Q, PQ, M, L, D
0…65535
0…65334
0…65332






Lệnh chuyển nội dung của ACCU1 vào ô nhớ có đòa chỉ là toán hạng. Lệnh không
thay đổi nội dung trong ACCU2. Trong trường hợp ô nhớ có kích thước nhỏ hơn từ kép thì
nội dung của ACCU1 được chuyển ra theo thứ tự từ byte thấp của từ thấp đến byte cao của
từ thấp, byte thấp của từ cao, byte cao của từ cao.
Ví dụ:

T QB1 //
sẽ chuyển nội dung của byte thấp của từ thấp trong ACCU1vào QB1

T MW12 //
sẽ chuyển byte cao của từ thấp của ACCU1 vào MB12 và byte thấp của từ thấp
của ACCU1 vào MB13.
Lệnh không thay đổi trạng thái của thanh ghi (Status word)
Ví dụ
:

Viết chương trình điều khiển tốc độ dòch chuyển của một pít tông thủy lực mô tả hình 3.8.
Muốn thay đổi tốc độ của pít tông ta phải thay đổi lưu lượng
lưu chất tác động vào pít tông. Để thay đổi lưu lượng ta sử
dụng van servo thủy lực. Nguyên lý làm việc của van này là
sự thay đổi tuyến tính của điện áp cấp cho cuộn dây của van
dẫn đến sự thay đổi lưu lượng tuyến tính của van. Đặc tính của
van này có thể cho: q = 0 ÷ 100 l/ph ⇔ u = 0 ÷10 volt.
• Bảng gán nhiệm vụ I/O
PQW274
Đòa chỉ
Input (ngỏ vào) Output (ngỏ ra)
Tên gọi Đòa chỉ Tên gọi
Giá trò nhập từ bàn
phím số nguyên 2 byte
MW0 Van tuyến tính
1Y1
Hình 3.8 - Điều khiển tốc độ

• Chương trình
Network1:
//Giá trò số nguyên 2 byte trong ô nhớ MW0 được chuyển vào ô nhớ ngoại vi PQW272
L MW0
T PQW272
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


3.5. LỆNH SO SÁNH
(comparison instruction)
3.5.1. Giới thiệu

Chúng ta có thể dùng các lệnh so sánh để so sánh cặp giá trò số sau:
 Hai số nguyên đơn ( 16 bit)
 Hai số nguyên kép ( 32 bit)
 Hai số thực (dấu chấm động – 32 bit)
Các giá trò số này được nạp vào 2 thanh ghi, thanh ghi 1(ACCU 1) và thanh ghi 2 (ACCU
2). Lệnh so sánh so sánh giá trò trong thanh ghi 2 với giá trò trong thanh ghi 1 theo các phép
toán cơ bản được liệt kê ở bảng 3-1.
Kết quả của phép so sánh là số nhò phân, đó là có thể 1 hoặc 0. 1 biểu diễn phép toán là
đúng và 0 biểu diễn phép toán là sai, kết quả được lưu giữ trong RLO bit.
Bảng 3-1 Phép toán so sánh
Giá trò số chứa trong
thanh ghi 2
Phép toán so sánh Kí hiệu lệnh Giá trò số chứa
trong thanh ghi 1
Bằng
==I
==D
==R
Khác (không bằng)
<>I
<>D
<>R
Lớn hơn
>I
>D
>R
Nhỏ hơn
<I
<D
<R

Lớn hơn hoặc bằng
>=I
>=D
>=R
- Nguyên ( 16 bit)
- Nguyên kép ( 32 bit)
- Số thực ( 32 bit)
Nhỏ hơn hoặc bằng
<=I
<=D
<=R
- Nguyên ( 16 bit)
- Nguyên kép ( 32 bit)
- Số thực ( 32 bit)

3.5.2. So sánh hai số nguyên 16 bit
Cú pháp ==I, <>I, <I, >I, <=I, >=I
So sánh hai số nguyên là so sánh nội dung của thanh ghi ACCU 2 với ACCU 1. Nội
dung của hai thanh ghi là số nguyên 16 bit. Kết quả của phép so sánh là bit RLO =1 nếu
kết quả so sánh là đúng; RLO = 0 nếu kết quả so sánh là sai.

Thực hiện
lệnh
Kết quả RLO nếu
ACCU2>ACCU1
Kết quả RLO nếu
ACCU2=ACCU1
Kết quả RLO nếu
ACCU2<ACCU1


55
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


==I 0 1 0
<>I 1 0 1
>I 1 0 0
<I 0 0 1
>=I 1 1 0
<=I 0 1 1

Ví dụ:

L MW10 //
Chuyển nội dung của MW10 vào ACCU 1 (16-bit integer).

L IW24 //
Chuyển nội dung của IW24 vào ACCU 1 (16-bit integer).

>I //
So sánh ACCU 2 (MW10) lớn hơn ACCU 1 (IW24) hay không?

= M 2.0 //
RLO = 1 nếu MW10 > IW24.

3.5.3. So sánh hai số nguyên 32 bit
Cú pháp ==D, <>D, <D, >D, <=D, >=D
So sánh hai số nguyên là so sánh nội dung của thanh ghi ACCU 2 với ACCU 1. Nội
dung của hai thanh ghi là số nguyên 32 bit. Kết quả của phép so sánh là bit RLO =1 nếu

kết quả so sánh là đúng; RLO = 0 nếu kết quả so sánh là sai.

Thực hiện
lệnh
Kết quả RLO nếu
ACCU2>ACCU1
Kết quả RLO nếu
ACCU2=ACCU1
Kết quả RLO nếu
ACCU2<ACCU1
==D 0 1 0
<>D 1 0 1
>D 1 0 0
<D 0 0 1
>=D 1 1 0
<=D 0 1 1

Ví dụ:

L MD10 //
Chuyển nội dung của MD10 vào ACCU1.

L ID24 //
Chuyển nội dung của ID24 vào ACCU1.

>D //
So sánh ACCU 2 (MD10) lớn hơn ACCU 1 (ID24) ?

= M 2.0 //
RLO = 1 nếu MD10 > ID24


3.5.4. So sánh hai số thực 32 bit
Cú pháp ==R, <>R, <R, >R, <=R, >=R
So sánh hai số thực là so sánh nội dung của thanh ghi ACCU 2 với ACCU 1. Nội
dung của hai thanh ghi là số thực 32 bit. Kết quả của phép so sánh là bit RLO =1 nếu kết
quả so sánh là đúng; RLO = 0 nếu kết quả so sánh là sai.

Thực hiện
lệnh
Kết quả RLO nếu
ACCU2>ACCU1
Kết quả RLO nếu
ACCU2=ACCU1
Kết quả RLO nếu
ACCU2<ACCU1
==R 0 1 0

56
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


<>R 1 0 1
>R 1 0 0
<R 0 0 1
>=R 1 1 0
<=R 0 1 1

Ví dụ:


L MD10 //
Chuyển nội dung của MD10 vào ACCU 1(floating-point number).
L 1.359E+02 //
Chuyển hằng số1.359E+02 vào ACCU 1

>R //
So sánh ACCU 2 (MD10) lớn hơn ACCU 1 (1.359-E+02)không?

= M 2.0 //
RLO = 1 nếu MD10 > 1.359E+02.

Ví dụ:

Viết chương trình cho PLC điều khiển cơ cấu xả của một phễu chứa bột mì khi trọng lượng
đạt tới một mẻ cân là 30 Kg (bao gồm 25 kg bột và 5 kg trọng lượng của phễu, khung lắp)
mô tả hình 3.9. Trọng lượng của phễu được đo lường bằng cảm biến tải trọng (Loadcell).
Cho biết đặc tính kỹ thuật của Loadcell như sau: Tầm đo khối lượng: m = 0 ÷ 100 Kg; Tín
hiệu ra điện áp u = 0 ÷ 10 volt; giá trò đọc được từ ngõ vào của cảm biến qua kênh PIW là
0 ÷ 26460.

Bảng gán nhiệm vụ I/O

Input (ngỏ vào) Output (ngỏ ra)
Tên gọi Đòa chỉ Tên gọi Đòa chỉ
P
1Y
Loadcell PIW272 Van khí 1Y Q1.0
Hình 3.9 – Cơ cấucânvà xả bột
• Chương trình
Network1:

//Tín hiệu điện áp từ Loadcell
được đọc vào cổng PIW272. Khi chưa có bột,
với trọng lượng của cơ cấu phễu 5Kg

giá
trò số nguyên 2 byte là 1323. Cửa phễu đóng
tức Q1.0 ở trạng thái “0”

L PIW 2.72
L 1323
==I
R Q 1.0
Network2:
//Khi phễu chứa đạt tới 30 Kg,
tức là PIW272 = 7938. Lúc này Q1.0 là “1”
do đó cửa xả mở để xả bột.

L PIW 272
L 7938
>=I
S Q 1.0


3.6. LỆNH SỐ HỌC
(Integer Math Instruction)
3.6.1. Giới thiệu
Lệnh số học kết hợp nội dung của hai thanh ghi ACCU 1 và ACCU 2. Kết quả đïc
lưu trữ trong thanh ghi ACCU 1 và nội dung cũ của ACCU 1 được ghi vào ACCU 2. Nội
dung của ACCU 2 vẫn giữ nguyên không thay đổi.


57
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


Sử dụng phép toán số học, ta thực hiện 4 phép toán cộng (+), trừ (-), nhân (*), chia
(/) với 2 loại :số nguyên (integer number)16 bit và 32 bit; Số thực (real number).
Ngoài ra còn có một số phép toán khác: trò tuyệt đối, bình phương, căn bậc 2, …
3.6.2. Phép toán trên số nguyên 16 bit
3.6.2.1. Phép cộng
Cú pháp +I
Lệnh thực hiện phép cộng số nguyên 16 bit trong từ thấp của ACCU 1 và ACCU 2.
Kết quả là số nguyên 16 bit được ghi vào từ thấp của thanh ghi ACCU 1. Nội dung của
thanh ghi ACCU 2 không thay đổi. Nếu kết quả nằm ngoài 16 bit (-32768 ÷ 32767) thì bit
trạng thái OV và OS sẽ có cùng giá trò 1 (bò tràn).
Ví dụ:

L IW10 //
Nạp giá trò của IW10 vào ACCU1
.
L MW14 //
Nạp nội dung của ACCU 1 vào ACCU 2. Nạp giá trò MW14 vào ACCU 1.
+I //
Cộng nội dung ACCU 1 và ACCU 2, ghi vào ACCU 1.

T MW20 //
Nội dung của ACCU 1 được chuyển vào ô nhớ MW20.

3.6.2.2. Phép trừ
Cú pháp -I

Lệnh thực hiện phép trừ số nguyên 16 bit trong từ thấp ACCU 2 cho số nguyên
trong từ thấp của ACCU 1. Kết quả là số nguyên 16 bit được ghi vào từ thấp của thanh ghi
ACCU 1. Nội dung của thanh ghi ACCU 2 không thay đổi. Nếu kết quả nằm ngoài 16 bit (-
32768 ÷ 32767) thì bit trạng thái OV và OS sẽ có cùng giá trò 1 (bò tràn).
Ví dụ 27:

L IW6 //
Nạp giá trò của IW6 vào ACCU1
.
L MW8 //
Nạp nội dung của ACCU 1 vào ACCU 2. Nạp giá trò MW8 vào ACCU 1.
-I //
Trừ nội dung ACCU 1 bằng ACCU 2, ghi vào ACCU 1.

T MW10 //
Nội dung của ACCU 1 được chuyển vào ô nhớ MW10.

3.6.2.3. Phép nhân
Cú pháp *I
Lệnh thực hiện phép nhân hai số nguyên 16 bit trong từ thấp của ACCU 1 và
ACCU 2. Kết quả là số nguyên 32 bit được ghi vào từ thấp của thanh ghi ACCU 1. Nội
dung của thanh ghi ACCU 2 không thay đổi. Nếu kết quả nằm ngoài 16 bit (-32768 ÷
32767) thì bit trạng thái OV và OS sẽ có cùng giá trò 1 (bò tràn).
Ví dụ:

L IW2 //
Nạp giá trò của IW2 vào ACCU1
.
L MW2 //
Nạp nội dung của ACCU 1 vào ACCU 2. Nạp giá trò MW2 vào ACCU 1.

*I //
Nhân nội dung ACCU 1 và ACCU 2, ghi vào ACCU 1.

T MW6 //
Nội dung của ACCU 1 được chuyển vào ô nhớ MW6.

3.6.2.4. Phép chia
Cú pháp /I
Lệnh thực hiện phép chia số nguyên 16 bit trong từ thấp của ACCU 2 cho số
nguyên 16 bit trong từ thấp của ACCU 1. Kết quả là số nguyên 16 bit được ghi vào từ thấp
của thanh ghi ACCU 1.Phần dư dược ghi vào từ cao của ACCU 1. Nội dung của thanh ghi

58
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


ACCU 2 không thay đổi. Nếu kết quả nằm ngoài 16 bit (-32768 ÷ 32767) thì bit trạng thái
OV và OS sẽ có cùng giá trò 1 (bò tràn).
Ví dụ:

L MW6 //
Nạp giá trò của IW6 vào ACCU1
.
L MW8 //
Nạp nội dung của ACCU 1 vào ACCU 2. Nạp giá trò MW8 vào ACCU 1.
/I //
Chia nội dung ACCU 1 bằng ACCU 2, ghi vào ACCU 1.

T MW10 //

Nội dung của ACCU 1 được chuyển vào ô nhớ MW10.

Chẳng hạn: 13 chia 4
Nội dung của ACCU 2-L (MW6): "13"
Nội dung của ACCU 1-L (MW8): "4"
Phép chia /I (ACCU 2-L / ACCU 1-L): "13/4"
Nội dung của ACCU 1-L sau khi thực hiện phép chia (quotient): "3"
Nội dung của ACCU 1-H sau khi thực hiện phép chia (remainder):”1”
3.6.3. Phép toán trên số nguyên 32 bit
3.6.3.1. Phép cộng
Cú pháp +D
Lệnh thực hiện phép cộng số nguyên 32 bit của ACCU 1 và ACCU 2. Kết quả là số
nguyên 32 bit được ghi vào thanh ghi ACCU 1. Nội dung của thanh ghi ACCU 2 không
thay đổi. Nếu kết quả nằm ngoài 32 bit (-2147483648 ÷ 2147483647) thì bit trạng thái OV
và OS sẽ có cùng giá trò 1 (bò tràn).
Ví dụ:

L ID10 //
Nạp giá trò của ID10 vào ACCU 1.

L MD14 //
Nạp giá trò của ACCU 1 to ACCU 2. Nạp giá trò của MD14 vào ACCU 1.
+ D //
Cộng ACCU 2 với ACCU 1; ghi kết quả vào ACCU 1.

T DB1.DBD25 //
Nội dung của ACCU 1 (result) được chuyển vào DBD25của DB1.

3.6.3.2. Phép trừ
Cú pháp -D

Lệnh thực hiện phép trừ số nguyên 32 bit trong ACCU 2 cho số nguyên của ACCU
1. Kết quả là số nguyên 32 bit được ghi vào ACCU 1. Nội dung của thanh ghi ACCU 2
không thay đổi. Nếu kết quả nằm ngoài 32 bit thì bit trạng thái OV và OS sẽ có cùng giá
trò 1 (bò tràn).
Ví du
:
L ID10 //
Nạp giá trò của ID10 vào ACCU 1.

L MD14 //
Nạp giá trò của ACCU 1 to ACCU 2. Nạp giá trò của MD14 vào ACCU 1.
- D //
ACCU 2 trừ ACCU 1; ghi kết quả vào ACCU 1.

T DB1.DBD25 //
Nội dung của ACCU 1 được chuyển vào DBD25của DB1.

3.6.3.3. Phép nhân
Cú pháp *D
Lệnh thực hiện phép nhân hai số nguyên 32 bit trong ACCU 2 và số nguyên của ACCU 1.
Kết quả là số nguyên 32 bit được ghi vào ACCU 1. Nội dung của thanh ghi ACCU 2 không
thay đổi. Nếu kết quả nằm ngoài 32 bit thì bit trạng thái OV và OS sẽ có cùng giá trò 1 (bò
tràn).

59
ĐIỀU KHIỂN LẬP TÌNH PLC - MẠNG PLC
Chương 3 – Ngôn ngữ lập trình


Ví dụ:

L ID10 //
Nạp giá trò của ID10 vào ACCU 1.

L MD14 //
Nạp giá trò của ACCU 1 to ACCU 2. Nạp giá trò của MD14 vào ACCU 1.
* D //
ACCU 2 nhân với ACCU 1; ghi kết quả vào ACCU 1.

T DB1.DBD25 //
Nội dung của ACCU 1 được chuyển vào DBD25của DB1.

3.6.3.4. Phép chia
Cú pháp /D
Lệnh thực hiện phép chia số nguyên 32 bit trong ACCU 2 cho số nguyên của
ACCU 1. Kết quả của phép chia (số thương – quotient) là số nguyên 32 bit được ghi vào
ACCU 1. Nội dung của thanh ghi ACCU 2 không thay đổi. Nếu kết quả nằm ngoài 32 bit
thì bit trạng thái OV và OS sẽ có cùng giá trò 1 (bò tràn).
Chú ý: không đề cập đến phần dư (remainder)
Ví dụ
:
L ID10 //
Nạp giá trò của ID10 vào ACCU 1.

L MD14 //
Nạp giá trò của ACCU 1 to ACCU 2. Nạp giá trò của MD14 vào ACCU 1.
/ D //
ACCU 2 chia cho ACCU 1; ghi kết quả vào ACCU 1.

T DB1.DBD25 //
Nội dung của ACCU 1 được chuyển vào DBD25của DB1.


Chẳng hạn: 13 chia 4
Nội dung của ACCU 2 (ID10): "13"
Nội dung của ACCU 1 (MD14): "4"
Phép chia /D (ACCU 2 / ACCU 1): "13/4"
Nội dung của ACCU 1 sau khi thực hiện phép chia (quotient): "3"
3.6.3.5. Phép chia lấy phần dư
Cú pháp MOD
Lệnh thực hiện phép chia số nguyên 32 bit trong ACCU 2 cho số nguyên của
ACCU 1. Kết quả của phép chia (số dư – remainder) là số nguyên 32 bit được ghi vào
ACCU 1. Nội dung của thanh ghi ACCU 2 không thay đổi. Nếu kết quả nằm ngoài 32 bit
thì bit trạng thái OV và OS sẽ có cùng giá trò 1 (bò tràn).
Ví dụ
:
L ID10 //
Nạp giá trò của ID10 vào ACCU 1.

L MD14 //
Nạp giá trò của ACCU 1 to ACCU 2. Nạp giá trò của MD14 vào ACCU 1.
/ D //
ACCU 2 chia cho ACCU 1; ghi kết quả (remainder) vào ACCU 1.

T DB1.DBD25 //
Nội dung của ACCU 1 được chuyển vào DBD25của DB1.

Chẳng hạn: 13 chia 4
Nội dung của ACCU 2 (ID10): "13"
Nội dung của ACCU 1 (MD14): "4"
Phép chia MOD (ACCU 2 / ACCU 1): "13/4"
Nội dung của ACCU 1 sau khi thực hiện phép chia (remaider): "1"

3.6.4. Phép toán trên số thực (Real) 32 bit
3.6.4.1. Phép cộng
Cú pháp +R

60

×