+1 500 000 toodet pakkumises

7000 iga päev välja saadetavat pakki

+300 000 klienti 150 riigis

Quick Buy Lemmikud
Ostukorv

PLC kontrollerite programmeerimiskeeled

Avaldamise kuupäev: 14-03-2025 🕒 6 lugemisaeg

PLC kontrollerid on laialdaselt kasutusel tööstuses kõikjal, kus on vaja parameetrite kontrolli ja protsesside juhtimist. Manustatud elektroonika areng on viinud selleni, et need on kõrgete parameetritega seadmed, mis on vastupidavad EMI häiretele ja keskkonnatingimustele ning samas kasutajasõbralikud. Erinevalt varasemast on programmiloomise keskkonnad üksteisega väga sarnased ja enamikus neist on võimalik leida selline programmi teostamise viis, mis meile sobib. Kuidas siis programmeeritakse PLC kontrollerit?

PLC kontrollerite programmeerimiskeeled said 2013. aastal avaldatud IEC 61131 standardi objektiks. Selle standardi 3. osas on esitatud soovitused PLC kontrollerite programmeerimiskeelte ja -meetodite kohta. Lisaks andmetüüpidele, muutujatele, konfiguratsioonile ja selle kirjeldusele, programmi organisatsiooni üksustele ja objektorienteeritud programmeerimise põhimõtetele on loetletud 5 põhilist PLC kontrollerite programmeerimiskeelt ning määratletud nende funktsionaalsuse nõuded. Selle standardi tõttu on PLC programmeerijate poolt kasutatavateks põhilisteks programmeerimiskeelteks saanud:

LD redel (LAD)

Kõige populaarsem ja kõigis PLC programmide loomise keskkondades kättesaadav on redelkeel LD (või LAD). See on graafiline keel, kuid kasutab lihtsaid sümboleid, seega vanemates lahendustes kasutati semigraafikat, mis loodi ASCII standardmärkide abil. Need märgid olid kergesti esitatavad ka PLC ekraanil, mis võimaldas luua lihtsamaid ad hoc programme ilma PC-d kasutamata. Selles keeles luuakse programmi skeem sümbolite abil, mis sarnanevad elektriskeemidel kasutatavatele – mähised ja kontaktid. Kontaktid võivad olla tavaliselt avatud (NO) või tavaliselt suletud (NC) ning mähised võivad omada erinevaid funktsioone, nagu seadistamine, nullimine või eitamine. Siin saab ka lisada funktsioone ja terveid funktsiooniplokke, nagu taimerid, loendurid või trigerid. Redelkeel on arusaadav isegi kogenematule programmeerijale.

Joonis 1. Redelkeele LD (LAD) programmi fragment

Funktsiooniplokkide diagramm FBD

Järgmine väga intuitiivne programmeerimisviis, eriti neile, kes tunnevad digitaaltehnikat, on funktsiooniplokkide diagramm FBD. Näidis "koodi" fragment, mis on loodud FBD abil, on näidatud joonisel 2. Erinevad sisendid, väljundid ja operatsioonid on esindatud funktsiooniplokkide ja väravate abil, mis mitte ainult ei täida loogilisi funktsioone, vaid suudavad ka signaale töödelda vastavalt määratud algoritmile. Funktsiooniplokkide hulka kuuluvad PID regulaatorid, lai valik signaaligeneraatoreid, loendureid ja muud. Mõned programmeerimiskeskkonnad võimaldavad ka määratleda oma plokke vajaliku funktsionaalsusega. FBD on graafiline keel. Erinevad plokid paigutatakse skeemile ja ühendatakse omavahel, mis meenutab loogikaringide joonistamist. Mõned programmeerimiskeskkonnad võimaldavad mitte ainult sisendite/väljundite ühendamist, vaid ka magistralite ja viidete loomist, mis edastavad mitmeid parameetreid (joonisel 2 on magistralid esindatud paksendatud joontega – siin edastavad nad mitmebitiseid konstandeid ja muutujaid).

Joonis 2. Näidis FBD abil loodud programmi fragment

Struktureeritud tekstikeel ST

Struktureeritud tekstikeel ST on kõrgetasemeline keel, mis meenutab kunagi väga populaarset Pascal keelt. See võimaldab keerukamaid operatsioone, mille kirjeldus ei ole piiratud ekraanil olevate joonte sasipuntraga ja nende teostamise võimalusega nagu FBD puhul, mis sageli nõuab suurt hea resolutsiooniga monitori. Programmeerimine ST-s meenutab koodi loomist traditsioonilistes PC programmeerimiskeeltes. Toetatud on keerulised juhised, nagu kordused repeat…until, do…while, tingimusjuhised if…then…else, case ja matemaatilised funktsioonid sqrt(), sin(). Oluline on, et sõltumata riistvara tootjast või keskkonnast on ST keele funktsioonid neile ühised ja määratletud IEC 61131 standardis. Kuna mainitud standard lubab selles loetletud keelte ühendamist, saab ST keelt kasutada ka "lisandite" või mittestandardsete FBD plokkide loomiseks.

Listing 1. Näidis funktsioon, mis on loodud ST keeles 
//=======================================================================
// Function Block Timed Counter :  Incremental count of the timed interval
//=======================================================================
FUNCTION_BLOCK FB_Timed_Counter
    VAR_INPUT
        //Trigger signal to begin Timed Counting
        Execute     : BOOL := FALSE;
        //Enter Cycle Time (Seconds) between counts 
        Time_Increment  : REAL := 1.25;
        //Number of Desired Count Cycles
        Count_Cycles    : INT  := 20;
    END_VAR

VAR_OUTPUT
        //One Shot Bit indicating Timer Cycle Done
        Timer_Done_Bit  : BOOL := FALSE;
        //Output Bit indicating the Count is complete
        Count_Complete  : BOOL := FALSE;
        //Accumulating Value of Counter
        Current_Count   : INT  := 0;
END_VAR

VAR
        //Timer FB from Command Library
        CycleTimer      : TON;
        //Counter FB from Command Library
        CycleCounter    : CTU;
        //Converted Time_Increment in Seconds to MS
        TimerPreset : TIME;
    END_VAR

    // Start of Function Block programming
    TimerPreset := REAL_TO_TIME(in := Time_Increment) * 1000;

    CycleTimer(
        in := Execute AND NOT CycleTimer.Q,
        pt := TimerPreset);

        Timer_Done_Bit := CycleTimer.Q;

        CycleCounter(
        cu := CycleTimer.Q,
        r := NOT Execute,
        pv := Count_Cycles);

        Current_Count := CycleCounter.cv;
        Count_Complete := CycleCounter.q;
END_FUNCTION_BLOCK

Järjestikfunktsiooni skeem SFC

Järjestikfunktsiooni skeem on veel üks graafiline programmeerimiskeel. Selle eelkäijaks oli GRAFCET keel, mis põhines binaarsetel Petri võrkudel. See võimaldab kirjeldada sammude (tegevuste) järjestust, mis tuleb täita kindlas järjekorras. See on eriti kasulik programmide loomiseks protsesside haldamiseks, mis nõuavad sünkroniseerimist või protsesside jaoks, mida saab jagada etappideks. SFC programmi peamised komponendid on: sammud (etapid), mis on seotud tegevustega, üleminekud, mis on seotud loogiliste tingimustega, otsesed ühendused sammude ja üleminekute vahel.

Sageli kombineeritakse SFC keelt mõne muu programmeerimismeetodiga, näiteks LD redeliga. SFC on oma olemuselt paralleelne programmeerimiskeel, milles võib olla korraga aktiivne mitu POU-d (Program Organization Units), st voolu juhtivad üksused. Mõned keskkonnad võimaldavad ka makrotegevuste loomist, st tegevusi POU sees, mis mõjutavad teise POU olekut. Sel viisil võib üks POU otsustada teiste POU-de poolt võetavate aktiivsete sammude üle.

Joonis 3. Näidis SFC keeles loodud programmi fragment

Käskude loend IL

Käskude loendit peetakse juba vananenud programmeerimisviisiks. See keel meenutab veidi assemblerit, kuid hoolimata erinevate protsessoritega varustatud erinevate PLC kontrollerite jaoks rakendamisest on IL keel sõltumatu kasutatud protsessori tüübist. Nagu assembler, koosneb see väga lihtsatest käskudest ja keerukamad operatsioonid nõuavad paljude nende kasutamist. Programmi täitmise juhtimine toimub hüppekäskude ja alamprogrammide kutsumise abil.

Paljud kontrollerite tootjad, hoolimata pakutava riist- ja tarkvara täielikust vastavusest IEC 61131-3 standardiga, pakuvad täiendavaid kutsumisi/funktsiooniplokke, mis on konkreetse tarnija jaoks spetsiifilised ja kohandatud pakutavale riistvarale, nagu sisendite/väljundite lugemine või kirjutamine. Näiteks, Siemensi PLC kontrollerite jaoks mõeldud IL keelt nimetatakse inglise keeles "Statement List" või "STL" ja saksa keeles "Anweisungs-Liste" või "AWL". Saksa nimi on üle kantud ka itaalia ja hispaania keele versioonidesse. Simatic paketi kasutaja saab valida saksa ja rahvusvaheliste mnemonikute vahel käskude esindamiseks. Näiteks "A" tähendab "AND" või "U" tähendab "UND", "I" tähendab "Sisend" või "E" tähendab "Eingang" jne.

Listing 2. Näidis IL keeles loodud programmi fragment
        LD      Speed
        GT      2000
        JMPCN       VOLTS_OK
        LD      Volts
VOLTS_OK    LD      1
        ST      %Q75

Milline keel on parim? See sõltub...

Selle teksti eesmärk ei ole õpetada PLC kontrollerite programmeerimist, vaid anda märku teatud võimalustest ja valikutest. Iga PLC programmeerija peaks valima meetodi, mis on tema vajadustele kõige sobivam, või neid vastavalt rakendusele kombineerima. Näiteks, FBD diagramm meeldib tõenäoliselt kasutajatele, kes tunnevad ja mõistavad loogikavoore, samas kui LD redel on kasulik lihtsamate juhtimisjärjestuste programmeerimiseks. ST ja SFC sobivad keerukate protsesside programmeerimiseks, kuigi näiteks ST keel on rakendatud Eaton'i Easy mikro PLC kontrolleris, ja see sobib pigem lihtsamate, vähem nõudlike juhtimis- ja kontrollifunktsioonide teostamiseks. Teisalt, ei ole mingeid soovitusi, millist keelt milleks kasutada, mis milleks sobib. Väiksema või suurema pingutusega saab iga arutatud meetodiga luua sobiva tarkvara. Parimaks võimaluseks näib olevat keelte kombineerimine vastavalt vajadustele ja rakenduse võimalikult suure loetavuse saavutamiseks.

Transfer Multisort Elektronik (TME) on üks maailma suurimaid elektroonikakomponentide, elektrotehnika, töökodade varustuse ja tööstusautomaatika globaalseid turustajaid. Kataloog sisaldab üle 1 500 000 toote 1 300 juhtivalt tootjalt. TME kaasaegsed logistikakeskused Łódźis ja Rzgóws (Poola), mille kogupindala on üle 40 000 m², saadavad iga päev ligi 6 000 pakki klientidele rohkem kui 150 riigis.

TME investeerib ka noorte inseneride ja elektroonikahuviliste teadmiste ja oskuste arendamisse TME Education projekti kaudu ning toetab tehnoloogiakogukonda, korraldades TechMasterEvent sündmuste sarja, mis edendab innovatsiooni ja kogemuste vahetust.

rightColumnPicture rightColumnPicture

LOE LÄBI KA