Sekventielt funktionsdiagram - Sequential function chart
Sekventielt funktionsdiagram ( SFC ) er et grafisk programmeringssprog, der bruges til programmerbare logiske controllere (PLC'er). Det er et af de fem sprog defineret af standarden IEC 61131-3 . SFC-standarden er defineret som Forberedelse af funktionsdiagrammer til kontrolsystemer og var baseret på GRAFCET (i sig selv baseret på binære petri-net ).
Det kan bruges til at programmere processer, der kan opdeles i trin.
Hovedkomponenterne i SFC er:
- Trin med tilhørende handlinger;
- Overgange med tilhørende logiske forhold;
- Direkte forbindelser mellem trin og overgange.
Trin i et SFC-diagram kan være aktive eller inaktive. Handlinger udføres kun for aktive trin. Et trin kan være aktivt efter et af to motiver:
- Det er et indledende trin som specificeret af programmøren.
- Den blev aktiveret under en scanningscyklus og blev ikke deaktiveret siden.
Trin aktiveres, når alle trin over det er aktive, og forbindelsesovergangen er superabel (dvs. dens tilknyttede tilstand er sand). Når en overgang er bestået, deaktiveres alle ovenstående trin på én gang, og efter alle trin nedenfor aktiveres på én gang.
Handlinger forbundet med trin kan være af flere typer, hvoraf de mest relevante er Kontinuerlig (N), Sæt (S) og Nulstil (R). Bortset fra den åbenlyse betydning af Set and Reset, sikrer en N-handling, at dens målvariabel er sat til 1, så længe trinnet er aktivt. En SFC-regel siger, at hvis to trin har en N-handling på det samme mål, skal variablen aldrig nulstilles til 0. Det er også muligt at indsætte LD ( Ladder Diagram ) -handlinger i et SFC-program (og dette er standardmåden, for eksempel at arbejde på heltalvariabler).
SFC er et iboende parallelt sprog , idet flere kontrolstrømme - Program Organization Units (POU'er) i standardens sprogbrug - kan være aktive på én gang.
Ikke-standardudvidelser til sproget inkluderer makroaktioner: dvs. handlinger inde i en programenhed, der påvirker tilstanden for en anden programenhed. Den mest relevante sådan makrohandling er "forcering", hvor en POU kan bestemme de aktive trin i en anden POU.