Ahol az 5. fejezet folyamatábrája végrehajthatóvá válik — lépések, átmenetek, akciók és a minősítők.
- 15.1 Miért kell külön nyelv a sorrendi feladatokra?
- 15.2 Lépés, átmenet, akció
- 15.3 Akciók és minősítők
- 15.4 Alternatív és párhuzamos ág
- 15.5 A feldolgozás sorrendje
- 15.6 A folyamatábrától az SFC-ig
- 15.7 Kidolgozott példa
- 15.8 Nyelv vagy strukturáló eszköz?
- 15.9 Mikor válasszunk SFC-t?
- Összefoglalás
- Gyakorlatok
- Ellenőrző kérdések
- Tudáspróba
- A fejezet forrásai
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:
- Nem látszik. A
CASEszerkezet szövegben mutatja a lépéseket. Hogy melyikből melyikbe lehet átmenni, azt csak azIF-ek elolvasásából derítheted ki. - Kézzel kell kezelni a lépésváltást. Neked kell átírni az
iLepesvá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.
- 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.
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.
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 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 |
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 (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 á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.”
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.
- 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
| # | 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 |
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.
- Rajzold meg a folyamatábrát papíron vagy rajzolóprogramban (5. fejezet).
- Ellenőrizd: minden döntésnek van-e kimenete? Van-e kiút minden állapotból?
- Vidd át SFC-be, lépésről lépésre.
- 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:
╔═══════════════╗
║ 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 |
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
„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 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 azSD,DS,SLkombinációk. - Az
Sminősítőhöz mindig tervezzR-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
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)?
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.
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?
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.
É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
- Miért jobb az SFC egy lépéssorozathoz, mint a
CASE-alapú állapotgép? - Mi a lépés, mi az átmenet, és mi az akció?
- Hogyan jelöljük a kezdőlépést?
- Kétféleképpen adható meg az átmenet feltétele — melyek ezek, és miben térnek el?
- Mit tesz az
N, azSés azRminősítő? - Miben tér el a
Lés aDminősítő? - Hányszor fut le a
Pminősítővel ellátott akció, és mikor? - Miért veszélyes az
SminősítőRnélkül? - Hogyan dönti el a rendszer, melyik alternatív ág fut le?
- Mikor lép tovább a folyamat egy párhuzamos ág után?
- Sorold fel a feldolgozás hat lépését!
- Miért lép a lánc ciklusonként legfeljebb egyet?
- Milyen sorrendben futnak az IEC-akciók, és mi ennek a következménye?
- 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
-
IEC 61131-3 – ismertető (Edition 4.0, 2025). PLCopen. (2026-07-29) Az SFC szabvány szerinti meghatározása. ↩
-
IEC 61131-3 Edition 4.0, 2025-05 – a szabvány nyilvános előnézete (scope, tartalomjegyzék). (2026-07-29) ↩
-
CODESYS SFC Help: Qualifiers for Actions in SFC. CODESYS GmbH / ABB-tükör. (2026-07-31) ↩↩
-
CODESYS SFC Help: SFC Elements: Step and Transition (V4.4.0.0). CODESYS GmbH. (2026-07-31) ↩↩↩
-
CODESYS SFC Help: Processing Order in SFC. CODESYS GmbH / ABB-tükör. (2026-07-31) ↩↩↩↩