Programmeeritav loogikakontroller

**Programmeeritav loogikakontroller** ehk **PLC** (**p***rogrammable* **l***ogic* **c***ontroller* – *programmeeritav loogikakontroller*), kõnekeeles tihti ka lihtsalt **kontroller,** on spetsiaalne arvuti, mida kasutatakse masinate ja protsesside juhtimiseks varem koostatud programmi järgi. See kasutab programmeeritavat mälu instruktsioonide salvestamiseks. Kontroller võimaldab kasutada järgnevat: sisse-/väljalülituste kontrolli, taimerit, loendurit, võrdlemist, aritmeetika tehteid ja andmete töötlemist. Algul võeti kontrollerid kasutusele selleks, et asendada releelülitusi, kui peagi leiti, et kontroller on tunduvalt tõhusam, odavam ning annab rohkem võimalusi kui releede kasutamine.

## Eelised
* Suur töökindlus. Kontrollerid on väga töökindlad. Kuna kogu programm paikneb kontrolleri mälus, siis eelnevalt edukalt testitud programmi korral puudub võimalus, et see ei töötaks. Kirjutatud ja testitud programmi võib salvestada kuitahes paljudesse kontrolleritesse.
* Paindlikkus. Programmi luua või muuta on lihtne. Paljudel kontrolleritel on standardvarustusena kaasas programm, mida lõppkasutajal on lihtne muuta endale sobivaks. Vajadusel on seadet võimalik kaitsta turvaparooliga.
* Odavus. Kui võrrelda kontrolleri hinda releejuhtimise hinnaga, siis on kontrollerite kasutamine tunduvalt odavam. Eriti ilmekalt tuleb hinnavahe esile suurte, sadade sisendite ja väljunditega süsteemide puhul.
* Kommunikatsioonivõime. Kontroller võib suhelda teiste kontrolleritega või lauaarvutiga, et täita ülesandeid nagu andmete kogumine, seadmete jälgimine, protsessi parameetrite jälgimine jms.
* Kiirus. Loogikakontroller on võimeline juhtima reaalajas ka väga kiiresti toimuvaid protsesse. Loogikakontroller töötab reaalajas, mis tähendab, et kui toimub mingi sündmus ja informatsioon sellest jõuab kontrolleri sisendisse, siis vastavalt programmile saadab seade viivitamatult signaali ettenähtud väljundisse.
* Lihtne veaotsing. Loogikakontrolleritele on olemas diagnostikatarkvara, mis võimaldab kasutajal kergesti leida probleemsed kohad ńii tarkvaras kui ka riistvaras. Et leida ja parandada probleeme, saab kasutaja kuvada programmi kuvari ekraanile ning reaalajas jälgida, kuidas see töötab ja kus ilmneb probleeme.

## Liigitus

Tulenevalt töö iseloomust koosnevad kõik programmeeritavad kontrollerid järgmistest sõlmedest:
*keskplokk koos protsessori ja programmimäluga,
*toiteplokk,
*sisend-/väljundplokid ja
*programmeerimisseade.

Tänapäeval jagatakse kontrollerid viide klassi. Kriteeriumiks on seejuures sisendite ja väljundite arv.

### Kompaktkontrollerid
Kompaktkontrollerid on kõige väiksemad kontrollerid, mis sobivad hästi selliste protsesside juhtimiseks, kus kasutatakse kuni 32 andurit või täiturit. Kompaktkontrollerid erinevad teistest kontrolleritest selle poolest, et nii toiteplokk kui ka protsessor ja sisend-/väljundplokk paiknevad koos ühes ümbrises. Kompaktkontrollereid kasutatakse näiteks pumpade, ventilaatorite, tõkkepuude jms juhtimiseks.

#### Nanokontrollerid

Nanokontroller on väikeste mõõtmetega ning mahub vabalt näiteks püksitaskusse. Nanokontrollerite sisendite ja väljundite arv on kuni 16.

#### Mikrokontrollerid
Mikrokontroller on ühte mikrokiipi mahutatud miniarvuti, mille abil saab sooritada loogikatehteid, arvutusi, juhtida seadmeid, töödelda andmeid. Levinumad 8-bitised mikrokontrollerid on Microchip PIC ja Atmel AVR.

### Moodulkontrollerid
#### Väikekontrollerid

Väikekontrolleritel on kuni 960 sisendit/väljundit.

#### Keskastme kontrollerid
Võimaldavad juhitavas protsessis
kasutada kuni mõni tuhat andurit ja täiturit ning seega ka suuremat töökiirust; siia
kuuluvad ka väikese jõudlusega tööstusarvutid;

#### Kõrgastme kontrollerid
Võimaldavad juhitavas protsessis kasutada kuni mõnikümmend tuhat andurit ja täiturit ning on suure töökiirusega. Need kontrollerid sarnanevad oma ehituselt ja jõudluselt personaalarvutitega.

## Ehitus

Enamiku kontrollerite ehitus on lihtsam, kui tavalisel lauaarvutil. Üldiselt on kontroller koostatud pooljuhtelementidest, mis võimaldavad teha loogilisi otsuseid ja saata neid väljunditesse. Kontrollerid jagatakse kahte suurde klassi: Avatud arhitektuuriga kontrollerid ja suletud arhitektuuriga kontrollerid. Termin arhitektuur näitab kuidas on seostatav kontroller tarkvaraga ja teiste kontrolleritega.

Avatud arhitektuuriga loogikakontroller lubab seadet ühendada teiste tootjate programmide ja seadmetega. Avatud arhitektuuriga kontrollerid on koostatud standardsetest elementidest.

Suletud arhitektuuriga kontrollerites saab kasutada vaid tootja poolt ettenähtud programme ja neid saab ühendada vaid tootja poolt ette nähtud teiste kontrolleritega.

### Sisend-/väjundplokk

On kaks võimalust, kuidas sisend-/väljundplokk on liidetud kontrolleriga. Esimeseks võimaluseks on, et sisend-/väljundplokk on sisse ehitatud ning ta ei ole ülejäänud kontrollerist eraldatav. Sellised kontrollerid on küll odavamad, kuid samas puudub võimalus vahetada välja sisend-/väljundplokk. Tavaliselt leiab selline lahendus kasutamist väikestes loogikakontrollerites.

Teiseks võimaluseks on sisend-/väljundploki moodulsüsteem. Moodulsüsteemi puhul on sisend-/väljundplokk jagatud "sahtlitesse". Kontrolleriga on võimalik liita uusi sahtleid ning igasse sahtlisse saab kinnitada sisend- või väljundploki. See suurendab tunduvalt seadme paindlikkust. On võimalik valida saadaolevaid mooduleid ja liita neid kontrolleriga oma soovi kohaselt. Moodulsüsteemiga kontroller koosneb algselt riiulitega pistikust, toiteplokist, protsessorist (CPU), sisend-/väljundmoodulist ja kasutajaliidesest programmeerimiseks. Mooduleid on võimalik ühendada pistikutega.

Sisend-/väljundplokk koosneb sisendmoodulist ja väljundmoodulist. Sisendmoodulisse tuleb informatsioon läbi juhtme mitmesugustelt vajatavatelt lülititelt, teekonnalülititelt, anduritelt, selektoritelt ja ketaslülititelt. Väljunditeks, kuhu saadetakse informatsioon, on elektrimootorid, magnetkäivitid, ventiilid, indikaatortuled. Sisendid ja väljundid on reeglina galvaaniliselt lahti sidestatud.

### Toiteplokk

Toiteploki ülesandeks on anda ja jagada elektrivoolu kõigile kontrolleris olevatele üksustele. Mõnel juhul toidab toiteplokk vooluga ainult mingit osa kontrollerist. Ülejäänud kontrolleriosi toidetakse otse vooluvõrgust.

### Protsessor (CPU)

Protsessor on kontrolleri aju. Protsessor sisaldab tavaliselt mikroprotsessorit, mis töötleb sissetulevaid andmeid ja kontrollib suhtlemist moodulite vahel. Samuti vajab protsessor mälu, et salvestada mikroprotsessoris loogiliste tehete tulemusena töödeldud andmeid. Mälu on samuti vaja programmi salvestamiseks. Protsessori mälu liikideks on EPROM- ja muutmälu (RAM).

Protsessor on disainitud nii, et kasutaja saab sisestada soovitud skeemi ka releeskeemina. Protsessor loeb andmeid mitmesugustelt anduritelt, töötleb neid vastavalt mälus olevale programmile ning saadab signaalid vastavatesse väljunditesse. Protsessori tööks on vajalik alalisvool. Voolualaldi võib paikneda nii protsessori sees kui ka eraldi seadmena väljaspool protsessorit.

### Programmeerimisseade ehk terminal

Programmeerimisseade on vajalik, et sisestada soovitud programm protsessori mällu. Kõige populaarsemaks programmi sisestamisviisiks on releeskeem. Kõik suuremad kontrollerite tootjad võimaldavad programmi sisestada releeskeemina. Kasutatakse ka programmeerimist loogikaskeemina. Loogikaskeem on spetsiaalne keel lihtsustamaks kontrollerite programmeerimist. Loogikaskeem kujutab endast teatud sõnu ja graafilisi sümboleid mis näitavad kuidas töödelda sisenditelt tulevat informatsiooni ja millistesse väljunditesse saata informatsiooni. Võimalusi on veel teisigi: käsulist, kõrgkeel, loogilised tehted.

Kõige sagedasem programmeerimisseade on personaalarvuti. Kõigil juhtivatel loogikakontrollerite tootjatel on programmeerimistarkvara personaalarvutitele. Selline tarkvara võimaldab kasutajal luua, toimetada, salvestada programme ning otsida programmist vigu. Personaalarvuti on ühendatud kontrolleriga jada- või paralleelpordi kaabliga. Kui programmeerimisseadet ei kasutata, võib selle eemaldada. Programmeerimisseadme eemaldamine ei kahjusta mingit moodi kontrolleri mälus olevat programmi ega häiri kontrolleri tööd.

## Tööpõhimõte
Programmeeritava kontrolleri tööpõhimõte seisneb selles, et teatud ajahetkel saabub anduritelt signaal kontrolleri sisendplokki. Keskplokis töötav protsessor kontrollib teatud aja järel mällu salvestatud programmi järgi sisendite olekut sisendplokis ning saab vastavalt programmile otsustada, millise väljundi olekut väljundplokis muuta.

## Ajaloost

Programmeeritav loogikakontroller loodi Ameerika autotööstuse vajadustele vastu tulles. Enne loogikakontrollerite kasutusele tulekut kasutati juhtimiseks, protsesside modelleerimiseks ning isegi ohutuse tagamiseks vaid releesid, taimereid ja spetsiaalseid kontrollereid. See muutis aga tööstuses iga-aastase mudelite uuendamisega seotud tootmisprotsessi muutmise väga ajamahukaks ja kulukaks, sest releesüsteemide ümberehituseks oli vaja oskustega elektrikuid ja ressursse. 1968. aastal avaldas GM Hydramatic soovi ettepanekuteks riistvaraliselt realiseeritud releede asendamiseks elektroonikaga.

Võitnud ettepanek tuli Bedfordi partneritelt Massachusettsist. Esimene loogikakontroller, mida tähistati lihtsalt 084 – see oli Bedfordi partnerite 84 projekt. Bedfordi partnerid asutasid uue firma Modicon, mis hakkas tegelema uue toote arendamise, tootmise, müümise ja teenindamisega. Modicon tulenes sõnadest "MOdular DIgital CONtroller". Loogikakontrollerite isaks võib pidada Dick Morleyt. Modiconi tootenimi müüdi 1977. aastal Gould Electronicsile, hiljem omandas selle Saksa firma AEG ning seejärel selle praegune omanik Prantsuse firma Schneider Electric.

Üks esimesi 084 mudeleid on praegu välja pandud Massachusettsis Põhja-Andoveris asuvas Modiconi peakorteris. Selle kinkis neile GM pärast seadme mahakandmist, kui seade oli peaaegu 20 aastat katkematult töötanud.

Autotööstus on siiani üks suuremaid loogikakontrollerite kasutajaid.

## Programmeerimine

Loogikakontrollerite programmeerimisele kehtib standard IEC 61131, mida haldab ja arendab rahvusvaheline mittetulundusühing PLCopen.org http://ww.PLCopen.org.
Standardi IEC 61131 osaga 3. on defineeritud põhilised loogikakontrollerite programmeerimiskeelte tüübid. 
Osa keeli on graafika- ja osa tekstipõhised:

* redelskeem (*ladder diagram* (LD)) – graafiline;
* funktsionaal-plokkskeem (*functional block diagram* (FBD)) – graafiline;
* struktuurtekst (*structured text* (ST)) – tekstipõhine;
* käsulist (*instruction list* (IL)) – tekstipõhine;
* järjestikuline funktsioondiagramm (*sequential function chart* (SFC)) – graafiline programmeerimine voogdiagrammi kujul.

Kõik programmeeritavate loogikakontrollerite tootjad ei kasuta oma vahendites küll kõiki eespool loetletud võimalusi. Kuid vähemalt üks loetletud võimalustest on siiski olemas.

Loogiliste tehetega programmide koostamist on võimalik harjutada ja simuleerida Siemens LOGO! jaoks mõeldud programmiga. Programmi saab siit: LOGO Soft Comfort.

## Vaata ka
* Loogiline tehe
* Loogikaanalüsaator

## Välislingid
* TTÜ – Loogikakontrollerid ja nende programmeerimise alused
* TTÜ – Mikroprotsessortehnika