Sie sind auf Seite 1von 53

Estndar de Lenguajes de

Programacin IEC 1131


Estndar de Lenguajes de Programacin IEC 1131

La programacin de controladores puede llegar a ser una tarea difcil, debido al incremento
en los requerimientos de permisivos en un programa, a medida que el proceso se hace ms
complejo. Adicionalmente, cada fabricante ofrece conjuntos diferentes de instrucciones
dentro de su familia de controladores. Algunas de esas instrucciones pueden no ser
aplicables a otros controladores, y no existe una manera fcil de traducir un programa
existente para un controlador de otra marca.
En esta seccin se aborda el estndar IEC 1131 que intenta simplificar y estandarizar los
lenguajes de programacin.

Introduccin al Estndar IEC 1131

El comit SC65B-WG7 de la Comisin Electrotcnica Internacional (International


Electrotechnical Commission - IEC) desarroll el estndar IEC 1131en un esfuerzo para
estandarizar los controladores programables. Uno de los objetivos del comit fue crear un
conjunto comn de instrucciones que pudieran ser utilizados en todos los controladores.
Aunque el estndar IEC 113 alcanz el estatus de internacional en 1992, el esfuerzo por crear
un estndar global en cuanto a los controladores, ha sido una tarea muy difcil de conseguir,
debido a la gran diversidad de fabricantes y el problema de incompatibilidad entre las
diferentes marcas.
El estndar IEC 1131 para controladores programables consta de cinco partes:

Informacin general

Requerimientos de equipos y pruebas

Lenguajes de programacin

Lineamientos para el usuario

Servicios de mensajera (comunicacin)

Aunque existen cinco partes en el estndar IEC 1131, la tercera de ellas - lenguajes de
programacin - proporciona toda la informacin acerca de los estndares de programacin.
Las otras secciones describen los lineamientos para pruebas y comunicaciones de las
instrucciones, as como la metodologa que debe ser empleada por el usuario del controlador
programable.
El estndar sobre lenguajes de programacin IEC 1131 es referido como IEC 1131-3
programming standard, ya que es la tercera parte la que aborda este tpico.

Controladores Ramn Pgina 2


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Lenguajes e Instrucciones

El estndar IEC 1131-3 define dos lenguajes grficos y dos basados en texto para su uso en la
programacin de controladores. Los lenguajes grficos usan smbolos para programar las
instrucciones de control, mientras que los basados en texto usan cadenas de caracteres. Los
lenguajes grficos incluyen:

Diagrama de escalera (LD)

Diagrama de bloques de funcin (FBD)

Los basados en texto comprenden:

Lista de instrucciones (IL)

Texto estructurado (ST)

Adicionalmente, el estndar IEC 1131-3 incluye un entorno orientado a objetos llamado


diagrama de funciones secuenciales (SFC). Aunque es algunas veces categorizado como un
lenguaje IEC 1131-3, en realidad es una estructura organizacional que coordina los cuatro
verdaderos lenguajes de programacin. La estructura SFC es parecida a la de un diagrama de
flujo, que utiliza diferentes lenguajes para distintas tareas de control, enrutando adems las
acciones del programa. La estructura del SFC tiene sus orgenes en el Grafcet (IEC 848).
El estndar IEC 1131-3 es un mtodo de programacin por bloques, grfico y orientado a
objetos, que incrementa la flexibilidad en la programacin y diagnstico de los controladores
programables. Permite que secciones de un programa sean agrupadas en tareas, que pueden
ser entrelazadas con el resto del programa. De esta manera, un programa IEC 1131-3 puede
estar formado por pequeas tareas representadas dentro de un bloque grfico SFC. La
combinacin de lenguajes disponibles en el estndar IEC 1131-3 mejora la programacin y
depuracin proporcionando no slo un mejor lenguaje, sin tambin un mejor mtodo para
implementar soluciones de control.
El IEC 1131-3 usa una amplia variedad de funciones de datos y bloques de funcin estndar,
que operan sobre un gran nmero de tipos de variables. La tabla a continuacin muestra
algunos ejemplos de esos tipos de datos y funciones de datos, as como algunos bloques de
funcin tpicos. El tipo de variable se refiere a la informacin recibida por el controlador
(binario, nmero real, hora, entre otros), mientras que las funciones de datos son las
operaciones ejecutadas sobre la informacin (comparacin, inversin, suma, entre otros).
Los bloques de funcin son conjuntos de instrucciones que operan sobre bloques de datos.
Adicionalmente, el alcance de la variable se refiere al mbito en el que puede ser utilizada la
variable dentro de la aplicacin. Por ejemplo, las variables globales pueden ser por cualquier
programa en la aplicacin, mientras que las locales slo pueden ser usadas por un programa
en particular. En adicin a los tipos de variables, funciones y bloques estndar, el IEC 1131-3
Controladores Ramn Pgina 3
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

permite otros tipos de elementos definidos por fabricantes y usuarios. El estndar IEC 1131-3
no limita la funcionalidad de los controladores, sino que establece una base comn para
funciones estndar y adicionales.

Tipos de datos, funciones y


bloques

La flexibilidad de los tipos y funcin de datos del IEC 1131 permite que los fabricantes de
controladores programables proporciones instrucciones que consideren necesarias, que no
estn definidas dentro del estndar. Dichas instrucciones pueden incluir funciones para
aplicaciones especficas tales como el posicionamiento de un servo motor, utilizado por
mdulos inteligentes de control. Aunque esta instruccin puede estar conforme con los
parmetros de programabilidad del estndar, puede que no est disponible en otros
controladores que cumplan tambin con el estndar. El estndar IEC 1131 permite que los
fabricantes amplen su conjunto de instrucciones IEC 1131-3 aadiendo instrucciones ms
poderosas y a la medida. Tambin permite que los usuarios creen sus propias instrucciones,
en forma de bloques, para ejecutar tareas especficas.

Declaracin de Variables

Al implementar un sistema de control, el usuario declarar las variables a ser usadas. Esta
declaracin de variables no es ms que 'mapear' direcciones de E/S, indicando que
dispositivos de campo estn cableados a cada mdulo. La figura a continuacin muestra un
interruptor de fin de carrera (LS1) implementado en un ambiente de programacin
convencional. En esta configuracin, el dispositivo es declarado en el programa de control
por su direccin (10).
Controladores Ramn Pgina 4
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Interruptor de fin de carrera,


diseccionado en un ambiente
estndar

En un ambiente IEC 1131-3, sin embargo, el dispositivo puede ser descrito con un nombre
alfanumrico. Por lo tanto, el dispositivo puede ser declarado como Limit_Switch_1,
Clamp_limit_Switch o cualquier otro nombre apropiado.

Interruptor de fin de carrera,


diseccionado en un ambiente
IEC 1131-3

Desde el momento que la variable es declarada, ser conocida por el nombre asignado, a lo
largo de todo del programa de control, sin importar qu lenguaje de programacin se est
usando. El nombre asignado no hace diferencia entre maysculas y minsculas.
Cuando se declara una variable, el usuario puede especificar el tipo en adicin al nombre.
Esto permite que el controlador sepa qu tipo de dato transmite el dispositivo asociado a la
variable. El IEC 1131-3 soporta varios tipos de variables globales y locales; sin embargo, las
ms comunes son:

Booleano

Entero

Real

Controladores Ramn Pgina 5


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Tipos de Datos

Las variables booleanas tienen un bit de longitud, lo que significa que adoptan valores en la
forma de unos y ceros. Las variables de E/S discretas estn incluidas en esta categora, y por
lo tanto son especificadas como 'Bool' (contraccin de booleana) en el programa de control.
Muchas variables no discretas, como por ejemplo las seales analgicas de entrada, son
variables enteras, porque envan informacin en forma de nmeros. Estas son especificadas
en el programa de control como variables enteras. Las variables internas que contienen
informacin en forma de fracciones y punto flotante (por ejemplo, el resultado de una
multiplicacin) son variables reales que deben ser clasificadas como tal.

Ejemplo 1

Implemente la declaracin de una variable booleana (nombre y tipo de la variable) para el


dispositivo de entrada que se muestra en la figura a continuacin. Asuma que el controlador
usado utiliza una configuracin de direcciones basada en chasis-ranura-terminal (por
ejemplo, chasis 0, ranura 0, terminal 3 es la direccin 003)

Controladores Ramn Pgina 6


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Solucin

La siguiente figura muestra una sencilla declaracin para la variable de este ejemplo. Todos
los dispositivos de entrada son discretos; por lo tanto, son especificados como variables
booleanas. PB es identificado como MAN_START_PB, LS1 es declarado como
AUTO_PART_Detect y LS2 es llamado NO_JAM_Detect.

Controladores Ramn Pgina 7


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Lenguajes de Programacin IEC 1131-3

Aunque el estndar de programacin IEC 1131-3 proporciona un enorme potencial para los
usuarios de controladores programables, est basado en el lenguaje de escalera, que ha sido
inherente a estos equipos desde sus inicios. El IEC 1131-3 est basado en la lgica de escalera
utilizada en controladores (incluyendo bloques funcionales) por su simplicidad,
representacin y programabilidad. Sin embargo, el IEC 1131-3 disminuye la necesidad de usar
circuitos con complejos entrecruzamientos, tpicos en diagramas de escalera. Mejora los
lenguajes usados anteriormente e incorpora un poderoso entorno - diagrama de funciones
secuenciales - haciendo mucho ms fcil el entrecruzamiento de variables, la interpretacin
del programa de control y la implementacin del sistema de control, tanto para el
programador como para el usuario final.

Diagrama de Escalera

El diagrama de escalera (LD) usa un conjunto estandarizado de smbolos de programacin en


escalera, para implementar funciones de control. Este tipo de lenguaje es esencialmente el
mismo que ha estado siempre disponible en los controladores. Los usuarios que ya estn
familiarizados con los diagramas de escalera, pueden usar las mismas tcnicas de
programacin al usarlo en un ambiente IEC 1131-3. Sin embargo, en el entrecruzamiento de
variables es ms fcil en el formato IEC 1131-3, debido a la disponibilidad de los diagramas
de funciones secuenciales.

Controladores Ramn Pgina 8


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Representacin en diagrama
de escalera

Diagrama de Bloques Funcionales

Los diagramas de bloques funciones (FBD) constituyen un lenguaje grfico que permite que
el usuario programe elementos (por ejemplo, bloques de funcin de un controlador) de una
forma tal que parecen estar cableados como en un circuito elctrico. Algunos sistemas IEC
1131-3 usan smbolos lgicos para representar los bloques de funcin. No se requiere la
representacin de 'bobinas' de salida, ya que dicha salida es representada por la variable
asignada al bloque.

Diagrama de bloques
funcionales

Esta variable puede ser usada en otras instrucciones a lo largo del programa. El usuario
puede sin embargo usar una representacin de bobina, si as lo desea; no obstante estar
limitado al bloque de ms a la derecha. El lenguaje FBD usa bloques de funcin estndar y
especficos del fabricante.
En adicin a los bloques de funcin especficos de cada fabricante, el IEC 1131- 3 permite la
'construccin' de funciones por parte del usuario, de acuerdo a los requerimientos del
programa de control. Esto es llamado encapsulamiento. La ventaja de crear bloques de
funcin definidos por el usuario es que pueden contener otros bloques de funcin, listas de
instrucciones o texto estructurado con o sin instrucciones en diagrama de escalera. Esto le da
una gran flexibilidad a la programacin con bloques funcionales. El encapsulamiento permite
Controladores Ramn Pgina 9
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

que el usuario almacene los bloques que haya creado en una librera que le permitir usarlo
tantas veces como lo necesite en el programa, de la misma manera en que lo hara con
cualquier otro bloque de funcin.

Ejemplo 2

Ilustre cmo el circuito mostrado en la siguiente figura puede ser implementado usando
diagrama de escalera con un bloque de funcin definido por el usuario que encienda el
motor M1 y la lmpara piloto PL1.

Solucin

La siguiente figura muestra el diagrama de escalera equivalente al circuito cableado


mostrado anteriormente. Ntese que existen dos peldaos para las dos salidas y que las
variables de entrada y salida estn especificadas con los mismos nombres que tienen en el
circuito cableado.
Para implementar este sencillo diagrama de escalera como bloque de funcin, debe ser
programado (o almacenado) en un bloque encapsulado. El bloque de funcin final lucir
como el diagrama mostrado. Ntese que las entradas del bloque de arranque y parada
actuarn de acuerdo con la lgica usada para programar el bloque. Si la entrada de arranque
est encendida, se encendern a su vez el motor y la lmpara piloto. Si el botn de parada
est activado, se apagarn el motor y la lmpara piloto. Las dos variables de entrada
(comandos START y STOP), al igual que las de salida (MOTOR y PILOT_LIGHT) son variables
booleanas.

Controladores Ramn Pgina 10


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

La flexibilidad en la creacin de bloques de funcin definidos por el usuario se ve mejorada


por el hecho de que es posible usar diagrama de escalera y cualquier otro lenguaje IEC 1131-
3 para su construccin. Adems, los bloques a la medida pueden ser usados en conjunto con
otros bloques estndar o especficos de un fabricante. Esto permite que el programador
construya poderosos bloques de funcin, que puedan ser integrados a cualquier diagrama de
escalera o de bloques de funcin.

Lista de Instrucciones

La lista de instrucciones (IL) es un lenguaje de bajo nivel parecido al lenguaje ensamblador.

Ejemplo de lenguaje de
mquina usado en
controladores

Este tipo de lenguaje es til para aplicaciones pequeas, as como para casos en los que se
requiera optimizar la velocidad de una rutina especfica. Tambin puede ser usada para
Controladores Ramn Pgina 11
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

construir bloques de funcin a la medida. Una aplicacin tpica de la IL puede involucrar la


inicializacin a cero de registros acumuladores de todos los temporizadores en un programa
de control.

Bloque funcional a la medida


que utiliza lista de
instrucciones para
reinicializar el temporizadores
a cero

En la figura anterior, TMR1 AR es la direccin del registro acumulador del primer


temporizador. En el FBD, la direccin es conocida como Timer_AR_1 de tal manera que el
programa IL pueda interpretarlo. El programa IL produce como resultado, que los registros
acumuladores sean inicializados a cero. La variable Reset_Timer dispara el bloque y comienza
la ejecucin de las instrucciones IL. La rutina IL estar continuamente reinicindose mientras
el bloque est habilitado por la variable Reset_Timer. Existe tambin la manera de enviar
slo un pulso al bloque de funcin, de tal manera que las instrucciones sean ejecutadas slo
una vez.

Texto Estructurado

El texto estructurado (ST) es un lenguaje de alto nivel que permite el uso de tcnicas de
programacin estructurada. El ST se parece al BASIC, PASCAL o C, los cuales usan subrutinas
para ejecutar diferentes funciones de control y pasan parmetros y valores entre las
diferentes secciones del programa. Al igual que en los casos del diagrama de escalera,
diagrama de bloques de funcin y lista de instrucciones, el texto estructurado usa definicin
de variables para identificar los dispositivos de campo de E/S, as como cualquier otra
variable interna usada en el programa. El ST soporta lazos de control tales como WHILE...DO
y REPEAT...UNTIL, as como estructuras condicionales tales como IF...THEN...ELSE. Ms an,
el texto estructurado soporta el uso de operaciones booleanas (AND, OR, entre otros) y una
variedad de datos especficos, tales como informacin de fecha y hora.

Controladores Ramn Pgina 12


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Ejemplo de un programa al
estilo BASIC

El texto estructurado es extremadamente til para la escritura de rutinas relacionadas con


generacin de reportes, El ST puede ser usado para encapsular o crear un bloque de funcin
que ejecuten ciertas acciones cuando sean activados por la lgica de control. Las rutinas
incluidas en bloques de funcin pueden ser usadas varias veces a lo largo de todo el
programa de control.
Algunos fabricantes mejoran las caractersticas estndar del texto estructurado utilizndolo
para integrar 'forzamiento' en tiempo real y monitoreo de las E/S (analgicas y digitales) de la
misma manera en que un controlador estndar lo hara con diagrama de escalera. Por
ejemplo, una instruccin ST como FORCE Variable_One har que Variable_One se encienda
sin importar las condiciones de entrada, siempre que dicha variable sea booleana. Si la
variable es analgica, la instruccin podra ser Variable_One= 5000 en cuyo caso, la variable
ser asignada con el valor 5000 durante el 'forzamiento'.

Bloque de funcin para


generacin de reportes,
implementado usando texto
estructurado

El texto estructurado es particularmente adecuado para aplicaciones que involucran


manipulacin de datos, ordenamiento y manejo intensivo de operaciones matemticas en
Controladores Ramn Pgina 13
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

punto flotante. ST es tambin el mejor lenguaje para implementar inteligencia artificial,


lgica difusa y toma de decisiones.

Diagrama de Funciones Secuenciales

Es un lenguaje grfico que proporciona una representacin diagramtica de una secuencia de


control. En esencia, el diagrama de funciones secuenciales es una entorno parecido a una
diagrama de flujo, que organiza los subprogramas y subrutinas (programadas en lenguaje de
escalera, bloques de funcin, lista de instrucciones y texto estructurado) que constituyen un
programa de control. El SFC es particularmente til para operaciones de control secuencia,
donde el programa fluye de un paso a otro una vez se verifica una determinada condicin.
El entorno de programacin SFC contiene tres elementos principales que organizan el
programa de control:

Pasos

Transiciones

Acciones

Un paso es una etapa en el proceso. Por ejemplo, la aplicacin de mezclado que se muestra
en la siguiente figura, tiene tres pasos: el paso inicial, la etapa de mezclado y la etapa de
vaciado. Cuando el programa de control recibe una entrada, ejecuta cada uno de los pasos
iniciando con el primero. Cada etapa puede o no tener una accin asociada. Una accin es un
conjunto de instrucciones de control que indican al controlador, que funciones ejecutar
durante dicha etapa.

Controladores Ramn Pgina 14


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Diagrama de funciones
secuenciales para un proceso
de mezclado

Una accin puede ser programa utilizando cualquiera de los lenguajes IEC 1131-3. Luego que
el controlador ejecuta las acciones, debe recibir una transicin antes de proceder con el
siguiente paso. Una transicin puede tomar la forma de una variable de entrada, el resultado
de una accin previa o una sentencia condicional (IF). Para la aplicacin que se muestra en la
siguiente figura, el controlador ejecuta la accin 2 slo luego de que el paso 1 recibe una
entrada vlida y la transicin 1 ocurre.

Controladores Ramn Pgina 15


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Transiciones en una diagrama


de funciones secuenciales

Luego de que el controlador finaliza la accin 2, espera por la transicin 2 antes de 'moverse'
al paso 3.
El diagrama de funciones secuenciales tiene sus orgenes en el estndar francs Grafcet, un
lenguaje de programacin similar a los diagramas de flujo. El lenguaje Grafcet tambin usa
pasos, transiciones y acciones que operan de manera similar a como lo hace el SFC. En
Grafcet, cuando un paso est activo, el procesador monitorea las E/S y lneas de programa
pertinentes a las acciones del paso, as como la lgica que define la transicin.
Al igual que el Grafcet, el SFC es similar a un diagrama de flujo en la manera en que el control
es transferido de un paso a otro. Adems, tambin al igual que el Grafcet, el SFC puede ser
programado directamente relacionado con diagramas de eventos y tiempos.

Controladores Ramn Pgina 16


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Comparacin entre un
diagrama SFC y un diagrama
de flujo

Como se muestra en la figura a continuacin, si la condicin Part_Present_LS es satisfecha (el


interruptor est cerrado), la salida Advance_Solenoid se encender. Una vez que
Part_In_Position_LS est activada, la salida Clamp_Solenoid se encender. Luego, cuando la
condicin At_Depth_LS se haga verdadera, la salida Drill_Motor se encender por 10
segundos. Ntese que la salida Clamp_Solenoid es tambin activada durante la accin de
Drill_Motor. Una vez que el tiempo expira, el diagrama de tiempo indica que las salidas
Clamp_Solenoid y Drill_Motor son apagadas, mientras que Return_Solenoid se enciende.

Controladores Ramn Pgina 17


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Comparacin entre un
diagrama de tiempo y sus
programas Grafcet y SFC
correspondientes

No se ejecutan nuevas acciones hasta que el comando At_Top_LS es satisfecho, momento en


que el proceso se detendr y la salida Return_Solenoid se reiniciar para otra secuencia. La
figura anterior muestra el diagrama de secuencia en Grafcet y SFC respectivamente. Ambos
lenguajes de programacin representan grficamente la implementacin del diagrama de
tiempo usando pasos, acciones y transiciones. Las acciones representan la activacin de
solenoides y del motor, mientras que las transiciones representan las entradas de
interruptores y el estatus del temporizador.
La mayor diferencia entre Grafcet y SFC est en que Grafcet slo emplea acciones escritas,
tales como Open_Variable para implementar los bloques de accin que encienden y apagan
dispositivos. En SFC, las acciones pueden ser implementadas usando diagrama de escalera,
lista de instrucciones, texto estructurado y bloques de funcin solos o combinados,
incluyendo el uso de bloques definidos por el usuario. Por ejemplo, en la accin 2 del
programa en Grafcet, la sentencia Advance_Solenoid indica el encendido del dispositivo de
campo asociado con la variable de salida asignada a Advance_Solenoid. En otras palabras, si
la variable de salida est definida en una accin Grafcet, esta se encender. En el programa
equivalente en SFC, la instruccin del paso 2 indica que Advance_Solenoid se encender. SFC
Controladores Ramn Pgina 18
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

no contiene una sentencia asociada a la variable de salida, sino ms bien una instruccin que
enciende o apaga el dispositivo durante la accin.
Los diagramas de funciones secuenciales pueden ser concebidos como bloques de
construccin usados para crear programas de control, usando los otros lenguajes para
resolver los detalles. De hecho, el SFC puede tener macro pasos, los cuales permiten que un
diagrama de funciones secuenciales maestro, tenga otros diagramas de funciones
secuenciales en sus acciones.

Macro pasos (macrosteps)


dentro de una diagrama SFC

Estos diagramas menores, los cuales constan de pasos, transiciones y acciones, son
equivalentes a subrutinas en un programa.
Una de las grandes ventajas de los diagramas de funciones secuenciales es que son ms
fciles de diagnosticar que el diagrama de escalera. Por ejemplo, en el diagrama de funciones
secuenciales mostrado anteriormente, si la accin Clamp_Solenoid en el paso 3 no hace la
transicin al paso 4, es fcil reconocer que el problema ocurri en la transicin luego del paso
3, que corresponde a la activacin de la transicin At_Depth. El SFC resalta el paso o
transicin donde haya ocurrido el problema.

Notacin de Lenguajes de Programacin

Los diagramas de funciones secuenciales proporcionan la infraestructura para un programa


de control, que es luego construido utilizando uno o ms de los lenguajes definidos en la
Controladores Ramn Pgina 19
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

norma IEC 1131-3. Por esta razn, conviene verificar las similitudes entre las notaciones
utilizadas para el diagrama de escalera, bloques funcionales, texto estructurado y lista de
instrucciones.
Las figuras a continuacin muestran un sencillo diagrama de escalera y sus equivalentes en
bloques secuenciales, texto estructurado y lista de instrucciones.

Diagrama de escalera

Bloques funcionales

En el texto estructurado se usan dos operadores, AND y & para denotar la funcin AND. El
smbolo:= es utilizado para asignar una variable de salida a una expresin lgica.

Texto estructurado

En la lista de instrucciones, la primera instruccin (LD) carga el estado de la variable


Limit_S_1 en el registro acumulador, el cual es llamado registro de resultado. La segunda
instruccin (AND) obtiene el resultado de aplicar la operacin AND entre los contenidos de
las variables Limit_S_1 y la variable Start_Cycle; el resultado queda almacenado en el registro
de resultado. La tercera instruccin (ST) almacena el contenido del registro de resultado en la
variable de salida Valve_3. Este proceso es similar al lenguaje booleano.

Controladores Ramn Pgina 20


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Lista de instrucciones

Como es posible constatar, las instrucciones utilizadas para implementar las secuencias de
control en cada lenguaje son similares en su construccin as como en su representacin
visual. Dependiendo de la aplicacin, el SFC puede usar uno o ms de esos lenguajes para
programas las instrucciones dentro de las acciones. Para diferenciar los lenguajes, algunos
fabricantes incluyen comandos de inicio y finalizacin que definen el lenguaje que est
siendo usado. Otros fabricantes permiten la mezcla de lenguajes sin separacin entre ellos.
La figura a continuacin ilustra un grupo de instrucciones que han sido etiquetadas con
diferenciacin de mnemotcnicos. El trmino #Language=name indica el inicio de un
lenguaje y #ENDlanguage name sealiza la finalizacin.

Controladores Ramn Pgina 21


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Diferentes lenguajes dentro


de un SFC, separados por sus
etiquetas de inicio y
terminacin

Ejemplo 3

En aplicaciones con PLC, muchos interruptores de final de carrera exhiben un


comportamiento llamado 'rebote', el cual consiste en que el interruptor se abre y cierra
Controladores Ramn Pgina 22
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

varias veces antes de finalmente activarse o desactivarse. Se pide desarrollar un bloque de


funcin a la medida que proporcione un retardo de 50 milisegundos para eliminar dicho
rebote, que pueda ser almacenado en una librera y utilizado para programar todas las
entradas asociadas a interruptores de fin de carrera. Ntese que la correccin del rebote
debe ser hecha para ambas transiciones APAGADO-ENCENDIDO y ENCENDIDO-APAGADO.

Solucin

La figura a continuacin muestra el diagrama de tiempo de la entrada asociada al interruptor


de fin de carrera. Muestra cmo un retardo de 50 milisegundos (en azul) debe existir en las
transiciones del interruptor para filtrar las seales de rebote. Se pueden utilizar
temporizadores para resolver el problema.

Controladores Ramn Pgina 23


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Las figuras a continuacin muestran la implementacin del circuito de eliminacin de rebote


utilizando diagrama de escalera y el diagrama de tiempo correspondiente.

Controladores Ramn Pgina 24


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

La siguiente figura muestra el mismo tipo de solucin, implementado usando bloques


funcionales.

Formato SFC

Los diagramas de funciones secuenciales representan el orden de los eventos en un proceso


secuencial. Un SFC divide el proceso en muchos pasos, que son representados por varios
componentes grficos. Todos esos componentes son usados para formar una o ms cartas
que conforman el programa de control completo.

Controladores Ramn Pgina 25


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Smbolos grficos usados en


SFC

La siguiente figura ilustra un pequeo programa de control compuesto de tres SFCs, cada uno
con su paso inicial independiente. Al tener pasos independientes, el programa de control
inicia el barrido de los diagramas cuando inicia la ejecucin del programa, proporcionando un
inicio en paralelo.

Tres SFC representando


control de procesos

El tercer diagrama (CHART 3) a su vez contiene un macro paso, que puede ser considerado
como una subrutina, cuyo paso inicial no es independiente. EL segundo diagrama (CHART 2)
tiene un enlace representado de manera diferente a como lo es en los otros dos diagramas,
significando que en lugar de usar un enlace tipo flecha, se emplea una instruccin de salto. La
instruccin de 'salto a' programada luego del ltimo paso usa una X seguida del nmero del
paso, para especificar a donde ir, en este caso, el paso 10. La instruccin 'salto desde'
programada antes de la primera instruccin, usa una Y, y el nmero de la transicin (Y12)
para indicar desde dnde ha ocurre el salto. Esta notacin X nmero de paso y Y nmero de
transicin es usada en los FCSs para distinguir entre variables de pasos y transiciones.
Algunos sistemas 1131-3 usan las letras S y T para denotar pasos y transiciones, en lugar de X
e Y.
Los diagramas de funciones secuenciales son clasificados por niveles, dependiendo de cunto
detalle muestran. Las representaciones SFC en la figura anterior son de nivel cero, porque no
Controladores Ramn Pgina 26
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

especifican ninguna de las acciones en sus pasos y no definen sus transiciones. Los diagramas
de nivel 1 y 2 muestran las acciones asociadas a los pasos. Los diagramas de nivel 1
representan sus acciones con nombres, comentarios o descripciones de la accin de control
ejecutada en cada paso. Puede tambin describir qu ocurre en cada transicin o puede
mostrar las condiciones de transicin en texto estructurado, junto con las variables que la
disparan.

Diagrama SFC de nivel 1

Un diagrama de nivel 2 muestra las instrucciones (diagrama de escalera, bloque de funcin,


texto estructura o lista de instrucciones) que implementa la accin de control.
Adicionalmente puede especificar la descripcin de la accin con nombres como los usados
en nivel 1; sin embargo, este nombre es mostrado entre parntesis para evitar confusin con
las instrucciones de programacin.

Diagrama SFC de nivel 2

Cada paso y transicin en un SFC tiene una estatus encendido o condicin cuando est activo
o apagado cuando est inactivo. Un punto indica el estatus del paso o transicin.

Controladores Ramn Pgina 27


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

El punto en el paso 11, indica


que est activo

Las figuras a continuacin muestran un paso siendo activado por una transicin y un paso
siendo desactivado por una transicin. Como se muestra en el diagrama de tiempo, Y9 y X10
son falsos durante el tiempo a1 porque la transicin Y9 no ha ocurrido y por lo tanto, no ha
pasado el turno al paso 10. Una vez que la condicin o variable dispara la transicin Y9, el
paso 10 se activa y la condicin X10 se hace verdadera. En el segundo caso, el diagrama de
tiempo muestra que el paso 12 est activo durante el tiempo b1 y se desactiva al momento
que la transicin Y12 se enciende en el tiempo b2.

Un paso inactivo, siendo


activado por una transicin y
uno activo, siendo
desactivado

Ejemplo 4

La figura a continuacin muestra un SFC en tres etapas diferentes: (a) paso 3 activo, (b) paso
4 activo luego de haber sido activada la transicin IN_1 y (c) paso 4 apagado por activacin
de la transicin IN_2. Usando el diagrama de tiempo, ilustre grficamente el estatus de los
pasos y las transiciones en cada una de las tres fases.

Controladores Ramn Pgina 28


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Solucin
La siguiente figura muestra los diagramas de tiempo para cada una de las tres etapas.
Cuando el paso 3 est activo, X3 est encendido y su accin es ejecutada. Una vez que la
transicin IN_1 ocurre, el turno pasa al paso 4 para ejecucin de sus acciones; de esta
manera se enciende X4. El paso 4 se mantiene activo hasta que la transicin IN_2 se hace
verdad, momento en el que turno se transfiere al siguiente paso. Ntese que la transicin no
necesita permanecer activa una vez que la accin es transferida de un paso al otro.

Transiciones

Como se ha descrito anteriormente, la condicin que activa una transicin puede ser un
pulso momentneo. La figura a continuacin muestra una transicin de dos pulsos, Y9 y Y10,
que activan y desactivan el paso 10. Esas transiciones pueden ser programadas de tal forma
que el flanco de subida o el de bajada, activa la transicin al siguiente paso.

Controladores Ramn Pgina 29


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Ejemplo de pulsos de
transicin momentneos

En la siguiente figura, la transicin 9 es programada para ser activada por un flanco de subida
utilizando una condicin AND. En esta configuracin, el encendido de la seal A iniciar la
transicin al paso 10 siempre que la seal B est encendida. La transicin 10 est tambin
programada usando una condicin AND; sin embargo, en este caso es una transicin de
bajada. Esto significa que, mientras est activa la seal D, el desactivado de la seal C
apagar el paso 10.

Pulsos de transicin de pulso


ascendente y descendente

Es posible incluir un temporizador para determinar por cunto tiempo estar activo el paso.
Por ejemplo, en el paso 11 en la figura a continuacin, es ejecutado por un perodo de 100
segundos, ya que la transicin Y11 incluye un temporizador. La instruccin de temporizado
puede ser tambin combinada con operaciones lgicas (AND, OR, NOT) y con instrucciones
IF...THEN.

Controladores Ramn Pgina 30


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Transicin temporizada

Programacin en Diagrama de Funciones Secuenciales

La seal que activa una transicin puede ser el resultado de una variable externa o la salida
de un paso. Por ejemplo, en la siguiente figura, las instrucciones de accin del paso 10 (en
este caso un secuencia de control en diagrama de escalera, texto estructurado y bloques
funcionales) controlan el estado de la transicin Time_Up, la cual transfiere la ejecucin al
siguiente paso. Cuando se activa el paso 10, la accin Mix_Start inicia y el procesador
monitorea las E/S en la accin y ejecuta el programa como se describe en las instrucciones de
accin. Si Mix_Rdy es VERDAD (en la porcin de diagrama de escalera de la accin), el motor
es encendido por 30 segundos como lo especifica el temporizador. Una vez transcurridos los
30 segundos, la salida booleana del temporizador (Time_Up) se har VERDAD, iniciando la
transicin al siguiente paso.

Salida de una accin, usada


como seal de disparo de una
transicin

Las transiciones tambin pueden estar lgicamente combinadas con otras instrucciones, la
mayor parte de las veces, con texto estructurado. Por ejemplo, en la figura 10-39, la
transicin del paso 12 al 13 ocurrir si el comando Set_OK dentro de la accin del paso 12
(etiquetada como Action_1) es VERDAD y la seal Level_Switch es VERDAD. Set_OK es una
entrada interna, mientras que Level_Switch es un seal directa de entrada conectada a un
mdulo de entrada del controlador.

Controladores Ramn Pgina 31


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Combinacin de una salida


interna y una variable externa
como transicin

Programando Transiciones Normalmente Cerradas

Como se ha dicho anteriormente, un dispositivo de entrada normalmente cerrado, debe ser


programado como normalmente abierto en el controlador, para que opere como dispositivo
normalmente cerrado. La razn es seguridad. Cuando se programa como normalmente
abierto, si el dispositivo perdiera continuidad, apagara su conexin al mdulo de entrada;
esto proporciona una operacin a prueba de fallas. El mismo criterio aplica para un
dispositivo normalmente cerrado conectado a un controlador que sea programado utilizando
el estndar IEC 1131-3: todos los dispositivos normalmente cerrados deben ser programados
como normalmente abiertos, cualquiera que sea el lenguaje que se use.
Los dispositivos normalmente cerrados deben ser programados con cuidado, cuando son
usados como variables de disparo en una transicin SFC. Si el dispositivo normalmente
cerrado no es accionado, la transicin de un paso al otro ser en un ciclo de ejecucin. La
siguiente figura ilustra una parte de un diagrama sencillo, en el cual el interruptor de fin de
carrera normalmente cerrado LS_1 es usado para activar la transicin del paso 10 al paso 11.
Ntese que el diagrama de tiempo, que representa la actividad booleana, indica que LS_1 es
ENCENDIDO cuando no est activado. De esta manera, la transicin del paso 10 al 11 ocurre
tan pronto como se activa el paso 10. Para activar la transicin del paso 10 al 11 luego de la
activacin de LS_1 (LS_1 normalmente cerrado abrindose), la transicin debe ser
programada como NOT LS_1. De esta manera, si LS_1 se abre, la instruccin NOT LS_1
disparar la transicin.

Controladores Ramn Pgina 32


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

La transicin del paso 10 al 11


ocurre en un ciclo de
ejecucin

Ntese en la siguiente figura, que el interruptor se abre momentneamente para activar la


transicin al paso 11. Es buena idea estudiar los diagramas de tiempo cuando se programe
un dispositivo normalmente cerrado, para observar el comportamiento deseado de la
transicin.

a menos que la transicin


10 sea programada como
NOT LS_1

La figura a continuacin ilustra un circuito arranque-parada sencillo y su diagrama de tiempo.


Cuando el pulsador de arranque (momentneo) normalmente abierto es presionado, y el
pulsador de parada normalmente cerrado no es presionado, el motor se encender y su
contacto auxiliar M1-1 'engancha' el arranque, de tal manera que el motor se mantendr
encendido hasta que sea presionado el pulsador de parada. Cuando se presiona el pulsador
de parada, el circuito pierde continuidad y el motor se apaga. Lgicamente hablando, como
se muestra en el diagrama de tiempo, el motor se encender si ambos el pulsador de
arranque y el de parada, estn encendidos; en otras palabras, la expresin lgica que
enciende M1 es M1= Start AND Stop.

Circuito cableado de
arranque-parada de un motor
y su diagrama de tiempo

La expresin lgica indica que M1 se encender si el pulsador de arranque es presionado y el


de parada no. Sin embargo, la expresin lgica no proporciona la funcionalidad de enganche,
lo cual significa que si el pulsador es presionado y luego liberado, el motor M1 no se
Controladores Ramn Pgina 33
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

mantendr encendido. Posteriormente se ver, que al utilizar SFC, esta funcin de enganche
no es necesaria.
La siguiente figura ilustra la implementacin SFC del circuito mostrado en la figura anterior,
junto con su diagrama de tiempo. En el SFC, la expresin lgica que dispara la transicin 1
(Start AND Stop) es la misma que enciende el motor M1 en el diagrama de escalera, sin el
enganche. El programa no requiere el enganche, porque no requiere memorizar que el
pulsador de arranque fue presionado para mantener encendido el motor. Una vez que el
pulsador de arranque es presionado, la accin es transferida del paso 1 al 2 donde se
enciende el motor y se mantiene en dicho estado. El programa apagar el motor, cuando se
active la transicin Y2, significando que la condicin NOT Stop ha ocurrido. Tan pronto como
es presionado el botn de parada, se satisface la condicin de transicin Y2 y el control es
transferido del paso X2 (motor encendido) al paso X1, apagando la accin en X2 y, en
consecuencia, apagando el motor M1.

Implementacin SFC del


circuito cableado de la figura
anterior

Ejemplo 5

La siguiente figura ilustra un diagrama de bloque de los dispositivos de entrada conectados al


controlador, usado para controlar el estado de dos motores, Motor_1 y Motor_2. Asuma que
el par de botones arranque/parada usados para el Motor_1, tienen un arranque
normalmente abierto y una parada normalmente cerrada, mientras que los usados para el
Motor_2 son ambos normalmente abiertos. Usando SFC, implemente dos programas
independientes que controlen las secuencias de arranque y parada de los dos motores.

Controladores Ramn Pgina 34


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Solucin

La siguiente figura muestra los diagramas SFC y de tiempo, para las estaciones de pulsadores.
Ntese que las lgicas para las transiciones que encendern los motores son diferentes. Para
el Motor_1, la lgica toma en consideracin que el botn de parada es normalmente abierto.
Para el Motor_2, la lgica muestra que el botn de parada es normalmente abierto.

Controladores Ramn Pgina 35


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Divergencias y Convergencias

Hasta los momentos se han explicado diagramas de funciones secuenciales que tienen un
nico enlace entre cada dos pasos y sus transiciones. Sin embargo, los SFC pueden tener
mltiples enlaces entre los elementos. Estos mltiples enlaces pueden ser de dos tipos:
divergencias y convergencias.

Un SFC con un enlace entre


pasos y transiciones y con
mltiples enlaces entre pasos
y transiciones

Una divergencia se presenta cuando un elemento SFC tiene varios enlaces que salen de l,
mientras que una convergencia en cuando un elemento tiene varios enlaces que llegan a l.
Ambas divergencias y convergencias pueden tener configuraciones OR o AND, relacionados
con los operadores booleanos de igual nombre.

Convergencias y Divergencias tipo OR

Una divergencia tipo OR permite que un paso transfiera el turno de ejecucin a uno o varios
pasos a travs de sus transiciones; de esta manera, diverge un paso en varias transiciones.
Aunque una divergencia OR conecta un paso con varias transiciones, el paso slo puede
activar una de las transiciones a la vez. En otras palabras, las transiciones son mutuamente
exclusivas. Dependiendo de la implementacin IEE 1131-3, una divergencia OR puede
tambin tener seales de disparo mutuamente exclusivas, o lgica programada que permite

Controladores Ramn Pgina 36


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

seleccionar entre la divergencia ms a la izquierda o la de ms a la derecha, en el caso de que


ocurran varias seales de disparo simultneamente, permitiendo establecer prioridad.

Divergencia OR

La figura a continuacin muestra un SFC con una divergencia OR luego del paso 1. Una vez
que es activado el paso uno, los pasos 10 o 20 pueden ser activados a travs de las
transiciones 1 o 2. Esas dos condiciones tienen condiciones de disparo mutuamente
exclusivas, de tal manera que la transferencia slo puede ir a uno de los pasos.

Ejemplo de una divergencia y


una convergencia OR

Si se activa la transicin 1, se hace activo el paso 10; si se activa el paso 2, se hace activo el
paso 20.
Un convergencia OR, tambin llamada convergencia sencilla, es usada para conectar varias
transiciones al mismo paso. Una convergencia OR es lo opuesto a una divergencia OR;
converge varias transiciones en un nico paso. En la figura anterior, la convergencia OR
presente indica que el paso 12 ser activado a travs de la transicin 11 o la 30

Controladores Ramn Pgina 37


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Convergencia OR

Circuito de alarma con una


divergencia y una
convergencia OR

Convergencias y Divergencias tipo AND

Una divergencia tipo AND, tambin llamada doble divergencia, proporciona un enlace de una
transicin a varios pasos en forma paralela.

Controladores Ramn Pgina 38


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Divergencia AND

A diferencia de la divergencia OR, una divergencia AND puede pasar el turno de ejecucin a
varias ramas a la vez. En la figura a continuacin, si la transicin 1 es activada, el programa
transfiere el control a los pasos 40 y 50 al mismo tiempo. Las lneas paralelas que
representan la divergencia AND indican que transfiere el control a todos los pasos por
debajo, en paralelo.

Ejemplo de una divergencia y


una convergencia AND

Una convergencia AND, referida tambin como doble convergencia, enlaza varios pasos a
una transicin sencilla. Es comnmente usada para agrupar ramas SFC que fueron separadas
por una divergencia AND. En la figura anterior, una vez que son ejecutados los pasos 41 y 51,
el programa espera por la transicin 2 para transferir el control al paso 10. SI ms de dos
enlaces convergen en la transicin, todos los pasos que preceden la convergencia deben
estar activos antes de que ocurra la transicin. Por ejemplo, si slo se ha ejecutado el paso
51, aunque se active la transicin 2, no ocurre la transferencia de control al paso 10.

Controladores Ramn Pgina 39


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Convergencia AND

Subprogramas

Como se ilustra en la figura a continuacin, un proceso puede tener varios diagramas


principales, ejecutando varias tareas principales.

Proceso con varias programas


SFC

Dependiendo del sistema IEC 1131-3, es mltiples programas principales puede utilizar uno o
ms subprogramas para implementar secuencias de control especializadas.

Controladores Ramn Pgina 40


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Ejecucin de un subprograma
dentro del programa
principal. El programa
principal es suspendido hasta
tanto no finalice el
subprograma

Existes aplicaciones informticas compatibles con IEC 1131 que proporciona al usuario la
posibilidad de tener un programa principal con uno o ms subprogramas, organizados de
acuerdo con una relacin 'padre-hijo.

Los subprogramas son


organizados en una relacin
padre-hijo

Los subprograma son similares en operacin a los macro pasos (macrosteps), excepto por el
hecho de los macro pasos son considerados un tipo de subrutina SFC. Son tambin parecidos
a los bloques de funcin en el sentido de que pueden ser reutilizados cuantas veces se
requiera, para implementar una funcin de control. Los subprogramas pueden ser escritos en
cualquiera de los lenguajes IEC 1131-3, y pueden ser invocados desde las acciones de un SFC
usando tambin cualquiera de los cuatro lenguajes. En contraste, un macro paso slo puede
ser invocado desde la accin que lo contiene. Por otra parte, los bloques de funcin a la
medida, pueden ser invocados desde cualquier accin, una vez que hayan sido incluidos en la
librera de programas SFC. Sin embargo, los bloques de funcin no pueden no pueden
suministrar al programa principal la misma cantidad de informacin que si puede un
subprograma.
Los subprogramas difieren de los bloques de funcin a la medida y de los macro pasos en el
hecho de que pueden suministrar y recibir variables y valores, de la misma manera en que lo

Controladores Ramn Pgina 41


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

hace un programa escrito para un computador convencional. Por ejemplo, la siguiente


sentencia en texto estructurado:
Actual_Weight:= SP_Weighing (Max_Wt,Tare_Wt)
indica que a la variable Actual_Weight se le asignar el valor resultante de la ejecucin del
subprograma SP_Weighing, el cual a su vez recibe como parmetros (del programa principal)
a las variables Max_Wt y Tare_Wt. Cuando un programa invoca un subprograma, el pide un
valor de retorno como resultado de la ejecucin del subprograma. Dicho valor puede ser
booleano, real o entero. En el ejemplo anterior, el programa obtiene o calcula las variables
Max_Wt y Tare_Wt, las cuales son enviadas al subprograma. El subprograma SP_Weighing
usa dichos datos para calcular un valor que ser asignado a la variables Actual_Weight. Esta
variable puede luego ser usada dentro del programa principal. La naturaleza propia de los
subprogramas (miniprogramas dentro de un programa de control de mayor tamao) afecta
de manera importante el ciclo de ejecucin.
La sintaxis para invocar un subprograma puede que difiere ligeramente de un sistema a otro.
Sin embargo, todos los subprogramas ejecutan una pequea rutina y luego retornan el valor
requerido al programa principal. En la siguiente figura se ilustra cmo una programa SFC
invoca un subprograma desde una instruccin en una de sus acciones. En este ejemplo, la
accin del paso 11 tiene varias instrucciones en texto estructurado, con la instruccin
Init_Value:= SP_Check_Start iniciando un subprograma llamado SP_Check_Start. Este
subprograma calcula el valor de la variable Init_Value y enva su resultado de regreso al
programa principal, de tal manera que el programa principal pueda usar el valor de la
variable en el control del proceso.

Un subprograma invocado
por una instruccin dentro de
una accin

La figura a continuacin ilustra varios ejemplos de subprogramas, utilizando otros lenguajes.


El subprograma SUBPROG_1 ser ejecutado una vez que es encontrado directamente en el
programa (IL y ST), o una vez que se hayan satisfecho las condiciones (LD y FBD). Como se
dijo anteriormente, los subprogramas pueden ser escritos en cualquier lenguaje, sin importar
en cual fueron invocados. Los fabricantes de controladores proporcionan las especificaciones
para la transferencia de parmetros y valores de retorno entre subprogramas.

Controladores Ramn Pgina 42


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Invocaciones de un
subprograma en lista de
instrucciones, texto
estructurado, diagrama de
escalera y bloques
funcionales

Una transicin SFC puede tambin llamar a un subprograma, como se muestra en la siguiente
figura. En el ejemplo, las transiciones 1 y 2 llaman a los subprogramas ErrEval y EvalCond, los
cuales son mutuamente exclusivos. La invocacin de los subprogramas sigue la siguiente
sintaxis:
Subprogram_Nombre ();
La sintaxis especifica el nombre del subprograma y la condicin de retorno, que es una
condicin booleana que dispara la transicin. El valor retornado por el subprograma puede
ser igual a cero (condicin falsa) o diferente de cero (condicin verdadera).

Invocacin de un
subprograma desde una
transicin

Una accin puede tambin llamar a un subprograma directamente, usando una sintaxis
similar a la de la transicin. Por ejemplo, la siguiente instruccin:
Action:
Result_Variable:= Sub_Program();
End_Action;

Controladores Ramn Pgina 43


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

puede ser usada para invocar a un subprograma que asignar su valor resultante a la variable
Result_Variable, la cual puede ser usada para activar una transicin. La figura a continuacin
muestra un subprograma de ejemplo llamado desde una accin SFC. En este ejemplo, cuando
se activa la accin del paso 1, se inicia un subprograma que determina en valor de la variable
Init. El valor de dicha variable (expresado en booleano), es luego retornada al programa
principal, donde es luego usada para activar el inicio de un proceso macro paso o emitir una
alarma. Las variables etiquetadas Error y OK deben ser declaradas como booleanas durante
la programacin, para que ocurra apropiadamente la transicin. La (P) en el nombre de la
accin del paso 1, indica que dicha accin es de tipo pulso (momentnea).

Invocacin de un
subprograma desde una
accin SFC

Tipos de Acciones

Una accin es una diagrama de funciones secuenciales es ejecutada, cuando su paso


correspondiente es activado. Cuando se activa el paso, las instrucciones de control
contenidas en la accin son ejecutadas continuamente, hasta que la activacin es transferida
al siguiente paso en el diagrama. Las acciones pueden tomar diversas formas, dependiendo
de la operacin y resultados deseados. Los tipos de acciones son:

Booleanas

Tipo pulso

Normales

SFC

Controladores Ramn Pgina 44


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Acciones Booleanas

Una accin booleana asigna un valor booleano (verdadero/falso) a una variable durante la
ejecucin de la accin. La variable booleana puede estar asociada a un estado interno a una
salida fsica. La instruccin simplemente refleja el estado (encendido/apagado) de la variable
correspondiente, con respecto al estado de la accin. En la figura a continuacin, una vez que
se activa el paso 20 (X20 est encendido), la variable Bool_Var_1 se enciende mientras el
paso est activo. La variable /Bool_Var_2 (/ significa negado) es el valor negado del paso X20
(variable Bool_Var_2). Las variables Bool_Var_3 y Bool_Var_4 seguidas de (S) y (R)
respectivamente, indican instrucciones set y reset de la variable. El parmetro (S) se activa
cuando lo hace el paso, colocando la variable en 1 (verdad). La variable permanece en 1,
hasta que se ejecuta una instruccin reset, an cuando el paso en el que se encuentra se
desactive. El parmetro (R), coloca la variables en 0 (falso).

Ejemplo de una accin


booleana

Ejemplo 6

Usando acciones booleanas SFC, implemente un diagrama que encienda y apague dos
lmparas piloto, de acuerdo al diagrama de tiempo que se muestra en la siguiente figura.

De acuerdo al diagrama, PLight_1 est encendida durante un segundo, mientras que PLight_2
est apagada, luego PLight_1 se apaga por un segundo, mientras que PLight_2 est
encendida. Asuma que el pulsador de arranque (Start) es normalmente abierto se usa para
iniciar la secuencia, y que el pulsador de parada (Reset), tambin normalmente abierto, se
Controladores Ramn Pgina 45
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

usa para reiniciar el sistema, apagando ambas luces piloto. Incluya una lmpara adicional que
se encienda cuando se de inicio a la operacin, y que se apague cuando el sistema haya sido
reinicializado.

Solucin

La figura a continuacin ilustra el diagrama de tiempo deseado de las dos entradas (Start y
reset), y de las tres lmparas piloto (PLight_1, PLight_2 y Light_EN).

La siguiente figura muestra la implementacin SFC del diagrama de tiempo, donde en el paso
inicial las lmparas PLight_1 y PLight_2, estn apagadas. Una vez que el botn de arranque es
presionado, pasa el turno al paso 2, el cual no contiene acciones, y contina a una
divergencia OR.

Controladores Ramn Pgina 46


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

En la divergencia OR, el control va al paso 10 (ON1_OFF2) y el botn Reset no es presionado,


encendiendo PLight_1 y manteniendo PLight_2 apagada, enciendo adicionalmente la
lmpara Light_EN, usando su parmetro (S). La transicin temporizada Y10 es disparada un
segundo despus de que el paso 10 es activado, pasando el control al paso X11, el cual
revierte el estado de las lmparas piloto usando acciones booleanas. Al igual que en la
transicin Y10, la transicin Y11 permite un segundo de activacin antes de que el turno sea
transferido al paso 2, donde la secuencia es repetida.
Cuando es presionado el pulsador Reset, el programa activa el paso 3, el establece las
condiciones de las lmparas a las existentes en el paso 1, donde el programa permanecer
esperando hasta que sea presionado el botn de arranque (Start). Ntese que este programa
SFC requiere que el operador presione el pulsador Reset durante al menos 2 segundos,
cuando desee apagar las luces. La razn para esto, es que el programa podra estar ubicado
en la rama opuesta de la divergencia OR (transicin 4), la cual demora al menos dos
segundos antes de que la seal de Reset pueda ser monitoreada.
Si se desea que la accin del pulsador de Reset sea inmediata, la solucin es programar una
accin independiente; una accin de este tipo puede ser programada para detectar la
funcin de reinicializacin y enviar el programa de regreso al paso 1 del diagrama principal.
La figura a continuacin muestra la configuracin de la accin independiente, junto con una
nueva alternativa de acciones booleanas para el programa.

Controladores Ramn Pgina 47


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Aunque la accin independiente no est enlazada con el programa, dirigir una transicin si
sus condiciones son satisfechas. Una accin independiente acta bsicamente como una
interrupcin, especificando a que paso se transfiere el turno del programa de control. Ntese
que la accin independiente est constantemente activa, lista para forzar al programa a ir a
un paso en particular. Si el pulsador Reset es presionado, la accin independiente forzar al
programa a regresar al paso 1, independientemente del lugar dentro del diagrama en el que
se encontrara la ejecucin del programa de control. En este caso, el pulsador Reset puede ser
presionado momentneamente y an as, ser atendido.

Acciones de Pulso

Las acciones de pulso permiten la ejecucin de una o ms instrucciones en la accin de un


paso, slo una vez luego de la activacin del paso. Esto es, una vez que el paso es activado, la
accin tipo pulso ocurrir slo una vez antes de que el paso sea desactivado. Dependiendo
de la implementacin IEC 131, las instrucciones en la accin, pueden estar en uno o ms de
los lenguajes disponibles. La figura a continuacin muestra la sintaxis tpica de una accin
tipo pulso.

Controladores Ramn Pgina 48


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Sintaxis de una accin tipo


pulso

La notacin (P) indica que es una accin tipo pulso. Una accin tipo pulso puede ser
representada en un diagrama de tiempo como se muestra a continuacin.

Ejecucin de una accin tipo


pulso

La siguiente figura muestra un SFC tpico con una accin de pulso implementando una
instruccin de conteo ascendente, usando instrucciones en texto estructurado. Las acciones
de pulso son especialmente apropiadas para aplicaciones que requieren acciones que deben
ocurrir slo una vez, por ejemplo, la inicializacin de variables.

Controladores Ramn Pgina 49


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Instruccin de conteo
ascendente, implementada
como accin tipo pulso

Acciones Normales

Las acciones normales incorporan instrucciones IEC 1131-3 que son ejecutadas
continuamente durante la actividad del paso. En otras palabras, las instrucciones dentro de
una accin normal sern monitoreadas y actualizadas indefinidamente, hasta que el paso sea
desactivado.

Ejecucin de una accin


normal

La figura a continuacin muestra la sintaxis bsica de una instruccin normal, donde la (N)
indica normal. Las acciones normales pueden omitir el parmetro (N) en su definicin.

Controladores Ramn Pgina 50


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Sintaxis de una accin normal

La siguiente figura muestra un ejemplo de un programa de conteo que usa acciones


normales en el paso 2. Ntese que el paso 1 usa una accin de pulso, para inicializar el
contenido de la variable R_Count a cero. Como lo ilustra el siguiente ejemplo, la accin
normal en el paso 2 (programada usando texto estructurado), ejecuta la accin de conteo en
el flanco de subida de la seal Cmd (comando) y almacena el conteo total en la variable
R_Count. Este procedimiento de conteo es ejecutado mientras el paso 2 contine activo.

Ejemplo de un programa de
conteo usando una accin
normal

Ejemplo 7

Basado en la figura anterior, explique la operacin del paso 2. Adicionalmente, dibuje el


diagrama de tiempo de la seal que activa la variable R_Count.

Controladores Ramn Pgina 51


Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Solucin

La figura a continuacin muestra el diagrama de tiempo para el paso 2.

La variable R_Count incrementa su valor cada vez que la seal Cmd_Cnt va de 0 a 1. La


condicin IF en el paso 2 se asegura de que la seal se ha apagado luego de la transicin de 0
a 1. La instruccin Last_Cmd:= Cmd_Cnt atrapa el ltimo valor de Cmd_Cnt, de tal manera
que el conteo no sea ejecutado nuevamente sin que Cmd_Cnt haya regresado a 0 primero.
Cuando la accin es desactivada por la variable de transicin Stop_Counting, el estado de
Cmd_Cnt y Last_Cmd es puesto a cero. Ntese que el valor R_Count es reinicializado a cero
en el paso 1. Sin embargo, el valor de R_Count ser almacenado como un valor entero
normal en el programa, hasta que sea cambiado, por ejemplo, en el paso 1.

Acciones SFC

Una accin SFC es una secuencia de programa SFC tipo hijo que puede ser activada (iniciada)
o desactivada (terminada) cuando un paso est activo. Recuerde que un programa hijo
pertenece al programa padre (o principal). Las acciones SFC pueden tener parmetros
normales, set o reset que influencian la operacin de la accin SFC:
Normal: una accin SFC con un parmetro normal (N) se inicia cuando se activa el paso y es
terminada cuando el paso es desactivado. El uso del parmetro (N) es opcional.
Set: una accin SFC con el parmetro (S) es iniciada cuando se activa el paso, pero
permanece activada an despus de haber sido desactivado el paso.
Controladores Ramn Pgina 52
Programables Medina de 53
Estndar de Lenguajes de Programacin IEC 1131

Reset: una accin SFC con el parmetro (R) es destruida cuando se activa el paso. Sirve para
apagar una accin SFC tipo Set.
La figura a continuacin muestra un proceso por lotes usando acciones SFC. El programa
principal tiene dos programas hijos, Batch_Mix y Batch_Pump, los cuales son activados por el
programa principal. El programa principal usa operandos normales, ser y reset.

Proceso por lotes,


implementado usando
acciones SFC

Una vez que es disparada Start, el SFC activa ambos programas hijos. El programa Batch_Mix
tiene un parmetro (N), mientras que Batch_Pump tiene parmetros (S) y (R). Batch_Pump
se activa tan pronto como lo hace el paso 20, y permanece as hasta que la seal Level_Full
es encendida, activando el paso 30, terminando el programa Batch_Pump.

Sistemas IEC 1131-3

En adicin a la implementacin del IEC 1131-3 en controladores, muchos fabricantes


proporcionan el estndar en variadas plataformas y sistemas operativos, tales como
Windows y Unix. Estos sistemas informticos emulan la operacin de un controlador
programable y pueden soportar el uso de mdulos de E/S de uno o ms fabricantes.

Un controlador SOFT con


mdulos de E/S

Controladores Ramn Pgina 53


Programables Medina de 53

Das könnte Ihnen auch gefallen