Điều khiển lập trình PLC - Phần 1 - Chương 3: Ngôn ngữ lập trình

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 ...

pdf63 trang | Chia sẻ: hunglv | Lượt xem: 1284 | Lượt tải: 0download
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:

  • pdfChương 3- Ngôn ngữ lập trình.pdf
Tài liệu liên quan