# GRAFCET

El GRAFCET del francés Graphe Fonctionnel de Commande Etape Transition, que significa diagrama de control con etapas y transiciones, nació en 1977, fuente del trabajo de la Asociación Francesa para la Cibernética Económica y Técnica (AFCET), en principio como síntesis teórica de las diferentes herramientas existentes por aquel entonces (organigrama, organifase, diagramas de Girard, red de Petri, etc.). Le otorgó su actual forma en 1979 la Agencia Nacional para el Desarrollo de la Producción Automatizada (ADESA) francesa. Normalizada en Europa como (EN61131) e internacionalmente en 1992 como (norma CEI 1131).
Básicamente, el GRAFCET es un modelo de representación gráfica, de los sucesivos comportamientos de un sistema lógico, predefinido por sus entradas y salidas. También es un grafo, o diagrama funcional normalizado, que permite hacer un modelo del proceso a automatizar, contemplando entradas, acciones a realizar, y los procesos intermedios que provocan estas acciones. Inicialmente fue propuesto para documentar la etapa secuencial de los sistemas de control de procesos a eventos discretos. No fue concebido como un lenguaje de programación de autómatas, sino un tipo de grafo para elaborar el modelo pensando en la ejecución directa del automatismo o programa de autómata. Varios fabricantes en sus autómatas de gama alta hacen este paso directo, lo que lo ha convertido en un potente lenguaje gráfico de programación para autómatas, adaptado a la resolución de sistemas secuenciales. En la actualidad no tiene una amplia difusión como lenguaje, puesto que la mayoría de los autómatas no pueden programarse directamente en este lenguaje, a diferencia del lenguaje Ladder. Pero se ha universalizado como herramienta de modelado que permite el paso directo a programación, también con Ladder.

## Elementos de programación

Para programar un autómata en GRAFCET es necesario conocer cada uno de los elementos propios de que consta. En la siguiente tabla se muestran los comunes.
Elementos GRAFCET de programación :
| Nombre | Descripción |
| Etapa inicial | Indica el comienzo del esquema GRAFCET y se activa al poner en RUN el autómata. Por lo general suele haber una sola etapa de este tipo. |
| Etapa | Su activación lleva consigo una acción o una espera. |
| Unión | Las uniones se utilizan para unir entre sí varias etapas. |
| Transición | Condición para desactivarse la etapa en curso y activarse la siguiente etapa. Se indica con un trazo perpendicular a una unión. |
| Direccionamiento | Indica la activación de una y/u otra etapa en función de la condición o condiciones que se cumpla/n. Es importante ver que la diferencia entre la "o" y la "y" en el GRAFCET es lo que pasa cuando convergen. |
| Proceso simultáneo | Muestra la activación o desactivación de varias etapas a la vez. |
| Grafcet | Acciones que se realizan al activarse la etapa a la que pertenecen. |

## Principios básicos

Para realizar el programa correspondiente a un ciclo de trabajo en lenguaje GRAFCET, se deberán tener en cuenta los siguientes principios básicos:
   * Se descompone el proceso en etapas que serán activadas una tras otra
   * A cada etapa se le asocia una o varias acciones que solo serán efectivas cuando la etapa esté activa.
   * Una etapa se activa cuando se cumple la condición de transición y ésta desactiva la etapa anterior.
   * El cumplimiento de una condición de transición implica la activación de la etapa siguiente y la desactivación de la etapa precedente.
   * Nunca puede haber dos etapas o condiciones consecutivas, siempre deben ir colocadas de forma alterna.

## Clasificación de las secuencias

En un GRAFCET podemos encontrarnos con tres tipos de secuencias:
   * Lineales
   * Con direccionamientos o alternativa
   * Simultáneas

### Lineales

En las secuencias lineales el ciclo lo componen una sucesión lineal de etapas como se refleja en el siguiente GRAFCET de ejemplo:
El programa irá activando cada una de las etapas y desactivando la anterior conforme se vayan cumpliendo cada una de las condiciones. Las acciones se realizarán en función de la etapa activa a la que están asociadas. Por ejemplo, con la etapa 1 activa tras arrancar el programa, al cumplirse la "Condición 1", se activará la etapa 2, se desactivará la 1, y se realizará la "Acción 1".

### Con direccionamiento

En un GRAFCET con direccionamiento, el ciclo se puede direccionar en función de las condiciones que se cumplan. En el siguiente ejemplo a partir de la etapa inicial se pueden seguir tres ciclos diferentes dependiendo de que condiciones (1, 2 y/o 3) se cumplan, (normalmente solo una de ellas podrá cumplirse mientras la etapa 1 esté activa, aunque pueden cumplirse varias):
La diferencia significativa del direccionamiento ( árbol abierto con una línea sencilla horizontal ) con respecto a la simultánea es que esta pasará a la siguiente etapa cuando haya terminado una de las tareas paralelas independientemente de las que se iniciaron.

### Simultáneas

En las secuencias simultáneas varios ciclos pueden estar funcionando a la vez por activación simultánea de etapas. En el siguiente ejemplo, cuando se cumple la condición 1 las etapas 2, 3 y 4 se activan simultáneamente:
En los casos de tareas simultáneas (árbol abierto por doble línea horizontal) la etapa siguiente al cierre solo podrá iniciarse cuando todas las etapas paralelas hayan terminado.

## Clasificación de las acciones

En un GRAFCET nos podemos encontrar con alguna o varias de las acciones asociadas a una etapa que se describen seguidamente.

### Acciones asociadas a varias etapas

Una misma acción puede estar asociada a etapas distintas. Así en el siguiente ejemplo la acción A se realiza cuando está activa la etapa 21 o la 23 (función O):

### Acciones condicionadas

La ejecución de la acción se produce cuando además de encontrarse activa la etapa a la que está asociada, se debe verificar una condición lógica suplementaria (función Y):

### Acciones temporizadas o retardadas

Es un caso particular de las acciones condicionadas que se encuentran en multitud de aplicaciones. En este caso, el tiempo interviene como una condición lógica más. En el siguiente ejemplo la acción A se realizará durante 10 segundos:

## Ejemplo de programación

A continuación se obtendrá el GRAFCET para el control de un montacargas que funciona entre dos plantas. El ejemplo es solo pedagógico; para simplificarlo no se tendrá en cuenta la acción de parada. Los elementos necesarios son los siguientes:
Elementos de un montacargas :
| Actuadores | Captadores |
| KM1: Contactor de subida | SS: Pulsador de subida |
| KM2: Contactor de bajada | SB: Pulsador de bajada |
| L1: Lámpara indicadora de paro | FCA: Detector de planta alta |
| | FCB: Detector de planta baja |
A continuación se ofrece el programa GRAFCET y su funcionamiento:
Al arrancar el programa se activa la etapa inicial 1 encendiéndose la lámpara de paro, L1. En el supuesto de que el montacargas esté en la planta baja, FCB = 1, la activación del pulsador de bajada, SB = 1, no tendrá ningún efecto. En cambio la activación del pulsador de subida, SS = 1, provocará la desactivación de la etapa 1 y la activación de la 2, ya que se cumple la condición de transición, esto es, el producto lógico de SS y FCB es 1. La activación de la etapa 2 excita el contactor KM1, y el montacargas sube. Al llegar a la planta alta, FCA = 1, se desactiva la etapa 2 y vuelve a activarse la 1, parándose el motor. En estas condiciones, la actuación sobre SS no tiene efecto alguno y sobre SB provoca la activación de KM2, lo que hace que el montacargas comience a bajar hasta activarse el detector de la planta baja, FCB = 1, momento en el que se parará.