Tài liệu Điều khiển lập trình PLC - Phần 1 - Chương 3: Ngôn ngữ lập trình: Đ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ƯƠN
G 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 ...
63 trang |
Chia sẻ: hunglv | Lượt xem: 1389 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Điều khiển lập trình PLC - Phần 1 - Chương 3: Ngôn ngữ lập trình, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
PHAÀN I
ÑIEÀU KHIEÅN LAÄP TRÌNH (PLC)
CHÖÔN
G 3
NGOÂN NGÖÕ LAÄP TRÌNH Chuû ñeà:
Bieán vaø vuøng nhôù
Caùc loaïi leänh logic treân bit
Caùc leänh xöû lyù döõ lieäu: dòch chuyeån,so saùnh, toaùn hoïc…
Caùc boä chöùc naêng ñònh thôøi vaø ñeám
Caùc leänh ñieàu khieån chöông trình
Muïc ñích:
Söû duïng vaø gaùn bieán cho caùc ñòa chæ.
Vaän duïng caùc leänh ñeå vieát chöông trình öùng duïng.
Hieåu roõ moái quan heä chöông trình vôùi keát noái thieát bò
36
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.1. GIÔÙI THIEÄU
Caùc loaïi PLC noùi chung thöôøng coù nhieàu ngoân ngöõ laäp trình ñeå phuïc vuï caùc ñoái
töôïng söû duïng khaùc nhau. Tuy nhieân haàu heát ñeà xoay quanh 3 ngoân ngöõ cô baûn. Ñoù laø:
Ngoân ngöõ “ kieåu lieät keâ”, kí hieäu laø STL (Statement List). Ñaây laø daïng cuûa ngoân ngöõ
Assembler maùy tính.
Ngoân ngöõ “hình thang”, kí hieäu laø LAD (Ladder Logic). Ñaây laø daïng ngoân ngöõ theo
kieåu thieát keá maïch ñieàu khieån logic rôø le.
Ngoân ngöõ “hình khoái”, kí hieäu laø FBD (Function Block Diagram). Ñaây laø daïng ngoân
ngöõ theo kieåu thieát keá maïch ñieàu khieån logic soá.
Function Block Diagram
Statement List
Ladder Diagram
Hình 3.1-Ba kieåu ngoân ngöõ laäp trình M
Moät chöông trình coù theå vieát treân LAD hoaëc FBD coù theå chuyeån ñöôïc sang daïng STL,
nhöng ngöôïc thì coù theå khoâng. Trong STL coù nhöõng leänh maø trong LAD hoaëc FBD khoâng
dieãn taû ñöôïc. Tuy vaäy veà maët laäp trình, ngoân ngöõ LAD raát ñôn giaûn deã daøng cho laäp trình.
Chính vì lyù do naøy, taøi lieäu quan taâm ñeán ngoân ngöõ STL vaø laáy noù ñeå laäp trình.
Chuù yù: Hieän nay treân theá giôùi coù raát nhieàu loaïi PLC do nhieàu haõng cuûa nhieàu nöôùc saûn xuaát
khaùc nhau vaø ña daïng. Nhöng baûn chaát, phöông phaùp laäp trình cuûa ngoân ngöõ khoâng khaùc
nhau maø chæ khaùc nhau ôû choã laø caùc kí hieäu ñòa chæ, teân goïi cuûa caùc I/O, vuøng nhôù maø thoâi.
37
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.2. CAÁU TRUÙC LEÄNH VAØ TRAÏNG THAÙI KEÁT QUAÛ
3.2.1. Kieåu döõ lieäu vaø phaân chia boä nhôù
3.2.1.1. Kieåu döõ lieäu
Caùc kieåu döõ lieäu ñöôïc söû duïng trong S7-300:
1) BOOL: vôùi dung löôïng moät bit vaø coù giaù trò 1 hoaëc 0 ( ñuùng hoaëc sai). Ñaây laø kieåu
döõ lieäu cho bieán hai trò.
2) Byte: goàm 8 bit, thöôøng ñöôïc bieåu dieãn moät soá nguyeân döông töø 0 ñeán 255 hoaëc laø
maõ ASCII cuûa moät kyù töï.
3) Word: goàm 2 byte, bieåu dieãn soá nguyeân töø 0 ñeán 65535.
4) Int: cuõng coù dung löôïng 2 byte, duøng ñeå bieåu dieãn moät soá nguyeân töø –32768 ñeán
32767.
5) Dint: goàm 4 byte, duøng ñeå bieåu dieãn soá nguyeân töø –2147483648 ñeán 2147483647.
6) Real: goàm 4 byte, duøng ñeå bieåu dieãn soá thöïc coù daáu phaåy ñoäng.
7) S5t: khoaûng thôøi gian, ñöôïc tính baèng giôø, phuùt, giaây, miligiaây.
8) Tod: bieåu dieãn giaù trò thôøi gian tính theo giôø/phuùt/giaây.
9) Date: bieåu dieãn giaù trò thôøi gian tính theo naêm/thaùng/ngaøy.
10) Char: bieåu dieãn moät kyù töï hay nhieàu kyù töï (nhieàu nhaát laø 4 kyù töï).
3.2.1.2. Phaân chia boä nhôù
Boä nhôù S7-300 chia laøm ba vuøng chính:
1) Vuøng chöùa chöông trình öùng duïng. Vuøng nhôù chia thaønh 3 mieàn:
a) OB (Organization Block): Mieàn chöùa chöông trình toå chöùc.
b) FC (Function): Mieàn chöùa chöông trình con, ñöôïc toå chöùc thaønh haøm vaø coù bieán
hình thöùc ñeå trao ñoåi döõ lieäu vôùi chöông trình goïi noù.
c) FB (Function Block): Mieàn chöùa chöông trình con, ñöôïc toå chöùc thaønh haøm vaø coù
khaû naêng trao ñoåi döõ lieäu vôùi baát kyø moät khoái chöông trình naøo khaùc. Caùc döõ lieäu
naøy phaûi ñöôïc xaây döïng thaønh moät khoái döõ lieäu rieâng (goïi laø DB – Data Block).
2) Vuøng chöùa tham soá cuûa heä ñieàu haønh vaø chöông trình öùng duïng, ñöôïc chia thaønh 7
mieàn khaùc nhau, bao goàm:
a) I (Process image input): Mieàn boä ñeäm caùc döõ lieäu coång vaøo soá. Tröôùc khi baét ñaàu thöïc
hieän chöông trình, PLC seõ ñoïc taát caû caùc giaù trò logic cuûa taát caû caùc coång vaøo vaø löu tröõ
ôû vuøng nhôù I. Chöông trình öùng duïng khoâng ñoïc tröïc tieáp traïng thaùi logic cuûa coång vaøo
soá maø chæ laáy döõ lieäu cuûa coång vaøo töø boä ñeäm I.
b) Q (Process image output): Mieàn boä ñeäm caùc döõ lieäu coång ra soá. Keát thuùc giai ñoaïn thöïc
hieän chöông trình, PLC seõ chuyeån giaù trò logic cuûa boä ñeäm Q ñeán caùc coång ra soá.
Chöông trình khoâng tröïc tieáp gaùn giaù trò tôùi coång ra maø chæ chuyeån chuùng vaøo boä ñeäm
Q.
c) M: Mieàn caùc bieán côø. Chöông trình söû duïng caùc vuøng nhôù naøy ñeå löu tröõ caùc tham soá
caàn thieát vaø coù theå truy nhaäp theo kieåu bit (M), byte (MB), töø ñôn (MW)hay töø keùp
(MD).
d) T: Mieàn nhôù phuïc vuï boä thôøi gian (timer) bao goàm löu tröõ giaù trò thôøi gian ñaët tröôùc (PV
– preset value), giaù trò ñeám thôøi gian töùc thôøi (CV – Current value) cuõng nhö giaù trò
logic ôû ñaàu ra cuûa timer.
38
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
e) C: Mieàn nhôù phuïc vuï boä ñeám (counter) bao goàm löu tröõ giaù trò thôøi gian ñaët tröôùc (PV –
preset value), giaù trò ñeám töùc thôøi (CV – Current value) cuõng nhö giaù trò logic ôû ñaàu ra
cuûa boä ñeám.
f) PI: Mieàn ñòa chæ coång vaøo cuûa caùc module töông töï (I/O External input). Caùc giaù trò
töông töï taïi coång vaøo cuûa module töông töï seõ ñöôïc module ñoïc vaø chuyeån töï ñoäng theo
nhöõng ñòa chæ. Chöông trình öùng duïng coù theå truy nhaäp mieàn nhôù PI theo caùc kieåu bieán
byte (PIB), töø ñôn (PIW) hay töø keùp (PID).
g) PQ: Mieàn ñòa chæ coång ra cuûa caùc module töông töï (I/O External output). Caùc giaù trò
theo nhöõng ñòa chæ naøy seõ ñöôïc module töông töï chuyeån töï ñoäng tôùi caùc coång ra töông
töï. Chöông trình öùng duïng coù theå truy nhaäp mieàn nhôù PQ theo caùc kieåu bieán byte
(PQB), töø ñôn (PQW) hay töø keùp (PQD).
3) Vuøng chöùa caùc khoái döõ lieäu
a) DB (Data Block): mieàn chöùa döõ lieäu ñöôïc toå chöùc thaønh hình khoái. Kích thöôùc vaø soá
löôïng khoái cuõng do ngöôøi duøng quy ñònh tuøy theo chöông trình. Chöông trình öùng duïng
coù theå truy naäp tôùi mieàn nhôù naøy theo bit (DBX), byte (DBB), töø ñôn (DBW) haëoc töø
keùp (DBD).
b) L (Local data bolck): Mieàn döõ lieäu cuïc boä, ñöôïc caùc khoái chöông trình OB, FC, FB toå
chöùc vaø söû duïng cho caùc bieán nhaùp töùc thôøi vaø trao ñoåi döõ lieäu cuûa bieán hình thöùc vôùi
nhöõng khoái chöông trình ñaõ goïi noù. Noäi dung cuûa moät soá döõ lieäu trong mieàn nhôù naøy seõ
bò xoùa khi keát thuùc chöông trình töông öùng trong OB, FC, FB. Mieàn naøy coù theå truy
nhaäp ñöôïc töø chöông trình theo bit (L), byte (LB), töø (LW) hoaëc töø keùp (LD).
3.2.2. Caáu truùc leänh vaø traïng thaùi keát quaû
3.2.2.1. Toaùn haïng laø döõ lieäu
a) Döõ lieäu logic True vaø False coù ñoä daøi 1 bit. Ví duï
Bit_1 = True //giaù trò logic 1 ñöôïc gaùn cho bit_1
b) Soá nhò phaân. Ví duï
L 2#00101101 //naïp soá nhò phaân vaøo thanh ghi ACCU1
c) Soá Hexadecimal x coù ñoä daøi 1 byte(B#16#x), 1 töø (W#16#x) hoaëc 1 töø keùp (DW#16#x).
Ví duï
L B#16#2E //naïp soá 2E vaøo byte thaáp thanh ghi ACCU1
L W#16#4D2 //naïp soá 4D2 vaøo 2 byte thaáp thanh ghi ACCU1
L DW#16#D1B2E //naïp soá D1B2E vaøo thanh ghi ACCU1
d) Soá nguyeân x vôùi ñoä daøi 2byte cho bieán kieåu INT. Ví duï
L 960
e) Soá nguyeân x vôùi ñoä daøi 4byte daïng L#x cho bieán kieåu DINT. Ví duï
L L#600
f) Soá thöïc x cho kieån bieán REAL. Ví duï
L 450.0
g) Döõ lieäu thôøi gian cho bieán kieåu S5T daïng giôø_phuùt_giaây_miligiaây. Ví duï
L S5T#3h_5m_1s_10ms
h) Döõ lieäu thôøi gian cho bieán kieåu TOD daïng giôø:phuùt:giaây. Ví duï
L TOD#6:30:15
39
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
i) DATE: bieåu dieãn giaù trò thôøi gian tính theo naêm/thaùng/ngaøy. Ví duï
L DATE#2000-12-9
j) C: bieåu dieãn giaù trò soá ñeám ñaët tröôùc cho boä ñeám. Ví duï
L C#50
k) P: döõ lieäu bieåu dieãn ñòa chæ cuûa moät bit oâ nhôù. Ví duï
L P#Q0.3
l) Döõ lieäu kí töï. Ví duï
L ‘BCDE’
3.2.2.2. Toaùn haïng laø ñòa chæ
Ñòa chæ oâ nhôù ñöôïc caáu taïo thaønh hai phaàn: phaàn chöõ vaø phaàn soá. Ví duï
M0.9 PQW272
Phaàn chöõ Phaàn soá Phaàn chöõ Phaàn soá
Phaàn chöõ chæ vò trí vaø kích thöôùc cuûa oâ nhôù (tham khaûo 3.2.1)
Phaàn soá chæ ñòa chæ cuûa byte hoaëc bit trong mieàn nhôù ñaõ xaùc ñònh.
3.2.2.3. Thanh ghi traïng thaùi
Khi thöïc hieän leänh, CPU seõ ghi nhaän laïi traïng thaùi cuûa pheùp tính trung gian cuõng
nhö cuûa keát quaû vaøo moät thanh ghi 16 bit vaø ñöôïc goïi laø thanh ghi traïng thaùi (status word).
Tuy nhieân noù chæ söû duïng vôùi 9 bit vaø caáu truùc ñöôïc moâ taû nhö sau:
8 7 6 5 4 3 2 1 0
BR CC1 CC0 OV OS OR STA RLO FC
- FC (First check ): Khi phaûi thöïc hieän moät daõy caùc leänh logic lieân tieáp nhau goàm caùc
pheùp tính vaø, hoaëc vaø nghòch ñaûo, bit FC coù giaù trò baèng 1. Ngöôïc laïi, FC=0 khi daõy
leänh logic tieáp ñieåm vöøa hoaøn taát.
Ví duï:
A I0.2 //FC=0
O I0.4 //FC=0
= Q1.0 //FC=0
- RLO (Result of Logic Operation): Keát quaû töùc thôøi cuûa pheùp toaùn logic vöøa ñöôïc thöïc
hieän. Ví duï:
A I0.1
a) Neáu tröôùc khi thöïc hieän bit FC=0 thì coù taùc duïng chuyeån noäi dung cuûa ngoõ vaøo soá I0.1
vaøo bit traïng thaùi RLO.
b) Neáu tröôùc khi thöïc hieän bit FC=1 thì coù taùc duïng thöïc hieän pheùp toaùn vaø giöõa RLO vaø
giaù trò logic ngoõ vaøo I0.1. Keát quaû cuûa pheùp tính ñöôïc ghi laïi vaøo bit traïng thaùi RLO.
- STA (Status bit): Bit traïng thaùi naøy luoân coù giaù trò logic cuûa tieáp ñieåm ñöôïc chæ ñònh
trong leänh.
40
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Ví duï:
A I1.0
AN I1.0
Caû hai leänh ñeàu gaùn cho STA cuøng moät giaù trò laø noäi dung cuûa ngoõ vaøo soá I1.0.
- OR: Ghi laïi giaù trò logic cuûa pheùp toaùn vaø cuoái cuøng ñöôïc thöïc hieän ñeå giuùp ñôõ cho vieäc
thöïc hieän pheùp toaùn hoaëc sau ñoù. Ñieàu naøy laø caàn thieát vì cuøng moät bieåu thöùc haøm hai
trò thì bao giôø pheùp toaùn vaø cuõng thöïc hieän tröôùc pheùp toaùn hoaëc.
- OS (Stored overflow bit): Ghi laïi giaù trò bit bò traøn ra ngoaøi maûng oâ nhôù.
- OV (Overflow bit): Bít baùo keát quaû bò traøn ra ngoaøi maûng oâ nhôù.
- CC0 vaø CC1 (Condition code): Hai bit baùo traïng thaùi keát quaû pheùp tính vôùi soá nguyeân,
soá thöïc, pheùp dòch chuyeån hoaëc pheùp tính logic trong ACCU.
- BR (Binary result bit): Bit traïng thaùi cho pheùp lieân keát hai loaïi ngoân ngöõ laäp trình STL
vaø LAD. Chaúng haïn cho pheùp ngöôøi söû duïng coù theå vieát moät khoái chöông trình FB hoaëc
FC treân STL nhöng goïi vaø söû duïng trong chöông trình vieát treân LAD. Ñeå taïo ra moái
lieân keát ñoù, ta phaûi thöïc hieän vieäc keát thuùc chöông trình trong FB, FC baèng leänh ghi:
a) 1 vaøo BR, neáu chöông trình chaïy khoâng coù loãi.
b) 0 vaøo BR, neáu chöông trình chaïy coù loãi.
Chuù yù: Moät chöông trình coù theå coù moät hay nhieàu network tuøy thuoäc vaøo tính chaát, möùc ñoä
traïng thaùi hoaït ñoäng cuûa heä thoáng. Nhöng moãi Network chæ chöùa moät ñoaïn chöông trình
thöïc hieän moät nhieäm vuï cuï theå.
Network 1
Ñoaïn chöông trình 1
Network 2
Ñoaïn chöông trình 2
Network 3
Ñoaïn chöông trình 3
3.3. CAÙC LEÄNH LOGIC
Leänh logic laøm vieäc treân heä thoáng soá nhò phaân vôùi hai bit soá, ñoù laø : bit 1 vaø bit 0
Trong ñieàu khieån ngöôøi ta thöôøng quy ñònh 1 laø traïng thaùi hoaït ñoäng hay coù naêng löôïng, 0
laø traïng thaùi khoâng hoaït ñoäng hay khoâng naêng löôïng.
Caùc leänh Logic treân bit theå hieän caùc traïng thaùi tín hieäu 1 vaø 0 vaø lieân keát chuùng
thaønh pheùp toaùn logic. Keát quaû cuûa keát hôïp naøy laø 1 hoaëc 0 vaø ñöôïc goïi laø RLO.
Leänh toaùn logic bao goàm caùc leänh cô baûn sau:
• A Vaø (And)
• AN Phuû ñònh vaø (And Not)
41
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
• O Hoaëc (Or)
• ON Phuû ñònh hoaëc (Or Not)
• X Loaïi tröø (Exclusive)
• XN Phuû ñònh loaïi tröø (Exclusive Not)
• And tröôùc Or
Chuùng ta coù theå söû duïng caùc leänh sau ñeå thöïc hieän caùc bieåu thöùc loàng vaøo nhau:
• A( Vaø vôùi loàng môû
• AN( Phuû ñònh vaø vôùi loàng môû
• O( Hoaëc vôùi loàng môû
• ON( Phuû ñònh hoaëc vôùi loàn
• X( Loaïi tröø vôùi loàng môû
• XN( Phuû ñònh loaïi tröø vôùi
• ) Ñoùng loàng keát thuùc ñ
Chuùng ta coù theå keát thuùc chuoãi leänh bieåu th
• = Pheùp gaùn (Assign)
• R Xoaù nhôù (Reset)
• S Nhôù (Set)
Chuùng ta coù theå söû duïng moät trong nhöõng l
(RLO):
• NOT Phuû ñònh RLO
• SET Nhô RLO (=1)
• CLR Xoùa RLO (=0)
• SAVE Löu tröõ RLO ôû thanh
Hay laø söû duïng moät leänh sau ñeå phaùt hieän söôøn
• FN Phaùt hieän caïnh xuoáng
• FP Phaùt hieän caïnh leân (E
3.3.1. Leänh gaùn
Cuù phaùp =
Ñòa chæ Loaïi d
Bit Bo
Ví duï:
Chöông trình STL
g môû
loàng môû
oaïn leänh.
öùc logic baèng caùc leänh:
eänh sau ñeå thay ñoåi keát quaû cuûa pheùp toaùn logic
ghi BR
leân vaø xuoáng cuûa tín hieäu:
(Edge Negative)
dge Positive)
Toaùn haïng
öõ lieäu Vuøng bieán nhôù
ol I, Q, M, L, D
42
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.3.2. Leänh thöïc hieän pheùp tính vaø
Cuù phaùp A
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D, T, C
A kieåm tra khoâng bieát traïng thaùi cuûa bit ñòa chæ (toaùn haïng) laø 1 hay khoâng, vaø AND keát
quaû kieåm tra vôùi RLO.
Ví duï:
Q0.2 möùc tín hieäu 0
I1.1 mö
I1.0 mö
Nguoàn ñieän
A I1.1
= Q0.2
A I1.0
Rôø le logicChöônh trình STL
Cuoän daây
3.3.3. Leänh thöïc hieän pheùp tính vaø vôùi giaù trò nghòch ñaûo
Cuù phaùp AN
AN kieåm tra khoâng bieát traïng thaùi cuûa bit ñòa chæ (toaùn haïng) laø 0 hay khoâng, vaø AND keát
quaû kieåm tra vôùi RLO.
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D, T, C
I1.1 mö
Q0.2 m
I1.0 mö
Nguoàn ñieän
A I1.1
= Q0.2
A I1.0
Rôø le logicChöônh trình STL
Ví duï:
NO tieáp ñieåm
NC tieáp ñieåm ùc tín hieäu 1
ùc tín hieäu 0ùc tín hieäu 0
ùc tín hieäu 0
NO tieáp ñieåm
NO tieáp ñieåm Cuoän daây öùc tín hieäu 0
43
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.3.4. Leänh thöïc hieän pheùp tính hoaëc
Cuù phaùp O
O kieåm tra khoâng bieát traïng thaùi cuûa bit ñòa chæ (toaùn haïng) laø 1 hay khoâng, vaø OR keát quaû
kieåm tra vôùi RLO vaø ghi laïi keát quaû vaøo RLO.
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieá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
Cuoän daây
Nguoàn ñieän
I1.0 mö
Q0.2 möùc tín hieäu 0
Ví duï:
3.3.5. Leänh thöïc hieän pheùp tính hoaëc vôùi giaù trò nghòch ñaûo
Cuù phaùp ON
ON kieåm tra khoâng bieát traïng thaùi cuûa bit ñòa chæ (toaùn haïng) laø 0 hay khoâng, vaø OR keát
quaû kieåm tra vôùi RLO vaø ghi laïi keát quaû vaøo RLO.
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D, T, C
Nguoàn ñieän
I1.0 m
I1.1 m
Q0.2 m
ON I1.1
= Q0.2
O I1.0
Rôø le logicChöônh trình STL
Ví duï 5:
NC tieáp ñieåm
öùc tín hieäu 0
öùc tín hieäu1
NO tieáp ñieåm NO tieáp ñieåm
ùc tín hieäu 0 I1.1 möùc 0 Cuoän daây öùc tín hieäu 1
44
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.3.6. Leänh thöïc hieän pheùp tính exclusive or
Cuù phaùp X
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D, T, C
X kieåm tra khoâng bieát traïng thaùi cuûa bit ñòa chæ (toaùn haïng) laø 1 hay khoâng, vaø XOR keát quaû kieåm
tra vôùi RLO vaø ghi laïi keát quaû vaøo RLO
Ví duï:
Q0.2 cuoän daây
Tieáp ñieåm I1.1
Tieáp ñieåm I1.0
Nguoàn ñieän
X I0.1
= Q1.2
X I0.0
Rôø le logicChöônh trình STL
3.3.6. Leänh thöïc hieän pheùp tính exclusive or not
Cuù phaùp XN
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D, T, C
X kieåm tra khoâng bieát traïng thaùi cuûa bit ñòa chæ (toaùn haïng) laø 0 hay khoâng, vaø XOR keát quaû kieåm
tra vôùi RLO vaø ghi laïi keát quaû vaøo RLO
Ví du:
Q0.2 c
Tieáp ñ
Tieáp ñ
Nguoàn ñieän
XN I0.1
= Q1.2
X I0.0
Rôø le logicChöônh trình STL
ieåm I1.1
ieåm I1.0 uoän daây
45
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.3.7. Leänh thöïc hieän pheùp tính vaø vôùi giaù trò moät bieåu thöùc
Cuù phaùp A(
Chuù yù: leänh khoâng coù Toaùn haïng
A( thöïc hieän pheùp tính vaø giöõa RLO vôùi bieåu thöùc trong daáu ngoaëc sau noùvaø ghi laïi keát quaû vaøo
RLO.
Ví duï:
Q1.2 cuoän daây
I0.4
M0.0 M0.1
M1.1
M1.4A M1.4
A(
O M1.1
)
O I0.4
A(
Nguoàn ñieän
= Q1.2
O I0.0
O M0.1
)
Rôø le logicChöônh trình STL
3.3.8. Leänh thöïc hieän pheùp tính hoaëc vôùi giaù trò nghòch ñaûo moät bieåu thöùc
Cuù phaùp O(
Chuù yù: leänh khoâng coù Toaùn haïng
O( thöïc hieän pheùp tính hoaëc giöõa RLO vôùi giaù trò logic cuûa bieåu thöùc trong daáu ngoaëc sau noùvaø ghi
laïi keát quaû vaøo RLO.
Ví duï:
Q1.2 cuoän daây
I0.4
I0.0
M1.1
M1.4A M1.4
O(
AN M1.1
)
A I0.4
Nguoàn ñieän
= Q1.2
A I0.0
Rôø le logicChöônh trình STL
46
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Ví duï: Vieát chöông trình khôûi ñoäng ñoäng khoâng ñoàng boä 3 phase moâ taû hình 3.2. Nhaán nuùt Start PB
ñoäng cô chaïy, nhaán nuùt Stop PB thì ñoäng cô döøng.
• Baûng gaùn nhieäm vuï I/O
• Chöông trình
Network1:
A(
O “Start PB”
O “Coil MC”
)
A “Stop PB”
= “C
Ví duï: Vieát chöô xaùc
ñònh tröôùc ñöôïc m aïn
haønh trình SS1. K aåy
phoâi theùp dòch c hôøi
dao caét ñi xuoáng ñeå caét phoâi theùp vaø gaëp SS2 thì caét xong vaø dao seõ trôû veà vò trí ban ñaàu
(treân cuøng) keát thuùc quaù trình caét moät thanh theùp.
• Baûng gaùn nhieäm vuï I/O
• Chöông trình
Network1:
A "Start PB"
AN "Motor Brake"
S "Friction Wheel Motor"
Network2:
N
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
Start PB I0.0 Coil MC Q0.0
Stop PB I0.1
I0.0
I0.1
Hình 3.2 – Maïch ñieän ñoäng cô
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
Start PB I0.0 Friction Wheel Motor Q0.0
1Y
P
Motor Brake
Cutting Knife
Cutting Finish
Sensor
Q0.2 Cutting Knife I0.2 Cutting Finish Sensor
Motor Brake Q0.1 I0.1 Dimension sensor
n
Q0.0
A "Dimension sensor"
R "Friction Wheel Motor"
S "Cutting Knife"
S "Motor Brake"
etwork3: A "Cutting
R "Cutting
R "Motor Boil MC”
ng trình cho PLC ñieàu khieån coâng ñoaïn caét saûn phaåm theo kích thöôùc ñöôïc
oâ taû hình 3.3. Chieàu daøi cuûa saûn phaåm laø khoaûng caùch giöõa dao caét vaø giôùi h
hi nhaán nuùt Start PB thì ñoäng cô truyeàn chuyeån ñoäng baùnh ma saùt (1) ñ
huyeån. Gaëp SS1 thì thaéng ñoäng cô laøm vieäc vaø ñoäng cô döøng, ñoàng t
Bieåu ñoà traïng thaùi theo thôøi giaFinish Sensor"
Knife" Hình 3.3 – Cô caáu caét saûn phaåm theo kích thöôùc
Friction Wheel Motor Workpiece Dimension Sensor
rake"
47
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.3.9. Leänh gaùn giaù trò logic 1 vaøo oâ nhôù (Set bit)
Cuù phaùp S
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D
S seõ ñaët giaù trò 1 vaøo oâ nhôù cuûa bit ñòa chæ, neáu RLO=1.
Ví duï:
NO contact
Nguoàn ñieän
Rôø le logicChöônh trình STL
3.3.10. Leänh gaùn giaù trò logic 0 vaøo oâ nhôù (Reset bit)
Cuù phaùp R
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D
R seõ ñaët giaù trò 0 vaøo oâ nhôù cuûa bit ñòa chæ,
neáu RLO=1. Xem ôû leänh Set bit.
Ví duï:
Vieát chöông trình cho PLC ñieàu khieån thieát bò
khoan thuûy löïc cuûa moät ñaàu khoan töï ñoäng moâ taû
hình 3.4, vôùi yeâu caàu kyõ thuaät nhö sau: Ñöa chi
tieát vaøo vò trí caàn khoan, roài aán nuùt Dri
muõi khoan xoay, ñaàu khoan tònh tieán vaø kh
tieát. Ñaït ñuû chieàu saâu khoan caàn thieát
ñoäng), ñaàu khoan töï ñoäng quay veà vaø k
moät chu kyø khoan taïi S3. Trong quaù trình g
neáu xaûy ra söï coá ta aán nuùt Home Back, ña
töï ñoäng lui veà.
ll Start,
oan chi
(S4 taùc
eát thuùc
ia coâng àuCoil Q4.0
NC contact
I1.0 Hình 3.4 – Cô caáu khoan khoan
48
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
• Baûng gaùn nhieäm vuï I/O
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goï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
Bieåu ñoà traïng thaùi theo thôøi gian• Chöông trình
Network1: // Khi Drill Start laø 1 thì 1Y ñöôïc nhôù leân 1. Network2: // S4 laø 1 hoaëc Home Back laø 0 thì
xoùa 1Y
A "Drill Start" O "S4"
A "S3" ON "Home Back"
S "Solenoid 1Y" R "Solenoid 1Y"
3.3.11. Leänh ñaûo giaù trò cuûa RLO
Cuù phaùp NOT
NOT ñaûo noäi dung cuûa RLO. Chuù yù: leänh khoâng coù Toaùn haïng
Ví duï:
I1.0
I1.0
Q4.0
Signal state diagram
1
0
0
1
A I1.0
NOT
= Q4.0
Coil Q4.0
NC contact
Nguoàn ñieän
Rôø le logic Chöônh trình STL
3.3.12. Leänh ghi giaù trò 1 vaøo RLO
Cuù phaùp SET
Leänh khoâng coù toaùn haïng vaø coù taùc duïng ghi 1 vaøo RLO.
Ví duï:
Keát quûa traïng thaùi logic
Möùc tín hieäu 49
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.3.13. Leänh ghi giaù trò 0 vaøo RLO
Cuù phaùp CLR
Leänh khoâng coù toaùn haïng vaø coù taùc duïng ghi 0 vaøo RLO.
xem ôû leänh SET (3.3.12).
3.3.14. Leänh chuyeån giaù trò RLO vaøo BR
Cuù phaùp CLR
Leänh chuyeån noäi dung cuûa RLO vaøo bit traïng thaùi BR. Leänh khoâng laøm thay ñoåi noäi dung
caùc bit coøn laïi cuûa thanh ghi traïng thaùi.
3.3.15. Leänh phaùt hieän söôøn xuoáng
Cuù phaùp FN
FN seõ phaùt hieän söôøn xuoáng cuûa tín hieäu khi RLO chuyeån töø 1 sang 0 vaø seõ ghi giaù
trò 1 vaøo RLO. Ñaëc ñieåm ñöôïc moâ taû ôû hình 3.5.
Toaùn haïng
Ñòa chæ Loaïi döõ lieäu Vuøng bieán nhôù
Bit Bool I, Q, M, L, D
Hình 3.5 – Ñaëc ñieåm söôøn leân
Ví duï:
Khi PLC phaùt hieän söôøn xuoáng ôû tieáp ñieåm I1.0, noù seõ taïo ra moät xung taïi ñòa chæ ngoõ ra
Q0.4 öùng vôùi moät voøng queùt OB1.
Bieån ñoà traïng thaùi tín hieäu Chöônh trình STL
Ví duï: Vieát chöông trình ñieàu khieån ñoùng môû cöûa kho töï ñoäng moâ taû hình 3.6.
Khi xe ñang tieán veà gaàn cöûa kho, caûm bieán Ultrasounic SS1 nhaän daïng ñöôïc xe vaø cöûa seõ
ñöôïc môû ra ñeán gaëp giôùi haïn haønh trình treân LS2 thì cöûa döøng laïi roài xe chaïy vaøo. Khi caûm
bieán quang SS2 ñaët phía trong coång cöûa nhaän daïng ñöôïc xe ñaõ ñi qua khoûi cöûa thì cöûa seõ
50
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
ñöôïc ñoùng laïi, chaïm vaøo giôùi haïn haønh trình döôùi LS1 thì cöûa döøng laïi. Chuù yù xe chæ ñi moät
chieàu.
• Baûng gaùn nhieäm vuï caùc I/O
• Chöông trình ñieàu khieån
Network1: // Khi SS1 laø 1 (coù xe vaøo) thì cöûa cuo
A "SS1"
S "Raisedoor"
Caûm bieán
Ñoäng cô
keùo cöûa
Caûm bieán vò trí
1, LS2}
Input (ngoû vaøo) Output (ngoû ra
SS2 I0.1 Downdoor(CCW) Q
LS1 I0.2
LS2 I0.3
Teân goïi Ñòa chæ Teân goïi Ñ
SS1 I0.0 Raisedoor(CW) Q
R "Downdoor"
Network2: // Khi LS1 laø 1 thì cöûa döøng laïi taïi giô
treân
A "LS1"
R "Raisedoor"
Network3: // Khi SS2 chuyeån traïng thaùi 1sang
qua khoûi noù) thì cöûa cuoán xuoáng ñeå ñoùng cöûa
A "SS2"
FN M 0.0
S "Downdoor"
Network4: // Khi LS2 laø 1 thì cöûa döøng laïi taïi giô
döôùi
A "LS2"
R "Downdoor"
FP seõ phaùt hieän söôøn leân cuûa tín hieäu khi
RLO. Ñaëc ñieåm ñöôïc moâ taû ôû hình 3.5.
Ví duï:
Ultrasounic SS1 {LS
)
òa chæ
0.0 án leân
Caûm bieán
quang SS2
Xe chôû haøng
Hình 3.6 Ñieàu khieån cöûa töï ñoäng
Cöûa cuoán0.1
Bieåu ñoà traïng thaùi theo thôøi gian
M0.0
Downdoor
LS2
SS1
ùi haïn
SS2
LS1
0 (xe
ùi haïn
aïng
Vuøng bieán nhôù
I, Q, M, L, D
3.3.16. Leänh phaùt hieän söôøn leân
Cuù phaùp FP
Toaùn h
Ñòa chæ Loaïi döõ lieäu
Bit Bool RLO chuyeån töø 0 sang 1 vaø seõ ghi giaù trò 1 vaøo
51
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Khi PLC phaùt hieän söôøn leân ôû tieáp ñieåm I1.0, noù seõ taïo ra moät xung taïi ñòa chæ ngoõ ra Q0.4
öùng vôùi moät voøng queùt OB1
Bieån ñoà traïng thaùi tín hieäu Chöônh trình STL
Ví duï:
Vieát chöông trình cho maùy daäp thuûy löïc moâ taû
hì c ñaàu, ñaàu daäp
ôû øo ta aán nuùt S1,
ña veà khi gaëp S5.
T aán nuùt S3 ñaàu
da uùt S2 ñaàu daäp
qu
•
•
N
N
nh 3.7, vôùi yeâu caàu kyõ thuaät nhö sau:Luù
vò trí chôø (S4), khi ñöa chi tieát caàn daäp va
àu daäp tònh tieán ra vaø daäp chi tieát vaø trôû
rong quaù trình gia coâng neáu xaûy ra söï coá,
äp seõ döøng laïi ôû vò trí ñoù. Sau ñoù, ta aán n
ay veà.
Baûng gaùn nhieäm vuï I/O
Chöông trình
etwork1: // Khi S1 vaø S4 laø 1 thì 1Y1 laø 1
A "S1"
A "S4"
O "1Y1"
AN "S5"
AN "S3"
= "1Y1"
etwork2: // Khi S5 laø 1 thì 1Y2 laø 1
A "S5"
O "S2"
O "1Y2"
52
Hình 3.7 – Cô caáu daäp thuûy löïc
S1
S2
S3
S4
1Y2
Bieåu ñoà traïng thaùi theo thôøi gian
S5
1Y1
t
t
t
Xy lanh
L
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ
S5 I0.4
Teân goïi Ñòa chæ
S1 I0.0 1Y1 Q0.0
S2 I0.1 1Y2 Q0.1
S1 I0.2
S2 I0.3
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
AN M0.1
AN "S3"
= "1Y2"
Network3: // Khi S4 chuyeån traïng thaùi töø 0 -> 1 thì bit M0.1 laø 1
A "S4"
FP M 0.0
= M 0.1
3.4. LEÄNH NAÏP VAØ CHUYEÅN NOÄI DUNG THANH GHI
Trong CPU cuûa S7-300 thöôøng coù hai thanh ghi Accumulator (ACCU) kí hieäu laø
ACCU1 vaø ACCU2. Hai thanh ghi coù cuøng kích thöôùc 32 bit (~ 1 Double Word).
Chuùng coù caáu truùc nhö sau:
Töø cao
ACCU1 Byte cao Byte
ACCU1 Byte cao Byte
31 2324
Leänh naïp (L - Load) vaø chuyeån (T –
trình thay ñoåi thoâng tin laãn nhau giöõa caùc m
giöõa caùc vuøng nhôù.
3.4.1. Leänh naïp vaøo ACCU
Cuù phaùp L
Kieåu döõ lieäu Vu
BYTE
WORD
DWORD
I, Q,
Leänh L coù taùc duïng chuyeån döõ lieäu ho
thanh ghi ACCU1. Noäi dung cuõ cuûa ACCU1
giaù trò chuyeån vaøo coù kích thöôùc nhoû hôn töø
cuûa töø thaáp ñeán byte cao cuûa töø cao. Nhöõng b
Chaúng haïn:
Leänh L IB2 seõ chuyeån noäi d
24 2331
ACCU1 0
Leänh L MW10 seõ chuyeån noäi d
ACCU1 theo thöù töï sau:
Töø thaáp
thaáp Byte cao Byte thaáp
thaáp Byte cao Byte thaáp
0781516 Transfer) cho pheùp chuùng ta coù khaû naêng laäp
odule ngoõ vaøo hoaëc ra vaø caùc vuøng nhôù, hoaëc
Toaùn haïng
øng bieán nhôù Ñòa chæ nguoàn
PQ, M, L, D
0…65535
0…65334
0…65332
aëc noäi dung oâ nhôù coù ñòa chæ laø toaùn haïng vaøo
ñöôïc chuyeån vaøo ACCU2. Trong tröôøng hôïp
keùp thì noù seõ ñöôïc ghi theo thöù töï töø byte thaáp
it coøn troáng trong ACCU1 ñöôïc ghi 0.
ung cuûa IB2 vaøo ACCU1 nhö sau:
16 15 8 7 0
0 0 IB2
ung cuûa MW10 goàm 2 byte MB10, MB11 vaøo
53
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
54
24 23 16 15 8 7 031
ACCU1 0 0 MB10 MB11
Leänh khoâng thay ñoåi traïng thaùi cuûa thanh ghi (Status word)
3.4.2. Leänh chuyeån noäi dung ACCU vaøo oâ nhôù
Cuù phaùp T
Ñòa chæ nguoàn
BYTE
WORD
DWORD
I, Q, PQ, M, L, D
0…65535
0…65334
0…65332
Leänh chuyeån noäi dung cuûa ACCU1 vaøo oâ nhôù coù ñòa chæ laø toaùn haïng. Leänh khoâng
thay ñoåi noäi dung trong ACCU2. Trong tröôøng hôïp oâ nhôù coù kích thöôùc nhoû hôn töø keùp thì
noäi dung cuûa ACCU1 ñöôïc chuyeån ra theo thöù töï töø byte thaáp cuûa töø thaáp ñeán byte cao cuûa
töø thaáp, byte thaáp cuûa töø cao, byte cao cuûa töø cao.
Ví duï:
T QB1 //seõ chuyeån noäi dung cuûa byte thaáp cuûa töø thaáp trong ACCU1vaøo QB1
T MW12 //seõ chuyeån byte cao cuûa töø thaáp cuûa ACCU1 vaøo MB12 vaø byte thaáp cuûa töø thaáp
cuûa ACCU1 vaøo MB13.
Leänh khoâng thay ñoåi traïng thaùi cuûa thanh ghi (Status word)
Ví duï:
Vieát chöông trình ñieàu khieån toác ñoä dòch chuyeån cuûa moät pít toâng thuûy löïc moâ taû hình 3.8.
Muoán thay ñoåi toác ñoä cuûa pít toâng ta phaûi thay ñoåi löu löôïng
löu chaát taùc ñoäng vaøo pít toâng. Ñeå thay ñoåi löu löôïng ta söû
duïng van servo thuûy löïc. Nguyeân lyù laøm vieäc cuûa van naøy laø
söï thay ñoåi tuyeán tính cuûa ñieän aùp caáp cho cuoän daây cuûa van
daãn ñeán söï thay ñoåi löu löôïng tuyeán tính cuûa van. Ñaëc tính cuûa
van naøy coù theå cho: q = 0 ÷ 100 l/ph ⇔ u = 0 ÷10 volt.
• Baûng gaùn nhieäm vuï I/O
PQW274
Ñòa chæ
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi
Giaù trò nhaäp töø baøn
phím soá nguyeân 2 byte
MW0 Van tuyeán tính
1Y1
Hình 3.8 - Ñieàu khieån toác ñoä
• Chöông trình
Network1: //Giaù trò soá nguyeân 2 byte trong oâ nhôù MW0 ñöôïc chuyeån vaøo oâ nhôù ngoaïi vi PQW272
L MW0
T PQW272 Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhôù
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.5. LEÄNH SO SAÙNH (comparison instruction)
3.5.1. Giôùi thieäu
Chuùng ta coù theå duøng caùc leänh so saùnh ñeå so saùnh caëp giaù trò soá sau:
Hai soá nguyeân ñôn ( 16 bit)
Hai soá nguyeân keùp ( 32 bit)
Hai soá thöïc (daáu chaám ñoäng – 32 bit)
Caùc giaù trò soá naøy ñöôïc naïp vaøo 2 thanh ghi, thanh ghi 1(ACCU 1) vaø thanh ghi 2 (ACCU
2). Leänh so saùnh so saùnh giaù trò trong thanh ghi 2 vôùi giaù trò trong thanh ghi 1 theo caùc pheùp
toaùn cô baûn ñöôïc lieät keâ ôû baûng 3-1.
Keát quaû cuûa pheùp so saùnh laø soá nhò phaân, ñoù laø coù theå 1 hoaëc 0. 1 bieåu dieãn pheùp toaùn laø
ñuùng vaø 0 bieåu dieãn pheùp toaùn laø sai, keát quaû ñöôïc löu giöõ trong RLO bit.
Baûng 3-1 Pheùp toaùn so saùnh
Giaù trò soá chöùa trong
thanh ghi 2
Pheùp toaùn so saùnh Kí hieäu leänh Giaù trò soá chöùa
trong thanh ghi 1
Baèng ==I
==D
==R
Khaùc (khoâng baèng) I
D
R
Lôùn hôn >I
>D
>R
Nhoû hôn <I
<D
<R
Lôùn hôn hoaëc baèng >=I
>=D
>=R
- Nguyeân ( 16 bit)
- Nguyeân keùp ( 32 bit)
- Soá thöïc ( 32 bit)
Nhoû hôn hoaëc baèng <=I
<=D
<=R
- Nguyeân ( 16 bit)
- Nguyeân keùp ( 32 bit)
- Soá thöïc ( 32 bit)
3.5.2. So saùnh hai soá nguyeân 16 bit
Cuù phaùp ==I, I, I, =I
So saùnh hai soá nguyeân laø so saùnh noäi dung cuûa thanh ghi ACCU 2 vôùi ACCU 1. Noäi
dung cuûa hai thanh ghi laø soá nguyeân 16 bit. Keát quaû cuûa pheùp so saùnh laø bit RLO =1 neáu
keát quaû so saùnh laø ñuùng; RLO = 0 neáu keát quaû so saùnh laø sai.
Thöïc hieän
leänh
Keát quaû RLO neáu
ACCU2>ACCU1
Keát quaû RLO neáu
ACCU2=ACCU1
Keát quaû RLO neáu
ACCU2<ACCU1
55
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laä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í duï:
L MW10 // Chuyeån noäi dung cuûa MW10 vaøo ACCU 1 (16-bit integer).
L IW24 // Chuyeån noäi dung cuûa IW24 vaøo ACCU 1 (16-bit integer).
>I // So saùnh ACCU 2 (MW10) lôùn hôn ACCU 1 (IW24) hay khoâng?
= M 2.0 // RLO = 1 neáu MW10 > IW24.
3.5.3. So saùnh hai soá nguyeân 32 bit
Cuù phaùp ==D, D, D, =D
So saùnh hai soá nguyeân laø so saùnh noäi dung cuûa thanh ghi ACCU 2 vôùi ACCU 1. Noäi
dung cuûa hai thanh ghi laø soá nguyeân 32 bit. Keát quaû cuûa pheùp so saùnh laø bit RLO =1 neáu
keát quaû so saùnh laø ñuùng; RLO = 0 neáu keát quaû so saùnh laø sai.
Thöïc hieän
leänh
Keát quaû RLO neáu
ACCU2>ACCU1
Keát quaû RLO neáu
ACCU2=ACCU1
Keát quaû RLO neá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í duï:
L MD10 // Chuyeån noäi dung cuûa MD10 vaøo ACCU1.
L ID24 // Chuyeån noäi dung cuûa ID24 vaøo ACCU1.
>D // So saùnh ACCU 2 (MD10) lôùn hôn ACCU 1 (ID24) ?
= M 2.0 // RLO = 1 neáu MD10 > ID24
3.5.4. So saùnh hai soá thöïc 32 bit
Cuù phaùp ==R, R, R, =R
So saùnh hai soá thöïc laø so saùnh noäi dung cuûa thanh ghi ACCU 2 vôùi ACCU 1. Noäi
dung cuûa hai thanh ghi laø soá thöïc 32 bit. Keát quaû cuûa pheùp so saùnh laø bit RLO =1 neáu keát
quaû so saùnh laø ñuùng; RLO = 0 neáu keát quaû so saùnh laø sai.
Thöïc hieän
leänh
Keát quaû RLO neáu
ACCU2>ACCU1
Keát quaû RLO neáu
ACCU2=ACCU1
Keát quaû RLO neáu
ACCU2<ACCU1
==R 0 1 0
56
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
R 1 0 1
>R 1 0 0
<R 0 0 1
>=R 1 1 0
<=R 0 1 1
Ví duï:
L MD10 // Chuyeån noäi dung cuûa MD10
L 1.359E+02 // Chuyeån haèng soá1.359E+02
>R // So saùnh ACCU 2 (MD10) lô
= M 2.0 // RLO = 1 neáu MD10 > 1.35
Ví duï:
Vieát chöông trình cho PLC ñieàu khieån cô caáu x
ñaït tôùi moät meû caân laø 30 Kg (bao goàm 25 kg b
moâ taû hình 3.9. Troïng löôïng cuûa pheãu ñöôïc ño
Cho bieát ñaëc tính kyõ thuaät cuûa Loadcell nhö sa
hieäu ra ñieän aùp u = 0 ÷ 10 volt; giaù trò ñoïc ñöô
0 ÷ 26460.
• Baûng gaùn nhieäm vuï I/O
T
L
• Chöông trình
Network1: //Tín hieäu ñieän aùp töø Loadcell
ñöôïc ñoïc vaøo coång PIW272. Khi chöa coù boät,
vôùi troïng löôïng cuûa cô caáu pheãu 5Kg Ù giaù
trò soá nguyeân 2 byte laø 1323. Cöûa pheãu ñoùng
töùc Q1.0 ôû traïng thaùi “0”
L PIW 2.72
L 1323
==I
R Q 1.0
Network2: //Khi pheãu chöùa ñaït tôùi 30 Kg,
töùc laø PIW272 = 7938. Luùc naøy Q1.0 laø “1”
do ñoù cöûa xaû môû ñeå xaû boät.
L PIW 272
L 7938
>=I
S Q 1.0
3.6. LEÄNH SOÁ HOÏC (Integer Math Instruc
3.6.1. Giôùi thieäu
Leänh soá hoïc keát hôïp noäi dung cuûa hai t
löu tröõ trong thanh ghi ACCU 1 vaø noäi dung
dung cuûa ACCU 2 vaãn giöõ nguyeân khoâng thay
vaøo ACCU 1(floating-point number).
vaøo ACCU 1
ùn hôn ACCU 1 (1.359-E+02)khoâng? 9E+02.
aû cuûa moät pheãu chöùa boät mì khi troïng löôïng
oät vaø 5 kg troïng löôïng cuûa pheãu, khung laép)
löôøng baèng caûm bieán taûi troïng (Loadcell).
u: Taàm ño khoái löôïng: m = 0 ÷ 100 Kg; Tín
ïc töø ngoõ vaøo cuûa caûm bieán qua keânh PIW laø
Input (ngoû vaøo) Output (ngoû ra)
eân goïi Ñòa chæ Teân goïi Ñòa chæ
P
1Y
oadcell PIW272 Van khí 1Y Q1.0
Hình 3.9 – Cô caáu caân vaø xaû boät
tion)
hanh ghi ACCU 1 vaø ACCU 2. Keát quaû ñuôïc
cuõ cuûa ACCU 1 ñöôïc ghi vaøo ACCU 2. Noäi
ñoåi.
57
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Söû duïng pheùp toaùn soá hoïc, ta thöïc hieän 4 pheùp toaùn coäng (+), tröø (-), nhaân (*), chia
(/) vôùi 2 loaïi :soá nguyeân (integer number)16 bit vaø 32 bit; Soá thöïc (real number).
Ngoaøi ra coøn coù moät soá pheùp toaùn khaùc: trò tuyeät ñoái, bình phöông, caên baäc 2, …
3.6.2. Pheùp toaùn treân soá nguyeân 16 bit
3.6.2.1. Pheùp coäng
Cuù phaùp +I
Leänh thöïc hieän pheùp coäng soá nguyeân 16 bit trong töø thaáp cuûa ACCU 1 vaø ACCU 2.
Keát quaû laø soá nguyeân 16 bit ñöôïc ghi vaøo töø thaáp cuûa thanh ghi ACCU 1. Noäi dung cuûa
thanh ghi ACCU 2 khoâng thay ñoåi. Neáu keát quaû naèm ngoaøi 16 bit (-32768 ÷ 32767) thì bit
traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L IW10 // Naïp giaù trò cuûa IW10 vaøo ACCU1.
L MW14 // Naïp noäi dung cuûa ACCU 1 vaøo ACCU 2. Naïp giaù trò MW14 vaøo ACCU 1.
+I // Coäng noäi dung ACCU 1 vaø ACCU 2, ghi vaøo ACCU 1.
T MW20 // Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo oâ nhôù MW20.
3.6.2.2. Pheùp tröø
Cuù phaùp -I
Leänh thöïc hieän pheùp tröø soá nguyeân 16 bit trong töø thaáp ACCU 2 cho soá nguyeân
trong töø thaáp cuûa ACCU 1. Keát quaû laø soá nguyeân 16 bit ñöôïc ghi vaøo töø thaáp cuûa thanh ghi
ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng thay ñoåi. Neáu keát quaû naèm ngoaøi 16 bit (-
32768 ÷ 32767) thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï 27:
L IW6 // Naïp giaù trò cuûa IW6 vaøo ACCU1.
L MW8 // Naïp noäi dung cuûa ACCU 1 vaøo ACCU 2. Naïp giaù trò MW8 vaøo ACCU 1.
-I // Tröø noäi dung ACCU 1 baèng ACCU 2, ghi vaøo ACCU 1.
T MW10 // Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo oâ nhôù MW10.
3.6.2.3. Pheùp nhaân
Cuù phaùp *I
Leänh thöïc hieän pheùp nhaân hai soá nguyeân 16 bit trong töø thaáp cuûa ACCU 1 vaø
ACCU 2. Keát quaû laø soá nguyeân 32 bit ñöôïc ghi vaøo töø thaáp cuûa thanh ghi ACCU 1. Noäi
dung cuûa thanh ghi ACCU 2 khoâng thay ñoåi. Neáu keát quaû naèm ngoaøi 16 bit (-32768 ÷
32767) thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L IW2 // Naïp giaù trò cuûa IW2 vaøo ACCU1.
L MW2 // Naïp noäi dung cuûa ACCU 1 vaøo ACCU 2. Naïp giaù trò MW2 vaøo ACCU 1.
*I // Nhaân noäi dung ACCU 1 vaø ACCU 2, ghi vaøo ACCU 1.
T MW6 // Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo oâ nhôù MW6.
3.6.2.4. Pheùp chia
Cuù phaùp /I
Leänh thöïc hieän pheùp chia soá nguyeân 16 bit trong töø thaáp cuûa ACCU 2 cho soá
nguyeân 16 bit trong töø thaáp cuûa ACCU 1. Keát quaû laø soá nguyeân 16 bit ñöôïc ghi vaøo töø thaáp
cuûa thanh ghi ACCU 1.Phaàn dö döôïc ghi vaøo töø cao cuûa ACCU 1. Noäi dung cuûa thanh ghi
58
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
ACCU 2 khoâng thay ñoåi. Neáu keát quaû naèm ngoaøi 16 bit (-32768 ÷ 32767) thì bit traïng thaùi
OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L MW6 // Naïp giaù trò cuûa IW6 vaøo ACCU1.
L MW8 // Naïp noäi dung cuûa ACCU 1 vaøo ACCU 2. Naïp giaù trò MW8 vaøo ACCU 1.
/I // Chia noäi dung ACCU 1 baèng ACCU 2, ghi vaøo ACCU 1.
T MW10 // Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo oâ nhôù MW10.
Chaúng haïn: 13 chia 4
Noäi dung cuûa ACCU 2-L (MW6): "13"
Noäi dung cuûa ACCU 1-L (MW8): "4"
Pheùp chia /I (ACCU 2-L / ACCU 1-L): "13/4"
Noäi dung cuûa ACCU 1-L sau khi thöïc hieän pheùp chia (quotient): "3"
Noäi dung cuûa ACCU 1-H sau khi thöïc hieän pheùp chia (remainder):”1”
3.6.3. Pheùp toaùn treân soá nguyeân 32 bit
3.6.3.1. Pheùp coäng
Cuù phaùp +D
Leänh thöïc hieän pheùp coäng soá nguyeân 32 bit cuûa ACCU 1 vaø ACCU 2. Keát quaû laø soá
nguyeân 32 bit ñöôïc ghi vaøo thanh ghi ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng
thay ñoåi. Neáu keát quaû naèm ngoaøi 32 bit (-2147483648 ÷ 2147483647) thì bit traïng thaùi OV
vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L ID10 //Naïp giaù trò cuûa ID10 vaøo ACCU 1.
L MD14 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò cuûa MD14 vaøo ACCU 1.
+ D //Coäng ACCU 2 vôùi ACCU 1; ghi keát quaû vaøo ACCU 1.
T DB1.DBD25 //Noäi dung cuûa ACCU 1 (result) ñöôïc chuyeån vaøo DBD25cuûa DB1.
3.6.3.2. Pheùp tröø
Cuù phaùp -D
Leänh thöïc hieän pheùp tröø soá nguyeân 32 bit trong ACCU 2 cho soá nguyeân cuûa ACCU
1. Keát quaû laø soá nguyeân 32 bit ñöôïc ghi vaøo ACCU 1. Noäi dung cuûa thanh ghi ACCU 2
khoâng thay ñoåi. Neáu keát quaû naèm ngoaøi 32 bit thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù
trò 1 (bò traøn).
Ví du:
L ID10 //Naïp giaù trò cuûa ID10 vaøo ACCU 1.
L MD14 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò cuûa MD14 vaøo ACCU 1.
- D //ACCU 2 tröø ACCU 1; ghi keát quaû vaøo ACCU 1.
T DB1.DBD25 //Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo DBD25cuûa DB1.
3.6.3.3. Pheùp nhaân
Cuù phaùp *D
Leänh thöïc hieän pheùp nhaân hai soá nguyeân 32 bit trong ACCU 2 vaø soá nguyeân cuûa ACCU 1.
Keát quaû laø soá nguyeân 32 bit ñöôïc ghi vaøo ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng
thay ñoåi. Neáu keát quaû naèm ngoaøi 32 bit thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò
traøn).
59
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Ví duï:
L ID10 //Naïp giaù trò cuûa ID10 vaøo ACCU 1.
L MD14 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò cuûa MD14 vaøo ACCU 1.
* D //ACCU 2 nhaân vôùi ACCU 1; ghi keát quaû vaøo ACCU 1.
T DB1.DBD25 //Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo DBD25cuûa DB1.
3.6.3.4. Pheùp chia
Cuù phaùp /D
Leänh thöïc hieän pheùp chia soá nguyeân 32 bit trong ACCU 2 cho soá nguyeân cuûa
ACCU 1. Keát quaû cuûa pheùp chia (soá thöông – quotient) laø soá nguyeân 32 bit ñöôïc ghi vaøo
ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng thay ñoåi. Neáu keát quaû naèm ngoaøi 32 bit
thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Chuù yù: khoâng ñeà caäp ñeán phaàn dö (remainder)
Ví duï:
L ID10 //Naïp giaù trò cuûa ID10 vaøo ACCU 1.
L MD14 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò cuûa MD14 vaøo ACCU 1.
/ D //ACCU 2 chia cho ACCU 1; ghi keát quaû vaøo ACCU 1.
T DB1.DBD25 //Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo DBD25cuûa DB1.
Chaúng haïn: 13 chia 4
Noäi dung cuûa ACCU 2 (ID10): "13"
Noäi dung cuûa ACCU 1 (MD14): "4"
Pheùp chia /D (ACCU 2 / ACCU 1): "13/4"
Noäi dung cuûa ACCU 1 sau khi thöïc hieän pheùp chia (quotient): "3"
3.6.3.5. Pheùp chia laáy phaàn dö
Cuù phaùp MOD
Leänh thöïc hieän pheùp chia soá nguyeân 32 bit trong ACCU 2 cho soá nguyeân cuûa
ACCU 1. Keát quaû cuûa pheùp chia (soá dö – remainder) laø soá nguyeân 32 bit ñöôïc ghi vaøo
ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng thay ñoåi. Neáu keát quaû naèm ngoaøi 32 bit
thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L ID10 //Naïp giaù trò cuûa ID10 vaøo ACCU 1.
L MD14 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò cuûa MD14 vaøo ACCU 1.
/ D //ACCU 2 chia cho ACCU 1; ghi keát quaû (remainder) vaøo ACCU 1.
T DB1.DBD25 //Noäi dung cuûa ACCU 1 ñöôïc chuyeån vaøo DBD25cuûa DB1.
Chaúng haïn: 13 chia 4
Noäi dung cuûa ACCU 2 (ID10): "13"
Noäi dung cuûa ACCU 1 (MD14): "4"
Pheùp chia MOD (ACCU 2 / ACCU 1): "13/4"
Noäi dung cuûa ACCU 1 sau khi thöïc hieän pheùp chia (remaider): "1"
3.6.4. Pheùp toaùn treân soá thöïc (Real) 32 bit
3.6.4.1. Pheùp coäng
Cuù phaùp +R
60
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Leänh thöïc hieän pheùp coäng soá thöïc 32 bit cuûa ACCU 1 vaø ACCU 2. Keát quaû laø soá
thöïc 32 bit ñöôïc ghi vaøo thanh ghi ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng thay
ñoåi. Neáu keát quaû naèm trong khoaûng (-3,402823E+38 ÷ -1,175495E-38) hoaëc baèng 0 hoaëc
naèm trong khoaûng (+1,175495E-38 ÷ 3,402823E+38) thì bit OV nhaän giaù trò 0, ngöôïc laïi thì
bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L MD4 //Naïp giaù trò cuûa MD4 vaøo ACCU 1.
L MD8 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò cuûa MD8 vaøo ACCU 1.
+ R //Coäng ACCU 2 vôùi ACCU 1; ghi keát quaû vaøo ACCU 1.
T MD12 //Noäi dung cuûa ACCU 1 (result) ñöôïc chuyeån vaøo oâ nhôù MD12.
3.6.4.2. Pheùp tröø
Cuù phaùp -R
Leänh thöïc hieän pheùp tröø soá thöïc 32 bit trong ACCU 2 vaø soá thöïc trong ACCU 1.
Keát quaû laø soá thöïc 32 bit ñöôïc ghi vaøo thanh ghi ACCU 1. Noäi dung cuûa thanh ghi ACCU 2
khoâng thay ñoåi. Neáu keát quaû naèm trong khoaûng (-3,402823E+38 ÷ -1,175495E-38) hoaëc
baèng 0 hoaëc naèm trong khoaûng (+1,175495E-38 ÷ 3,402823E+38) thì bit OV nhaän giaù trò 0,
ngöôïc laïi thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L MD4 //Naïp giaù trò cuûa MD4 vaøo ACCU 1.
L MD8 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò cuûa MD8 vaøo ACCU 1.
- R //ACCU 2 tröø ACCU 1; ghi keát quaû vaøo ACCU 1.
T MD12 //Noäi dung cuûa ACCU 1 (result) ñöôïc chuyeån vaøo oâ nhôù MD12.
3.6.4.3. Pheùp nhaân
Cuù phaùp *R
Leänh thöïc hieän pheùp nhaân soá thöïc 32 bit trong ACCU 2 vaø soá thöïc trong ACCU 1.
Keát quaû laø soá thöïc 32 bit ñöôïc ghi vaøo thanh ghi ACCU 1. Noäi dung cuûa thanh ghi ACCU 2
khoâng thay ñoåi. Neáu keát quaû naèm trong khoaûng (-3,402823E+38 ÷ -1,175495E-38) hoaëc
baèng 0 hoaëc naèm trong khoaûng (+1,175495E-38 ÷ 3,402823E+38) thì bit OV nhaän giaù trò 0,
ngöôïc laïi thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L MD4 //Naïp giaù trò cuûa MD4 vaøo ACCU 1.
L 3.1415 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò soá pi vaøo ACCU 1.
* R //ACCU 2 tröø ACCU 1; ghi keát quaû vaøo ACCU 1.
T MD12 //Noäi dung cuûa ACCU 1 (result) ñöôïc chuyeån vaøo oâ nhôù MD12.
3.6.4.4. Pheùp chia
Cuù phaùp /R
Leänh thöïc hieän pheùp chia soá thöïc 32 bit trong ACCU 2 cho soá thöïc trong ACCU 1.
Keát quaû laø soá thöïc 32 bit ñöôïc ghi vaøo thanh ghi ACCU 1. Noäi dung cuûa thanh ghi ACCU 2
khoâng thay ñoåi. Neáu keát quaû naèm trong khoaûng (-3,402823E+38 ÷ -1,175495E-38) hoaëc
baèng 0 hoaëc naèm trong khoaûng (+1,175495E-38 ÷ 3,402823E+38) thì bit OV nhaän giaù trò 0,
ngöôïc laïi thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
61
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
L MD4 //Naïp giaù trò cuûa MD4 vaøo ACCU 1.
L 3.1415 //Naïp giaù trò cuûa ACCU 1 to ACCU 2. Naïp giaù trò soá pi vaøo ACCU 1.
/ R //ACCU 2 tröø ACCU 1; ghi keát quaû vaøo ACCU 1.
T MD12 //Noäi dung cuûa ACCU 1 (result) ñöôïc chuyeån vaøo oâ nhôù MD12.
3.6.4.5. Pheùp laáy trò tuyeät ñoái
Cuù phaùp /R
Khoâng coù toaùn haïng vaø xaùc ñònh giaù trò tuyeät ñoái cuûa soá thöïc 32 bit trong thanh ghi
ACCU 1. Keát quaû ñöôïc löu giöõ trong ACCU 1. Leänh naøy khoâng lieân quan, aûnh höôûng ñeán
noäi dung cuûa caùc bit traïng thaùi.
Ví duï:
L ID8 //Naïp giaù trò ID8 vaøo ACCU 1 (example: ID8 = -1.5E+02).
ABS //Xaùc ñònh trò tuyeät ñoái; ghi keát quaû vaøo ACCU 1.
T MD10 //Chuyeån keát quaû tôùi MD10 (example: result = 1.5E+02).
3.6.4.6. Pheùp bình phöông
Cuù phaùp SQR
Leänh tính giaù trò bình phöông cuûa soá thöïc trong ACCU 1 vaø löu keát quaû laø soá thöïc
khoâng aâm vaøo ACCU 1. Noäi dung cuûa ACCU 2 khoâng bò thay ñoåi.
Ví duï:
L MD10 //Naïp giaù trò MD10 vaøo ACCU 1.
SQR //Xaùc ñònh trò bình phöông; ghi keát quaû vaøo ACCU 1.
T MD20 //Chuyeån keát quaû tôùi MD20.
3.6.4.7. Pheùp laáy caên baäc hai
Cuù phaùp SQRT
Leänh tính giaù trò caên baäc hai cuûa soá thöïc trong ACCU 1 vaø löu keát quaû laø soá thöïc
khoâng aâm vaøo ACCU 1. Noäi dung cuûa ACCU 2 khoâng bò thay ñoåi.
Ví duï:
L MD10 //Naïp giaù trò MD10 vaøo ACCU 1.
SQRT //Laáy caên baäc hai; ghi keát quaû vaøo ACCU 1.
T MD20 //Chuyeån keát quaû tôùi MD20.
3.6.4.8. Pheùp tính Sin
Cuù phaùp SIN
Leänh tính Sin cuûa soá thöïc trong ACCU 1 vaø löu keát quaû laø soá thöïc vaøo ACCU 1.
Noäi dung cuûa ACCU 2 khoâng bò thay ñoåi. Neáu keát quaû naèm trong khoaûng (-3,402823E+38
÷ -1,175495E-38) hoaëc baèng 0 hoaëc naèm trong khoaûng (+1,175495E-38 ÷ 3,402823E+38)
thì bit OV nhaän giaù trò 0, ngöôïc laïi thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví duï:
L MD10 //Naïp giaù trò MD10 vaøo ACCU 1.
SIN //Tính SIN; ghi keát quaû vaøo ACCU 1.
T MD20 //Chuyeån keát quaû tôùi MD20.
3.6.4.9. Pheùp tính Cos
Cuù phaùp Cos
62
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
1 vaø löu keát quaû laø soá thöïc vaøo ACCU 1.
No eát quaû naèm trong khoaûng (-3,402823E+38
÷ - khoaûng (+1,175495E-38 ÷ 3,402823E+38)
thì aùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
Ví
L
Co
T
3.6
No
÷ -
thì
Ví
L
Ta
T
3.6
laø
3.6
laø
3.6
soá
Ví
chi
taên
chi
bô
ky
caùc
•
Leänh tính Cos cuûa soá thöïc trong ACCU
äi dung cuûa ACCU 2 khoâng bò thay ñoåi. Neáu k
1,175495E-38) hoaëc baèng 0 hoaëc naèm trong
bit OV nhaän giaù trò 0, ngöôïc laïi thì bit traïng th
duï:
MD10 //Naïp giaù trò MD10 vaøo ACCU 1.
s //Tính Cos; ghi keát quaû vaøo ACCU 1.
MD14 //Chuyeån keát quaû tôùi MD14.
.4.10. Pheùp tính TAN
Cuù phaùp TAN
Leänh tính Tan cuûa soá thöïc trong ACCU 1 vaø löu keát quaû laø soá thöïc vaøo ACCU 1.
äi dung cuûa ACCU 2 khoâng bò thay ñoåi. Neáu keát quaû naèm trong khoaûng (-3,402823E+38
1,175495E-38) hoaëc baèng 0 hoaëc naèm trong khoaûng (+1,175495E-38 ÷ 3,402823E+38)
bit OV nhaän giaù trò 0, ngöôïc laïi thì bit traïng thaùi OV vaø OS seõ coù cuøng giaù trò 1 (bò traøn).
duï:
MD10 //Naïp giaù trò MD10 vaøo ACCU 1.
n //Tính Tan; ghi keát quaû vaøo ACCU 1.
MD14 //Chuyeån keát quaû tôùi MD14.
.4.11. Pheùp tính ASIN
Cuù phaùp ASIN
Leänh tính arcsin cuûa soá thöïc trong ACCU 1, soá thöïc naøy phaûi naèm [-1÷1]. Keát quaû
soá thöïc [-π/2 ÷ π/2] vaø ñöôïc ghi vaøo ACCU 1. Noäi dung cuûa ACCU 2 khoâng bò thay ñoåi.
.4.12. Pheùp tính ACOS
Cuù phaùp ACOS
Leänh tính arccos cuûa soá thöïc trong ACCU 1, soá thöïc naøy phaûi naèm [-1÷1]. Keát quaû
soá thöïc [0 ÷ π] vaø ñöôïc ghi vaøo ACCU 1. Noäi dung cuûa ACCU 2 khoâng bò thay ñoåi.
.4.13. Pheùp tính ATAN
Cuù phaùp ATAN
Leänh tính arctg cuûa soá thöïc trong ACCU 1, soá thöïc naøy phaûi naèm [-1÷1]. Keát quaû laø
thöïc [-π/2 ÷ π/2] vaø ñöôïc ghi vaøo ACCU 1. Noäi dung cuûa ACCU 2 khoâng bò thay ñoåi.
duï: Heä thoáng ñieàu khieån baõi ñaäu xe chöùa toái ña laø 12
eác moâ taû hình 3.10. Moãi laàn xe vaøo, PLC töï ñoäng
g theâm 1 bôûi caûm bieán phaùt hieän xe S1. Baát kyø moät
eác xe naøo ñi ra khoûi baõi, PLC seõ töï ñoäng giaûm ñi 1
ûi caûm bieán phaùt hieän S2. Khi 12 chieác xe ñöôïc ñaêng
ù, baûng hieäu ñaày xe seõ ñöôïc saùng leân thoâng baùo ñeán
xe khoâng ñöôïc vaøo nöõa.
Baûng gaùn nhieäm vuï I/O
63
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
S1 I0.0 Car park full Q0.0
S2 I0.1 Hình 3.10 – Baõi ñaäu xe
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
• Chöông trình
Network1: // Khi S1 thay ñoåi traïng thaùi 0 -> 1 thì giaù trò oâ nhôù MW0 taêng leân 1.
A "S1"
FP M 6.0
JNB _001 // Nhaûy Khi RLO laø “0” cuøng vôùi BR
L MW 0
L 1
+I
T MW 0
_001: NOP 0 // Keát thuùc
Network2: // Khi LS2 laø 1 thì cöûa döøng laïi taïi giôùi haïn döôùi
A "S2"
FP M 6.1
JNB _003
L MW 0
L 1
-I
T MW 0
_003: NOP 0
Network3: // Khi LS2 laø 1 thì cöûa döøng laïi taïi giôùi haïn döôùi
L MW 0
L 12
==I
= "CAR PARK FULL"
3.7. LEÄNH CHUYEÅN ÑOÅI DÖÕ LIEÄU (conversion instruction)
3.7.1. Khaùi nieäm
Khi giao tieáp thieát bò töông töï vôùi PLC ñeå thöïc hieän caùc nhieäm vuï thì tín hieäu thu
nhaän vaø xuaát ra caàn phaûi ñöôïc xöû lyù thích hôïp ñeå ñaûm baûo ñöôïc baûn chaát thöïc cuûa noù. Ví
duï khi ta ñoïc tín hieäu töø caùc caûm bieán taûi troïng cuûa moät heä thoáng caân ño taûi troïng xe oâ toâ,
vieäc ñoïc naøy phaûi ñöôïc thöïc hieän qua caùc ngoõ vaøo töông töï vaø ta nhaän ñöôïc soá lieäu döôùi
daïng nguyeân 16 bit mang giaù trò tín hieäu töông töï (caáu truùc vaät lyù) chöù khoâng phaûi baûn thaân
giaù trò ñoù, bôûi vaäy ñeå xöû lyù tieáp ta phaûi chuyeån ñoåi soá nguyeân ñoù thaønh ñuùng giaù trò thöïc,
daáu phaåy ñoäng cuûa tín hieäu töông töï ôû ngoõ vaøo. Tieáp caän vôùi chuyeån ñoåi döõ lieäu chuùng ta
seõ coù moät soá leänh cô baûn sau:
Chuyeån BCD sang soá nguyeân 16 bit (Integer)
Chuyeån soá nguyeân 16 bit sang BCD
Chuyeån BCD sang soá nguyeân 32 bit (Double Integer)
Chuyeån soá nguyeân 32 bit sang BCD
Chuyeån soá nguyeân 16 bit sang soá nguyeân 32 bit
Chuyeån soá nguyeân 32 bit sang soá thöïc 32 bit
Moät soá daïng döõ lieäu khaùc.
64
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.7.2. Chuyeån BCD sang soá nguyeân 16 bit (Integer)
Cuù phaùp BTI
Leänh khoâng coù toaùn haïng vaø thöïc hieän chuyeån ñoåi moät soá BCD coù 3 chöõ soá chöùa
trong noäi dung cuûa ACCU 1 thaønh soá nguyeân 16 bit. Keát quaû ñöôïc löu giöõ trong töø thaáp cuûa
ACCU 1. Töø cao cuûa ACCU 1 vaø noäi dung ACCU 2 khoâng bò thay ñoåi. Leänh khoâng laøm
thay ñoåi thanh ghi traïng thaùi.
Giôùi haïn cho pheùp cuûa soá BCD laø –999 ÷ +999 do ñoù chæ söû duïng 12 bit ñaàu cuûa töø
thaáp. Bit 15 chæ ñònh daáu, 0 cho daáu (-) coøn 1 cho daáu (+). Bit 12 ñeán bit 14 khoâng söû duïng.
Neáu soá BCD caàn chuyeån ñoåi coù caáu truùc sai, ví duï coù chöõ soá (4 bits nhò phaân) khoâng
naém trong khoaûng 0-9 thì CPU seõ baùo loãi vaø chuyeån veà Stop mode hoaëc seõ goïi chöông
trình xöû lyù loãi OB121.
Ví duï:
L MW10 //Naïp soá BCD vaøo töø thaáp ACCU 1.
BTI //Chuyeån ñoåi BCD thaønh soá ngueân 16 bits; ghi keát quaû vaøo töø thaáp ACCU 1.
T MW20 //Chuyeån keát quaû (soá nguyeân) vaøo oâ nhôù MW20.
3.7.3. Chuyeån soá nguyeân 16 bit (Integer) sang BCD.
Cuù phaùp ITB
Leänh khoâng coù toaùn haïng vaø thöïc hieän chuyeån ñoåi soá nguyeân 16 bit chöùa trong noäi
dung cuûa ACCU 1 thaønh moät soá BCD coù 3 chöõ soá. Keát quaû ñöôïc löu giöõ trong töø thaáp cuûa
ACCU 1. Bit 0 ñeán bit 11 chöùa giaù trò soá BCD. Bit 12 ñeán bit 15 ñöôïc chæ ñònh daáu cuûa cuûa
soá BCD (0000 = daáu coäng, 1111 = daáu tröø). Töø cao cuûa ACCU 1 vaø noäi dung ACCU 2
khoâng bò thay ñoåi. Leänh khoâng laøm thay ñoåi thanh ghi traïng thaùi.
Giôùi haïn cho pheùp cuûa soá BCD laø –999 ÷ +999. Neáu soá BCD vöôït ra khoûi giôùi haïn
treân thì bit traïng thaùi OV vaø OS seõ nhaän giaù trò 1 (traøn).
Ví duï:
L MW10 //Naïp soá nguyeân 16 bit MW10 vaøo töø thaáp ACCU 1.
BTI //Chuyeån ñoåi soá ngueân thaønh soá BCD 16 bits; ghi keát quaû vaøo töø thaáp ACCU 1.
T MW20 //Chuyeån keát quaû (soá nguyeân) vaøo oâ nhôù MW20.
65
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.7.4. Chuyeån BCD sang soá nguyeân 32 bit (Double Integer)
Cuù phaùp BTD
Leänh khoâng coù toaùn haïng vaø thöïc hieän chuyeån ñoåi moät soá BCD coù 7 chöõ soá chöùa
trong noäi dung cuûa ACCU 1 thaønh soá nguyeân 32 bit. Keát quaû ñöôïc löu giöõ trong ACCU 1.
Noäi dung
Gi
bit ñaàu. B
duïng.
Ne
naém tron
trình xöû l
Ví duï:
L M
BTD
T M
3.7.5. Ch
Cu
Le
bit. Keát q
Ví duï:
L M
ITD
T M
Chaúng ha
Bit
Tröô
Sau t
3.7.6. Ch
Cu
Le
dung cuûa
ACCU 2 khoâng bò thay ñoåi. Leänh khoâng laøm thay ñoåi thanh ghi traïng thaùi.
ôùi haïn cho pheùp cuûa soá BCD laø “–9,999,999 ÷ +9,999,999 “ do ñoù chæ söû duïng 28
it 31 chæ ñònh daáu, 0 cho daáu (-) coøn 1 cho daáu (+). Bit 28 ñeán bit 30 khoâng söû
áu soá BCD caàn chuyeån ñoåi coù caáu truùc sai, ví duï coù chöõ soá (4 bits nhò phaân) khoâng
g khoaûng 0-9 thì CPU seõ baùo loãi vaø chuyeån veà Stop mode hoaëc seõ goïi chöông
yù loãi OB121.
D10 //Naïp soá BCD vaøo ACCU 1.
//Chuyeån ñoåi BCD thaønh soá ngueân 32 bits; ghi keát quaû vaøo ACCU 1.
D20 //Chuyeån keát quaû (soá nguyeân) vaøo oâ nhôù MD20.
uyeån soá nguyeân 16 bit sang soá nguyeân 32 bit (Double Integer)
ù phaùp ITD
änh chuyeån noäi dung soá nguyeân 16 bits trong töø thaáp ACCU 1 sang soá nguyeân 32
uaû ñöôïc löu trong ACCU 1. Noäi dung trong thanh ghi ACCU 2 khoâng thay ñoåi.
W12 // Naïp soá nguyeân vaøo ACCU 1.
// Chuyeån ñoåi soá nguyeân 16 bit sang 32 bit; ghi keát quaû vaøo ACCU 1.
D20 // Chuyeån keát quaû (soá nguyeân) vaøo oâ nhôù MD20.
ïn: MW12 = "-10" (Integer, 16-bit); keát quaû moâ taû ôû baûng döôùi.
Noäi dung ACCU 1-H ACCU 1-L
31…. …… …. ….16 15…. ….. …. ….0
ùc thöïc hieän ITD xxxx xxxx xxxx xxxx 1111 1111 1111 0110
höïc hieän ITD 1111 1111 1111 1111 1111 1111 1111 0110
( x = 0 hoaëc 1, bits khoâng ñöôïc söû duïng ñeå chuyeån ñoåi)
uyeån soá nguyeân 32 bit (Integer) sang BCD.
ù phaùp DTB
änh khoâng coù toaùn haïng vaø thöïc hieän chuyeån ñoåi soá nguyeân 32 bit chöùa trong noäi
ACCU 1 thaønh moät soá BCD coù 7 chöõ soá. Keát quaû ñöôïc löu giöõ trong ACCU 1. Bit
66
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
0 ñeán bit 27 chöùa giaù trò soá BCD. Bit 28 ñeán bit 31 ñöôïc chæ ñònh daáu cuûa cuûa soá BCD
(0000 = daáu coäng, 1111 = daáu tröø). Noäi dung ACCU 2 khoâng bò thay ñoåi.
Giôùi haïn cho pheùp cuûa soá BCD laø “–9,999,999 ÷ +9,999,999 “. Neáu soá BCD vöôït ra
khoûi giôùi haïn treân thì bit traïng thaùi OV vaø OS seõ nhaän giaù trò 1 (traøn).
Ví duï:
L MD10 // Naïp soá nguyeân 32 bit vaøo ACCU 1.
DTB // Chuyeån ñoåi soá nguyeân 32 bit sang BCD; ghi keát quaû vaøo ACCU 1.
T MD20 // Chuyeån keát quaû (soá BCD) vaøo oâ nhôù MD20.
3.7.7. Chuyeån soá nguyeân 32 bit (Integer) sang soá thöïc 32 bits.
Cuù phaùp DTR
Leänh chuyeån noäi dung soá thöïc 32 bit trong thanh ghi ACCU 1 sang soá thöïc 32 bit.
Keát quaû ñöôïc löu giöõ trong ACCU 1.
Ví duï:
L MD10 // Naïp soá nguyeân 32 bit vaøo ACCU 1.
DTB // Chuyeån soá nguyeân 32 bit sang soá thöïc 32 bit; ghi keát quaû vaøo ACCU 1.
T MD20 // Chuyeån keát quaû vaøo oâ nhôù MD20.
3.7.8. Leänh laøm troøn soá (Round)
Cuù phaùp RND
Leänh chuyeån soá thöïc 32 bit trong thanh ghi ACCU 1 thaønh soá nguyeân 32 bit vaø laøm
troøn noù coù giaù trò gaàn nhaát so vôùi soá thöïc ñaõ cho. Keát quaû löu giöõ trong ACCU 1. Noäi dung
cuûa thanh ghi ACCU 2 khoâng thay ñoåi. Neáu soá vöôït ra khoûi giôùi haïn maø moät soá nguyeân 32
bit coù theå bieåu dieãn ñöôïc thì bit traïng thaùi OV vaø OS seõ nhaän giaù trò 1 (traøn).
Ví duï:
67
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
L MD10 // Naïp soá thöïc vaøo ACCU 1.
RND // Chuyeån soá thöïc 32 bit sang soá nguyeân 32 bit vaø laøm troøn keát quaû.
T MD20 // Chuyeån keát quaû vaøo oâ nhôù MD20.
3.7.9. Leänh
Cuù
Leänh chuyeån soá thöïc 32 bit trong thanh ghi ACCU 1 thaønh soá nguyeân 32 bit vaø laøm
troøn noù coù giaù trò gaàn nhaát nhöng khoâng nhoû hôn soá thöïc ñaõ cho. Keát quaû löu giöõ trong
ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng thay ñoåi. Neáu soá vöôït ra khoûi giôùi haïn
maø moät soá nguyeân 32 bit coù theå bieåu dieãn ñöôïc thì bit traïng thaùi OV vaø OS seõ nhaän giaù trò
1 (traøn).
3.7.10. Leän
Cuù
Leänh chuyeån soá thöïc 32 bit trong thanh ghi ACCU 1 thaønh soá nguyeân 32 bit vaø laøm
troøn noù coù giaù trò gaàn nhaát nhöng khoâng lôùn hôn soá thöïc ñaõ cho. Keát quaû löu giöõ trong
ACCU 1. Noäi dung cuûa thanh ghi ACCU 2 khoâng thay ñoåi. Neáu soá vöôït ra khoûi giôùi haïn
maø moät soá nguyeân 32 bit coù theå bieåu dieãn ñöôïc thì bit traïng thaùi OV vaø OS seõ nhaän giaù trò
1 (traøn).
Giaù trò tröôùc chuyeån ñoåi Chuyeån ñoåi Giaù trò sau chuyeån ñoåi
MD = “100.5” -> RND -> MD20 = “+100”
MD = “-100.5” -> RND -> MD20 = “-100”
Giaù trò tröôùc chuyeån ñoåi Chuyeån ñoåi Giaù trò sau chuyeån ñoåi
MD = “100.5” -> RND+ -> MD20 = “+100”
Giaù trò tröôùc chuyeån ñoåi Chuyeån ñoåi Giaù trò sau chuyeån ñoåi
MD = “100.5” -> RND+ -> MD20 = “+100”
MD = “-100.5” -> RND+ -> MD20 = “-100”
3.7.11. Leän
Cuù
Leän
ACCU 1. K
vöôït ra kho
vaø OS seõ nh
MD = “-15.6” -> RND+ -> MD20 = “-15”
h laáy phaàn nguyeân (Round)
phaùp TRUNC
h khoâng coù toaùn haïng vaø thöïc hieän vieäc laáy phaàn nguyeân cuûa soá thöïc trongh chuyeån soá thöïc thaønh soá nguyeân lôùn nhaát, khoâng lôùn hôn soá thöïc
phaùp RND-
MD = “-100.5” -> RND+ ->
MD = “-15.6” -> RND+ -> MD20 = “-15”
MD20 = “-100” chuyeån soá thöïc thaønh soá nguyeân nhoû, khoâng nhoû hôn soá thöïc
phaùp RND+
MD = “-15.6” -> RND -> MD20 = “-15” eát quaû löu giöõ laïi ôû trong ACCU 1. Noäi dung ACCU 2 khoâng thay ñoåi. Neáu soá
ûi giôùi haïn maø moät soá nguyeân 32 bit coù theå bieåu dieãn ñöôïc thì bit traïng thaùi OV
aän giaù trò 1 (traøn).
68
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Giaù trò tröôùc chuyeån ñoåi Chuyeån ñoåi Giaù trò sau chuyeån ñoåi
MD = “100.5” -> RND - -> MD20 = “+100”
MD = “-100.5” -> RND - -> MD20 = “-100”
MD = “-15.6” -> RND - -> MD20 = “-15”
Ví duï: Haõy vieát tieáp caùc caâu leänh vaøo nhöõng doøng coù nhieàu daáu chaám (soá doøng khoâng haïn
cheá) ñeå ñaït ñöôïc keát quaû chöùa trong oâ nhôù MD20 coù giaù trò laø 7.5
L 2400
T MW2
………………………….
…………………………
…………………………
L 5
………………………….
…………………………
…………………………
T MD20
• Chöông trình
Network1: //Naïp giaù trò soá nguyeân 2 byte 2400 vaøo oâ nhôù MW2
L 2400
T MW 2
Network2: //Ñoåi soá nguyeân 2 byte ôû oâ nhôù MW2 sang soá nguyeân 4 byte vaø löu vaøo oâ nhôù MD4.
L MW 2
ITD
T MD 4
Network3: //Ñoåi soá nguyeân 4 byte ôû oâ nhôù MD4 sang soá thöïc 4 byte vaø löu vaøo oâ nhôù MD8.
L MD 4
DTR
T MD 8
Network4: //Pheùp chiasoá thöïc giöõa giaù trò trong oâ nhôù MD8 vaø 1600.0 roài löu vaøo oâ nhôù MD12.
L MD 8
L 1.600000e+003
/R
T MD 12
Network5: //Ñoåi soá nguyeân 2 byte laø 5 sang soá nguyeân 4 byte vaø löu vaøo oâ nhôù MD16.
L 5
ITD
T MD 16
Network6: //Ñoåi soá nguyeân 4 byte ôû oâ nhôù MD16 sang soá thöïc 4 byte vaø löu vaøo oâ nhôù MD24.
L MD 16
DTR
T
Network7:
L
L
*R
T
MD 24
//Nhaân soá thöïc giöõa giaù trò trong oâ nhôù MD12 vaø MD24, keát quaû laø 7.5 löu trong MD20.
MD 12
MD 24
MD 20
69
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.8. LEÄNH ÑIEÀU KHIEÅN THÔØI GIAN (timer instruction)
3.8.1. Nguyeân taéc hoaït ñoäng cuûa timer
Boä ñònh thôøi laø moät thaønh phaàn cuûa boä ñieàu khieån laäp trình coù nhieäm vuï taïo ra thôøi
gian treã mong muoán giöõa tín hieäu logic ngoõ vaøo vaø tín hieäu logic ngoõ ra. Leänh ñieàu khieån
thôøi gian cho pheùp chöông trình thöïc hieän caùc chöùc naêng nhö:
Laøm treã hoaït ñoäng
Theo doõi vaø kieåm soaùt chuoãi thôøi gian
Ño löôøng thôøi gian…
Nguyeân taéc hoaït ñoäng ñöôïc moâ taû hình 3.11
Khôûi taïo timer
Hieån thò
Xoùa ngoõ vaøo
Tín hieäu vaøo
Thôøi gian treã
ñaët tröôùc
Timer
word
Tín hieäu ra
Hình 3.11 – Nguyeân taéc hoaït ñoäng timer
Ngay taïi thôøi ñieåm kích timer, giaù trò PV ( thôøi gian treã ñaët tröôùc) ñöôïc naïp vaøo
thanh ghi 16 bit cuûa Timer word ( goïi laø thanh ghi CV – current value). Timer seõ ghi lai
thôøi gian bieán thieân keå töø khi coù tín hieäu kích baèng caùch giaûm töông öùng giaù trò cuûa CV.
Neáu giaù trò cuûa CV veà baèng 0 thì timer seõ ñaït ñöôïc thôøi gian treã mong muoán vaø ñeàu naøy seõ
laø thay ñoåi traïng thaùi tín hieäu ngoõ ra.
Vuøng nhôù
Caùc timer ñöôïc phaân boá trong boä nhôù cuûa CPU vaø trong S7-300 chöùa ñeán 256 boä
ñònh thôøi, vaø ñöôïc quy ñònh moät töø 16 bit cho moãi ñòa chæ timer.
Thôøi gian treã
Thôøi gian treã τ khai baùo cho timer baèng moät giaù trò töông öùng 16 bit, hình 3.12. Bao
goàm 2 phaàn vaø ñöôïc tính theo 3-1
Ñoä phaân giaûi ε ( timer resolution): Bit 12 vaø 13 cuûa töø timer chöùa ñoä phaân giaûi
theo saép xeáp cuûa maõ nhò phaân, vaø coù 4 ñoä phaân giaûi töø 10ms, 100ms, 1s , 10s.
Giaù trò ñaët tröôùc PV (Preset Value): bao goàm bít 0 ñeán bit 11, giaù trò laø soá BCD
(0 ÷ 999)
τ = ε* PV [3-1]
Giaù trò thôøi gian treã ñaët tröôùc ñöôïc ñònh daïng tröïc tieáp theo caùc kieåu döõ lieäu sau:
Soá nguyeân 16 bit: W#16#txyz
Trong ñoù:
• t = ñoä phaân giaûi (0 -> 10 MS,1-> 100MS,2-> 1S, 3->10S )
• x, y, z : giaù trò thôøi gian theo daïng BCD
70
Loaïi thôøi gian: S5T#aH_bM_cS_dMS
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
• Trong ñoù: H = giôø (Hours); M = phuùt (Minutes) ; S = giaây (Seconds) ; MS =
miligiaây (Miliseconds) ; a, b, c, d: laø giaù trò ngöôøi söû duïng.
• Ñoä phaân giaûi ñöôïc choïn töï ñoäng vaø seõ laøm troøn ñeán ñoä phaân giaûi keá caän
thaáp nhaát.
Giaù trò lôùn nhaát coù theå ñaët ñöôïc laø 9.990 giaây hoaëc laø 2H_46M_30S
Ñoä phaân giaûi Giaù trò PV döôùi daïng maõ BCD
0 ≤ PV≤ 999
Ñoä phaân giaûi Bit 12 & 13
10 MS 00
100 MS 01
1 S 10
10 S 11
Ñoä phaân giaûi Giôùi haïn thôøi gian
10 MS 10MS ÷ 9S_990MS
100 MS 100MS ÷ 1M_39S_900MS
1 S 1S to 16M_39S
10 S 10S to 2H_46M_30S
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 τ
Hình 3.12 - Ñoä phaân giaûi cuûa boä ñònh thôøi
Caùc loaïi timer
Bao goàm caùc loaïi timer sau: S_PULSE, S_PEXT, S_ODT, S_ODTS, S_OFFDT
3.8.2. Caùc taùc vuï timer
Laøm vieäc vôùi timer phaûi khai baùo ñaày ñuû caùc yeáu toá sau ñaây:
Khai baùo loaïi timer söû duïng
Khai baùo tín hieäu kích timer (Enable timer)
Khai baùo tín hieäu xoùa timer
Khai baùo thôøi gian treã mong muoán
Hieån thò thôøi gian ñoïc töùc thôøi
3.8.2.1. Tín hieäu kích timer
Ngoû vaøo Start (baét ñaàu): timer ñöôïc baét ñaàu hoaït ñoäng vôùi söï thay ñoåi tín hieäu töø
“0” leân “1” (RLO) ôû ngoû vaøo Start cuûa noù. Thôøi gian vaø hoaït ñoäng cuûa timer phaûi ñöôïc laäp
trình ngay sau hoaït ñoäng queùt ñieàu kieän baét ñaàu.
Ví duï:
A I0.0
L S5T#1H3M
SP T1
Ngoû vaøo xoaù (Reset)
3.8.2.2. Tín hieäu xoaù
Cuù phaùp R
71
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Toaùn haïng
Kieåu döõ lieäu Vu
TIMER
Tín hieäu ôû ngoû vaøo Reset seõ laøm ngöng hoaït ñoäng cuûa timer, thôøi gian hieän haønh
ñöôïc ñaët veà 0 vaø ngoû ra Q cuûa timer cuõng bò xoaù veà “0” neáu keát quaû RLO cuûa Reset
chuyeån töø “0” sang “1”.
Ví duï:
A I 2.1
R T1 //Kieåm tra traïng thaùi tín hieäu ngoû vaøo I2.1 neáu RLO chuyeån töø 0 -> 1, thì xoaù timer T1.
3.8.2.3. Ngoû ra hieån thò giaù trò thôøi gian töùc thôøi
Giaù trò thôøi gian thaät söï coù theå ñoïc ñöôïc töø hai ngoû ra soá nhò phaân (BI) vaø ngoû ra soá
thaäp phaân (BCD)
3.8.2.3.1. Ngoû ra soá BI
Cuù phaùp L <Toaùn ha
Kieåu döõ lieäu Vuøng bieán nhôù Ñòa chæ
TIMER T 0 ÷ 255
Ví duï:
L T1 //Taûi noäi dung ACCU 1-L vôùi giaù trò töùc thôøi cuûa timer T1 sang maõ nhò phaân.
3.8.2.3.1. Ngoû ra soá BCD
Cuù phaùp LC <Toaùn h
Kieåu döõ lieäu V
TIMER
Ví duï:
L T1 //Taûi noäi dung ACCU 1-L vô
3.8.2.4. Ngoû ra nhò phaân cuûa timer
Traïng thaùi tín hieäu ngoû ra nh
ñöôïc laäp trình.
3.8.2.5. Caùc loaïi timer
3.8.2.5.1. Timer taïo xung khoâng coù n
Cuù phaùp SP <Toaùn h
Kieåu döõ lieäu V
TIMER
aïng>
Toaùn haïng aïng>
Toaùn haïng øng bieán nhôù Ñòa chæ
T 0 ÷ 255 uøng bieán nhôù Ñòa chæ
T 0 ÷ 255
ùi giaù trò töùc thôøi cuûa timer T1 sang soá BCD.
ò phaân Q cuûa timer phuï thuoäc vaøo chöùc naêng timer
hôù (Pulse Timer)
ïng>
Toaùn haïng
uøng bieán nhôù Ñòa chæ
T 0 ÷ 255 72
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
aàu. Ngoû ra bò reset neáu quaù
thôøi g , hoaëc coù moät tín hieäu “1”
ñöa n
Ví du
A
L
SP
A
R
A
=
L
T
LC
T
Ví du
chieát
thôøi g
Start
chai,
döøng,
nöôùc
30s, s
vaø tie
• Ba
Star
Bot
Ngoû ra cuûa Pulse Timer laø “1” sau khi timer ñöôïc baét ñ
ian treã mong muoán, neáu tín hieäu baét ñaàu bò reset veà “0”
goû vaøo Reset cuûa timer.
ï:
I 2.1
S5T#10s //Ñaët tröôùc thôøi gian 10 seconds vaøo ACCU 1.
T1 //Söû duïng timer taïo xung khoâng nhôù T1.
I 2.2
T1 //Xoaù timer T1.
T1 //Kieåm tra traïng thaùi tín hieäu cuûa timer T1.
Q 4.0
T1 //Taûi giaù trò thôøi gian töùc thôøi cuûa timer T1 döôùi daïng nhò phaân.
MW10
T1 //Taûi giaù trò thôøi gian töùc thôøi cuûa timer T1 döôùi daïngsoá BCD.
MW12
ï: Vieát chöông trình cho coâng ñoaïn
nöôùc vaøo chai theo nguyeân taéc
ian, moâ taû hình 3.13. Nhaán nuùt
PB, baêng taûi chaïy vaø mang theo
caûm bieán chai phaùt hieän, baêng taûi
baét ñaàu môû van chieát ñeå chieát
vaøo chai. Thôøi gian chieát ñaày laø
au khi chieát ñaày baêng taûi laïi chaïy
áp tuïc chieát chai keá tieáp
ûng gaùn nhieäm vuï I/O
I2.1 (ngoû vaøo)
Fill valve
I2.2 (reset)
Q0.1
Q
L, LC
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
t PB I0.0 Conveyer motor Q0.0
tle sensor I0.1
Fill setting timer T0
Hình 3.13 – Chieát nöôùc vaøo chai
t = khoaûng thôøi gian laäp trình
CV
73
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
• Chöônh trình
Network1: //Taùc ñoäng Start Pbconveyer motor hoaït ñoäng taûi mang chai dòch chuyeån.
O "Start PB"
O M 1.0
S "conveyer Motor"
Network2: //Bottle sensor chuyeån traïng thaùi 0 ->1 khi phaùt hieän chai seõ döøng conveyer motor
A "Bottle sensor"
FP M 0.0
R "conveyer Motor"
Network3: //Chai ñöôïc phaùt hieän caøi ñaët Fill setting timer vaø Fill valve chieát 30’’ roài ngöng.
A "Bottle sensor"
L S5T#30S
SP "Fill Setting Timer"
A "Fill Setting Timer"
= "Fill valve"
Network4: //Khi van chieát ngöøng, chuyeån tra it naøy seõ kích
thích cho Conveyer motor chaïy vaø thöïc hieän ch
A "Fill valve"
FN M 0.1
= M 1.0
3.8.2.5.2. Timer taïo xung coù nhôù (Ex
Cuù phaùp SE <Toaùn ha
Kieåu döõ lieäu V
TIMER
Ngoû ra Q cuûa “ Extended Pulse
reset neáu quaù thôøi gian laäp trình hoaëc
ngoû vaøo cuûa timer trong khi timer ñan
thay ñoåi traïng thaùi tín hieäu töø “0” sang
mong muoán thì timer seõ ñöôïc baét ñaàu
trong ACCU 1-L döôùi daïng BCD.
Ví duï:
A I 2.3
L S5T#20s //Ñaët tröôùc thôøi gian
SE T4 //Söû duïng timer taïo
A I 2.4
R T4 //Xoaù timer T4.
A T4 //Kieåm tra traïng tha
= Q 2.0 ïng thaùi 1-> 0 keát quaû bit M1.0 seõ ñöôïc caøi leân 1. B
u kyø chieát chai môùi. tended Pulse Timer)
ïng>
Toaùn haïng
uøng bieán nhôù Ñòa chæ
T 0 ÷ 255
Timer” laø “1” sau khi timer ñöôïc baét ñaàu. Ngoû ra bò
neáu ngoû vaøo Reset cuûa timer bò taùc ñoäng. Vieäc reset
g chaïy khoâng laøm cho ngoû ra bò reset ( nhôù). Neáu söï
“1” ôû ngoû vaøo ñöôïc laëp laïi tröôùc thôøi gian laäp trình
laïi, nghóa laø kích trôû laïi. Giaù trò thôøi gian ñöôïc löu tröõ
20 seconds vaøo ACCU 1.
xung coù nhôùo141.
ùi tín hieäu cuûa timer T4.
74
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
L T4 //Taûi giaù trò thôøi gian töùc thôøi cuûa timer T4 döôùi daïng nhò phaân.
T MW14
LC T4 //Taûi giaù trò thôøi gian töùc thôøi cuûa timer T4 döôùi daïngsoá BCD.
T MW16
I2.3 (ngoû vaøo)
I2.4 (reset)
CV
Q2.0
L, LC
t = khoaûng thôøi gian laäp
Ví duï: Caøi ñaët hoaït ñoäng cuûa moät maùy khuaáy troän hoãn hôïp sôn, moâ taû hình 3.14. Taùc ñoäng
tín hieäu caøi ñaët baèng vieäc nhaán nuùt Stir PB thì ñoäng cô khuaáy seõ khuaáy 2’30” roài döøng haün.
• Baûng gaùn nhieäm vuï I/O
•
Ne hôø
caøi
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
Stir PB I0.0 Stir motor Q0.0
Stir setting timer T0
Hình 3.14 – Heä thoáng
A "Stir PB"
L S5T#2M30S
SE "Stir Setting Timer"
A "Stir Setting Timer"
= "Stir Motor"
3.8.2.5.3. Timer môû treã (On Delay Timer)
Cuù phaùp SD
Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhôù Ñòa chæ
TIMER T 0 ÷ 255
Ngoû ra cuûa “On Delay Timer” laø “1” chæ khi quaù thôøi gian ñöôïc laäp trình vaø RLO
cuûa ngoû vaøo vaãn laø 1. Keát quaû laø vieäc ñaët ngoû vaøo leân “1” laøm cho ngoû ra leân “1” sau
khoaûng thôøi gian trì hoaõn töông töùng khoaûng thôøi gian laäp trình. Ngoû ra bò reset neáu ngoû
vaøo timer bò reset hoaëc coù möùc “1” ôû ngoû vaøo Reset cuûa timer. Vieäc reset ngoû vaøo hoaëc
ñöa “1” vaøo ngoû Reset trong khi timer ñang chaïy khoâng ñöa laøm cho ngoû ra leân “1”.
75 Chöông trình
twork1: //Taùc ñoäng Stir PB motor seõ khuaáy trong 2’30’’n
ñaët boä SE T0.
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Ví duï:
A I 2.3
L S5T#20s //Ñaët tröôùc thôøi gian 20 seconds vaøo ACCU 1.
SD T4 //Söû duïng timer môû treã.
A I 2.4
R T4 //Xoaù timer T4.
A T4 //Kieåm tra traïng thaùi tín hieäu cuûa timer T4.
= Q 2.0
L T4 //Taûi giaù trò thôøi gian töùc thôøi cuûa timer T4 döôùi daïng nhò phaân.
T
L ûa timer T4 döôùi daïngsoá BCD.
T
V
m
N
1
•
•
N
ñ
MW14
C T4 //Taûi giaù trò thôøi gian töùc thôøi cu
MW16
I2.3 (ngoû vaøo) t = khoaûng thôøi gian laäp trình
L, LC
Q2.0
CV
I2.4 (reset)
í duï: Vieát chöông trình khôûi ñoäng taøu löôïn vöôït khoâng gian trong caùc troø chôi caûm giaùc
aïnh ôû caùc khu vui chôi giaûi trí. Yeâu caàu hoaït ñoäng nhö sau:
haán nuùt Start PB thì coøi huï reo baùo hieäu cho haønh khaùch chuaån bò taøu saép khôûi haønh. Sau
5 s thì taøu baét ñaàu chaïy.
Baûng gaùn nhieäm vuï I/O
Chöông trình
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
t1
Bieåu ñoà traïng thaùi theo thôøi gian
Q0.1
I0.0
Q0.0
CV
Start PB I0.0 Running Train Q0.0
Alarm Q0.1
Alarm setting
timer
T0
t
t
etwork1: //Taùc ñoäng Start PB , Alarm seõ hoaït
oäng.
A "Start PB"
O "Alarm"
AN "Running Train"
= "Alarm"
76
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Network2: //Alarm taùc ñoäng, xaùc laäp timer môû treã “Alarm setting timer” vôùi giaù trò trì hoaõn 15s.
A "Alarm"
L S5T#15S
SD "Alarm setting timer"
Network3: // Sau thôøi gian trì hoaõn 15s, Running Train laø “1”.
A " Alarm setting timer "
O "Running train"
= " Running train "
3.8.2.5.4. Timer taét treã (Off Delay Timer)
Cuù phaùp SF
Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhôù Ñòa chæ
TIMER T 0 ÷ 255
Ngoû ra Q cuûa “Off Delay Timer” ñöôïc ñaët leân möùc “1” neáu coù söï thay ñoåi tín hieäu
töø “0” sang “1” xaûy ra ôû ngoû vaøo timer. Neáu ngoû vaøo bò reset, ngoû ra vaãn giöõ möùc “1” cho
ñeán khi quaù thôøi gian ñöôïc laäp trình. Keát quaû vieäc reset ngoû vaøo cuûa timer laøm cho vieäc
reset ngoû ra cuûa noù ñöôïc trì hoaõn baèng thôøi gian ñöôïc laäp trình.
Ví duï:
A I 1.3
L S5T#20s //Ñaët tröôùc thôøi gian 20 seconds vaøo ACCU 1.
SF T5 //Söû duïng timer taét treã.
A I 1.4
R T5 //Xoaù timer T5.
A T5 //Kieåm tra traïng thaùi tín hieäu cuûa timer T5.
= Q 1.0
L T5 //Taûi giaù trò thôøi gian
T MW24
LC T5 //Taûi giaù trò thôøi gian
T MW26
I1.3 (ngoû vaøo)
t =
I1.4 (reset)
CV
Q1.0
L, LC
töùc thôøi cuûa timer T5 döôùi daïng nhò phaân.
töùc thôøi cuûa timer T5 döôùi daïngsoá BCD. khoaûng thôøi gian laäp trình
77
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Ví duï: Cho heä thoáng keïp thuûy löïc theo haønh trình ñöôïc moâ taû hình 3.15 vaø chæ ñeà caäp ñeán
haønh trình keïp chaët maø thoâi. Giôùi haïn cuûa vò trí eùp chaët ñöôïc xaùc ñònh bôûi LS2. Thöïc teá
cho thaáy khoù xaùc ñònh ñöôïc vò trí naøy, do phuï thuoäc vaøo chi tieát caàn keïp neân daãn tôùi tình
traïng laø löïc keïp khoâng ñuû. Giaûi quyeát ñieàu naøy ta söû duïng boä ñònh thôøi taét treã ñeå cô caáu
keïp di chuyeån theâm moät thôøi gian (tm) nöõa ñaûm baûo cho khoaûng caùch vaø taêng ñöôïc aùp löïc
keïp.
• Baûng gaùn nhieäm vuï I/O
• Chöông trình
Network1: // Start PB taùc ñoäng, nhôù bit M0.0
A "Start PB"
S M 0.0
Network2: // LS2 chuyeån traïng thaùi 0 -> 1 thì
A "LS2"
FP M 0.1
R M 0.0
Network3: // Bit M0.0 laø “1”, keát quaû Clam
M0.0 töø traïng thaùi 1 -> 0 thì xaùc laäp Timer Off D
gian trì hoaõn 15s. Sau thôøi gian naøy thì keát quaû C
A M 0.0
Input (ngoû vaøo) Output (ng
Teân goïi Ñòa chæ Teân goïi
Start PB I0.0 Clamp
LS1 I0.1 Retract
LS2 I0.2 Timer Off Delay
LS2
L S5T#15S
SF "Timer Off Delay"
A "Timer Off Delay"
3.8
TIMER
Ngoû ra cuûa “Retentive On Dela
trình. Ngoû ra cuûa timer vaãn giöõ möùc “1”
timer ñang chaïy. Ngoû ra chæ bò reset kh
hay set ngoû vaøo khi timer ñang chaïy laøm
Ví duï:
A I 1.3
oû ra)
Ñòa chæ LS1 leân “1”.
xoùa bit M0.0
p laø “1”.Khi
elay vôùi thôøi
lamp laø “0”.
Q0.0
Q0.1
T0
Hình 3.15 – Cô caáu keïp thuûy löïc
Coá ñònh
(Clamp)
(Retract)
ay Timer)
ôù Ñòa chæ = "Clamp"
.2.5.5. Timer môû treã coù nhôù(Retentive On - Del
Cuù phaùp SS
Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhT 0 ÷ 255
y Timer” laø “1” chæ neáu quaù thôøi gian ñöôïc laäp
(nhôù, choát) ngay caû khi ngoû vaøo bò reset trong khi
i ngoû vaøo Reset cuûa timer bò taùc ñoäng. Vieäc reset
cho timer khôûi ñoäng laïi, nghóa laø noù ñöôïc kích laïi.
78
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
L S5T#20s //Ñaët tröôùc thôøi gian 20 seconds vaøo ACCU 1.
SS T5 //Söû duïng timer môû treã nhôù traïng thaùi.
A I 1.4
R T5 //Xoaù timer T5.
A T5 //Kieåm tra traïng thaùi tín hieäu cuûa timer T5.
= Q 1.0
L T5 //Taûi giaù trò thôøi gian töùc thôøi cuûa timer T5 döôùi daïng nhò phaân.
T MW24
LC T5 //Taûi giaù trò thôøi gian töùc thôøi cuûa timer T5 döôùi daïngsoá BCD.
T MW26
I1.3 (ngoû vaøo)
Ví
nh
tro
hie
•
•
Ne
Ne
Ne
CV
I1.4 (reset)
Q1.0 L, LC
t = khoaûng thôøi gian laäp trình
duï: Hình 3.16 moâ taû quaù trình di chuyeån cuûa ñoäng cô M. Khi nuùt Start PB ñöôïc
aán, ñoäng cô (M) seõ di chuyeån töø traùi sang phaûi. Khi LS2 laø ON thì ñoäng cô döøng
ng 10 giaây vaø roài di chuyeån trôû veà Home. Khi LS1 laø ON, ñoäng cô döøng vaø baùo
äu quaù trình ñaõ hoaøn taát.
Baûng gaùn nhieäm vuï I/O
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
Start PB I0.0 Motor L->R Q0.0
M
LS2LS1
Start PB
Home
LS1 I0.1 Motor R->L Q0.1
LS2 I0.2 Retentive timer T0
Hình 3.16 – Di chuyeån ñoäng cô
Chöông trình
twork1:
A "Start PB"
S "Motor L->R"
twork2:
A "LS2"
L S5T#30S
SS "Retentive timer"
R "Motor L->R"
twork3:
79
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
A "Retentive timer"
= "Motor R->L"
Network4:
A "LS1"
FP M 0.0
R "Retentive timer"
3.9. ÑIEÀU KHIEÅN BOÄ ÑEÁM (counter)
3.9.1. Khaùi nieäm
Trong coâng nghieäp, maùy moùc, daây chuyeàn saûn xuaát vieäc quaûn lyù soá löôïng saûn phaåm
thaønh phaåm, pheá phaåm laø moät coâng ñoaïn raát quan troïng. Nhö ñeám soá chai, soá xe hôi, soá boä
phaän, soá voøng quay cuûa truïc quay…
Maët khaùc trong heä thoáng saûn xuaát kheùp kín vieäc giaùm saùt, quaûn lyù vaø ñieàu khieån coù
moái quan heä maät thieát thoâng qua caùc thieát bò ñieàu khieån, giaùm saùt vaø thaäm chí truy xuaát
nhieàu boä ñeám ñeå thöïc hieän quaûn lyù ña daïng traïng thaùi vaät lyù, ñoái töôïng. Do ñoù vieäc söû
duïng caùc boä ñeám coù khaû naêng linh hoaït treân laø moät öu ñieåm raát maïnh meõ ñöôïc ñeà caäp
trong caùc boä ñieàu khieån laäp trình.
Boä ñeám &
hieån thò
Hình 3.17a - Ñeám saûn phaåm taám Plastic
Hình 3.17b - Ñeám soá chai thaønh phaåm
Nguyeân taét hoaït ñoäng cuûa boä ñeám
Counter laø boä ñeám coù nhieäm vuï ñeám söôøn xung cuûa tín hieäu ñaàu vaøo ñeám. Caùc boä
ñeám ñöôïc löu tröõ trong vuøng nhôù döõ lieäu cuûa PLC. Khi coù söôøn leân cuûa tín hieäu enable vaø
ñoàng thôøi taïi ngoø vaøo CU coù möùc tín hieäu “1” thì boä ñeám thöïc hieän ñeám leân. Ngöôïc laïi,
khi ñoàng thôøi coù söôøn leân tín hieäu enable vaø taïi ngoõ vaøo CD coù möùc tín hieäu “1” thì boä
ñeám seõ ñeám xuoáng.
Soá söôøn xung vaøo ñeám ñöôïc ghi vaøo moät word 16 bit vaø ñöôïc goïi laø thanh ghi C-
word. Noäi dung cuûa thanh ghi goïi laø giaù trò ñeám töùc thôøi vaø ñöôïc kí hieäu laø CV ( Current
80
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
value). Soá ñeám ñöôïc chöùa trong vuøng n vaø coù giaù
trò chöùa trong khoaûng 0 ÷ 999. Khi CV≠ eáu CV =
0 thì C-bit seõ coù giaù trò 0. CV laø moät giaù
Giaù trò ñaët tröôùc PV (Preset value) seõ ñöôïc ñaët vaøo C-word ôû thôøi ñieåm coù söôøn leân
cuûa tín hieäu ñaët (S).
Boä ñeám coù theå xoùa tröïc tieáp baèng tín hieäu xoùa (reset). Khi boä ñeám bò xoùa thì giaù trò
C-word laãn C-bit ñeàu nhaän giaù trò “0”.
Chuù yù: Boä ñeám coù theå laøm coâng vieäc ñeám traïng thaùi tín hieäu vaø hieän thò giaù trò soá ñeám;
hoaëc coù theå duøng laøm ñieàu khieån traïng thaùi hoaït ñoäng cuûa moät ñoái töôïng khaùc. Do vaäy
muoán ñieàu khieån chuùng ta phaûi duøng ñeán boä ñeám xuoáng.
Tín hieäu kích ñeám
C-bitCU
Tín hieäu ñaët ñeám
Tín hieäu ñeán xuoáng
Giaù trò ñaët
Tín hieäu xoùa
Tín hieäu ñeán leân Tín hieäu ra
Hình 3.18
3.9.2. Caùc taùc vuï boä ñeám
3.9.2.1. Tín hieäu kích ñeám (Enable Cou
Cuù phaùp FR <Toaùn haïn
Kieåu döõ lieäu V
Counter
Ví duï:
A I 2.0 //Kieåm tra tín hieäu ngo
FR C3 //Kích boä ñeám C3 khi
3.9.2.2. Ñoïc noäi dung thanh ghi C-wor
Soá ñeám töùc thôøi chöùa trong thanh
soá thaäp phaân (CV_BCD).
3.9.2.2.1. Ñoïc soá ñeám töùc thôøi daïng bin
Cuù phaùp L <Toaùn haïn
Kieåu döõ lieäu V
Counter FR
S
CD
Counter
wordhôù döõ lieäu heä thoáng döôùi daïng nhò phaân
0 thì bit counter (C-bit) coù giaù trò laø “1”, n
trò khoâng aâm. L, LC
R
CV
Hieån thò
soá ñeám
– Nguyeân taéc hoaït ñoäng Counter
nter)
g>
Toaùn haïng
uøng bieán nhôù Ñòa chæ
C 0 ÷ 255
õ vaøo I 2.0.
RLO chuyeån 0 sang 1.
d
ghi coù theå ñöôïc bieåu thò nhö soá nhò phaân (CV) hay
ary
g>
81
Toaùn haïng
uøng bieán nhôù Ñòa chæ
C 0 ÷ 255
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
L ñoïc giaù trò ñeám töùc thôøi CU 1-L.
Ví duï:
L C3 //Ñoïc giaù trò cuûa boä ñeám C3 da
L C3
Giaù trò ñeám (0÷999) maõ nhò phaân
Töø ñeám cuûa
C3 trong boä
nhôù
Noäi dung cuûa
ACCU 1-L sau
thöïc hieän leänh
L C3
Taát caû giaù trò 0 Giaù trò ñeám (0÷999) maõ nhò phaân
3.9.2.2.2. Ñoïc soá ñeám töùc thôøi daïng BCD
Cuù phaùp LC
Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhôù Ñòa chæ
Counter C 0 ÷ 255
LC ñoïc giaù trò ñeám töùc thôøi cuûa boä ñeám thöïc hieän döôùi daïng soá BCD vaøo
ACCU 1-L.
Ví duï:
LC C3 //Ñoïc giaù trò cuûa C3 vaøo ACCU 1-L.
Giaù trò ñeám daïng BCD
102 (hundreds) 100 (Ones) 101 (Tens)
LC C3
Giaù trò ñeám (0÷999) maõ nhò phaân
Töø ñeám cuûa
C3 trong boä
nhôù
Noäi dung cuûa
ACCU 1-L sau
thöïc hieän leänh
LC C3
3.9.2.3. Ñaët tröôùc giaù trò ñeám (Counter Preset value)
Cuù phaùp S
Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhôù Ñòa chæ
Counter C 0 ÷ 255
82 cuûa boä ñeám döôùi daïng soá nguyeân vaøo AC
ïng nhò phaân vaøo ACCU 1-L.
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Boä ñeám ñöôïc ñaët vôùi giaù trò ñöôïc ñaët tröôùc taïi ngoõ vaøo PV khi coù caïnh leân RLO ôû
ngoõ S naøy. Soá ñeám PV laø moät töø 16 bit ôû daïng BCD naèm trong khoaûng 0 ÷ 999
Ví duï:
A I 2.3 //Kieåm tra tín hieäu ngoõ vaøo I 2.3
L C#3 //Naïp giaù trò ñeán laø 3 vaøo ACCU 1-L
S C1 //Ñaët boä ñeám C1 vôùi giaù trò ñeám neáu RLO töø “0” sang “1”.
3.9.2.4. Xoùa boä ñeám (Reset Counter)
Cuù phaùp R
Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhôù Ñòa chæ
Counter C 0 ÷ 255
Boä ñeám seõ ñöôïc ñaët veà “0” (bò reset) neáu RLO ôû ngoõ vaøo R laø “1”.
Ví duï:
A I 2.3 //Kieåm tra tín hieäu ngoõ vaøo I 2.3
R C1 //Xoùa boä ñeám C1 .
3.9.2.5. Ñeám leân (Counter Up)
Cuù phaùp CU
Kieåu döõ lieäu V
Counter
Taêng Counter leân 1. Chöùc naêng
döông cuûa RLO ( töø “0” sang “1”) xa
khoâng taêng nöõa.
Ví duï:
A I 2.1 //Neáu coù söôøn leân thay
CU C3 //Boä ñeám C3 taêng leân
Ví duï: Vieát chöông trình xaây döïng boä ñ
taûi ñang hoaït ñoäng. Soá löôïng chai caàn ñ
• Chöông trình
Network1:
A "Sensin signal"
AN M 0.0
CU "1fst counter"
Network2:
L "1fst counter"
L 999 //Giaù trò ñeám
= =I
= M 0.0 Toaùn haïng
uøng bieán nhôù Ñòa chæ C 0 ÷ 255
naøy chæ ñöôïc thöïc hieän neáu coù söï thay ñoåi tín hieäu
ûy ra ôû ngoõ vaøo CU. Khi soá ñeám taêng ñeán 999 thì
ñoåi taïi ngoõ vaøo I 2.0.
1 khi RLO chuyeån töø 0 sang 1.
eám ñeám soá saûn phaåm chai nöôùc suoái treân moät baêng
eám ñöôïc saûn xuaát trong moät ca laø 1800 chai.
toái ña cuûa moät boä ñeám.
83
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Network3:
A "Sensin signal"
FN M 0.4
= M 0.5
Network4:
A M 0.5
A M 0.0
S M 0.6
Network5:
A M 0.6
A "Sensin signal"
FP M 0.3
CU "2 sd counter"
Network6:
L "2 sd counter"
L "1fst counter"
+I
T MW 10 //Giaù trò soá ñeám chai nöôùc suoái ñöôïc hieån thò ôû oâ nhôù MW10 laø soá nguyeân 2 byte.
Network7:
A I 0.2
R "1fst counter"
R "2 sd counter"
R M 0.6
3.9.2.6. Ñeám xuoáng (Counter Down)
Cuù phaùp CD
Toaùn haïng
Kieåu döõ lieäu Vuøng bieán nhôù Ñòa chæ
Counter C 0 ÷ 255
Giaûm Counter ñi 1. Chöùc naêng naøy chæ ñöôïc thöïc hieän neáu coù söï thay ñoåi tín hieäu
döông cuûa RLO ( töø “0” sang “1”) xaûy ra ôû ngoõ vaøo CD. Khi soá ñeám giaûm xuoáng ñeán 0 thì
noù khoâng coøn giaûm ñöôïc nöõa.
Ví duï:
A I 0.1 //Boä ñeám ñöôïc ñaët giaù trò khi phaùt hieän söôøn leân taïi I0.1
L C#14 //Giaù trò ñaët tröôùc 14
S C1 //Naïp giaù trò ñaët tröôùcñeám vaøo C1
A I 0.0 //Xung vaøo boä ñeám xuoángI0.0
CD C1 //Giaûm giaù trò ñeám xuoáng 1 khi RLO cuûa I0.0 töø 0 sang 1
AN C1 //Pheùp toaùn buø cuûa bit-C1.
= Q 0.0 //Q0.0 = 1 neáu giaù trò ñeám töùc thôøi cuûa C1 laø 0.
Ví duï: Heä thoáng ñeám vaø ñoùng goùi saûn phaåm moâ taû hình 3.19.
84
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Khi nhaán coâng taéc khôûi ñoäng
PB Start baêng taûi BT1 mang
hoäp ñöïng saûn phaåm di chuyeån.
Caûm bieán SS1 nhaän daïng
thuøng ñöïng taùc ñoäng, baêng taûi
BT1 döøng laïi. Baêng taûi BT2
chöùa saûn phaåm dòch chuyeån,
saûn phaåm ñöôïc rôùt vaøo hoäp
ñöïng, saûn phaåm ñöôïc ñeám bôûi
moät caûm bieán quang hoàng
ngoaïi SS2 khi ñeám ñöôïc 10
saûn phaåm ( moãi hoäp chöùa 10
saûn phaåm) thì baêng taûi BT2
döøng, tieáp tuïc BT1 dòch
chuyeån ñeå ñoùng goùi hoäp môùi.
Ñeå ngöøng quaù trình ta nhaán nuùt
PB Stop.
• Baûng gaùn nhieäm vuï I/O
• Chöông trình
Network1:
A(
O "Start PB"
C0
Input (ngoû vaøo) Output (ngoû ra)
Teân goïi Ñòa chæ Teân goïi Ñòa chæ
Start PB I0.0
Bieåu ñoà traïng thaùi theo thôøi gian
I0.0
I0.1
I0.2
I0.3
Q0.1
M0.0
Q0.0
Start PB
Stop PB
PieceConveyor
Piece sensor
Box sensor
Box
conveyor
Q0.0
Stop PB I0.1 Piece
conveyor
Q0.1
Box
sensor
I0.2 Temporate
variable
M0.0
Piece I0.3 Piece C0
Hình 3.19 – Baêng chuyeàn ñeám vaø ñoùng goùi
O "Temporate variable"
)
A "Stop PB"
= "Temporate variable"
Network2:
A "Temporate variable"
AN "BoxConveyor"
= "PieceConveyor"
Network3:
A "Boxsensor"
85
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
L C#12
S "PieceCounter"
Network4:
A "Piecesensor"
CD "PieceCounter"
Network5:
A(
ON "PieceCounter"
ON "Boxsensor"
)
AN "PieceConveyor"
= "BoxConveyor"
3.10. CAÙC LEÄNH ÑIEÀU KHIEÅN CHÖÔNG TRÌNH
3.10.1. Leänh nhaûy chöông trình
Leänh nhaûy chöông trình cho pheùp chuùng ta coù theå ngaét luoàng ñieàu khieån chöông
trình bình thöôøng vaø nhaûy ñeán thöïc thi moät nhieäm vuï khaùc trong chöông trình theo nhaõn ñòa
chæ caàn nhaûy ñeán. Nhaõn chöông trình cho pheùp toái ña laø 4 kyù töï chöõ vaø soá vôùi kyù töï ñaàu
phaûi laø chöõ. Nhaõn chöông trình ñöôïc theo sau laø daáu “:” baét buoäc vaø phaûi naèm trong moät
doøng tröôùc caâu leänh cuûa chöông trình cuûa nhieäm vuï thöïc hieän.
3.10.1.1. Leänh nhaûy khoâng ñieàu kieän
Cuù phaùp JU
Leänh naøy ngaét luoàng ñieàu khieån chöông trình bình thöôøng vaø nhaûy ñeán nhaõn chöông
trình ñöôïc chæ ñònh ôû ngay sau JU. Leänh naøy thöïc hieän baát chaáp ñieàu kieän vaø khoâng phuï
thuoäc vaøo moät bit traïng thaùi naøo.
Ví duï:
Network 1
JU FORW // Nhaûy khoâng ñieàu kieän tôùi nhaõn nhaûy FORW.
Network 2
.
.
Network m
FORW: A I 2.1 // Queùt chöông trình baét ñaàu ôû ñaây sau khi nhaûy ñeán.
= M54.0
3.10.1.2. Leänh nhaûy coù ñieàu kieän
3.10.1.2.1. Leänh nhaûy neáu RLO=1
Cuù phaùp JC
Neáu keát quaû RLO=1 thì JC ngaét luoàng ñieàu khieån chöông trình bình thöôøng vaø nhaûy
ñeán nhaõn chöông trình ñöôïc chæ ñònh trong chöông trình. Neáu khoâng thì thöïc hieän leänh keá.
Leänh laøm thay ñoäi noäi dung thanh ghi traïng thaùi.
86
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Ví duï:
Ñuùng
Baét ñaàu
Ñoaïn chöông
trình JOV
Xoùa oâ nhôù
MW22
Phaàn chöông
trình A
RLO=1
Chöông
trình JOV
Ñoaïn A
•
•
A I 1.0
A I 1.2
JC JOV
L 0
T MW22
JOV: A I 2.1
= Q0.1
I 1.0=1
& I 1.2=1?
Keát thuùc
Sai
RLO=0
3.10.1.2.2. Leänh nhaûy neáu RLO=0
Cuù phaùp JCN
Neáu keát quaû RLO=0 thì JCN ngaét luoàng ñieàu khieån chöông trình bình thöôøng vaø nhaûy ñeán
nhaõn chöông trình ñöôïc chæ ñònh trong chöông trình. Neáu khoâng thì thöïc hieän leänh keá. Leänh
laøm thay ñoäi noäi dung thanh ghi traïng thaùi.
Ví duï:
Ñuùng
RLO=0
Baét ñaàu
Ñoaïn chöông
trình JOV
I 3.0=1
& I 3.2=1?
Keát thuùc
•
•
A I 3.0
A I 3.2
JCN JOV
L IW12
T MW22
JOV: A I 2.1
= Q0.1
Ñoaïn A
Chöông
trình JOV
Sai
RLO=1
Truyeàn IW12
Phaàn chöông
trình A
->MW22
87
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
3.10.2. Leänh keát thuùc chöông trình
3.10.2.1. Keát thuùc coù ñieàu kieän
Cuù phaùp BEC
Leänh thöïc hieän keát thuùc chöông trình trong khoái neáu nhö RLO=1. Leänh laøm thay ñoåi noäi
dung thanh ghi.
Ví duï:
A I 1.0
BEC // Keát thuùc khoái chöông trình, neáu RLO=1.
L IW4 // Tieáp tuïc ôû ñaây neáu BEC khoâng thöïc thi (RLO=0).
T MW10
3.10.2.2. Keát thuùc voâ ñieàu kieän
Cuù phaùp BEU
Leänh thöïc hieän keát thuùc chöông trình trong khoái neáu nhö RLO= 0. Leänh laøm thay ñoåi noäi
dung thanh ghi.
Ví duï:
A 1.0
JC NEXT // Nhaûy ñeán nhaõn chöông trình NEXT, neáu RLO=1 I 1.0 = 1).
L IW4 // Tieáp tuïc ôû ñaây neáu nhaûy khoâng thöïc hieän.
T IW10
A I 6.0
A I 6.1
S M 12.0
BEU // Keát thuùc khoái chöông trình voâ ñieàu kieän.
NEXT: NOP 0 // Tieáp tuïc ôû ñaây neáu nhaûy ñöôïc thöïc hieän
3.10.3. Leänh voøng laëp chöông trình
Cuù phaùp LOOP
Leänh voøng laëp laøm giaûm noäi dung cuûa thanh ghi ACCU 1-L ñi moät ñôn vò öùng vôùi moät laàn
laëp. Neáu noäi dung thanh ghi coøn khaùc 0 thì tieáp tuïc laëp laïi cho ñeán khi noäi dung thanh ghi
baèng 0. Khi chöông trình queùt ñeán gaëp leänh laëp thì noù seõ nhaûy ñeán nôi chöùa nhaõn, nhaõn maø
ñöôïc chæ ñònh sau leänh laëp.
Ví duï: Thöïc hieän ñoaïn chöông trình A naêm laàn.
88
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
89
Baét ñaàu
Khôûi taïo
ñeám voøng
L +5
NEXT: T MW10
•
•
•
L MW10
LOOP NEXT
Khôûi taïo soá
ñeámlaëp
Ñoaïn A
Ñoaïn chöông
trình A
Giaûm ñeám
laàn laëp ñi 1
Soá ñeám
laàn laëp ≠ 0?
Ñuùng
Sai
Keát thuùc
Ví duï: Vieát chöông trình ñieàu khieån traïm ñeøn giao thoâng giao loä ngaõ 4. Vôùi thôøi gian coät
1: ñeøn ñoû laø 35s, xanh 45s, vaøng 10s; Thôøi gian coät 2: ñeøn ñoû laø 55s, ñeøn xanh 30s, ñeøn
vaøng 5s.
Network1:
A I 0.0
AN T 1
L W#16#1900
SD T 1
Network2:
L W#16#1600
LC T 1
<=I
JC xnh
L W#16#1550
>I
JC vng
S Q 4.0 // Ñeøn ñoû coät 1
S Q 5.2 // Ñeøn xanh coät 2
R Q 4.1 // Ñeøn vaøng coät 1
R Q 4.2 // Ñeøn xanh coät 1
R Q 5.0 // Ñeøn ñoû coät 2
LC T 1
L W#16#1100
<=I
JC vng1
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
BEU
Network3:
xnh: S Q 4.2
S Q 5.0
R Q 4.1
R Q 4.0
R Q 5.1
R Q 5.2
BEU
Network4:
vng: S Q 4.1
S Q 5.0
R Q 4.2
R Q 4.0
BEU
Network5:
vng1: S Q 5.1 // Ñeøn vaøng coät 2
R Q 5.2
BEU
3.10.4. Khoái döõ lieäu
3.10.4.1. Khaùi nieäm
Caùc khoái döõ lieäu DB duøng ñeå caát döõ lieäu, dung löôïng döõ lieäu phuï thuoäc vaøo loaïi
PLC cuï theå (thí duï: S7-300 cho pheùp moät DB chöùa toái ña 8 KB. Ta coù theå khai baùo nhieàu
DB cuøng moät luùc ( toái ña 65535), ñöôïc phaân bieät vôùi nhau baèng caùc chæ soá khoái DB1,
DB2,…DB65535.
Kieåu DB: Coù hai kieåu DB (hình
• DB toaøn cuïc (Shared DB): daønh ñeå chöùa döõ lieäu toaøn cuïc maø coù khaû naêng chia xeû.
Caùc khoái FB, FC hoaëc OB coù theå doïc ra vaø ghi vaøo DB naøy. Loaïi kieåu naøy truy caäp
vôùi teân DB.
• DB cuïc boä (Instance DB): ñöôïc maëc ñònh cho khoái haøm lieân quan ñeán noù vaø duøng
ñeå chöùa caùc bieán cuïc boä vaø caùc tham soá cuûa khoái haøm. Loaïi kieåu naøy truy caäp vôùi
teân DI.
OB1
FC20
FC30
FB1
DB20
DB5
Döõ lieäu
toaøn cuc
Döõ lieäu
cuc boä
Hình 3.20 – Söû duïng caùc kieåu DB
90
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
Chuù yù:
• Tröôùc khi taïo Instance DB thì FB töông öùng vôùi noù ñaõ taïo saün. Ta phaûi chæ ra soá FB
khi taïo Instance DB.
3.10.4.2. Truy nhaäp vaø quaûn lyù döõ lieäu
a) Ñònh ñòa chæ döõ lieäu trong moät DB hay DI
b) Leänh môû khoái döõ lieäu
Cuù phaùp OPN
Bit Byte Word Double word
Shared DB DBXx.y DBXx DBWx DBDx
Instance DB DIXx.y DIBx DIWx DIDx
Vôùi x = 1 ÷ 65535 , y = 0 ÷ 7
khoái döõ lieäu
Kieåu döõ lieäu Chæ soá khoái döõ lieäu
DB, DI 0 ÷ 65535
Leänh thöïc hieän môû khoái döõ lieäu toaøn cuïc vaø cuïc boä. Leänh khoâng laøm thay ñoåi noäi
dung thanh ghi traïng thaùi.
Ví duï:
OPN DB10 // Môû khoái döõ lieäu toaøn cuïc DB10.
L DBW35 // Ñoïc noäi dung cuûa töø DBW35 cuûa DB10 vaøo ACCU1-L.
T MW22 // Chuyeån vaøo oâ nhôù MW22.
OPN DI20 // Môû khoái döõ lieäu cuïc boä DI20.
L DIB12 // Ñoïc noäi dung 12 byte cuûa DIB20 vaøo ACCU1-L.
T DBB37 // Chuyeån ACCU1-L
c) Trao ñoåi noäi dung cuûa khoái döõ lieäu
Cuù phaùp CDB
Leänh chuyeån noäi dung cuûa DB
dung thanh ghi traïng thaùi.
d) Ñoïc ñoä daøi cuûa khoái döõ lieäu DB va
Cuù phaùp L DBLG
L DILG
Leänh ñoïc ñoä daøi tính theo byte
ñöôïc döôùi daïng 32 bits vaøo ACCU1. N
khoâng laøm thay ñoåi noäi dung thanh ghi
Ví duï:
OPN DB10 // Môû khoái döõ lieäu toaøn cuïc D
L DBLG // Ñoïc ñoä daøi theo byte cuûa D
L MD10 // Giaù trò ñeå so saùnh.
<D
JC ERRO // Nhaûy ñeán nhaõn ERRO neáu
vaøo byte thöù 37 cuûa DB10.
toaøn cuïc (DI) vaø cuïc boä (DB)sang DI vaø ngöôïc laïi. Leänh khoâng laøm thay ñoåi noäi
ø DI
cuûa khoái döõ lieäu DB hoaëc DI vaø chuyeån keát quaû ñoïc
oäi dung cuõ cuûa ACCU1 chuyeån vaøo ACCU2. Leänh
traïng thaùi.
B10.
B10.
ñoä daøi cuûa DB10 nhoû hôn MD10.
91
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
e) Ñoïc chæ soá khoái döõ lieäu DB vaø DI
Cuù phaùp L DBNO
L DINO
Leänh ñoïc chæ soá khoái döõ lieäu DB vaø DI vaø chuyeån keát quaû ñoïc ñöôïc vaøo ACCU1
döôùi daïng soá nguyeân. Noäi dung cuõ cuûa ACCU1 chuyeån vaøo ACCU2. Leänh khoâng laøm thay
ñoåi noäi dung thanh ghi traïng thaùi.
Ví duï: Thöïc hieän pheùp coäng hai soá nguyeân 2byte chöùa ôû oâ nhôù DBW0 vaø DBW2 trong
khoái döõ lieäu DB1. Keát quûa cuûa noù ñem so saùnh vôùi moät giaù trò trong oâ nhôù IW0, keát quaû laø
bit Q0.0 laø “1” neáu thoûa maõn pheùp toaùn >=I.
• Khai baùo khoái DB1
• Chöông trình
Network1: //Laáy giaù trò oâ nhôù Word 0 trong DB1 vaø caát vaøo oâ nhôù MW0.
L DB1.DBW 0
T MW 0
Network2: //Laáy giaù trò oâ nhôù Word 2 trong DB1 vaø caát vaøo oâ nhôù MW2.
L DB1.DBW 2
T MW 2
Network3: //Coäng 2 giaù trò chöùa oâ nhôù MW0 vaø MW2 caát vaøo MW4 roài so saùnh vôùi giaù trò chöùa trong IW4.
Keát quaû bit Q0.0 laø “1” neáu MW4 >= IW4.
L MW 0
L MW 2
+I
T MW 4
L IW 0
>=I
= Q 0.0
92
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
BAØI TAÄP CHÖÔNG 3
Baøi 1:
Caùc caâu döôùi ñaây, ñuùng hay sai?. Haõy söûa vaø laøm ñuùng noù. Giaûi thích yù nghóa.
a) b) c) d)
L 150.000
L 4.32E+2
/D
T MW22
L 3.125E+03
L MW16
*I
T MD40
L MD2
L MW8
-D
T IW12
L IW6
L MD10
+I
T MD20
Baøi 2:
a) b)
Network 2:
Network 1:
L 12.000
L MD0
+D
T MD4
- Cho MD4 = 15.000
Keát quaû:
- MD0, MD8 = ?
- ACCU 1 = ?
- ACCU 2 = ?
L 3000
L 8000
+I
T MW2
Keát quaû:
- MW2 = ?
- ACCU 1 = ?
- ACCU 2 = ?
Baøi 3: Vieát chöông trình (daïng STL) theo h aây:
MD4 = ((IW0 + D W2
Baøi 4:
- Vieát chöông trình cho haøm toaùn sau:
MD20 = [(IW2 + IW12]/4.25 -250.50
- Cho IW2 = 12500, PIW274 = 2400, I
bao nhieâu?
Baøi 5:
Vieát chöông trình cuûa cô caáu
phaân loaïi maøu traùi boùng.
Boùng coù 2 maøu: xanh vaø
vaøng, ta duøng hai caûm bieán
maøu saéc caûm öùng. SS1 cho
maøu xanh vaø SS2 cho maøu
ñoû.
Hình 1
Traùi boùng
Neáu boùng laø maøu ñoû thì ñi
qua loái2, coøn maøu xanh thì
ñi qua loái 1. Phaân luoàng cho
L MD4
L 24.000
*D
T MD8
aøm ñaõ cho sau ñ
BW3) x 15) / M
+ PIW274)*7.5
W12 = 5600. Giaù trò chöùa trong oâ nhôù MD20 laø
– Cô caáu phaân loaïi traùi boùng
SS2 SS1
Loái 2
Loái 1
Coång I
93
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
hai loái baèng coång xoay I. Coång naøy ñöôïc xoay nhôø cô caáu pittoâng khí neùn vaø van ñoùng môû
khí 5/2/1 cuoän coil. Moâ taû hình 1
Baøi 5:
LS2
Drain Valve
LS1
Vieát chöông trình ñieàu khieån quaù trình bôm nöôùc vaøo
moät beå chöùa.
Beå chöùa ñöôïc moâ taû hình 2. Nhaán nuùt Pump PB thì bôm
nöôùc. Neáu coâng taéc möùc ñaày LS2 taùc ñoäng thì ngöøng bôm.
Ngöôïc laïi neáu coâng taéc caïn nöôùc LS1 hôû ra thì laïi bôm nöôùc.
Trong quaù trình bôm, nhaán nuùt PB Stop thì ngöng bôm.
Hình 2 – bôm beå nöôùc
Baøi 6:
Baøi toaùn phaân loaïi saûn phaåm theo kích thöôùc ñöôïc moâ taû:
Kích thöôùc phaân loaïi theo cao (H1 ) vaø thaáp (H2) : H1 > H2.
Khoaûng caùch giöõa hai saûn phaåm laø L khoâng ñoåi.
Saûn phaåm ñöôïc vaän chuyeån baèng baêng taûi. Neáu saûn phaåm laø thaáp thì seõ bò loaïi ra khoûi
baêng taûi baèng cô caáu pittoâng (A). Coøn khoâng thì ñi thaúng (khoâng bò loaïi).
Anh/ Chò SV töï ñöa ra giaûi phaùp thöïc hieän heä thoáng ( bao goàm: caûm bieán, pittoâng,
van …) ñeå giaûi quyeát baøi toaùn. Vieát chöông trình ñieàu khieån.
Hình 3 – Maùy daäp
S1
Baøi 7:
Maïch ñieàu khieån thuûy löïc cuûa cô caáu duøng ñeå laép raùp
coù ñoä doâi , vôùi yeâu caàu kyõ thuaät nhö sau (hình 3):
Ñöa chi tieát caàn laép vaøo vò trí laép, aán nuùt S1 cô caáu
tònh tieán xuoáng laép vaø eùp chaët chi tieát ñeán khi ñuû aùp suaát
20 bar, ñeøn H saùng, thì cô caáu töï quay veà. Neáu trong quaù
trình gia coâng xaûy ra söï coá thì aán nuùt S2 cô caáu quay veà
vò trí ban ñaàu. Vieát chöông trình ñieàu khieån.
Baøi 8:
Hình 4 – Loø hôi aùp löïc
Stop PB
Open PB
Close PB
Close LS
Open LS
Moät loø hôi aùp löïc, cöûa loø
ñöôïc môû vaø ñoùng baèng moät
xylanh thuûy löïc, hình 4. Vò trí
ñoùng vaø môû ñöôïc gaén 2 giôùi haïn
haønh trình. Khi nhaán nuùt Open PB
thì cöûa môû ñeán luùc Open LS taùc
ñoäng thì cöûa döøng laïi, ngöôïc laïi
khi nhaán nuùt Close PB thì cöûa
ñoùng ñeán luùc Close LS taùc ñoäng
thì, löïc ñoùng cöûa ñöôïc taêng leân
laøm cho kín vaø aùp suaát ñaït ñeán
94
ÑIEÀU KHIEÅN LAÄP TÌNH PLC - MAÏNG PLC Chöông 3 – Ngoân ngöõ laäp trình
100 bar thì cöûa döøng.Trong quaù trình ñoùng môû cöûa neáu nuùt Stop PB ñöôïc nhaán thì cöûa ñöùng
laïi. Haõy vieát chöông trình ñieàu khieån.
Baøi 9: Vieát chöông trình chieát Yoghurt vaøo huû nhöïa cuûa heä thoáng sau ( hình 5).
- Nhaán nuùt PB Start thì baêng taûi mang caùc huû nhöïa dòch chuyeån, khi gaëp caûm bieán nhaän
ñöôïc huû (SS1) thì baêng
taûi döøng laïi. Pít toâng A
dòch chuyeån qua phaûi vaø
Yoghurt ñöôïc chieát vaøo
huû, theå tích ñöôïc xaùc
ñònh baèng caûm bieán ñieän
dung (SS2). Sau khi chieát
ñuû pít toâng I dòch chuyeån
qua traùi ñeå ngöng chieát.
Khi gaëp LS (giôùi haïn töø
tröôøng) thì baêng taûi laïi
chuyeån ñoäng vaø moät huû
môùi seõ ñöôïc chieát.
SS2
PB StopPB Start
Baêng taûi
Yoghurt
Huû nhöïa
LS
SS1
Pít toâng A
P
Sol a
T
Ñoäng cô BT
Hình 5 – Cô caáu chieát yoghurt
- Nhaán nuùt PB Stop thì
heä thoáng ngöøng hoaït ñoäng.
Chuù yù: Van khí laø loaïi 5/2/ 1 side. Bình thöôøng coù khí neùn maø khoâng coù tín hieäu ñieän thì pít
toâng naèm phía traùi ñoùng mieäng pheãu chöùa Yoghurt. Khi coù tín hieäu ñieän taùc ñoäng vaøo cuoän
coil thì pít toâng seõ dòch chuyeån qua phaûi laøm môû mieäng pheãu.
Baøi 10:
Moät maùy ñoùng goùi saûn phaåm rôøi thaønh caùc loác saûn phaåm baèng phöông phaùp maøng
co. Saûn phaåm saép xeáp vaøo bao maøng Plastic vaø ñöa vaøo buoàng gia nhieät ñeå laøm co maøng,
sau khi ñoùng goùi maøng co xong ñöôïc ñi ra khoûi buoàng. Saûn phaåm ñöôïc vaän chuyeån baèng 3
baêng taûi noái tieáp nhau( baêng taûi A vaän chuyeån saûn phaåm tröôùc khi vaøo buoàng co, saûn phaåm
ñöôïc co maøng vaän chuyeån bôûi baêng taûi B, baêng taûi chuyeån loác ñoùng goùi ñeán khaâ
Các file đính kèm theo tài liệu này:
- Chương 3- Ngôn ngữ lập trình.pdf