+1 500 000 produktov v ponuke
6000 zásielok denne
+300 000 klientov zo 150 krajín
Dátum uverejnenia: 14-03-2025 🕒 6 min čítania
PLC ovládače sú bežne používané v priemysle na všetkých miestach, kde je potrebná kontrola parametrov a riadenie procesov. Rozvoj zabudovanej elektroniky spôsobil, že sú to zariadenia s vysokými parametrami, odolné voči EMI rušeniam a environmentálnym podmienkam, a pritom užívateľsky prívetivé. Na rozdiel od minulosti sú prostredia na tvorbu programov veľmi podobné a vo väčšine z nich je možné nájsť spôsob vykonania programu, ktorý nám bude vyhovovať. Takže ako sa programuje PLC ovládač?
Programovacie jazyky PLC ovládačov sa stali predmetom normy IEC 61131 publikovanej v roku 2013. V časti 3. tejto normy sú uvedené odporúčania týkajúce sa jazykov a metód programovania PLC ovládačov. Okrem typov dát, premenných, konfigurácie a spôsobu jej opisu, organizačných jednotiek programu a zásad objektového programovania je uvedených 5 základných programovacích jazykov PLC ovládačov a definované požiadavky na ich funkčnosť. Vďaka tejto norme sa základnými programovacími jazykmi, ktoré používajú programátori PLC, stali:
Najpopulárnejším a dostupným vo všetkých prostrediach na tvorbu programov pre PLC je rebríkový jazyk LD (alebo LAD). Je to grafický jazyk, avšak používa jednoduché symboly, takže v starších riešeniach sa používala semigrafika vytvorená pomocou štandardných znakov ASCII. Tieto znaky boli ľahko prezentovateľné aj na obrazovke PLC, čo umožňovalo tvorbu jednoduchších programov ad hoc, bez použitia PC. V tomto jazyku sa vytvára schéma programu pomocou symbolov podobných tým, ktoré sa používajú na elektrických schémach – cievok a kontaktov. Kontakty môžu byť normálne otvorené (NO) alebo normálne zatvorené (NC), a cievky môžu mať rôzne funkcie, ako nastavenie, nulovanie alebo negovanie. Môžu sa tu tiež vkladať funkcie a celé funkčné bloky, ako sú časovače, počítadlá alebo klopné obvody. Rebríkový jazyk je zrozumiteľný aj pre neskúseného programátora.
Obrázok 1. Fragment programu v rebríkovom jazyku LD (LAD)
Ďalším veľmi intuitívnym spôsobom programovania, najmä pre ľudí, ktorí poznajú digitálnu techniku, je diagram funkčných blokov FBD. Príkladný fragment „kódu“ vykonaný s použitím FBD je zobrazený na obrázku 2. Jednotlivé vstupy, výstupy a operácie sú reprezentované funkčnými blokmi a bránami, ktoré realizujú nielen logické funkcie, ale sú tiež schopné spracovávať signály podľa zadaného algoritmu. Medzi funkčnými blokmi sú regulátory PID, široká škála generátorov priebehov, počítadlá a iné. Niektoré programovacie prostredia umožňujú aj definovanie vlastných blokov s požadovanou funkčnosťou. FBD je grafický jazyk. Jednotlivé bloky sa ukladajú na schéme a spájajú sa navzájom, čo pripomína kreslenie logických obvodov. Niektoré programovacie prostredia umožňujú nielen spájanie vstupov/výstupov, ale aj tvorbu zberníc a referencií prenášajúcich rad parametrov (na obrázku 2 sú zbernice reprezentované hrubými čiarami – tu prenášajú viacbitové konštanty a premenné).
Obrázok 2. Príkladný fragment programu vykonaný pomocou FBD
Textový štruktúrovaný jazyk ST je jazyk vysokej úrovne, pripomínajúci kedysi veľmi populárny jazyk Pascal. Umožňuje zložitejšie operácie, ktorých zápis nie je obmedzený spleťou čiar na obrazovke a možnosťou ich vykonania ako v prípade FBD, čo často vyžaduje veľký monitor s dobrým rozlíšením. Programovanie v ST pripomína tvorbu kódu v tradičných programovacích jazykoch pre PC. Podporované sú zložité inštrukcie, ako sú cykly repeat…until, do…while, podmienkové inštrukcie if…then…else, case a matematické funkcie sqrt(), sin(). Čo je dôležité, nezávisle od výrobcu hardvéru alebo prostredia sú funkcie jazyka ST pre nich spoločné a boli definované v norme IEC 61131. Vzhľadom na to, že spomínaná norma umožňuje kombináciu jazykov v nej uvedených, je možné jazyk ST použiť aj na tvorbu „vložiek“ alebo neštandardných blokov FBD.
Listing 1. Príkladná funkcia vykonaná v jazyku ST
//=======================================================================
// 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
Sekvenčný funkčný diagram je ďalší z grafických programovacích jazykov. Jeho predchodcom bol jazyk GRAFCET inšpirovaný binárnymi sieťami Petriho. Umožňuje popísať sekvenciu krokov (činností), ktoré majú byť vykonané v presne stanovenom poradí. Je obzvlášť užitočný na tvorbu programov na obsluhu procesov vyžadujúcich synchronizáciu alebo procesov, ktoré môžu byť rozdelené na etapy. Hlavnými zložkami programu v SFC sú: kroky (etapy) spojené s akciami, prechody spojené s logickými podmienkami, priame spojenia medzi krokmi a prechodmi.
Často je jazyk SFC kombinovaný s inou metódou programovania, napríklad s rebríkom LD. SFC je svojou povahou jazyk programovania súbežného, v ktorom môže byť súčasne aktívnych mnoho POU (Program Organization Units), tj. jednotiek kontrolujúcich tok. Niektoré prostredia umožňujú aj tvorbu makroakcií, teda akcií vo vnútri POU, ktoré ovplyvňujú stav iného POU. Týmto spôsobom môže jedno POU rozhodovať o aktívnych krokoch vykonávaných inými POU.
Obrázok 3. Príkladný fragment programu v jazyku SFC
Zoznam inštrukcií je už považovaný za zastaraný spôsob programovania. Tento jazyk trochu pripomína assembler, ale napriek implementácii pre rôzne PLC ovládače vybavené rôznymi procesormi je jazyk IL nezávislý od typu použitého procesora. Podobne ako assembler, skladá sa z veľmi jednoduchých inštrukcií a zložitejšie operácie vyžadujú použitie mnohých z nich. Riadenie vykonávania programu sa uskutočňuje pomocou inštrukcií skokov a volania podprogramov.
Mnoho výrobcov ovládačov, napriek úplnej zhode ponúkaného hardvéru a softvéru s normou IEC 61131-3, ponúka dodatočné volania/funkčné bloky, špecifické pre daného dodávateľa a prispôsobené ponúkanému hardvéru, ako je čítanie alebo zápis do vstupov/výstupov. Napríklad, jazyk IL určený pre PLC ovládače firmy Siemens bol nazvaný „Statement List“ alebo „STL“ v angličtine a „Anweisungs-Liste“ alebo „AWL“ v nemčine. Nemecký názov bol prenesený aj do národných verzií prostredia v taliančine a španielčine. Používateľ balíka Simatic si môže vybrať medzi nemeckými a medzinárodnými mnemonikami na reprezentáciu inštrukcií. Napríklad „A“ znamená „AND“ alebo „U“ znamená „UND“, „I“ znamená „Vstup“ alebo „E“ znamená „Eingang“ atď.
Listing 2. Príkladný fragment programu v jazyku IL
LD Speed
GT 2000
JMPCN VOLTS_OK
LD Volts
VOLTS_OK LD 1
ST %Q75
Cieľom tohto textu nie je naučiť programovanie PLC ovládačov, ale signalizovať určité možnosti a možnosti na výber. Každý programátor PLC by si mal vybrať takú metódu, ktorá bude najviac adekvátna jeho potrebám, alebo ich kombinovať v závislosti od aplikácie. Napríklad, diagram FBD sa pravdepodobne zapáči používateľom, ktorí poznajú a rozumejú logickým obvodom, zatiaľ čo rebríkový LD sa hodí na programovanie jednoduchších sekvencií riadenia. Na druhej strane, ST a SFC sa osvedčia na programovanie zložitých procesov, hoci napríklad jazyk ST bol implementovaný v mikro ovládači PLC Easy firmy Eaton, a ten sa skôr hodí na realizáciu jednoduchších, menej náročných funkcií riadenia a kontroly. Na druhej strane, neexistujú žiadne odporúčania hovoriace o tom, ktorý jazyk na čo je možné používať, ktorý na čo sa hodí. Menším alebo väčším úsilím pomocou každej z diskutovaných metód je možné vykonať príslušný softvér. Najlepšou z možností sa zdá byť kombinácia jazykov podľa potreby a na dosiahnutie čo najväčšej čitateľnosti aplikácie.
Transfer Multisort Elektronik (TME) je jedným z najväčších globálnych distribútorov elektronických komponentov, elektrotechnických častí, dielenského vybavenia a priemyselnej automatizácie. Katalóg obsahuje viac ako 1 500 000 produktov od 1 300 popredných výrobcov. Moderné logistické centrá TME v Lodži a Rzgówe (Poľsko) s celkovou rozlohou viac ako 40 000 m² denne odosielajú takmer 6 000 balíkov zákazníkom vo viac ako 150 krajinách.
TME tiež investuje do rozvoja vedomostí a zručností mladých inžinierov a nadšencov elektroniky prostredníctvom projektu TME Education a podporuje technologickú komunitu organizovaním série podujatí TechMasterEvent, ktoré podporujú inovácie a výmenu skúseností.