Está en la página 1de 89

Lenguajes de Programacin

Lenguajes de Programacin

Controladores Ramn Pgina 2
Programables Medina de 89

Introduccin a los Lenguajes de Programacin
Los lenguajes de programacin utilizados en los controladores programables han
evolucionado a la par que es estos se han desarrollado y expandido. Los lenguajes de
programacin permiten que el usuario introduzca programas de control dentro de un
controlador programable, utilizando una sintaxis establecida. Los lenguajes de hoy tienen
instrucciones nuevas y verstiles, que llevan a cabo potentes funciones que les permiten
manejar grandes cantidades de informacin fcilmente.
Tipos de Lenguajes de Programacin
Los lenguajes de programacin para controladores ms empleados hoy en da son:
Escalera
Grafcet
Booleano
Los lenguajes de escalera y booleano implementan operaciones esencialmente de la misma
manera, pero difieren en la forma como las instrucciones son representadas e ingresadas en
el controlador. El lenguaje Grafcet implementa instrucciones de control de una manera
diferente, basado en pasos y acciones en un programa orientado a grficos
Lenguaje de Escalera
Los controladores programables fueron desarrollados para ser fcilmente programados
utilizando expresiones y smbolos de los diagramas de rels, para representar la lgica de
programacin necesaria para el control de mquinas y procesos. El lenguaje de programacin
resultante, que usa los smbolos bsicos de la lgica de rels se llama lenguaje de escalera.
Lenguajes de Programacin

Controladores Ramn Pgina 3
Programables Medina de 89



Circuito en lgica cableada y
su correspondiente
implementacin en diagrama
de escalera
La evolucin del lenguaje de escalera original ha ido aadiendo instrucciones cada vez ms
poderosas. Estas nuevas funciones han sido agregadas a las operaciones bsicas de rel,
temporizado y conteo. El trmino funcin es utilizado para describir instrucciones, que como
su nombre implica, llevan a cabo funciones de transferencia de datos dentro de los
controladores programables. Estas instrucciones siguen basadas en los principios de la lgica
bsica de rels, aunque permiten la implementacin de operaciones complejas. Las adiciones
a la lgica bsica de rels incluyen bloques de funcin que usan un conjunto de instrucciones
para operar sobre un bloque de informacin. El uso de los bloques de funcin incrementa la
potencia del lenguaje de escalera bsico, conformando lo que se conoce como lenguaje de
escalera mejorado.


Formato de bloques de
funcin mejorados
El formato de representacin de las funciones mejoradas dependen del fabricante del
controlador programable; sin embargo, todas las funciones bsicas y mejoradas similares,
operan de la misma manera.
Como se indic anteriormente, los lenguajes de escalera disponibles pueden ser divididos en:
Lenguajes de Programacin

Controladores Ramn Pgina 4
Programables Medina de 89

Lenguaje de escalera bsico
Lenguaje de escalera mejorado
Cada uno de los grupos consta de muchas instrucciones que forman el lenguaje. La
clasificacin de qu instrucciones caen dentro de cada categora, difiere de un fabricante a
otro, ya que no existe una clasificacin formalmente estandarizada. Sin embargo, a lo largo
de los aos se ha establecido un estndar de facto. Algunas veces las instrucciones del
lenguaje bsico de escalera son frecuentemente referidas como lenguajes de bajo nivel.


Clasificacin de las
instrucciones
La lnea que define la agrupacin de instrucciones es tpicamente establecida entre
categoras funcionales. Estas categoras incluyen:
Rel
Temporizado
Conteo
Control de programa y flujo
Aritmtica
Manipulacin de datos
Transferencia de datos
Funciones especiales (secuenciadores)
Comunicacin a travs de la red
Aunque las categoras estn claramente definidas, la clasificacin es subjetiva. Sin embargo,
no obstante la clasificacin, el hecho es que mientras ms categoras de instrucciones un
controlador soporta, ms poderosas son las estrategias de control que se pueden
implementar con l.
Lo usual es que controladores pequeos tengan slo instrucciones bsicas con tal vez algunas
instrucciones mejoradas. Los controladores ms potentes, incorporan conjuntos de
instrucciones avanzadas. Sin embargo, la tendencia es hacia que los controladores pequeos
incorporen instrucciones avanzadas.
Lenguajes de Programacin

Controladores Ramn Pgina 5
Programables Medina de 89

Grafcet
Grafcet (Graphe Fonctionnel de Commande tape Transition) es un lenguaje grfico
simblico que fue originado en Francia, que representa el programa de control como pasos o
etapas de la mquina o proceso. Grafcet es el fundamento del estndar IEC 1131 para
Diagramas de Funciones Secuenciales (SFC) que permite que varios lenguajes de
programacin de controladores puedan ser utilizados en un nico programa de control.


Lgica cableada y su
representacin
correspondiente en Grafcet
Los diagramas Grafcet proporcionan una representacin parecida a la de un diagrama de
flujo, de los eventos que se dan en cada etapa de un programa de control. Estos diagramas
usan tres componentes principales - pasos, transiciones y acciones - para representar
eventos. EL estndar IEC 1131 utiliza tambin esos mismos componentes; sin embargo, las
instrucciones dentro de las acciones pueden utilizar cualquiera de los lenguajes posible,
incluyendo diagrama de escalera.
Algunos controladores programables pueden ser directamente en lenguaje Grafcet. Lo usual
sin embargo, es que los fabricantes proporcionen herramientas para programacin Grafcet
fuera de lnea, que es convertido en lenguaje de escalera o lenguaje booleano para ser
descargado en el controlador.


Traduccin Grafcet
Lenguajes de Programacin

Controladores Ramn Pgina 6
Programables Medina de 89

Booleano
Algunos fabricantes de controladores programables utilizan lista de instrucciones (a veces
llamado lenguaje booleano) para programar sus equipos. La lista de instrucciones utiliza
sintaxis del lgebra booleana para ingresar y explicar la lgica de control; usan funciones
lgicas AND, OR y NOT para implementar programas de control.


Lgica cableada y su
correspondiente
representacin booleana
El lenguaje booleano es bsicamente una manera de ingresar programas de control en un
controlador, en lugar de propiamente un lenguaje orientado a instrucciones. Cuando se
despliega en un dispositivo de programacin, el lenguaje booleano es muchas veces
visualizado como diagrama de escalera en lugar de los comandos booleanos que definen la
instruccin.
Formato de Lenguaje de Escalera
El diagrama de escalera es un conjunto de instrucciones simblicas que son utilizadas para
crear programas de control. Los smbolos pueden ser configurados para obtener la lgica de
control deseada. El lenguaje de escalera es tambin conocido con el nombre de simbologa
de contactos.
Las funciones principales de un programa en diagrama de escalera estn orientadas a
controlar salida y ejecutar funciones operacionales, basado en la condicin de las entradas.
Los diagramas de escalera utilizan peldaos (rung) para acometer su control.
Lenguajes de Programacin

Controladores Ramn Pgina 7
Programables Medina de 89



Estructura del peldao de un
diagrama en escalera
En general, un peldao consiste de un conjunto de condiciones de entrada (representado por
instrucciones de contactos) y una instruccin de salida al final del peldao (representado por
un smbolo de bobina). Las instrucciones de contacto para un peldao puede ser
referenciados como condiciones de entrada, condiciones de peldao o lgica de control.
Un peldao es VERDAD cuando su lgica tiene continuidad. La continuidad lgica existe
cuando la potencia fluye a travs del peldao de izquierda a derecha. La ejecucin de
eventos lgicos que habilitan la salida, proveen esta continuidad. En un diagrama de
escalera, la lnea de la izquierda simula la lnea L1 de un diagrama de rel, mientras que la de
la derecha simula la lnea L2 de una representacin electromecnica. La continuidad ocurre
cuando el paso entre esas dos lneas contiene elementos de contacto en condicin cerrada,
permitiendo que la potencia fluya de izquierda a derecha. Esos elementos de contacto se
cierran o abren de acuerdo al estado de las entradas referenciadas.


Ilustracin de varios caminos
de continuidad en un
diagrama de escalera
Lenguajes de Programacin

Controladores Ramn Pgina 8
Programables Medina de 89

La continuidad es normalmente representada por los dispositivos de monitoreo del
controlador, por lneas resaltadas.


Monitoreo de un dispositivo
mostrando (a) continuidad en
el peldao y (b) continuidad
en una entrada
Cuando un diagrama de escalera contiene un bloque funcional, las instrucciones de contacto
se usan para representar las condiciones de entrada que habilitan la lgica del bloque. Un
bloque funcional puede tener una o varias entradas de habilitacin que controlan su
operacin. Adicionalmente, puede tener una o varias salidas, que representan el estado de la
funcin que se ejecuta.


Bloques funcionales con (a)
una lnea de habilitacin y
una salida y (b) una lnea de
habilitacin, un comando de
inicio de conteo y dos salidas
Dependiendo de la instruccin, se habilitan otras lneas que manejan el bloque utilizando
funciones de reinicializacin o control.
Para hacer que un bloque est activo en todo momento sin ninguna lgica que lo controle, el
usuario puede omitir toda lgica de contacto y colocar una lnea de continuidad.
Lenguajes de Programacin

Controladores Ramn Pgina 9
Programables Medina de 89



Bloque de funcin que est
siempre habilitado
La matriz de peldaos de escalera determina el nmero mximo de elementos de contacto
que pueden ser utilizados para programar un peldao. El tamao de la matriz es diferente
segn el fabricante y del dispositivo de programacin empleado. Para operaciones de
bloques funcionales, la matriz de escalera puede tener menos elementos de contacto
disponibles, porque la representacin del bloque de funcin toma espacio en la matriz. En
controladores con formatos de escalera mejorados, la matriz puede usar uno o ms espacios
de smbolos de contacto para representar la instruccin en el dispositivo de programacin.


Matriz de condiciones de
entrada en un diagrama de
escalera en formato de
bloque

Matriz de condiciones de
entrada en un diagrama de
escalera en formato de
instrucciones de escalera
mejoradas
La matriz de escalera representa todas las posibles posiciones donde se pueden colocar
smbolos de contacto. Los dispositivos de programacin normalmente despliegan todas esas
posibles posiciones en la pantalla, permitiendo que los usuarios coloquen los contactos
donde deseen. Sin embargo, segn el fabricante, algunas reglas para la colocacin de
contactos pueden aplicar. La mayora de los controladores no permiten contactos que
provoquen un flujo de potencia de derecha a izquierda. Por lo tanto, estrategias de control
Lenguajes de Programacin

Controladores Ramn Pgina 10
Programables Medina de 89

que hagan uso de este recurso, deben ser reescritas de tal manera que slo incluyan lgicas
donde el flujo sea de izquierda a derecha.


Flujo inverso en el contacto D
Ejemplo 1
Se pide resolver la lgica de escalera representada en la siguiente figura, de tal manera que
no exista la condicin de flujo reverso. Dicha condicin no es parte de la lgica requerida
para que la salida sea energizada.

Solucin
La lgica del flujo directo determina a salida Y. La implementacin utilizando conceptos
lgicos es como se muestra:

Lenguajes de Programacin

Controladores Ramn Pgina 11
Programables Medina de 89

Dicha ecuacin puede ser simplificada utilizando lgebra de Boole para obtener la siguiente
ecuacin:

Esta es equivalente al circuito lgico:

Y equivalente al siguiente diagrama de escalera:

Ejemplo 2
Se pide resolver el siguiente caso de tal manera que no exista flujo reverso, considerando
que dicho flujo es necesario para la lgica de control.

Lenguajes de Programacin

Controladores Ramn Pgina 12
Programables Medina de 89


Solucin
La lgica requerida para la salida Y queda reflejada en la siguiente ecuacin lgica:

El trmino FDBC implementa la secuencia correspondiente al flujo inverso que requiere la
salida Y. El diagrama de escalera correspondiente se muestra a continuacin:

Instrucciones de Rels
Las instrucciones de rel son las instrucciones ms bsicas del lenguaje de escalera. Estas
instrucciones representan estados ENCENDIDO/APAGADO de las entras y salidas conectadas.
Las instrucciones de rels usan dos tipos de smbolos: contactos y bobinas. Los contactos
representan las condiciones de entrada que deben ser evaluadas en un peldao especfico,
para determinar el control de la salida. Las bobinas representan las salidas de los peldaos.
Lenguajes de Programacin

Controladores Ramn Pgina 13
Programables Medina de 89



Instrucciones de rel
En un programa, cada contacto y bobina est referenciado con una direccin, la cual
identifica que est siendo evaluado o controlado. La direccin referencia la tabla de entradas
y salidas de la entrada o salida conectada, o del bit de almacenamiento interno.
El formato de los contactos depende de la lgica de control deseada. Los contactos pueden
ser colocados en serie, paralelo o serie-paralelo, segn lo requiera la estrategia de control de
una salida en particular. Cuando la continuidad lgica existe, la condicin del peldao es
VERDADERA; esto significa, que el peldao controlar la salida especificada. Si la condicin
del peldao es FALSA, no existe continuidad.
Las instrucciones de rels proporcionan la misma funcionalidad que la lgica de rel
cableada, pero con mayor flexibilidad. Estas instrucciones proporcionan la capacidad de
examinar el estado ENCENDIDO/APAGADO de bits especficos en memoria y controlar el
estado de salidas internas y externas.
Examinar ENCENDIDO / Normalmente Abierto
Una instruccin Examinar ENCENDIDO (examine-ON) referidas como contacto normalmente
abierto (NO), verifica la condicin de ENCENDIDO de una direccin referenciada. Esta
direccin puede referenciar un bit de la tabla de entrada, correspondiendo a un dispositivo
de entrada, un bit de salida en la tabla de estados internos, o un bit en la tabla de salida,
correspondiendo a un dispositivo de salida.
Durante la ejecucin de una instruccin Examinar ENCENDIDO en el programa de control, el
procesador determina si la direccin referenciada est en condicin ENCENDIDO. Si la
Lenguajes de Programacin

Controladores Ramn Pgina 14
Programables Medina de 89

direccin contiene un cero lgico (APAGADO), el procesador no cambia el estado del
contacto normalmente abierto y por ende, no proporciona continuidad al peldao. Si la
direccin referenciada contiene un uno lgico (ENCENDIDO), el procesador cierra la
condicin normalmente abierto, proporcionando flujo de potencia a travs del peldao.


Instruccin examinar
ENCENDIDO con lgica 0 y
con lgica 1
Examinar APAGADO / Normalmente Cerrado
Una instruccin Examinar APAGADO (Examine OFF), llamada contacto normalmente cerrado
(NC), verifica una condicin de APAGADO en la direccin referida. Al igual que en el caso de
la instruccin Examinar ENCENDIDO, la direccin referenciada puede estar en la tabla de
entradas, salidas o estados internos.
Durante la ejecucin de una instruccin Examinar APAGADO, el procesador verifica que la
direccin referenciada este APAGADA. Si la direccin contiene un cero lgico (APAGADO), la
instruccin continuar permitiendo el flujo de potencia (continuidad) a travs de sus
contactos normalmente cerrados. Si la direccin contiene un uno lgico (ENCENDIDO), la
instruccin abrir los contactos normalmente cerrados, rompiendo la continuidad en el
peldao. Una instruccin Examinar APAGADO puede ser asociada con una funcin lgica
NOT.

Lenguajes de Programacin

Controladores Ramn Pgina 15
Programables Medina de 89



Instruccin examinar
APAGADO con lgica 0 y con
lgica 1
Bobina de Salida
Una instruccin de bobina de salida controla bien sea una salida real (conectada al
controlador a travs de una interface de salida) o un estado interno (rel de control). Esta
instruccin utiliza una direccin de salida en su rea de almacenamiento interna.
Durante la ejecucin de una instruccin de bobina de salida, el procesador evala todas las
condiciones de entrada en el peldao. Si no existe continuidad, el procesador coloca un cero
en el bit de la direccin de la bobina de salida, indicando una condicin APAGADA. Si por el
contrario el procesador detecta continuidad, el procesador coloca un uno lgico en la
direccin referenciada por la instruccin de bobina de salida. Este estado lgico uno indica
una condicin ENCENDIDA para la instruccin de bobina de salida. Por lo tanto, si la
instruccin de bobina est referenciando un bit en la tabla de salidas, el procesador
encender la salida correspondiente. Esto a su vez encender el dispositivo de campo
conectado al terminar referenciado por la direccin de la bobina de salida. El procesador
encender el dispositivo slo despus de haber resuelto completamente el programa y
actualizado las salidas al final del ciclo de ejecucin.
Lenguajes de Programacin

Controladores Ramn Pgina 16
Programables Medina de 89



Instruccin de bobina de
salida con lgica 0 y con
lgica 1
Cuando una bobina de salida se usa como estado interno, la direccin hace referencia a un
bit en la tabla de estados internos. En este caso, cuando la bobina de salida es ENCENDIDA, el
bit correspondiente se coloca en estado uno. Estas salidas internas son utilizadas cuando el
programa requiere de secuencias de bloqueo cruzado o cuando una salida real no es
necesaria. Los contactos normalmente abiertos y cerrados de una bobina de salida se abrirn
o cerrarn de acuerdo con el estado de la bobina.


Contactos normalmente
abiertos y cerrados
manejando bobinas internas
y reales
Bobina de Salida Negada
Una instruccin de bobina de salida negada es esencialmente lo opuesto a una instruccin de
bobina de salida. Si no existe continuidad en el peldao, la instruccin ENCIENDE el bit de
salida correspondiente. Si existe continuidad, la salida es APAGADA. Cuando una bobina de
salida negada est encendida, sus contactos de referencia cambian de estado. Si la bobina de
Lenguajes de Programacin

Controladores Ramn Pgina 17
Programables Medina de 89

salida negada est APAGADA, sus contactos auxiliares permanecen en sus estados por
defecto.


Diagrama de escalera donde
se ilustra un bobina negada
Una instruccin de bobina negada puede ser complicada de implementar. Por esta razn, es
frecuentemente ms fcil obtener dicha funcionalidad aplicando reglas Booleanas a la
expresin lgica que maneja el peldao.
Ejemplo 3
Implementar una lgica de escalera equivalente a la que se muestra, utilizando una salida de
bobina negada.

Solucin
La expresin lgica asociada a Y se describe con la siguiente ecuacin:

Utilizando las Leyes de Morgan, la funcin Y negada puede ser expresada como:

Y el diagrama de escalera correspondiente se muestra a continuacin:
Lenguajes de Programacin

Controladores Ramn Pgina 18
Programables Medina de 89


En esta lgica, la salida Y se ACTIVAR si y A y B estn ENCENDIDOS o si C y B estn
ENCENDIDOS. Este ltimo circuito es lgicamente idntico al primero.
Ejemplo 4
Implementar una lgica Y negada sin utilizar bobina de salida negada

Solucin
La forma ms sencilla es utilizar el diagrama anterior, agregando un peldao adicional como
se indica en la figura

Bobina de Salida con Memoria
La instruccin de enganche de bobina de salida (latch coil) ocasiona que una salida
permanezca energizada an cuando cambie el estado de los contactos que causaron su
Lenguajes de Programacin

Controladores Ramn Pgina 19
Programables Medina de 89

energizacin. Si cualquier peldao tiene continuidad lgica, la instruccin ENCIENDE el bit de
salida y lo mantiene as, an cuando la continuidad lgica se pierda. La salida permanecer
ENCENDIDA hasta que sea 'borrada' con la instruccin correspondiente. La instruccin de
borrado es la nica manera automtica (programada) de APAGAR la salida.
La instruccin de desenganche de una bobina de salida APAGA una bobina de salida
enganchada. Cuando el peldao tiene continuidad lgica, la instruccin APAGA la salida
referida.


Instrucciones de enganche y
desenganche en formato de
rel
Las instrucciones de enganche y desenganche pueden ser representadas por un bloque de
funcin.


Bloques funcionales de
enganche y desenganche
Salida de Pulso
Una instruccin de salida de pulso opera de manera parecida a como lo hace la bobina de
salida. Si el peldao tiene continuidad lgica, la salida de pulso es ENCENDIDA. Sin embargo,
la duracin del estado ENCENDIDO es de un ciclo de ejecucin o menos, dependiendo de
dnde est localizado en el programa de control. Las salidas de pulso son normalmente
utilizadas para reinicializar condiciones en un ciclo de ejecucin.
Lenguajes de Programacin

Controladores Ramn Pgina 20
Programables Medina de 89



Instruccin de salida de pulso
y su diagrama de tiempo
Dependiendo del tipo de controlador que se use, la salida de pulso puede ser disparada por
un flanco de bajada o de un flanco de subida.
Contacto de Transicin
La instruccin de contacto de transicin proporciona un pulso cuando la seal que la dispara
hace una transicin de ENCENDIDO a APAGADO o de APAGADO a ENCENDIDO. En una
instruccin de flanco de subida, los contactos cerrarn por exactamente un ciclo de ejecucin
cada vez que la seal de disparo pasa de APAGADO a ENCENDIDO. El contacto permitir la
continuidad lgica durante el ciclo de ejecucin luego de lo cual, se abrir nuevamente,
aunque la seal de disparo contine en su estado de asercin. La seal de disparo debe hacer
nuevamente la transicin de APAGADO a ENCENDIDO para que el contacto se pueda cerrar
nuevamente. De manera similar, en una instruccin de flanco de bajada, la seal de disparo
debe ir de ENCENDIDO a APAGADO para cerrar el contacto por un ciclo de ejecucin. La seal
de disparo puede ser una entrada o salida externa as como una salida interna.


Contactos transicionales por
flancos de subida y bajada, y
sus diagramas de tiempo
Los controladores programables que no proveen instrucciones de salida de pulso,
generalmente cuentan con instrucciones de contacto de transicin. Al igual que en las salidas
de pulso, el contacto de transicin es usado para reinicializar condiciones en un ciclo de
ejecucin, como por ejemplo, una bobina de salida con memoria (desenganchar).
Lenguajes de Programacin

Controladores Ramn Pgina 21
Programables Medina de 89

Programacin de Instrucciones Rels
Evaluacin de la Ejecucin de la Escalera
La evaluacin del barrido (ciclo de ejecucin) es un concepto importante, ya que define el
orden en que el procesador ejecutar el diagrama de escalera. El procesador inicia la
ejecucin del diagrama de escalera luego de que ha ledo el estado de las entradas y
actualizado la tabla de entradas. Comienza desde el tope del programa (primer peldao) y
continua ejecutndolos secuencialmente uno a la vez. A medida que resuelve cada peldao,
examina las direcciones referenciadas por cada instruccin programada, para evaluar la
continuidad lgica.
Si la salida de un peldao afecta peldaos subsiguientes, el procesador considerar cualquier
cambio en el mismo barrido. Sin embargo, si la salida de un peldao afecta peldaos
anteriores, el procesador no regresar para resolverlos. Esto se puede comprender con
mayor claridad al observar las siguientes figuras. El contacto normalmente abierto 10, que
asumiremos corresponde a un pulsador, activa el primer peldao. Si el contacto 10 se
ENCIENDE, el a su vez encender la salida 100. En los peldaos siguientes, el contacto 100
enciende la salida 101, el contacto 101 enciende la salida 102 y el contacto 102 enciende la
salida 103. Aunque estn conectados en diferentes peldaos, todas las salidas se encendern
en el mismo ciclo de ejecucin, porque el procesador actualiza los dispositivos fsicos cuando
este finaliza. En este caso, si las salidas 100, 101, 102 y 103 estuvieran conectadas a lmparas
piloto, todas ellas se encenderan al mismo tiempo.


Diagrama de escalera donde
todas las salidas se
encienden en el mismo ciclo
de ejecucin
La siguiente figura ilustra la misma lgica de escalera, pero con los peldaos ubicados en
orden inverso. Asumiendo que la entrada 10 es presionada en el primer barrido, el
procesador debe hacer cuatro ciclos de ejecucin antes de energizar la salida 103. La lgica
que el procesador usa en el primer barrido es la que se describe a continuacin. Cuando la
entrada 10 es activada, el procesador examina la referencia 102 y encuentra que est
APAGADA; por lo tanto, la salida 103 permanece APAGADA. En el segundo peldao el
contacto 101 est APAGADO; por lo tanto, la salida 102 permanece APAGADA. En el tercer
Lenguajes de Programacin

Controladores Ramn Pgina 22
Programables Medina de 89

peldao, el contacto 100 est apagado, de tal manera que la salida 101 permanece
APAGADA. En el cuarto peldao, el contacto 10 est ENCENDIDO, porque el pulsador fue
presionado, de tal manera que la salida 100 se enciende. El siguiente ciclo de ejecucin
(segundo), si el pulsador permanece ENCENDIDO, la salida 101 se encender porque al final
del primer barrido, la direccin de referencia 100 fue puesta a uno lgico. Esta lgica
continuar hasta el cuarto barrido, cuando las cuatro salidas estarn ENCENDIDAS. Las
salidas se apagarn de la misma manera, cuando el pulsador sea liberado.


Diagrama de escalera donde
las salidas se encienden en
diferentes ciclos de ejecucin
La operacin fsica de un circuito como el de la ltima figura es caso imposible de observar
mientras el controlador ejecuta el programa, porque este completa su ciclo de ejecucin en
milisegundos. Las lmparas piloto parecer que se encienden al mismo tiempo, an cuando
realmente lo hagan en diferentes ciclos de ejecucin. La nica forma de observar las salidas
del diagrama de escalera es utilizando la operacin de ejecucin de un slo ciclo. Con esta
operacin, el procesador lee las entradas, ejecuta la lgica, actualiza las salidas y se detiene
hasta que otra operacin un slo ciclo sea ejecutada. La operacin de un slo ciclo de
ejecucin es usada generalmente durante el perodo de prueba del programa de control.
Lo importante en este caso es que si se desea que la salida de un peldao tenga efecto en
otro en el mismo ciclo de ejecucin, este debe ser programado primero. Si no se hace as,
podran suscitarse problemas de orden de ejecucin, especialmente cuando se emplean
contactos de transicin y salidas de pulso para desenganchar salidas. La siguiente figura
ilustra este tipo de problema, donde la instruccin de desenganche de la salida nunca
ocurrir. Una vez que se cierra el contacto 10, el enganche de la salida 100 slo podr ser
desecho por la activacin del contacto 11. Cuando se cierra el contacto 12, dispara un pulso
de salida 11 (o el contacto transicional 12) durante un ciclo de ejecucin. Sin embargo, al
final del ciclo, la salida de pulso se apaga, de tal manera que no alcanza a desenganchar la
salida 100 en el siguiente barrido.
Lenguajes de Programacin

Controladores Ramn Pgina 23
Programables Medina de 89



Ni la salida de pulso ni el
contacto transicional sern
capaces de desenganchar la
bobina 100
Programando Entradas Normalmente Cerradas
Para explicar cmo programar entradas normalmente cerradas, veamos el siguiente ejemplo.
Supongamos que queremos implementar una lgica idntica a la del circuito presentado.


Lgica cableada
Implementar la misma lgica significa que la lmpara piloto PL1 en el controlador debe
comportarse de la misma manera que el circuito cableado. Si PB1 no es presionado, PL1
estar ENCENDIDA; al presionar PB1, PL1 se apaga. Las figuras muestran dos mtodos
posibles para programar PB1 e implementar la lgica. A primera vista podra pensarse que la
primera figura contiene la solucin; sin embargo, esto no es verdad. La solucin correcta es la
que se muestra en la segunda figura.

Implementacin lgica con
PB1 programado como
contacto normalmente
cerrado
Lenguajes de Programacin

Controladores Ramn Pgina 24
Programables Medina de 89


Implementacin lgica con
PB1 programado como
contacto normalmente
abierto
En la primera figura, la direccin de referencia de PB1 (entrada 10) es programada como un
contacto normalmente cerrado (examinar APAGADO) que maneja la bobina de salida 100,
que est conectada a la lmpara piloto PL1. Cuando el controlador inicia, lee el estado del
dispositivo conectado a la entrada 10 y almacena la informacin en la tabla de entradas. Si
PB1 no es presionado, el procesador lee la entrada 10 como un uno lgico. Durante la
ejecucin de la lgica de escalera, el controlador evaluar la instruccin examinar APAGADO,
y como la referencia (entrada 10) est ENCENDIDA, abrir el contacto normalmente cerrado,
interrumpiendo la continuidad. Por lo tanto, la salida 100 estar desactivada y PL1 no se
encender. . Si por el contrario PB1 es presionado, la localidad 10 estar en un cero lgico. La
instruccin examinar APAGADO del procesador estar en su condicin acertada
proporcionando continuidad lgica al peldao y encendiendo la salida 100 y la lmpara piloto
PL1.


Continuidad lgica con (a)
PB1 sin presionar y (b) PB1
presionado
En el segundo de los casos planteados originalmente, la condicin de entrada normalmente
cerrada fue programada como una instruccin examinar ENCENDIDO. Durante la operacin,
si PB1 no es presionado, la entrada 10 permanece en estado ENCENDIDO. Cuando el
procesador evala el peldao, su bsqueda de una condicin ENCENDIDA en la referencia 10
ser VERDAD. Por lo tanto, el contacto 10 se cerrar proporcionando continuidad lgica
encendiendo la salida 100 y la lmpara piloto. Por otra parte, cuando PB1 es presionada, la
entrada tendr un estado APAGADO y el procesador almacenar un cero lgico en la tabla de
entrada. Durante la evaluacin del peldao, el procesador encontrar que la condicin
ENCENDIDA en la referencia 10 es FALSA (la entrada 10 est apagada) por lo que no habr
continuidad lgica porque los contactos permanecern abiertos. Por lo tanto, la salida 100 y
la lmpara piloto estarn apagadas.
Lenguajes de Programacin

Controladores Ramn Pgina 25
Programables Medina de 89



Continuidad lgica con (a)
PB1 sin presionar y (b) PB1
presionado
La solucin de programacin para una entrada normalmente cerrada (como se muestra en el
segundo caso), ejemplifica lo siguiente: para que un dispositivo cableado normalmente
cerrado se comporte como normalmente cerrado al ser conectado a un controlador, este
debe ser programa como una instruccin examinar ENCENDIDO (instruccin de contacto
normalmente abierto). Las entradas discretas de un controlador pueden ser configuradas
para que se comporten como normalmente abierta o cerrada sin importar su condicin
original. Esta habilidad de poder examinar el estado cerrado o abierto de cada dispositivo, es
la clave de la flexibilidad de los controladores. No importa cmo est cableado el dispositivo
(normalmente abierto o cerrado), el controlador puede ser programado para que lleve a
cabo la operacin deseada sin modificar el cableado. Recuerde que el estado de
programacin de las entradas depende no slo de cmo est cableado, si tambin de la
accin de control deseada.
Ejemplo 6
Muestre la implementacin en un controlador de la lgica cableada que se presenta en la
siguiente figura, considerando que un contacto normalmente abierto est conectado a la
entrada del mdulo. Describa la operacin de cada implementacin. Use la direccin de
entrada 10 para el pulsador y las direcciones 30 y 31 para las lmparas piloto PL1 y PL2
respectivamente.

Lenguajes de Programacin

Controladores Ramn Pgina 26
Programables Medina de 89

Solucin
Al examinar el circuito se tiene que si PB1 no es presionado, la lmpara PL1 debe estar
apagada. PL2 debe estar encendida por que el otro contacto de PB1 (el normalmente
cerrado) proporciona potencia a PL2. Es posible cablear cualquiera de las dos conexiones (A o
B) de PB1 al mdulo de entrada para satisfacer la lgica requerida. Recuerde que es posible
hacer que cualquier contacto funcione como lo requiere el programa de control.
La siguiente figura muestra la solucin para la conexin del contacto normalmente abierto.
Una instruccin examinar ENCENDIDO maneja a PL1 y una examinar APAGADO a PL2. Cuando
el contacto A de PB1 no est presionado, PL1 est apagado y PL2 encendido. El primer
peldao implementa un pulsador cableado como un contacto normalmente abierto para que
acte como tal, mientras que el segundo implementa un pulsador cableado como
normalmente abierto, para que se comporte como uno normalmente cerrado.

Ejemplo 7
Muestre la implementacin en un controlador de la lgica cableada que se presenta en la
siguiente figura, considerando que un contacto normalmente cerrado est conectado a la
entrada del mdulo. Describa la operacin de cada implementacin. Use la direccin de
entrada 10 para el pulsador y las direcciones 30 y 31 para las lmparas piloto PL1 y PL2
respectivamente.

Lenguajes de Programacin

Controladores Ramn Pgina 27
Programables Medina de 89

Solucin
La siguiente figura muestra la solucin cuando se conecta el contacto normalmente cerrado.
En este caso, una instruccin examinar APAGADO es la que maneja a PL1. Durante la
operacin, el contacto B de PB1 proporciona potencia al mdulo si el pulsador no es
presionado y por lo tanto, su direccin de referencia (10) es en estado uno lgico. El contacto
normalmente cerrado de la direccin 10 permanece abierto mientras que PB1 no sea
presionando manteniendo a PL1 apagado. En el segundo peldao, la instruccin examinar
ENCENDIDO maneja la salida para PL2 (31), que permanece cerrada mientras PB1 no sea
presionado. El primer peldao implementa un pulsador cableado como normalmente
cerrado, para que se comporte como uno normalmente abierto, mientras que el segundo
implementa un pulsador cableado como normalmente cerrado, para que se comporte como
tal.

Como se ilustra en el ejemplo anterior, una entrada normalmente abierta puede ser
programada para que se comporte con una normalmente cerrada y viceversa. Sin embargo,
por razones de seguridad, los dispositivos normalmente cerrados deben ser cableados al
mdulo de entrada como tal, utilizando instrucciones examinar ENCENDIDO, de tal manera
que se comporten de la manera en que han sido diseados. Un dispositivo cableado como
normalmente abierto no debe ser programado para que se comporte como uno
normalmente cerrado, especialmente si est siendo usado para interrumpir la continuidad
cuando un dispositivo est presionado o cerrado.
La siguiente figura muestra un ejemplo de un botn de parada normalmente cerrado,
utilizado para interrumpir la alimentacin de un motor. Durante la operacin, cuando el
pulsador de arranque ha sido presionado y enganchado por los contactos internos del motor
(100), el motor enciende. El pulsador (normalmente cerrado) de parada interrumpe la
continuidad lgica de la bobina de salida del motor. Pulsando este pulsador de parada, es la
nica manera en la que el motor puede ser detenido. Sin embargo, si el cableado del
pulsador se corta por accidente, el circuito del motor se desacopla.
Lenguajes de Programacin

Controladores Ramn Pgina 28
Programables Medina de 89


El pulsador de parada
(normalmente cerrado) es
programado como
normalmente abierto. El
contacto 100 es usado como
enganche con el botn de
arranque luego de ser
presionado

Luego de que el pulsador de
arranque es presionado y
liberado, el motor
permanece encendido

Si el pulsador de parada es
presionado cuando el motor
est encendido, ste se
apagar

Si el cableado del pulsador de
parada se rompe
accidentalmente cuando el
motor est encendido, ste
se apaga
Es posible conseguir la misma lgica de control colocando un pulsador de parada
normalmente abierto en lugar de uno normalmente cerrado, implementndolo como un
circuito normalmente cerrado en el programa del controlador. Cuando el botn de arranque
es presionado, el motor se enciende; si el botn de parada es presionado, el motor se apaga.
Sin embargo, no habr manera de detener el motor si el cableado del pulsador normalmente
abierto se rompe. La instruccin examinar APAGADO correspondiente al pulsador de parada
no interrumpir nunca la continuidad lgica. La nica manera de detener el motor ser
apagando el controlador. Este tipo de configuracin del controlador es peligrosa y debe ser
evitada.
Lenguajes de Programacin

Controladores Ramn Pgina 29
Programables Medina de 89


El pulsador de parada
(normalmente abierto) es
programado como
normalmente cerrado. Al
presionar el botn de
arranque, se enciende el
motor

Luego de que el pulsador de
arranque es presionado y
liberado, el motor
permanece encendido

Si el pulsador de parada es
presionado cuando el motor
est encendido, ste se
apagar

Si el cable del botn de
parada se rompe mientras
est encendido el motor, no
habr forma de detenerlo
Temporizadores y Contadores
Los temporizadores y contadores son instrucciones internas que proveen las mismas
funciones que sus contrapartes de hardware. Ellos activan o desactivan un dispositivo luego
de que transcurre un determinado lapso de tiempo o de que se ha alcanzado un conteo
especfico. Los temporizadores y contadores son tpicamente considerados como salidas
internas. Al igual que las instrucciones de rel, los temporizadores y contadores son
fundamentales para la programacin en diagrama de escalera.
Las instrucciones de temporizador pueden tener un o ms bases de tiempo que son usadas
para cronometrar un evento. La base de tiempo es la resolucin o precisin del
temporizador. Si se desea que un temporizador cronometre un evento de 10 segundos, el
usuario debe configurarlo especificando el nmero de veces que la base de tiempo se debe
repetir para llegar a los 10 segundos. Por lo tanto, si la base de tiempo es de un segundo,
entonces el temporizador debe contar diez veces antes de activar su salida. A este nmero
de cuentas se le llama comnmente tick. Las bases de tiempo ms comunes son 0,01
segundos, 0,1 segundos y 1 segundo.
Lenguajes de Programacin

Controladores Ramn Pgina 30
Programables Medina de 89



Bases de tiempo
Los temporizadores son usados para aadir un determinado lapso de tiempo a una salida del
programa. Las aplicaciones de los temporizadores en un controlador son innumerables, ya
que han reemplazado casi completamente a sus contrapartes de hardware. Como ejemplo,
un temporizador puede ser utilizado para introducir un retardo de 0,01 segundos en un
programa de control. El programa requiere el retardo, porque de otra forma el controlador
encender sus salidas demasiado rpido en comparacin con el sistema cableado de rels
que est reemplazando. Este pequeo retardo disminuye la velocidad de repuesta de otros
componentes, de tal manera que la operacin del sistema sea la correcta.
Las instrucciones de conteo, son utilizadas para contar eventos tales como partes que
transitan por una banda transportadora y el nmero de veces que una vlvula solenoide se
enciende, entre otros. Los contadores, junto con los temporizadores, deben tener dos
valores, el valor final y el valor acumulado. Estos valores son almacenados en la tabla de
datos. El valor final es el nmero de ticks o cuentas que debe ser alcanzado antes de que el
temporizador o contador encienda su salida. El valor acumulado es el nmero actual de ticks
o cuentas que han transcurrido desde que el temporizador o contador inici su operacin.
Ambos registros son definidos al momento de programar la instruccin.
Ejemplo 8
Durante la ejecucin de un proyecto de modernizacin, se encontr que una parte del
circuito de escalera al ser configurado en el controlador, no funcionaba correctamente. Este
malfuncionamiento se deba al hecho de que en el circuito cableado, el rel CR5, que era
energizado a travs del dispositivo LS4, tena un tiempo de retardo suficientemente grande
como para sincronizarse con el resto del circuito permitiendo que la actuacin del solenoide
fuera la correcta. Ahora que ha sido implementado en el controlador, el rel CR5 no tiene el
retardo. El retardo requerido se estima en 3 ciclos AC (60 Hz) y las bases de tiempo
disponibles en el controlador son 0,01, 0,1 y 1 segundo. Cul base de tiempo debe ser usada
para crear el retardo y cuntos ticks debe demorar?
Solucin
El retardo estimado de 3 ciclos AC se calcula de la siguiente manera:
Lenguajes de Programacin

Controladores Ramn Pgina 31
Programables Medina de 89


os milisegund 00 , 50
60
3
ciclos 3
os milisegund 66 , 16
60
1
ciclo 1
= =
= =

El retardo requerido es de 50 milisegundos. Por lo tanto, la nica base de tiempo
suficientemente pequea es la de 0,01 segundos. Usando esta base de tiempo, el
temporizador debe contar 5 ticks para recrear el retardo.
Instrucciones de Temporizado
Los controladores proveen varios tipos de instrucciones de temporizado. Sin embargo, los
distintos fabricantes dan diferentes definiciones para las funciones de temporizado que
ofrecen.


Instrucciones de temporizado
La funcin de las distintas instrucciones de temporizado es esencialmente la misma,
difiriendo nicamente en el tipo de salida que proporciona. La siguiente figura muestra los
dos formatos que se emplean para los temporizadores.


Instruccin de temporizado
en formato de bloque y de
diagrama de escalera
Lenguajes de Programacin

Controladores Ramn Pgina 32
Programables Medina de 89

Un temporizador con formato de bloque, tiene una o ms entradas dependiendo del
controlador. Estas entradas son la lnea de control y la lnea de habilitacin/inicializacin. Si la
lnea de control es VERDAD y la lnea de habilitacin es tambin VERDAD, el bloque de
funcin iniciar el temporizado. Un temporizador con formato de escalera generalmente
tiene slo una entrada, la cual corresponde a la lnea de control. Si la lnea de control est
ENCENDIDA, el temporizador iniciar su conteo.
Un aspecto comn de ambos formatos es el uso de un registro que contiene el valor final y
otro que contiene el valor acumulado. Algunos controladores permiten que el usuario
ingrese un valor constante directamente en el temporizador, para establecer el valor final.
Este valor particular debe ser ingresado en el registro predefinido para el temporizador
especificado.
La base de tiempo del temporizador es configurable de acuerdo con el controlador utilizado.
Cuando el conteo acumulado de ticks iguala el valor final, el temporizador ejecuta su funcin
y establece su condicin de salida, que depende del tipo de temporizador utilizado.
Es importante destacar que cuando un temporizador programado reemplaza un
temporizador cableado, ellos sustituyen los contactos demorados asociados a los
temporizadores, pero no los contactos instantneos que puedan estar disponibles en un
temporizador cableado.

Circuito cableado con
contactos instantneos y
retardados
Lenguajes de Programacin

Controladores Ramn Pgina 33
Programables Medina de 89

La figura anterior ilustra un ejemplo que muestra contactos de temporizadores demorados
e instantneos. El temporizador TMR1 en l lnea 1 tiene un contacto instantneo en la lnea 2
(TMR1-1), el cual es usado para enganchar PB1, y un contacto demorado (TMR1-2) en la lnea
5. Para traducir este tipo de lgica a un programa de control, el usuario debe 'atrapar' el
temporizador, de tal manera que se consiga el enganche instantneo
Energizado en ENCENDIDO
El temporizador con retardo para encender (TON) proporciona una accin retardada o mide
la duracin de un evento. Una vez que el peldao tiene continuidad, el temporizador
contina contando los intervalos de tiempo (ticks) y lo hace hasta que el tiempo acumulado
iguala al tiempo prefijado. Cuando los dos valores son iguales, el temporizador energiza su
salida y cierra los contactos demorados asociados con la salida. El contacto demorado puede
ser usado en el programa tanto normalmente abierto como normalmente cerrado. Si la
continuidad lgica se pierde antes de que el temporizador finalice su conteo, este reinicializa
su registro acumulador a cero.


Temporizador con retardo en
encendido
Desenergizado en ENCENDIDO
La instruccin de desenergizado en encendido (TON) opera de manera similar a como lo hace
la de energizado en encendido, con la diferencia de que la salida del temporizador inicia
ENCENDIDA. La instruccin desenergiza la salida una vez que el peldao tienen continuidad
lgica y que el lapso de tiempo ha transcurrido (valor del registro acumulador igual al del
registro preestablecido). Los fabricantes de controladores normalmente proporcionan slo
Lenguajes de Programacin

Controladores Ramn Pgina 34
Programables Medina de 89

temporizador de desenergizado o de energizado en encendido, ya que es muy fcil
implementar uno a partir del otro. La figura a continuacin muestra el diagrama de tiempo
para ambos tipos.

Diagrama de tiempo para un
temporizador energizado en
ENCENDIDO y desenergizado
en ENCENDIDO
Energizado en APAGADO
Una instruccin de temporizador energizado en APAGADO proporciona una accin
demorada. Si el peldao no tiene continuidad, el temporizador comienza el conteo de los
intervalos de tiempo hasta que el valor acumulado iguala al valor prefijado. Cuando los
valores son iguales, el temporizador energiza su salida y cierra el contacto demorado
asociado. El contacto demorado puede ser usado en el programa normalmente abierto o
normalmente cerrado. Si la continuidad lgica ocurre antes de que el temporizador finalice
su conteo, el valor acumulado retorna a cero.

Temporizador de energizado
en apagado
Lenguajes de Programacin

Controladores Ramn Pgina 35
Programables Medina de 89

Desenergizado en APAGADO
La instruccin de desenergizado en APAGADO (TOF) opera de manera similar a como lo hace
la de desenergizado en encendido; sin embargo, la salida del temporizador est ENCENDIDA
y ser apagada cuando el peldao pierda continuidad lgica y el lapso de tiempo establecido
haya transcurrido. Algunos fabricantes de controladores proporcionan slo uno de los
temporizadores de desenergizado, ya que es muy sencillo implementar uno a partir del otro.
La figura a continuacin, muestra los diagramas de tiempo correspondientes.

Diagrama de tiempo para (a)
una instruccin de
energizado en apagado y (b)
desenergizado en apagado
Retentivo en ENCENDIDO
Un temporizador retentivo con retardo en ENCENDIDO (RTO) es utilizado en los casos en que
el valor acumulado deba ser mantenido an cuando la continuidad lgica o la energa del
sistema. Si el peldao tiene continuidad lgica, el temporizador comienza el conteo de los
intervalos de tiempo hasta que el valor acumulado iguala al preestablecido. El acumulador
mantiene su valor, an si la energa o la continuidad lgica se pierden antes de que el
temporizador haya finalizado su conteo. Cuando el tiempo acumulado igual al
preestablecido, el temporizador energiza su salida y cierra los contactos asociados. Los
contactos pueden ser usados normalmente abiertos o cerrados. La instruccin de
reinicializacin del temporizador retentivo regresa el valor acumulado a cero.
Reinicializacin de Retentivo
La instruccin de reinicializacin del temporizador retentivo es la nica manera para
reinicializar automticamente el valor acumulado. Si el peldao tiene continuidad lgica, esta
instruccin reinicializa el valor acumulado a cero. La direccin de la instruccin de
reinicializacin debe ser igual a la del temporizador retentivo.
Lenguajes de Programacin

Controladores Ramn Pgina 36
Programables Medina de 89

Instrucciones de Conteo
Existen dos tipos bsicos de contadores: los que cuentan hacia arriba y los que lo hacen hacia
abajo. El formato puede variar segn el controlador. En algunos controladores se usa un
formato de escalera, mientras que en otros se usa de bloque. La figura a continuacin
muestra ambos formatos.


Contador en formato (a) de
bloque y (b) de rel


Tipos de contadores
Contador Ascendente
El contador ascendente (CTU) aade una cuenta, cada vez que el evento referido ocurre. En
una aplicacin de control, este contador enciende o apaga un dispositivo luego de alcanza un
cierto conteo. Adems, este contador puede llevar registro del nmero de partes (botellas,
piezas, etc.) que pasan por un cierto punto. Un contador ascendente incrementa su valor
Lenguajes de Programacin

Controladores Ramn Pgina 37
Programables Medina de 89

acumulado cada vez que el evento hace una transicin de APAGADO a ENCENDIDO. Cuando
el valor acumulado alcanza el valor prefijado, el contador enciende su salida, finaliza el
conteo y cierra el contacto asociado. Luego de que el contador alcanza su valor prefijado,
inicializa el valor de su acumulador o simplemente continua contando cada evento que
suceda.
Contador Descendente
Un contador descendente (CTD) decrementa el valor de conteo cada vez que ocurre un
evento determinado. En muchas ocasiones es utilizado en conjunto con un contador
ascendente para formar un contador ascendente/descendente, sobre la base de que ambos
contadores tengan los mismos registros. En un contador bidireccional, el contador
descendente proporciona una manera de corregir informacin introducida por el
ascendente. Por ejemplo, mientras que un contador ascendente totaliza el nmero de
botellas llenas que pasan por un cierto punto, un contador descendente con el mismo
registro puede restar una del valor acumulado, cada vez que detecta que est
incorrectamente llena. Dependiendo del tipo de controlador, el contador descendente puede
detenerse al llegar a cero o continuar hasta un nmero negativo mximo. En el formato de
bloque, el conteo descendente ocurre cada vez que la entrada correspondiente pasa de
APAGADO a ENCENDIDO.
Inicializacin de Contador
La instruccin de inicializacin del contador (CTR) coloca un valor cero en el registro
acumulador. Al programarlo, esta instruccin tendr la misma direccin que la del contador
al que inicializa. Si el peldao donde est esta instruccin de inicializacin tiene continuidad
lgica, entonces inicializa el contador. La lnea de inicializacin en el formato de bloque
almacena un cero en el registro acumulador. La figura a continuacin muestra un ejemplo
tpico de un contador en formato de bloque con instrucciones de conteo ascendente,
descendente y de inicializacin. El contador incrementar su valor acumulado hasta que el
contacto 10 se cierre, lo decrementar hasta que cierre el contacto 11 y se reinicializar a
cero cuando cierre el contacto 12. Si el conteo es igual a 15, la salida 100 se encender. Si el
contenido del registro 1003 es mayor que 15, la salida 101 se encender. La salida 102 se
encender cuando el valor acumulado sea menor que 15.
Lenguajes de Programacin

Controladores Ramn Pgina 38
Programables Medina de 89



Bloque contador con
instrucciones de conteo hacia
arriba, hacia abajo e
inicializacin
Ejemplo 9
La figura a continuacin muestra un bloque contador empleado para totalizar las partes que
son detectadas por un sensor fotoelctrico (PE). El valor predefinido de conteo es de 500. Se
pide modificar el circuito de tal manera que el contador se inicialice automticamente cada
vez que llegue a 500. Adicionalmente, se pide aadir las instrucciones necesarias para
implementar una salida que indique cuando el conteo haya llegado a 500.

Solucin
La siguiente figura muestra el circuito que inicializar el contador automticamente. Cuando
el valor prefijado y el acumulado se igualan, la salida 100 del contador se ENCIENDE,
enganchando la salida 101 para indicar que se alcanz el conteo. La misma salida del
contador lo inicializa. Recuerda que el controlador ha evaluado todas las entradas, de tal
manera que el contador estar inicializado para el prximo ciclo de ejecucin. La entrada 11
es utilizada para desenganchar manualmente la salida 101.
Lenguajes de Programacin

Controladores Ramn Pgina 39
Programables Medina de 89


Ejemplo 10
Resuelva el caso del ejemplo 9 utilizando permisivos en lugar de bobinas con memoria.
Solucin
La siguiente figura ilustra el circuito de permisivos que engancha la salida del contador,
indicando que est alcanz el valor predeterminado. El pulsador de inicializacin (entrada 11)
es programado como normalmente cerrado a partir de un dispositivo normalmente abierto.
Si la entrada es de importancia para efectos de seguridad, entonces el circuito debe
incorporar un pulsador normalmente cerrado que sea programado con una instruccin
examinar APAGADO.

Instrucciones de Control de Programa y Flujo
Este grupo de instrucciones dirige el flujo de las operaciones as como la ejecucin de
instrucciones dentro del programa en escalera. Esas funciones son llevadas a cabo mediante
instrucciones de salto y retorno, que son ejecutadas cuando ocurren ciertas condiciones
lgicas que han sido programadas. Las instrucciones de control de flujo forman una especie
de enrejado dentro del programa. Este enrejado contiene grupos de instrucciones que son
Lenguajes de Programacin

Controladores Ramn Pgina 40
Programables Medina de 89

utilizadas para implementar una determinada funcin. La figura siguiente muestra el
enrejado logrado a partir del uso de instrucciones de control de flujo.


Enrejado creado mediante el
uso de instrucciones para
control de flujo
Las instrucciones en el enrejado son ejecutadas slo si el peldao donde se encuentra la
instruccin de control de flujo, tiene continuidad lgica. Algunos controladores
programables, dependiendo de sus capacidades y del alcance de la aplicacin, puede usar
varios tipos de instrucciones de control de flujo. Esas instrucciones permiten que el
controlador eficientemente ejecute rutinas especiales (programadas por el usuario) que son
invocadas slo cuando es necesario, optimizando la respuesta del sistema.
La siguiente tabla muestra algunas de las ms usadas instrucciones para control del flujo.
Esas instrucciones normalmente funcionan en pareja. Cuando es as, la instruccin de inicia
hace que el controlador ejecute una serie de instrucciones en otra seccin del programa de
control. La otra instruccin regresa la ejecucin del controlador hasta el sitio donde qued el
programa cuando se verific la bifurcacin.
Lenguajes de Programacin

Controladores Ramn Pgina 41
Programables Medina de 89



Instrucciones de control de
flujo
Rel de Control Maestro
Un rel de control maestro (MCR) activa o desactiva la ejecucin de un grupo o zona de
peldaos. Un peldao MCR es usado con un peldao END para encerar un grupo de
peldaos.


Ejemplo de una instruccin
MCR
Lenguajes de Programacin

Controladores Ramn Pgina 42
Programables Medina de 89

El enrejado consiste en un peldao MCR con entradas condicionales al inicio de la zona y un
peldao END sin condicionales al final de la zona. Cuando el peldao MCR es VERDAD, activa
la salida referenciada, permitiendo que las salidas de los peldaos dentro de la zona sean
controladas por sus respectivas entradas. Cuando la salida MCR se APAGA, desenergiza las
salidas dentro de la zona.
Control de ltimo Estado en la Zona
La instruccin para control de ltimo estado en la zona (ZCL) es similar al rel de control
maestro (MCR). Esta determina si va a ser evaluado o no un grupo de peldaos. Para usar
esta instruccin se coloca una salida ZCL con entradas condicionales al inicio de la zona y una
END ZCL sin condicionales al final. Cuando se activa la salida ZCL, las salidas dentro de la zona
son controladas por sus respectivas entradas. Cuando la instruccin ZCL se apaga, las salidas
dentro de la zona permanecen en su ltimo estado.
Fin
La instruccin fin (END) establece el final de una zona controlada por un rel de control
maestro (MCR) o por una instruccin de control de ltimo estado de la zona (ZCL). Esta
instruccin tpicamente es incondicional. Esta instruccin puede o no referenciar a una
instruccin MCR o ZCL. Si lo hace, la instruccin termina ese MCR o ZCL especfico. Si no es
as, terminar la ltima instruccin MCR o ZCL.
Ir a
La instruccin ir a (JMP) permite que la secuencia de ejecucin del programa sea alterada
bajo ciertas condiciones. Si existe continuidad lgica en el peldao, la instruccin JMP le
indica al procesador que vaya directamente a ejecutar el peldao indicado. Al usar esta
instruccin, el controlador puede alterar el orden de ejecucin del programa de control
ejecutando los peldaos que requieren atencin inmediata. La figura a continuacin ilustra
un ejemplo de uso de la instruccin JMP. Es necesario tener especial cuidado cuando se
'salte' sobre contadores y temporizadores ya que esto evita que dichas instrucciones realicen
su trabajo.
Lenguajes de Programacin

Controladores Ramn Pgina 43
Programables Medina de 89

Ejecutar Subrutina
Similar a la instruccin JMP, ejecutar subrutina (GOSUB) permite que sea alterada la
ejecucin secuencial de un programa dada una condicin. Al usar esta instruccin, si la
condicin lgica es VERDAD, la salida GOSUB le indica al procesador que transfiera la
ejecucin del programa de control a la etiqueta (LBL) especificada.


Ejemplo de una instruccin
JMP
El procesador contina la ejecucin hasta que encuentra una instruccin de retorno. Cada
subrutina en el programa debe comenzar con un peldao etiquetado y terminar con una
instruccin de retorno incondicional.
La instruccin GOSUB es muy til cuando una porcin del programa es referenciada por
varias secciones del programa de control principal o es utilizada cada vez que transcurre un
determinado lapso de tiempo. Normalmente las subrutinas estn localizadas al final del
programa o en un rea especificada por el fabricante del controlador. Si el controlador no
tiene un rea reservada para subrutinas, es posible crearla programando un peldao falso
con control directo a otro peldao falso al final de las subrutinas programadas.
Lenguajes de Programacin

Controladores Ramn Pgina 44
Programables Medina de 89



Controlador con subrutinas
asignadas al final del
programa de control
Lenguajes de Programacin

Controladores Ramn Pgina 45
Programables Medina de 89



rea de subrutinas creada
por el usuario
Etiqueta
Una etiqueta (LBL) identifica un peldao destino de una instruccin GOSUB. La direccin de
referencia de la instruccin LBL debe ser igual a la de la instruccin GOSUB con la cual
funciona. La instruccin LBL no contribuye a la continuidad lgica del peldao, y para efectos
prcticos, siempre es VERDAD.
Esta instruccin debe ser siempre la primera condicin en el peldao. Una etiqueta que haya
sido referenciada por una direccin nica, slo puede ser usada una vez en un programa.
Retorno
La instruccin de retorno (RET) termina una subrutina y es programada sin entradas
condicionales. Cuando el programa de control se encuentra con la instruccin, retorna al
programa principal, a partir del peldao inmediato siguiente a la instruccin GOSUB que
inici la ejecucin de la subrutina. A partir de ese momento, continua la ejecucin normal.
Cada subrutina debe tener una instruccin de retorno.
Lenguajes de Programacin

Controladores Ramn Pgina 46
Programables Medina de 89

Instrucciones Aritmticas
Las instrucciones aritmticas en un controlador incluyen las cuatro operaciones bsicas de
suma, resta, multiplicacin y divisin. En adicin a dichas operaciones bsicas, algunos
controladores incluyen el clculo de raz cuadrada.


Instrucciones aritmticas
Como otras instrucciones, las aritmticas puede estar en formato bsico o de bloque; sin
embargo, la operacin es bsicamente la misma. La figura a continuacin ilustra los
diferentes formatos.
Lenguajes de Programacin

Controladores Ramn Pgina 47
Programables Medina de 89



Bobina, contacto e
instruccin aritmtica en
formato de bloque
La mayora de las instrucciones aritmticas requieren de tres registros, dos para los
operandos y uno para el resultado. Lagunas instrucciones, como la multiplicacin y la
divisin, pueden usar cuatro registros. La mayora de las operaciones aritmticas en un
controlador requieren aritmtica de simple precisin, lo cual implica que los resultados
pueden ser almacenados en un registro cada uno. Para operaciones que requieran manejar
nmeros grandes, algunos controladores ofrecen aritmtica de doble precisin. En trminos
prcticos esto significa que los resultados requieren el doble de registros para ser
almacenados. Por ejemplo, una operacin de suma en doble precisin requiere seis registros.
Un registro puede almacenar como valor mximo el nmero 65.535 en 16 bits si no se
considera signo. Si el bit ms significativo es utilizado para el signo, entonces el rango de
representacin ser desde -37.678 hasta -37.677. Si el resultado de la operacin es mayor
que el mximo soportado, se presenta una condicin de desbordamiento y se encender un
bit o salida asociado a esta condicin. El formato numrico empleado en las operaciones
matemticas vara de acuerdo al controlador, pero normalmente es de tres, cuatro o cinco
dgitos binarios (BCD o binario)- En simple precisin BCD, el valor mximo es 9.999 (sin signo)
y +/-999 (con signo).
La figura a continuacin presenta instrucciones aritmticas en formato tanto de escalera
como de bloque. El formato de escalera requiere de instrucciones de transferencia de datos
para obtener los operandos. En el formato de bloque funcional, algunos fabricantes
proporcionan la habilidad de colocarlos en cascada.


Configuracin en cascada
que permite la ejecucin de
varias funciones aritmticas
en secuencia
Lenguajes de Programacin

Controladores Ramn Pgina 48
Programables Medina de 89

La posibilidad de colocarlos en cascada es muy til cuando se tiene que trabajar con
mltiples operaciones aritmticas, ya que una instruccin activa la siguiente una vez que ha
finalizado. Otros fabricantes permiten que las operaciones aritmticas se ejecutadas usando
bloques de varios registros contiguos como operandos para almacenar los resultados en otro
bloque de registros.


Operacin aritmtica en
forma de bloque funcional
En este caso, el contenido de los registros 1000, 1001, 1002 y 1003 van a ser sumados a los
registros 1200, 1201, 1202 y 1203 y el resultado almacenado en 1400, 1401, 1402 y 1403.
Suma
Escalera
La instruccin de suma en formato de escalera suma los valores almacenados en dos
posiciones de memoria referenciadas por la instruccin. Cada controlador accede a dichos
valores de manera distinta. Algunos usan la instruccin de transferencia de datos obtener
(GET) para acceder a los registros de los operandos.


Suma en formato de escalera
Otros simplemente referencian dos registros utilizando smbolos de contacto.

Suma en formato de
contactos
El procesador almacena la suma de los valores en el registro referenciado por la bobina ADD.
Si la operacin de suma est habilitada slo cuando algunas condiciones sean VERDADERAS,
Lenguajes de Programacin

Controladores Ramn Pgina 49
Programables Medina de 89

entonces dichas condiciones han de ser programadas antes del peldao con la operacin de
suma. La condicin de desbordamiento es tpicamente sealada por un bit en registro de
resultado.
Bloque
La instruccin de suma en formato de bloque, suma dos valores almacenados dentro del
controlador y coloca el resultado en el registro especificado. Los operandos pueden ser
constantes, valores provenientes de las tablas de entradas y salidas o variables almacenadas
en la memoria.


Bloque funcional de suma
Una lnea de control habilita la operacin de suma. Cuando la condicin del peldao es
VERDAD, el procesador lleva a cabo la operacin de suma. En la figura anterior, los registros
1000 y 1001 pueden tener valores preestablecidos, registros de almacenamiento o registros
de entradas y salidas. Cada vez que una transicin de APAGADO a ENCENDIDO habilita la
lnea de control, la instruccin suma los valores de los dos registros y coloca el resultado en la
direccin 2000. La salida de terminado indica que la instruccin fue completada. Esta salida
permanece ENCENDIDA en tanto la lnea de control sea VERDAD. Si se produce un
desbordamiento como resultado de la operacin, se enciende la salida correspondiente.
Cuando esto sucede, el controlador almacena como resultado, el mximo valor que l pueda
manejar.
Lenguajes de Programacin

Controladores Ramn Pgina 50
Programables Medina de 89

Algunos controladores usan aritmtica de doble precisin cuando trabajan con formato de
bloque. Esta operacin es idntica en esencia y slo difiere en que se emplean dos registros
por operando y dos para el resultado.


Bloque de suma con doble
precisin
Ejemplo 11
En la figura siguiente, dos ingredientes son aadidos al tanque de un reactor para su
mezclado. Los mdulos de entrada analgicas, que proporcionan informacin de 12 bits en
formato BCD, envan datos de los flujos de los dos ingredientes al controlador. Los valores
son almacenados en los registros 1000 y 1001. Se pide implementar instrucciones que lleven
el control del monto total de los ingredientes combinados, de tal manera que dicha
informacin puede ser desplegada en el monitor del operador.

Lenguajes de Programacin

Controladores Ramn Pgina 51
Programables Medina de 89

Solucin
Un registro puede mantener el total de ambos ingredientes luego de aadir los dos flujos. La
siguiente figura muestra cmo usar la instruccin sumar para almacenar el resultado BCD en
el registro 2000.Ntese que dicho bloque est siempre activo.

Resta
Escalera
La instruccin de substraccin resta los valores almacenados en dos registros. Como en la
instruccin de suma, si el peldao est habilitado, la operacin se ejecuta. Una instruccin de
transferencia de datos GET es la que usualmente accede a los registros donde se encuentran
los operandos. El resultado de la resta normalmente tiene un bit que indica un resultado
negativo.


Instruccin de resta en
formato de escalera
Bloque
La instruccin de resta determina la diferencia entre dos valores y almacena el resultado en
un registro.
Lenguajes de Programacin

Controladores Ramn Pgina 52
Programables Medina de 89



Bloque funcional de resta
Cuando la entrada de control est en estado lgico uno, el procesador ejecuta la operacin.
Tres registros mantienen la informacin durante la operacin. Los valores contenidos en los
registros pueden variar en formato e incluir o no el bit de signo. En la figura anterior, el
registro 1000 puede contener el nmero 9.009 y el registro 1001 -10.020. El resultado de esa
operacin sera 19.029, que sera almacenado en el registro 2000.
El algunos casos, el formato del registro de salida no incluye el signo y el controlador sealiza
este dato utilizando salidas independientes que sealan si el resultado fue positivo, negativo
o cero.


Bloque de resta con salidas
de signo
Algunos controladores permiten aadir constantes aadiendo un indicador como por
ejemplo la letra K, adelante del nmero. Los controladores que no proporcionan
instrucciones para transferencia de E/S puede usar bloques de substraccin para transferir
valores multibit o analgicos desde o hacia la tabla de E/S. Ellos lo hace restando una
constante igual a cero al dato de entrado y almacenando el resultado en el registro destino.
La siguiente figura ilustra un ejemplo de un bloque SUB usado para leer una entrada
analgica y escribirla en una salida del mismo tipo. Cuando se cierra el contacto 10, se
ejecuta la funcin SUB. El registro 100 especifica la direccin de referencia del mdulo de
entrada o salida (analgico o multibit). Durante la lectura de una entrada, se resta una
constante cero (registro 1001) del valor del registro 100 y el resultado es almacenado en el
registro 1000 para su uso por parte del programa de control. Durante la operacin de
escritura en la salida, se resta una constante cero (registro 1001) del valor del registro 1000 y
el resultado es enviado al mdulo de salida (registro 100).

Bloque de resta utilizado
para (a) leer una entrada
analgica y (b) escribir en
una salida analgica
Lenguajes de Programacin

Controladores Ramn Pgina 53
Programables Medina de 89

Multiplicacin
Escalera
La multiplicacin en formato de escalera trabaja sobre dos operandos y usa dos registros
para depositar el resultado, esto porque en la mayor parte de los casos, el producto de dos
nmeros de cuadro dgitos produce un valor de ms de 4 dgitos. Algunos controladores
proporcionan registros adyacentes para almacenar el resultado.


Instruccin de multiplicacin
en formato de escalera
Dependiendo del controlador, una o dos bobinas referencian a los registros que contienen el
resultado de la multiplicacin. Las instrucciones GET permiten acceder a los registros
operandos. Si se requiere que una condicin habilite la operacin, esta debe ser programada
antes de que el peldao de multiplicacin acceda a los operandos. En la figura anterior, el
contenido de los registros 1000 y 1001 sern multiplicados y el resultado almacenado en los
registros 2000 y 2001.
Bloque
El bloque de multiplicacin (MUL) usa dos registros para almacenar el resultado y un registro
para cada operando. La siguiente figura ilustra el bloque de multiplicacin, con una lnea de
control que habilita la operacin.
Lenguajes de Programacin

Controladores Ramn Pgina 54
Programables Medina de 89



Bloque funcional de
multiplicacin
El controlador puede utilizar doble precisin para el bloque de multiplicacin, por lo cual
utilizara el doble de registros para operandos y resultado. Esto permitira que un nmero de
8 dgitos BCD pudiera ser multiplicado por otro nmero de 8 dgitos BCD produciendo un
resultado de hasta 16 dgitos BCD, almacenado en 4 registros. Algunos controladores usan
escalamiento, en los cuales el resultado de la multiplicacin es mantenido temporalmente en
dos registros y luego multiplicado por un valor de escalamiento (ver siguiente figura). Por
ejemplo, supongamos que el controlador maneja formato de 4 dgitos BCD y que los registros
1000 y 1001 contienen los valores 9.001 y 8.172 respectivamente, con un factor de
escalamiento de -5 (o 10 elevado a la -5). Si el controlador usa escalamiento, almacenar el
resultado (73.556.172) en dos registros temporales (7355 en uno y 6172 en el otro) y luego lo
multiplicar por el valor de escalamiento resultando 735,56173. Este resultado es
redondeado a 736 y almacenado en un nico registro. Conociendo que el resultado ha sido
escalado, el usuario puede determinar el valor actual.


Multiplicacin con bloque de
escalamiento
Lenguajes de Programacin

Controladores Ramn Pgina 55
Programables Medina de 89

Divisin
Escalera
La instruccin DIV encuentra el cociente de dos nmeros. Este cociente es almacenado en
dos registros y referenciado por una bobina de salida. El primer registro contiene la parte
entera del cociente y el segundo la fraccin decimal. Los operandos son recolectados
utilizando una instruccin GET.


Instruccin de divisin en
formato de escalera
Bloque
El bloque funcional DIV calcula el cociente de dos nmeros, almacenando el resultado en uno
o ms registros. El clculo de la divisin se inicia cuando el peldao de la lnea de control
tiene continuidad lgica. El registro 1000 (dividendo) es dividido por el contenido del registro
1001 (divisor) y el resultado es almacenado en dos registros contiguos.


Bloque funcional de divisin
En este caso, los registros destino son el 2000, que almacena la parte entera del resultado y
el 2001, que almacena la fraccin decimal. Dependiendo del controlador, el segundo registro
puede contener el residuo en lugar de la fraccin decimal. Algunos controladores permiten la
utilizacin de un factor de escalamiento especificado en el bloque de divisin. Este factor
permite la obtencin de fracciones como resultado.
Dependiendo del controlador que sea usado, un bloque de divisin puede tener tres posibles
salidas. Cuando est energizado, la salida del tope indica si la operacin fue exitosa, el
segundo refleja un desbordamiento o error (divisin por cero) y la de abajo seala si el
resultado tiene o no un residuo.
Lenguajes de Programacin

Controladores Ramn Pgina 56
Programables Medina de 89

Raz Cuadrada
El bloque de raz cuadrada (SQR) tiene generalmente dos o tres registros, uno que mantiene
el operando y uno (o dos) que contiene el resultado. Uno de los registros para el resultado
puede contener la parte entera y el otro la fraccin decimal. El procesador puede tambin
proporcionar la posibilidad de usar un factor de escalamiento. Cuando el peldao tiene
continuidad lgica, se ejecuta la operacin. La primera salida seala si la operacin fue o no
exitosa y la segunda, si existe una condicin de desbordamiento.

Bloque funcional de raz
cuadrada
La operacin de raz cuadrada es til en aplicaciones como el clculo del flujo a partir de la
presin diferencial en una placa orificio. En esta aplicacin, la rata de flujo (Q) es igual a una
constante (K) multiplicada por la raz cuadrada de la presin diferencial (Pa= Pout - Pin). Es
necesario calcular la raz cuadrada del valor analgico proveniente de la placa orificio y el
resultado, multiplicado por la constante K. El valor final proporciona el volumen por unidad
de tiempo.


Instruccin de raz cuadrada
aplicada a la medicin de
flujo con placa orificio
Lenguajes de Programacin

Controladores Ramn Pgina 57
Programables Medina de 89

Instrucciones de Manipulacin de Datos
Las instrucciones para manipulacin de datos son mejoras sobre el conjunto bsico de
instrucciones en escalera. Mientras que las instrucciones tipo rel estn limitadas al control
de salidas internas y externas basado en el estado de un bit especfico, las instrucciones de
manipulacin de datos permiten operaciones multibit. Estas instrucciones manejan
operaciones que tienen lugar en uno, dos o ms registros.


Instrucciones de
manipulacin de datos
Comparacin de Datos
Las instrucciones de comparacin de datos (CMP) como lo implica su nombre, comparan
valores almacenados en dos registros. Estas instrucciones son tiles cuando se verifica el
rango de datos de una variable. En algunos controladores, las instrucciones de comparacin
de datos son expresadas en formato bsico de escalera, mientras que en otros, son bloques
funcionales. En ambos formatos, proporcionan tres comparaciones bsicas: igual a, menor
que y mayor que. Con base en el resultado de la comparacin, el procesador puede encender
o apagar salidas y llevar a cabo otras operaciones.
Las instrucciones de comparacin que usan el formato bsico de escalera operan de manera
similar a como lo hacen las instrucciones aritmticas. Si el peldao tiene continuidad, la
Lenguajes de Programacin

Controladores Ramn Pgina 58
Programables Medina de 89

instruccin lleva a cabo la operacin; si la comparacin es VERDAD, la instruccin pasa
continuidad a la bobina de salida.


Comparaciones en formato
de escalera
Las instrucciones de comparacin tpicas son mayor que (>), menor que (<) e igual a (=),
adems de las combinaciones entre ellas. La instruccin GET accede al primer registro a ser
comparado. Las condiciones de la escalera son programadas antes de las instrucciones GET y
CMP.
En la figura anterior, si el contacto 10 cierra, el contenido del registro 600 es comparado con
el del registro 501; si son iguales, se enciende la bobina 100. Si se cierra el contacto 11, el
contenido del registro 601 es comparado con el contenido del registro 502; si es mayor o
igual, se enciende la salida 101.
El bloque funcional de comparacin (mostrado en la siguiente figura), compara el contenido
de dos registros, el 2000 y el 2001, para determinar en este caso si son iguales. El bloque
energiza la salida 100 cuando se ejecuta la comparacin y la 101, si la comparacin es
satisfecha. Algunos controladores pueden tener un bloque de comparacin con varias
salidas, que llevan a cabo mltiples comparaciones a la vez. Este tipo de bloques de
comparacin enciende la salida que corresponde al resultado obtenido.


Bloques para (a)
comparacin sencilla y (b)
comparacin mltiple
Algunos controladores ofrecen otra opcin de comparacin que usa un registro para
implementar un lmite (LIM). Esta instruccin compara el valor en tres registros para
determinar si el dato en el registro del medio, entra comprendido entre los valores
almacenados en los otros registros. Por ejemplo, el bloque funcional de lmite que se
muestra en la siguiente figura, compara los contenidos de los registros 1100, 1200 y 1300
para determinar si el valor en 1200 es menor o igual que el contenido en 1100 y si es mayor o
Lenguajes de Programacin

Controladores Ramn Pgina 59
Programables Medina de 89

igual que el contenido en el registro 1300. Si la comparacin es VERDAD, la instruccin
energiza la salida que indica que la comparacin fue satisfecha.


Bloque de comparacin que
usa funcin limitadora
En controladores que no disponen de la instruccin de comparacin, es posible comparar
valores utilizando un bloque de substraccin. En este caso, las bobinas de salida sealan si el
resultado de la comparacin es positivo (mayor que), cero (igual a) o negativo (menor que).
Ejemplo 11
La figura a continuacin muestra una seccin del programa de un ejemplo anterior en el que
una instruccin de suma (ADD) fue usada para llevar registro de los dos ingredientes que
estaban siendo aadidos al tanque reactor. Los dos primeros peldaos abren las vlvulas de
los ingredientes A y B, permitiendo que sean aadidos al tanque una vez que el comando
correspondiente se ha encendido (entrada 10). Se pide implementar un bloque de
instruccin que asegure que la vlvula se cierre cuando el ingrediente A alcance 500 galones
y el B alcance 750 galones.

Solucin
La siguiente figura ilustra el uso de instrucciones de comparacin que detectan cuando la
cantidad de cada ingrediente llega a su mximo. Las salidas de las instrucciones de
comparacin son utilizadas como permisivos para romper la continuidad de los circuitos de
Lenguajes de Programacin

Controladores Ramn Pgina 60
Programables Medina de 89

cada vlvula. Los valores de los flujos de cada ingrediente (registros 1000 y 1001) son
comparados con dos constantes (K).

Matriz Lgica
Un bloque funcional de matriz lgica implementa operaciones lgicas AND, OR, OR exclusivo,
NAND, NOR y NOT sobre dos o ms registros. La siguiente figura muestra una funcin tpica
de matriz lgica.


Bloque funcional de matriz
lgica
Una operacin de matriz lgica entre dos registros puede ser usada para enmascarar cierto
bit del dato original y pasar slo el estado de esos bits al registro de salida. La entrada de
control de habilitacin dispara la ejecucin del bloque de funcin de matriz lgica. El bloque
especifica el tipo de funcin lgica que ser ejecutada, mientras que el usuario especifica los
registros dentro del bloque. En la figura anterior, los registros 1000 y 1100 contienen los
operandos, mientras que el registro 2000 contiene el resultado. La longitud de la operacin
indica el nmero de palabras o registros adyacentes a cada registro.
Lenguajes de Programacin

Controladores Ramn Pgina 61
Programables Medina de 89



Bloque de funcin de matriz lgica utilizado
para enmascarar bits de salida
El bloque de funcin de matriz lgica tiene tres posibles salidas. Este energiza la salida
superior cuando la lnea de control est activa, energiza la salida del medio una vez que la
operacin ha sido completada y energiza la salida inferior si ocurri algn error. Como
ejemplo, examinemos la siguiente figura, que tiene una longitud de 8 y una funcin lgica
AND. Cuando la entrada de control habilita el bloque, la funcin lgica ejecutar la operacin
AND entre el contenido de los registros 1000 al 1007 con los de los registros 1100 al 1107.
Cada registro tpicamente puede almacenar 16 bits de datos. En este caso, el bloque de
funcin ejecutar una operacin AND de 128 bits, almacenando el resultado en los registros
2000 al 2007.
Algunos controladores tienen slo dos operandos (por ejemplo, R1000 y R1001). En ese caso,
ellos almacenan el resultado en uno de los registros que contiene uno de los operandos,
borrando el dato previamente almacenado. Se puede prevenir la prdida de la informacin
contenida en el registro sobrescrito, transfiriendo previamente su contenido a otro registro.
Lenguajes de Programacin

Controladores Ramn Pgina 62
Programables Medina de 89



Ejemplo de bloque de
funcin de matriz lgica
Conversin de Datos
La instruccin de conversin de datos cambia el contenido de un registro dado de un formato
a otro. Las instrucciones de conversin de datos tpicamente incluyen BCD a binario, binario a
BCD, absoluto, complemento e inversin.
Una instruccin de conversin de BCD a binario (BCD-BIN) convierte un dato de entrada en
formato BCD a formato binario. Esta conversin permite que el dato de entrada pueda ser
utilizado en operaciones matemticas. De manera similar, una instruccin binaria a BCD
convierte datos en formato binario a formato BCD, permitiendo su uso por dispositivos de
campo que operen en BCD.
La operacin del bloque de conversin de datos es bsicamente la misma, no importa cual
sea la direccin de la conversin. Cuando est habilitada la lnea de control, el bloque
convierte el contenido del primer registro (BCD o binario) a binario o BCD segn el tipo de
instruccin. Hecha la conversin, coloca el resultado en el segundo registro y energiza el
bloque de salida, una vez que la instruccin ha finalizado. Algunos controladores permiten
que varios registros sean convertidos al mismo tiempo, indicando la longitud de la
instruccin.
Lenguajes de Programacin

Controladores Ramn Pgina 63
Programables Medina de 89



Conversin de formato BCD a
binario


Conversin de binario a
formato BCD


Conversin de binario a
formato BCD en mltiples
registros
Las operaciones de valor absoluto, complemento e inversin normalmente se ejecutan sobre
un nico registro. En otras palabras, la operacin almacena el resultado en el mismo registro
donde se encuentra el operando.
Lenguajes de Programacin

Controladores Ramn Pgina 64
Programables Medina de 89

Un bloque funcional de valor absoluto (ABS) calcula el valor absoluto del valor de entrada. Si
el operando es -5876, el resultado ser 5876. Un bloque funcional de complemento (COMPL)
cambia el signo del valor original. Si el valor de entrada es 5876, el resultado ser -5876.


Bloque funcional para clculo
de valor absoluto,
complemento e inversin
La funcin de inversin (INV) invierte el estado de los bits del operando de entrada. Si el valor
en el registro de entrada es 0000 1111 0000 1111, el resultado ser 1111 0000 1111 0000 y
se encender el bloque de salida cuando la instruccin se haya completado.
Establecer Parmetros Constantes
Algunas veces es necesario almacenar una constante en un registro. Por esta razn, algunos
controladores proporcionan una instruccin que permite establecer parmetros constantes
(SET). Cuando se habilita este bloque de funcin, almacena un valor determinado en el
registro especificado, y enciende la salida una vez que la instruccin ha sido completada. Esta
instruccin es muy til para poner los registros de E/S a cero durante la inicializacin.


Bloque funcional para
establecer constantes
Incremento
La instruccin INCR incrementa el contenido de un registro en uno. La instruccin es til, por
ejemplo, cuando se lleva registro de un nmero de eventos o de veces que se ejecuta una
rutina. El bloque de incremento puede ser usado con un contador que tenga un valor
Lenguajes de Programacin

Controladores Ramn Pgina 65
Programables Medina de 89

prefijado grande para llevar el conteo de cuntas veces se ha alcanzado el valor mximo del
contador.


Bloque funcional incremento
Rotacin y Desplazamiento
Una instruccin de desplazamiento (SHIFT) mueve los bits de un registro de derecha a
izquierda o de izquierda a derecha segn el tipo utilizado. El bloque de desplazamiento utiliza
variables bit-in y bit-out para especificar la ubicacin del bit cuyo valor ser desplazado. La
variable bit-in es el valor que ser aadido al registro, mientras que la variable bit-out es el
valor que est siendo eliminado del registro. Estos bits pueden estar localizados en E/S reales
que pueden ser usados como salida o entrada de datos de una operacin de desplazamiento.


Ejecucin de un
desplazamiento a la derecha
Una instruccin de rotacin (ROT), de manera similar a como lo hace la instruccin de
desplazamiento, mueve la informacin de derecha a izquierda o de izquierda a derecha, pero
en lugar de eliminar el dato que sale fuera del registro, este se convierte en el dato que
ingresa por el extremo contrario.
Lenguajes de Programacin

Controladores Ramn Pgina 66
Programables Medina de 89



Ejecucin de rotacin a la
derecha
La siguiente figura ilustra bloques funcionales para instrucciones de rotacin y
desplazamiento. La lnea de control habilita la operacin del bloque. Algunos bloques
funcionales tienen lneas derecha e izquierda que determinan la direccin de la rotacin o
desplazamiento. El bloque de rotacin o desplazamiento puede tener varias variables
internadas, dependiendo del modelo del controlador.


Bloques funcionales de (a)
desplazamiento y (b) rotacin
En general el primer registro contiene el dato a ser desplazado o rotado. Si se especifica
longitud, el primer registro especifica la posicin de arranque. Por ejemplo, si la longitud es 3
en una instruccin de desplazamiento hacia la derecha, el bloque operar sobre un total de
48 bits. EL nmero de bits indica el nmero de posiciones que se desplazar o rotar de una
vez, cuando se la lnea de control se habilite. Las instrucciones de rotacin y desplazamiento
son tiles cuando el controlador deba llevar registro del estado de las entradas a lo largo de
una banda transportadora.


Ejemplo de una instruccin
de desplazamiento a la
derecha
Lenguajes de Programacin

Controladores Ramn Pgina 67
Programables Medina de 89

Examinar Bit
El bloque funcional examinar bit (XB) verifica el estado (ENCENDIDO o APAGADO) de un
punto, bit o localidad de memoria. Este tipo de instruccin es usada cuando se emplean
'banderas' en un programa de control. Una bandera es un bit que es marcado para su
posterior evaluacin. En una instruccin examinar ENCENDIDO (XBON), el bloque verifica que
el bit especificado est ENCENDIDO. Si es as, el bloque energiza la salida. De manera similar,
la instruccin examinar APAGADO, verifica que el bit especificado est APAGADO.


Bloque funcional de
evaluacin de bit
Ejemplo 12
Una aplicacin de control est a cargo del manejo de un proceso por lotes donde la lectura
de una entrada de temperatura es crtica para este. El transductor de temperatura del
proceso est conectado a un mdulo de entradas analgicas de 4 canales de 0 a 10VDC con
12 bits de resolucin. Los 4 bits restantes de cada canal son usados como indicador de estado
del mdulo. Ilustre cmo verificar la presencia de una falla en una entrada analgica que
mida este crtico valor de temperatura.
Solucin
Verificando el bit 17 del registro 1000 por una condicin de APAGADO, es posible determinar
si el canal ha fallado. La siguiente figura muestra cmo una instruccin XBOFF consigue hacer
esta prueba. Cuando el bit 17 est APAGADO, se sabe que ha ocurrido una falla; si est
ENCENDIDO, el canal est bien.
Lenguajes de Programacin

Controladores Ramn Pgina 68
Programables Medina de 89


La instruccin que maneja la lgica de control es un contacto que se cierra cuando se lee la
seal analgica. Para que la instruccin est siempre operativa, an cuando no se est
leyendo valor alguno, la lnea de habilitacin debe estar programada sin condicionales.

Instrucciones de Transferencia de Datos
Las instrucciones de transferencia de datos mueven (o transfieren) datos numricos dentro
del controlador en registros individuales o bloques (grupos de registros). Estas instrucciones
pueden mover informacin hacia o desde cualquier lugar en la tabla de datos, con excepcin
de las reas restringidas. Un uso tpico de estas instrucciones lo constituye al traslado de
constantes o valores preestablecidos hacia contadores y temporizadores, la lectura de
entradas analgicas y mdulos de entrada multibit y la transferencia de datos hacia mdulos
de salida.
Al igual que con otras instrucciones, estas pueden ser representadas en formato de escalera
y de bloque, aunque el segundo es el ms comn. Las funciones en formato de escalera
Lenguajes de Programacin

Controladores Ramn Pgina 69
Programables Medina de 89

usadas para transferir informacin son GET y PUT, las cuales son utilizadas para implementar
funciones aritmticas y de comparacin de datos. Una instruccin GET accede a la
informacin que se encuentra en un registro en particular, mientras que PUT sirve para
almacenar valores.


Instrucciones GET y PUT
utilizadas en un diagrama de
escalera
El grupo de instrucciones de transferencia de datos constituye el conjunto de funciones ms
til de los controladores 'mejorados'. Los nombres de las instrucciones para transferencia de
datos puede que difieran de un controlador a otro, aunque ellos implementen bsicamente
las mismas funciones.


Instrucciones de
transferencia de datos
Mover
Esta instruccin (MOV) transfiere informacin de una localidad a otra, siendo el destino un
registro de un bit. La figura a continuacin muestra la funcin mover bit (MOVB) y mover
registro (MOVR). Algunos controladores ofrecen instrucciones para mover bytes.
Lenguajes de Programacin

Controladores Ramn Pgina 70
Programables Medina de 89



Bloques funcionales para (a)
mover un bit y (b) mover
registros
Algunos controladores ejecutan la funcin mover hacia localidades especiales en la tabla de
datos. En este caso, el controlador convierte automticamente la informacin copiado al
formato requerido por la ubicacin destino. Por ejemplo, un registro o palabra puede
contener un valor en formato BCD, que al ser transferido a otro registro o palabra sea
almacenado en formato binario, ejecutndose una conversin BCD-binario.
Otro tipo de instruccin es mover mscara (MOVM), que enmascara ciertos bits dentro del
registro. La siguiente figura muestra este tipo de instruccin.


Bloques funcionales para
mover mscara
El bloque mover mscara transfiere informacin en el registro 1000 al 1100, con la excepcin
de los bits especificados como 0 en la mscara del registro 2000.
Otra instruccin de transferencia disponible en algunos controladores es mover estado. Esta
funcin transfiere el estado de los mdulos de E/S a registros de almacenamiento. Luego
puede ser enmascarada, comparada o evaluada para determinar el estado de fallas en el
sistema o en mdulos de E/S. Con esta informacin, el controlador puede tomar acciones
correctivas a travs del programa de control.
Mover Bloque
La instruccin mover bloque (MOVBK) copia un grupo de registros de un lugar a otro. La
longitud de los bloques es generalmente especificada por el usuario. La siguiente figura
muestra un ejemplo de esta instruccin.
Lenguajes de Programacin

Controladores Ramn Pgina 71
Programables Medina de 89



Bloque funcional para mover
grupos de registros
Cuando se energiza, la entrada de control dispara la ejecucin del bloque. Este entonces
transfiere informacin desde las localidades 1000 a la 1023 hasta 2000 a la 2003
respectivamente. Los datos en los registros 1000 al 1023 quedan inalterados. En algunos
controladores, el usuario puede especificar cuantas localidades pueden ser transferidas
durante un ciclo de ejecucin.
Mover Tabla
La instruccin mover tabla transfiere informacin desde un bloque o tabla hasta un registro o
palabra en la memoria. Existen dos tipos de instrucciones de movimiento de tabla: tabla a
registro (TABLE-REG) y registro a tabla (REG- TABLE). La caractersticas principal de esta
instruccin es el uso de un registro apuntador, que especifica la posicin dentro de la tabla
donde el registro ser almacenado. La siguiente figura muestra un ejemplo de esta
instruccin.
Lenguajes de Programacin

Controladores Ramn Pgina 72
Programables Medina de 89



Bloques funcionales mara
mover un valor de (a) una
tabla a un registro y (b) de un
registro a una tabla
Una transicin de APAGADO a ENCENDIDO en la entrada de control habilita la instruccin,
que incrementa el contenido del registro apuntador cada vez que la entrada del medio (INCR)
pasa de APAGADO a ENCENDIDO. La entrada inferior reinicializa el apuntador a cero
(apuntando entonces al tope de la tabla). Si la informacin debe ser recuperada o
almacenada en una posicin especfica de la tabla, el registro apuntador puede ser
configurado con el valor apropiado para apuntar a la posicin especificada. En la figura
anterior la longitud especifica el nmero de posiciones en la tabla que sern transferidos (8
en el ejemplo). El bloque encender la salida superior luego de haber transferido los 8
registros. Energizar la salida del medio cuando el registro apuntador alcance la posicin final
de la tabla.
Aplicaciones que usen esta instruccin incluyen carga de nueva informacin en una tabla,
almacenamiento de informacin de entrada proveniente de mdulos especiales, y la entrada
de informacin de errores proveniente de otros procesos controlados. Tambin es til
cuando se cambian parmetros en temporizadores y contadores y cuando se manejan
simultneamente grupos de salidas a travs de registros de E/S. Una instruccin de
movimiento de tabla puede tambin ser usada cuando se buscan valores en una tabla para
comparacin, interpolacin lineal, etc.
Lenguajes de Programacin

Controladores Ramn Pgina 73
Programables Medina de 89

Ejemplo 12
Un proceso por lotes opera en turnos de 8 horas cada, donde son procesados lotes de
diferentes tamaos que son procesados a una velocidad aproximada de un lote por hora. Se
pide implementar instrucciones para almacenar la informacin del lote, incluyendo el
tamao del lote en galones y la hora del da en que el lote fue finalizado. El registro 1000
mantiene el valor de lotes totales mientras que el 1500 almacena la hora del da (en horas y
minutos) en formato BCD (HHMM).
Solucin
La siguiente figura ilustra una instruccin de transferencia registro a tabla que mover las
salidas de los registros 1000 y 1500, usando el mismo registro apuntador para almacenar la
informacin en dos tablas simultneamente. Esto asegura que el registro apuntador seale a
una cantidad de lote que corresponde a la hora en que este finalizar. La seal lote finalizado
(Batch Done), que tal vez venga de la apertura de la vlvula de descarga, dispara la ejecucin
de la instruccin de transferencia. Una vez que el registro es almacenado en la tabla, la
instruccin incrementa el apuntador. El apuntador es incrementado en slo uno de los
bloques para evitar doble incremento. El incremento ocurre luego de que ambos bloques
funcionales han sido ejecutados para asegurar que la informacin sea almacenado en la
misma posicin relativa dentro de cada tabla. En este caso la seal Batch Done es un
contacto transicional, de tal manera que la instruccin registro a tabla slo transfiera el
registro una vez a la posicin apropiada dentro de la tabla.

Lenguajes de Programacin

Controladores Ramn Pgina 74
Programables Medina de 89


Transferencia de Bloque - E/S
Algunos controladores proporcionan instrucciones para transferencia de bloques (BXFER),
que son principalmente usados para transferir bloques de informacin con mdulos de E/S
especiales. Los dos tipos bsicos de este tipo de instrucciones son block transfer in y block
transfer out. La siguiente figura muestra un ejemplo de esta instruccin.


Instruccin para
transferencia de bloques
La direccin del mdulo para la transferencia de datos se especifica de manera explcita
usando los parmetros chasis (rack) y ranura (slot). En la figura siguiente, se leer el
contenido de 8 canales del mdulo inteligente ubicado en el la ranura 3 del chasis 1, cuya
informacin ser almacenada en los registros 1000 al 1007.
Lenguajes de Programacin

Controladores Ramn Pgina 75
Programables Medina de 89



Instruccin para
transferencia de bloques
La entrada de control, cuando es habilitada, ejecuta la instruccin de transferencia. Durante
la ejecucin de esta instruccin, la informacin es almacenada en la posicin de memoria o
registros especificados. La longitud del bloque especifica cuntas posiciones son necesarias
para almacenar los datos. Por ejemplo, la informacin proveniente de un mdulo de
entradas analgicas con cuatro canales, puede ser leda toda de una sola vez, si la longitud
especificada es 4. Una instruccin block transfer out funciona de manera similar, con la
direccin del mdulo de salida especificando el destino de la informacin a ser transferida. La
salida superior del bloque es la encargada de indicar la completacin de la instruccin (al
estar ENCENDIDA).
Transferencia ASCII
Las instrucciones de transferencia ASCII (ASCII XFER) transmiten informacin en formato
ASCII entre el controlador y un dispositivo perifrico. El bloque funcional opera en conjunto
con el mdulo de comunicacin ASCII. La comunicacin ASCII puede ocurrir de dos maneras:
leer informacin desde un perifrico o escribir datos en l. Este bloque funcional es usado
ampliamente en aplicaciones donde se requiere generacin de reportes. La siguiente figura
muestra un bloque funcional ASCII.
Lenguajes de Programacin

Controladores Ramn Pgina 76
Programables Medina de 89



Bloque funcional para
transferencia ASCII
La entrada de control activa la ejecucin de la instruccin. Cuando se lee informacin, la
instruccin permite que mdulos especiales de E/S lleven a cabo la operacin. El procesador
entonces lee la informacin a partir de estos mdulos, y la almacena en localidades
especiales de la memoria (desde el primer registro hasta el ltimo, tal y como se especifique
por el parmetro de longitud). Las direcciones de E/S en el bloque especifica la localizacin
del mdulo. Cuando se escribe informacin, el procesador transfiere datos desde la posicin
donde estn almacenados hasta la direccin donde se ubica el mdulo.
Algunas instrucciones de transferencia ASCII utilizan registros apuntadores para acceder a
posiciones especficas en una tabla (por ejemplo, para decodificar un caracter de datos
especfico en una tabla de datos). Otras instrucciones ASCII permiten que el usuario
especifique cuntos bytes o caracteres son transmitidos durante un ciclo de ejecucin. La
velocidad de transmisin es una funcin del ciclo de ejecucin, que a su vez depende del
nmero de dispositivos ASCII que estn activos en un momento dado. Una instruccin ASCII
asume que se han configurado los valores apropiados de rata de transmisin, bit de arranque
y parada y de paridad en el hardware del mdulo de E/S.
Transferencia de Cola - FIFO
La instruccin de transferencia de cola (primero en entrar - primero en salir o FIFO) construye
una tabla o cola donde se almacena la informacin. La funcin bsica de esta operacin es
similar a la de un registro de desplazamiento, en la que una palabra (16 bits) es desplazada
dentro de la cola, cada vez que se ejecuta la instruccin. La informacin siempre es
desplazada en el orden en que fue recibida: el primer dato que ingres ser el primero en
salir. La figura siguiente muestra un ejemplo de esta instruccin.
Lenguajes de Programacin

Controladores Ramn Pgina 77
Programables Medina de 89



Bloque funcional FIFO
Una operacin FIFO consta de dos partes: una instruccin de entrada FIFO (FIFO IN) y otra de
salida (FIFO OUT). La instruccin FIFO IN carga la cola mientras que FIFO OUT la descarga. Las
instrucciones FIFO son tiles para almacenar informacin (recuperndola luego) de
naturaleza temporal, en la medida en que vaya estando disponible. Una aplicacin tpica es el
almacenamiento de recuperacin de datos que estn sincronizados con el movimiento
externo de partes en una banda transportadora.
Una transicin APAGADO-ENCENDIDO en la lnea de control se usa para iniciar el bloque
FIFO. Algunos bloques puede disponer de una lnea de inicializar para borrar la cola. En una
instruccin FIFO, el registro de entrada contiene el valor que va a ser ingresado en la cola. La
informacin es colocada en la cola cuando se ENCIENDE la lnea de control. La informacin de
la ltima posicin de la cola es colocada en el registro de salida. La longitud del FIFO
especifica el tamao de la cola.
La instruccin FIFO es muy til cuando se trata de mantener valores obtenidos de un proceso
en una 'ventana de tiempo en movimiento'. Por ejemplo, en la siguiente figura se muestra un
perfil de temperatura en funcin del tiempo. Si se desea mantener una ventana de tiempo
desde t0 hasta t1, los valores pueden ser almacenados en una cola. De esta manera, la cola
mantendr siempre los ltimos valores (desde t0 hasta t1).
Lenguajes de Programacin

Controladores Ramn Pgina 78
Programables Medina de 89



Perfil de temperatura
Ordenamiento
El bloque de funcin de ordenamiento (SORT) permite ordenar un bloque de registros, en
orden ascendente o descendente, de acuerdo a su contenido. La siguiente figura muestra un
bloque de ordenamiento en el cual el cierre del contacto 10, habilita la funcin. El bloque
ordena el contenido de los registros 1000 al 1017 en orden ascendente y almacena el
resultado en los registros 2000 al 2017. Este tipo de funcin es muy til cuando se calculan
estadsticos descriptivos tales como la mediana, operaciones stas que requieren que la
muestra est ordenada.

Bloque funcional para
ordenamiento ascendente
Instrucciones para Funciones Especiales
Estas instrucciones, como su nombre lo implica, corresponde a operaciones que no son
incluidas en ninguno de los otros grupos. Estas funciones tpicamente estn disponibles en
controladores de medianos a grandes.
Lenguajes de Programacin

Controladores Ramn Pgina 79
Programables Medina de 89


Funciones especiales
Secuenciadores
Un bloque secuenciador (SEQ) es una potente instruccin que proporciona un mecanismo
para manipular un grupo de datos (secuencialmente) con base a una tabla de datos
predefinida.

Tabla secuenciadora
La siguiente figura muestra un tpico bloque funcional secuenciador. La entrada de control se
encarga de iniciar la ejecucin del bloque, ocasionando que el contenido de la tabla de
secuencias sea transferida a salidas de manera secuencial. El registro apuntador seala al
paso que ser procesado. Cada vez que se energiza la entrada de control, el apuntador es
incrementado automticamente, apuntando al siguiente paso de la tabla. Dependiendo del
tipo de controlador, la entrada de control puede ser manipulada por eventos o por tiempo.
La lnea de inicializacin del apuntador puede hacer que este seale al primer paso en caso
de ser necesario. La longitud y ancho de la secuencia especifican cuantos pasos y el nmero
de bits contenidos en la tabla (respectivamente). Cuando se habilita la instruccin
secuenciadora, se energiza la primera salida del bloque. La segunda salida seala el fin de la
tabla del secuenciador.
Lenguajes de Programacin

Controladores Ramn Pgina 80
Programables Medina de 89


Bloque funcional
secuenciador
Ejemplo 13
Una aplicacin exigen la implementacin de 10 pasos que deben ser ejecutados
secuencialmente. Con el propsito de detectar fallas en la secuencia, el cdigo del paso que
est siendo ejecutado, debe ser mostrado en una pantalla de visualizacin. Se pide
implementar un bloque de instruccin que satisfaga esta aplicacin.

Solucin
La siguiente figura muestra una manera de mostrar el cdigo del paso utilizando un registro
salida de 16 bits, conectado a un panel de visualizacin de 4 dgitos. El secuenciador
transfiere los cdigos de la tabla al registro de salida. El registro de salida es configurada de
tal manera que haga referencia al interface de salida (por ejemplo chasis 0, ranura 7, palabra
7). Cada vez que la seal Start of Process Step va de APAGADO a ENCENDIDO, la salida del
secuenciador enva la informacin al indicador.
Lenguajes de Programacin

Controladores Ramn Pgina 81
Programables Medina de 89



Diagnstico
El bloque de diagnstico (DIAG) compara dos bloques de memoria, uno que contiene las
condiciones de entrada actuales y que contiene los valores de referencia. La instruccin
compara esos bloques bit por bit para determinar si son idnticos. Si se presenta alguna
diferencia, la instruccin almacena el nmero y el estado del bit en un registro de
almacenamiento. Las instrucciones de diagnstico son tiles para identificar
malfuncionamiento de las mquinas.
La siguiente figura ilustra un bloque de diagnstico. La lnea de control, al estar energizada,
inicia el bloque de funcin. El bloque luego compara el contenido de los registros 1000 al
1007 con el contenido de los ubicados del 200 al 2007.
Lenguajes de Programacin

Controladores Ramn Pgina 82
Programables Medina de 89



Bloque funcional para
diagnstico
Si encuentra alguna diferencia, almacena la informacin en el registro 3000 sin alterar otras
posiciones. Cuando finaliza la instruccin, se energiza la salida superior. La instruccin
energiza la segunda salida, slo cuando encuentra alguna diferencia.
PID
Los controladores capaces de ejecutar estrategias de control analgicos, sern los que
dispongan de bloques funcionales PID. El usuario especifica los parmetros asociados al
algoritmo, para el proceso de manera apropiada. La siguiente figura muestra un ejemplo de
este tipo de instruccin.


Bloque funcional PID
La entrada de control, al estar energizada, inicia la operacin automtica del bloque PID. La
entrada inferior, al estar energizada, determina si las variables del PID son monitoreadas
pero no procesadas. Si el bloque no est activado (por ejemplo en modo manual), el
controlador puede monitorear las variables si la lnea correspondiente est habilitada. El
Lenguajes de Programacin

Controladores Ramn Pgina 83
Programables Medina de 89

usuario especifica el registro correspondiente a la variable de entrada (IVR) y el registro de la
variable de salida (OVR), que estarn asociados a localidades en mdulos analgicos (entrada
y salida). Los registros proporcional (PR), integral (IR) y derivativo (DR) contienen los valores
de ganancia que deben ser especificados para controlar el proceso. El registro SPR (set point
register) contiene el valor de referencia para el proceso. Dependiendo del controlador, el
usuario puede tambin especificar otros registros tales como tiempo muerto, lmites alto y
bajo y velocidad de actualizacin. La salida superior del bloque PID indica que el lazo de
control est activo. Otras salidas pueden indicar alarmas.
Algunos controladores proporcionan capacidades de control PID sin bloques PID. En este
caso, el controlador usa un mdulo especial que contiene todos los parmetros necesarios.
Una instruccin de salida, como por ejemplo un bloque de transferencia de salida o de
movimiento de dato, transfiere los parmetros al mdulo durante el proceso de inicializacin
del programa. El programa de control puede modificar la informacin en este mdulo, en
caso de ser necesario.
Instrucciones de Comunicacin en Red
Las redes de rea local (LAN) proporcionan canales de comunicacin entre computadores
independientes (referidos como nodos). Debido a que conectan computadores distintos, las
LAN han creado la necesidad de instrucciones que permitan comunicacin e intercambio de
informacin entre los controladores conectados a la red. Por esta razn los fabricantes de
controladores ofrecen instrucciones para comunicacin a travs de la red, que transfieren
datos relacionados con el estado de contactos, bobinas y registros. Estas instrucciones de red
son normalmente especficas a ciertas familias de controladores.
La siguiente tabla muestra las instrucciones ms comunes utilizadas en un entorno de red de
controladores. Estas instrucciones son fciles de implementar; sin embargo, el programador
deber ajustarse a las reglas de la red. Adicionalmente, el programador deber asignar
registros y organizar el programa de tal manera que eviten confusiones en la red.
Lenguajes de Programacin

Controladores Ramn Pgina 84
Programables Medina de 89



Instrucciones para
comunicacin a travs de la
red
Cuando el controlador ejecuta una instruccin de comunicacin a travs de la red, este enva
la informacin al dispositivo correspondiente para procesar la transmisin. El formato de la
instruccin puede variar dependiendo del controlador. En algunos casos el controlador usa
instrucciones de transferencia de datos para acceder a la red mientras que en otros, emplea
instrucciones especficas. Por lo tanto, las instrucciones que se presentan aqu representan
una gua de referencia para ilustrar la implementacin.
La organizacin de una red depende de cmo sta est configurada. En algunos
controladores, la interface de red est incluida en el procesador principal, mientras que en
otros es un mdulo independiente. Sin importar el formato, ambos interfaces llevan a cabo la
misma funcin: comunicarse con la red. En los casos en que la interface de red est instalada
en las ranuras de E/S, el controlador provee uno de varios mecanismos para configurar la
red. Una solucin es especificar el mdulo de comunicaciones durante el proceso de
configuracin del sistema. Algunos controladores reconocen automticamente la presencia y
ubicacin del mdulo de comunicaciones. En otros casos, una instruccin de acceso a la red
permite identificar la localizacin del mdulo de red.
Los contactos y bobinas de salida en una red pueden ser referenciados como salidas y
contactos de red. Las salidas de red son salidas internas que estn tpicamente ubicadas en
posiciones especiales dentro de la tabla de datos, junto con otros registros asociados a la red.
Esos elementos pueden ser parte del rea de almacenamiento interno, pero con capacidades
adicionales relacionadas con la red. Por ejemplo (como se ilustra en la siguiente figura), si un
controlador tiene 512 posibles salidas internas, 64 de ellas pudieran ser usadas como salidas
de red. Asimismo, si dispone de 128 registros de almacenamiento, 32 de ellos podran ser
usados como registros de red. Esas direcciones asociadas a la red sern enviadas
automticamente si la red est activa.
Lenguajes de Programacin

Controladores Ramn Pgina 85
Programables Medina de 89



Mapa de direcciones
compatibles con red con
todos los nmeros en
notacin octal
Las instrucciones presentadas en esta seccin suponen que el controlador especifica la
ranura del mdulo de red durante la configuracin del sistema.
Salida de Red
Una instruccin de salida de red, como se muestra en la siguiente figura, es usada en
conjunto con un contacto de red para transferir la informacin de un bit de estado del
controlador a la red.


Operacin de una salida de
red y un contacto de red
Si existe continuidad lgica, la salida de red encender la direccin referenciada. Enviar la
informacin acerca del estado de la direccin especificada a la interface de red para su
transmisin. Dependiendo del controlador, la direccin referenciada debe ser una bobina de
red vlida. Luego de la transmisin, el estado de la salida est disponible para todos los
nodos en la red.
Lenguajes de Programacin

Controladores Ramn Pgina 86
Programables Medina de 89

Contacto de Red
Un contacto de red es una instruccin que captura la informacin de estado de una salida de
red. La direccin de referencia del contacto de red debe ser el mismo que de la salida de red
activa; de lo contrario, el contacto nunca ser evaluado. La referencia debe ser una direccin
vlida.
La figura anterior ilustra la operacin de una instruccin de contacto de red usada en
conjunto con una instruccin de salida de red. En esta instruccin, el procesador obtiene
informacin de la red a medida que lee el buffer de estado del mdulo de red, como si fuera
una pequea tabla de datos. Si la salida de red referenciada tiene estado lgico 1, el
controlador ejecutar la evaluacin de contactos abiertos o cerrados para proporcionar o
remover continuidad. Esta evaluacin depender de cmo fue configurado el contacto de red
(normalmente abierto o cerrado).
Enviar a la Red
La instruccin enviar a la red (NET SEND) enva la informacin de un registro a la red local.
Esta instruccin es habilitada a travs de la lnea de control. Puede incluir dos salidas para
indicar que la operacin fue ejecutada y que no se detect ningn error.
La siguiente figura ilustra una tpica instruccin de envo a la red. Si se especifica una longitud
de ms de uno, la red puede recibir ms de un registro (transmitido). Los registros a ser
transmitidos deben ser consecutivos. La instruccin de envo a la red operan normalmente
en conjunto con un de recepcin de la red.


Instruccin (a) enviar a la red
y (b) recibir de la red
Lenguajes de Programacin

Controladores Ramn Pgina 87
Programables Medina de 89

Recibir de la Red
La instruccin recibir de la red (NET RCV) captura informacin de registros disponible en la
red y la almacena en la tabla de datos del controlador. El usuario debe asegurarse que la
direccin de los registros solicitados est correctamente referenciada en la instruccin. Por
ejemplo, si una instruccin NET SEND usa los registros 400 al 403, el controlador que recibe
los datos debe hacer referencia a los mismos registros en la instruccin NET RCV.
La figura anterior ilustra el uso de instrucciones de recepcin de la red. Una vez que la
informacin de la red es capturada, esta es almacenada en los registros destino. Las salidas
disponibles sealan la completacin de la operacin y la presencia o no de errores.
Enviar Nodo
La instruccin enviar nodo (SEND NODE) opera de una manera ms directa que lo que lo hace
la instruccin NET SEND. En este caso, la informacin es transmitida a un nodo (controlador)
especfico en la red. Esencialmente, la instruccin SEND NODE implementa una funcin
copiar, donde varios registros del nodo fuente, son copiados en el nodo destino.
La siguiente figura ilustra la instruccin SEND NODE. La presencia de continuidad lgica en la
lnea de control, habilita la operacin del bloque, que enva el contenido de los registros al
nodo especificado como destino. El bloque almacena la informacin en los registros destino.
Al finalizar enciende la primera salida, y en caso de error, enciende la segunda.


Operacin de un bloque
funcional SEND NODE
Lenguajes de Programacin

Controladores Ramn Pgina 88
Programables Medina de 89

Obtener Nodo
La instruccin GET NODE recupera informacin de registros a partir de la informacin vertida
en la red por otro controlador. Esta instruccin esencialmente copia la informacin del nodo
origen al nodo destino.
La siguiente figura ilustra el uso de una instruccin GET NODE. Cuando el bloque est
habilitado, solicita el contenido de los registros especificados y almacena la informacin de
los registros destino del controlador que ejecuta la funcin. La primera salida se energiza
como seal de que la instruccin fue completada. La segunda se energiza si ocurre algn
problema de comunicacin durante la transmisin de los datos.

Operacin de un bloque
funcional GET NODE
Nemotcnicos Booleanos
Los nemotcnicos booleanos constituyen un lenguaje de programacin de controladores
basado en operadores booleanos tales como AND, OR y NOT. Una instruccin nemotcnica
escrita en una forma abreviada que incluye de 3 a 4 letras del nombre de la correspondiente
operacin. La siguiente tabla muestra un conjunto de instrucciones booleanas tpicas y sus
smbolos en diagrama de escalera equivalentes. El lenguaje booleano es usado para ingresar
lgica en la memoria del controlador. Sin embargo, muchos controladores muestran la
instruccin ingresada como diagrama de escalera.
Lenguajes de Programacin

Controladores Ramn Pgina 89
Programables Medina de 89



Instrucciones booleanas y su
equivalente en diagrama de
escalera
Los operadores booleanos de salida mejorados, que llevan a cabo funciones de control
adicionales, son el resultado de actualizaciones del conjunto de instrucciones. La siguiente
figura muestra un programa en lenguaje booleano con su diagrama de escalera equivalente.


Programa en lenguaje
booleano y su representacin
en diagrama de escalera

También podría gustarte