PLC programozási nyelvek

Hasonló dokumentumok
Irányítástechnika Elıadás. PLC-k programozása

Programozható logikai vezérlő

A 27/2012 (VIII. 27.) NGM rendelet (12/2013 (III. 28.) NGM rendelet által módosított) szakmai és vizsgakövetelménye alapján.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Java programozási nyelv

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

BASH script programozás II. Vezérlési szerkezetek

A 27/2012 (VIII. 27.) NGM rendelet (12/2013 (III. 28.) NGM rendelet által módosított) szakmai és vizsgakövetelménye alapján.

A C# programozási nyelv alapjai

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozható Logikai Vezérlő

1. EGY- ÉS KÉTVÁLTOZÓS LOGIKAI ELEMEK KAPCSOLÁSTECHNIKÁJA ÉS JELÖLŐRENDSZERE

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Java II. I A Java programozási nyelv alapelemei

2) Tervezzen Stibitz kód szerint működő, aszinkron decimális előre számlálót! A megvalósításához

Algoritmusok tervezése

Java II. I A Java programozási nyelv alapelemei

Programozási nyelvek (ADA)

Kifejezések. Kozsik Tamás. December 11, 2016

Logikai áramkörök. Informatika alapjai-5 Logikai áramkörök 1/6

Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Irányítástechnika és Informatika Tanszék. Önálló laboratórium

Kifejezések. Kozsik Tamás. December 11, 2016

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Laborsegédlet 3. Labor

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

1. Alapok. #!/bin/bash

Szoftvertervezés és -fejlesztés I.

A BECKHOFF típusú PLC használata.

Occam 1. Készítette: Szabó Éva

A 27/2012 (VIII. 27.) NGM rendelet (12/2013 (III.28) NGM rendelet által módosított) szakmai és vizsgakövetelménye alapján.

Készítette: Nagy Tibor István

Mechatronikai rendszerek

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

AWK programozás, minták, vezérlési szerkezetek

2. Laborgyakorlat. Step7 programozási környezet bemutatása

Fordítás Kódoptimalizálás

Készítette: Oláh István mestertanár

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Irányítástechnika Elıadás. PLC-k programozása

1. Jelölje meg az összes igaz állítást a következők közül!

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Mintavételes szabályozás mikrovezérlő segítségével

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Algoritmizálás és adatmodellezés tanítása 1. előadás

SZOCIÁLIS ÉS MUNKAÜGYI MINISZTÉRIUM

NEMZETGAZDASÁGI MINISZTÉRIUM

AWK programozás, minták, vezérlési szerkezetek

Aritmetikai kifejezések lengyelformára hozása

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Programozási nyelvek 6. előadás

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Minta felvételi feladatsor programozásból

DIGITÁLIS TECHNIKA (A MECHATRONIKA ALAPJAIHOZ)

Kiterjesztések sek szemantikája

Informatika terméktervezőknek

Webprogramozás szakkör

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Hardver leíró nyelvek (HDL)

GYAKORLATIAS JAVA MINTA

Pénzügyi algoritmusok

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

Bevezetés az informatikába

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Szkriptnyelvek. 1. UNIX shell

Vezérlési szerkezetek

7400 Kaposvár, Pázmány P. u. 17. OM TANMENET. Modul: Osztály: Heti óraszám: Hetek száma: 32. P. h.

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Előadó: Nagy István (A65)

C programozási nyelv

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Adatok ábrázolása, adattípusok

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Operációs Rendszerek II. labor. 2. alkalom

SzA19. Az elágazások vizsgálata

Operációs rendszerek gyak.

Programozás alapjai (ANSI C)

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

C programozás. 1 óra Bevezetés

5. Laborgyakorlat. Számláló funkciók, időzítő funkciók.

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

VEZÉRLŐEGYSÉGEK. Tartalom

A programozás alapjai

Rekurzió. Dr. Iványi Péter

KeyLock-23 Digitális kódzár 2 kimenettel, 3 bemenettel

Microsoft Excel 2010

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Átírás:

PLC programozási nyelvek Készítette: Csinger Nikolett, Lukács Péter, Sallai Gábor és Voura Dávid 1. Bevezetés A PLC-k fejlődése során több gyártó is próbálta megalkotni azt a programozási szabványt, amely versenytársai megoldásánál általuk kényelmesebbnek, könnyebbnek vélt. Ennek ellenére egyetlen nyelv sem lett szigorúan szabványosítva, viszont a fejlesztések eredményeként napjainkra számos PLC programozási nyelv alakult ki. Mivel nem sikerült találni egyetlen kitüntetett nyelvet sem, ezért a villamosmérnökök nemzetközi szervezete egy, a nyelveket összegyűjtő közös szabványt hozott létre, ez lett az IEEE 61131-3. A szabvány természetesen nem csak az egyes programnyelveket gyűjtötte össze és csoportosította, hanem azok jelöléseit és utasításait is összegyűjtötte. A szabvány szerint alapvetően két főbb csoportra oszthatjuk a programozási nyelveket - szöveges rendszerű és a - grafikus szimbólumokat alkalmazó. A továbbiakban ezek altípusairól lesz bővebben szó. 2. Szöveges rendszerű programozási nyelvek A szöveges rendszerű programozási nyelveknél két típust különböztethetünk meg, ezek a: - strukturált és az - utasításlistás. Az alapvető különbség a két nyelv között, hogy míg a strukturált egy magasabb szintű programnyelvhez hasonló szerkezetet használ, addig az utasításlistás inkább az alacsonyabb szintű programnyelvhez hasonlítható. 1

2.1 Strukturált programnyelv A strukturált szöveges programozási nyelv egy, a Pascal, illetve a C nyelvhez hasonló magas szintű nyelv a vezérlési és szabályozási funkciók programozásához. Ennek egy előnye, hogy hardver független nyelv, tehát az ST nyelven megírt program bármely berendezésen futtatható, amely rendelkezik a nyelv értelmezéséhez szükséges szoftverrel. Az ST főként a bájt, a szó, a duplaszó jellegű, bonyolult aritmetikai műveleteket és függvénykapcsolatokat igénylő feladatok megoldásánál előnyös a magas szintű nyelvű programozásban jártas felhasználók számára. Az ST nyelv értékadó, feltételes, vezérlési és ciklusszervező utasításokból áll. Az ST nyelvű programban a programsorok pontosvesszővel vannak egymástól elválasztva, a megjegyzéseket zárójelek között csillag karakterrel határolva vihetők be a programba. Az ST nyelv előnyei: A programozási feladatot igen tömör formában tartalmazza A szöveges változók kezelése révén a technológiai változók azonosítása egyszerű Átlátható, jól követhető felépítés Az ST nyelv hátrányai: Az ST nyelvről a végrehajtható kódot egy compiler állítja elő, amely hibalehetőséget rejt magában a nyelv által biztosított absztrakciók csak kellő gyakorlattal kezelhetők Fontos tudni, hogy ST nyelvű program esetén a teljes szöveges kód végrehajtódik ciklusonként. 2.1.1 Az ST program részei Elöljáróban néhány alapszabály ismertetése következik: A függvényhívás egy kifejezés, de a funkcióblokk hívás egy utasítás. A funkcióblokk hívások tehát nem engedélyezettek egy kifejezésen belül. Lehetnek az operátorokkal azonos függvények Amennyiben egy kifejezés több operátort tartalmaz, akkor a precedencia szabály lép életbe 2.1.2 Kifejezések A kifejezések egy változó értékének meghatározásához használatosak. Egy kifejezés tartalmazza az operandust és a hozzá kapcsolódó operátort. Az ST nyelvű programok utasításokból épülnek fel. Az utasítások kifejezéseket és kulcsszavakat tartalmaznak, a kifejezések pedig operandusokból és ST operátorokból állnak. Az operandusok lehetnek numerikus, alfanumerikus karakterek vagy idő adatok, függvényhívások vagy összetett kifejezések. 2

2.1.3 Operátorok és operandusok Az operátorok prioritását az alábbi ábrán látható táblázat foglalja össze. 1. ábra Operátorok prioritása Az operandusok lehetnek: numerikus, alfanumerikus karakterek és idő adatok (pl.: 15, xyz, t#5d-3h) változók (egy vagy több elemes, pl.: Var 1, Var [1,2,3] függvények visszatérési értékei pl.: FunName(Par1,Par2) összetett kifejezések 2.1.4 Utasítások Az értékadó utasítás a := operátor bal oldalán levő változóhoz hozzárendeli az operátor jobb oldalán levő kifejezés értékét. Pl.: a := 20; b[0] = d**2; 1:= 20/6; e = REAL_TO_INT; A bináris értékadás nem a létradiagramban megszokott logikai függvényként, hanem műveletként oldható meg. Ha az értékadás nem hajtódik végre, akkor a változó megőrzi addigi értékét, nem íródik felül. 3

Pl.: IF A THEN B:=1; END_IF; Funkcióblokk hívás Egy funkcióblokk hívása a nevével és a zárójelben felsorolt paraméterlistával történik. Általános formátuma: FunctionBlock ( FB név InputParameter1 := kifejezés1, InputParameter2 := kifejezés2, ); RETURN A RETURN utasítást használjuk, ha ki akarunk lépni egy függvényből, funkcióblokkból, vagy programból, mielőtt befejeződne. Így ez a függvény funkcióblokkon belül, a kódrészben használható. A program a RETURN végrehajtása után a funkcióblokk végén folytatódik. Fontos, hogy a függvény neve és a hozzá tartozó változók összerendelése megtörténjen, mielőtt a RETURN végrehajtódna. Feltételes utasítások A feltételes utasításokkal választani lehet a végrehajtandó műveletek között a kijelölt Boole műveletek értékétől függően. Két fajtája létezik, a két érték közötti választás ( IF THEN ELSE...), vagy a kifejezés értékétől függő több érték közötti választás(case). Az IF THEN és az IF THEN ELSE utasítások közvetlenül is követhetik egymást. A CASE utasításban a kifejezéseknek integer értékűnek kell lennie. IF THEN ELSE kifejezés általános felépítése: IF <Boole kifejezés> THEN <utasítások> ELSE <utasítások> END_IF 4

CASE.OF utasítás általános felépítése: CASE <Integer kifejezés> OF <1.érték> <1.utasítás> <2.érték> <2.utasítás> <3.érték> <3.utasítás> ELSE <utasítás> END_CASE Iterációs utasítások Az ST nyelvben három utasítás konstrukció szolgál az ismétlési ciklusok elvégzésére. Ezek a WHILE, REPEAT, FOR utasítások. A ciklusok két részből állnak, ciklusmagból és feltétel vizsgálatból. A ciklusmagban vannak az ismétlődően elvégzendő utasítások. WHILE DO struktúra A feltétel egy Boole kifejezés lehet. Ez a struktúra egy elöl tesztelő ciklusszervezésű, így előfordulhat, hogy a ciklusmag egyszer sem hajtódik végre. Általános alakja: WHILE <Boole kifejezés> DO <utasítások> END_WHILE REPEAT UNTIL struktúra A REPEAT UNTIL konstrukció megengedi egy vagy több utasítás végrehajtását, amíg a feltétel teljesül. A feltétel csak olyan kifejezés lehet, amelynek Boole típusú eredménye van. Ebben a konstrukcióban a ciklusmag legalább egyszer végrehajtódik, tehát hátul tesztelő ciklus. REPEAT UNTIL konstrukció általános felépítése: REPEAT <utasítások> UNTIL <Boole kifejezés> END_REPEAT 5

FOR TO BY DO utasítás: Az iterációs utasítások harmadik típusa az, amelynél az ismétlés értéke egy iterációs változó értékétől függ. Ez egy integer típusú változó (SINT, INT, DINT), amely az ismétléseket számolja. Az iterációs változó kezdeti, végső és inkrementáló értékének azonos típusú integer adattípusúnak kell lennie. Az iterációs változó értékét a ciklusmagon belül utasítással megváltoztatni tilos. FOR TO BY DO konstrukció általános alakja: FOR <iterációs változó kezdeti értéke> TO<végérték kifejezés> BY<inkrementáló kifejezés> DO<utasítások> END_FOR A FOR DO ciklus lépései: 1. Az iterációs változó inicializálása 2. Az iterációs változó végső értékének kiértékelése 3. A ciklusmag végrehajtása 4. Az iterációs változó növelése 5. Ugrás a második lépésre EXIT: Mindhárom iterációs megoldás lehetővé teszi a ciklusból való közvetlen kilépést az EXIT utasítással. Ilyenkor az iterációs ciklus végét jelző END utáni utasítás kerül végrehajtásra. Az EXIT utasítás csak a legbelső szinten hat. Pl.: j:=0; WHILE (j<10) DO i:=0; WHILE (i<10) DO IF (i=j) THEN EXIT; ELSE i:=i+1; END_IF; END_WHILE; j:=j+1; END_WHILE 6

2.2 Utasításlistás programnyelv Az utasításlistás programozási nyelv (IL = Instruction List) a PLC kialakulásával egyidős és szöveges rendszerű nyelvek közé tartozik. Alacsony szintű, és inkább gépi kódhoz közelinek mondható, parancsok (utasítások) sorozatából áll. A Siemens PLC-nél az utasításlista nem IL-ként, hanem STL-ként (Statement List) található meg, vagy németül AWL (Anweisungs-Liste) rövidítésnek felel meg. Általánosságban elmondható: A programozandó feladatokat lépésekre (Network) kell bontani és sorszámot adni, úgy, mint a létradiagrammos programozásnál. Sorrendi végrehajtással valósul meg a programfutás, azaz lépésről lépésre, kivételt csak az ugró utasítások jelentenek. A lépések eleje, a műveleti rész (operációs), meghatározza, hogy a CPU-nak milyen műveletet kell végeznie. Feltételeket adhatunk meg logikai kapcsolatokkal, leggyakrabban: ÉS, VAGY, NEM. Siemensnél az utasítás angol vagy német nevének rövidítése. A lépések második fele az operandusrész, megadja, hogy mivel kell a műveletet végrehajtani. Általában kimenet be- vagy kikapcsolása, idő vagy számláló indítása. A program végét jelezni kell a ciklikus ismétlődés érdekében. Akkumulátorok a processzor azon kijelölt regiszterei, amelyek a belső adatmozgatásokban és számítások elvégzésében vesznek részt. Az S7-300-ban két darab 32 bites akkumulátor található. A műveletek elvégzése után az eredmény mindig idekerül. Az adattípusa a művelettől és az operandusok adattípusától függ. Az IL-ben az akkumulátorhoz kapcsolódóan CR (Current Result) jelöléssel találkozhatunk. Az alábbi táblázatokban néhány IL és STL utasítás látható. 7

2. ábra IL utasítások 3. ábra STL utasítások Egyes utasítások működése befolyásolható úgynevezett módosító postfixekkel. Leggyakrabban a negálást használják, amelyet N-nel jelölnek, de beszélhetünk még egymásba ágyazásról, amit zárójelekkel lehet megvalósítani, illetve feltételes végrehajtásról is, aminek jele C, és ez csak akkor megy végbe, ha az akkumulátor értéke TRUE. Ezek a postfixek egymással kombinálhatók. Ugró utasítás során az akkumulátor-érték nem változik. Minden sor címkézhető és a program tetszőleges címkére ugorhat. Lehet előre, illetve hátra is ugrani (ez kerülendő, veszélyes!) Negálás 8

Egymásba ágyazás Fontos figyelni a művelet-precendeciára, azaz a műveletek elsőbbségi sorrendjére. Az utasításlistás nyelvben könnyen eltéveszthető! Pl.: A továbbiakban egy példaprogram látható, amely egy futófényt valósít meg négy lámpával, valamint időzítőkkel STL nyelven, létradiagrammal. 9

3. Grafikus szimbólumokat alkalmazó nyelvek A grafikus szimbólumokat alkalmazó nyelveket tekintve 3 típust különböztethetünk meg, ezek a: - létradiagramos, - funkcióblokkos, valamint a - sorrendi folyamatábrás. 10

3.1 Létradiagram A létradiagramos programozási nyelv az áramúttervből alakult ki, így a létradiagramok az áramúttervek szoftveres megfelelőinek tekinthetők. A relé jellegű programozási nyelv kidolgozásának igénye már a GM pályázatában is szerepelt, de széles körű elterjedését csak a grafikai lehetőségekkel ellátott fejlesztőrendszerek eredményezték. Szükségességét főként a relés hálózatok tervezéséhez értő szakemberek könnyebb átképzése indokolta, de a mai napig a legnépszerűbb programozási nyelv. Népszerűségét a könnyű követhetőség, a gyors hibadiagnosztikálásnak köszönheti. Mára a LAD messze túllépett a relé jellegű logikán, különösen a funkcióblokkok kezelése révén. Ennek ellenére villamos szemléletet igényel. Mivel a létradiagramos programozáshoz áramútterv ismerete is szükséges, ezért ennek ismertetése is fontos. 3.1.1 Áramútterv Az érintkezős vezérlések elvi rajzát általában áramutas rendszerben készítik. Ennek lényege, hogy a tápfeszültség párhuzamosan haladó két vezetéke közé rajzoljuk a működtető érintkezők és a működtetett készülékek soros vagy vegyes kapcsolású láncát, lehetőleg a működésüknek megfelelő sorrendben. Áramútrajz készítésének szabályai: A működtető áramkörök áramútját két függőleges egyenes vonal, az áramforrás két pólusa közötti vízszinteses egyenes mentén ábrázoljuk. A vízszintes vonalak, vagyis az áramutak kereszteződését kerülni kell Az áramutakat lehetőleg a működtető feszültségek szerint kell csoportosítani. A hatást kifejtő elem (mágneskapcsoló, relé tekercse, jelzőlámpa) egyik sarkát mindig közvetlenül kötjük be a jobb oldali függőleges egyenesbe, a földelt ágba földzárlat esetén így nem következik be hibás működés. Az építőelemeket mindig nyugalmi helyzetükben ábrázoljuk. 3.1.2 A létradiagramos programozás grafikus elemei A LAD elemei: vezetékek, csatlakozások, kontaktusok, tekercsek, függvények, funkcióblokkok. Az egy tekercshez tartozó hálózatrészt network-nek nevezik. Egy létrafokon belül a kontaktusok sorba vagy párhuzamosan kapcsolva hozzák létre a logikai kapcsolatot. Egy PLC fejlesztő szoftvere korlátozott számú soros és párhuzamos kapcsolatot eredményez. A létradiagramban kialakíthatók különböző logikai függvények. Néhány példa ezekre: 11

4. ábra Példák LAD logikai függvényekre 3.1.3 A létradiagram konstrukciója A létradiagram konstrukcióját az 5. ábra mutatja. 5. ábra Létra diagram konstrukciója 3.1.4 A létradiagramos programozás szabályai a létradiagramon a működtető és működtetett elemek szimbólumaiból álló áramutakat két függőleges vonal között vízszintes egyenes mentén ábrázoljuk a működtetett elem egyik sarkát mindig a jobb oldali függőleges egyenesbe kötjük be, ha van, egyébként szabadon hagyjuk. az összetartozó működtető és működtetett elemeket azonos betűjellel látjuk el. a létrafokok közötti vezetékek kereszteződését kerülni kell 12

az egyes áramutakat a sorrendi működés szerint ábrázoljuk a létradiagram egyes elemit feszültségmentes állapotban ábrázoljuk A létradiagram egyes elemeihez további adatok is írhatók a függvényblokkok és funkcióblokkok valamennyi funkciójáról gondoskodni kell. egy speciális funkció általában nem csatlakozhat közvetlenül a bal oldali referenciavezetékre, csak logikai feltételen keresztül. Ez alól kivétel a FB alkalmazás esete, amikor is legalább egy bemeneti Boole változónak kell a bal oldali sínre csatlakoznia A bal és jobb oldali vezetékre csak Boole típusú változó csatlakoztatható A létradiagramon visszacsatoló ágak is kialakíthatók A PLC ciklikus működésű. A programvégrehajtás fázisában a teljes kód feldolgozásra kerül. Minden egyes ciklusban a teljes létradiagram kiértékelésre kerül. Ezt szemlélteti a következő ábra: 6. ábra PLC ciklus 3.2 Funkcióblokkos program A funkcióblokkos programozást a szakirodalmakban és a programozó szoftverekben általában az FBD, mint Function Block Diagram rövidítéssel jelölik. A funkcióblokkokat szokás még szoftver IC-knek is nevezni. A nyelv alapját az képezi, hogy olyan blokkokat kapcsolunk egymáshoz, melyek előre megírt kis programokat tartalmaznak, így létrehozva a vezérlést. Egy-egy funkcióblokkban lehetőségünk van elhelyezni további funkcióblokkokat is. Ezek alapján az FBD felépítése leginkább a szubrutinok felépítéséhez hasonlítható. Az egyes blokkokat grafikusan általában téglalapokként ábrázolják. A bemenetek mindig a blokkok bal oldalán, a kimenetek pedig mindig a blokkok jobb oldalán helyezkednek el. Ebből adódóan a jelfolyam mindig a bal oldalról a jobb oldal felé halad. 13

Az alábbi ábrán a Siemens (1. és 2.) és Schneider (3.) cégek programozói felületén megjelenített AND blokkokat láthatjuk. 7. ábra AND funkcióblokkok ábrázolása Az egyes blokkoknak két főbb jellemzője van: - a bemeneti és kimeneti paraméterek, valamint belső változók adatai és az - az algoritmus, amely mindig végrehajtódik, amikor a funkcióblokk meghívásra és végrehajtásra kerül. Az algoritmus dolga, hogy feldolgozza az általunk megadott bemeneti paramétereket és a bemeneti változók adatait, majd ezek alapján előállítja a kimeneti jelet. A program felépítését illetően szinte teljesen megegyezik a létradiagramos megoldással. Az egyes blokkokat szintén huzalozással kell összekapcsolni és a kimenetek és bemenetek megadása is szinte ugyanaz. Ebből adódóan általában a létradiagram és a funkcióblokkos programok szoftveresen átkonvertálhatók egymásba. Az alábbi képen látható példákon három nyomógomb van megvalósítva, melyek közül, ha kettő aktív, a kimenet is aktív lesz, mind a három gomb lenyomása esetén viszont nem. Mint az a képeken is látható, a létradiagramos megvalósítás sokkal egyszerűbb, illetve átláthatóbb. 8. ábra Példa FBD példa megvalósításához 14

9. ábra FBD példa LAD megvalósítása 3.3 Sorrendi folyamatábra A PLC-k programozására használt egy másik programozási nyelv a sorrendi folyamatábra (Sequential Flow Chart SFC). Ez a Grafcet francia nemzeti szabvány továbbfejlesztése. A Grafcet leírási módszer a számítástechnikából jött folyamatábrák és a digitális technikából jött jelölés alapján épül fel. Ez azt jelenti, hogy a logikai eszközök jele négyzet vagy téglalap alakú, a kiértékelés fentről lefelé, illetve balról jobbra történik. Az 10. ábra az SFC i-edik sejtjét mutatja. 10. ábra Az SFC általános sejtje Az automatizálandó folyamatot grafikusan írjuk le, lépésenként. Minden lépéshez (Step) átmeneti feltételek (Translations) és akciók (Actions) tartoznak, melynek eredményeképpen a 15

következő lépésbe ugrik a folyamat, ha a feltétel teljesül, melyet az 11. ábra szemlétet. Minden feltételhez és akcióhoz egy külön alprogram társul. A folyamatábrán a sorrendi hálózat egy-egy belső állapotát, ebbe az állapotba kerülés feltételeit, és az állapothoz rendelt kimeneti eseményeket tüntetjük fel. Ez a módszer az 1 az n -ből típusú állapotkódolásból fejlődött ki. Általában a feltételeknél a bemenetet, míg az akcióknál a kimenetet programozzuk. A szintaktika itt is fontos! Az utolsó feltétel teljesülése után a programnak mindig vissza kell térnie a kezdőlépéshez, ezt a ciklusosságot is programoznunk kell. Ez a programozási nyelv lényegesen eltér a többitől, mivel ezt nem lehet közvetlenül a PLC-be letölteni. Ebből a nyelvből egy már az előzekben ismertetett programkódot generál a szoftver. 11. ábra Lépésekhez tartozó feltételek és akciók Az IEC szabvány szerint a folyamat előrehaladás során lehet ÉS eseményeket programozni, rajzolni. A program mindkét ágon folytatódik. Az ÉS jellegű elágazásokat kétvonalas átmenettel jelöljük, ez látható a 12. ábrán. 12. ábra "ÉS" elágazás jelölése 16

A 4. ábra több ÉS lépés közötti szinkronizált átmentet mutat több esetre. Az a) részen látható helyzetben nem lehet átmenet, mert míg az 5. és 6. lépés aktív (ezt a pont jelzi), addig a 4. lépés nem. Mivel ÉS elágazásról van szó, igy az átmenet tiltását jelenti mindez. Ilyenkor közömbös a (3) feltétel állapota (a+bc=0 vagy 1). 13. ábra Több lépés közötti "ÉS" elágazás A b) részen mind a 4., 5. és 6. lépés aktív, az átmenet elért, de (3) feltétel nem teljesül (a+bc=0), ezért nem léphető át az átmenet. A c) részen teljesül mind a 4., 5. és 6. lépés és a (3) feltétel is, így kötelező az átlépés. A d) rész az ábrán a c) utáni állapot bekövetkezését tükrözi. Az átlépés párhuzamosan megy végbe melynek eredménye, hogy: - a 7. és 8. lépés aktív, - a 4., 5., és 6. lépés inkatív, - a 7. és 8. lépés elérhető lesz. Lehet továbbá VAGY eseményeket programozni, rajzolni, ezeket egyvonalas átmenettel jelöljük (14. ábra). Ilyenkor csak az egyik ágon folytatódhat a továbbhaladás, ezt úgy lehet elérni, hogy az ágak belépésénél kizáró feltételeket adunk meg. Ezeknél az eseményeknél megadható, hogy a program először melyik feltételt vizsgálja meg. 14. ábra "VAGY" elágazás jelölése 17

Az SFC igényli a legkevesebb ismeretet egy program megvalósításához. Az SFC-s programok programozásához létradiagramos programozás keretében egy léptetőrelé funkciót vezettek be (stepplader STL). Az 15. ábrán az SFC és LAD közötti kapcsolat kerül szemléltetésre. 15. ábra Léptetőrelé a) funkció SFC-ben és realizálása LAD-ban b) Az ábrán az S600 lépés az X400 bemenettel ativálódik, majd az S601 lépéssel törlődik. Az S600 lépéshez az Y430 kimenet van rendelve. A törlési funkció nem kerül feltüntetésre, hasonlóan az SFC szimbólumhoz. Kérdések 1. Írja fel a PLC programnyelveket és azok csoportosítását! 2. Utasításlistás nyelvnél milyen szerepe van az akkumulátornak? 3. Melyik programnyelvvé alakítható át legegyszerűbben a funkcióblokkos programnyelv? 18