Diagrama funcțională secvențială - Sequential function chart
Diagrama funcțională secvențială ( SFC ) este un limbaj grafic de programare utilizat pentru controlere logice programabile (PLC). Este una dintre cele cinci limbi definite de standardul IEC 61131-3 . Standardul SFC este definit ca, Pregătirea diagramelor funcționale pentru sistemele de control și a fost bazat pe GRAFCET (el însuși bazat pe rețele Petri binare ).
Poate fi folosit pentru a programa procese care pot fi împărțite în pași.
Principalele componente ale SFC sunt:
- Pași cu acțiuni asociate;
- Tranziții cu condiții logice asociate;
- Legături direcționate între pași și tranziții.
Pașii dintr-o diagramă SFC pot fi activi sau inactivi. Acțiunile sunt executate numai pentru pași activi. Un pas poate fi activ pentru unul dintre cele două motive:
- Este un pas inițial așa cum este specificat de programator.
- A fost activat în timpul unui ciclu de scanare și nu a fost dezactivat de atunci.
Pașii sunt activați când toți pașii de deasupra ei sunt activi și tranziția de conectare este superabilă (adică starea sa asociată este adevărată). Când este trecută o tranziție, toți pașii de mai sus sunt dezactivați simultan și după ce toți pașii de mai jos sunt activați simultan.
Acțiunile asociate cu pașii pot fi de mai multe tipuri, cele mai relevante fiind Continuu (N), Set (S) și Reset (R). În afară de semnificația evidentă a Set și Reset, o acțiune N asigură că variabila țintă este setată la 1 atâta timp cât pasul este activ. O regulă SFC afirmă că, dacă doi pași au o acțiune N pe aceeași țintă, variabila nu trebuie niciodată resetată la 0. Este, de asemenea, posibilă inserarea acțiunilor LD ( Ladder Diagram ) în cadrul unui program SFC (și acesta este modul standard, de exemplu, pentru a lucra la variabile întregi).
SFC este un limbaj inerent paralel în care fluxurile multiple de control - Unitățile de organizare a programului (POU) în limbajul standardului - pot fi active simultan.
Extensiile non-standard ale limbajului includ macroacțiuni: adică acțiuni în interiorul unei unități de program care influențează starea unei alte unități de program. Cea mai relevantă astfel de macroacțiune este „forțarea”, în care un POU poate decide pașii activi ai unui alt POU.