PLC programmis kasutatavad numbrisüsteemid
STEP 7 keskkonnas saab kasutada erinevaid arvusüsteeme nagu kümnend-, kahend-, , kuueteistkümnend-, märgiga kahend- ja reaalarve. Dokumentides kasutatakse arvusüsteemi määramiseks alaindeksit (nt 1354₁₀, 1111 0011₂, 0011BCD).
Kümnendsüsteem
Kümnendsüsteemi aluseks on 10 erinevat numbrit 1, 2, 3, 4, 5, 6, 7, 8, 9 ja 0, mis tähistavad arve alates 0 kuni 9. Kui objektide loendamise tulemusena saadakse arv üle 9, siis võetakse kümnendarvus kasutusele järgmine numbrikoht. Nimetatud asukoha tähtsus on 10 ning järgmise numbriasukoha kasutuselevõtt leiab aset arvu 99 järel [8]. Näiteks arvu 1354 on võimalik esitada nii: 1354₁₀ = 1 x 1000 + 3 x 100 + 5 x 10 + 4 x 1
See arvude kirjutamise (koostamise) meetod on väga lihtne ning sobib ka teiste kümnendsüsteemist erinevate numbrisüsteemide võrdlemiseks.
Kahendsüsteem
Elektronarvutid võimaldavad arvutada (teostada tehteid) ainult kahe numbriga. Number 1 esitab (tähistab) liikuva sisu arvväärtust nt "vool on sees" ja number 0 esitab liikumatu sisu arvväärtust nt "vool on väljas".
Kuna arvude esitamiseks kasutatakse kahte numbrit, siis ei arvutata numbri asukohta 10x alusel, vaid 2x alusel. Kahendarvu kõige parempoolsemas numbrikohas esitatakse kõige väiksema väärtusega sisu 2⁰ = 1. Kahendarvu järgmine numbrikoht esitab sisu, mille numbriline väärus on 2¹ = 2 jne. Kuna antud arvusüsteemis kasutatakse ainult kahte numbrit, siis kustutakse seda binaarseks e kahendsüsteemiks [8]. Tabelis 6.1 on esitatud kahendarv 1001 1101₂ ja selle numbrikohtadele vastavad kümnendarvud.
2⁷=128 | 2⁶=64 | 2⁵=32 | 2⁴=16 | 2³=8 | 2²=4 | 2¹=2 | 2⁰=1 |
1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
Vastav kümnendarv on: 1x2⁷ + 0x2⁶ + 0x2⁵ + 1x2⁴ + 1x2³ + 1x2² + 0x2¹ +1x2⁰ = 15710
Mingi suuruse sisulist väärtust saab näiteks esitada 8-bitise kahendarvuga (1111 1111₂). Sellele kahendarvule vastav (suurim) kümnendarv on 255.
PLC programmis kirjutatakse kahendarv 1001 1101₂ järgmiselt 2#10011101, kus 2# näitab, et number on esitatud kahendarvu süsteemis.
Kuueteistkümnendsüsteem
16³ = 1096 | 16² = 256 | 16¹ = 16 | 16⁰ = 1 |
C | 5 | 3 | B |
Kuna kahendarve on raske lugeda, siis töötati välja kuueteistkümnendsüsteem HEX. HEX-süsteemi number võtab enda alla korraga neli bitti, kus saab esitada numbreid 0 kuni 15, st loendada kuni kuueteistkümneni. Kuueteistkümnendarvude esitamiseks kasutatakse numbreid 0 kuni 9, millele järgnevad tähed A, B, C, D, E ja F, kus A = 10, B = 11, C = 12, D = 13, E = 14 ning F = 15. HEX-süsteemis arvutatakse üksikute numbrikohtade väärtus numbri 16x baasil [8].
Tabelis 6.2 on esitatud kuueteistkümnendarv C53BHEX. Selle väärtus kümnendarvu süsteemis on 12 x 16³ + 5 x 16² + 3 X 16¹ + 11 x 16⁰ = 14491₁₀
Rakenduse PLC-programmis kirjutatakse number C53BHEX kui W#16#C35B, kus W#16# lisatakse enne HEX arvu. Täht W tähendab, et number kasutab 16 bitti CPU mälust. Seda arvu võib kirjutada ka DW#16#C35B, kus DW näitab, et number kasutab 32 bitti CPU mälust.
Märgiga kahendarvud
-3 | negatiivne kümnendarv |
0000 0011₂ | -3 positiivne kahendarv |
1111 1100₂ | inverteeritud positiivne kahendarv |
1111 1101₂ | negatiivne kahendarv |
Töötamiseks negatiivsete arvudega otsustati kahendarvu vasakpoolsemat bitti kasutada vastava märgi esitamiseks: 0 vastab siis + ja 1 vastab - [8]. Seega ei kasutata vasakult kõige esimest bitti numbrite esitamiseks. Negatiivne kahendarv saadakse pärast tema positiivse väärtuse inverteerimist, millele liidetakse juurde 1. Arvu inverteerimise all mõeldakse seda, kus 1 asendatakse 0 ja 0 asendatakse 1. Seega kümnendarv -3 näeb välja kahendarvus nii 1111 1101₂.
Negatiivsed kahendarvud arvutatakse vajadusel ümber kümnendarvudeks, kasutades baasiks numbrit 0. Seega leitakse kümnendarv bittide järgi, mille väärtuseks on 0. Saadud positiivsele väärtusele liidetakse juurde 1. Negatiivne kahendarv 11112 esitatakse kümnendarvus nii:
((-1) x 1) x (0 x 2² + 0 x 2¹ +0 x 2⁰ + 1) = -1₁₀
Järelikult: 1000 0001₂ = -127₁₀ ja 0111 1111₂ = +127₁₀
Reaalarvud
Vaatamata sellele, et märgiga kahendarvude abil saab esitada positiivseid ja negatiivseid arve kasutades vaid numbreid 0 ja 1, eksisteerib ka vajadus reaalarvude järele. Selleks, et reaalarvu esitada kahendarvu abil, jaotatakse reaalarv algul kahte ossa, millest üks on korrutustegur ja teine on kümne aste. Need osad seotakse korrutustehtega. Seda meetodit nimetatakse numbrikohtade teaduslikuks esituseks [8].
Number 3,14 teisendatakse kujule 314 x 10⁻² , seetõttu kasutatakse reaalarvu esitamiseks kahte märgiga täisarvu.
PLC-programmis kirjutatakse näiteks reaalarv 31,4 kujul 31.4 või 3.14e+001, kus e+001 on kümne aste (10⁺¹).
Arvude esitus PLC mälus
Enamus arve, mis on täisarvulised kümnendarvud, salvestatakse PLC-mällu märgiga või märgita kahendarvu kujul. Joonisel 6.1 on andmete esitamiseks kasutatavate täisarvu- tüüpide INT ja DINT poolt PLC mälus hõivatav ala, kuhu salvestatakse muutuja arvväärtus kui märgiga kahendarv. Andmetüüp INT kasutab PLC mälus 16 bitti ja DINT 32 bitti. Kõige suurema väärtusega (vasakult esimene) bitti (INT puhul bitt 15 ja DINT puhul bitt 31) salvestatakse arvu märk PS. Kui selle biti väärtus on 1, siis PLC mällu salvestatud number on negatiivne. PLC-mälus oleva täisarvu leidmiseks (arvutamiseks) kasutatakse andmetüübi INT puhul biti kohti 0 kuni 14, DINT puhul on selleks bitid 0 kuni 30. Komaga kümnendarvu (reaalarvu) muutuja määramiseks kasutatakse andmetüüpi REAL. Andmetüüp REAL kasutab PLC mälust 32 bitti (joonis 6.1). See koosneb kolmest osast: arvu märk (mantissi märk) PS on kõige suurem bitt (bitt 31); bitid 23 kuni 30 (järgmised 8 bitti) moodustavad astme E väärtuse arvutuse 2E-127 jaoks; bitte 0 kuni 22 kasutatakse mantissi (komaga arv) M arvutamiseks [4]. Nendest PLC mälus olevatest kolmest koostisosast saab arvutada reaalarvu, kasutades järgmist valemit:
Reaalarv = (PS) x (1 + M) x (2E-127)
Kui PLC-mälus on reaalarv kujul 0100000001100000 0000000000000000₂, siis suurim bitt selles 0₂ näitab reaalarvuga esitatava sisu positiivsust (+1). Astme E väärtus esitatakse kahendarvuga 10000000₂, millele vastav kümnendarv on 128. Sisu väärtus mantiss M on esitatud kahendarvuna 11000000000000000000000₂, millele vastav kümnendarv on 0,75. Mantissi M väärtus arvutatakse bittide 22 ja 21 järgi, kuna nende bittide sisu on 1. Biti 22 väärtus on 0,5 (see arvutatakse 2⁻¹ abil) ja biti 21 väärtus on 0,25 (see arvutatakse 2⁻² abil).
Reaalarv = (+1) x (1 + 0,5 + 0,25) x (2¹²⁸⁻¹²⁷) = (1 + 0,75) x 2¹ = 1,75 x 2 = 3,5
Seega PLC mällu salvestatud reaalarvu väärtuseks on 3,5.