Mehhatroonikaseadmed
Euroopa struktuurfondide logo

PLC programmeerimine

Standard IEC 61131-3

Modernsed programmeerimistööriistad peavad vastama teatud nõudmistele, et nendega saaks luua odavaid ja piisava funktsionaalsusega tehnilisi rakendusi. Arendustöö efektiivsuse tõstmiseks erineva otstarbega automatiseeritud seadmete loomisel kasutatakse tihti erinevaid programmeerimiskeeli. Rakenduse programmide loomiseks ja kergeks muutmiseks on vajalikud sellised võimalused nagu rakendamiseelne (Offline) programmi testimine ja simuleerimine, programmi muutmine PLCs tehnilise rakenduse töö ajal (Online) ning PLCs oleva tegeliku programmi dokumenteerimine. PLCs olevad programmilõigud peavad pärast dokumenteerimist olema korduskasutatavad. Arendusel tuleks kasutada avatud (standardse) liidesega programmeerimissüsteemi. Rahvusvahelise standardi IEC 61131 kasutuselevõtmisega astuti suur samm edasi nende nõudmiste täitmisel. Selle standardi eesmärgiks on vähendada väljaõppekulusid, samuti suurte komplekssete programmisüsteemide loomise ja rakendamise kulusid.

Kuna see standard on väga detailirohke, siis ei rakenda eri firmad oma programmeerimissüsteemides kõiki selles standardis kirjeldatud võimalusi. Standard pakub välja võimaluse kirjeldada funktsionaalseid nõudmisi tabeli abil. Tootja peaks tabelis ära märkima need funktsioonid, mida nende tarkvaratööriist täidab ja missuguses ulatuses. Paljud PLC tootjad toetavad standardit, kuid nende tööriistade vastavus standardi nõudmistele kõigub laias ulatuses. Eri firmade programmeerimistööriistade täieliku vastavuse saavutamine ei ole kerge ülesanne.

Standardi kolmandas osas (IEC 61131-3) kirjeldatakse PLC programmeerimiskeeli. Tekst ühtlustab laialdaselt kasutatud programmeerimiskeeled üheks harmoniseeritud versiooniks pidades silmas ka tuleviku võimalusi [11].

Programmi ülesehituse plokk

Standardis IEC 61131-3 nimetatakse funktsionaalseid plokke, millest moodustatakse kõik programmid ja projektid, nn programmi ülesehituse üksusteks (POU-deks). Tavapärases programmeerimiskeskkonnas vastavad nendele programmiplokid, juhtimisplokid, järjestusplokid ja funktsiooniplokid [12]. Standardi üks oluline eesmärk on piirata eri plokitüüpide mitmekesisust ja seega lihtsustada nende kasutamist. Standard määratleb järgmised POU tüübid: funktsioon (FUN), funktsiooniplokk (FB) ja programm (PROG).

Funktsioon on POU, mis võib omada määratud väärtustega parameetreid, kuid mitte staatilisi muutujaid, st funktsiooni muutujate väärtusi ei peeta meeles (mälus) – samade sisendväärtuste puhul annab funktsioon alati ühesugused väljundväärtused. Sellised on näiteks analüütilised funktsioonid.

Funktsiooniplokk on POU, mis omab staatilisi muutujaid ja tema väljundite väärtus sõltub sisendmuutujate väärtustest, samuti ka plokisisestest muutujatest ja nende väärtustest. Plokisiseste muutujate väärtused peetakse funktsiooniploki töö vaheajal meeles (hoitakse mälus). PLC programm koosneb peamiselt just funktsiooniplokkidest.

Programm on loogiliselt kõrgematasemeline POU, mida tavalises PLCs kutsutakse peaprogrammiks. Multitegumtöö võimekusega PLCs saab üheaegselt täita mitut peaprogrammi ehk teisiti öeldes mitut ülesannet. Kõik kontrolleri füüsiliste aadressidega seotud muutujad (milleks on näiteks PLC sisendid, väljundid ja mälumuutujad) tuleb siin deklareerida. Muudes aspektides käitub see POU nagu FB.

Firma Siemens lõi programmeerimistööriista STEP 7 oma kontrolleriseeriate S7-300 ja S7-400 programmeerimiseks [9]. Programmeerimiskeskkonnas STEP 7 on POUd natuke teistmoodi koostatud. Funktsioon (FC) on samasugune kui standardis IEC 61131-3. Funktsioonplokiga seotakse aga eraldi (piirkonnas) salvestatud andmete plokk – (DB), mis standardis IEC61131-3 on defineeritud kui funktsiooniploki sisene osa. Programmi nime kasutamise asemel kasutab STEP 7 niinimetatud juhtplokke tähisega OB, mida aktiveeritakse tsükliliselt PLC operatsioonisüsteemi poolt ja mis moodustab liidese kasutaja programmi ja PLC operatsioonisüsteemi vahel.

OB on kontrolleri struktuuris (ülesehituses) eriline vahend programmi töötlemisnõuete täitmiseks. OB sees oleva programmi kirjutab programmeerija, kuid see aktiveeritakse (hakatakse täitma) PLC operatsioonisüsteemi poolt teatud tingimuste korral. Nt iga CPU käivitamisel (lülitades TÖÖ režiimi) täidetakse OB 100 või OB 101 kirjutatud programmi. Seega reageerib kontrolleri operatsioonisüsteem kindlale sündmusele aktiveerides sellele vastava OB. Tabelis 3.1 on ära toodud erinevad OB tüübid vastavalt nende funktsionaalsusele ja aktiveerimise tingimustele.

OB tüüp OB number Aktiveerimise sündmus ja rakenduse kirjeldus
Tavaliselt tsükliliselt täidetav 1 Aktiveeritakse peale iga CPU käivitamist ja selle järel tsükliliselt, et töödelda peamist kasutaja programmi.
Kellaaeg-päev katkestus 10 - 17 Aktiveeritakse kasutaja poolt määratud ajal ja päeval, et töödelda kasutaja programmi mingil kindlal päeval ja kellaajal.
Ajaline viivitus
katkestus
20 - 23 Programmi osade täitmine aktiveeritakse kasutaja poolt määratud ajavahemiku möödumisel.
Tsükliline katkestus 30 – 38 Aktiveeritakse tsükliliselt määratud ajaintervallide (nt 500 ms) järel, et täita programmi (nt PID kontuur) kindla intervalli järel.
Riistvaraline katkestus 40 – 47 Aktiveeritakse siis kui esineb protsessiseadme või mooduli algatatud katkestus, et täita kasutaja ettekirjutatud hooldusrutiini.
Paralleelarvutuse katkestus 60 Aktiveeritakse katkestuse esinemisel, mille tekitab üks CPU mitme CPU-ga süsteemis, et täita kasutaja poolt kirjutatud sünkroonseid tegevusi.
Varunduse nõudest tingitud katkestus 70 - 73 Aktiveeritakse S7-400 H süsteemis varunduse vea ilmnemisel (üks PLC omab mitut CPUd), et täita kasutaja kirjutatud reaktsiooni.
Asünkroonse vea katkestus 80 - 87 Aktiveeritakse PLC süsteemiga seotud vea ilmnemisel (nt toitemooduli rike, mooduli tõrge), et täita kasutaja poolt määratud hooldusrutiini.
Vähetähtsa programmi töötlemine 90 Aktiveeritakse, et täita mittekriitilist programmi, kui PLC antud hetke tsükliaeg on väiksem kui kasutaja poolt määratud väikseim tsükliaeg.
CPU käivitused 100 - 101 Aktiveeritakse iga kord CPU käivitamisel enne OB 1, et täita initsialiseerimise programmi üks kord igal CPU käivitamisel.
Sünkroonne vea katkestus 121 - 122 Aktiveeritakse programmi tsüklilise täitmisega seotud vigade ilmnemisel, et täita kasutaja poolt kirjutatud hooldusrutiine.

STEP 7 funktsiooniplokid (FB) on mõeldud algoritmide koostamiseks. Funktsiooniplokis loodud või kasutatud andmed peavad olema kättesaadavad selle ploki igakordsel aktiveerimisel. Sellise nõude täitmiseks tuleb kasutada andmete plokke (DB) koos funktsiooniplokkidega. Ühe FBga võib vajadusel siduda mitu DBd.

Peale programmeerija poolt programmis kasutamiseks mõeldud plokkide (OB, FB, FC ja DB) on STEP 7-s veel kolme eritüüpi süsteemiplokke (SFB, SFC ja SDB), mis on integreeritud PLC operatsioonisüsteemi. Kasutaja saab neid kasutada (aktiveerida) oma programmis. Need süsteemiplokid võimaldavad lahendada paljusid tavalisi ülesandeid ja funktsioone ning vähendavad seetõttu oluliselt programmi arendamise aega. Süsteemiplokkide sisu ei saa muuta ja vaadata (need on vastavate tegevuste eest kaitstud).

Kuna FC saab defineerida ainult ajutisi muutjaid (FC järgmise aktiveerimise ajaks on nende muutujate väärtused mälus kustutatud), siis ei seota DB STEP 7 FCga. FC (nagu FB) on võimeline lugema ja kirjutama andmeid globaalses DBs. STEP 7 võimaldab aktiveerida FBdes ja FCdes olevaid alamprogramme OB, FC ja FB plokkide abil (joonis 3.1).

Joonis 3.1.

Iga STEP 7-s kasutatav plokk koosneb segmentidest (Network). Blokis võib olla kuni 999 segmenti ja ühes segmendis saab olla kuni 2000 korraldust (STL keeles käsurida).

S7-300 ja S7-400 PLCs toimub rakenduse (tavalise) programmi tsükliline täitmine OB1 kaudu. Pärast toite sisselülitamist ja CPU lülitamist TÖÖ režiimi aktiveeritakse ja täidetakse OB 1 igal PLC tsüklil kuni CPU TÖÖ režiim katkestatakse või toide lülitatakse välja. Kuna OB 1 täidetakse tsükliliselt, siis tuleb teised plokid selle abiga aktiveerida (välja kutsuda). Kui mingi plokk oli aktiveeritud OB 1 poolt ja see lõpetas oma tegevuse, siis antakse programmi juhtimine tagasi OB 1le. Siemensi PLC kasutab OB juures prioriteedinumbreid. Kõrgema prioriteediga OB katkestab madalama prioriteediga OB täitmise. PLC programmi tsükliline täitmine on piltlikult esitatud joonisel 3.1.

PLCs kasutatavad andmetüübid

Standardis IEC 61131-3 on määratletud grupp andmetüüpe üldnimega elementaarsed andmetüübid. Nende tähised on esitatud tabelis 3.2. Andmetüüpe iseloomustavad kasutatud bittide arv ja võimalik numbriliste väärtuste vahemik.

Boole Märgiga täisarv Märgita täisarv Reaalarv Aeg, kestus, kuupäev ja tähemärgi rida
BOOL
BYTE
WORD
DWORD
LWORD
INT
SINT
DINT
LINT
UINT
USINT
UDINT
ULINT
REAL
LREAL
TIME
DATE
TIME_OF_DAY
DATE_AND_TIME
STRING

Lisaks nendele saab kasutaja tuletada (luua) uusi andmetüüpe ja kasutada neid nagu elementaarseid andmetüüpe.

Tüüp ja kirjeldus Bittide arv Formaat Vahemik ja arvu tähistus
(Väiksemast suurema väärtuseni)
Näide
BOOL (bitt) 1 Binaartekst TRUE (signaal “1”)/FALSE (signaal “0”) TRUE
BYTE (bait) 8 Kuueteist-kümnendarv B#16#0 - B#16#FF B#16#10
WORD (sõna) 16 Kahendarv 2#0 - 2#1111_1111_1111_1111 2#0001_0000_0000_0000
    Kuueteist-kümnendarv W#16#0 - W#16#FFFF W#16#1000
    BCD C#0 - C#999 C#998
    Märgita kümnendarv B#(0,0) - B#(255,255) B#(10,20)
DWORD (topelt sõna) 32 Kahendarv 2#0 - 2#1111_1111_1111_1111_1111_1111_1111_1111 2#1000_0001_0001_1000_1011_1011_0111_1111
    Kuueteist-kümnendarv DW#16#0000_0000 - DW#16#FFFF_FFFF DW#16#00A2_1234
    Märgita kümnendarv B#(0,0,0,0) - B#(255,255,255,255) B#(1,14,100,120)
INT (Integer) 16 Märgiga kümnendarv -32768 - 32767 1
DINT (Int, 32 bitti) 32 Märgiga kümnendarv L#-2147483648 - L#2147483647 L#1
REAL (komakohaga arv) 32 IEEE koma-kohaga arv Ülemine piir: +/-3.402823e+38
Alumine piir: +/-1.175495e-38
1.234567e+13
S5TIME
(Simatic-aeg)
16 S7-aeg 10 ms sammudega S5T#0H_0M_0S_10MS - S5T#2H_46M_30S_0MS ja
S5T#0H_0M_0S_0MS
S5T#0H_1M_0S_0MS
S5TIME#1H_1M_0S_0MS
TIME
(IEC-Time)
32 IEC-aeg 1 ms sammudega, märgiga täisarv -T#24D_20H_31M_23S_648MS -
T#24D_20H_31M_23S_647MS
T#0D_1H_1M_0S_0MS
TIME#0D_1H_1M_0S_0MS
DATE
(IEC-kuupäev)
16 IEC-kuupäev 1 päeva sammudega D#1990-1-1 - D#2168-12-31 DATE#1994-3-15
TIME_OF_DAY (aeg) 32 Aeg  1 ms sammudega TOD#0:0:0.0 - TOD#23:59:59.999 TIME_OF_DAY#1:10:3.3
CHAR (kirjamärk) 8 ASC II -kirjamärk  “A”, “B” jne. “O”

STEP 7 abil PLC programmeerimisel kasutatavad elementaarsed andmetüübid on kirjeldatud tabelis 3.3 [13]. Mõned standardi IEC 61131-3 elementaarsed andmetüübid on STEP 7 keskkonnas määratud kui komplekssed andmetüübid. See võimaldab määratleda andmetüüpe, mis koosnevad rohkem kui ühest erinevast elementaarsest andmetüübist. Peale selle on STEP 7-s olemas parameeter andmetüübid, mis võimaldavad kasutada taimereid, loendureid ja plokke FCs ja FBs ametlike parameetritena.

Muutujate adresseerimine STEP 7 kohaselt

Muutujad deklareeritakse koos andmetüüpidega. PLC mälus on muutujad justkui kohahoidjad rakenduse spetsiifiliste andmete väärtuste salvestamiseks. Et paremini mõista konkreetset programmi ja selle muutujaid, kasutatakse sümboolset adresseerimist. See võimaldab määrata absoluutsele aadressile sümboolse nime. Globaalsete muutujate sümbolid deklareeritakse STEP 7 sümbolitabelis ja neid saab kasutada programmi kõikides plokkides. Muutuja nimi (sümbol) peab olema ainulaadne ja see võib esineda selles sümbolitabelis ainult üks kord. Plokkide (OB, FC ja FB) kohalikud muutujad ja nende sümbolid deklareeritakse vastava ploki deklaratsiooniosas. Neid muutujaid saab kasutada ainult selles plokis, kus ta deklareeriti. Sama nime võib vabalt uuesti kasutada mingis teises plokis, kui see seal uuesti deklareerida.

S7-300 PLC mooduli pesa numbrid siinil lihtsustavad I/Ode adresseerimist – mooduli asukoht (positsioon) siinil määrab esimese aadressi moodulis [14]. Pesa number 4 on esimene, mida saavad kasutada I/O moodulid. Seejuures neljandas pesas oleva digitaalsisendi (DI) mooduli andmete baidi aadress algab 0ga. Meeles tuleb pidada, et 16 sisendiga DI mooduli kasutamisel jääb aadressiväljal kaks baiti kasutamata. Järelikult algab järgmise mooduli andmete baidi aadress numbriga 4. Joonisel 3.2 on näidatud Siemens S7-300 PLC moodulite adresseerimine.

S7 mälu piirkondade adresseerimine

S7 PLC mälus on piirkonnad, mille poole saab kasutaja programmist pöörduda. S7-300 PLCs on need mälupiirkonnad: sisendite protsessikuva (I), väljundite protsessikuva (Q), mälubitt (M), perifeeria sisend (PI), perifeeria väljund (PQ), kohalik muutuja (L), taimer (T) ja loendur (C).

Joonis 3.2.

Iga mälupiirkond on jagatud baitideks ja selles on võimalik ligipääs ka bittidele, baitidele (8 bitti), sõnadele (16 bitti) ja topeltsõnadele (32 bitti). Seejuures kasutab üks topeltsõna ära 4 baiti alates n baidist kuni n+3 baidini. Biti aadressile viidatakse alati unikaalse sümboliga, mis koosneb mälupiirkonna tähisest, millele järgnevad baidi ja punktiga eraldatud biti numbrid (nt I 28.3). Kui adresseerimisel viidatakse mälupiirkonnale nagu bait, sõna ja topeltsõna, siis lisatakse mälupiirkonna tähisele täht B, W või D (nt IB 7, IW 7, ID 7). Igast plokist saab ligi kõikidele mälupiirkondadele väljaarvatud kohaliku muutuja mälupiirkond. Joonisel 3.3 on kujutatud digitaalsete andmete jagunemine tüüposadeks ja nende paiknemine mälupiirkondades. Nagu näha, tuleb mälupiirkondade adresseerimisega ja kasutamisega olla väga ettevaatlik, et mitte kogemata üle kirjutada teiste andmete baite, kasutades nt programmis sisendite protsessikuva IW 0 ja IW 1. Kui programm muudab IW 0 väärtust, siis muutub ka IW 1 väärtus, kuigi programmis seda ei soovitud teha. Selle vältimiseks tuleks kasutada IW 1 asemel IW 2.

Joonis 3.3.

PLC loeb programmi iga tsükli alguses sisendite olekud ja salvestab need sisendite protsessikuvasse (PII). Edasi määratakse programmi igas tsüklis ka väljundi olekud ja salvestatakse väljundite protsessikuvasse (PIQ). Programmi iga tsükli lõpus edastatakse saadud tulemused (väljundite väärtused) signaalimoodulitele, et teostada programmi käigus saadud tulemused reaalselt.

Perifeeria mälupiirkond (PI/PQ) võimaldab lugeda ja kirjutada andmeid otse PLC moodulitest(sse). Selle võttega kõrvaldatakse töötsüklis I/O olekute uuendusega seotud viivitused. Perifeeria mälupiirkonda kasutatakse ka analoogmoodulite andmete lugemiseks ja kirjutamiseks. Tsüklite vahel analoogmoodulite andmeid PLC mälus automaatselt ei värskendata.

Iga taimer kasutab STEP 7 keskkonna PLC taimeri mälupiirkonnas (T) üht sõna. Selle sõnaga antakse ajabaas ja etteantud aja väärtus. Taimerite adresseerimine algab T0-ga, siis T1 jne. Loenduri mälupiirkond (C) sisaldab loenduri juhiseid ja loendurit adresseeritakse samamoodi nagu taimerit: C0, C1 jne. Taimeri ja loenduri aadresse saab kasutada Boole operatsioonides nende olekute (töötavad, ei tööta) ja sõna operatsioonides taimeri või loenduri hetkväärtuse kontrollimiseks.

Konkreetset taimeri mälupiirkonda saab kasutada mingi taimeriga ainult üks kord. Kui see mälupiirkond antakse teisele taimerile, siis võib selguda, et mõlemad taimerid ei tööta või nad käituvad ettearvamatult. See kehtib ka loenduri mälupiirkonna kohta.

Lokaalset mälupiirkonda (L) kasutatakse ajutiste muutujate väärtuste haldamiseks. Kui ploki töö on lõpetatud, siis saab seda mälupiirkonda uuendada ja kasutada teise ploki juures. Selle adresseerimine sarnaneb sisendite ja väljundite protsessikuvale (nt L 31.5, LB 3, LW 3, LD 3).

PLC programmeerimiskeeled

Standardis IEC 61131-3 võimaldab kasutada PLC programmeerimiseks viit erinevat programmeerimiskeelt.

Joonis 3.4.

Käsulist (instruction list - IL) on masinale kohaldatud programmeerimiskeel, mida toetab enamus programmeerimistarkvarasid. Seda kasutatakse ka vahekeelena programmide tõlkimisel teistesse keeltesse. IL keeles programmi üks rida kirjeldab üht korraldust, mis PLC jaoks on üks täidetav käsk. See rida koosneb joonisel 3.4 kujutatud elementidest. Korraldus algab operatsiooni või käsu sümboliga, millele järgneb üks või mitu komadega eraldatud operandi/muutujat. Enne korraldust võib olla märgis kooloniga. Märgis tähistab programmisisest hüppe aadressi. Kui reas on kommentaar, siis kirjutatakse see rea lõppu ning ümarsulgude ja tärnide (* .. *) vahele. STEP 7-s kasutatakse kommentaari alguse tähistamiseks reas kaht kaldkriipsu //.

Joonis 3.5.

Märgiseid kasutatakse programmisisesteks hüpeteks ühelt programmi realt teisele, jättes mitu rida vahele. Standardis ei ole kirjeldatud hüpped programmi sees, kuid see on lubatud paljudes programmeerimissüsteemides, et parandada programmi täitmist ja lühendada selle aega.

STEP 7-s kutsutakse seda keelt Statement List'iks (STL). Programmiteksti näide on esitatud joonisel 3.5.

Joonis 3.6.

Struktureeritud tekst (structured text - ST) on kõrgtasemeline programmeerimiskeel ülesannete juhtimiseks ja keeruliste matemaatiliste arvutuste tegemiseks. Selle keele eelised IL ees on väga lühikesed ja selged programmilõigud ning võimsad programmi käskude voo juhtimise elemendid. ST algoritm jagatakse mitmeteks sammudeks (avaldusteks), mida kasutatakse väärtuste arvutamiseks ja määramiseks, programmi juhtimiseks ning POUde kutsumiseks või katkestamiseks. Erinevalt ILst võib ST avaldus võtta enda alla mitu rida või on mingi programmilõik koondatud ühele reale.

Standard lubab kasutada ka teisi programmeerimiskeeli (nt C++), kui need täidavad standardis määratud algnõudeid.

STEP 7-s kutsutakse seda keelt struktureeritud juhtimiskeeleks (Structured Control Language - SCL). See sarnaneb programmeerimiskeelele PASCAL (joonis 3.6)

Funktsiooniplokkskeem (function block diagram - FBD) on graafiline keel aritmeetika, Boole või teiste funktsioonielementide ja -plokkide ühendamiseks. FBD keel on pärit signaali töötluse valdkonnast, kus on olulised reaal- või täisarvud. Praeguseks on sellest saanud universaalne programmeerimiskeel enamuse PLC jaoks.

Joonis 3.7.

FBDs kirjutatud programmi kood on jagatud lõikudeks, mida tuntakse segmentidena. Segmendid võimaldavad struktureerida programmi ülesehitust POUs. FBD segmendi graafiline osa sisaldab ristkülikuid ja programmi juhtimise avaldusi koos ühendatud horisontaalsete ning vertikaalsete joontega (joonis 3.7). Ristkülikute sisendid võivad olla ühendatud kas muutujatega, konstantidega või siis olla ka vabalt kasutamata.

FBD kasutatakse horisontaalseid ja vertikaalseid ühendusjooni, mis võivad hargneda mitmeks. Ühe sisendiga ei tohi ühendada mitut väljundit, kuna see võib põhjustada programmi käitumises ebakõlasid. Programmi juhtimiseks on eraldi olemas käsud lahkumiseks POUst ja segmentide töötlemise järjekorra muutmiseks.

FBDs hinnatakse segmendis oleva programmi täitmist järgmiste reeglite järgi:

  1. hinnatakse elemendi kõikide sisendite olekud enne selle sisu teostamist;
  2. mingi elemendi hindamine on läbi, kui kõik tema väljundid on väärtustatud;
  3. segmendi hindamine on läbi, kui selles olevate kõikide elementide väljundid on väärtustatud.

Kontaktaseskeem (Ladder Diagram - LD) on graafiline keel, mille abil seotakse Boole'i tüüpi muutujaid. LD on võrreldav varasemalt tuntud releeskeemidega, milles esitatakse graafiliselt energia liikumist elektriskeemis. Antud programmeerimiskeel on mõeldud Boole'i tüüpi signaalide (ÕIGE/VALE) töötlemiseks. LD keele segment on piiratud vasakult ja paremalt poolt vertikaalsete siinidega. Vasakult siinilt jõuab energia (loogika signaal väärtusega 1) kõikide temaga seotud elementideni (graafiliste sümboliteni). Sõltuvalt skeemielementide olekust lasevad need energial edasi liikuda paremale järgmise elemendini või katkestavad liikumise.

Nagu FBD puhul omab ka LD elementide ühendamiseks horisontaalseid ja vertikaalseid ühendusjooni ning sisaldab ristumispunkte. Kontakt LDis teostab sissetuleva joonega seotud (nimelise) muutuja väärtusega loogika operatsiooni. Teostatav loogikaoperatsioon sõltub kontakti tüübist. Operatsiooni tulemusel saadud väärtus antakse kohe edasi väljuvale joonele (ühendatud paremale poole).

Joonis 3.8.

Kõikide muutujate andmetüübid on Boole (ÕIGE/VALE) ja LD elementide vahelised seosed kannavad edasi ainult Boole väärtusi.

STEP 7 keskkonnas kustutakse seda keelt Ladder Logic'uks (LAD). Skeemi näide on esitatud joonisel 3.8.

Joonis 3.9.

Järjestatud funktsioonide kaart (Sequential Function Chart – SFC) on graafiline programmeerimiskeel rakenduse (nt tootmisliin) juhtimisprotsesside jaotamiseks väiksemateks osadeks ja selle koosluse juhtimiseks. Graafiline skeem näitab ilusti protsessi voogu (liikumist teostusel) ja on seetõttu oluline tööriist PLC programmi struktureerimiseks. SFC keeles on võimalik saavutada rakenduse protsesside järjestikust ja ka paralleelset täitmist.

Väiksemate programmiosade (nt protsess, ülesanne) samm-sammuline täitmine sõltub nii programmi voos defineeritud tingimustest kui ka I/Ode käitumisest. Programmi samm programmeeritakse tavaliselt standardis IEC 61131-3 defineeritud teistes keeltes.

Esimene SFC struktureerimistase on segment koos selle alla kuuluva sammu ja siirde- elemendiga (joonis 3.9). Üks samm saab olla aktiivne või mitteaktiivne. Aktiivse sammuga täidetakse temaga seotud juhiseid (käskusid), kuni ta muutub mitteaktiivseks. Sammu oleku muutus aktiivsest passiivseks määratakse siirde tingimusega, mis esitatakse Boole avaldise kujul. Kui aktiivse sammu taga oleva siirdetingimuse väärtus muutub "ÕIGEKS", siis aktiveerub selle siirde järel olev samm ja eelnev lõpetab. Siirde aktiveerimisega antakse eelneva sammu atribuudi "aktiivne" väärtus edasi järgmisele sammule või sammudele. Aktiivsus liigub läbi sammude, mis kõik koos moodustavad võrgu. Paralleelsete harude puhul programmis jagatakse "aktiivne" olek mitmeks osaks ning harude lõpus liidetakse see uuesti kokku.

STEP 7-s kutsutakse seda keelt Graphical Programming Language'ks (S7-GRAPH).

Siemensi PLC programmeerimistööriist STEP 7 sisaldab tavakeeli nagu STL, FBD ja LAD. Teised keeled nagu SCL ja S7-GRAPH tuleb eraldi juurde osta.

Programmeerimine standardi IEC 61499 abil

Andmevoogu ja loogilist protsessi täitmise jada saab programmeerida ja dokumenteerida standardi IEC 61131-3 graafiliste keeltega (LD, FBC, SFC), kuid samuti on vaja näidata graafiliselt (juhtimisseadmete) juhtimisprogrammide topoloogilist jagunemist, nende üldist konfiguratsiooni ja seoseid automatiseerimisprojekti teiste hajutatud osadega. Seda tehakse palju kõrgemal loogilisel tasemel kui POUde programmeerimine.

Keeruliste hajutatud rakenduste seadistamise tööriistu kutsutakse konfiguratsiooni redaktoriteks. Programmiosa moodustatakse suurematest üksustest funktsiooniplokkide sidumise teel. Keerulised hajutatud automatiseerimisülesanded omavad laialdast andmeside ja teostamise juhtimise struktuuri. Teostuse ajal toimub tihe andmevahetus erinevates kohtades paiknevate juhtimisseadmete vahel. Seejuures on kontrolleri programmid seotud võrgusõlmede ülesannetega ja programmide sisendid ning väljundid on omavahel seotud.

Standard IEC 61499 käsitleb hajutatud automatiseerimisrakenduste loomist, näiteks funktsiooniplokkide seadistamist füüsiliselt erineva ja geograafiliselt eraldatud juhtimisriistvara jaoks ning nende teostuse sünkroniseerimist [15].

Hajutatud automatiseeritud süsteemi programmi osade ja juhtimisriistvara elementide vastastikuse toime kirjeldamiseks kasutab IEC 61499 mitme tasemega hierarhilist mudelit:

  • Süsteem
  • Seade
  • Ressurss/allikas
  • Rakendus
  • Funktsiooniplokk

Reaalses automaatikakeskkonnas toimivad erinevatest juhtimisseadmetest moodustatud rakendused süsteemina. Mingi konkreetne seade koosneb tema rakendusprogrammidest, liidesest andmesidevõrguga, liidesest automatiseeritud protsessiseadmete ning juhtimisseadme riistvaraga, milles need ressursid toimivad.

Ressurss on iseseisev täidetav tarkvaraline üksus koos parameetritega. Igas seadmes saab toimida mitu ressurssi. Ressurss koosneb funktsiooniplokkidest (vahetavad omavahel eriliste liideste abil sündmuste ja muutujate andmeid). Teenuse liidese funktsiooniplokk moodustatakse andmesideliidesest ja automatiseeritud protsessi kasutajaliidesest. Ülejäänud funktsiooniploki tüübid (ka kasutaja poolt loodud funktsiooniplokid) on aluseks tegelikule juhtimisprogrammile.

Rakenduse tase on kokku lepitud (reaalne) programmeerimistase. Sellel tasemel seotakse süsteemi funktsiooniplokid omavahel kokku sõltumata ressurssidest, milles need funktsiooniblokid töötavad. Seetõttu just see tase kirjeldab ära konkreetse rakenduse, mis võib iseenesest olla hajutatud mitmete ressursside vahel.

Funktsiooniplokid on siin väikseimad rakenduse (programmi moodustavad) üksused, mis standardi IEC 61499 järgi koosnevad enamasti kahest osast:

  1. täitmise juhtimine: sündmuste loomine ja töötlemine koos juhtimise sisendite ja väljunditega;
  2. algoritm (kasutaja programm) koos andmete sisenditega ja väljunditega ning sisemiste andmetega.

Konkreetne (protsessi, ülesande) algoritm programmeeritakse standardis IEC 61131-3 kirjeldatud keeltega ja selle juhtimist käsitlev osa SFC keele abil. Täitmise juhtimise diagramm (ECC) juhib algoritmi või selle osade täitmist sõltuvalt ajalise protsessi tegelikust olekust ja sissetulevatest sündmustest.

PLC juhtimisprogrammi loomine

PLC juhtimisprogrammi loomine koosneb järgmistest etappidest (joonis 3.10) [8]:

  • spetsifikatsioon: protsessi või ülesande kirjeldus
  • projekteerimine: rakenduse (e lahenduse) kirjeldus
  • realiseerimine: lahenduse elluviimine
  • integreerimine/kasutuselevõtt: lahenduse sidumine keskkonnaga ja katsetamine

Etapp 1: Spetsifikatsioon (probleemi sõnastamine)

Siin koostatakse rakenduse protsessi või ülesande detailne kirjeldus. See tegevus toob välja konfliktid, eksitused ja puudused tehnilistes nõuetes või spetsifikatsioonides. Antud etapi lõpuks on olemas:

  • juhtimisprotsessi või ülesande suuline kirjeldus;
  • tehnika struktuur/paigutus;
  • rakenduse (lahenduse) umbkaudne struktuur.

Etapp 2: Projekteerimine (põhimõttelise lahenduse konkreetne vorm)

Protsessi või ülesande põhimõtteline lahendus töötatakse välja 1. etapi tulemuste alusel. See peab kirjeldama juhtimissüsteemi käitumist ning olema sõltumatu tehnilisest realiseerimisest. Antud nõudeid täidab funktsionaalne skeem (GRAFCET). Funktsionaalset rakendust (lahendust) saab samm-sammult täiustada, kuni see sisaldab kõiki osasid. Keerulise juhtimisülesande korral tuleks rakendus (lahendus) jagada üksikuteks osadeks. Need võivad olla erifunktsioonid, mida kasutatakse nt visuaalse liidese teostamisel või andmeside korraldamisel.

Etapp 3: Realiseerimine (põhimõttelise lahenduse programmeerimine)

Rakendusprotsessi või selle ülesande põhimõtteline lahendus tõlgitakse juhtimisprogrammiks kasutades standardiga IEC 61131-3 määratud programmeerimiskeeli (SFC, FBD, LD, IL ja ST). Juhtimissüsteeme, mis töötavad ajas vastavalt loogilisele protsessile, saab kergesti programmeerida SFC keeles. LD, FBD ja IL keeled sobivad põhioperatsioonide formuleerimiseks ja juhtimissüsteemide jaoks, mida saab kirjeldada lihtsate loogikaoperatsioonide või Boole'i signaalidega. Kõrgtasemelist ST keelt kasutatakse peamiselt matemaatilise sisuga programmiosade loomiseks, nagu nt juhtimisalgoritmide kirjeldamiseks.

Joonis 3.10.

Nii palju, kui PLC või selle programmeerimistarkvara seda etappi toetab, tuleb loodud juhtimisprogramme või programmiosi enne kasutuselevõttu testida (simuleerida). See võimaldab avastada vead ja kõrvaldada need juba algstaadiumis, hiljem võib vigade kõrvaldamine olla palju keerulisem ja kulukam.

Etapp 4: Kasutuselevõtt (juhtimisprotsessi või ülesande koostamine ja katsetused)

Siin katsetatakse kolmes eelmises etapis loodud automatiseeritud süsteemi ja tegelike tootmisseadmete koostööd. Kui juhtimisülesanded on keerukad, tuleb seda teha süstemaatiliselt samm-sammu haaval. Korrektselt toimides leitakse vead kergesti ja kõrvaldatakse need nii juhtimisprogrammist kui ka mujalt süsteemist.

Dokumentatsioon on süsteemi loomisel üks oluline ja kriitilise tähtsusega komponent, mida läheb hiljem vaja süsteemi hooldusel ja laiendamisel. Dokumentatsioon, sealhulgas juhtimisprogrammi kohta, peab olema saadaval nii paberil kui ka andmekandjal. See on vajalik kasutuse käepärasuse ja varukoopiate omamise huvides. Dokumentatsioon koosneb üksikute etappide aruannetest, juhtimisprogrammide väljatrükkidest ja juhtimisprogramme käsitlevatest mistahes võimalikest kirjeldustest, nagu [8]:

  • probleemi kirjeldus
  • tehniliste seadmete positsiooninumbritega visand või seadmete paigutus
  • elektriskeemid
  • klemmide ühendusskeem
  • juhtimisprogrammide väljatrükid
  • sisendite-väljundite (I/O) nimekiri
  • täiendav dokumentatsioon
Creative Commons Licence
"Mehhatroonikaseadmed" is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License .