Chương trình người dùng thường được chia nhỏ thành từng khối logic theo kiểu
chương trình cấu trúc, giúp cho việc lập trình và sữa lỗi thuận tiện. Có nhiều loại khối logic:
? Khối tổ chức OB (Organization blocks)
? Khối hàm hệ thống SFB (System function blocks) và hàm hệ thống SFC (system
functions) tích hợp trong PLC
? Khối hàm FB (Function blocks) trong thư viện hay người dùng tự viết
? Hàm FC (Functions) trong thư viện hay người dùng tự viết
? Khối dữ liệu Instance (Instance Data Blocks ) liên kết với FB/SFB
? Khối dữ liệu chia xẻ (Shared Data Blocks )
Khối tổ chức OB là giao diện giữa chương trình người dùng và hệ điều hàmh của PLC.
OB được gọi bởi hệ điều hành theo chu kỳ hay khi có ngắt, có sự cố hay khi khởi động PLC.
Có nhiều khối OB và có ưu tiên khác nhau, khối OB có số ưu tiên cao hơn có thể ngắt khối
OB số ưu tiên thấp hơn. Tuỳ theo loại CPU, số lượng khối OB sử dụng được sẽ khác nhau,
bảng sau liệt kê các loại OB
23 trang |
Chia sẻ: luyenbuizn | Lượt xem: 1160 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Kỹ thuật lập trình step 7 cho s7-300, 400, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
KYÕ THUAÄT LAÄP TRÌNH STEP 7 CHO S7-300, 400
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 YÙ nghóa Öu tieân
OB1 Ñöôïc goïi khi keát thuùc khôûi ñoäng hay keát
thuùc OB1, thöïc hieän theo chu kyø
1
OB10, OB11, OB12, OB13
OB14, OB15, OB16, OB17
Ngaét theo thôøi gian trong ngaøy, thaùng, naêm 2
OB20
OB21
OB22
OB23
Ngaét trì hoaõn 3
4
5
6
OB30
OB31
OB32
OB33
OB34
OB35
OB36
OB37
OB38
Ngaét chu kyø (maëc ñònh 5s)
Ngaét chu kyø (maëc ñònh 2s)
Ngaét chu kyø (maëc ñònh 1s)
Ngaét chu kyø (maëc ñònh 500ms)
Ngaét chu kyø (maëc ñònh 200ms)
Ngaét chu kyø (maëc ñònh 100ms)
Ngaét chu kyø (maëc ñònh 50ms)
Ngaét chu kyø (maëc ñònh 20ms)
Ngaét chu kyø (maëc ñònh 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
Loãi I/O redundancy ( H CPU)
Loãi CPU redundancy (H CPU)
Loãi Communication redundancy (H CPU)
25
28
25
OB80
OB81
OB82
OB83
OB84
OB85
OB86
OB87
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
26, 28
OB90 Warm or cold restart or delete a block being
executed in OB90 or load an OB90 on the
CPU or terminate OB90
29, 0
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á
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: giaù trò B#16#11 coù nghóa OB1 tích cöïc
OB1_SCAN_1: 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
OB1_PRIORITY: giaù trò 1
OB1_OB_NUMBR: soá OB laø 1
OB1_RESERVED_1: döï tröõ
OB1_RESERVED_2: döï tröõ
OB1_PREV_CYCLE: thôøi gian voøng queùt tröôùc (ms)
OB1_MIN_CYCLE: thôøi gian voøng queùt ngaén nhaát
OB1_MAX_CYCLE: thôøi gian voøng queùt daøi nhaát
OB1_DATE_TIME: 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 Table- Save ñeå löu baûng. Vaøo
cöûa soå bieân taäp cuûa khoái choïn View- Display 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 I 0.0 // Coù yeâu caàu qua ñöôøng cuûa khaùch boä haønh
O I 0.1
)
A T 6
O M 0.0
)
AN T 5 //xoùa yeâu caàu
= M 0.0 // ghi nhaän yeâu caàu
AN M 0.0 // neáu khoâng coù yeâu caàu thì
= Q 0.7 // ñeøn xanh xe saùng
A M 0.0
L S5T#3S
SD T 2
A M 0.0
A(
ON T 2
O T 4
)
= Q 0.6 //Ñeøn vaøng xe 3s
A M 0.0
A T 2
= Q 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 M 0.0 //Baät ñeøn ñoû vaø vaøng xe
A T 4
L S5T#3S
SD 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 "Switch_right"
O "Switch_left"
)
A "Ped_delay_green"
O "Pedestrian_light"
)
AN "Car_red_orange_phase"
= "Pedestrian_light"
A "Pedestrian_light"
A "Car_orange_phase"
= "Car_red"
A "Car_red"
L S5T#10S
SD "Ped_green_phase"
A "Car_red"
AN "Ped_green_phase"
= "Ped_green"
A "Pedestrian_light"
AN "Pedestrian_light"
= "Car_green"
A "Pedestrian_light"
L S5T#3S
SD "Car_orange_phase"
A "Pedestrian_light"
A(
ON "Car_orange_phase"
O "Car_delay_red"
)
= "Car_orange"
A "Pedestrian_light"
A(
ON "Car_orange_phase"
O "Car_delay_red"
)
= "Car_orange"
A "Ped_green_phase"
L S5T#6S
SD "Car_delay_red"
A "Pedestrian_light"
A(
ON "Car_orange_phase"
O "Ped_green_phase"
)
ON "Pedestrian_light"
= "Ped_red"
A "Pedestrian_light"
A "Car_delay_red"
L S5T#3S
SD "Car_red_orange_phase"
A "Car_green"
L S5T#1S
SD "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 Address Data Type Description
Feed_pump_A_start I0.0 BOOL Starts the feed pump for ingredient A
Feed_pump_A_stop I0.1 BOOL Stops the feed pump for ingredient A
Flow_A I0.2 BOOL Ingredient A flowing
Inlet_valve_A Q4.0 BOOL Activates the inlet valve for ingredient A
Feed_valve_A Q4.1 BOOL Activates the feed valve for ingredient A
Feed_pump_A_on Q4.2 BOOL Lamp for ”feed pump ingredient A running"
Feed_pump_A_off Q4.3 BOOL Lamp for ”feed pump ingredient A not running"
Feed_pump_A Q4.4 BOOL Activates the feed pump for ingredient A
Feed_pump_A_fault Q4.5 BOOL Lamp for ”feed pump A fault"
Feed_pump_A_maint Q4.6 BOOL Lamp for ”feed pump A maintenance"
Feed_pump_B_start I0.3 BOOL Starts the feed pump for ingredient B
Feed_pump_B_stop I0.4 BOOL Stops the feed pump for ingredient B
Flow_B I0.5 BOOL Ingredient B flowing
Inlet_valve_B Q5.0 BOOL Activates the inlet valve for ingredient A
Feed_valve_B Q5.1 BOOL Activates the feed valve for ingredient B
Feed_pump_B_on Q5.2 BOOL Lamp for ”feed pump ingredient B running"
Feed_pump_B_off Q5.3 BOOL Lamp for ”feed pump ingredient B not running"
Feed_pump_B Q5.4 BOOL Activates the feed pump for ingredient B
Feed_pump_B_fault Q5.5 BOOL Lamp for ”feed pump B fault"
Feed_pump_B_maint Q5.6 BOOL Lamp for ”feed pump B maintenance"
Agitator_running I1.0 BOOL Response signal of the agitator motor
Agitator_start I1.1 BOOL Agitator start button
Agitator_stop I1.2 BOOL Agitator stop button
Agitator Q8.0 BOOL Activates the agitator
Agitator_on Q8.1 BOOL Lamp for "agitator running"
Agitator_off Q8.2 BOOL Lamp for "agitator not running"
Agitator_fault Q8.3 BOOL Lamp for ”agitator motor fault"
Agitator_maint Q8.4 BOOL Lamp for ”agitator motor maintenance"
Tank_below_max I1.3 BOOL Sensor ”mixing tank not full"
Tank_above_min I1.4 BOOL Sensor ”mixing tank above minimum level"
Tank_not_empty I1.5 BOOL Sensor ”mixing tank not empty"
Tank_max_disp Q9.0 BOOL Lamp for "mixing tank full"
Tank_min_disp Q9.1 BOOL Lamp for "mixing tank below minimum level"
Tank_empty_disp Q9.2 BOOL Lamp for "mixing tank empty"
Drain_open I0.6 BOOL Button for opening the drain valve
Drain_closed I0.7 BOOL Button for closing the drain valve
Drain Q9.5 BOOL Activates the drain valve
Drain_open_disp Q9.6 BOOL Lamp for "drain valve open"
Drain_closed_disp Q9.7 BOOL Lamp for "drain valve closed"
EMER_STOP_off I1.6 BOOL EMERGENCY STOP switch
Reset_maint I1.7 BOOL Reset switch for the maintenance lamps on all motors
Motor_block FB1 FB1 FB for controlling pumps and motor
Valve_block FC1 FC1 FC for controlling the valves
DB_feed_pump_A DB1 FB1 Instance DB for controlling feed pump A
DB_feed_pump_B DB2 FB1 Instance DB for controlling feed pump B
DB_agitator DB3 FB1 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 Declaration Name Type Initial Value
0.0 IN Start BOOL FALSE
0.1 IN Stop BOOL FALSE
0.2 IN Response BOOL FALSE
0.3 IN Reset_Maint BOOL FALSE
2.0 IN Timer_No TIMER
4.0 IN Response_Time S5TIME S5T#0MS
6.0 OUT Fault BOOL FALSE
6.1 OUT Start_Dsp BOOL FALSE
6.2 OUT Stop_Dsp BOOL FALSE
6.3 OUT Maint BOOL FALSE
8.0 IN_OUT Motor BOOL FALSE
10.0 STAT Time_bin WORD W#16#0
12.0 STAT Time_BCD WORD W#16#0
14.0 STAT Starts INT 0
16.0 STAT Start_Edge BOOL 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 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
L 0
Network 3 Start lamp and fault reset
A #Response
= #Start_Dsp
R #Fault
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 IN_OUT Valve BOOL FALSE
Network 1 Open/close and latching
A(
O #Open
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 Declaration Name Type
0.0 TEMP OB1_EV_CLASS BYTE
1.0 TEMP OB1_SCAN1 BYTE
2.0 TEMP OB1_PRIORITY BYTE
3.0 TEMP OB1_OB_NUMBR BYTE
4.0 TEMP OB1_RESERVED_1 BYTE
5.0 TEMP OB1_RESERVED_2 BYTE
6.0 TEMP OB1_PREV_CYCLE INT
8.0 TEMP OB1_MIN_CYCLE INT
10.0 TEMP OB1_MAX_CYCLE INT
12.0 TEMP OB1_DATE_TIME DATE_AND_TIME
20.0 TEMP Enable_motor BOOL
20.1 TEMP Enable_valve BOOL
20.2 TEMP Start_fulfilled BOOL
20.3 TEMP Stop_fulfilled BOOL
20.4 TEMP Inlet_valve_A_open BOOL
20.5 TEMP Inlet_valve_A_closed 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
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"
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 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"
AN "Feed_pump_B"
= #Close_Valve_Fulfilled
CALL "Valve_block"
Open :=#Enable_Valve
Close :=#Close_Valve_Fulfilled
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_Ful
Các file đính kèm theo tài liệu này:
- ky_thuat_lap_trinh__9858.pdf