Ahol az 5. fejezet folyamatábrája végrehajthatóvá válik — lépések, átmenetek, akciók és a minősítők.

Emlékszel az 5. fejezetre? Ott megtanultuk lerajzolni egy technológiai folyamat lépéseit: mi történik, mikor lépünk tovább, hol ágazik el a folyamat.

Ez a fejezet arról szól, hogy ez a rajz futtathatóvá válik. Az SFC (Sequential Function Chart, sorrendi funkcióterv) szinte ugyanaz az ábra — csak most a vezérlő is érti.

15.1 Miért kell külön nyelv a sorrendi feladatokra?

Sok ipari feladat lépéssorozat: adagolás → keverés → melegítés → ürítés → mosás. Ezt a 12. fejezetben CASE-alapú állapotgéppel oldottuk meg — és az működik is.

De van vele két baj:

  1. Nem látszik. A CASE szerkezet szövegben mutatja a lépéseket. Hogy melyikből melyikbe lehet átmenni, azt csak az IF-ek elolvasásából derítheted ki.
  2. Kézzel kell kezelni a lépésváltást. Neked kell átírni az iLepes változót, neked kell figyelni, hogy egy lépés csak egyszer aktiválódjon.

Az SFC ezt a két dolgot beépítve adja: a lépéslánc rajz, és a lépésváltást a rendszer kezeli.

💡 A könyv legerősebb didaktikai íve
  1. fejezet: megrajzolod a folyamatábrát → 15. fejezet: ugyanaz az ábra fut.

Ha az 5. fejezet gyakorlatait rendesen megcsináltad, itt már csak a jelöléseket kell megtanulnod. A gondolkodás ugyanaz.

15.2 Lépés, átmenet, akció

Az SFC három alapelemből épül fel.

Az SFC alapelemei Alaphelyzet kezdőlépés (init step) — dupla kerettel jelölve bIndit átmenet (transition) — logikai feltétel Adagolas N bAdagoloSzelep akció minősítővel bTele Urites bUres vissza az alaphelyzetbe A lépések mit csinálunk, az átmenetek mikor lépünk tovább kérdésre felelnek.
15.1. ábra. Az SFC alapelemei: kezdőlépés, lépések, átmenetek és egy akció minősítővel.
📗 Lépés (step)

A folyamat egy állapota. Minden pillanatban meghatározott, hogy melyik lépés (vagy melyik lépések) aktív. A lépéshez akciók rendelhetők, amelyek akkor futnak, amikor a lépés aktív.

📗 Átmenet (transition)

A lépések közötti feltétel. A gyártói megfogalmazás szerint: „Az átmenetnek tartalmaznia kell a feltételt ahhoz, hogy a következő lépés aktív legyen, amint a feltétel értéke TRUE-t ad.”4

Az átmenet feltétele kétféleképpen adható meg:4

Forma Mit tartalmazhat?
helyben (inline) „logikai változó, logikai cím, logikai konstans, vagy logikai eredményt adó utasítás (példa: (i<100) AND b)”
külön objektumként egy átmenet- vagy tulajdonságobjektum neve; ez „több utasítást is tartalmazhat, tetszőleges kóddal”

Kezdőlépés

Minden SFC-nek van kezdőlépése (init step) — ez az, amelyik induláskor aktív. A CODESYS-ben az Init Step gombbal, vagy az elem tulajdonságában állítható be.4 Az ábrán dupla keret jelöli.

15.3 Akciók és minősítők

A lépéshez rendelt akció az, ami ténylegesen csinál valamit — például bekapcsol egy szelepet. De nem mindegy, hogyan: az akció mellett álló betű, a minősítő (qualifier) dönti el.

A leggyakoribb akcióminősítők időben lépés aktív N non-stored amíg a lépés aktív S stored a lépés kikapcsolása után is fut — amíg R nem érkezik R reset kikapcsolja az S-sel indított akciót L time limited a megadott idő elteltéig (vagy a lépés végéig) D time delayed késleltetés csak a késleltetés után indul P pulse pontosan kétszer: be- és kikapcsoláskor A minősítők kombinálhatók is: SD, DS, SL.
15.2. ábra. A leggyakoribb minősítők időbeli viselkedése egy lépés aktív időszakához képest.

A teljes lista, gyártói meghatározásokkal:3

Minősítő Név Mit tesz?
N Non-stored „az akció addig aktív, amíg a lépés”
R overriding Reset „az akció deaktiválódik”
S Set (Stored) „amint a lépés aktív, végrehajtja. A végrehajtás a lépés deaktiválása után is folytatódik, amíg reset nem érkezik”
L time Limited „amint a lépés aktív, végrehajtja. Az akció addig fut, amíg a lépés deaktiválódik, vagy a megadott idő letelik”
D time Delayed „csak a megadott késleltetés letelte után kezdi el, ha a lépés még mindig aktív”
P Pulse „az akciót pontosan kétszer hajtja végre: egyszer a lépés aktiválásakor, egyszer a deaktiválásakor”
SD Stored and time Delayed a késleltetés letelte után indul, és resetig fut
DS Delayed and Stored a késleltetés letelte után indul, ha a lépés még aktív, és resetig fut
SL Stored and time limited a lépés aktiválásakor indul, és a megadott idő letelteig vagy resetig fut
⚠️ Az `S` minősítő és az elfelejtett `R`

Ugyanaz a csapda, mint a set tekercsnél (13. fejezet): amit S-sel indítottál, azt csak R állítja le. Ha nem teszel be R-t egy későbbi lépésbe, az akció a folyamat végén is tovább fut.

Szabály: minden S-hez tervezz R-t, és írd be a lépéslánc rajzába, hol lesz.

💡 A `P` minősítő furcsasága

A P (pulzus) kétszer fut le: a lépés be- és kikapcsolásakor.3 Ez elsőre meglepő — sokan azt hiszik, csak egyszer.

Ha egy műveletet csak belépéskor akarsz elvégezni, használj belépési akciót (entry action) helyette, vagy vizsgáld meg a P mindkét lefutásának hatását.

15.4 Alternatív és párhuzamos ág

A lépéslánc nem csak egyenes lehet.

Alternatív és párhuzamos ág Alternatív ág — egyszeres vonal Dontes bA bB Ut1 Ut2 Folytatas Csak EGY ág fut le A rendszer az ágak első átmenetét balról jobbra vizsgálja, és az első igaz ágban lép tovább. Párhuzamos ág — dupla vonal Indit Futes Keveres Kesz MINDEN ág egyszerre fut A dupla vonal után minden ág első lépése aktiválódik. A találkozás után csak akkor megyünk tovább, ha mindegyik ág utolsó lépése aktív, és az átmenet is igaz.
15.3. ábra. Az alternatív ág egyszeres, a párhuzamos ág dupla vízszintes vonallal jelölt.

Alternatív ág — egyszeres vonal

Több lehetséges út, de csak egy fut le. A rendszer így dönt:5

„A CODESYS balról jobbra haladva végigmegy az alternatív ágak első átmenetén. A következő lépés abban az ágban aktiválódik, ahol elsőként talál TRUE értékű átmenetet.”

⚠️ A sorrend számít

Mivel a vizsgálat balról jobbra történik, két egyszerre igaz feltétel közül a bal oldali nyer. Ez ugyanaz a logika, mint az IF … ELSIF láncnál (12. fejezet): a legszűkebb vagy legfontosabb feltételt tedd balra.

Párhuzamos ág — dupla vonal

Több út egyszerre fut. A rendszer:5

„A CODESYS minden ág első lépését aktiválja. … Az ág vége utáni lépés akkor aktiválódik, ha minden ág utolsó lépése aktív, és a dupla vonal utáni átmenet TRUE-t ad.”

Ez a szinkronizálás: a folyamat megvárja a leglassabb ágat.

💡 Mikor melyik?
  • Alternatív ág: ha a folyamat elágazik és másképp folytatódik — például receptválasztás, hibaág, kézi/automata út.
  • Párhuzamos ág: ha egyszerre több dolog történik, és mindnek be kell fejeződnie — például fűtés és keverés együtt.

15.5 A feldolgozás sorrendje

Ez az a pont, ahol az SFC „varázslata” szétfoszlik — és ez jó hír, mert ettől lesz kiszámítható.

Az SFC ugyanúgy a PLC-cikluson belül fut, mint minden más. Minden ciklusban ez a hat lépés történik:5

Amit az SFC minden ciklusban elvégez — ebben a sorrendben 1. Az IEC-akciók törlése a minősítők belső vezérlő- jelzőinek visszaállítása 2. Kilépési akciók amikor a lépés deaktiválódik 3. Belépési akciók amint a lépés aktiválódott 4. Időellenőrzés, lépésakciók 5. IEC-akciók végrehajtása ábécésorrendben, két menetben (előbb a kikapcsoltak, majd az aktívak) 6. Átmenetek vizsgálata, a következő lépések aktiválása Amit ebből meg kell jegyezni Az SFC nem varázslat: a PLC ugyanúgy ciklikusan fut, és minden ciklusban ezt a hat lépést végzi el. Az átmenetek vizsgálata a ciklus végén történik — ezért lép a lánc ciklusonként legfeljebb egyet, nem fut végig azonnal.
15.4. ábra. Az SFC feldolgozási sorrendje egy PLC-cikluson belül.
# Mi történik?
1. Az IEC-akciók visszaállítása — „a CODESYS visszaállítja a minősítők (N, R, S, L, D, P, SD, DS, SL) belső akcióvezérlő jelzőit”
2. Kilépési akciók — „amikor a lépés deaktiválódik”
3. Belépési akciók — „amint az előző lépés átmenete feldolgozásra került és TRUE-t ad, tehát a lépés aktiválódott”
4. Időellenőrzés, lépésakciók végrehajtása
5. IEC-akciók végrehajtása — „ábécésorrendben”, két menetben: előbb az előző ciklusban deaktivált lépésekéi, majd az aktívakéi
6. Átmenetek vizsgálata, a következő lépések aktiválása
⚠️ Két következmény, amit ismerni kell

1. A lánc ciklusonként legfeljebb egyet lép. Az átmenetek vizsgálata a sorrend végén történik, tehát egy ciklusban egy lépésváltás valósul meg. Egy tízlépéses folyamat nem fut végig egyetlen ciklus alatt — és ez így helyes.

2. Az IEC-akciók ábécésorrendben futnak.5 Ez azt jelenti, hogy két akció közötti sorrend az elnevezésüktől függ, nem attól, hogy hol vannak a rajzon. Ha a sorrend számít, nevezd el őket rendezetten (A_Elokeszit, B_Indit, C_Zar) — vagy tedd egy akcióba őket.

15.6 A folyamatábrától az SFC-ig

Vegyük elő az 5. fejezet gondolkodásmódját, és tegyük mellé az SFC-t.

Folyamatábra (5. fejezet) SFC (15. fejezet)
tevékenység téglalap lépés, hozzárendelt akcióval
döntési rombusz átmenet logikai feltétellel
elágazás két úton alternatív ág
(nincs közvetlen megfelelője) párhuzamos ág
nyíl a következő lépéshez a lépéseket összekötő vonal
ciklus (visszatérés) visszavezetés egy korábbi lépéshez

A különbség egyetlen mondatban: a folyamatábra dokumentum, az SFC program.

💡 A gyakorlati munkamódszer
  1. Rajzold meg a folyamatábrát papíron vagy rajzolóprogramban (5. fejezet).
  2. Ellenőrizd: minden döntésnek van-e kimenete? Van-e kiút minden állapotból?
  3. Vidd át SFC-be, lépésről lépésre.
  4. Ami a folyamatábrán tevékenység volt, abból akció lesz; ami döntés volt, abból átmenet.

Ez a módszer azért jó, mert a logikai hibákat a papíron találod meg, nem a gépnél.

15.7 Kidolgozott példa

Feladat. Egy keverőtartály: az indítógomb hatására nyisson az adagolószelep, amíg a szintjelző „tele” jelet nem ad. Utána egyszerre induljon a fűtés és a keverő, és mindkettő addig menjen, amíg a hőmérséklet el nem éri az alapjelet, illetve amíg a keverés ideje le nem telik. Ha mindkettő kész, nyisson az ürítőszelep, amíg a tartály ki nem ürül. Utána térjen vissza alaphelyzetbe.

A lépéslánc:

KÓD
        ╔═══════════════╗
        ║  Alaphelyzet  ║   (kezdőlépés)
        ╚═══════════════╝
                |
              --+--  bIndit
                |
        ┌───────────────┐
        │   Adagolas    │──[ N ]──[ bAdagoloSzelep ]
        └───────────────┘
                |
              --+--  bTele
                |
        ════════╪════════            (párhuzamos ág nyitása)
           |             |
     ┌─────────┐   ┌─────────┐
     │  Futes  │   │ Keveres │──[ N ]──[ bKeveroMotor ]
     └─────────┘   └─────────┘   (a Futes akciója: [ N ]──[ bFutes ])
           |             |
         --+--         --+--
        rHomOk       tKevKesz
           |             |
     ┌─────────┐   ┌─────────┐
     │FutesKesz│   │ KevKesz │      (üres várakozólépések)
     └─────────┘   └─────────┘
           |             |
        ════════╪════════            (párhuzamos ág zárása)
                |
              --+--  TRUE
                |
        ┌───────────────┐
        │    Urites     │──[ N ]──[ bUritoSzelep ]
        └───────────────┘
                |
              --+--  bUres
                |
           (vissza az Alaphelyzetre)

Néhány tervezési döntés, amit érdemes végiggondolni:

Döntés Miért?
a fűtés és a keverés párhuzamos ág egyszerre kell futniuk, és mindkettőnek be kell fejeződnie
mindkét ágban saját átmenet zárja a munkalépést (rHomOk, illetve tKevKesz) a fűtés és a keverés egymástól függetlenül fejeződik be — az ág a saját feltételére vár
az ágak üres várakozólépésben (FutesKesz, KevKesz) állnak meg a párhuzamos ág csak akkor zárható, ha mindkét ág az utolsó lépésénél jár
a párhuzamos ág utáni átmenet TRUE a szinkronizálást a várakozólépések végzik: mire mindkettő aktív, nincs több várnivaló
minden akció N minősítővel a szelep addig legyen nyitva, amíg a lépés tart — nem tovább
a lánc visszatér az alaphelyzetbe különben egyszeri lefutás után megállna
⚠️ Ami ebből a példából kimaradt — szándékosan

Nincs benne vészág: mi történik, ha menet közben leáll a rendszer? Ez a valóságban kötelező, és jellemzően egy alternatív ággal vagy egy külön „biztonságos állapot” lépéssel oldják meg.

A vészleállítás maga viszont — ahogy a 24. fejezet kimondja — hardveres, a vezérlőtől függetlenül. Az SFC-ben csak azt kezeljük, hogy a lánc rendezetten kerüljön biztonságos állapotba.

15.8 Nyelv vagy strukturáló eszköz?

Ez az a pontosítás, amitől egy vizsgafelelet kiemelkedik.

A szabvány saját megfogalmazása szerint:1

„Grafikus és egyenértékű szöveges elemek további készlete, amelynek neve Sequential Function Chart (SFC), a programozható vezérlők programjainak és funkcióblokkjainak belső szervezésére van meghatározva.”

Vagyis a szabvány az SFC-t nem egyszerűen „ötödik nyelvként” kezeli, hanem a program belső szervezésére szolgáló elemkészletként. A negyedik kiadás tartalomjegyzékében is a 6.7. pont alatt szerepel — a közös elemek között, nem a nyelvi fejezetekben.2

💡 A pontos vizsgaválasz

„Az SFC-t a gyakorlatban ötödik nyelvként kezeljük, de a szabvány saját meghatározása szerint ez grafikus és egyenértékű szöveges elemek készlete a program belső szervezésére. Ezért szerepel a szabványban a közös elemek között, nem a nyelvi fejezetekben — és ezért lehet egy SFC-lépés akcióját bármelyik másik nyelven megírni.”

És ez az utolsó mondat gyakorlati következmény is: az SFC lépéseinek akciói ST-ben, LD-ben vagy FBD-ben egyaránt megírhatók. Az SFC a váz, a többi nyelv a tartalom.

15.9 Mikor válasszunk SFC-t?

Feladat SFC? Miért?
Lépéssorozat, recept, gyártási ciklus igen erre találták ki
Több egyidejű részfolyamat szinkronizálása igen párhuzamos ág
Kézi/automata üzemmódváltás inkább nem átláthatatlanná teszi a lánc szerkezetét
Folyamatos szabályozás nem nincsenek lépések; FBD vagy ST való rá
Egyszerű ki-be logika nem túl nehézkes; LD elég
Riasztáskezelés nem nem sorrendi feladat
⚠️ Az SFC nem mindenre való

Az SFC akkor jó, ha a feladat tényleg lépéssorozat. Ha valaki mindent SFC-ben ír meg, a végeredmény egy áttekinthetetlen, tucatnyi ágból álló diagram lesz, amelyben nehezebb eligazodni, mint egy jól tagolt ST-programban.

Jó szabály: ha a folyamatábrád rajzolása közben azon kaptad magad, hogy döntési rombuszok tucatjait rajzolod tevékenységek nélkül, akkor a feladat nem sorrendi — és nem SFC-be való.

Összefoglalás

  • Az SFC a lépéssorozatok nyelve, és közvetlen folytatása az 5. fejezet folyamatábrájának: ott dokumentum, itt program.
  • Három alapelem: lépés (állapot, akciókkal), átmenet (logikai feltétel), akció (amit a lépés csinál). A kezdőlépés dupla kerettel jelölt.
  • Az átmenet feltétele lehet helyben megadott logikai kifejezés, vagy külön objektum, amely akár több utasítást is tartalmazhat.
  • A minősítő dönti el, hogyan fut az akció: N (amíg a lépés tart), S (resetig), R (leállítás), L (időkorlátig), D (késleltetve), P (kétszer: be- és kikapcsoláskor), valamint az SD, DS, SL kombinációk.
  • Az S minősítőhöz mindig tervezz R-t — különben az akció a folyamat végén is fut.
  • Alternatív ág (egyszeres vonal): csak egy fut le, a rendszer balról jobbra vizsgál, és az első igaz ágban lép tovább.
  • Párhuzamos ág (dupla vonal): minden ág egyszerre fut; a folytatáshoz minden ág utolsó lépésének aktívnak kell lennie.
  • A feldolgozás minden ciklusban hat lépésben történik; az átmenetek vizsgálata a végén van, ezért a lánc ciklusonként legfeljebb egyet lép.
  • Az IEC-akciók ábécésorrendben futnak — ha a sorrend számít, az elnevezés dönt.
  • A szabvány az SFC-t a program belső szervezésére szolgáló elemkészletként határozza meg; a lépések akciói bármelyik másik nyelven megírhatók.

Gyakorlatok

🛠️ 15.1. feladat — Rajzold át a folyamatábrát

Vedd elő az 5. fejezetben megrajzolt folyamatábrádat, és alakítsd át SFC-lépéslánccá papíron. Jelöld meg, melyik tevékenységből lett akció, melyik döntésből átmenet. Van-e olyan része, amelyre a folyamatábrán nem volt jelölés (például párhuzamosság)?

🛠️ 15.2. feladat — Építsd meg a keverőtartályt

Vidd be CODESYS-be a 15.7. alfejezet lépésláncát, és futtasd szimulációban. Write Values paranccsal működtesd a bemeneteket, és kövesd, melyik lépés aktív. Figyeld meg, hogy a lánc ciklusonként egyet lép — lassítsd le a taskot t#500ms-ra, hogy jól lásd.

🛠️ 15.3. feladat — Próbáld ki a minősítőket

Ugyanabban a programban rendelj egy akcióhoz sorban a következő minősítőket, és minden esetben jegyezd fel, mikor és meddig fut az akció: N, S, L (2 másodperc), D (1 másodperc), P. A P-nél számold meg, hányszor futott le. Egyezik-e a gyártói leírással?

🛠️ 15.4. feladat — Az elfelejtett reset

Rendelj egy akciót S minősítővel az „Adagolas” lépéshez, de ne tegyél sehova R-t. Futtasd végig a folyamatot, és nézd meg, mi van az akcióval az „Alaphelyzet” lépésben. Utána javítsd ki. Írd le egy mondatban, mi lett volna ebből egy valódi adagolószeleppel.

🛠️ 15.5. feladat — Alternatív ág sorrendje

Építs be egy alternatív ágat: ha iRecept = 1, az egyik úton, ha iRecept = 2, a másikon haladjon a folyamat. Utána szándékosan állítsd be úgy, hogy mindkét feltétel egyszerre igaz legyen. Melyik ág fut le? Cseréld meg az ágakat, és próbáld újra. Mit tanultál ebből az ágak sorrendjéről?

Ellenőrző kérdések

  1. Miért jobb az SFC egy lépéssorozathoz, mint a CASE-alapú állapotgép?
  2. Mi a lépés, mi az átmenet, és mi az akció?
  3. Hogyan jelöljük a kezdőlépést?
  4. Kétféleképpen adható meg az átmenet feltétele — melyek ezek, és miben térnek el?
  5. Mit tesz az N, az S és az R minősítő?
  6. Miben tér el a L és a D minősítő?
  7. Hányszor fut le a P minősítővel ellátott akció, és mikor?
  8. Miért veszélyes az S minősítő R nélkül?
  9. Hogyan dönti el a rendszer, melyik alternatív ág fut le?
  10. Mikor lép tovább a folyamat egy párhuzamos ág után?
  11. Sorold fel a feldolgozás hat lépését!
  12. Miért lép a lánc ciklusonként legfeljebb egyet?
  13. Milyen sorrendben futnak az IEC-akciók, és mi ennek a következménye?
  14. Hogyan határozza meg a szabvány az SFC-t, és mi ennek a gyakorlati következménye?

Tudáspróba

Válaszd ki az egyetlen helyes választ!

1. A kezdőlépés jelölése: a) dupla keret; b) vastag keret; c) szaggatott keret; d) színes kitöltés.

2. Az átmenet feltétele: a) egész típusú kifejezés; b) logikai eredményt adó kifejezés; c) csak változó lehet; d) csak konstans lehet.

3. Az N minősítő: a) az akció a lépés deaktiválása után is fut; b) az akció kétszer fut le; c) az akció addig aktív, amíg a lépés; d) az akció késleltetve indul.

4. Az S minősítővel indított akció leállításához kell: a) a lépés deaktiválása; b) semmi, magától leáll; c) a task újraindítása; d) egy R minősítőjű akció.

5. A P minősítővel ellátott akció lefutásainak száma: a) egy; b) kettő; c) amíg a lépés tart; d) végtelen.

6. Alternatív ágnál a rendszer: a) minden ágat lefuttat; b) balról jobbra vizsgál, és az első igaz ágban lép tovább; c) jobbról balra vizsgál; d) véletlenszerűen választ.

7. Párhuzamos ág utáni lépés akkor aktiválódik, ha: a) bármelyik ág befejeződött; b) az első ág befejeződött; c) minden ág utolsó lépése aktív, és az átmenet igaz; d) letelt egy megadott idő.

8. Az átmenetek vizsgálata a feldolgozási sorrendben: a) az első lépés; b) nem része a sorrendnek; c) a harmadik lépés; d) az utolsó lépés.

9. Az IEC-akciók végrehajtási sorrendje: a) ábécésorrendben; b) a rajzon elfoglalt helyük szerint; c) létrehozási sorrendben; d) véletlenszerű.

10. A szabvány szerint az SFC: a) a hatodik programozási nyelv; b) grafikus és egyenértékű szöveges elemek készlete a program belső szervezésére; c) csak grafikus nyelv; d) gyártói kiterjesztés.

A megoldókulcs a B függelékben található.

A fejezet forrásai


  1. IEC 61131-3 – ismertető (Edition 4.0, 2025). PLCopen. (2026-07-29) Az SFC szabvány szerinti meghatározása. ↩

  2. IEC 61131-3 Edition 4.0, 2025-05 – a szabvány nyilvános előnézete (scope, tartalomjegyzék). (2026-07-29) ↩

  3. CODESYS SFC Help: Qualifiers for Actions in SFC. CODESYS GmbH / ABB-tükör. (2026-07-31) ↩↩

  4. CODESYS SFC Help: SFC Elements: Step and Transition (V4.4.0.0). CODESYS GmbH. (2026-07-31) ↩↩↩

  5. CODESYS SFC Help: Processing Order in SFC. CODESYS GmbH / ABB-tükör. (2026-07-31) ↩↩↩↩

Mennyire volt hasznos ez a fejezet?

Még nincs értékelés.