Академический Документы
Профессиональный Документы
Культура Документы
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.
Informacin general
Lenguajes de programacin
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.
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:
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.
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
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.
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
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
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.
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
Representacin en diagrama
de escalera
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
Lista de Instrucciones
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
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.
Ejemplo de un programa al
estilo BASIC
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.
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.
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.
Comparacin entre un
diagrama SFC y un diagrama
de flujo
Comparacin entre un
diagrama de tiempo y sus
programas Grafcet y SFC
correspondientes
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.
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.
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
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.
Ejemplo 3
Solucin
Formato 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.
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.
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.
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.
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.
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.
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.
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.
Transicin temporizada
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.
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.
Circuito cableado de
arranque-parada de un motor
y su diagrama de tiempo
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.
Ejemplo 5
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.
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.
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.
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
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.
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
Convergencia OR
Una divergencia tipo AND, tambin llamada doble divergencia, proporciona un enlace de una
transicin a varios pasos en forma paralela.
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.
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.
Convergencia AND
Subprogramas
Dependiendo del sistema IEC 1131-3, es mltiples programas principales puede utilizar uno o
ms subprogramas para implementar secuencias de control especializadas.
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 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
Un subprograma invocado
por una instruccin dentro de
una accin
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;
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
Booleanas
Tipo pulso
Normales
SFC
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 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.
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
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.
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.
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.
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.
Ejemplo de un programa de
conteo usando una accin
normal
Ejemplo 7
Solucin
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.
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.