Tabla de contenidos
- 1. ¿Qué es el GRAFCET?
- 2. Historia y normas (IEC 60848 / IEC 61131-3)
- 3. Elementos fundamentales del GRAFCET
- 4. Las 5 reglas de evolución
- 5. Estructuras del GRAFCET
- 6. Niveles del GRAFCET
- 7. GRAFCET vs. Máquina de Estados (FSM)
- 8. GEMMA: Gestión de modos de marcha
- 9. Tutorial práctico: Diseñando un GRAFCET paso a paso
- 10. Del GRAFCET al PLC: Implementación
- 11. Errores comunes y buenas prácticas
- 12. Herramientas y software
- 13. 🛠️ Taller: Construye tu propio GRAFCET
- 14. Conclusiones
1. ¿Qué es el GRAFCET?
GRAFCET (Graphe Fonctionnel de Commande, Étapes/Transitions) es un método gráfico estandarizado para describir el comportamiento secuencial de un sistema automatizado. Es, en esencia, el "plano" que se dibuja antes de escribir una sola línea de código en el PLC.
Imagina que vas a construir una casa: no empiezas a poner ladrillos sin tener el plano del arquitecto. En automatización industrial, el GRAFCET es ese plano. Define qué hace la máquina, en qué orden y bajo qué condiciones pasa de un estado a otro.
¿Para qué sirve?
Para describir de forma clara e inequívoca el funcionamiento secuencial de un proceso antes de programarlo en un PLC, HMI o SCADA. Es el puente entre la especificación funcional (EF) y el código.
¿Para quién es?
Para todos los actores del proyecto: el ingeniero de proceso que define la EF, el programador de PLC, el integrador SCADA, el técnico de mantenimiento y el operador de planta. Es un lenguaje universal.
GRAFCET es independiente de la tecnología: no importa si usas Siemens, Rockwell, Schneider, Omron o Beckhoff. No importa si programas en Ladder, ST, FBD o SFC. GRAFCET es el diseño; el lenguaje del PLC es la implementación.
2. Historia y normas (IEC 60848 / IEC 61131-3)
GRAFCET nació en Francia en 1977, creado por AFCET (Association Française pour la Cybernétique Économique et Technique) y ADEPA (Agence Nationale pour le Développement de la Production Automatisée). La necesidad era clara: los sistemas de automatización se volvían cada vez más complejos y no existía un método estándar para describirlos.
La evolución de las normas ha seguido este camino:
| Año | Norma | Descripción |
|---|---|---|
| 1977 | GRAFCET original | Creación del método gráfico por AFCET/ADEPA en Francia. |
| 1988 | IEC 60848 (1.ª ed.) | Estandarización internacional: GRAFCET como lenguaje de especificación. |
| 1993 | IEC 61131-3 | Nace SFC (Sequential Function Chart) como lenguaje de programación de PLC, directamente inspirado en GRAFCET. |
| 2002 | IEC 60848 (2.ª ed.) | Revisión ampliada: acciones, forzado, macro-etapas, encapsulación. |
3. Elementos fundamentales del GRAFCET
Un GRAFCET se construye con cuatro elementos básicos que, combinados, permiten describir cualquier proceso secuencial por complejo que sea:
Etapa (Étape)
Representa un estado estable del sistema. Se dibuja como un cuadrado con un número identificativo. La etapa inicial tiene doble borde. Mientras una etapa está activa, ejecuta sus acciones asociadas.
Transición
La condición de paso entre dos etapas. Se dibuja como una línea horizontal que cruza el enlace vertical. La receptividad es la condición lógica (sensor, temporizador, botón) que, al ser verdadera, provoca el franqueo.
Acción
Lo que el sistema hace cuando una etapa está activa. Se representa como un rectángulo unido a la derecha de la etapa. Puede ser una salida digital, el arranque de un motor, una señal, etc.
Enlace dirigido
Línea vertical que conecta etapas y transiciones de forma alterna. La dirección por defecto es de arriba hacia abajo; si el flujo va hacia arriba (bucle), se añade una flecha.
Veamos la representación gráfica de un GRAFCET mínimo con 3 etapas:
Tipos de acciones asociadas a una etapa
Las acciones no son solo "encender" y "apagar". La norma IEC 60848 define varios tipos de acciones que permiten describir comportamientos temporales complejos:
| Tipo | Símbolo | Comportamiento | Ejemplo |
|---|---|---|---|
| Continua | — | Activa mientras la etapa está activa | Motor en marcha |
| Condicional | C |
Activa si la etapa está activa Y se cumple una condición adicional | Motor ON si temperatura < 60°C |
| Retardada | D / t |
Se activa tras un retardo desde la activación de la etapa | Ventilador ON 5s después del arranque |
| Limitada en el tiempo | L |
Se activa con la etapa pero se desactiva tras un tiempo | Señal sonora 3s al arrancar |
| Impulso | P |
Pulso de un ciclo en la activación (P1) o desactivación (P0) de la etapa | Incrementar contador al entrar |
| Memorizada (SET/RESET) | S / R |
Activa o desactiva y mantiene el estado tras la desactivación de la etapa | Abrir válvula y mantenerla abierta |
4. Las 5 reglas de evolución del GRAFCET
El comportamiento dinámico del GRAFCET se rige por cinco reglas fundamentales que definen cómo evoluciona el sistema. Son las "leyes físicas" del GRAFCET:
Inicialización
La situación inicial del GRAFCET se caracteriza por la activación de las etapas iniciales (marcadas con doble borde). Se establece al encender el sistema o al realizar un reset.
Franqueo de una transición
Una transición es franqueada (disparada) si y solo si: a) todas las etapas inmediatamente anteriores están activas, Y b) la receptividad asociada es verdadera.
Evolución de las etapas activas
Cuando una transición es franqueada: las etapas inmediatamente siguientes se activan y las etapas inmediatamente anteriores se desactivan simultáneamente.
Franqueos simultáneos
Si varias transiciones pueden ser franqueadas en el mismo instante, se franquean todas simultáneamente. No existe prioridad entre transiciones que ocurren al mismo tiempo.
Activación y desactivación simultáneas
Si una etapa debe ser activada y desactivada al mismo tiempo (por diferentes transiciones), permanece activa. La activación tiene prioridad sobre la desactivación.
5. Estructuras del GRAFCET
Más allá de la simple secuencia lineal, el GRAFCET puede expresar procesos complejos mediante estructuras de bifurcación y paralelismo:
5.1 Secuencia lineal
La estructura más básica: las etapas se suceden una tras otra en un único camino. Cada transición conecta exactamente una etapa anterior con una etapa siguiente.
5.2 Divergencia OR (selección de secuencia)
Permite elegir un camino entre varias opciones en función de las condiciones. Se representa con una línea horizontal simple. Solo una rama se activa (las receptividades deben ser mutuamente excluyentes para evitar ambigüedad).
5.3 Divergencia AND (paralelismo / simultaneidad)
Permite activar múltiples secuencias en paralelo. Se representa con una doble línea horizontal. Todas las ramas se activan simultáneamente. La convergencia AND espera a que todas las ramas se completen antes de continuar.
5.4 Salto de etapa y repetición (bucle)
Un salto permite "saltarse" una o más etapas cuando no son necesarias (mediante una divergencia OR). Una repetición es un bucle que vuelve a una etapa anterior cuando el proceso necesita iterar.
5.5 Macro-etapas
Una macro-etapa encapsula un GRAFCET completo dentro de una única etapa del GRAFCET padre. Es el equivalente a una "función" en programación: permite modularizar y jerarquizar diseños complejos.
Se representa como un cuadrado con una línea horizontal en la parte superior e inferior. Tiene una etapa de entrada (E) interna y una etapa de salida (S).
6. Niveles del GRAFCET
Un mismo proceso puede describirse a diferentes niveles de abstracción. Esto es fundamental en proyectos grandes donde intervienen distintos perfiles profesionales:
Funcional
Describe qué hacer en lenguaje natural. "Llenar tanque", "Calentar producto". Dirigido al ingeniero de proceso.
Tecnológico
Especifica con qué: "Abrir válvula EV101", "Activar resistencia R1". Dirigido al diseñador de automatización.
Operativo
Define cómo: "SET Q0.1", "Temporizador T5 = 3000ms". Dirigido al programador de PLC.
El enfoque habitual es diseñar primero el Nivel 1 con el cliente o el ingeniero de proceso, luego detallarlo en el Nivel 2 con especificaciones técnicas, y finalmente llegar al Nivel 3 que prácticamente puede traducirse línea a línea a código PLC.
7. GRAFCET vs. Máquina de Estados (FSM)
GRAFCET y las Máquinas de Estados Finitas (FSM) comparten la misma base matemática, pero GRAFCET añade paralelismo nativo (divergencia AND), jerarquía (macro-etapas y forzado) y acciones que están siempre asociadas a etapas (no a transiciones, como en Mealy). Además está estandarizado (IEC 60848) y es directamente implementable en SFC.
8. GEMMA: Gestión de modos de marcha
GEMMA (Guide d'Étude des Modes de Marches et d'Arrêts) es el complemento natural del GRAFCET. Mientras el GRAFCET describe la secuencia normal del proceso, GEMMA define qué ocurre cuando las cosas van mal: paradas de emergencia, fallos, modos manuales, arranque, etc.
GEMMA organiza los estados del sistema en tres familias:
| Familia | Código | Descripción | Ejemplos |
|---|---|---|---|
| F — Funcionamiento | F1 a F6 | Modos de producción normal | F1: Producción normal, F4: Marcha de verificación |
| A — Parada | A1 a A7 | Modos de parada controlada | A1: Parado en estado inicial, A2: Petición de parada, D1: Parada de emergencia |
| D — Fallo | D1 a D3 | Gestión de fallos y emergencias | D1: Parada de emergencia, D3: Producción pese a defecto |
En la práctica, GEMMA se implementa como un GRAFCET de nivel superior (a veces llamado GRAFCET de seguridad o GRAFCET maestro) que gobierna la activación y el forzado de los GRAFCETs de producción.
9. Tutorial práctico: Diseñando un GRAFCET paso a paso
Vamos a diseñar desde cero el GRAFCET de un sistema de llenado y calentamiento de tanque. El proceso es real y típico en industrias de proceso (alimentaria, química, farmacéutica).
Descripción del proceso
Un tanque debe llenarse con agua, calentarse a 80°C, mantener la temperatura durante 5 minutos y después vaciarse. El sistema dispone de:
- Actuadores: Válvula de llenado (EV1), Resistencia calefactora (R1), Agitador (M1), Válvula de vaciado (EV2)
- Sensores: Nivel bajo (SN_L), Nivel alto (SN_H), Temperatura (TT1), Sensor de tanque vacío (SE)
- Operador: Botón START, Botón STOP, Seta de EMERGENCIA
Paso 1: Definir el proceso (Nivel 1 — Funcional)
Primero escribimos la secuencia en lenguaje natural, como si explicáramos el proceso a alguien sin conocimientos técnicos:
- Estado 0: Reposo — todo parado, esperando orden de marcha
- Estado 1: Llenar el tanque hasta nivel alto
- Estado 2: Calentar el agua a 80°C mientras se agita
- Estado 3: Mantener temperatura durante 5 minutos mientras se agita
- Estado 4: Vaciar el tanque
- Cuando el tanque está vacío, volver a reposo
Paso 2: Identificar etapas y transiciones (Nivel 2 — Tecnológico)
Convertimos cada estado en una etapa con acciones concretas y cada condición de paso en una transición con su receptividad:
Paso 3: Definir acciones detalladas
Para cada etapa, especificamos el tipo de acción según la tabla de tipos:
| Etapa | Acción | Tipo | Detalle |
|---|---|---|---|
| 0 | Piloto LISTO (verde) | Continua | Indica que el sistema está en reposo y listo |
| 1 | EV1 (llenado) | Continua | Válvula abierta mientras la etapa 1 está activa |
| 2 | R1 (calefacción) + M1 (agitador) | Continua | Resistencia y motor on simultáneamente |
| 3 | R1 (calefacción condicional) + M1 | C: R1 si TT1<82°C | Mantiene temperatura mediante control on/off con histéresis |
| 4 | EV2 (vaciado) | Continua | Válvula de vaciado abierta |
Paso 4: Añadir GEMMA (modos de funcionamiento)
Ahora pensamos en qué ocurre fuera del ciclo normal:
- Emergencia: Si se pulsa la seta, cerrar EV1 y EV2, apagar R1 y M1. Forzar a etapa 0.
- Parada a fin de ciclo: Si se pulsa STOP durante el ciclo, el proceso continúa hasta completarse y no vuelve a arrancar.
- Modo manual: Permitir actuar cada dispositivo individualmente para mantenimiento.
Paso 5: Verificar el diseño
Antes de tocar el IDE del PLC, revisa mentalmente estos escenarios:
- ¿Qué pasa si se pulsa START y el tanque ya tiene agua? → La transición t0 requiere SE (tanque vacío).
- ¿Qué pasa si se pierde la alimentación durante el calentamiento? → Al volver, el GRAFCET arranca en la etapa 0 (regla 1).
- ¿Qué pasa si falla el sensor de temperatura? → El diseño necesita un temporizador de seguridad en la etapa 2.
- ¿Qué pasa si se pulsa la seta de emergencia durante el vaciado? → GEMMA fuerza el GRAFCET a la etapa 0, cerrando EV2.
Lista de verificación del GRAFCET
- Las etapas y transiciones se alternan correctamente
- Existe al menos una etapa inicial
- Todas las transiciones tienen receptividades definidas
- No hay bloqueos posibles (deadlocks)
- Las receptividades de las divergencias OR son mutuamente excluyentes
- Las convergencias AND esperan a todas las ramas
- Se han considerado todos los modos GEMMA
- Las acciones de seguridad tienen máxima prioridad
- Temporizadores de seguridad protegen contra sensores bloqueados
10. Del GRAFCET al PLC: Implementación
Una vez que el diseño del GRAFCET está completo y verificado, existen tres estrategias principales para implementarlo en un PLC:
A) SFC directo
Usar el lenguaje SFC nativo del entorno del PLC: S7-Graph (Siemens), SFC en RSLogix/Studio 5000 (Rockwell), SFC en EcoStruxure (Schneider). La traducción es directa: cada etapa GRAFCET = un Step SFC y cada transición = una Transition SFC.
B) Ladder con bits de etapa
Método clásico: un bit de memoria (M0.0, M0.1...) por etapa. Los peldaños Ladder activan/desactivan bits según las condiciones. Funciona en cualquier PLC del mercado, incluso los más antiguos.
C) Texto Estructurado (ST) con CASE
Implementar como una máquina de estados en código: una variable iStep + un bloque CASE iStep OF. Limpio, legible y portable entre marcas. El método preferido en proyectos modernos.
Ejemplo: Implementación en Texto Estructurado (ST)
Veamos cómo traducir nuestro GRAFCET del tanque a ST con un CASE:
PROGRAM PRG_Tanque
VAR
iStep : INT := 0; // Etapa activa
tMaintain : TON; // Temporizador 5 minutos
bStart : BOOL; // Botón START
bEmergency : BOOL; // Seta de emergencia
// Sensores
bLevelHigh : BOOL; // SN_H
bTankEmpty : BOOL; // SE
rTemp : REAL; // TT1 (°C)
// Actuadores
bEV1 : BOOL; // Válvula de llenado
bEV2 : BOOL; // Válvula de vaciado
bR1 : BOOL; // Resistencia calefactora
bM1 : BOOL; // Agitador
END_VAR
// ── GEMMA: Emergencia (máxima prioridad) ──
IF bEmergency THEN
iStep := 0;
bEV1 := FALSE;
bEV2 := FALSE;
bR1 := FALSE;
bM1 := FALSE;
RETURN;
END_IF;
// ── GRAFCET: Secuencia normal ──
CASE iStep OF
0: // ═══ REPOSO ═══
bEV1 := FALSE;
bEV2 := FALSE;
bR1 := FALSE;
bM1 := FALSE;
IF bStart AND bTankEmpty AND NOT bLevelHigh THEN
iStep := 1;
END_IF;
1: // ═══ LLENADO ═══
bEV1 := TRUE;
IF bLevelHigh THEN
bEV1 := FALSE;
iStep := 2;
END_IF;
2: // ═══ CALENTAMIENTO ═══
bR1 := TRUE;
bM1 := TRUE;
IF rTemp >= 80.0 THEN
iStep := 3;
END_IF;
3: // ═══ MANTENIMIENTO DE TEMPERATURA ═══
bM1 := TRUE;
bR1 := (rTemp < 82.0); // Control on/off con histéresis
tMaintain(IN := TRUE, PT := T#5m);
IF tMaintain.Q THEN
tMaintain(IN := FALSE);
bR1 := FALSE;
bM1 := FALSE;
iStep := 4;
END_IF;
4: // ═══ VACIADO ═══
bEV2 := TRUE;
IF bTankEmpty THEN
bEV2 := FALSE;
iStep := 0;
END_IF;
END_CASE;
11. Errores comunes y buenas prácticas
Errores a evitar
| Error | Problema | Solución |
|---|---|---|
| Dos etapas consecutivas sin transición | Viola la alternancia etapa-transición | Añadir siempre una transición, aunque sea =1 (siempre verdadera) |
| Receptividades OR no excluyentes | Ambigüedad: ¿qué rama se toma? | Garantizar exclusividad lógica o añadir prioridad explícita |
| Olvidar GEMMA | Sin gestión de emergencias ni modos | Diseñar siempre el GRAFCET maestro con GEMMA |
| GRAFCET demasiado grande | Inmantenible, difícil de verificar | Usar macro-etapas y jerarquía |
| No considerar fallos de sensores | El sistema se queda bloqueado esperando una señal que nunca llega | Añadir temporizadores de seguridad en cada transición crítica |
Buenas prácticas
- Numerar las etapas secuencialmente (0, 1, 2...) y reservar huecos (0, 10, 20...) para futuras inserciones.
- Documentar las receptividades con nombres significativos, no solo direcciones del PLC.
- Una etapa = una acción principal. Si una etapa tiene 10 acciones, probablemente debas descomponerla.
- Usar macro-etapas cuando el GRAFCET supere las 15 etapas.
- Validar con el cliente el GRAFCET de Nivel 1 antes de pasar al Nivel 2.
- Versionar el GRAFCET como documentación del proyecto (no solo el código PLC).
12. Herramientas y software para diseño de GRAFCET
Existen diversas herramientas para diseñar GRAFCETs, desde el papel hasta software especializado:
| Herramienta | Tipo | Ventajas | Ideal para |
|---|---|---|---|
| Lápiz y papel | Analógico | Rapidez, sin curva de aprendizaje | Diseño inicial, brainstorming |
| Draw.io / diagrams.net | Online gratuito | Fácil, exporta a PNG/SVG/PDF, colaborativo | Documentación de proyecto |
| TIA Portal (S7-Graph) | IDE de PLC | Diseño + programación integrados | Proyectos Siemens |
| Studio 5000 (SFC) | IDE de PLC | SFC nativo, integrado con Ladder y ST | Proyectos Rockwell |
| EcoStruxure Control Expert | IDE de PLC | SFC conforme a IEC 61131-3 | Proyectos Schneider |
13. 🛠️ Taller: Construye tu propio GRAFCET
El desafío: Cinta transportadora con clasificación
Una cinta transportadora transporta piezas. Un sensor óptico detecta si son grandes o pequeñas. Las piezas grandes son desviadas por un cilindro neumático a la caja A. Las pequeñas continúan hasta el final de la cinta y caen en la caja B.
Entradas
- S1 — Sensor de presencia (pieza detectada)
- S2 — Sensor de tamaño (ON = grande)
- S3 — Cilindro retraído (posición inicial)
- S4 — Cilindro extendido
- S5 — Pieza al final de la cinta
- START — Botón de marcha
Salidas
- M1 — Motor de la cinta
- CYL+ — Extender cilindro
- CYL− — Retraer cilindro
- LAMP — Piloto "En marcha"
Dibuja la etapa inicial
30 segArranca la cinta
1 minDetecta la pieza y clasifica
2 minRama izquierda: condición S2 (pieza grande) → etapa 2
Rama derecha: condición ¬S2 (pieza pequeña) → etapa 3
Completa las ramas
2 minRama pequeña (etapa 3): acción M1=ON (cinta continúa). Transición: S5 (pieza llegó al final).
Cierra el bucle
30 segAñade seguridad (GEMMA exprés)
1 minVer solución completa
GRAFCET
14. Conclusiones
GRAFCET no es "otra cosa más que aprender" — es la herramienta fundamental de diseño en automatización industrial. Es la diferencia entre programar un PLC con método y programarlo a ciegas.
Recapitulemos los puntos clave:
- GRAFCET es un lenguaje de especificación estandarizado (IEC 60848), independiente de la marca de PLC.
- Se compone de etapas, transiciones, acciones y enlaces, gobernados por 5 reglas de evolución.
- Soporta secuencias, selecciones (OR), paralelismo (AND), saltos, bucles y macro-etapas.
- Funciona en tres niveles: funcional, tecnológico y operativo.
- GEMMA complementa al GRAFCET con gestión de modos de funcionamiento, parada y emergencia.
- Se implementa en PLCs mediante SFC directo, Ladder con bits de etapa o ST con CASE.
- Es primo cercano de la Máquina de Estados Finita (FSM), pero añade paralelismo y jerarquía.
El mejor consejo que puedo darte: antes de tu próximo proyecto de automatización, dibuja el GRAFCET. Aunque sea en una servilleta. Tu yo del futuro (y el técnico de mantenimiento que heredará el sistema) te lo agradecerá.