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

Matemaatilised ja teisendusfunktsioonid

Matemaatiliste funktsioonide teostamisel kasutatakse ainult numbrilisi muutujaid ja/või arve (konstant). Arvu tüübiks võib olla kas täis- või reaalarv. Kahendarvu kujul esitatud täisarvu ees võib olla märk (+ või -) või mitte. Täisarvulised muutujaid deklareeritakse andmetüübiga Int, UInt, SInt, USint, DInt või UDInt. Reaalarvud on komakohaga arvud, millel on ees arvu märk. Reaalarvud deklareeritakse andmetüübiga Real ja LReal. Tabelis 7.1 on toodud numbrilised andmetüübid, nende määramispiirkond, bittide arv (kui suurt ala vajavad mälus) ja konstandi näide (nii nagu neid kirjutatakse kasutaja programmis).

Andmetüüp Piirkond Mäluala Konstandis kirjutamise näide Selgitus
SInt -128 .. 127 8 = 1 bait 63 Märgiga väike täisarv (Signed Small Integer)
USInt 0 .. 255 8 = 1 bait 63 Märgita väike täisarv (Unsigned Small Integer)
Int -32768 .. 32767 16 = 1 sõna 6 Märgiga täisarv (Signed Integer)
UInt 0 .. 65535 16 = 1 sõna 4532 Märgita täisarv (Unsigned Integer)
DInt -2147483648 .. 2147483647 32 = 2 sõna -2546854 Märgiga topelt täisarv (Signed Double Integer)
UDInt 0 .. 4294967295 32 = 2 sõna 265746 Märgita topelt täisarv (Unsigned Double Integer)
Real +/-3.402823e+38 ..
+/-1.175495e-38
32 = 2 sõna 1.234567e+13 IEEE koma-kohaga arv
LReal +/-1.7976931348623158e+308 ..
+/-2.2250738585072014e-308
64 = 4 sõna 1.0e-5 IEEE koma-kohaga arv

Täpsemalt võib andmetüüpide kohta lugeda PLC Programmeerimine alt.

Aritmeetilised tehted

Funktsiooni nimi Märk Tehe
ADD + Liitmine
SUB Lahutamine
MUL × Korrutamine
DIV ÷ Jagamine
MOD Jäägiga jagamine

Standard IEC 61131 pakub aritmeetikatehete teostamiseks järgmisi aritmeetilisi funktsioone: liitmine (ADD), lahutamine (SUB), korrutamine (MUL), jagamine (DIV), jäägiga jagamine (MOD) ja astendamine (EXPT).

STEP 7 võimaldab teostada nelja tavalist aritmeetikatehet. Peale tavalise jagamise funktsiooni pakutakse ka jäägiga jagamist (MOD), kus tulemuseks on jagamise jääk (murdosa). Aritmeetikatehteid saab teha ainult sama tüüpi operandidega, seega tehte sisend- ja väljundoperandid peavad olema sama tüüpi.

Joonisel 7.1 on näide STEP 7 aritmeetikafunktsioonide kasutamisest FBD keeles. Antud näide vastab järgnevale tehtele: c=(10+5)×100/(26-2). Kuigi tehte vastus peaks olema 62,5, siis kuna tehe toimub täisarvudega, jäävad ka vastused täisarvudeks ja vastuseks on 62. Kui see on ebasoovitav tuleks kasutada andmetüüpi Real.

Joonis 7.1.

Kuigi matemaatiliste arvutuste tegemine LAD ja FBD keeles on võimalik, siis oluliselt lihtsam ja ülevaatlikum on kasutada selleks SCL keelt:

c:=(10+5)*100/(26-2);

Arvfunktsioonid

Arvfunktsioonide teostamiseks on vaja ainult üht sisendoperandi. Tulemuseks on arvfunktsiooni väärtus [6].

IEC 61131 näeb ette, et arvfunktsiooni sisend- ja väljundoperandid peavad olema sama tüüpi. Enamuse arvfunktsioonide juures saab kasutada ainult REAL-tüüpi muutujaid. STEP 7 sisaldab enamuse standardis IEC 61131 defineeritud arvfunktsioone – puudub ainult logaritmfunktsioon.

Väärtuse suurendamine ja vähendamine (INC, DEC)

INC suurendab IN/OUT parameetriga seotud muutuja väärtust ühe võrra. Üks ja sama parameeter toimib sellel nii sisendi kui väljundina. Arvestada tasub sellega, et antud funktsioonil ei ole positiivse ega negatiivse frondi tuvastust, seega see suurendab antud muutujat iga programmitsükli ajal, mil' selle EN sisend on kõrge. Seda saab kasutada kõikide täisarvutüüpidega.

DEC vähendab IN/OUT parameetriga seotud muutuja väärtust ühe võrra.

Suurima ja väikseima tagastamine (MIN, MAX)

MIN funktsioon valib kahest sisendist (IN1 ja IN2) väikseima väärtuse ning väljastab selle väljundi OUT kaudu. Kasutada saab kõiki täisarvulisi ja reaalarvulisi andmetüüpe. Sisendis ja väljundis olevad andmetüübid peavad kattuma. Vea korral EN sisendist ENO väljundisse signaali edasi ei kandu.

MAX funktsioon valib kahest sisendist (IN1 ja IN2) suurima väärtuse ning väljastab selle väljundi OUT kaudu.

Väärtuse piiramine (LIMIT)

LIMIT funktsioon võimaldab sisendi IN väärtust piirata sisendite MIN ja MAX kaudu määratud piiridega. Kui MIN < IN < MAX, siis kantakse sisendi väärtus üle väljundisse OUT. Kui sisend IN nendele tingimustele ei vasta, siis kantakse väljundisse kas MIN või MAX väärtus olenevalt sellest, kummale poole sisend piiri ületab.
Kasutada saab kõiki täisarvulisi ja reaalarvulisi andmetüüpe. Sisendis ja väljundis olevad andmetüübid peavad kattuma. Vea korral EN sisendist ENO väljundisse signaali edasi ei kandu.

Murdosa tagastamine (FRACT)

FRACT funktsioon tagastab sisendisse antud reaalarvu jättes ära eespool koma olevad numbrid ja asendades need nulliga. Näiteks kui sisendisse IN tuleb väärtus 123,4567, siis väljundist OUT tagastatakse väärtus 0.4567.

Absoluutväärtuse leidmine (ABS)

ABS funktsiooni teostamise tulemusena muudetakse sisendisse saadud märgiga (üks kõik kas + või -) täis- või reaalarv positiivseks täis- või reaalarvuks. See tähendab, et kasutada saab andmetüüpe SInt, Int, DInt, ja Real.

Ruut ja ruutjuur (SQR, SQRT)

SQR arvutab reaalarvu ruutväärtuse.

SQRT arvutab reaalarvust ruutjuure. Funktsiooni SQRT väljundväärtus on positiivne (vastav tehe teostatakse), kui sisendoperandi väärtus on suurem või võrdne nulliga.

Mõlemaid saab kasutada ainult Real ja LReal tüüpi muutujatega.

Naturaallogaritm ja eksponentfunktsioon (LN, EXP)

LN funktsiooni teostamisel arvutatakse naturaallogaritm (logaritm alusel e = 2,718282) reaalarvust (IN). Logaritmi väärtuse saab mingil teisel alusel (Logba) arvutada, kasutades seejuures naturaallogaritme, järgmise valemi abil:

Valem

Logaritmi alusel 10 saab arvutada järgmise valemi abil:

Valem

EXP funktsioon võimaldab arvutada reaalarvu eksponentsiaalväärtuse alusel e. Reaalarvu eksponentsiaalväärtuse mingil teisel alusel (ba) saab arvutada järgmise valemiga:

Valem

EXP on vastandiks naturaallogaritmifunktsioonile LN.

Trigonomeetrilised funktsioonid

Nimi Kirjeldus
SIN siinus
COS koosinus
TAN tangens
ASIN arkussiinus
ACOS arkuskoosinus
ATAN arkustangens

Tabelis 7.3 on esitatud STEP 7 arvfunktsioonid. Antud funktsioonid töötavad ainult reaalarvudega (sisendisse IN antakse ja väljundist OUT saadakse REAL-tüüpi väärtused). Arvfunktsioonide SIN, COS või TAN abil arvutatakse mingi nurga siinus, koosinus või tangens. Arvutamisel antakse nurk ette radiaanides. Nurga väärtus saab olla 0 kuni (π = 3.14). Kui nurga väärtus (radiaanides) on suurem kui , siis tuleb sellest lahutada seni, kuni nurga väärtus saab võrdseks või väiksemaks kui .

Funktsioonide ASIN (arkussiinuse), ACOS (arkuskoosinuse) või ATAN (arkustangensi) sisendisse (IN) antud reaalarvust saab arvutuse tulemusena nurga väärtuse radiaanides. Funktsioonide ASIN ja ACOS puhul peab sisendoperandi IN väärtus olema suurem või võrdne -1 ja väiksem või võrdne +1. Joonisel 7.2 on esitatud funktsioonide ASIN, ACOS ja ATAN väljundväärtuste piirkond radiaanides.

Teisendusfunktsioonid

Teisendusfunktsioone kasutatakse üht tüüpi andmete teisenduseks teist tüüpi andmeteks.

Joonis 7.3.

Kõige otsesema andmetüüpide teisendamisega tegeleb funktsioon CONV, mis võimaldab enamus andmetüüpe teisendada mistahes muuks andmetüübiks. See ei pruugi küll kadudeta alati võimalik olla. Vigade korral väljundit ENO kõrgeks ei lülitata. Andmetüüpe saab valida CONV ploki andmetüüpide rippmenüüst.

Reaalarvu teisendamisel täisarvuliseks andmetüübiks ümardatakse reaalarv lähimaks täisarvuks. Märgiga andmetüübi teisendamisel märgita andmetüübiks on 0-st väiksema numbri sisendisse andes väljundis endiselt 0.

Ümardamine täisarvuks (ROUND, CEIL, FLOOR, TRUNC)

Kõik ümardusfunktsioonid vajavad sisendoperandina 32 bitist reaalarvu (REAL) ning väljundoperand võib olla reaal- (REAL) või mistahes täisarvulise andmetüübiga.

Ümardamist lähima täisarvuni võimaldab ROUND funktsioon. Olles kahevahel ümardatakse pigem paarisarvu suunas.

Ümardamist täisarvuks üles poole võimaldab CEIL funktsioon. Nt 64,3 ümardataks 65-ks, aga -64,3 ümardataks -64-ks.

Ümardamist täisarvuks alla poole võimaldab FLOOR funktsioon. Nt 12,653 ümardataks 12-ks, aga -12,653 ümardataks -13

Ümardamist täisarvuks arvestamata murdosa võimaldab TRUNC funktsioon. Nt 12,653 ümardataks 12-ks ja -12,653 ümardataks -12

Skaleerimine ja normeerimine (SCALE_X, NORM_X)

Skaleerimisfunktsiooni SCALE_X saab kasutada sisendväärtuse skaleerimiseks mingisse teatud vahemikku, mida annab määrata MIN ja MAX parameetritega. MIN parameeter vastab sisendväärtusele 0.0 ja MAX parameeter vastab sisendväärtusele 1.0. See ei tähenda, et sisendväärtus peaks kindlasti 0..1 vahemikus olema vaid määrab kahe skaala omavahelise suhte. Sisendväärtuse (VALUE) operand peab olema Real andmetüübiga. Väljundväärtuse (OUT) operand võib olla nii reaal- kui täisarv.

Joonis 7.4
Joonis 7.5

Normeerimisfunktsioon NORM_X on vastand skaleerimisfunktsioonile SCALE_X. See võimaldab sisendväärtuse lineaarskaalaga kohandada.

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