Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
In the world of industrial automation, sequential control is everywhere — from bottle transport on a beverage filling line and temperature-controlled batch reactors, to elevator dispatching and water treatment sequences. The common thread across all these applications is the need for a clear, unambiguous way to describe “what should happen when, and where to go next.” IEC 60848 defines GRAFCET (GRAphe Fonctionnel de Commande Etape-Transition — the “Step-Transition Control Function Chart”), an international standard graphical specification language purpose-built for exactly this need. This article, based on the IEC 60848:2013 edition, systematically introduces GRAFCET’s core concepts, examines its relationship with IEC 61131-3 SFC, and provides practical engineering design guidance.
A GRAFCET chart consists of the following fundamental elements arranged in strict alternation — step, transition, step, transition — forming a chained structure:
| Element | Graphical Representation | Meaning | Engineering Note |
|---|---|---|---|
| Step (Etape) | Numbered square box; initial step uses a double-lined box | A system “state” during which associated actions are executed | It is recommended to number steps starting from 0. There must be exactly one initial step (with limited exceptions for encapsulation). |
| Transition | Short horizontal bar crossing the connecting line | The condition that must be true to advance from preceding step(s) to succeeding step(s) | Transition conditions can be Boolean expressions, time conditions (e.g., t1/X10/5s), or edge-triggered expressions (↑S1 for rising edge). |
| Directed Link (Arc) | Vertical or angled line with arrowhead | Connects steps to transitions, defining the evolution path (default direction is top-to-bottom) | Any non-default direction must show an explicit arrowhead. Convergence/divergence points use “=” (AND) for parallel branches. |
| Action | Rectangle attached to the right side of a step | Operation performed while the step is active (output set, variable assignment, timer start, etc.) | Actions carry qualifiers: N (non-stored), S (set/latching), R (reset), L (time-limited), D (delayed), P (pulse), C (conditional), among others. |
| Macro-step | Large box prefixed with “M” | Encapsulates a group of sub-steps into a reusable hierarchical module | A macro-step expansion must contain exactly one entry step and one exit step. Dramatically improves readability for complex systems. |
| Enclosing Step | Step symbol marked with “*” | Contains a nested, complete GRAFCET chart within itself | Used to express multi-level control hierarchies or forcing/enabling sub-structures. |
| Directed Actions & Forcing | Action block specifying a target GRAFCET chart name | Forces (F/) or enables (E/) a separate GRAFCET chart into a specific execution state | Forcing is the strongest form of intervention — the receiver chart jumps directly to the forced step number, regardless of its current state. |
GRAFCET execution follows five fundamental evolution rules. These are what truly differentiate GRAFCET from ordinary flowcharts:
This is the most frequently asked question in engineering practice: “Are GRAFCET and SFC (Sequential Function Chart) the same thing?” The answer: they are closely related, but their roles are distinct.
IEC 60848 GRAFCET is an implementation-independent specification language. It does not depend on any particular PLC platform or programming language. It is purely oriented toward control engineers defining logical specifications. Its origins trace back to Grafcet, proposed by AFCET (France) in 1977, and later standardized by the IEC (first edition 1988, second edition 2013).
IEC 61131-3 SFC is one of the implementation languages defined within the PLC programming language standard. SFC elements (steps, transitions, action blocks) map directly to executable code and share a runtime framework with other IEC 61131-3 languages such as Ladder Diagram (LD) and Structured Text (ST). SFC syntax is derived from GRAFCET, but incorporates additional engineering implementation details (e.g., precise action qualifier semantics bound to scan cycles).
| Feature | IEC 60848 GRAFCET | IEC 61131-3 SFC |
|---|---|---|
| Role | Specification language | Implementation language |
| Standard Versions | 1988 / 2013 (Ed.1 / Ed.2) | 1993 / 2003 / 2013 (within 61131-3) |
| Action Qualifiers | N, S, R, L, D, P, C, A, SD, SL, DS | N, R, S, L, D, P, SD, DS, SL, P0, P1 |
| Hierarchical Control (Forcing/Enabling) | ✓ Full F/ E/ semantics | Δ Varies by PLC implementation |
| Macro-steps | ✓ Standard definition | ✓ Supported (SFC action blocks can call sub-SFCs) |
| Time/Edge Conditions | Built-in syntax: t1/X5/3s, ↑S2 | Implemented via Boolean variables in transition conditions |
| Design Intent | Human-and-machine-readable specification document | Machine-executable industrial control program |
Faced with a 50-page process specification (e.g., “Fully Automatic CIP Cleaning System”), how do you efficiently extract a GRAFCET model? Here is a proven workflow:
Pitfall 1: Unstable Step — A step’s transition condition is already true at the moment the step becomes active, causing the step to “flash through” without being observable. Solution: make the transition condition edge-triggered (use the ↑ operator), or reset the condition within the step’s actions before the next evolution.
Pitfall 2: Deadlocked Convergence — A parallel convergence (AND-join) requires all preceding branches to be active before proceeding. If one branch terminates prematurely due to a fault, the convergence point waits forever. Solution: add a watchdog structure with timeout-triggered forcing to a recovery or safe-state step.
Pitfall 3: Unintended Non-determinism — When two mutually exclusive transition conditions are simultaneously true, GRAFCET’s implicit left-to-right priority resolves the choice. However, relying on graphical layout for determinism is fragile — another engineer rearranging the chart could alter behavior. Best practice: make branch conditions logically exclusive by design (e.g., temp ≥ 80 and temp < 80).
| Qualifier | Name | Behavior | Typical Application |
|---|---|---|---|
| N | Non-stored | Action active continuously while step is active; stops when step deactivates | Motor run, valve hold, indicator lamp |
| S | Set (Stored) | Action set to ON when step activates; remains ON after step deactivation | Latching status signal, alarm latch |
| R | Reset | Action reset to OFF when step activates (clears a previously S-set action) | Clear latched alarm, reset counter |
| L | Time-Limited | Action active for at most the specified duration after step activation | Timed flushing, pre-lubrication |
| D | Delayed | Action starts after specified delay from step activation | Star-delta start delay, pre-purge |
| P | Pulse | Action produces a single scan-cycle pulse upon step activation | Counter increment, data latch, one-shot event trigger |
| C | Conditional | Action executes only while step is active AND an additional Boolean condition is true | Conditional heating, optional agitation |
Q1: Is GRAFCET a programming language or a design tool?
GRAFCET is fundamentally a specification language, not a programming language. Its purpose is to enable control engineers to precisely define system sequential behavior in graphical form before writing any code. While many PLC programming environments allow direct generation of SFC code from GRAFCET charts, the standard itself is independent of any concrete programming language or platform.
Q2: My PLC only supports Ladder Diagram. Is GRAFCET still useful to me?
Absolutely. You can use GRAFCET to design your control logic, then manually translate the step/transition/action structure into the classic “step coil + interlock contacts” pattern in Ladder Diagram (i.e., a step-sequencer ladder). In fact, many veteran PLC engineers sketch GRAFCET charts on paper even in pure ladder environments, because graphical representation is far easier to review, communicate, and validate than raw ladder rungs.
Q3: How should emergency stops be handled in GRAFCET?
IEC 60848 recommends a hierarchical GRAFCET structure: a top-level “Mode Management” GRAFCET chart governs all subsystem charts via forcing commands. When an emergency stop is triggered, the top-level chart issues a forcing command to all subsystems, directing them to a predefined safe-state step. Critically, the emergency stop must also act on the hardwired safety circuit — GRAFCET forcing is a logic-level supplement and must never replace safety PLCs or safety relay hardwiring.
Q4: Can GRAFCET describe continuous process control (e.g., PID loops)?
Not well. GRAFCET is fundamentally a discrete-event system modeling tool — it describes “sequences of states,” not “continuous variable evolution.” For PID loops and analog continuous control, GRAFCET is well-suited to managing mode transitions (e.g., heating/holding/cooling phases), but the continuous control algorithms inside each phase (PID parameters, setpoint profiles, etc.) should be implemented within action blocks by calling Structured Text routines or function blocks.