0% encontró este documento útil (0 votos)
205 vistas39 páginas

Implementacion GRafcet

El documento describe los sistemas de control secuencial implementados mediante dispositivos programables como los PLC. Explica cómo traducir un Grafcet a un programa para un PLC teniendo en cuenta etapas estables e inestables y transiciones por flanco. También describe la arquitectura y funcionamiento de un PLC, incluyendo su memoria, constitución física y ciclo de trabajo para controlar procesos de forma secuencial.

Cargado por

Ricci Ricci
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
205 vistas39 páginas

Implementacion GRafcet

El documento describe los sistemas de control secuencial implementados mediante dispositivos programables como los PLC. Explica cómo traducir un Grafcet a un programa para un PLC teniendo en cuenta etapas estables e inestables y transiciones por flanco. También describe la arquitectura y funcionamiento de un PLC, incluyendo su memoria, constitución física y ciclo de trabajo para controlar procesos de forma secuencial.

Cargado por

Ricci Ricci
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 39

Control de Procesos. Tema 3.

TEMA 3. Implementación de sistemas de control secuencial


mediante dispositivos programables.

3.1. Introducción
El Grafcet es un modelo del controlador lógico que resuelve un problema de automatización. Para
implementar ese controlador es necesario construir o programar el controlador lógico de forma que
cumpla todas las reglas de evolución de ese Grafcet modelo. En particular hay que poner especial
atención en 2 situaciones especiales, que son la existencia de etapas inestables, y la existencia de
transiciones activas por flanco.

Se trata de desarrollar un programa que reproduzca la forma de evolucionar del Grafcet, con todas sus
reglas, teniendo en cuenta las etapas estables e inestables y sus acciones asociadas y las transiciones por
flanco si las hubiera.

Existen varios métodos más o menos sistemáticos para desarrollar el programa cumpliendo lo anterior.
En todos los casos se asocia una variable interna (1 bit) a cada etapa (el bit estará a 1 si la etapa está
activa y a cero en caso contrario). Las ecuaciones lógicas tratarán de ir modificando esos bits según
cambian las entradas de acuerdo a las reglas de evolución del grafcet.

El algoritmo se ejecutará en un bucle infinito, de forma que estará continuamente comprobando las
entradas para modificar las etapas y las salidas. Si el algoritmo se implementa mediante un autómata
programable hay que tener en cuenta que el bucle infinito lo realiza internamente el autómata, y
únicamente se deben escribir las instrucciones del algoritmo (sin el bucle).

3.2. Autómatas programables industriales (PLC)

Definición.
Un autómata programable industrial es un equipo electrónico, programable en lenguaje no informático,
diseñado para controlar en tiempo real y en ambiente de tipo industrial procesos secuenciales.

Arquitectura funcional.
Módulo de Memoria de
Sensores
entradas programa

Memoria Memoria
interna Procesador de datos

Ordenador
Consola de
Actuadores Módulo programación
Control de
de salidas
Periféricos Unidad HMI

Autómata
Zonas de memoria.
• Memoria de programa. Contiene el programa (instrucciones) que se ejecutan en el procesador. Se
puede dividir en dos partes:
- Una parte ROM que contiene el programa monitor (para comunicar el autómata con los módulos de
programación). Este programa monitor es fijo.
- Una parte RAM con batería (puede ser también FLASH EEPROM) en la que se almacena el
programa del usuario. Evidentemente, este programa se mantiene aunque se desconecte el autómata.
• Memoria interna. Almacena los valores de entradas y salidas, además de otras variables internas del
autómata. En ella se almacenan variables de 1 solo bit (se accede a ellas bit a bit).

1
Control de Procesos. Tema 3.

• Memoria de datos. Contiene datos de configuración o parámetros de funcionamiento del autómata y


del proceso, o datos de propósito general. En ella se almacenan variables tipo byte (8 bits) o word (16
bits).
Tanto la memoria interna como la de datos suelen tener una parte de RAM normal (volátil) y una parte de
RAM con batería o EEPROM para almacenar datos que no se deben perder cuando se desconecta el
autómata.

Constitución física.
Entradas Entradas Módulo E/S
digitales analógicas especial

Fuente CPU
de
alimentación

Salidas Salidas
digitales analógicas
• El módulo de CPU contiene el procesador, la memoria y algunos controladores de periféricos (puerto
serie, por ejemplo). En algunos modelos, el módulo de CPU contiene además algunas entradas y/o
salidas digitales.

• El módulo de fuente de alimentación da la tensión (normalmente 24 V) para alimentar a todos los


módulos del equipo. A veces hay módulos que requieren una fuente de alimentación especial, además
de la general del equipo.

• Los módulos adicionales se conectan al módulo de CPU por medio del bus.

Descripción funcional.
El API es un computador, y por lo tanto, su funcionamiento consiste en la ejecución de un determinado
programa situado en la memoria de programa. Se pueden distinguir dos modos de funcionamiento: modo
de programación, y modo de ejecución.

• Modo de programación. En este modo de funcionamiento el programa monitor comunica el API


con el elemento de programación (normalmente un PC), para que desde éste se le trasvase el
programa de control que se desea ejecutar. En este modo el API no está controlando el proceso.

• Modo de ejecución (modo RUN). En este modo se ejecuta el programa de control del usuario, con
lo que el autómata controla el proceso. En este modo, cuando se inicializa el Autómata, el programa
monitor salta a la dirección donde está el programa de control, y se empieza a ejecutar éste. La
ejecución del programa de control se lleva a cabo de forma cíclica, ejecutando ciclos de scan de
forma indefinida

Se llama ciclo de trabajo (o de scan) al conjunto de tareas que el autómata lleva a cabo (instrucciones
que se ejecutan) de forma cíclica cuando está controlando un proceso. El ciclo de trabajo más habitual
tiene la siguiente estructura:

2
Control de Procesos. Tema 3.

Inicialización

Procesos comunes

Gestión de periféricos
Ciclo de
trabajo
Ejecución del
programa de usuario

Refresco de E/S

• La inicialización se lleva a cabo una sola vez cada vez que se pone en marcha el autómata.

• Los procesos comunes son funciones de autodiagnóstico y de programación del Watch Dog (perro
guardián). No dependen del proceso que se esté controlando.

• La gestión de periféricos gestiona los puertos de comunicaciones (comunicación con un ordenador,


con un terminal HMI, con otro autómata, etc.).

• El programa de usuario se ejecuta instrucción a instrucción, de forma secuencial. Las instrucciones


(líneas) del programa de usuario son las que implementan la lógica de control del proceso. Todas estas
instrucciones se ejecutan utilizando los valores almacenados en la memoria interna de entradas, y dan
como resultado un cambio en la memoria interna de salidas.

• El refresco de E/S significa la actualización de la memoria de entradas con los valores actuales de las
entradas (de los sensores), y la actualización de las salidas (actuadores) con los valores almacenados
en la memoria de salidas.

• El bucle infinito lo realiza el autómata por su cuenta (no se tiene que programar).

El tiempo de scan es el tiempo que tarda el autómata en realizar un ciclo completo, y depende de la
velocidad de la CPU, que se puede medir mediante el tiempo de ejecución de una instrucción de la
CPU (que depende del tipo de instrucción) o con el tiempo que tarda en ejecutar 1024 instrucciones.
Valores típicos del tiempo de scan están en el orden de varios milisegundos.

El tiempo total de un ciclo de trabajo para un autómata determinado es variable, en función del tamaño
(número de instrucciones) del programa de usuario. Incluso para un mismo programa de usuario el tiempo
de scan puede variar en función de las instrucciones que se ejecuten, pues puede haber instrucciones de
salto o instrucciones condicionadas que no siempre se ejecutan.

Se define el tiempo de respuesta como el tiempo que tarda en cambiar una salida en relación al cambio
de una entrada. Este tiempo es importante, pues determina la rapidez con que el autómata reacciona ante
cambios del proceso. El tiempo de respuesta es variable y depende del tiempo de scan, del tiempo de
retraso de activación/desactivación de los dispositivos físicos de entradas y salidas, y del momento en que
se produce el cambio de la entrada. El peor caso es aquel en el que la entrada cambia justo después de que
se haya actualizado la memoria de entradas. En ese caso se ejecuta un ciclo de programa completo en el
que el nuevo valor de esa entrada no es tenido en cuenta. Después se actualiza la memoria de entradas,
con lo que se lee el valor de la entrada. Después se ejecuta otro ciclo de programa en el que el nuevo valor
de la entrada sí se tiene en cuenta, para después actualizar las salidas. El tiempo de respuesta máximo es,
pues
TRESP,MÁX= 2TCICLO +TOUT

3
Control de Procesos. Tema 3.

donde TOUT es el tiempo que tarda el dispositivo físico de salida en activar realmente la salida, y que
depende del tipo de salida (relé, transistor o triac).

Otros tipos de ciclo de funcionamiento.


El ciclo de funcionamiento descrito antes es el más habitual, pero no es la única opción posible. Otras
posibilidades pueden ser:
• Refresco de las salidas conforme éstas cambian al ejecutar cada instrucción del programa de usuario.
• Refresco de las entradas y salidas conforme éstas van siendo utilizadas en cada instrucción del
programa de usuario.
• También cabe la posibilidad de un ciclo de scan síncrono (que tarde siempre el mismo tiempo), que
ejecute un ciclo completo cada T segundos (fijos). Evidentemente este tiempo fijo debe ser mayor del
máximo tiempo posible de ejecución de un ciclo completo, por lo que lo normal será que en cada ciclo
el autómata esté un tiempo de espera sin trabajar.

3.3. Programación de los A.P.I. (PLC's)


La forma más común de programar un autómata es mediante un ordenador personal con el software
adecuado. En primer lugar se debe configurar el equipo (seleccionar el tipo de autómata y los módulos de
entradas/salidas que se tienen). Después se introduce el programa de control (en el lenguaje adecuado), y
por último se carga este programa en el autómata para proceder a su verificación (se ejecuta el programa
comprobando la evolución de las distintas variables). Antes de introducir el programa es conveniente
hacer una lista de las variables de entrada y salida del proceso y su asignación a variables internas en la
memoria del autómata.

Lenguajes de programación.
El lenguaje de programación más utilizado en los autómatas programables es el diagrama de contactos
(Ladder Diagram ó diagrama de escalera). Está basado en los automatismos cableados por medio de
contactores, que fueron los primeros en implementarse. Representa las ecuaciones lógicas por medio de
contactos. Hay 3 tipos de elementos fundamentales.
• Contacto normalmente abierto (NA)  . Representa un contacto que está abierto si la variable
asociada vale 0, y que se cierra si la variable asociada vale 1.
• Contacto normalmente cerrado (NC) ⁄ . Representa un contacto que está cerrado si la variable
asociada vale 0, y que se abre si la variable asociada vale 1.
• Bobina. Representada por un círculo. Representa el valor de una variable. Cada salida tiene asociada
una bobina. Si esta bobina tiene corriente (el diagrama de contactos la activa), la salida está a 1, y si
no tiene corriente la salida está a cero. Además puede haber bobinas asociadas a variables internas
(por ejemplo las que representan cada etapa del proceso).

Un ejemplo de programa podría ser:


y b y

a y x

Cada línea ó red (que contiene una bobina o varias) representa una línea del programa. El autómata
ejecuta las líneas de arriba abajo. En este caso, calcularía y ⋅ b + a y lo asignaría a y (es decir, sería
equivalente a la instrucción de asignación en C ( y = ( y & (~ b)) | a ) ). Después calcularía a ⋅ y y lo
asignaría a x ( x = a & (~ y ) ). Esta sería la fase de ejecución del programa de usuario, que se repetiría
de forma cíclica según se ha visto.

4
Control de Procesos. Tema 3.

La función lógica implementada por los contactos de una red se suele denominar condición de
activación, ya que cuando esta condición es 1 la variable de salida (bobina) asociada se activa, mientras
que cuando vale 0 la variable de salida se desactiva..
Hay una serie de reglas que se deben seguir para dibujar correctamente un diagrama de
contactos. Algunas de ellas son:
• A la derecha de la bobina no puede haber contactos.
• En una red puede haber varias bobinas en paralelo.
• La conducción a través de los contactos solo se produce de izquierda a derecha.

Además de la bobina simple puede haber otros 2 tipos de bobinas:


• Bobina normalmente cerrada. Se representa con un círculo con una barra transversal.
a y x

El valor que toma la variable x es el que tendría con la bobina normal, pero negado ( x = a ⋅ y ).
• Bobina de enclavamiento. En algunos autómatas se representa mediante un círculo que en el interior
tiene una letra “L” (o “S”) o una letra “U” (o “R”). Si es una letra “L” (Latch) o “S” (Set) indica que
la variable correspondiente se activa, quedando activa aunque después se haga cero la condición de
activación. Para desactivar la variable tiene que utilizarse una bobina de desenclavamiento con la letra
“U” (Unlatch) o “R” (Reset).
a y x
S

Es equivalente a if ( a & (~ y )) x = 1 , es decir, que si la condición de activación es 1, la


variable x se pone a 1, pero si la condición es 0, la variable x no cambia (se queda como esté).

Esos elementos básicos solo permiten programar relaciones lógicas simples. Evidentemente esto
no es suficiente para controlar un proceso complejo. Además de estos elementos hay otros que permiten
implementar funciones más elaboradas. Se colocan en lugar de las bobinas simples, según:
a b
Instrucción
c o función

El significado es que cuando el autómata llega a la línea correspondiente, ejecuta la instrucción o función
compleja en función de que los contactos den un valor 1 ó 0, es decir, en función de que la condición de
activación sea 1 ó 0. En algunos casos, si dan un valor 0 la función no se ejecuta, en otros la ejecución es
diferente en función de que se tenga un 1 ó un 0. Entre estas funciones se pueden destacar:
• Instrucción END. Indica el final del programa.
• Temporizadores.
• Contadores.
• Instrucciones de salto.
• Operaciones binarias (mover bytes, sumar, multiplicar, comparar, etc).
• Refresco de E/S. Permite refrescar las E/S cuando se desee, independientemente del refresco
automático que se produce cada ciclo de scan.
• Funciones matemáticas complejas (senos, cosenos, exponenciales).
• Control de interrupciones.
• Funciones especiales de comunicaciones (transmisión o recepción de datos).

Temporizadores y contadores.
Unas de esas funciones de importancia especial son los temporizadores y contadores. Un contador es un
número que se incrementa (o decrementa) cada vez que hay un pulso en una variable (que puede ser una
entrada o una variable interna). Un temporizador es un contador cuya entrada de cuenta es el reloj del
sistema (una señal cuadrada de frecuencia constante). Normalmente se utiliza escribiendo un valor inicial
en él. El valor del temporizador va disminuyendo conforme cuenta los pulsos del reloj hasta que llega a

5
Control de Procesos. Tema 3.

cero, momento en el cual activa una variable de fin de temporización. De esta forma se pueden medir
tiempos (se puede activar una salida durante un tiempo determinado, o esperar un tiempo determinado
hasta activar una salida, o medir el tiempo transcurrido entre las activaciones de dos entradas, etc.).
Un ejemplo de función de temporizador del autómata Omron es:
0001 0002
TIM
001
SV
TIM001 1000

Es un temporizador de retardo en la conexión. Esta instrucción TIM se activa cuando la condición de


ejecución es 1, empezando a contar decrementando a partir del valor SV. Cuando llega a cero se activa la
variable asociada al temporizador (TIM001), que en este caso activa la salida 1000. Cuando se desactiva
la condición de ejecución, el temporizador se resetea y su salida se pone a cero. Existen diversos tipos de
temporizadores y contadores, y cada fabricante de autómatas tiene definidos los suyos.

Estándar de programación IEC 1131-3.


Cada fabricante de autómatas programables tiene su propia versión del lenguaje de diagrama de contactos
y del de lista de instrucciones. En general, un programa escrito para un autómata determinado no sirve
para un autómata de otra marca. Las diferencias más importantes están en las instrucciones y funciones
especiales, que cada fabricante implementa a su manera (especialmente temporizadores y contadores),
aunque también hay diferencias en elementos más simples, como bobinas de enclavamiento. La norma
IEC 1131-3 surgió con el objetivo de establecer una sintaxis de programación estándar que permitiera
programar un automatismo sin necesidad de recurrir a la sintaxis específica de ningún fabricante. El
objetivo último es, evidentemente, que el programa escrito según la norma IEC 1131-3 se pueda utilizar
directamente en cualquier autómata. Esto, sin embargo no se cumple todavía, ya que solo unos pocos
fabricantes admiten esa posibilidad.
El IEC 1131-3 contempla 5 lenguajes diferentes: el diagrama de contactos, la lista de
instrucciones, el diagrama de bloques de funciones, el texto estructurado y el Grafcet (o SFC). En cuanto
al diagrama de contactos, el lenguaje es muy similar al de cualquier autómata, aunque hay diferencias.
Por ejemplo el lenguaje de Omron utiliza solo contactos NA o NC, mientras la norma IEC 1131-3 admite
además contactos de flanco de subida P o de bajada N que se activan solo durante un ciclo
de scan cuando la variable asociada cambia de 0 a 1 ó de 1 a 0. Estos contactos activos por flanco se
pueden implementar en el autómata de Omron por medio de las funciones DIFU y DIFD.

Procedimiento a seguir para programar un autómata.


Una vez se tiene el programa en papel (obtenido a partir del GRAFCET del proceso, o de cualquier otra
forma), se debe proceder siguiendo los siguientes pasos para introducir el programa en el autómata:
1. Configurar el equipo (tipo de PLC, comunicaciones, etc).
2. Identificar el programa (nombre, empresa, fecha, versión, etc.).
3. Crear la estructura básica del programa (bloques y grupos dentro de los bloques).
4. Hacer la lista de etiquetas (nombres) de las variables a utilizar (entradas, salidas, variables internas,
datos, temporizadores, contadores), asignándoles su dirección en memoria.
5. Introducir el programa (diagrama de contactos).
6. Comprobar el programa.
7. Transferir el programa al autómata.
Ejecutar en modo monitor y comprobar el funcionamiento correcto.

6
Control de Procesos. Tema 3.

3.4. Implementación del algoritmo de control a partir del Grafcet.


Se trata de desarrollar un programa que reproduzca la forma de evolucionar de las distintas variables del
Grafcet, siguiendo todas sus reglas de evolución. En particular hay que poner especial atención en 2
situaciones especiales, que son la existencia de etapas inestables, y la existencia de transiciones activas
por flanco.

Existen varios métodos más o menos sistemáticos para desarrollar el programa cumpliendo lo anterior.
En todos los casos se asocia una variable interna (1 bit) a cada etapa (el bit estará a 1 si la etapa está
activa y a cero en caso contrario). Las ecuaciones lógicas tratarán de ir modificando esos bits según
cambian las entradas de acuerdo a las reglas de evolución del grafcet.

El algoritmo se ejecuta en un bucle infinito, de forma que estará continuamente comprobando las entradas
para modificar las etapas y las salidas.

Se describirán dos métodos, uno simplificado que únicamente es válido cuando no se dan las 2
situaciones especiales comentadas anteriormente (la existencia de etapas inestables, y la existencia de
transiciones activas por flanco), pero que resulta en un algoritmo muy sencillo.

El segundo método, más complejo, sirve para cualquier situación (etapas inestables, flancos, etc).

En los dos casos se describirá en primer lugar el algoritmo resultante suponiendo que la implementación
se realiza en un autómata programable. Posteriormente se comentarán las diferencias para implementarlo
en otra plataforma.

MÉTODO 1.
Este método es el más simple. Los bloques que contiene el programa son:
1. Inicialización de las etapas mediante el bit de inicio (este bloque solo se ejecuta una vez).
2. Detección de flancos (de las entradas que dan lugar a transiciones por flanco y de las etapas con
acciones impulsionales).
3. Desactivación/activación de las etapas anteriores/posteriores a las transiciones franqueables.
4. Activación de las salidas.
5. Definición de temporizadores y contadores.

Funciona bien siempre que:


• No existan estados inestables. Si los hay, en un solo ciclo de scan pueden avanzarse varias etapas,
por lo que las acciones impulsionales no se producirían.
• No haya transiciones por flanco consecutivas. Con este método una transición por flanco está activa
en el autómata durante un ciclo completo de scan. Esto hace que un solo flanco pueda hacer
evolucionar varias etapas consecutivas.
• No existan transiciones que puedan desactivar y activar a la vez una etapa.
• No haya bifurcaciones de selección no excluyentes. Si hay bifurcaciones no excluyentes la primera
que se evalúe será la única que se active, ya que la etapa anterior quedará desactivada.
• No haya transiciones que dependan de etapas.

En esencia el método simplificado 1 sirve para problemas sencillos que se resuelven normalmente con 1
solo grafcet. Ver el ejemplo 1 como muestra.

7
Control de Procesos. Tema 3.

En el bloque 3 debe haber una ecuación (red) para cada transición del grafcet. La ecuación
de activación/desactivación de una transición debe tener en cuenta todas las etapas anteriores y todas las
posteriores. Ejemplos:
E3 P
3 RSET E3

P SET E4

E1 P
1 RSET E1

P+B B SET E2

SET E3

2 3

3 1 E3 E1 P
RSET E1

P RSET E3

SET E2

2 4 SET E4

E1 P
1
RSET E1

P RSET E2
AP
E1 A P
2 3 RSET E1
SET E3

En el bloque 4 se introduce una red para cada salida. Cuando son acciones a nivel, la red debe incluir
todas las etapas en las que la salida está activa, incluyendo además las condiciones lógicas
correspondientes si la salida está condicionada. Por ejemplo, si la salida Y debe estar activa en la etapa 3
y en la etapa 2 condicionada a B, la ecuación de salida sería:
E2 B Y

E3

Si se trata de una acción impulsional (por ejemplo incrementar un contador), la condición de activación
debe ser el flanco de subida de la etapa, que se genera en el bloque 2 (con la instrucción DIFU o DIFD en
el autómata OMRON, o con un contacto de pulso en otros autómatas). Por ejemplo, para detectar un
flanco de subida en A se pondría en el bloque 2:
A A flanco_A
DIFU flanco_A P
ó

8
Control de Procesos. Tema 3.

Ejemplo 1.
Sea el cilindro de la figura.
I C D

A R
Inicialmente se supone que el cilindro está en la posición más a la izquierda. Al pulsar P se debe mover
hacia la derecha hasta que se active el detector C, para volver después a la izquierda. Si se pulsa Q debe
hacer lo mismo, pero esperando 1 segundo antes de empezar a moverse, y llegando a D en lugar de C.
Para mover el cilindro se actúa sobre las electroválvulas A y R.
Una posible solución es:

P Q⋅P t/3/1s

A 1 3 A
C D

R 2 4 R
I I

En las siguientes páginas se puede ver el programa que implementa el grafcet anterior siguiendo el
método 1. Se observa que la implementación es muy simple. En este caso no hay problemas por no darse
ninguno de los casos descritos anteriormente.

9
Diagrama Ladder - 1:1 EJ1M1.SWP 18/10/01 20:17:09 Página 1

Principal 1 - EJEMPLO 1

Implementación del EJEMPLO 1 por el MÉTODO 1.

Red 1 - Inicialización

Aquí se activan las etapas iniciales y se desactivan las demás.

00000 253.15
SET
FIRST_SCAN
010.00
E-0

RSET

010.01
E-1

RSET

010.02
E-2

RSET

010.03
E-3

RSET

010.04
E-4

Red 2 - Ac/Desac Etapas

Aquí se implementan las ecuaciones de activación/desactivación de etapas

00006 010.00 000.07


RSET
E-0 P
010.00
E-0

SET

010.01
E-1

00010 010.01 000.03


RSET
E-1 C
010.01
E-1

SET

010.02
E-2

00014 010.00 000.07 000.09


RSET
E-0 P Q
010.00
E-0

SET

010.03
E-3

00019 010.03 000.05


RSET
E-3 D
010.03
E-3

SET

010.04
E-4
Diagrama Ladder - 1:6 EJ1M1.SWP 18/10/01 20:17:09 Página 2

00023 010.02 000.01


RSET
E-2 I
010.02
E-2

SET

010.00
E-0

00027 010.04 000.01


RSET
E-4 I
010.04
E-4

SET

010.00
E-0

Red 8 - Salidas

Aquí se activan las salidas correspondientes

00031 010.01 100.00

E-1 A
010.03 TIM000

E-3

00036 010.02 100.01

E-2 R
010.04

E-4

Red 10 - Tempor./Contad.

Aquí se definen los temporizadores y contadores

00039 010.03
TIM
E-3
000

#0010

00041
END(01)
Control de Procesos. Tema 3.

MÉTODO 2.
Este método da lugar a un programa más largo, pero funciona bien aunque haya estados inestables o
transiciones por flanco. Los bloques que contiene el algoritmo son:
1. Inicialización de las etapas mediante el bit de inicio (este bloque solo se ejecuta una vez).
2. Copia de las variables etapas en las variables copia_de_etapas.
3. Detección de flancos en las receptividades.
4. Desactivación de las etapas anteriores a las transiciones franqueables, utilizando para las
validaciones las variables copia_de_etapas.
5. Activación de las etapas posteriores a las transiciones franqueables, utilizando para las validaciones
las variables copia_de_etapas. De esta forma solo se avanza una etapa. La activación va después de
la desactivación para garantizar que sea prioritaria.
6. Ejecución de las acciones impulsionales que correspondan. Aquí hay que incluir las acciones
impulso y las acciones memorizadas. Un ejemplo podría ser un contador que cuenta el número de
veces que se ha activado la etapa (es una acción impulsional asociada al paso de 0 a 1 de la etapa). La
condición de ejecución de las acciones impulsionales es etapa ⋅ copia _ de _ etapa .
7. Si ha habido cambios en alguna etapa (estado inestable) volver al bloque 2.
8. Activación de las acciones a nivel. En este caso el estado es estable.
9. Definición de los temporizadores y contadores. Puede ser necesario poner algunos de los
temporizadores o contadores junto con las acciones impulsionales en el bloque 6 (si se ven afectados
por eventos de flanco o por etapas inestables).

El diagrama de flujo muestra la estructura del programa:


INICIALIZACIÓN

COPIA DE ETAPAS

DETECCIÓN DE FLANCOS

DESACTIVACIÓN DE ETAPAS

ACTIVACIÓN DE ETAPAS

ACC. IMPULSIONALES

NO
¿ETAPAS=COPIA_ETAPAS?

SI
ACC. DE NIVEL

TEMPORIZADORES
/CONTADORES
Con este método cada vez que se ejecutan los bloques 4 y 5 el sistema avanza como mucho una etapa. En
un mismo ciclo de scan el sistema va evolucionando (ejecutando el bloque 4 y 5) hasta que se alcanza un
estado estable. Si hay estados inestables intermedios, el programa activa la variable correspondiente
durante un instante, activando las acciones impulsionales y memorizadas. Las acciones de nivel se
ejecutan solo cuando el estado es estable. Ver Ejemplo 2 como muestra.
Si hay receptividades por flanco, su validez se comprueba cada vez que se ejecuta el bloque 3. De esta
forma un flanco solo es utilizado en un paso de evolución de etapas, pues en el siguiente paso se queda
inactivo. En los autómatas de Omron la detección de un flanco en una variable se implementa con la
función DIFU. Ver Ejemplo 3.

12
Control de Procesos. Tema 3.

Ejemplo 2.
Sea el disco de la figura:
D

I
M

Q
P
C

El disco tiene una placa metálica que es detectada por los detectores inductivos C y D. Inicialmente se
supone el disco en el punto C. Cuando se pulsa P el disco empieza a girar. Si el interruptor I está
desactivado, el disco debe girar hasta que llegue a C. Si el interruptor I está activado cuando la placa pasa
por D, el disco debe parar hasta que se desactive I. En cualquier caso, además se debe activar una salida
impulso Q de duración suficiente cada vez que se activa D.
Una posible solución es:

P
1 M
D

2 P Q

I
3 M
C

Si I no está activado, la etapa 2 es inestable, por lo que se pasa de la 1 a la 3. Eso significa que la variable
M (de nivel) debe permanecer activa (no se debe desactivar ni siquiera en un pequeño pulso). Por otra
parte, la acción impulsional Q debe activarse, pues se pasa por la etapa 2.
El programa con el método 1 (la parte de activaciones/desactivaciones) es:

E0 P
RSET E0

SET E1
E1 D
RSET E1
SET E2
E2 I
RSET E2
SET E3
E3 C
RSET E3
SET E0
y la parte de las salidas

13
Control de Procesos. Tema 3.

E1 M

E3

E2
DIFU Q

En este caso, si I no está activo, cuando se active D la etapa 2 (inestable) se activará en una red y se
desactivará en la siguiente, por lo que la acción impulsional no llegará a ejecutarse. Esto se podría
resolver colocando la acción impulsional inmediatamente después de la ecuación de activación de E2. El
inconveniente es que el procedimiento deja de ser sistemático. La salida impulsional (obtenida con la
instrucción DIFU) es un pulso de duración igual a 1 ciclo de scan.

Por otra parte, el comportamiento depende del orden en que se escriban las ecuaciones, que en principio
es arbitrario. En este caso puede suceder que el sistema esté un ciclo de scan completo en la etapa 2, lo
que provocaría el apagado de M durante ese ciclo. Esto sucedería si el programa se escribiera en el orden:
E2 I
RSET E2
SET E3
E3 C
RSET E3
SET E0
E0 P
RSET E0
SET E1
E1 D
RSET E1
SET E2
En este caso, si I=0 cuando se activa D, como la última ecuación es la que activa E2, esta etapa
permanecerá activa hasta el siguiente ciclo de scan. Cuando se ejecuten las ecuaciones de las salidas, el
motor se desactivará durante un ciclo. En este caso sí se ejecutaría la acción impulsional que daría una
señal de pulso de 1 ciclo de duración.

La implementación por el método 2 resuelve estos problemas (ver programa adjunto). Hay que poner
especial atención a la ejecución de la acción impulsional. Si simplemente se asociara la salida Q a la
etapa E-2, ésta estaría activa durante un pulso muy corto dentro del mismo ciclo de scan, desactivándose
antes de que acabe el programa y el autómata refresque las salidas. Para garantizar que ese pulso aparece
en la salida se ha utilizado un temporizador, que garantiza un pulso de una anchura determinada (en este
caso 100 ms).

14
Diagrama Ladder - 1:1 EJ2M2.SWP 19/10/01 11:31:46 Página 1

Principal 1 - Ejem. 2. Met. 2

Implementación del Ejemplo 2 por el método 2.

Red 1 - Inicialización

Se activan las etapas iniciales y se deactivan las demás.


Cuando son muchas se pueden usar funciones de canal.

00000 253.15
MOV(21)
FIRST_SCAN
#0000

010
Etapas

SET

010.00
E-0

Red 2 - Copia Etapas

Aqui se hace una copia de las etapas.


Este es el punto de llegada del salto.

00003
JME(05)

00004 253.13
MOV(21)
ON
010
Etapas

020
CopiaEtapas

Red 4 - Desactiv Etapas

Aqui se implementan las ecuaciones de activación/desactivación de etapas


utilizando como condiciones de validación la copia de las etapas.
De esta forma solo se puede avanzar una etapa.

00006 020.00 000.05


RSET
CE-0 P
010.00
E-0

00009 020.01 000.07


RSET
CE-1 D
010.01
E-1

00012 020.02 000.03


RSET
CE-2 l
010.02
E-2

00015 020.03 000.01


RSET
CE-3 C
010.03
E-3

Red 8 - Activac Etapas

Aqui se implementan las ecuaciones de activación de etapas


utilizando como condiciones de validación la copia de las etapas.
De esta forma solo se puede avanzar una etapa.

00018 020.00 000.05


SET
CE-0 P
010.01
E-1
Diagrama Ladder - 1:9 EJ2M2.SWP 19/10/01 11:31:46 Página 2

00021 020.01 000.07


SET
CE-1 D
010.02
E-2

00024 020.02 000.03


SET
CE-2 l
010.03
E-3

00027 020.03 000.01


SET
CE-3 C
010.00
E-0

Red 12 - Acc. Impuls.

Aqui se ejecutan las acciones impulsionales. De esta forma, si hay etapas inestables, sus acciones impulsionales se ejecutan.
Cuando E-2 es inestable, el pulso de la variable E-2 dura muy poco. Para tener un pulso mayor hay que utilizar las
instrucciones adecuadas. En este caso se ha programado un pulso de 100 ms en la salida Q.

00030 010.02 020.02


SET
E-2 CE-2
100.01
Q

00033 100.01
TIMH(15)
Q
000

#0010

00035 TIM000
RSET

100.01
Q

Red 15 - Salto atras

Si ha cambiado alguna etapa se produce un salto para volver a ejecutar las activaciones/desactivaciones.
Si no cambiado ninguna etapa significa que el estado es estable, por lo que se sigue el programa.

00037 253.13
CMP(20)
ON
010
Etapas

020
CopiaEtapas

00039 255.06
JMP(04)
EQUALS
1

Red 17 - Acc. Nivel

Se ha llegado a un estado estable. Aquí se ejecutan las acciones activas por nivel.

00041 010.01 100.00

E-1 M
010.03

E-3

00044
END(01)
Control de Procesos. Tema 3.

Ejemplo 3.
Considérese el problema de poner en marcha y apagar un motor con el mismo pulsador. Cuando se pulsa
P (en el flanco de subida) el motor se pone en marcha. Cuando se vuelve a pulsar P (el siguiente flanco de
subida) el motor debe pararse.
Una posible solución (la más simple) sería:

P↑

1 M

P↑
El método 1 no sirve para implementar este grafcet, ya que sus ecuaciones (activación/desactivación más
salidas) serían:
P
DIFU Z

E0 Z
RSET E0
SET E1
E1 Z
RSET E1
SET E0
E1 M

Resulta evidente que el sistema se quedaría siempre en la etapa 0.


Con el método 2, sin embargo el funcionamiento sí sería correcto. Ver el programa anexo.

17
Diagrama Ladder - 1:1 EJ3M2.SWP 19/10/01 11:32:17 Página 1

Principal 1 - EJEMPLO 3

Implementación del Ejemplo 3 por el método 2.

Red 1 - Inicialización

Se activan las etapas iniciales y se deactivan las demás.


Cuando son muchas se pueden usar funciones de canal.

00000 253.15
SET
FIRST_SCAN
010.00
E-0

RSET

010.01
E-1

Red 2 - Copia Etapas

Aqui se hace una copia de las etapas.


Este es el punto de llegada del salto.

00003
JME(05)

00004 253.13
MOV(21)
ON
010
Etapas

020
CopiaEtapas

Red 4 - Ac/Desac Etapas

Aqui se implementan las ecuaciones de desactivación de etapas


utilizando como condiciones de validación la copia de las etapas.
En primer lugar se detectan las receptividades por flanco.

00006 000.01
DIFU(13)
P
030.00
Z

00008 020.00 030.00


RSET
CE-0 Z
010.00
E-0

00011 020.01 030.00


RSET
CE-1 Z
010.01
E-1

Red 7 - Activ Etapas

Aqui se implementan las ecuaciones de activación de etapas


utilizando como condiciones de validación la copia de las etapas.

00014 020.00 030.00


SET
CE-0 Z
010.01
E-1

00017 020.01 030.00


SET
CE-1 Z
010.00
E-0
Diagrama Ladder - 1:9 EJ3M2.SWP 19/10/01 11:32:17 Página 2

Red 9 - Salto atras

Si ha cambiado alguna etapa se produce un salto para volver a ejecutar las activaciones/desactivaciones.
Si no cambiado ninguna etapa significa que el estado es estable, por lo que se sigue el programa.

00020 253.13
CMP(20)
ON
010
Etapas

020
CopiaEtapas

00022 255.06
JMP(04)
EQUALS
1

Red 11 - Acc. Nivel

Se ha llegado a un estado estable. Aquí se ejecutan las acciones activas por nivel.

00024 010.01 100.00

E-1 M

00026
END(01)
Control de Procesos. Tema 3.

Ejemplo 4.
Considérese el sistema:
A B

P
M

D
Por una cinta accionada por el motor M circulan palets espaciados regularmente de forma que cuando hay
un palet en A hay otro en B. Sobre estos palets puede o no haber un producto sobre el que hay que
realizar dos operaciones A y B (podrían ser de llenado, taponado, etiquetado, control, etc). El detector
inductivo D detecta el paso de los palets, mientras que la fotocélula P detecta la presencia de producto (si
hay producto se activa antes que D). Supondremos en este caso que las operaciones A y B están
temporizadas (duran 1 y 2 segundos respectivamente).
Una posible solución (solución a) al problema es:
E3

0 M

P⋅D↑
1 A

t/1/1s

D↑

3 B

t/3/2s
En este caso si vienen dos productos consecutivos se activan dos etapas de la secuencia, realizándose las
dos operaciones. El programa que implementa esta solución se realiza sin problemas con el método 1 o
con el método 2, tal y como se muestra a continuación.

20
Diagrama Ladder - 1:1 EJ4AM1.SWP 19/10/01 11:32:48 Página 1

Principal 1 - Ejem 4a. Met. 1

Implementación del Ejemplo 4a por el método 1.

Red 1 - Inicialización

Se activan las etapas iniciales y se deactivan las demás.


Cuando son muchas se pueden usar funciones de canal.

00000 253.15
MOV(21)
FIRST_SCAN
#0000

010
Etapas

SET

010.00
E-0

Red 2 - Ac/Desac Etapas

Aqui se implementan las ecuaciones de activación/desactivación de etapas


Las receptividades por flanco se evalúan al principio.

00003 000.07
DIFU(13)
D
030.00
Pulso_D

00005 010.00 030.00 000.05


RSET
E-0 Pulso_D P
010.00
E-0

SET

010.01
E-1

00010 010.01 TIM000


RSET
E-1
010.01
E-1

SET

010.00
E-0

SET

010.02
E-2

00015 010.02 030.00


RSET
E-2 Pulso_D
010.02
E-2

SET

010.03
E-3

00019 010.03 TIM001


RSET
E-3
010.03
E-3

Red 7 - Acc. Nivel

Aquí se ejecutan las acciones activas por nivel.

00022 010.00 010.03 100.00

E-0 E-3 M
Diagrama Ladder - 1:8 EJ4AM1.SWP 19/10/01 11:32:48 Página 2

00025 010.01 100.01

E-1 A

00027 010.03 100.02

E-3 B

Red 10 - Temporizadores

Aquí se definen los temporizadores

00029 010.01
TIM
E-1
000

#0010

00031 010.03
TIM
E-3
001

#0020

00033
END(01)
Diagrama Ladder - 1:1 EJ4AM2.SWP 19/10/01 11:33:08 Página 1

Principal 1 - Ejem 4a. Met. 2

Implementación del Ejemplo 4a por el método 2.

Red 1 - Inicialización

Se activan las etapas iniciales y se deactivan las demás.


Cuando son muchas se pueden usar funciones de canal.

00000 253.15
MOV(21)
FIRST_SCAN
#0000

010
Etapas

SET

010.00
E-0

Red 2 - Copia Etapas

Aqui se hace una copia de las etapas.


Este es el punto de llegada del salto.

00003
JME(05)

00004 253.13
MOV(21)
ON
010
Etapas

020
CopiaEtapas

Red 4 - Desactiv Etapas

Aqui se implementan las ecuaciones de desactivación de etapas


utilizando como condiciones de validación la copia de las etapas.
Las receptividades por flanco se evalúan al principio.

00006 000.07
DIFU(13)
D
030.00
Pulso_D

00008 020.00 030.00 000.05


RSET
CE-0 Pulso_D P
010.00
E-0

00012 020.01 TIM000


RSET
CE-1
010.01
E-1

00015 020.02 030.00


RSET
CE-2 Pulso_D
010.02
E-2

00018 020.03 TIM001


RSET
CE-3
010.03
E-3
Diagrama Ladder - 1:9 EJ4AM2.SWP 19/10/01 11:33:08 Página 2

Red 9 - Activ Etapas

Aqui se implementan las ecuaciones de activación de etapas


utilizando como condiciones de validación la copia de las etapas.

00021 020.00 030.00 000.05


SET
CE-0 Pulso_D P
010.01
E-1

00025 020.01 TIM000


SET
CE-1
010.02
E-2

SET

010.00
E-0

00029 020.02 030.00


SET
CE-2 Pulso_D
010.03
E-3

Red 12 - Salto atras

Si ha cambiado alguna etapa se produce un salto para volver a ejecutar las activaciones/desactivaciones.
Si no cambiado ninguna etapa significa que el estado es estable, por lo que se sigue el programa.

00032 253.13
CMP(20)
ON
010
Etapas

020
CopiaEtapas

00034 255.06
JMP(04)
EQUALS
1

Red 14 - Acc. Nivel

Se ha llegado a un estado estable. Aquí se ejecutan las acciones activas por nivel.

00036 010.00 010.03 100.00

E-0 E-3 M

00039 010.01 100.01

E-1 A

00041 010.03 100.02

E-3 B

Red 17 - Temporizadores

Aquí se definen los temporizadores

00043 010.01
TIM
E-1
000

#0010

00045 010.03
TIM
E-3
001

#0020
Diagrama Ladder - 1:19 EJ4AM2.SWP 19/10/01 11:33:08 Página 3

00047
END(01)
Control de Procesos. Tema 3.

Otra solución (solución b) podría ser:


1 B⋅ A

0 M

P⋅D↑ Temp
1 A

D↑

2 B

t/2/2s Temp= 1s / E1 ⋅ D ↑ / 0s
En este caso la etapa 0 está siempre activa. El temporizador se ha expresado según la norma IEC848. En
este caso no basta con poner la etapa 1, pues cuando pasan dos botes seguidos ésta no se desactiva, y por
lo tanto el temporizador no se resetearía.
El programa que implementa esta solución no se puede realizar con el método 1. En cambio sí se puede
realizar con el método 2 (ver anexo).

26
Diagrama Ladder - 1:1 EJ4BM2.SWP 19/10/01 11:33:30 Página 1

Principal 1 - Ejem 4b. Met. 2

Implementación del Ejemplo 4b por el método 2.

Red 1 - Inicialización

Se activan las etapas iniciales y se deactivan las demás.


Cuando son muchas se pueden usar funciones de canal.

00000 253.15
MOV(21)
FIRST_SCAN
#0000

010
Etapas

SET

010.00
E-0

Red 2 - Copia Etapas

Aqui se hace una copia de las etapas.


Este es el punto de llegada del salto.

00003
JME(05)

00004 253.13
MOV(21)
ON
010
Etapas

020
CopiaEtapas

Red 4 - Desactiv Etapas

Aqui se implementan las ecuaciones de desactivación de etapas


utilizando como condiciones de validación la copia de las etapas.
Las receptividades por flanco se evalúan al principio.

00006 000.07
DIFU(13)
D
030.00
Pulso_D

00008 020.00 030.00 000.05


RSET
CE-0 Pulso_D P
010.00
E-0

00012 020.01 030.00


RSET
CE-1 Pulso_D
010.01
E-1

00015 020.02 TIM001


RSET
CE-2
010.02
E-2

Red 8 - Activ Etapas

Aquí se realiza la activación de etapas


utilizando como condiciones de validación la copia de las etapas.

00018 253.13 010.00

ON E-0

00020 020.00 030.00 000.05


SET
CE-0 Pulso_D P
010.01
E-1
Diagrama Ladder - 1:10 EJ4BM2.SWP 19/10/01 11:33:30 Página 2

00024 020.01 030.00


SET
CE-1 Pulso_D
010.02
E-2

Red 11 - Acc. Impuls.

Aquí van las acciones impulsionales.


En este caso, el temporizador 0 necesita definirse como acción impulsional, pues en caso contrario
no se resetea cuando llega un segundo bote a A

00027 010.01 030.00


TIM
E-1 Pulso_D
000

#0010

Red 12 - Salto atras

Si ha cambiado alguna etapa se produce un salto para volver a ejecutar las activaciones/desactivaciones.
Si no cambiado ninguna etapa significa que el estado es estable, por lo que se sigue el programa.

00030 253.13
CMP(20)
ON
010
Etapas

020
CopiaEtapas

00032 255.06
JMP(04)
EQUALS
1

Red 14 - Acc. Nivel

Se ha llegado a un estado estable. Aquí se ejecutan las acciones activas por nivel.

00034 010.00 100.01 100.02 100.00

E-0 A B M

00038 010.01 TIM000 100.01

E-1 A

00041 010.02 100.02

E-2 B

Red 17 - Temporizadores

00043 010.02
TIM
E-2
001

#0020

00045
END(01)
Control de Procesos. Tema 3.

Implementación del algoritmo de control cuando hay forzados


Cuando el proceso se modela mediante varios Grafcets y existen forzados de unos sobre otros, el
algoritmo de implementación cambia ligeramente para tener en cuenta las reglas del forzado. Éstas son:
1. El forzado es prioritario respecto de cualquier otra evolución (sea de activación o de desactivación).
2. Las reglas de evolución del Grafcet no se aplican a un grafcet mientras éste permanezca forzado.

Cuando hay varios grafcets interrelacionados es conveniente utilizar el método 2, pues eso nos garantiza
el funcionamiento correcto. Las reglas del forzado se tienen en cuenta en la implementación en el
programa del autómata, sin más que introducir un pequeño cambio en el citado método 2. La
modificación consiste en que después del bloque 5 se deben ejecutar los forzados que correspondan a las
variables copia de etapas activas. Al situar los forzados después de las activaciones se garantiza que éstos
son prioritarios a aquellas. Si hay forzados por flanco, debe obtenerse el flanco de la copia de la etapa
donde está el forzado (esto se añade al punto 3).

El algoritmo final quedaría:

1. Inicialización de las etapas mediante el bit de inicio (este bloque solo se ejecuta una vez).
2. Copia de las variables etapas en las variables copia_de_etapas.
3. Detección de flancos. Aquí se incluyen tanto los flancos de las receptividades que se requieran,
como de las variables copia_de_etapas (para los forzados por flanco).
4. Desactivación de las etapas anteriores a las transiciones franqueables, utilizando para las
validaciones las variables copia_de_etapas.
5. Activación de las etapas posteriores a las transiciones franqueables, utilizando para las validaciones
las variables copia_de_etapas. De esta forma solo se avanza una etapa. La activación va después de
la desactivación para garantizar que sea prioritaria.
6. Ejecución de forzados. Para ello se utiliza como validación las variables copia_de_etapas. Si el
forzado es por flanco la validación será el flanco en la variable copia_de_etapa correspondiente (no
de la etapa).
7. Ejecución de las acciones impulsionales que correspondan. Aquí hay que incluir las acciones
impulso y las acciones memorizadas. Un ejemplo podría ser un contador que cuenta el número de
veces que se ha activado la etapa. La condición de ejecución de estas acciones es simplemente
etapa ⋅ copia _ de _ etapa .
8. Si ha habido cambios en alguna etapa (estado inestable) volver al paso 2.
9. Activación de las acciones a nivel. En este caso el estado es estable.
10. Definición de los temporizadores y contadores. Puede ser necesario poner algunos de los
temporizadores o contadores junto con las acciones impulsionales en el bloque 7 (si se ven afectados
por eventos de flanco).

El bloque de ecuaciones de forzado de grafcets (bloque 6) se implementa con instrucciones de SET y


RSET o con instrucciones de ANDW y ORW, con la condición de activación igual a la copia de la etapa
o al flanco de la copia de la etapa, según sea forzado por nivel o por flanco. El siguiente ejemplo ilustra la
cuestión.

Ejemplo 5.
Considérese el ejemplo 4. Se desea añadir las siguientes funciones.
• Habrá un pulsador de MARCHA y otro de PARADA. Al iniciarse el sistema todo estará desactivado
hasta que se pulse el pulsador de marcha. Cuando se pulse el pulsador de parada el sistema acabará
de procesar los elementos que lleguen hasta que se active D sin que haya pieza (P=0) y sin que quede
producto en B que procesar. En ese momento se pasará a la situación de inicio.
• Además habrá un pulsador de EMERGENCIA (pulsador con enclavamiento). Este pulsador produce
un corte de la alimentación del motor de la cinta y de los procesos A y B, independientemente del
automatismo. Cuando se pulse el pulsador de emergencia hay que desactivar los procesos A y B y la
cinta (aunque ya estén de hecho apagados por falta de alimentación) y poner en marcha una sirena.
Esa sirena se desactivará cuando se pulse un pulsador de parada de sirena. Para rearrancar el sistema
(después de resolver manualmente el problema que hubiera) se deberá rearmar el pulsador de
emergencia (ponerlo a off) y después pulsar el pulsador de marcha.

29
Control de Procesos. Tema 3.

• Además habrá un pulsador de parada de cinta temporal, y un pulsador de reinicio de cinta, que se
utilizarán para parar la cinta en cualquier momento.
Una solución podría ser:
E3 ⋅ E 4
4
0 M
ParoCinta
P ⋅D ↑
5
1 A G2
MarchaCinta
t/1/1s

6
2
ParoSirena ⋅EMERGENCIA
D↑
G1
7
3 B
EMERGENCIA
t/3/2s
G3

8 F/G1:{}/G2:{}/G3:{}

MARCHA
9 F↑/G1:{0}/G2:{4}/G3:{6}

PARADA EMERGENCIA EMERGENCIA

10 EMERGENCIA
E6
E 0 ⋅ E 2 ⋅ E 3 ⋅ D ↑ ⋅P
11 F/G1:{}/G2:{} SIRENA

EMERGENCIA

G0
El grafcet maestro (G0) es el que controla los modos de marcha y parada y la emergencia.
El programa que implementa los grafcets anteriores se muestra a continuación:

30
Diagrama Ladder - 1:1 EJ5M2.SWP 19/10/01 11:33:51 Página 1

Principal 1 - Ejem 5. Met. 2

Implementación del Ejemplo 5 por el Método 2.

Red 1 - Inicialización

Se activan las etapas iniciales y se deactivan las demás.


Cuando son muchas se pueden usar funciones de canal.

00000 253.15
MOV(21)
FIRST_SCAN
#0000

010
Etapas

SET

010.08
E-8

Red 2 - Copia Etapas

Aquí se hace la copia de las etapas


Este es el punto de llegada del salto

00003
JME(05)

00004 253.13
MOV(21)
ON
010
Etapas

020
CopiaEtapas

Red 4 - Detecta Flancos

Aquí se realiza la detección de variables de flanco


tanto de receptividades como de las copias de etapas necesarias

00006 000.07
DIFU(13)
D
030.00
Pulso_D

00008 020.09
DIFU(13)
CE-9
030.01
PulsoE9

Red 6 - Desactiv etapas

Aqui se implementan las ecuaciones de desactivación de etapas


utilizando como condiciones de validación la copia de las etapas.

00010 020.00 030.00 000.05


RSET
CE-0 Pulso_D P
010.00
E-0

00014 020.01 TIM000


RSET
CE-1
010.01
E-1

00017 020.02 030.00


RSET
CE-2 Pulso_D
010.02
E-2
Diagrama Ladder - 1:9 EJ5M2.SWP 19/10/01 11:33:51 Página 2

00020 020.03 TIM001


RSET
CE-3
010.03
E-3

00023 020.04 000.11


RSET
CE-4 ParoCinta
010.04
E-4

00026 020.05 000.09


RSET
CE-5 MarchaCinta
010.05
E-5

00029 020.06 000.15 000.13


RSET
CE-6 EMERGENCIA ParoSirena
010.06
E-6

00033 020.07 000.15


RSET
CE-7 EMERGENCIA
010.07
E-7

00036 020.08 000.01


RSET
CE-8 MARCHA
010.08
E-8

00039 020.09 000.03


RSET
CE-9 PARADA
000.15 010.09
E-9
EMERGENCIA

00044 020.00 030.00 020.02 020.03 000.05 020.10 030.02

CE-0 Pulso_D CE-2 CE-3 P CE-10 Auxiliar

00051 030.02
RSET
Auxiliar
000.15 020.10 010.10
E-10
EMERGENCIA CE-10

00056 020.11 000.15


RSET
CE-11 EMERGENCIA
010.11
E-11

Red 19 - Activ etapas

Aqui se implementan las ecuaciones de activación de etapas


utilizando como condiciones de validación la copia de las etapas.

00059 020.00 030.00 000.05


SET
CE-0 Pulso_D P
010.01
E-1

00063 020.01 TIM000


SET
CE-1
010.02
E-2

SET

010.00
E-0

00067 020.02 030.00


SET
CE-2 Pulso_D
010.03
E-3
Diagrama Ladder - 1:22 EJ5M2.SWP 19/10/01 11:33:51 Página 3

00070 020.04 000.11


SET
CE-4 ParoCinta
010.05
E-5

00073 020.05 000.09


SET
CE-5 MarchaCinta
010.04
E-4

00076 020.06 000.13 000.15


SET
CE-6 ParoSirena EMERGENCIA
010.07
E-7

00080 020.07 000.15


SET
CE-7 EMERGENCIA
010.06
E-6

00083 020.08 000.01


SET
CE-8 MARCHA
010.09
E-9

00086 020.09 000.03


SET
CE-9 PARADA
010.10
E-10

00089 030.02
SET
Auxiliar
020.11 000.15 010.08
E-8
CE-11 EMERGENCIA

00094 020.10 000.15


SET
CE-10 EMERGENCIA
020.09 010.11
E-11
CE-9
020.08

CE-8

Red 30 - Forzados

Aqui se implementan las ecuaciones de los forzados


tanto los activos por nivel como los activos por flanco

00099 020.08
ANDW(34)
CE-8
010
Etapas

#FF00

010
Etapas

00101 030.01
ANDW(34)
PulsoE9
010
Etapas

#FF00

010
Etapas

ORW(35)

010
Etapas

#0051

010
Etapas
Diagrama Ladder - 1:32 EJ5M2.SWP 19/10/01 11:33:51 Página 4

00104 020.11
ANDW(34)
CE-11
010
Etapas

#FFC0

010
Etapas

Red 33 - Salto atrás

Si ha cambiado alguna etapa se produce un salto para volver a ejecutar las activaciones/desactivaciones.
Si no cambiado ninguna etapa significa que el estado es estable, por lo que se sigue el programa.

00106 253.13
CMP(20)
ON
010
Etapas

020
CopiaEtapas

00108 255.06
JMP(04)
EQUALS
1

Red 35 - Acc. a nivel

Aqui se activan las salidas activas a nivel. Se ha llegado a un estado estable.

00110 010.00 010.03 010.04 100.00

E-0 E-3 E-4 M

00114 010.01 100.01

E-1 A

00116 010.03 100.02

E-3 B

00118 010.11 010.06 100.03

E-11 E-6 SIRENA

Red 39 - Temporizadores

Aquí se definen los temporizadores

00121 010.01
TIM
E-1
000

#0010

00123 010.03
TIM
E-3
001

#0020

00125
END(01)
Control de Procesos. Tema 3.

3.5. Implementación del algoritmo de control en otras plataformas.


El autómata programable dispone de un lenguaje de programación y unas instrucciones específicamente
diseñadas para implementar automatismos secuenciales. No obstante, los algoritmos descritos en la
sección anterior pueden implementarse fácilmente en cualquier otro computador siempre que disponga de
una interfaz adecuada de entrada y salida para obtener las señales de los sensores y dar la señal a los
actuadores.

La diferencia fundamental reside en que el autómata realiza un ciclo de scan del que el usuario solo tiene
que programar una parten (según los algoritmos descritos), mientras que el bucle infinito, la actualización
de entradas y salidas, la gestión de comunicaciones, la gestión de temporizadores, etc, las realiza sin que
el usuario tenga que programarlas. Eso quiere decir que el algoritmo de control debe insertarse denrto de
un bucle infinito, de manera que cada ciclo de ese bucle se ejecute el algoritmo, se refresquen las señales
de entrada y de salida y se realicen las tareas necesarias de comunicación o de gestión de temporizadores.

Respecto a la programación de las ecuaciones de activación y desactivación de etapas, o las ecuaciones de


salidas o forzados, solo hay que tener presente el significado de las ecuaciones en diagramas de contactos,
para traducirlas a ensamblador, C o cualquier otro lenguaje que se utilice.
y b y

a
Æ y = (( y & (~ b)) | a )

a y
SET x
Æ if (a & (~ y )) x =1

Con respecto a las señales de entrada y salida, es conveniente tener una copia de las mismas en memoria,
y trabajar con esas copias en las ecuaciones de activación, desactivación y salida, realizando una
actualización de las entradas y salidas físicas cada bucle (igual que hacen los autómatas). Esto garantiza
que se cumplen las reglas de evolución del grafcet.

La detección de flancos requiere crear una variable que sea una copia de aquella cuyo flanco se quiere
detectar. En C, el código equivalente a la instrucción DIFU podría ser:
Flanco_A=A&(~copia_A);
Copia_A=A;

Una mención especial merecen los temporizadores. En los autómatas programables existen instrucciones
que permiten contar un tiempo de retardo de forma muy sencilla. La implementación de estas
instrucciones depende mucho de la plataforma y de los temporizadores hardware de que disponga.

Si el computador dispone de un temporizador hardware capaz de contar un tiempo suficientemente largo,


la implementación de las instrucciones de temporizador del autómata puede consistir simplemente en
comparar el valor actual del temporizador con un valor de consigna, de forma que cuando el primero sea
mayor que el segundo quiere decir que ha transcurrido el tiempo especificado (lo cual llevaría a poner a 1
un bit).

Supóngase por ejemplo que se tiene un temporizador hardware de 16 bits que se incrementa cada cierto
tiempo desde 0 hasta 65535, volviendo después a 0 y así indefinidamente. Este temporizador permite
contar un tiempo máximo de 65536*periodo segundos. Si no hay un temporizador hardware capaz de
contar un tiempo suficientemente largo habría que utilizar una interrupción periódica para implementar un
temporizador por software (un contador que se incrementa cada interrupción).

Un ejemplo en C que implementaría un temporizador parecido al del autómata de OMRON, utilizando un


temporizador hardware como el anterior sería:

35
Control de Procesos. Tema 3.

if (E1&(~copia_E1)) tiempo_final=tiempo_actual+tiempo_a_contar;
copia_E1=E1;
if (E1&(tiempo_actual>tiempo_final)) bit_fin_tiempo=1;
else bit_fin_tiempo=0;

Donde se ha supuesto que se quiere contar un tiempo tiempo_a_contar desde que se activa la etapa E1
hasta que se activa el bit bit_fin_tiempo, que se desactiva una vez se desactiva la etapa E1. Ese bit se
utilizaría para la transición de salida de la etapa, por ejemplo. Se supone que tiempo_actual se incrementa
por hardware cada cierto periodo. La detección del flanco de la variable E1 es necesaria para que la
variable tiempo_final solo se defina una vez en el momento que se activa E1.

El código anterior podría servir para contar diversos retardos de tiempo de un grafcet utilizando
únicamente un temporizador hardware.

36
Control de Procesos. Tema 3.

ANEXO. Características de un A.P.I. comercial. CQM1 de OMRON.


El CQM1 es un autómata de la gama media-baja. El módulo de CPU tiene además del procesador,
memoria, puerto de periféricos y puerto serie, 16 entradas digitales. Dispone de módulos de expansión de
todo tipo: E/S digitales, E/S analógicas, E/S remotas, control de temperatura (PID), módulos de
comunicación.

Las características básicas del CQM1 (CPU21) son:


• Memoria de programa de 3.2KW (palabras de 16 bits).
• Memoria de datos no volátil de 1KW.
• 16 entradas digitales integradas en el módulo de CPU.
• Número máximo de entradas/salidas 128 (número máximo contando entradas y salidas).
• Tiempo de ejecución de instrucciones: Instrucciones básicas de 0.5 µs a 1.5 µs.
• 4 interrupciones externas. Proceso de interrupción inmediato.
• 512 temporizadores/contadores.
• Temporizadores de intervalo.
• Posibilidad de ciclo de scan con salida directa.
• Programación por diagrama de relés (o lista de instrucciones).

Los módulos conectados en el autómata del laboratorio son: módulo de 16 salidas digitales a relé,
módulo de 4 entradas analógicas, módulo de 2 salidas analógicas, y módulo de fuente de alimentación
adicional (para los módulos analógicos).

Área de memoria de datos del CQM1.


La memoria de datos es de 16 bits, es decir, está formada por palabras o canales de 16 bits. El
direccionamiento (identificación de un canal concreto) se hace por medio del número de dirección.
Cuando se programan los contactos y las funciones hay que utilizar la sintaxis correcta de
direccionamiento para referirse a una variable de memoria concreta.
El área de memoria de datos se divide en varias categorías. Cada área tiene una función
específica y se direcciona de una manera diferente:
• IR. Es el área donde están la memoria de entradas y salidas, así como las variables internas utilizadas
en forma de bits auxiliares. Se direccionan con 5 números. Los 3 primeros indican la palabra o canal
(un número del 000 al 229). Los dos últimos indican el bit dentro de esa palabra (un número del 0 al
15). Por ejemplo, el bit 013.08 es el bit nº 8 del canal 013.
Las entradas están a partir de la dirección 000.00 en el orden en que se colocan los módulos de
entradas. En el autómata del laboratorio las entradas digitales van de la 000.00 a la 000.15. Las
entradas analógicas (de 12 bits) van del canal 001 al canal 004 (en esos canales están los 12 bits de las
entradas analógicas). Las salidas digitales están situadas desde el 100.00 en adelante. En este caso
tenemos las salidas digitales del 100.00 al 100.15. Las salidas analógicas (de 12 bits) están en los
canales 101 y 102. Los demás bits del área de memoria IR se pueden utilizar como bits internos
auxiliares en el programa de usuario.
• SR. En realidad es una continuación del área IR, que va del canal 244 al canal 255. Los bits de esta
zona tienen funciones específicas, muy útiles para la programación. Hay bits que siempre están a 1 o
que siempre están a 0. Hay bits que cambian a frecuencia constante (cada 0.1 seg, o cada 1 seg, etc),
que se pueden utilizar para temporizar (utilizando un contador). Se direccionan igual que los IR.
• AR. Es un área de registros auxiliares. Se direccionan como AR xxyy, donde yy es el número de canal
(entre 00 y 27), y xx es el número de bit dentro del canal. Los bits de esta área tienen funciones
especiales.
• LR. Es un área de datos utilizada para comunicación 1 a 1 entre dos autómatas por el puerto serie. Si
no se utilizan para ésto se pueden utilizar como bits internos. Se direccionan como LR xxyy, donde xx
es el número de canal (entre 00 y 63) e yy es el número de bit dentro del canal (entre 00 y 15).
• TIM/CNT. En este área se almacenan los valores de los temporizadores y contadores. Se direccionan
como TC 000 a TC 511. Una vez definido en un programa como temporizador o contador, se
direcciona como TIM xxx ó CNT xxx. Si se utiliza para designar un contacto, éste representa la
salida del temporizador o contador. Si se utiliza como operando de canal significa el valor actual de
ese temporizador (16 bits). No se puede utilizar el mismo número para un contador y un temporizador.

37
Control de Procesos. Tema 3.

• HR. Es un área de datos de bits de retención, que no se pierden si se quita la alimentación. Se


direccionan como HR xxyy donde xx es el canal (entre 00 y 99) e yy es el bit (entre 00 y 15). Se
puede utilizar igual que los bits del área IR, pero con la diferencia de que no se pierden al
desconectarse el autómata.
• DM. Es un área de datos no volátil que solo se puede acceder por canales (no por bits individuales).
Se utiliza para almacenar datos. Se direcciona como DM xxxx (donde xxxx es un número del 0000 al
1023). Se utiliza para almacenar datos, teniendo la particularidad de que no se pierden aunque se
apague el autómata.

Instrucciones de programación.
Las fotocopias adjuntas recogen el conjunto completo de instrucciones (funciones) disponibles para
programar el CQM1. Cada instrucción tiene uno o varios operandos, que son las variables (posiciones de
memoria) sobre las que actúa. Estos operandos pueden ser bits individuales o canales de 16 bits. Algunos
operandos pueden no ser una posición de memoria, sino un valor numérico concreto. En ese caso se
escribe el signo # delante del número. Por ejemplo la función MOV actua sobre canales de 16 bits:
0001 0002 0001 0002
MOV MOV
001 #4034
DM0010 DM0010
Mueve el contenido de la dirección Mueve el valor 4034 a la
001 a la dirección DM0010 dirección DM0010
Algunas funciones pueden ser activas por nivel o por flanco de subida. Cuando son activas por flanco de
subida tienen una @ delante. Esas funciones solo se ejecutan una vez cuando la condición de ejecución
cambia de 0 a 1.
Las instrucciones más importantes del CQM1 son:

Instrucciones básicas de relés.

LD, LD NOT, AND, AND NOT, OR, OR NOT, OR LD, AND LD

Instrucciones básicas de control de bit.

OUT. Asigna a una variable el valor de la condición de activación.


OUT NOT. Asigna a una variable el valor negado de la condición de activación.
SET. Activa una variable.
RSET. Desactiva una variable.
DIFU. Activa una variable durante un solo ciclo de scan cuando la condición de activación pasa de cero a
uno (flanco de subida).
DIFD. Activa una variable durante un solo ciclo de scan cuando la condición de activación pasa de uno a
cero (flanco de bajada).
KEEP. Tiene dos condiciones de activación (una es la entrada Set y la otra la entrada Reset). La salida se
activa o desactiva en función del valor de las dos entradas (R y S) actuando como un biestable tipo RS.

Instrucciones básicas de temporizadores/contadores.

TIM. Temporizador de retardo a ON. La salida se activa al cabo de un tiempo desde que se ha puesto a 1
la condición de activación.
TIMH. Igual que TIM, pero permite contar intervalos de tiempo más cortos (temporizador de alta
velocidad).
CNT. Contador descendente. Cada vez que la condición de ejecución pasa de cero a 1 el contador se
decrementa.
CNTR. Contador reversible. Igual que el anterior, pero con dos entradas de contaje: una para incrementar
y la otra para decrementar.

Instrucciones básicas de control de programa.

END. Fin del programa-

38
Control de Procesos. Tema 3.

JMP. Salto. Cuando la condición de ejecución es 0 se produce el salto hasta intrucción JME con el
mismo número. Si la condición es 1, el programa continúa (no hay salto).
JME. Punto de llegada de un salto.
IL. Si la condición de ejecución es 0, todas las redes entre ésta y la siguiente instrucción ILC se fuerzan a
0, independientemente del valor que tengan. Si la condición es 1, no se hace nada.
ILC. Indica el final de la zona de actuación de la instrucción IL anterior.

Instrucciones de comparación de datos.

CMP. Compara dos canales (variables de 16 bits). El resultado de la comparación afecta al bit EQ (se
pone a 1 si los valores son iguales), al bit LE (se pone a 1 si el primer valor es menor) y al bit GR (se
pone a 1 si el primer valor es mayor). Cualquiera de estos bits se puede utilizar en la instrucción
siguiente para hacer algo o no en función de la comparación.

Instrucciones de transferencia de datos.

MOV. Transfiere un canal o un valor constante a otro canal.


MOVB. Transfiere un bit de un canal a otro bit de otro canal.

Instrucciones matemáticas (en binario y en BCD).

ADB. Suma binaria de dos canales, o de un canal y una constante.


ADD. Suma en BCD de dos canales o un canal y una constante.
Instrucciones de conversión de datos.

BIN. Convierte de BCD a binario (hexadecimal).


BCD. Convierte de binario (hexadecimal) a BCD.

Instrucciones lógicas (de canales).

ANDW. Realiza la función lógica AND entre dos canales, bit a bit.

Instrucciones de subrutina e interrupción.

INT. Sirve para configurar interrupciones.


STIM. Temporizador para contar el tiempo entre interrupciones periódicas.
SBS. Llama a una subrutina desde el programa principal.
SBN. Indica el comienzo de una subrutina.
RET. Indica el final de una subrutina.

Instrucciones especiales.

IORF. Refresca las entradas y salidas del autómata.


APR. Realiza cálculos de seno o coseno.
PID. Implementa un algoritmo de control PID.
PWM. Produce una salida PWM del ciclo de trabajo especificado.

39

También podría gustarte