Wat is SFC?
Sequential Function Chart (SFC) is een grafische programmeertaal uit de norm IEC 61131-3 waarmee een PLC een proces aanstuurt als een vaste volgorde van stappen, met tussen elke twee stappen een transitie die bepaalt wanneer de besturing naar de volgende stap gaat. Aan elke stap hangen acties, zoals een pomp starten of een klep openen, en elke transitie is een voorwaarde, zoals “tank vol” of “timer verlopen”. SFC is daarmee de natuurlijke taal voor batchprocessen, machinecycli en opstart- en stopprocedures binnen procesautomatisering en industriële automatisering. De acties en transities zelf worden geschreven in de andere talen van de norm: Ladder Logic, FBD of ST.
🧠 Hoe werkt een Sequential Function Chart?
Een SFC is een netwerk waarin stappen en transities elkaar altijd afwisselen: twee stappen zijn nooit direct verbonden, en twee transities ook niet. De bouwstenen zijn:
| Element | Functie | Voorbeeld |
|---|---|---|
| Initiële stap | Stap die actief is bij het starten van het programma (dubbel omkaderd) | Idle of Wacht_op_start |
| Stap | Een toestand van het proces; actief of inactief | Vullen, Verwarmen, Mengen |
| Transitie | Booleaanse voorwaarde tussen stappen | Niveau >= 90 %, Vullen.T > T#5m |
| Actie | Logica die bij een actieve stap hoort, met een kwalificatie | Klep V101 open, menger aan |
| Divergentie / convergentie | Splitsen en weer samenvoegen van paden | Alternatieve of parallelle takken |
| Sprong | Terug naar een eerdere stap, bijvoorbeeld voor een nieuwe cyclus | Na Leegmaken terug naar Idle |
De uitvoering volgt twee eenvoudige regels. Een transitie schakelt alleen door als alle stappen direct erboven actief zijn en de voorwaarde waar is. Op dat moment worden die bovenliggende stappen tegelijk inactief en de onderliggende stappen tegelijk actief. De PLC evalueert dit elke programmacyclus, dus een SFC draait gewoon binnen de cyclische scan, die in de praktijk meestal tussen 1 en 100 ms ligt.
Per stap houdt de norm twee vlaggen bij: Stapnaam.X is waar zolang de stap actief is, en
Stapnaam.T geeft aan hoe lang de stap al actief is. Die twee maken bewaking eenvoudig,
bijvoorbeeld een alarm als Vullen.T langer dan vijf minuten wordt.
🔧 Welke actiekwalificaties kent SFC?
Een actie krijgt een kwalificatie die bepaalt wanneer en hoe lang ze uitgevoerd wordt. Dit is waar SFC krachtiger is dan een simpele stappenteller.
| Kwalificatie | Betekenis | Typisch gebruik |
|---|---|---|
| N | Non-stored: actief zolang de stap actief is | Klep open tijdens vullen |
| S | Set (stored): blijft actief tot een R-actie | Roerwerk aan over meerdere stappen |
| R | Reset: zet een eerder gezette actie uit | Roerwerk uit in de eindstap |
| L | Time limited: actief tot een tijd verstreken is of de stap eindigt | Claxon maximaal 3 s |
| D | Time delayed: start pas na een vertraging, zolang de stap actief blijft | Ventilator na 10 s |
| P, P1, P0 | Puls: één cyclus, bij (P1) activeren of (P0) deactiveren van de stap | Teller ophogen, batchregistratie |
| SD, DS, SL | Combinaties van opslaan met vertraging of tijdslimiet | Nalooptijd die doorloopt na de stap |
L, D, SD, DS en SL vereisen een tijdwaarde. Leveranciers verschillen in details, zoals of een SD-actie ook doorloopt wanneer de stap al verlaten is, dus controleer het gedrag in de handleiding van uw platform voordat u erop vertrouwt.
🔀 Hoe werken alternatieve en parallelle takken?
SFC kent twee soorten vertakkingen:
- Alternatieve tak (selectieve divergentie) - één enkele lijn met meerdere transities eronder; precies één pad wordt gekozen, bijvoorbeeld recept A of recept B. Als meerdere voorwaarden tegelijk waar zijn, krijgt bij de meeste implementaties de linkertak voorrang, dus maak de voorwaarden bij voorkeur wederzijds uitsluitend.
- Parallelle tak (simultane divergentie) - een dubbele horizontale lijn; alle paden worden tegelijk actief, bijvoorbeeld twee transportbanden die gelijktijdig starten. Bij de dubbele lijn waar de paden samenkomen wacht de transitie tot alle laatste stappen van de takken actief zijn. Zo synchroniseert SFC parallelle processen zonder extra code.
Een slecht ontworpen netwerk kan onveilig zijn (een parallelle tak wordt via een alternatieve tak verlaten, zodat stappen blijven hangen) of onbereikbaar (een stap kan nooit actief worden). De norm beschouwt zulke structuren als fout, en de meeste editors weigeren ze bij het compileren.
🕰️ Waar komt SFC vandaan?
SFC is de PLC-variant van GRAFCET, een Franse methode om sequentiële besturingen te specificeren die zelf afgeleid is van Petri-netten.
| Jaar | Gebeurtenis |
|---|---|
| 1977 | Werkgroep van de Franse vereniging AFCET publiceert het rapport dat als geboorte van GRAFCET geldt |
| 1982 | AFNOR normaliseert GRAFCET als NF C03-190 |
| 1988 | Internationale norm IEC 848 (later hernummerd tot IEC 60848) |
| 1993 | Eerste editie van IEC 61131-3 neemt SFC op naast LD, FBD, ST en IL |
| 2002, 2013 | Nieuwe edities van IEC 60848, de huidige uit 2013 |
| 2025 | Vierde editie van IEC 61131-3; met het schrappen van IL telt de norm nog vier talen, waaronder SFC |
Het verschil is vooral doel: GRAFCET (IEC 60848) is een specificatietaal om het gedrag van een machine te beschrijven, SFC (IEC 61131-3) is een implementatietaal die op een PLC draait. Strikt genomen beschrijft IEC 61131-3 SFC als een set elementen om programma’s en function blocks te structureren, niet als zelfstandige taal.
🔄 Wat is het verschil tussen SFC en de andere IEC 61131-3-talen?
| Taal | Vorm | Sterk in | Rol naast SFC |
|---|---|---|---|
| SFC | Grafisch, stappen en transities | Volgordes, synchronisatie | Bovenste laag: welke fase is actief |
| Ladder Logic | Grafisch, relaislogica | Booleaanse logica, interlocks | Transitievoorwaarden en eenvoudige acties |
| FBD | Grafisch, functieblokken | Signaalverwerking, regelingen | Acties met PID- of analoge logica |
| ST | Tekstueel, Pascal-achtig | Berekeningen, data | Complexe acties, receptberekeningen |
In een goed opgezet project bepaalt SFC wanneer iets gebeurt, terwijl de andere talen bepalen hoe. Interlocks die altijd moeten gelden, zoals “pomp nooit aan bij laag niveau”, horen buiten de SFC in een permanent uitgevoerd blok, zodat ze niet afhangen van welke stap actief is.
De sterke en zwakke punten van SFC op een rij:
| Voordelen | Beperkingen |
|---|---|
| Processtructuur in één oogopslag zichtbaar, net als een toestandsmachine | Ongeschikt voor berekeningen en continue regelingen |
| Actieve stap en vastgelopen transitie direct zichtbaar bij storingen | Grote netwerken worden snel onoverzichtelijk |
| Parallelle takken synchroniseren zonder extra code | Veel parallelle takken maken gedrag moeilijk te voorspellen |
| Sluit aan op batchmodellen en modulair ontwerp | Details van kwalificaties en tijdsgedrag verschillen per leverancier |
🏭 Waar wordt SFC in de praktijk gebruikt?
- Batchprocessen - in ISA-88 zit de volgorde van een recept in procedures en phases, en die worden vaak als SFC uitgewerkt; zie ook batchbesturingssystemen en het verschil tussen discreet, batch en continu
- Reinigingsprocessen - CIP-cycli in de voedingsmiddelen- en zuivelindustrie: voorspoelen, loog, tussenspoelen, zuur, naspoelen
- Machinecycli - verpakkingsmachines, assemblagestations en robotcellen (robotsequenties), vaak gecombineerd met het toestandsmodel van PackML
- Opstart- en stopprocedures - gecontroleerd opstarten van ketels, compressoren of zuiveringsstappen
Typische sectoren zijn de chemie, de voedingsmiddelen- en drankenindustrie, de farmacie en de waterzuivering: overal waar een installatie een vaste reeks fasen doorloopt.
Vrijwel elk platform ondersteunt SFC: Siemens als S7-GRAPH in TIA Portal en als SFC-editor in het procesleidingssysteem PCS 7, Rockwell Automation in Studio 5000, en CODESYS en TwinCAT met een eigen SFC-editor. De bediening ziet de actieve stap via HMI en SCADA, terwijl MES en de historian batchstatus en stapduur vastleggen.
🧭 Hoe ontwerpt u een robuuste SFC?
- Begin met een toestandsdiagram op papier - benoem stappen als toestanden (“Vullen”), niet als handelingen, en leg vast welke transities er tussen zitten.
- Houd netwerken klein - richtlijn: één SFC per unit of equipment module, met hooguit enkele tientallen stappen; deel grotere processen op in deelprocedures.
-
Bewaak elke stap - geef elke stap een maximale duur via
Stapnaam.T, vaak twee tot drie keer de normale doorlooptijd, en ga bij overschrijding naar een foutstap met een duidelijke melding. - Ontwerp foutafhandeling expliciet - een vaste tak voor hold, abort en veilige stop, in plaats van operators die stappen handmatig forceren.
- Regel herstart na spanningsuitval - bepaal of de sequentie verder mag in de laatste stap of terug moet naar de initiële stap.
- Test op een simulatie of digital twin - doorloop ook de foutpaden, niet alleen de normale cyclus. Binnen Industrie 4.0 gebeurt dit steeds vaker virtueel, met een soft-PLC tegen een procesmodel, voordat de installatie bestaat.
Veelvoorkomende fouten en hun oorzaak:
| Probleem | Mogelijke oorzaak |
|---|---|
| Stap blijft hangen | Transitie wordt nooit waar, bijvoorbeeld een defecte sensor |
| Sequentie springt onverwacht | Overlappende voorwaarden in een alternatieve tak |
| Deadlock na parallelle tak | Eén tak bereikt de samenvoeging nooit |
| Uitgang blijft aan na stopzetting | S-actie zonder bijbehorende R-actie |
🛡️ Hoe verhoudt SFC zich tot functionele veiligheid?
SFC wordt gebruikt voor veiligheidsgerelateerde procedures zoals een gecontroleerde shutdown of een opstartcontrole, maar de veiligheidsfunctie zelf hoort er niet in. Een safety-PLC wordt meestal geprogrammeerd met een beperkte, gecertificeerde subset van de talen, in de praktijk FBD of LD met gecertificeerde functieblokken; SFC is daar doorgaans niet beschikbaar. De normen IEC 61508, IEC 61511 voor de procesindustrie en ISO 13849 en IEC 62061 voor machineveiligheid stellen eisen aan verificatie en validatie van die safety-logica. De gebruikelijke opzet is daarom: de SFC stuurt het normale proces, de safety-PLC grijpt onafhankelijk en fail-safe in.
🔐 Hoe beveiligt u SFC-programma’s?
Wie PLC-code kan wijzigen, kan een sequentie laten overslaan, verlengen of stilletjes aanpassen. Stuxnet liet in 2010 zien hoe dat werkt: de malware wijzigde code op Siemens S7-PLC’s die frequentieregelaars aanstuurden en verborg die wijzigingen voor de engineeringsoftware. Een SFC is geen apart aanvalsdoel, maar omdat het de volgorde van het proces vastlegt, heeft een wijziging directe fysieke gevolgen. Maatregelen volgens IEC 62443:
| Maatregel | Doel |
|---|---|
| Netwerksegmentatie | Engineeringtoegang alleen vanuit de eigen zone |
| Engineeringstation met MFA | Alleen bevoegden kunnen downloaden |
| Application Whitelisting | Geen onbekende software op het engineeringstation |
| Version Control en Change Management | Elke wijziging van een sequentie herleidbaar en goedgekeurd |
| Logging | Downloads en online wijzigingen vastleggen |
| Patchmanagement | Kwetsbaarheden in engineeringsoftware en firmware dichten |
| Backup | Bekende goede versie snel terugzetten |
❓ Veelgestelde vragen
Is SFC een echte programmeertaal?
SFC staat in IEC 61131-3 als een van de vier PLC-talen, maar de norm beschrijft het strikt genomen als een structuur om programma’s en function blocks in stappen te verdelen. De acties en transities binnen een SFC worden geschreven in Ladder Diagram, FBD of Structured Text.
Wat is het verschil tussen SFC en GRAFCET?
GRAFCET (IEC 60848) is een specificatietaal om het sequentiële gedrag van een machine te beschrijven, ongeacht de techniek. SFC (IEC 61131-3) is afgeleid van GRAFCET en is bedoeld om die sequentie daadwerkelijk op een PLC te programmeren.
Wat is S7-GRAPH?
S7-GRAPH is de SFC-implementatie van Siemens voor S7-PLC’s in STEP 7 en TIA Portal. Het volgt de principes van SFC met stappen, transities en acties, aangevuld met Siemens-specifieke functies zoals stapbewaking en interlock-voorwaarden per stap.
Wanneer kiest u SFC in plaats van ST of ladder?
SFC is de beste keuze als een proces een vaste volgorde van fasen doorloopt, zoals een batch, een reinigingscyclus of een machinecyclus. Voor continue regelingen, berekeningen of eenvoudige combinatorische logica zijn ST, FBD of ladder geschikter, vaak als acties binnen de SFC.
Kan een SFC meerdere stappen tegelijk actief hebben?
Ja, een SFC kan via een parallelle tak meerdere stappen tegelijk actief hebben. De takken komen weer samen bij een synchronisatie, waar de volgende transitie pas schakelt als alle parallelle takken hun laatste stap hebben bereikt.
Mag SFC gebruikt worden in een safety-PLC?
In gecertificeerde safety-programma’s is SFC meestal niet beschikbaar; daar worden FBD of ladder met gecertificeerde functieblokken gebruikt. SFC stuurt wel vaak de normale procesvolgorde, terwijl een onafhankelijke safety-PLC de veiligheidsfuncties uitvoert.
📌 Samengevat
SFC is de IEC 61131-3-taal voor volgordes: stappen, transities en acties maken van een batch, reinigingscyclus of machinecyclus een overzichtelijk en goed te diagnosticeren programma. Combineer SFC met ladder, FBD of ST voor de logica, houd veiligheidsfuncties in een aparte safety-PLC en beheer wijzigingen aan sequenties streng, omdat ze direct het fysieke proces bepalen.
