Ohjelmoitava logiikka

Ohjelmoitava logiikka ("programmable logic controller") eli PLC tai logiikka on pieni tietokone, jota käytetään tosiaikaisten automaatioprosessien ohjauksessa, kuten esimerkiksi NC-koneen tai tehtaan kokoamislinjan ohjaamisessa.
Ohjelmoitavat logiikat otettiin käyttöön alun perin autoteollisuudessa, missä ohjelmistopäivitykset korvasivat ohjausjärjestelmien uudelleenjohdotukset. Yhdellä logiikalla voi helposti korvata satoja tai tuhansia aiemmin käytettyjä releitä ja ajastimia. Ohjelmoitavan logiikan toiminnallisuus on vähitellen kasvanut perinteisestä releitten korvaajasta ohjauskeskukseksi, joka hallitsee kehittyneen liikkeen ohjauksen, prosessin säädön, hajautetut hallintajärjestelmät ja tietokoneverkot.
Historia.
Yhdysvaltalainen Richard Morley kertoo keksineensä PLC:n uudenvuodenkrapulassa 1.1.1968, jolloin oli monen projektin takaraja. Hän huomasi keskeneräisissä projekteissa yhtäläisyyksiä ja ymmärsi, että niihin löytyy parempi ratkaisu. Oli kuitenkin vaikeaa vakuuttaa ihmiset siitä, että ohjelmoitava laatikko voi tehdä saman kuin 15 metriä laitekaappeja, releitä ja kaapeleita.
PLC:n isäksi kutsutaan paitsi Morleyta myös Odo Josef Strugeria, joka oli kehittämässä Allen-Bradley-PLC:tä 1958-1960. Hän myös kehitti PLC-lyhenteen.
Rakenne.
Ohjelmoitava logiikka on mikroprosessoripohjainen laite, jossa on joko modulaarisia tai integroituja tulo- ja lähtöportteja, joihin on kytketty kentällä olevia antureita (paine- ja lämpötilamittauksia jne.) ja toimilaitteita (moottorin käynnistimiä, solenoideja, merkkivaloja, venttiileitä jne.). Logiikka ohjaa toimilaitteita käyttäjän luoman paristovarmennettuun muistiin sijoitetun ohjelman ja antureitten antamien tietojen mukaisesti.
Tulot ja lähdöt.
Ohjelmoitavan logiikan ulkoisista liitännöistä käytetään yleisesti termejä tulo ja lähtö. Nimitykset juontuvat termistä I/O, input/output. Tuloporttien kautta logiikka saa tietoa järjestelmän tilasta, ja lähtöporttien kautta se voi ohjata järjestelmää. Digitaaliset signaalit käyttäytyvät kuin kytkimet, ne ilmaisevat vain päällä- tai poissa-tilan (1 tai 0, tosi tai epätosi). Esimerkiksi painikkeet, rajakytkimet ja valokennot ovat laitteita, joissa on digitaalinen lähtö. 
Digitaalisten signaalien ilmaisemiseksi käytetään yleensä jännitettä tai virtaa. Tällöin tietty suureen alue tulkitaan 0-tilaksi ja toinen 1-tilaksi. Ohjelmoitava logiikka voi käyttää esimerkiksi 24 V:n DC-jännitettä, jolloin 22 V ylittävät jännitteen arvot tulkitaan päällä olevaksi signaaliksi ja alle 2 V:n jännitteet poissa olevaksi signaaliksi. Alun perin ohjelmoitavissa logiikoissa oli vain digitaalisia liitäntöjä.
Analogiset signaalit käyttäytyvät kuten äänenvoimakkuuden säätimet: ne välittävät kaikki arvot toiminta-alueensa ääripäiden väliltä. Yleensä analogiset arvot tulkitaan ohjelmoitavassa logiikassa kokonaisluvuiksi. Tarkkuus riippuu käytetystä laitteistosta, ja suurempi tarkkuus vaatii enemmän muistia. Tyypillisiä analogisen signaalin avulla välitettäviä mittaustietoja ovat paine-, virtaus- ja lämpötilalähettimet. 
Mitattavan signaalin arvo voi olla mitä tahansa valitulla mitta-alueella. Analogiaviesti voi tyypistä riippuen olla esimerkiksi 4–20 mA, 0–20 mA, 0–10 V, +-10 V, +-5 V, ja on olemassa myös vastuskortteja, jolloin ei tarvita erillisiä lähettimiä, vaan kortille voidaan kytkeä suoraan esimerkiksi PT100-anturi. 4–20 mA ja 0-10 V ovat yleisesti käytettyjä viestialueita.
Kenttäväylät.
Kenttäväylätekniikka (esimerkiksi Profibus DP, Foundation Fieldbus tai Modbus) mahdollistaa I/O:n hajauttamisen kentälle ja älykkäiden toimilaitteiden ja antureiden liittämisen logiikkaan, jolloin siirrettävät tietomäärät voivat olla suurempia kuin perinteisellä johdotetulla tekniikalla ja siirrettävä tieto voi olla jo kenttälaitteen oman älyn jalostamaa.
Ohjelmointi.
Ohjelmat ohjelmoitaviin logiikoihin kirjoitetaan tietokoneella erityisesti tähän tarkoitukseen tarkoitetuilla ohjelmilla ja siirretään logiikkaan suoritettavaksi. Ohjelmat ovat usein valmistajakohtaisia. Ohjelma tallennetaan logiikassa normaalisti joko paristovarmeinteiseen RAM-muistiin tai haihtumattomaan muistiin.
Ensimmäinen ohjelmoitavien logiikoiden kohderyhmä oli sähköasentajat, joiden oli pystyttävä oppimaan ohjelmointi työn ohessa. Näissä logiikoissa ohjelmoinnissa käytettiin "tikapuulogiikkaa", joka muistuttaa relelogiikoiden kytkentäkaavioita. Nykyaikaisia logiikoita voi ohjelmoida monella eri tavalla, tikapuulogiikasta perinteisiin ohjelmointikieliin, kuten BASIC ja C. 
Viime vuosina ovat tulleet suosituiksi kansainvälisen standardin IEC 61131-3 mukaiset ohjelmointikielet. Standardi määrittää ohjelmoitaville logiikoille viisi ohjelmointikieltä: FBD ("Function Block Diagram"), LD ("Ladder Diagram"), ST ("Structured Text", Pascal-tyyppinen ohjelmointikieli), IL ("Instruction List", assemblyä muistuttava kieli) ja SFC ("Sequential Function Chart").
Ohjelmakirjastot.
Monet laitevalmistajat tarjoavat logiikoihinsa valmiita ohjelmakirjastoja, jolloin esimerkiksi PID-säätö voidaan toteuttaa valmiilla ohjelmalohkolla. Valmiiden lohkojen käyttö helpottaa ohjelmoijan työtä ja lisää luonnollisesti ohjelman toimintavarmuutta, koska käytetään hyvin testattuja ja toimiviksi todettuja ohjelmia.
Käyttöliittymä.
Ohjelmoitava logiikka suorittaa sille ohjelmassa määritellyt tehtävät juuri niin hyvin kuin ohjelman tekijä on osannut ottaa huomioon eri tilanteet ennakolta ohjelmaa laatiessaan. Poikkeavien tilanteiden ratkaisemiseen ja prosessimuutosten tekemiseen tarvitaan käyttöliittymä. 
Käyttöliittymä on yleensä operointipaneeli tai henkilökohtainen tietokone ja SCADA (valvomo-ohjelmisto), jonka kautta prosessia valvova operaattori saa tietoa senhetkisestä prosessin ajotilanteesta hälytysten, kaavioiden, positiokohtaisten näyttöjen ja raporttien kautta. Hälytykset ovat ennalta sovittujen rajojen ylittämisestä aiheutuvia ilmoituksia operaattorille poikkeavista tilanteista. 
Hälytykset esitetään lähes kaikissa käyttöliittymissä punaisella vilkkuvalolla. Käyttöliittymän monitorilla on yleensä hälytyksille varattu alue, johon hälytys tulostetaan riippumatta muusta näytön tilasta. Hälytyslaitteena voidaan käyttää myös erillistä summeria tai vilkkuvaa valoa. Hälytysosiosta voi olla myös suora linkki prosessikaavioon, jossa hälyttävä prosessinosa sijaitsee. Kaaviossa yleensä esitetään jokin prosessikokonaisuus, kuten esimerkiksi voimalaitoksen kattila. Yleensä kaaviot on jaettu niin, että ensin on yleiskaavio, josta päästään hiirellä napsauttamalla tai jollakin muulla yksinkertaisella toimenpiteellä yksityiskohtaisempiin kaavioihin. 
Positiokohtainen näyttö on jonkin yksittäisen laitteen esitys, esimerkiksi mittaus- tai moottoripiiri. Positiokohtaisesta näytöstä pystytään myös muuttamaan kyseisen laitteen tilaa, esimerkiksi moottori seis/käy. 
Raportit ovat prosessin tuottavuuden ja toimivuuden seurantaa varten. Niihin kerätään esimerkiksi kahdeksan tunnin tai vuorokauden ajalta tietoa siitä, kuinka paljon laitos on tuottanut haluttua tuotetta. Raportit sisältävät usein monimutkaisia keruu- ja laskentatoimintoja.