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.
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:
Logaritmi alusel 10 saab arvutada järgmise valemi abil:
EXP funktsioon võimaldab arvutada reaalarvu eksponentsiaalväärtuse alusel e. Reaalarvu eksponentsiaalväärtuse mingil teisel alusel (ba) saab arvutada järgmise valemiga:
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 2π (π = 3.14). Kui nurga väärtus (radiaanides) on suurem kui 2π, siis tuleb sellest lahutada 2π seni, kuni nurga väärtus saab võrdseks või väiksemaks kui 2π.
Funktsiooni ASIN väljundväärtuse vahemik: | |
Funktsiooni ACOS väljundväärtuse vahemik: | |
Funktsiooni ATAN väljundväärtuse vahemik: |
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.
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.
Normeerimisfunktsioon NORM_X on vastand skaleerimisfunktsioonile SCALE_X. See võimaldab sisendväärtuse lineaarskaalaga kohandada.