Ky Thuat Lap Trinh

  • Uploaded by: Tran Van Thien
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Ky Thuat Lap Trinh as PDF for free.

More details

  • Words: 4,371
  • Pages: 23
KYÕ THUAÄT LAÄP TRÌNH Chöông trình ngöôøi duøng thöôøng ñöôïc chia nhoû thaønh töøng khoái logic theo kieåu chöông trình caáu truùc, giuùp cho vieäc laäp trình vaø söõa loãi thuaän tieän. Coù nhieàu loaïi khoái logic: • •

Khoái toå chöùc OB (Organization blocks) Khoái haøm heä thoáng SFB (System function blocks) vaø haøm heä thoáng SFC (system functions) tích hôïp trong PLC • Khoái haøm FB (Function blocks) trong thö vieän hay ngöôøi duøng töï vieát • Haøm FC (Functions) trong thö vieän hay ngöôøi duøng töï vieát • Khoái döõ lieäu Instance (Instance Data Blocks ) lieân keát vôùi FB/SFB • Khoái döõ lieäu chia xeû (Shared Data Blocks ) Khoái toå chöùc OB laø giao dieän giöõa chöông trình ngöôøi duøng vaø heä ñieàu haømh cuûa PLC. OB ñöôïc goïi bôûi heä ñieàu haønh theo chu kyø hay khi coù ngaét, coù söï coá hay khi khôûi ñoäng PLC. Coù nhieàu khoái OB vaø coù öu tieân khaùc nhau, khoái OB coù soá öu tieân cao hôn coù theå ngaét khoái OB soá öu tieân thaáp hôn. Tuyø theo loaïi CPU, soá löôïng khoái OB söû duïng ñöôïc seõ khaùc nhau, baûng sau lieät keâ caùc loaïi OB Loaïi OB OB1 OB10, OB13 OB14, OB17 OB20 OB21 OB22 OB23 OB30 OB31 OB32 OB33 OB34 OB35 OB36 OB37 OB38

OB11, OB15,

YÙ nghóa Öu tieân Ñöôïc goïi khi keát thuùc khôûi 1 ñoäng hay keát thuùc OB1, thöïc hieän theo chu kyø OB12, Ngaét theo thôøi gian trong ngaøy, 2 thaùng, naêm OB16, Ngaét trì hoaõn

Ngaét Ngaét Ngaét Ngaét Ngaét Ngaét Ngaét Ngaét Ngaét

chu chu chu chu chu chu chu chu chu

kyø kyø kyø kyø kyø kyø kyø kyø kyø

(maëc (maëc (maëc (maëc (maëc (maëc (maëc (maëc (maëc

3 4 5 6 ñònh ñònh ñònh ñònh ñònh ñònh ñònh ñònh ñònh

5s) 2s) 1s) 500ms) 200ms) 100ms) 50ms) 20ms) 10ms)

7 8 9 10 11 12 13 14 15

OB40 OB41 OB42 OB43 OB44 OB45 OB46 OB47

Ngaét cöùng

16 17 18 19 20 21 22 23

OB60

Goïi bôûi SFC35 "MP_ALM"

25

OB70 OB72 OB 73

25 28 25

OB80 OB81 OB82 OB83 OB84 OB85 OB86 OB87 OB90

Loãi I/O redundancy ( H CPU) Loãi CPU redundancy (H CPU) Loãi Communication redundancy (H CPU) Söï coá chu kyø queùt Loãi nguoàn Ngaét chaån ñoaùn Ngaét do theâm bôùt module Loãi phaàn cöùng CPU Loãi chöông trình Loãi module môû roäng Loãi truyeàn thoâng Warm or cold restart or delete a block being executed in OB90 or load an OB90 on the CPU or terminate OB90

OB100 OB101 OB102

Khôûi ñoäng aám Khôûi ñoäng noùng Khôûi ñoäng laïnh

27

OB121 OB122

Sai laäp trình Sai I/O

Öu tieân cuûa taùc nhaân gaây ra söï coá

26, 28

29, 0

1/ Khoái OB1 OB1 ñöôïc goïi sau khi keát thuùc quaù trình khôûi ñoäng vaø sau khi keát thuùc chính noù, moïi OB tröø OB90 coù theå ngaét OB1. Khi OB1 ñaõ ñöôïc thöïc hieän, heä ñieàu haønh gôûi ñi döõ lieäu toaøn cuïc. Tröôùc khi goïi laïi OB1, heä ñieàu haønh chuyeån boä nhôù ñeäm ra module xuaát , caäp nhaät boä ñeäm nhaäp vaø nhaän döõ lieäu toaøn cuïc. Khi thöïc hieän OB1, chöông trình trong khoái ñöôïc thöïc hieän, döõ lieäu xuaát ra module xuaát ñöôïc caáp taïm trong boä nhôù. Chöông trình trong OB1 coù theå goïi caùc haøm hay khoái haøm. Thôøi gian thöïc hieän OB1 goïi laø thôøi gian queùt, heä ñieàu haønh aán ñònh thôøi gian queùt toái ña (150ms) vaø toái thieåu, coù

theå caøi ñaët baèng Step 7. Neáu chu kyø queùt keùo daøi thì goïi OB80 hay chuyeån sang STOP, neáu chu kyø queùt ngaén quaù thì theâm trì hoaõn hay goïi OB90. OB1 goàm phaàn maõ chöông trình, do ngöôøi duøng vieát; baûng bieán cuïc boä (local block) coøn goïi laø baûng khai baùo bieán (variable declaration table) goàm 20 byte

Coät thöù nhaát laø ñòa chæ trong vuøng bieán cuïc boä, coät thöù hai khai baùo loaïi bieán, temp nghóa laø taïm thôøi, giaù trò cuûa bieán thay ñoåi sau moãi voøng queùt cuûa OB, coät thöù ba laø caùc teân cuûa döõ lieäu, coù yù nghóa nhö sau (giaûi thích trong coät chuù thích 6): OB1_EV_CLASS: OB1_SCAN_1:

OB1_PRIORITY: OB1_OB_NUMBR: OB1_RESERVED_1: OB1_RESERVED_2: OB1_PREV_CYCLE: OB1_MIN_CYCLE: OB1_MAX_CYCLE: OB1_DATE_TIME:

giaù trò B#16#11 coù nghóa OB1 tích cöïc B#16#01: hoaøn taát warm restart B#16#02: hoaøn taát hot restart B#16#03: hoaøn taát chu kyø B#16#04: hoaøn taát cold restart giaù trò 1 soá OB laø 1 döï tröõ döï tröõ thôøi gian voøng queùt tröôùc (ms) thôøi gian voøng queùt ngaén nhaát thôøi gian voøng queùt daøi nhaát ngaøy giôø OB1 baét ñaàu thöïc hieän (8 byte)

Caùc giaù trò treân ngöôøi duøng khoâng thay ñoåi ñöôïc, ngöôøi duøng coù theå theâm caùc bieán vaøo töø ñòa chæ 20.0 trôû ñi, caùc bieán naøy laø bieán taïm, thay ñoåi sau moãi voøng queùt. Caùc bieán theâm vaøo söû duïng cho vieäc goïi caùc chöông trình con FC, SFC, FB, SFB. Chöông trình STEP 7 duøng ñeå laäp trình cho PLC S7-300, S7-400. Chöông trình naøy coù version 5.0 duøng cho Win 98, Version 5.1 vaø 5.3 duøng cho Win XP. Khi kích chuoät vaøo bieåu töôïng Simatic Manager seõ xuaát hieän cöûa soå Hình , baám Next ñeå choïn loaïi CPU

Baám tieáp Next ñeå choïn caùc khoái OB, baét buoäc laø OB1, caùc OB khaùc coù theå theâm vaøo sau.

Choïn caùch laäp trình STL, LAD hay FBD, trong luùc laäp trình coù theå tuyø yù thay ñoåi. Baám tieáp Next ñaët teân cho Project, sau ñoù baám Finish, xuaát hieän cöûa soå laäp trình

Nöûa cöûa soå beân traùi saép xeáp daïng thö muïc, kích chuoât vaøo ñoù ñeå môû ra caùc muïc con. Baám vaøo doøng SIMATIC 300 STATION beân traùi roài baáâm tieáp vaøo Hardware beân phaûi ñeå ñaët caáu hình phaàn cöùng cuûa PLC (coâng vieäc naøy cuõng coù theå thöïc hieän sau)

Gæa söû caáu hình ñôn giaûn goàm caùc moduke DI/DO, AI/AO, ta kích chuoät vaøo doøng SIMATIC 300, SM- 300 , choïn caùc module phuø hôïp, duøng chuoät keùo vaøo caùc slot cuûa Station töø soá 4 trôû ñi, (slot 3 duøng cho module IM), sau ñoù vaøo menu Station – Save roài Close. Ta seõ trôû laïi vaán ñeà caáu hình ôû muïc

Trôû laïi Project, baám vaøo muïc Blocks, ta thaáy xuaát hieän OB1, baám vaøo OB1 neáu laäp trình tuyeán tính, nghóa laø khoâng duøng caùc khoái logic FC, FB töï taïo

Baám vaøo menu View, choïn STL, LAD, FBD choïn caùch laäp trình. Khi laäp trình ta coù theå duøng ñòa chæ tuyeät ñoái ( I0.0, MW2, T5…) hay ñòa chæ kyù hieäu (Start, Speed, Delay…). Ñòa chæ kyù hieäu giuùp chöông trình deã hieåu hôn. Coù hai loaïi laø kyù hieäu cuïc boä vaø kyù hieäu toaøn cuïc (hay chia xeû) , kyù hieäu cuïc boä khai baùo trong baûng khai baùo bieán cuûa khoái vaø chæ coù yù nghóa trong phaïm vi khoái ñoù, kyù hieäu toaøn cuïc khai baùo trong baûng kyù hieäu Symbols, coù yù nghóa trong toaøn boä caùc khoái cuûa project. Vieäc khai baùo kyù hieäu toaøn cuïc thöïc hieän tröôùc hay sau khi vieát maõ. Khoái logíc coù theå coù toái ña 999 network, moãi network coù toái ña 2000 haøng , moãi haøng goàm nhaõn , leänh, ñòa chæ vaø chuù thích (sau //) Thuû tuïc laäp kyù hieäu toaøn cuïc nhö sau: baám chuoät vaøo ñoái töôïng Symbols (Xem hình ).

Caùc bieán kyù hieäu ñöôïc ñöa vaøo töøng doøng moät, daøi toái ña 24 kyù tuï chöõ soá, kyù töï ñaëc bieät, tröø daáu nhaùy “ , khoâng phaân bieät chöõ hoa vaø chöõ thöôøng. Baûng kyù hieäu chöùa toái ña 16380 kyù hieäu. Sau khi ñaõ bieân taäp xong, vaøo menu Symbol TableSave ñeå löu baûng. Vaøo cöûa soå bieân taäp cuûa khoái choïn ViewDisplay with - Symbolic Representation ñeå nhìn thaáy ñòa chæ kyù hieäu

trong chöông trình, kyù hieäu tuyeät ñoái ñöôïc ñoùng khung baèng daáu “, coøn kyù hieäu cuïc boä coù daáu # ñöùng tröôùc. Ví dụ lập trình cho ñeøn boä haønh, bình thöôøng khi khoâng coù yeâu caàu qua ñöôøng (I0.0, I0.1), ñeøn xanh xe (Q0.7) vaø ñeøn ñoû boä haønh (Q0.0) saùng. Khi coù yeâu caàu ñeøn vaøng xe (Q0.6) saùng trong 3s , sau ñoù ñeøn ñoû xe (Q0.5) saùng vaø ñeøn xanh boä haønh (Q0.1) saùng trong 10s, heát thôøi gian naøy ñeøn ñoû boä haønh vaø ñoû xe cuøng saùng, sau 6s ñeøn vaøng xe vaø ñoû xe cuøng saùng vaø sau 3 s ñeøn xanh xe saùng , xoùa yeâu caàu qua ñöôøng A( A( O khaùch O ) A O ) AN =

I 0.0 // Coù yeâu caàu qua ñöôøng cuûa boä haønh I 0.1 T M

6 0.0

T M

5 //xoùa yeâu caàu 0.0 // ghi nhaän yeâu caàu

AN M caàu thì = Q A L SD A A( ON O ) = A A =

0.0

// neáu khoâng coù yeâu

0.7

// ñeøn xanh xe saùng

M 0.0 S5T#3S T 2 M 0.0 T T

2 4

Q M T Q

0.6 //Ñeøn vaøng xe 3s 0.0 2 0.5 //Ñeøn ñoû xe sau 3s

A Q 0.5 L S5T#10S SD T 3 A Q 0.5 AN T 3 = Q 0.1 //Baät ñeøn xanh boä haønh, thôøi gian 10s A M 0.0 A T 3 L S5T#6S SD T 4 //Thôøi gian 6 s ñoû xe vaø ñoû boä haønh cuøng saùng A M 0.0 A( ON T 2 O T 3 ) ON M 0.0 = Q 0.0 // Baät ñeøn ñoû boä haønh A A L SD

M 0.0 //Baät ñeøn ñoû vaø vaøng xe T 4 S5T#3S T 5 //Chuyeån sang xanh xe sau 3s

A Q 0.7 L S5T#1S SD T 6 //Thôøi gian trì hoaõn 1s ñeå nhaän yeâu caàu khi xanh xe vöøa saùng

Sau ñoù laäp baûng kyù hieäu:

A( A( O O ) A O ) AN = AN =

"Switch_right" "Switch_left" "Ped_delay_green" "Pedestrian_light" "Car_red_orange_phase" "Pedestrian_light" "Pedestrian_light" "Car_green"

A A = A L SD A AN = A A L

"Pedestrian_light" "Car_orange_phase" "Car_red" "Car_red" S5T#10S "Ped_green_phase" "Car_red" "Ped_green_phase" "Ped_green" "Pedestrian_light" "Ped_green_phase" S5T#6S

A L SD A A( ON O ) = A A( ON O ) =

"Pedestrian_light" S5T#3S "Car_orange_phase" "Pedestrian_light" "Car_orange_phase" "Car_delay_red" "Car_orange" "Pedestrian_light" "Car_orange_phase" "Car_delay_red" "Car_orange"

SD A A( ON O ) ON = A A L SD A L SD

"Car_delay_red" "Pedestrian_light" "Car_orange_phase" "Ped_green_phase" "Pedestrian_light" "Ped_red" "Pedestrian_light" "Car_delay_red" S5T#3S "Car_red_orange_phase" "Car_green" S5T#1S "Ped_delay_green"

Sau khi bieân soaïn chöông trình ta coù theå chaïy moâ phoûng khoâng caàn PLC nhôø phaàn meàm S7 PLC Sim theo caùc böôùc sau: - Vaøo menu Simatic Manager- Options- choïn Simulate Modules. Cöûa soå sau xuaát hieän

-

Vaøo menu PLC- Download ñeå naïp khoái chöông trình xuoáng PLC moâ phoûng Vaøo cöûa soå S7-PLCSIM menu Insert choïn caùc vuøng nhôù muoán quan saùt

-

Vaøo menu PLC- choïn Power On, vaøo menu Execute choïn Scan Mode – Continuous Scan. - Choïn RUN hay RUN –P - Taùc ñoäâng vaøo caùc bit I 0.0, I0.1 ñeå xem hoaït ñoäng cuûa chöông trình. - Trôû laïi Simatic Manager, choïn View- Online, môû khoái logic muoán quan saùt (OB1), baám Debug- Monitor Trong tröôøng hôïp muoán taäp trung caùc bieán vaøo moät choã ñeå deã quan saùt, ta duøng baûng khai baùo bieán VAT (Variable Table). Trong cöûa soå Manager vaøo menu Insert- S7 Block- Variable Table (hay baám chuoät phaûi – Insert New Object- Variable Table) ta ñöôïc khoái VAT1, môû khoái naøy ra vaø theâm vaøo caùc ñòa chæ vuøng nhôù muoán quan saùt.

Tröôøng hôïp coù saün PLC, ñaàu tieân ta phaûi keát noái maùy tính vôùi PLC thoâng qua caùp noái thích hôïp, vaøo menu PLC- Display

Accessible Nodes, sau ñoù PLC- Operating mode choïn cheá ñoä PLC laø Stop, PLC- Download naïp chöông trình xuoáng PLC. 2/ Caùc khoái ngaét Khoái OB1 ñöôïc thöïc hieän theo chu kyø, vaø coù theå bò ngaét bôûi caùc söï kieän khi ta caøi ñaët theâm caùc khoái OB khaùc vaøo Project hoaëc khi xaûy ra caùc söï coá. Caùc khoái OB phuø hôïp ñöôïc goïi ñeå xöû lyù ngaét nhôø caùc chöông trình con ñöôïc caøi ñaët. Khoái OB öu tieân cao coù theå ngaét khoái coù öu tieân thaáp hôn. Ta coù theå thay ñoåi öu tieân cuûa OB trong S7-400 vaø S7-300-CPU318. Theâm OB b aèng caùch baám chuoät phaûi trong cöûa soå Project- Insert New Object- Organization block, choïn soá OB, sau ñoù môû khoái OB vaø laäp trình

3 Taïo caùc khoái logic Caùc chöông trình lôùn thöôøng ñöôïc vieát daïng caáu truùc, goàm khoái OB1, caùc khoái chöông trình FC, FB, caùc khoái chöông trình heä thoáng SFC, SFB. Söû duïng laäp trình caáu truùc giuùp chöông trình deã quaûn lyù vaø söûa loãi, thuaän tieän cho vieäc laäp trình theo nhoùm. Khoái OB1 vaø caùc khoái FC, FB coù theå goïi FC, FB, SFC, SFB

Laáy ví duï laäp trình cho heä thoáng troän hai chaát loûng A vaø B (H ), ta chia quaù trình thaønh nhieàu khoái nhoû (H ) : bôm chaát A, bôm chaát B, boàn troän vaø van xaû. Ta nhaän thaáy hai khoái bôm laäp trình gioáng nhau, chæ khaùc ôû caùc ngoõ vaøo/ra. Tröôùc khi laäp trình ta phaûi coù moâ taû kyõ thuaät cho hoaït ñoäng cuûa caùc khoái. Khoái A/B goàm coù bôm vaø van vaøo, van ra - Bôm coù coâng suaát 100KW, voøng quay 1200 rpm, löu löôïng 400l/phuùt. Bôm ñöôïc ñieàu khieån bôûi nuùt Start/Stop treân baûng ñieàu khieån, soá laàn start ñöôïc hieån thò ñeå tieän baûo trì. Bôm ñöôïc pheùp hoaït ñoäng khi:

o boàn khoâng ñaày, o van xaû ñoùng, o nuùt emergency khoâng taùc ñoäng. Bôm taét khi caûm bieán löu löôïng baùo khoâng coù doøng chaûy sau 7 s keå töø khi khôûi ñoâng bôm hay khi caûm bieán löu löôïng baùo ñaõ ngöøng chaûy. - Van ñöôïc ñieàu khieån bôûi solenoid, môû khi coù ñieän vaøo van. Van phaûi môû ít nhaát 1s sau khi bôm chaïy. Khoái boàn troän coù ñoäng cô troän, caùc caûm bieán möùc. coù coâng suaát 100KW, voøng quay 1200 rpm, löu löôïng 400l/phuùt. Ñoäng cô ñöôïc ñieàu khieån bôûi nuùt Start/Stop treân baûng ñieàu khieån, soá laàn start ñöôïc hieån thò ñeå tieän baûo trì. Ñoäng cô ñöôïc pheùp chaïy khi: o Möùc chaát loûng treân möùc toái thieåu , o Van xaû ñoùng o Nuùt Emergency khoâng taùc ñoäng Ñoäng cô ñöôïc taét khi vaän toác khoâng ñaït ñònh möùc sau khi khôûi ñoäng 10s. Coù ba caûm bieán möùc daïng contact . Caûm bieán ñaày thöôøng ñoùng, khi boàn ñaày thì hôû ra. Caûm bieán möùc toái thieåu thöôøng hôû , khi möïc chaát loûng thaáp thì ñoùng laïi. Caûm bieán caïn, hôû neáu boàn caïn Van xaû ñöôïc ñieàu khieån töø baûng ñieàu khieån. Van xaû ñöôïc hoaït ñoäng neáu ñoäng cô troän ngöøng, caûm bieán möùc baùo boàn chöa caïn, nuùt emergency khoâng taùc ñoäng. Van xaû ñoùng neáu caûm bieán möùc baùo boàn caïn. Baûng ñieàu khieån duøng ñeå ñieàu khieån vaø baùo traïng thaùi caùc ñoäng cô, van xaû, baùo möùc boàn, baùo baûo trì vaø döøng khaån caáp.

Coù ba ñoäng cô coù theå laäp trình baèng khoái logic chung (Hình) . Saùu ngoõ vaøo laø hai nuùt nhaán Sart/Stop, nuùt nhaán Reset_Maint xoùa ñeøn baûo trì, tín hieäu baùo ñoäng cô chaïy, ngöøng (Response) soá hieäu Timer (Timer No) vaø thôøi gian timer (Response_Time). Boán ngoõ ra laø baùo loãi (Fault), ñeøn baùo ñoäng cô chaïy, ngöøng (Start_Dsp, Stop_Dsp), baùo baûo trì (Maint), Tín hieäu vaøo/ra laø ñieàu khieån Motor. Khoái logic naøy laäp trình döôùi daïng khoái haøm FB vì caàn löu tröõ giaù trò bieán. Caùc van cuõng ñöôïc ñieàu khieån baèng khoái logic FC (Hình) . Hai tín hieäu vaøo laø nuùt nhaán môû /ñoùng van (Open/ Close) Tín hieäu ra laø ñeøn baùo traïng thaùi van ( Dsp_Open, Dsp_Closed). Tín hieäu vaøo/ ra ñieàu khieån van (Valve). Khoái naøy khoâng coù löu bieán vaø thöïc hieän baèng FC. Caáu truùc chöông trình nhö Hình . Chöông trình chính OB1 goïi haøm FB1 ñieàu khieån ñoäng cô, coù ba ñoäng cô öùng vôùi ba khoái döõ lieäu DB1, DB2, DB3. Haøm FC1 ñöôïc OB1 goïi khi ñieàu khieån van. Caùc khoái FB vaø FC phaûi ñöôïc laäp trình tröôùc khoái OB. Vaøo cöûa soå Project –Symbols laäp baûng kyù hieäu cho caùc bieán (Baûng )

Symbolic Name Feed_pump_A_start Feed_pump_A_stop Flow_A

Address I0.0 I0.1 I0.2

Data Type BOOL BOOL BOOL

Description Starts the feed pump for ingredient A Stops the feed pump for ingredient A Ingredient A flowing

Inlet_valve_A Feed_valve_A Feed_pump_A_on Feed_pump_A_off Feed_pump_A Feed_pump_A_fault Feed_pump_A_maint Feed_pump_B_start Feed_pump_B_stop Flow_B Inlet_valve_B Feed_valve_B Feed_pump_B_on Feed_pump_B_off Feed_pump_B Feed_pump_B_fault Feed_pump_B_maint Agitator_running Agitator_start Agitator_stop Agitator Agitator_on Agitator_off Agitator_fault Agitator_maint Tank_below_max Tank_above_min Tank_not_empty Tank_max_disp Tank_min_disp Tank_empty_disp Drain_open Drain_closed Drain Drain_open_disp Drain_closed_disp EMER_STOP_off Reset_maint

Q4.0 Q4.1 Q4.2 Q4.3 Q4.4 Q4.5 Q4.6 I0.3 I0.4 I0.5 Q5.0 Q5.1 Q5.2 Q5.3 Q5.4 Q5.5 Q5.6 I1.0 I1.1 I1.2 Q8.0 Q8.1 Q8.2 Q8.3 Q8.4 I1.3 I1.4 I1.5 Q9.0 Q9.1 Q9.2 I0.6 I0.7 Q9.5 Q9.6 Q9.7 I1.6 I1.7

BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL

Motor_block Valve_block DB_feed_pump_A DB_feed_pump_B DB_agitator

FB1 FC1 DB1 DB2 DB3

FB1 FC1 FB1 FB1 FB1

Activates the inlet valve for ingredient A Activates the feed valve for ingredient A Lamp for ”feed pump ingredient A running" Lamp for ”feed pump ingredient A not running" Activates the feed pump for ingredient A Lamp for ”feed pump A fault" Lamp for ”feed pump A maintenance" Starts the feed pump for ingredient B Stops the feed pump for ingredient B Ingredient B flowing Activates the inlet valve for ingredient A Activates the feed valve for ingredient B Lamp for ”feed pump ingredient B running" Lamp for ”feed pump ingredient B not running" Activates the feed pump for ingredient B Lamp for ”feed pump B fault" Lamp for ”feed pump B maintenance" Response signal of the agitator motor Agitator start button Agitator stop button Activates the agitator Lamp for "agitator running" Lamp for "agitator not running" Lamp for ”agitator motor fault" Lamp for ”agitator motor maintenance" Sensor ”mixing tank not full" Sensor ”mixing tank above minimum level" Sensor ”mixing tank not empty" Lamp for "mixing tank full" Lamp for "mixing tank below minimum level" Lamp for "mixing tank empty" Button for opening the drain valve Button for closing the drain valve Activates the drain valve Lamp for "drain valve open" Lamp for "drain valve closed" EMERGENCY STOP switch Reset switch for the maintenance lamps on all motors FB for controlling pumps and motor FC for controlling the valves Instance DB for controlling feed pump A Instance DB for controlling feed pump B Instance DB for controlling the agitator motor

3.1 Laäp trình khoái FB FB laø khoái logíc vôùi caùc bieán in, out, in_out, static vaø temp, ñöôïc taïo ra trong baûng bieán ñòa phöông ñi keøm. Caùc bieán in, out, in- out laø caùc tham soá hìmh thöùc coù ñòa chæ cuï theå do chöông trình goïi truyeàn ñeán, bieán static laø bieán trong chöông trình FB ñöôïc löu laïi khi ra khoûi khoái FB, bieán temp maát giaù trò khi ra khoûi khoái FB. Keøm vôùi FB laø khoái döõ lieäu data block chöùa caùc bieán in, out,

in- out vaø static. Coù theå coù nhieàu data block cho moät FB khi moät FB duøng cho caùc nhieäm vuï khaùc nhau, goïi laø instance data block. Khi chöông trình goïi FB caàn phaûi keøm theo instance data block töông öùng. Ta vaøo cöûa soå Project baám chuoät phaûi - Insert New Object – Function block theâm vaøo khoái FB1. Baám chuoät vaøo khoái FB1 ñeå soaïn chöông trình cho khoái. Ta vaøo baûng khai baùo bieán ñeå khai baùo caùc bieán hình thöùc cho khoái theo thöù töï in, out, in_out, static vaø temp. Vôùi ví duï ôû treân, baûng bieán cuûa FB1 “Motor_Block” nhö sau: Address 0.0 0.1 0.2 0.3 2.0 4.0 6.0 6.1 6.2 6.3 8.0 10.0 12.0 14.0 16.0

Declaration IN IN IN IN IN IN OUT OUT OUT OUT IN_OUT STAT STAT STAT STAT

Name Start Stop Response Reset_Maint Timer_No Response_Time Fault Start_Dsp Stop_Dsp Maint Motor Time_bin Time_BCD Starts Start_Edge

Type BOOL BOOL BOOL BOOL TIMER S5TIME BOOL BOOL BOOL BOOL BOOL WORD WORD INT BOOL

Initial Value FALSE FALSE FALSE FALSE S5T#0MS FALSE FALSE FALSE FALSE FALSE W#16#0 W#16#0 0 FALSE

Caùc bieán STAT Time_ bin vaø Time_BCD lö u thôøi gian timer, Starts löu soá laàn khôûi ñoäng motor, Start_ Edge phuïc vuï cho leänh laáy caïnh leân Network 1 Start/stop and latching A( O #Start O #Motor ) AN #Stop = #Motor Network 2 Startup monitoring A #Motor L #Response_Time SD #Timer_No AN #Motor R #Timer_No L #Timer_No T #Timer_bin LC #Timer_No T #Timer_BCD A #Timer_No AN #Response S #Fault R #Motor Network 3 Start lamp and fault reset A #Response = #Start_Dsp R #Fault

Network 4 Stop lamp AN #Response = #Stop_Dsp Network 5 Counting the starts A #Motor FP #Start_Edge JCN lab1 L #Starts +1 T #Starts lab1: NOP 0 Network 6 Maintenance lamp L #Starts L 50 >=I = #Maint Network 7 Reset counter for number of starts A #Reset_Maint A #Maint JCN END L0 T #Starts END: NOP 0

Theâm khoái DB project vôùi caùc teân DB1, DB2, DB3 loaïi Instance DB vaø thuoäc FB1

Caùc bieán trong DB1 seõ töï taïo ra theo baûng khai baùo bieán cuûa khoái FB1, töông töï cho caùc DB2 vaø DB3.

3.2 Laäp trình khoái FC Khoái FC coù caùc bieán hình thöùc in, out vaø in_ out do chöông trình goïi cung caáp caùc ñòa chæ cuï theå, ngoaøi ra coøn coù bieán temp söû duïng noäi boä. Khoái FC khoâng coù boä nhôù neân döõ lieäu maát ñi khi ra khoûi khoái. Ta theâm vaøo project khoái FC1 vaø khai baùo caùc bieán trong baûng khai baùo bieán keøm theo. Sau ñoù laäp trình cho FC1 Address Declaration Name Type Initial Value 0.0 IN Open BOOL FALSE 0.1 IN Close BOOL FALSE 2.0 OUT Dsp_Open BOOL FALSE 2.1 OUT Dsp_Closed BOOL FALSE

4.0 Network 1 Open/close and latching A( O #Open

IN_OUT

Valve

BOOL FALSE

O #Valve ) AN #Close = #Valve Network 2 Display "valve open" A #Valve = #Dsp_Open Network 3 Display "valve closed" AN#Valve = #Dsp_Closed

Böôùc tieáp theo laø laäp trình cho OB1, ta khai baùo caùc bieán cho OB1 Address 0.0 1.0 2.0 3.0 4.0 5.0 6.0 8.0 10.0 12.0 20.0 20.1 20.2 20.3 20.4 20.5

Declaration TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP TEMP

Name OB1_EV_CLASS OB1_SCAN1 OB1_PRIORITY OB1_OB_NUMBR OB1_RESERVED_1 OB1_RESERVED_2 OB1_PREV_CYCLE OB1_MIN_CYCLE OB1_MAX_CYCLE OB1_DATE_TIME Enable_motor Enable_valve Start_fulfilled Stop_fulfilled Inlet_valve_A_open Inlet_valve_A_closed

Type BYTE BYTE BYTE BYTE BYTE BYTE INT INT INT DATE_AND_TIME BOOL BOOL BOOL BOOL BOOL BOOL

Chöông trình OB1 Network 1 Interlocks for feed pump A A "EMER_STOP_off" A "Tank_below_max" AN "Drain" = #Enable_Motor Network 2 Calling FB Motor for ingredient A A "Feed_pump_A_start" A #Enable_Motor = #Start_Fulfilled A( O "Feed_pump_A_stop" ON #Enable_Motor ) = #Stop_Fulfilled CALL "Motor_block", "DB_feed_pump_A" Start :=#Start_Fulfilled Stop :=#Stop_Fullfilled Response :="Flow_A" Reset_Maint :="Reset_maint" Timer_No :=T12 Reponse_Time:=S5T#7S Fault :="Feed_pump_A_fault" Start_Dsp :="Feed_pump_A_on" Stop_Dsp :="Feed_pump_A_off" Maint :="Feed_pump_A_maint" Motor :="Feed_pump_A"

Network 8 Delaying the valve enable ingredient B A "Feed_pump_B" L S5T#1S SD T 15 AN "Feed_pump_B" R T 15 A T 15 = #Enable_Valve Network 9 Inlet valve control for ingredient B AN "Flow_B" AN "Feed_pump_B" = #Close_Valve_Fulfilled CALL "Valve_block" Open :=#Enable_Valve Close :=#Close_Valve_Fulfilled Dsp_Open :=#Inlet_Valve_B_Open Dsp_Closed:=#Inlet_Valve_B_Closed Valve :="Inlet_Valve_B" Network 10 Feed valve control for ingredient B AN "Flow_B" AN "Feed_pump_B" = #Close_Valve_Fulfilled CALL "Valve_block" Open :=#Enable_Valve Close :=#Close_Valve_Fulfilled

Network 3 Delaying the valve enable ingredient A A "Feed_pump_A" L S5T#1S SD T 13 AN "Feed_pump_A" R T 13 A T 13 = #Enable_Valve Network 4 Inlet valve control for ingredient A AN "Flow_A" AN "Feed_pump_A" = #Close_Valve_Fulfilled CALL "Valve_block" Open :=#Enable_Valve Close :=#Close_Valve_Fulfilled Dsp_Open :=#Inlet_Valve_A_Open Dsp_Closed:=#Inlet_Valve_A_Closed Valve :="Inlet_Valve_A" Network 5 Feed valve control for ingredient A AN"Flow_A" AN"Feed_pump_A" =#Close_Valve_Fulfilled CALL"Valve_block" Open:=#Enable_Valve Close:=#Close_Valve_Fulfilled Dsp_Open:=#Feed_Valve_A_Open Dsp_Closed:=#Feed_Valve_A_Closed Valve :="Feed_Valve_A" Network 6 Interlocks for feed pump B A "EMER_STOP_off" A "Tank_below_max" AN "Drain" = "Enable_Motor Network 7 Calling FB Motor for ingredient B A "Feed_pump_B_start" A #Enable_Motor = #Start_Fulfilled A( O "Feed_pump_B_stop" ON #Enable_Motor ) = #Stop_Fulfilled CALL "Motor_block", "DB_feed_pump_B" Start :=#Start_Fulfilled Stop :=#Stop_Fullfilled Response :="Flow_B" Reset_Maint :="Reset_maint" Timer_No :=T14 Reponse_Time:=S5T#7S Fault :="Feed_pump_B_fault" Start_Dsp :="Feed_pump_B_on" Stop_Dsp :="Feed_pump_B_off" Maint :="Feed_pump_B_maint" Motor :="Feed_pump_B"

4. Sử dụng hàm thư viện

Dsp_Open :=#Feed_Valve_B_Open Dsp_Closed:=#Feed_Valve_B_Closed Valve :="Feed_Valve_B" Network 11 Interlocks for agitator A "EMER_STOP_off" A "Tank_above_min" AN "Drain" = #Enable_Motor Network 12 Calling FB Motor for agitator A "Agitator_start" A #Enable_Motor = #Start_Fulfilled A( O "Agitator_stop" ON #Enable_Motor ) = #Stop_Fulfilled CALL "Motor_block", "DB_Agitator" Start :=#Start_Fulfilled Stop :=#Stop_Fullfilled Response :="Agitator_running" Reset_Maint :="Reset_maint" Timer_No :=T16 Reponse_Time:=S5T#10S Fault :="Agitator_fault" Start_Dsp :="Agitator_on" Stop_Dsp :="Agitator_off" Maint :="Agitator_maint" Motor :="Agitator" Network 13 Interlocks for drain valve A"EMER_STOP_off" A"Tank_not_empty" AN"Agitator" = "Enable_Valve Network 14 Drain valve control A "Drain_open" A #Enable_Valve = #Open_Drain A( O "Drain_closed" ON #Enable_Valve ) = #Close_Drain CALL "Valve_block" Open :=#Open_Drain Close :=#Close_Drain Dsp_Open :="Drain_open_disp" Dsp_Closed :="Drain_closed_disp" Valve :="Drain" Network 15 Tank level display AN"Tank_below_max" ="Tank_max_disp" AN"Tank_above_min" ="Tank_min_disp" AN"Tank_not_empty" = "Tank_empty_disp"

Caùc haøm thö vieän do Siemens vieát saün thuoäc caùc loaïi FC, FB, SFC,SFB giuùp ngöôøi duøng thuaän tieän trong laäp trình. Muoán duøng caùc haøm thö vieän trong khoái logic naøo thì ta môû khoái logic ñoù ra, kích chuoät vaøo choã leänh CALL goïi haøm thö vieän, vaøo menu Insert- Program Elements- Libraries choïn caùc haøm thö vieän phuø hôïp roài baám chuoät keùp vaøo ñoù, hoaëc goõ CALL teân haøm thö vieän. Caùc haøm thö vieän caàn chuyeån giaù trò cho caùc bieán hình thöùc vaø ta phaûi cung caáp cho haøm goïi theo qui ñònh cuûa haøm thö vieän.

Related Documents


More Documents from "Tran Van Thien"