Ülekande- ja programmi juhtimisfunktsioonid
Ülekandefunktsioonid
Ülekandefunktsioonide kasutamine (joonis 5.1) võimaldab laadida ja siirata andmeid (väärtusi) CPU akumulaatorist (ACCU) operandi või muutujasse. Neid saab rakendada ka andmete vahetamiseks akumulaatorite vahel. CPU akumulaator on spetsiaalne register, mida vajatakse mingite funktsioonide teostamisel kasutatavate digitaalsete andmete puhverdamiseks. Siemens PLC protsessoris on kaks akumulaatorit pikkusega 32 bitti. Neid vajatakse aritmeetika- ja digitaaltehete teostamisel, kus kahe sisendoperandi väärtuste alusel leitakse tehte käigus üks uus tulemus. Esimese operandi väärtus laetakse ACCU 1-le. Teise operandi väärtuse laadimise algul laetakse ACCU 1-l olev esimese operandi väärtus edasi ACCU 2-le ja siis laetakse uue operandi väärtus ACCU 1-le. Selle käigus kirjutatakse ACCU 2 varasem sisu üle. Seejärel teostatakse soovitud tehe ja saadud tulemus laetakse ACCU 1-le, kust see siiratakse väljundoperandi. Ainult ACCU 1 olevaid väärtusi saab üle kanda operandidele [6].
Standardis IEC 61131 on määratud IL keeles tähistavad LD- ja ST-käsud laadimise ja siirdamise funktsioone. STEP 7 puhul on selleks L- ja T-käsud STL keeles. FBD ja LAD keeltes kasutatakse MOVE funktsiooni andmete vahetamiseks operandide vahel (siirdamis- ja laadimiskäsud on kombineeritud üheks). STEP 7 ei võimalda kasutada ülekandefunktsioone bitt tüüpi operandide juures. Tabelis 5.1 on toodud STEP 7 laadimis- ja siirdamiskäskude tähised STL keeles koos vastavate operandidega. “n” tähistab operandi baidi aadressi mälus ja “x” DB numbrit. Tabelis 5.1 esitatud nõuded laadimis- ja siirdamisfunktsioonide kohta kehtivad ka MOVE funktsiooni puhul.
Joonisel 5.2 on esitatud FBD ja STL keeles MOVE ülekandefunktsioon. Näites kantakse operandi IW 2 väärtus edasi operandi QB 6-le juhul, kui sisendoperandi EN I 0.0 signaal on 1.
Laadimise / siirdamise koht | Laadimiskäsk | Siirdamiskäsk | Kommentaar |
---|---|---|---|
PLC sisendid | L IB n | Baidi laadimine sisendist | |
T IB n | Baidi siirdamine sisendisse | ||
L IW n | Sõna laadimine sisendist | ||
T IW n | Sõna siirdamine sisendisse | ||
L IW n | Topeltsõna laadimine sisendisse | ||
T ID n | Topeltsõna siirdamine sisendisse | ||
Siirdamiskäsuga uuendatakse sisendite väärtused ainult üheks PLC tsükliks. Järgmise PLC tsükli ajaks on sisendites saadaval juba uued reaalsed väärtused. | |||
PLC väljundid | L QB n | T QB n | Ühe baidi laadimine/siirdamine väljundisse |
L QW n | T QW n | Sõna laadimine/siirdamine väljundisse | |
L QW n | T QD n | Topeltsõna laadimine/siirdamine väljundisse | |
Perifeeria | L PIB n | T PQB n | Baidi laadimine/siirdamine baidipikkusega perifeeriasse |
L PIW n | T PQW n | Laadimine/siirdamine sõnapikkusega perifeeriasse | |
L PIW n | T PQD n | Laadimine/siirdamine topeltsõnapikkusega perifeeriasse | |
Mälu | L MB n | T MB n | Baidi laadimine/siirdamine baidipikkusega mälupiirkonda |
L MW n | T MW n | Sõna laadimine/siirdamine mälupiirkonda | |
L MD n | T MD n | Topeltsõna Laadimine/siirdamine mälupiirkonda | |
Konstant | L B#16#F5 | Kuueteitkümnendarvulise (HEX) konstandi laadimine | |
L -50 | Täisarvulise (INT) konstandi laadimine | ||
L L#-400 | Topelttäisarvulise (DINT) konstandi laadimine | ||
L 2.5 | Reaalarvulise konstandi laadimine | ||
L S5T#2S500MS | S5 ajaväärtusega konstandi laadimine | ||
L C#250 | S5 loenduri konstandi laadimine | ||
Taimer | L T n | Taimeri täisarv formaadis väärtuse laadimine | |
LC T n | Taimeri kahend-kümnend (BCD) formaadis väärtuse laadimine | ||
Loendur | L C n | HEX formaadis väärtuse laadimine loendurist | |
LC C n | Kahend-kümnend (BCD) formaadis väärtuse laadimine loendurist koos andmeploki numbriga | ||
Andmeplokiga seotud andmed | L DB x. DBB n | T DB x. DBB n | Andmebaidi laadimine/siirdamine andmeblokist x baidi aadressilt n |
L DB x. DBW n | T DB x. DBW n | Sõna laadimine/siirdamine andmeplokist x sõna aadressilt n | |
L DB x. DBD n | T DB x. DBD n | Topeltsõna laadimine/siirdamine andmeplokist x topeltsõna aadressil n Laadimine/siirdamine ilma andmeploki numbrita |
|
L DBB n | T DBB n | Andmebaidi laadimine/siirdamine | |
L DBW n | T DBW n | Sõna laadimine/siirdamine | |
L DBD n | T DBD n | Topeltsõna laadimine/siirdamine | |
Muutujad | L #Speed | T #Speed | Muutuja nimetusega “Speed” laadimine/siirdamine |
Kui siirdamine on lubatud (sisendis I 0.0 on signaal 1), siis laetakse operandi IW 2 (tähis paremale joondatud) sisu, mille pikkus on üks sõna, akumulaatorisse ACCU 1 (joonis 5.3). Suurima numbriga bait (Byte 3) jääb paremale poole. ACCU 1 kaks ülejäänud baiti täidetakse nullidega. Järgmisena siirdatakse ACCU 1 sisu operandi QB 6, mille pikkus on bait. Kõige paremal pool olev ACCU 1 baidi sisu (bait 3) kirjutatakse operandi QB 6. Seega, kui operandi IW 2 väärtuseks oli 0100 1001 1110 0110, siis operandi QB 6 väärtuseks on 1110 0110.
MOVE funktsiooni sisend EN võib olla ka tühi. See tähendab, et MOVE funktsiooni täidetakse PLCs iga tsükli ajal ning selleks ei pea ootama funktsiooni täitmise luba (sisendis EN peab olema signaal 1).
Programmi juhtimisfunktsioonid
PLC programmide teostamisel tuleb sageli loobuda programmi samm-sammulisest täitmisest ja täita ka alternatiivseid programmiosasid. See saavutatakse hüpete ja tsüklite kasutamisega mingis plokis või opereerides erinevate plokkidega. Funktsioonide ja plokkide tingimuslik käivitamine või programmi alternatiivne hargnemine viib samuti programmi mittelineaarsele täitmisele [6].
Tingimusteta ja tingimuslikud hüpped
Hüppefunktsioonidega saab programmi täitmist suunata ühest programmiosast teise. Standardi IEC 61131 kohaselt kirjeldatakse hüpe programmis käsuga JMP ja sellega seotud sihtkoha märgisega. Hüppeid programmis saab teostada tingimusteta või tingimuslikult.
Tabelites 5.2 ja 5.3 on esitatud STEP 7 hüppekäsud STL ja FBD keeles [6, 17]. LAD keeles asendatakse tabelis 5.3 kujutatud kastid kontaktide ja mähiste tingmärkidega. FBD ja LAD keeles kasutatud olekubittide väärtused leiab STEP 7 kaustast “Status bit”.
Käsk (ope-ratsioon) | Operand | Kommentaar |
---|---|---|
JU | Sihtkoha märgis | Tingimusteta hüpe. |
JC | Sihtkoha märgis | Hüpe, kui loogilise operatsiooni tulemus (RLO) on 1. |
JCN | Sihtkoha märgis | Hüpe, kui RLO = 0. |
JCB | Sihtkoha märgis | Hüpe, kui RLO = 1. Kopeerida RLO biti sisu BR bitti. |
JNB | Sihtkoha märgis | Hüpe, kui RLO = 1. Kopeerida RLO biti sisu BR bitti. |
JBI | Sihtkoha märgis | Hüpe programmis ,kui süsteemibiti BR (binary result) väärtus on 1. |
JNBI | Sihtkoha märgis | Hüpe, kui süsteemibitt BR on 0. |
JO | Sihtkoha märgis | Hüpe, kui aritmeetika tehte tulemus ületab lubatut suurimat väärtust. Süsteemibitt OV (Overload) on 1. |
JOS | Sihtkoha märgis | Hüpe kui vähemalt üks eelmistest aritmeetikatehete tulemustest ületab lubatut suurimat väärtust. Süsteemibitt OS (overload with save) on 1. |
JZ | Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus on võrdne 0. |
JN | Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus ei ole võrdne 0. |
JP | Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus on suurem kui 0. |
JM | Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus on väiksem kui 0. |
JPZ | Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus on suurem või võrdne kui 0. |
JMZ | Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus on väiksem või võrdne kui 0. |
JUO | Sihtkoha märgis | Hüpe, kui esines lubamatu aritmeetikatehe. Süsteemibitid CC1 ja CC0 on 1. |
LOOP | Sihtkoha märgis | Tsükliline hüpe. ACCU 1 sisu vähendatakse ja hüpatakse seni, kuni ACCU 1 sisu ei ole võrdne 0-ga. |
Käsk (operatsioon) | Operand | Kommentaar |
---|---|---|
Sihtkoha märgis | Tingimusteta hüpe. | |
Sihtkoha märgis | Hüpe, kui RLO = 1. | |
Sihtkoha märgis | Hüpe, kui RLO = 0. | |
Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus on suurem kui 0. Süsteemibittide juurest leiab ka < 0, == 0, >< 0, >= 0 ja <= 0. | |
Sihtkoha märgis | Hüpe, kui aritmeetikatehte tulemus ületab lubatut suurimat väärtust (OV = 1). | |
Sihtkoha märgis | Hüpe, kui vähemalt üks eelmistest aritmeeti- katehete tulemustest ületab lubatut suurimat väärtust (OS = 1). | |
Sihtkoha märgis | Hüpe, kui reaalarvudega esines lubamatu aritmeetikatehte. | |
Sihtkoha märgis | Hüpe, kui süsteemibitt BR on 1. | |
Hüppe sihtkoha plokk, sihtkoha märgis kirjutatakse selle sisse. |
Programmi koostamisel tähistatakse hüppe siht sihtkoha märgisega. See märgis saab koosneda maksimaalselt neljast sümbolist. Esimene sümbol peab olema täht, teised võivad olla kas siis tähed, numbrid või allkriips (nt M_01). Selle märgise juures tuleb arvestada suurte ja väikeste tähtedega. Hüppe sihtkoha märgis kirjutatakse STL keeles hüppekäsu sümbolite järele ja FBD keeles hüppekäsu ploki kohale. STL keeles sisestatakse hüppe sihtkoha märgise programmirea algusse, millele järgneb koolon, nt M_01: A I 1.0. FBD keeles paigutatakse Networki algusse eriline plokk, millesse kirjutatakse hüppe sihtkoha märgis. Sihtkoha märgis saab programmis olla ainult ühes kohas, kuid sinna saab hüpata ühe ploki erinevatest kohtadest. Antud plokis saab hüpata nii edasi kui ka tagasi.
Joonisel 5.4 on kirjutatud FBD ja STL keeltes programm, kus on kasutatud hüppe käske. Operandile QB 6 omistatakse operandi IW 2 signaali väärtus kui operandi I 0.0 signaal on 1. Kui aga sisendi operandi I 0.0 signaal on 0, siis omistatakse operandile QB 6 väärtus 0.
Oluline on teada, et muutujate väärtused programmi osades jäävad sellisteks, nagu need määrati viimasel täitmisel enne ülehüppamist programmi vastavast osast. Ja seda isegi siis, kui muutuja väärtuse määramise tingimus on muutunud.
Ploki aktiveerimisfunktsioonid
Standardis IEC 61131 kasutatakse käsku CAL funktsiooniplokkide FB tingimusteta ja tingimuslikuks aktiveerimiseks. Selle käsuga ei saa programmis aktiveerida funktsioone FC.
Tabelites 5.4 ja 5.5 on esitatud plokkide aktiveerimisfunktsioonid STEP7 STL ja FBD keeltes. Käsuga CALL aktiveeritakse konkreetsed funktsioonid ja funktsiooniplokid ning seejuures nende siirdeparameetrite väärtused uuendatakse. Käsu CALL järel nimetatud funktsionaalse ploki siirdeparameetrid paiknevad allpool käsku (joonis 5.5 b). Käske UC ja CC kasutatakse plokkide aktiveerimiseks, millel puuduvad siirdeparameetrid.
Käsk (operatsioon) | Operand | Kommentaar |
---|---|---|
CALL | FB, FC, SFB, SFC | Ploki tingimusteta aktiveerimine |
UC | FB, FC | Ploki tingimusteta aktiveerimine, millel ei ole siirdeparameetreid |
CC | FB, FC | Ploki tingimuslik aktiveerimine, millel ei ole siirdeparameetreid |
OPN | DB, DI | Andmeploki (DB) avamine |
Käsk (operatsioon) | Operand | Kommentaar |
---|---|---|
FC, FSC | Ploki tingimusteta aktiveerimine, millel ei ole siirdeparameetreid | |
DB | DB avamine |
FBD keeles on plokkide aktiveerimiskäsuks ristkülik (joonis 5.5 a). Ristküliku sees on esitatud ploki nimi ja tema siirdeparameetrid. Siemensi PLC programmis aktiveeritakse FB koos neile vastavate DB-ga. Erinevalt FCst ei ole vaja FB siirdeparameetreid siduda operandidega. FB avamisel säilitavad tema siirdeparameetrid oma esialgsed väärtused.
Käsku OPN täidetakse tingimusteta. Avatud DB on aktiivne seni, kuni avatakse järgmine/teine DB.
FBd (joonis 5.5 a), FCd ja paljud standardfunktsioonid (joonis 5.2 b) omavad FBD ja LAD keeltes aktiveerimissisendit EN (Enable) ja aktiveerimisväljundit ENO (Enable Output). Need mõjutavad plokkide ja funktsioonide täitmise käiku. Plokk aktiveeritakse või standardfunktsioon teostatakse, kui aktiveerimissisendi EN signaal on 1 või sellega ei ole midagi seotud. Aktiveerimisväljundi ENO signaal muutetakse nulliks vea ilmnemisel ploki või standardfunktsiooni täitmisel isegi siis, kui aktiveerimisisendi EN signaal on 1. Kui aktiveerimissisendi EN signaal on 0, siis plokki ei aktiveerita või standardfunktsiooni ei täideta ning aktiveerimisväljundi ENO signaal jääb 0 [6].
Oluline on teada, et PLC töötamise ajal (CPU on TÖÖ režiimis) peavad kõik programmi aktiveeritavad ja töötavad plokid olema laetud PLCsse, vastasel korral programmi täitmine katkestatakse ja CPU läheb STOPP režiimi.
Ploki töö lõpetamise funktsioonid
Standard IEC 61131 kasutab FCdes või FBdes oleva programmi täitmise tingimuseta või tingimuslikuks katkestamiseks käsku RET. Naastes programmi täitmisel plokki, millest vahepeal toimus mingi muu ploki aktiveerimine, jätkub programmi täitmine poolelijäänud kohalt.
Tabelis 5.6 on esitatud plokkide töö lõpetamise funktsioonid STL ja FBD keeltes. LAD keeles asendatakse tabelis 5.6 esitatud ristkülik relee mähisega. Käskudega BEU, BEC ja RET katkestatakse plokis oleva programmi täitmine enneaegselt. BEC ja RET käskude puhul katkestatakse programmi täitmine juhul, kui enne vastavaid käske on RLO biti signaal 1. Käsu BEU puhul saab ploki töö enneaegset lõpetamist vältida hüppefunktsiooni kasutamisega (käsust hüpatakse üle).
Käsk (operatsioon) STL | Käsk (operatsioon) FBD | Kommentaar |
BE | Märgib ploki lõppu | |
BEC | Märgib ploki tingimusliku lõppu (RLO = 1) | |
BEU | Märgib ploki tingimuseta lõppu | |
Märgib ploki tingimusliku lõppu (RLO = 1) |
Joonisel 5.6 on esitatud PLC näidisprogramm STL keeles. Programm on kirjutatud erinevatesse plokkidesse. Selles programmis on kasutatud hüppe-, plokkide aktiveerimis- ja nende töö lõpetamisfunktsioone. Algul aktiveeritakse OB 1 kaudu plokk FB 1 ja selle sees olevat programmi täidetakse kogu aeg. Plokis FB 1 oleva programmi täitmine katkestatakse käsu BEC poolt enneaegselt kui mälubitt M 0.1 signaal on 1. Plokid FC 4 ja FB 4 aktiveeritakse, kui nende aktiveerimistingimused OB 1-s on täidetud. See tähendab, et FC 4-s oleva programmi täitmise alustamiseks (ploki aktiveerimiseks) peab sisendi I 0.0 signaal olema 1 ja FB 5 puhul peab sisendi I 0.1 signaal olema 0. Mõlemas plokis aktiveeritakse teisi plokke tingimusteta (FC 4-s on see FB 4 ja FB 5-s on see FC 1). FB 4-s oleva programmi täitmine katkestatakse käsu BEU poolt, kui hüppefunktsiooni JC M001 ei täideta. See tähendab, et hüppe JC tingimus ei ole täidetud (mälubiti M 12.1 signaal on 0) ja plokis FB 4 oleva programmi täitmine lõpeb enne ploki lõppu jõudmist (seda tähistab BE). Plokis FC 1 avatakse andmeplokk DB 10 mingite andmete salvestamiseks (ülekandefunktsioon).