Programmeeritavad kontrollerid
Euroopa struktuurfondide logo
Siemens LOGO! viide Automatiseerimise viide Mehhatroonikaseadmete viide Pneumoautomaatika viide

Arenenud binaarloogika funktsioonid

Taimerid ehk viivituse teostajad

Nimi FBD ja LAD
Sisselülitusviivitusega taimer TON
Sisselülitusviivitusega taimer (aja akumulaator) TONR
Väljalülitusviivitusega taimer TOF
Impulsstaimer PT

Juhtimisülesannetes kasutatakse tihti erinevaid taimeri funktsioone. Programmis määrab taimeri sätted, nt viivituse aja ja taimeri aktiveerimise tingimuse, programmeerija. Tabelis 6.4 on loetletud STEP 7-s kasutatavad taimerid. Standard IEC 61131 määratleb taimeritele ainult 3 erinevat ajafunktsiooni: impulss (TP), viivitusega sisselülitamine (TON) ja viivitusega väljalülitamine (TOF).

Iga taimeri kohta on vaja ühte andmeplokki (DB), mis hoiab taimeriga seotud väärtuseid ja mille kaudu saab nendele väärtustele ka ligi. Ühte andmeplokki ei tohi kasutada mitme paralleelse viivituse teostamiseks, kuid sama andmeplokiga võib erinevatel aegadel kasutada erinevaid viivituse fuktsioone (TON, TOF jne);

STEP 7-s esinevad taimeritel järgmised sisendid ja väljundid:

  • IN – sisend taimeri aktiveerimiseks (ühebitine binaarsignaal startimiseks);
  • PT – sisend, taimerile ajaintervalli määramiseks (viivituseaja väärtus);
  • R – sisend taimeri viimiseks algseisu (sisendisse ühebitine binaarsignaal);
  • Q – väljund, mis näitab taimeri olekut (väljundisse binaarsignaal);
  • ET –väljund, bait näitab allesjäänud aja väärtust täisarvuna, ilma aja perioodita;

Taimerid töötavad määratud aja jooksul. Lihtsam viis ajaintervalli (viivitusaja) määramiseks on kirjutada see konstandina taimeri sisendisse PT. Ajaintervall kirjutatakse STEP 7 järgmiselt: T#aD_bH_cM_dS_eMS, kus: a – päevad, b - tunnid, c - minutid, d - sekundid ja e - millisekundid. Ajaintervalli taimerile võib ette anda ka muutujaga, mille deklareeritud andmetüüp on Time.

Sisselülitusviivitusega taimer (TON)

Kui taimeri sisendis IN tuvastatakse loogiline 1, siis hakkab taimer aega loendama kuni ET väärtus saavutab ettemääratud PT aja. Selle saavutamisel seatakse kõrgeks väljund Q. Kui IN signaal kaob enne, kui ET saavutab PT väärtuse (enne kui taimeri aeg saab täis), siis peatatakse aja lugemine ja taimer nullitakse.
Väljund Q jääb kõrgeks kuni IN sisendist loogiline 1 kaob.

Joonis 6.3a Joonis 6.3a

"IEC_Timer_0".TON(IN:="S1", PT:=T#4s, Q=>"H1");

Sisselülitusviivitusega taimer (aja akumulaator) (TONR)

Kui taimeri sisendis IN tuvastatakse signaali tõusev front (0 muutub 1), siis hakkab taimer aega loendama kuni ET väärtus saavutab ettemääratud PT aja. Selle saavutamisel seatakse kõrgeks väljund Q. Kui IN signaal kaob enne, kui ET saavutab PT väärtuse (enne kui taimeri aeg saab täis), siis peatatakse aja lugemine, kuid sisendsignaali taastumisel jätkatakse lugemist samast (ET) väärtusest, seega võib öelda, et antud taimer akumuleerib aja väärtusi, mis sellele IN kaudu antakse.
Väljund Q jääb kõrgeks kuni saabub taimeri nullimise käsk sisendi R kaudu. Sisendisse R tulnud positiivsest frondist nullitakse taimer täielikult.

Joonis 6.4 Joonis 6.4

Väljalülitusviivitusega taimer (TOF)

Kui taimeri sisendis IN tuvastatakse signaali tõusev front, siis aktiveeritakse kohe taimeri väljund Q. Taimer hakkab loendama ajaintervalliga määratud aega, kui sisendi IN signaal muutub 0. Loendamine kestab taimeris kuni etteantud viivitusaja (PT) lõpuni (kuni ET saavutab PT väärtuse). Väljund Q deaktiveeritakse (väljastatakse signaal 0), kui taimeri viivitusaeg on läbi saanud ja sisend IN on 0. Kui loendamise kestel tuleb IN sisendisse positiivse frontiga signaal (0 > 1), siis peatakse loendamine. Loendamine algab otsast peale, kui sisendi IN väärtus muudetakse 0-ks.

Joonis 6.5. Joonis 6.5.

Impulsstaimer (TP)

Kui taimeri sisendis IN tuvastatakse signaali tõusev front, hakkab taimer loendama ajaintervalliga (PT) määratud aega ja see kestab nii kaua kuni määratud aeg saab täis (ET väärtus kasvab võrdseks PT väärtusega). Väljund Q on aktiivne kuni taimer töötab ja impulsi etteantud aeg pole möödas. Kui sisendi S signaal muutub 0 enne, kui impulsiaeg on läbi, siis see taimeri tööd ei mõjuta. Joonisel 6.6 on kujutatud impulsstaimer LAD keeles ja selle signaalide olekudiagramm, kus PT on taimerile ette antud ajaintervall (impulsiaeg) ning ET on loetud aeg.

Joonis 6.6. Joonis 6.6.

Loendur

Impulsside loendamiseks (nt esemete loendamiseks tootmisliinis) ja asendi või kauguse hindamiseks kasutatakse tihti loendusfunktsioone. Standardis IEC 61131 on määratud 3 loendusfunktsiooni: üles (STU), alla (CTD) ja üles-alla loendur (STUD).

STEP 7-s on olemas ka oma loendusfunktsioonid: üles (CTU), alla (CTD) ja üles-alla (CTUD) loendur. Nagu taimeridki vajavad loendurid oma tööks andmeplokki (DB), mis genereeritakse loenduri sisestamisel automaatselt.

Loenduritel võivad olla järgmised sisendid ja väljundid:

  • CU – binaarsisend üles loendamiseks (loenduri väärtuse suurendamiseks)
  • CD – binaarsisend alla loendamiseks (loenduri väärtuse vähendamiseks)
  • LOAD – binaarsisend seadistamiseks (loendurisse sisestatakse etteantud algväärtus)
  • R – binaarsisend loenduri nullimiseks (loenduri väärtus muudetakse 0)
  • Q – binaarväljund, näitab loenduri olekut (Bool)
  • PV – loenduri etteantud algväärtus täisarvuna
  • CV – loendustulemi väljund täisarvuna

Üles loendur (CTU)

Joonis 6.7.

Loenduri esmakäivitusel on selle loendi väärtus (CV) null. Kujutatud loenduri väärtus (CV) suureneb ühe võrra (+1), kui loenduri sisendi CU signaalis tuvastatakse tõusev front. Loenduri lõpuväärtust ehk väärtust, mille saavutades annab loendi väljundisse Q loogilise ühe, saab määrata sisendis PV. Kui CV on saavutanud PV-ga sama või suurema väärtuse, siis annab väljund Q välja loogilise 1. Sisendi R signaali muutusel 0-st → 1-ks nullitakse loenduri väärtus.

Alla loendur (CTD)

Joonis 6.8.

Loenduri esmakäivitusel on selle loendi väärtus (CV) null. Enamasti on alla lugeva loenduri puhul kasulik eelnevalt sellele eelmääratud väärtus PT sisendist loendi väärtusesse (ET) laadida, et oleks number, millest alla lugema hakata. Seda saab teha, kui LOAD sisendisse tuleb positiivse frondiga signaal.
Kui sisendisse CD tuleb positiivse frondiga signaal, siis vähendatakse loenduri väärtust ühe võrra (-1) (CV). Kui loenduri väärtus langeb nullini või alla nulli, siis muutub väljund Q aktiivseks. Et taastada loenduri algset määratud väärtust tuleb LOAD sisendisse anda positiivse frondiga signaal, mis peale laetakse loenduri väärtuseks (CV) määratud väärtus (PV).

Üles-alla loendur(CTUD)

Joonis 6.9.

Üles-alla loendur on kombinatsioon kahest eelnevast loendurist. Algolekus on loendur nullis. Positiivse frondiga signaal sisendisse CU suurendab loenduri väärtust ühe võrra. Positiivse frondiga signaal sisendisse CD aga vähendab loenduri väärtust ühe võrra.
Signaal sisendisse R viib loenduri nulli ning signaal sisendisse LOAD laeb loendurisse PV sisendisse antud väärtuse.
Kui loenduri hetkeväärtus (CV) on võrdne või suurem PV väärtusega, siis muutub väljund QU aktiivseks. Kui loenduri hetkeväärtus on võrdne või väiksem, kui null, siis aktiveerub QD. Väljundite väärtused muutuvad loogiliseks 0-ks niipea, kui nende rakendusmistingumused enam täidetud ei ole.

Komparaator

Komparaatoritega (e. võrdlusplokkidega) võrreldakse kahes sisendis olevate samatüübiliste andmete (operandide) väärtusi. Võrdlustulemus väljastatakse binaarväljundi kaudu [6]. Selle väljundi signaal on 1, kui võrdlus on tõene ja 0, kui see on väär. Joonisel 6.10 on esitatud standardi IEC 61131 kohased võrdlused.

Joonis 6.10.

Komperaator on funktsioon mis võrdleb selle sisenditesse tulevate operandide väärtusi. Võrdluse tulemus avaldub kahendväärtusena kas 1 ( kõrge ) või 0 ( madal ) (joonis 6.11). Kui võrdlus on tõene, siis on väljundi väärtus Q 1. Oluline on teada, et võrdluses saab kasutada ainult sama tüüpi operande. Komparaatoireid saab kasutada vaid järgnevate andmetüüpidega operandide võrdlemiseks: SINT, USINT, INT, UINT, DINT, UDINT, REAL*, TIME*, DATE*, CHAR*.

* Tärniga märgitud andmetüüpe pole võimalik kasutada IN_RANGE ja OUT_RANGE funktsioonide puhul.

Andmetüüpe BOOL, BYTE, WORD ja DWORD ei ole võimalik võrrelda antud funktsioonidega.

Joonis 6.12.

IN_RANGE ja OUT_RANGE

IN_RANGE operatsiooni saab kasutada kui on vaja teada, kas väärtus on etteantud piirides. Piire saab kindlaks määrata MIN ja MAX sisendite kaudu. Kui MIN ≤ VAL ≤ MAX, siis on väljund Q kõrge, vastasel juhul on Q madal.

OUT_RANGE operatsiooni saab kasutada kui on vaja kontrollida kas VAL on väljaspool etteantud piire. Väljund Q on kõrge kui MIN > VAL ja VAL > MAX vastasel juhul on väljund Q madal.

Nihkefunktsioonid

Nihke- ja ringnihkefunktsioone kasutatakse mingi muutuja bitimustri nihutamiseks vasakule või paremale kindla arvu positsioonide võrra. Nihutamise käigus muutuja bitimustris vabanevad positsioonid täidetakse 0-ga. Ringnihkel muutuja bitimustris vabanevad positsioonid täidetakse mälupiirkonnast väljanihutatud bittide väärtustega.

Nimi Kommentaar
SHL Bitimuster nihutatakse vasakule
SHR Bitimuster nihutatakse paremale
ROL Bitimuster ringnihutatakse vasakule
ROR Bitimuster ringnihutatakse paremale

Standard IEC 61131 pakub nelja nihkefunktsiooni: SHL (nihutamine vasakule), SHR (nihutamine paremale), ROL (ringnihutamine vasakule) ja ROR (ringnihutamine paremale).

STEP 7 kasutab erinevate andmetüüpide jaoks standardis IEC 61131 defineeritud nihkefunktsioone (tabel 6.5). Funktsioonide teostamiseks tuleb ette anda sisendoperandi bitimustris nihutatavate bittide arv (operand N) (vt joonis 6.16). Sõna ja täisarv tüüpi muutujate puhul võib see number olla 0 kuni 15 ning topeltsõna ja -täisarvu tüüpi muutujate puhul 0 kuni 31.

Sõna (WORD) või topeltsõna (DWORD) operandide sisu nihutatakse paremale või vasakule bitthaaval. Nihutamisel vabaks jäänud biti kohad täidetakse 0-ga (joonis 6.13).

Joonis 6.13.

Täisarv (INT) või topelttäisarv (DINT) operandid nihutatakse bitthaaval ainult paremale. Nihutamisel vabaksjäänud bitikohad täidetakse arvu märgi biti (täisarvu puhul on see bitt 15 ja topelttäisarvul on see 31) väärtusega. Kui arvu märgi biti signaal on 0 (operandi väärtus on positiivne), siis vabanenud kohad täidetakse 0. Kui aga arvu märgi biti signaal on 1 (operandi väärtus on negatiivne), siis vabanenud kohad täidetakse 1. Joonisel 6.14 esitatud muutuja MD 48 väärtus on negatiivne. Seetõttu on topelttäisarvu muutuja MD 48 biti 31 väärtuseks 1. Seega nihutamisel vabanenud bittide kohad täidetakse signaaliga 1.

Joonis 6.14.
Joonis 6.15. Joonis 6.15.

Ringnihutamisel nihutatakse kogu operandi sisu bitthaaval paremale või vasakule ning tühjaks jäänud kohad täidetakse nihutamisel üle mälupiirkonna nihutatud bittide väärtustega (joonis 6.15). Ringnihutamist saab kasutada ainult Byte, Word ja DWord andmetüüpidega operandidega.

Joonis 6.16. Joonis 6.16.
Creative Commons Licence
"Programmeeritavad kontrollerid" is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License .