You are on page 1of 47

Calculo de Tiempo transcurrido entre dos

eventos autómata FATEK


Como ejemplo de aplicación de este concepto, podemos utilizar el siguiente programa para calcular la
velocidad de paso de objetos mediante una simple barrera fotoeléctrica. También podemos establecer
la diferenciación de objetos de distinto tamaño desplazándose por una cinta transportadora, para su
posterior discriminación.

Básicamente, se trata de calcular el tiempo que tarda un determinado objeto, en atravesar una barrera
fotoeléctrica. Es decir, el tiempo que esa barrera permanece a (ON). En el caso de que estos objetos
sean de idénticas dimensiones, podríamos determinar fácilmente la velocidad de trabajo real del
accionamiento en sí. Por ejemplo, detección de velocidad de paso de objetos en una línea de
envasado, cálculo de la velocidad en una polea mediante la detección de sus radios en movimiento,
etc.

Para obtener unos resultados que podamos considerar de alta precisión, es imprescindible el uso de
interrupciones en los cálculos a realizar. Por lo tanto, comenzaremos configurando la entrada de señal
(Entrada de fotocélula), como una entrada de interrupción.

En nuestro ejemplo, utilizaremos (X0) como podemos observar en la siguiente imagen. Esta
configuración, (Both Edge), generará dos interrupciones, una en el flanco (+) (X0+I), y otra en el (-)
(X0-I).
A continuación, vamos a configurar el temporizador de alta velocidad (HST0), como temporizador
cíclico. Es decir, su valor será incrementado en (1) cada (0,1mS) de forma constante y comenzará
desde (0) nuevamente, cuando rebase su valor máximo. (32 bits). Para su funcionamiento como
temporizador cíclico, cargaremos (0) en su (PV) mediante el uso de la (FUN-93) en el programa
principal.

Configuración de (HSC0) como temporizador (HST0).

Configuración de (HST0) como temporizador cíclico. (Programa principal).


Básicamente, el funcionamiento del sistema, consiste en leer el valor (CV) del temporizador cíclico, y
guardarlo en el registro (R0), mediante la interrupción (X0+I) que se produce en el flanco positivo de la
entrada (X0).

Para obtener el tiempo que ha permanecido activa la entrada (X0), necesitamos calcular la diferencia
entre el valor de (CV) en el instante del flanco positivo y el valor del mismo al producirse el flanco
negativo. Para ello, utilizaremos la interrupción (X0-I), en la que realizamos la lectura del (CV) del
temporizador nuevamente, y guardamos el dato esta vez en (R2). Calculando la diferencia entre (R2)
y (R0), obtenemos el tiempo que ha permanecido activa la entrada (X0) con una resolución de (0,1
mS).
El resultado obtenido en (R4), será actualizado cada vez que se ejecute esta interrupción y nos ofrece
un valor en tiempo real que podremos utilizar por ejemplo, para calcular la velocidad de rotación en
poleas radiales, la discriminación de objetos en función de su longitud, la velocidad de paso en
objetos de idénticas dimensiones, etc.

NOTA: Para una mayor comprensión de los contenidos mostrados en este ejemplo es recomendable
la atenta lectura de los capítulos (9 y10).
FB-PLC CONTADORES DE ALTA VELOCIDAD. (HSC)

La frecuencia máxima que un contador ordinario de PLC puede alcanzar, es tan solo de decenas de
Hz, dependiendo en gran medida del ciclo de scan. Si la frecuencia de entrada es superior a esta, es
necesario utilizar contadores de alta velocidad (HSC), de lo contrario tendríamos perdidas de pulsos
con el consecuente error. Por lo general, existen dos tipos de (HSC) implementados en el PLC. El
hardware especial ó (HHSC), y el software ó (SHSC) encargado de interrumpir la CPU cuando su
estado cambia.

La serie FB-PLC, proporciona hasta cuatro contadores de alta velocidad (HHSC), con sus
correspondientes (SHSC). Todos ellos, son contadores de 32-bit de alta velocidad. Como se muestra
en la tabla siguiente, cada contador dispone de una serie de modalidades distintas de funcionamiento,
que permiten adecuarlos a las necesidades de cada aplicación.
ARQUITECTURA DEL SISTEMA.

Los siguientes diagramas muestran la arquitectura básica de los (HHSC) y (SHSC), donde se puede
apreciar el uso de múltiples entradas y funciones de conteo. Alguna de las funciones, como el número
de registro (CV), el número de registro (PV), etiqueta de interrupción, el número de bit para la
máscara de software, es propia e inherente a cada contador, los cuales no tienen que ser asignados
por el usuario para su configuración. Sin embargo, las funciones marcadas con (*), deben ser
configuradas por el usuario mediante la herramienta de programación. Como por ejemplo, (selección
de aplicaciones HSC, modo de conteo, definición del uso de las entradas, polaridad inversa).

NOTA: CV = Valor actual, PV = Valor de preselección.


Todas las señales de control de HHSC y SHSC, actúan por defecto, activando en estado ON y
desactivando en OFF. Con el fin de cooperar con la polaridad del sensor, las entradas de contaje del
HHSC (U, D, P, R, A y B) y las entradas de control (M y C), pueden ser seleccionadas para polaridad
inversa.

Por defecto, cuando la señal de control MASK (M) se pone a ON, el HSC será enmascarado y
permanecerá sin contar hasta que recupere el estado OFF. CV y PV se mantendrán sin cambios.

Cuando la señal de control CLEAR (C) se pone a ON, el registro CV del contador tomará el valor 0 y
quedará inhabilitado el contaje. El HSC comenzará a contar desde 0 cuando (C) regrese al estado
OFF.

Los HHSC y los SHSC pertenecen a dos circuitos de hardware diferentes, por lo tanto, para mantener
la correspondencia entre ambos, sus registros CV y PV deben ser actualizados constantemente. El
usuario solo puede acceder a la memoria interna de la CPU, registros CV (DR4096/DR4110), por lo
que será necesaria la utilización de la (FUN93) para cargar estos registros. Así como la (FUN92) para
leer el valor actual.

Cuando la frecuencia de contaje, o la exigencia de precisión no es excesivamente alta, utilizando la


FUN-92 en el programa principal para leer el valor actual de conteo y luego introducir la
correspondiente instrucción de comparación, es más que suficiente para realizar un sencillo control de
posicionamiento.

Cuando la demanda en el control de posicionamiento es más alta, se utilizará la FUN92 para leer el
valor actual del contador, pero no en el programa principal, sino en la rutina de interrupción
incorporada para tal efecto. Incorporar en dicha rutina la instrucción de comparación necesaria para
realizar el control de posicionamiento.

Cuando la demanda de precisión en el posicionamiento es muy alta, se debe utilizar la función de pre
ajuste de interrupción por hardware para contrarrestar el posible desbordamiento. El valor de
preselección se puede cargar mediante la FUN-93 en el registro PV de (HHSC). Cuando el valor de
CV de (HHSC) alcanza este valor predeterminado, el valor del hardware en (HHSC) le enviará una
interrupción a la CPU en el preciso momento en que CV = PV, y saltará en tiempo real a la subrutina
donde se establece el control a realizar.

Por otra parte, (SHSC) se utiliza como método de solicitud de interrupción a la CPU, cada vez que
aparece un flanco de subida en la entrada de señal. De esta forma la CPU determina si debe
aumentar o disminuir el valor del CV. Cada vez que aparece un nuevo pulso, CV es actualizado de
forma inmediata. En cuanto la CPU detecta que CV = PV salta la correspondiente interrupción para su
procesamiento inmediato. Siempre que se produzca un cambio en el conteo ó entradas de control de
(SHSC), la CPU será interrumpida. Cuanto mayor sea la frecuencia de conteo, más tiempo estará
ocupada la CPU y por lo tanto, el tiempo de respuesta será más largo, incluso podría ocasionar que el
(WATCHDOG) forzará la parada del PLC en casos extremos. Por lo tanto, es conveniente utilizar
primero el (HHSC), si fuera necesaria la utilización del (SHSC), la suma de todas las frecuencias de
entrada no debe exceder los 8KHz.

Ninguno de los relés especiales de control, como la máscara de software, o control de puesta a cero,
funcionan en tiempo real. Esto significa, que aunque aparezca un cambio de estado en alguno de
ellos durante el transcurso de la rutina, la señal solo será transmitida al (HSC), después de completar
el barrido de la misma y la actualización de entradas y salidas (I/O). Por lo tanto, no es adecuado su
uso en aplicaciones donde se precise una respuesta en tiempo real. En cambio su uso es
perfectamente válido para realizar la configuración inicial de este, antes de que entre en servicio. Para
casos de control en tiempo real, se requiere utilizar las entradas de hardware, o aplicar las siguientes
funciones.
FUN-145(EN), FUN-146(DIS), FUN-92(HSCTR), FUN-93(HSCTW).

Cada HSC, puede ser habilitado o deshabilitado mediante el uso de (FUN-145) o (FUN-146). Cuando
(SHSC) está desactivado, se deja de contar, pero la función de interrupción permanece activa.
Cuando (HHSC) está desactivado, la cuenta sigue funcionando pero la función de interrupción queda
desactivada.

ENTRADAS DE PULSO UP/DOWN. MODOS (MD0, MD1).

Los impulsos introducidos en la entrada (U), provocan un incremento del registro. Los impulsos
introducidos en la entrada (D), provocan un decremento del registro. Ambas son entradas
independientes sin ningún tipo de relación de fase. Cada una de ellas, incrementa (+1) o disminuye (-
1) respectivamente el valor de (CV), cuando el flanco ascendente de la entrada de impulso se
produce. Cuando el flanco ascendente de (U) y (D), se producen simultáneamente, se compensaran
entre sí. Ambos modos de funcionamiento, incorporan por software las funciones de (MASCARA) y
(CLEAR). La función (CLEAR), no está disponible para (SHSC).

Tomando (HSC0) como ejemplo, los diagramas esquemáticos de función para MD0 y MD1, se
muestran por separado a continuación.
En el siguiente histograma podemos observar el comportamiento real de ambos modos de
funcionamiento.

ENTRADAS DE PULSO/DIRECCION. MODOS (MD2, MD3).

En este modo de funcionamiento, el contador tiene una sola entrada de conteo (P), por lo tanto, se
precisa de otra entrada (R), para determinar si el contaje será ascendente o descendente. (R=0)
ascendente y (R=1) descendente. Para (MD2) se cuentan solo los flancos ascendentes, mientras que
(MD3) realiza el contaje de ambos flancos. Los controles de enmascaramiento y puesta a cero,
(MASK-CLEAR), se pueden realizar tanto por hardware como por software.
Tomando (HSC1) como ejemplo, los diagramas esquemáticos de función para MD2 y MD3, se
muestran por separado a continuación.
En el siguiente histograma podemos observar el comportamiento real de ambos modos de
funcionamiento.

ENTRADAS A-B DESFASADAS. MODOS (MD4, MD5, MD6, MD7).

En este modo de funcionamiento, el contador ofrece dos entradas de contaje (A-B). Para determinar
si el contaje será ascendente o descendente, el contador controla el desfase entre ambas entradas.
Es decir, si la entrada (A) es detectada antes que la (B), el contaje será ascendente, de lo contrario
será descendente.

Las diferencias existentes entre cada uno de ellos, se describen a continuación.

(MD4). El flanco ascendente de (A) incrementa (+1) o (-1) el valor de (CV).

(MD5). El flanco ascendente y descendente de (A) incremente (+1) o (-1) el valor actual del contador.
El doble de pulsos que en (MD4).

(MD6). El flanco ascendente y descendente de (A) y el flanco ascendente de (B), incrementa (+1) o (-
1) el valor actual del contador. El triple de pulsos que en (MD4).
(MD7). El flanco ascendente y descendente de (A) y (B), incrementan (+1) o (-1) el valor actual del
contador. El cuádruple de pulsos que en (MD4).

Tomando (HSC2) como ejemplo, los diagramas esquemáticos de función para MD4, MD5, MD6 y
MD7 se muestran a continuación.
En el siguiente histograma, podemos observar el comportamiento real de estos modos de
funcionamiento.
PROCEDIMIENTO PARA APLICACIÓN DE UN (HSC. FB-PLC).
1º.- Configurar el modo de funcionamiento del (HSC) y su correspondiente entrada de señal.

2º.- Cableado de la entrada digital de acuerdo con la asignación establecida mediante la configuración
del (HSC).

3º.- Establecer el valor inicial de (CV) y el valor de salto a interrupción (PV), en el programa principal.
(Main Unit).

4º.- Escriba las acciones necesarias a realizar tras la interrupción y la situación necesaria requerida
para próximas interrupciones en el área de subprograma.

5º.- Inicie la operación.

CONFIGURACION. (HSC/HST).

10.4.1 CONFIGURACION DE (HSC/HST) USANDO WINPROLADDER.

Para acceder a la ventana de configuración, desde el árbol del proyecto.

Click (Sistem Configuration) > (I/O Configuration) > (Timer/Counter). Nos muestra la siguiente
ventana, donde podremos realizar todas las selecciones que necesitemos.
En la siguiente tabla, podemos observar toda la información relativa al direccionamiento de los
elementos auxiliares necesarios para la configuración de estos dispositivos.
FBS-PLC. TEMPORIZADORES DE ALTA VELOCIDAD.

La unidad de temporización mínima de un PLC normal, (BASE DE TIEMPO), solo puede llegar a
1mS. Valor éste, al que habrá que añadir el correspondiente a la desviación producida por el tiempo
de exploración. Por lo tanto es necesaria la utilización de temporizadores de alta velocidad (HST), si
necesitamos una sincronización más precisa. Por ejemplo la utilización de un (HSC) en cooperación
con un (HST) para la medición de frecuencia.

La serie FBS-PLC, está constituida por un temporizador de alta velocidad (HSTA), con una base de
tiempo de 0,1mS/16bits y cuatro contadores de alta velocidad de 32-bits (HSC0/HSC3), que pueden
funcionar como temporizadores de alta velocidad (HST0/HST3), con una base de tiempo de
0,1mS/32bits. Por lo tanto la serie FBS-PLC puede tener hasta cinco temporizadores de alta
velocidad.

Como sucedía con los (HSC) y sus correspondientes interrupciones, todo (HST) puede ser habilitado
o no, mediante las instrucciones (FUN-145) y (FUN-146) como se describe a continuación.

La mejor base de tiempos que podemos obtener en la mayoría de los PLC, supera los 10mS. Aunque
muchos de ellos incluyen temporizadores de 1mS, al sumarle el tiempo de exploración obtenemos
siempre bases de tiempo muy superiores. Por lo tanto este tipo de temporizadores convencionales, no
pueden ser utilizados en aplicaciones de sincronización de alta precisión.

Los temporizadores de alta velocidad de la serie FBS-PLC, tienen una base de tiempo de 0,1mS que
no se verá afectada por el tiempo de exploración, mediante el uso de sus correspondientes funciones
de interrupción. Estas características, pueden proporcionarnos una precisión 100 veces mejor que la
de un temporizador convencional.

(HSTA) TEMPORIZADOR DE ALTA VELOCIDAD.

(HSTA) es un temporizador de hardware integrado en el chip SOC. Como en el caso del (HHSC),
debe utilizar la instrucción (FUN-93.HSCTW) para cargar el (PV), así como la instrucción (FUN-
92.HSCTR) para leer el valor actual (CV). HSTA puede utilizarse de dos modos de funcionamiento
diferente. Como temporizador de retraso general de 16-bits, cuando (PV>=2). Como temporizador
cíclico de 32-bits, cuando (PV=0).

A.(HSTA) COMO TEMPORIZADOR DE RETARDO 16-BITS.

Después que (HSTA) sea iniciado, el temporizador de retardo se demora durante un tiempo
(PV*0,1mS) antes de ejecutar su interrupción. Cuando (PV>0), HSTA funciona como un temporizador
convencional de 16-bits y su valor (PV) puede estar comprendido entre (0002H/FFFFH) en
hexadecimal. Es decir, el tiempo de retardo se puede establecer entre (0,2mS/6,5535Sg). Salvo que
tiene una base de tiempo más precisa y su propia capacidad para ejecutar interrupciones, las
aplicaciones de este temporizador son las mismas que las de un temporizador ordinario.

El diagrama siguiente nos muestra la estructura de un (HSTA) siendo utilizado como un temporizador
de retardo.
B.(HSTA) COMO TEMPORIZADOR CICLICO DE 32-BITS.

Cuando utilizamos (HSTA) como temporizador cíclico, éste funciona aumentando su valor en 1 cada
(0,1mS). Su valor (CV) se desplazará entre (0, 1, 2,…, 4294967295, 0, 1, 2,...). Este temporizador
cíclico, cuenta con una base de tiempo de (0,1mS) que incrementará el valor (CV) indefinidamente y
retornará a 0 cuando el valor máximo de 32-bits sea superado. Puede ser utilizado para determinar el
tiempo que transcurre entre la aparición de dos eventos.

A continuación, se muestra la estructura de un (HSTA) funcionando como temporizador cíclico de 32-


bits. Como se muestra en el diagrama, cuando (PV=0) no se produce ninguna interrupción. Para
obtener el valor de la temporización, es necesario utilizar la instrucción (FUN-92) para leer el (CV) del
chip SOC y guardarlo en el registro de 32-bits (DR4152) del PLC.

La aplicación típica de este temporizador, es la obtención de desviaciones muy precisas en las


(RPM) revoluciones por minuto de un motor.
(HST0/HST3). TEMPORIZADORES DE ALTA VALOCIDAD.

Los contadores de alta velocidad (HSC0/HSC3), se pueden configurar como temporizadores de alta
velocidad de (32 bits), obteniéndose los referidos (HST0/HST3). Tienen la misma función y base de
tiempos que el HSTA a excepción de su capacidad (32 bits en lugar de 16 bits). La configuración de
los mismos, se realiza entrando en la pestaña (I/O Configuration > Timer/Counter > Hardware
Timer).

blog comments powered by DISQUSback to top


Bloque de comparación (árbol de levas)
en autómatas FATEK - FUN-112. BKCMP
Una de las aplicaciones más prácticas de esta instrucción, es sin duda alguna, su uso como
interruptor de tambor ó árbol de levas configurable. Existen innumerables aplicaciones, donde se
precisa realizar el accionamiento de determinados dispositivos, en función del ángulo que va tomando
un determinado eje. En el pasado, la solución que se adoptaba para resolver esta necesidad, pasaba
por la adaptación de una serie de levas vinculadas al eje en cuestión, cada una con un determinado
rango de accionamiento. Cada leva actuaba sobre su correspondiente interruptor en un determinado
rango de posición angular. El gran inconveniente de estos dispositivos, aparte de su laborioso
desarrollo mecánico, está en su dificultad de ajuste en el caso de que lo permitiera, ya que muchos de
ellos trabajan en rangos fijos sin posibilidad de modificación. En la siguiente imagen podemos
observar el dispositivo descrito.

Gracias al uso de esta instrucción, podemos realizar una emulación mejorada de este dispositivo con
tan solo incorporar un simple encoder incremental al eje del sistema. Consiguiendo de esta manera
dos ventajas fundamentales, una mayor simplicidad mecánica y la total flexibilidad a la hora de
configurar, modificar ó ampliar el dispositivo.

DESCRIPCIÓN
La instrucción (112.BKCMP), está conformada por los siguientes parámetros. (Rs, Ts, L, D). Ofrece
una entrada de habilitación (EN) y una bandera (ERR) que puede ser utilizada de distintas formas,
como veremos más adelante.

(Rs). Se trata del dato a comparar. Puede ser una constante ó un registro.

(Ts). Registro inicial del bloque de almacenamiento de los límites superior e inferior.

(L). Número de pares de límites superior e inferior.

(D). Dirección inicial del bloque de relés utilizados para declarar el resultado de la comparación.

Cuando la entrada de habilitación pasa a ON, se ejecutan las comparaciones entre el contenido de
(Rs) y el conjunto de pares formados por cada límite superior e inferior. Cada dos unidades de
registro contiguas a partir del registro inicial del bloque, forman un límite superior e inferior.

Si el valor de (Rs), está dentro del rango de una determinada pareja, el bit correspondiente a ese par
cambiará su estado a ON, en caso contrario su estado será OFF. En el siguiente gráfico, podemos
observar detalladamente, el orden que debemos respetar y la correspondencia entre los distintos
elementos.

Existe la posibilidad de configurar dos modos de funcionamiento distintos para esta instrucción. Para
ello, utilizaremos el bit de control (M1975).

Para (M1975 = 0), si en alguna de las parejas, el valor del límite superior es menor que el valor del
límite inferior, entonces la bandera (ERR) pasará a ON y su correspondiente salida pasará a OFF.

Para (M1975 = 1), no se aplicará ningún tipo de restricción para los valores del límite superior e
inferior. De esta forma, conseguimos una total flexibilidad a la hora de establecer un determinado
rango de accionamiento, convirtiendo nuestra instrucción en un completo interruptor de tambor
multifuncional.

Para obtener una respuesta inmediata de esta instrucción en aplicaciones que requieran una mayor
exigencia, podemos utilizar la función (74P.IMDIO), con la que obtendremos un refresco inmediato de
las salidas, eliminando de esta forma el posible retraso causado por el ciclo de scan.

EJEMPLO DE APLICACIÓN

El siguiente gráfico nos muestra el planteamiento general del dispositivo que pretendemos habilitar.

Se trata pues, de utilizar un encoder incremental (X1) de 360 pulsos por vuelta, como medio para
codificar la posición angular en que se encuentra el mecanismo de rotación. A partir de aquí, activar
las salidas (Y5, Y6, Y7, Y8) en función de la posición angular del mecanismo. La siguiente imagen
nos muestra el programa utilizado.
En este programa, (C0) representa el ángulo de rotación. El contador está atacado directamente por
la entrada (X1), salida de pulsos del encoder, provocando el incremento de este en función de su
desplazamiento angular. Cada 360 pulsos se completa una vuelta, provocando un auto reset del
contador y el consecuente inicio desde 0. De esta forma conseguimos obtener una referencia clara de
la posición angular que ocupa el mecanismo en cada momento. Este dato (Rs), será comparado a
continuación con los cuatro pares de límites superior e inferior establecidos en este ejemplo. (L = 4)
implica la definición de cuatro pares de límites, por lo tanto, como el registro inicial del bloque ha
quedado definido por (R10), los pares quedarían configurados de la siguiente forma. (R10-R11), (R12-
R13), (R14-R15) y (R16-R17). Por todo ello, el resultado de las comparaciones, podrá obtenerse en
los cuatro puntos de salida consecutivos a partir de la dirección declarada en (D). (Y5), (Y6), (Y7) y
(Y8).

Evidentemente, los registros utilizados para el almacenamiento de valores de límites, han de ser
establecidos de alguna forma, por ejemplo, mediante un (MOV) inicial de carga de datos.
El siguiente gráfico, nos muestra el estado de las salidas en función de la posición angular del
mecanismo.
Funciones de Interrupción con con
autómatas FATEK

9.1- PRINCIPIOS Y ESTRUCTURA DE LAS FUNCIONES DE INTERRUPCIÓN

Son muchas las acciones que tiene que realizar un FB-PLC. Por ejemplo, hay programas de usuario
de 20K palabras. Existen hasta 512 puntos de entradas / salidas que tienen que ser capturas y
actualizadas. Hasta 5 puertos de comunicación pueden necesitar ser atendidos, etc. Sin embargo los
trabajos se tienen que ejecutar de uno en uno, ya que solo existe una CPU disponible. Para ello el
FB-PLC realiza todo este trabajo de forma secuencial hasta completar todas las tareas. A
continuación se volverá a la primera, repitiendo el proceso cíclicamente de manera continua. El
intervalo de tiempo de cada ejecución se denomina (Tiempo de ciclo ó ciclo de scan).

La velocidad de ejecución de la CPU, es extremadamente rápida en comparación con una respuesta


humana. La sensación física que una persona tiene, es que el PLC completa todos los trabajos al
mismo tiempo, aunque en realidad, el PLC tarda unas decenas de milisegundos en completar la
enorme carga de trabajo a la que antes nos hemos referido; Tiempo que para aplicaciones ordinarias,
es más que suficiente. Sin embargo, para algunas aplicaciones que requieren una respuesta de alta
velocidad, como por ejemplo un control de posicionamiento, un retraso en el tiempo de exploración
significaría sin duda un sustancial aumento del error. Bajo estas circunstancias, solo el uso de las
funciones de interrupción nos permitirá alcanzar este grado de precisión.
El llamado (INTERRUP), consiste en una petición de interrupción a la CPU durante el ciclo de
exploración normal, cuando una respuesta inmediata es requerida. Después de recibir esa solicitud, la
CPU detendrá inmediatamente todo el trabajo de exploración para iniciar y completar el servicio
solicitado antes de regresar al punto de interrupción y proseguir con el ciclo normal.

El trabajo a realizar cuando se produce una interrupción se llama (SUBRUTINA) y consiste en una
serie de códigos en diagrama de escalera. Este código independiente, ha de colocarse en el área de
subrutina y debe comenzar con la instrucción (LBL) y su nombre de etiqueta. Dado que esta parte del
programa, queda alojado en el área de subrutina, no se ejecutará en un ciclo normal. El PLC solo
analiza constantemente el área del programa principal, pero no la subrutina.

En un caso normal, la CPU puede tardar unos cientos de micro-segundos en ejecutar una
interrupción. Cuando hay más de una interrupción que se producen al mismo tiempo, solamente la
interrupción con prioridad más alta puede ser ejecutada. Todas las demás rutinas de interrupción,
esperan hasta convertirse en la prioridad más alta de las pendientes. Por consiguiente, un retraso de
cientos de micro-segundos ó incluso algunos milisegundos se pueden producir en los casos más
desfavorables.

En una estructura de múltiples entradas de interrupción, habrá que asignar las distintas prioridades de
acuerdo con la importancia de cada una. En el caso de que una nueva petición de interrupción
aparezca durante la ejecución de otra, la CPU esperará a que concluya la interrupción en marcha,
antes de dar paso a la siguiente. Sin embargo, si la prioridad de la nueva interrupción, es mayor que
la que está siendo ejecutada, la CPU detendrá el funcionamiento de la rutina en servicio, para
ejecutar la interrupción con prioridad más alta. Una vez finalizada esta, la CPU continuará con el
proceso interrumpido anteriormente. Este tipo de interrupción en una ejecución de otra interrupción,
se denomina (Interrupción anidada). FB-PLC, permite hasta cinco niveles de interrupción anidada.

9.2- ESTRUCTURA Y APLICACIÓN DE RUTINAS DE INTERRUPCION.

Tanto el comando (INTERUP), como (CALL), provocan un salto a subrutina, aunque los métodos de
ejecución son diferentes. Cuando el comando CALL (FUN-67) es ejecutado en el programa principal,
la CPU ejecuta la subrutina con el nombre de la etiqueta designada por el comando CALL. La CPU
vuelve al programa principal después que la función RTS (Retorno de subrutina) es ejecutada.

Las llamadas (INTERUP) son activadas mediante señales directas desde el proceso de la CPU, en
lugar de utilizar los comandos de software. La CPU identificará la fuente de interrupción y saltará
automáticamente a la subrutina con el nombre de etiqueta ya previamente establecido. Volverá al
programa principal una vez se haya ejecutado la función RTI (Retorno de interrupción). Por lo tanto no
es necesario ningún código de escalera en el programa principal.
Como se mencionó anteriormente, el programa de subrutina debe ser editado en la zona de
programación (Sub Program). La estructura se muestra en el siguiente diagrama, donde podemos
apreciar la cabeza, la cola y el cuerpo del programa. La cabeza es una etiqueta (LBL) con el nombre
de la interrupción. La cola es el comando RTI (FUN-69), para decirle a la CPU que la rutina de
interrupción se terminó y debe saltar al lugar de donde partió. Entre la cabeza y la cola, debemos
introducir todas las acciones que necesitemos ejecutar al producirse la interrupción.

En el ejemplo siguiente podemos observar como el flanco de subida de la entrada (X0) es el


encargado de activar la llamada a subrutina con la etiqueta (STOP). Esta línea de código quedará
ubicada en el programa principal (Main Unit).

Por otro lado, en el área de subrutina, editaremos las acciones que necesitamos ejecutar. En el
ejemplo, se activa la salida (Y0) y movemos el valor 0 al registro (R100). Utilizamos (LBL) para
identificar la subrutina y (RTS) para devolver la ejecución al programa principal.

9.3- ORIGENES DE INTERRUPCIÓN, ETIQUETAS Y PRIORIDADES.

Como se describe en la sección anterior, cada (Rutina de interrupción) tiene una (Etiqueta de
interrupción) única. Existen 49 etiquetas disponibles que corresponden al conjunto de etiquetas
predefinidas dedicadas a las rutinas de interrupción, por lo tanto no pueden ser utilizadas para las
subrutinas normales ó saltos objetivos. El sello de estas interrupciones, se construye añadiendo el
sufijo "I". Por ejemplo, para el contador de alta velocidad (HSC0) sería (HSC0I). Para (X0+) sería
(X0+I). Las etiquetas de las 49 fuentes de interrupción disponibles para la serie FB-PLC, se muestran
en la siguiente tabla.
9.4- COMO UTILIZAR LAS FUNCIONES DE INTERRUPCIÓN DE LA SERIE FB-PLC.

Los temporizadores internos, las entradas externas, los HSC / HST, ó los PSO (Salidas de pulso), son
todas aplicaciones similares de interrupción. Todos ellos se describen en esta sección.

9.5- CONFIGURACIÓN DE INTERRUPCIONES.

De hecho, la configuración de una interrupción se utiliza simplemente para determinar si la aplicación


de una determinada interrupción se va a utilizar o no.

La configuración de interrupciones se puede dividir en relevantes o irrelevantes. HSTA, HSC / HST,


PSO, son interrupciones relevantes y han de ser configurados mediante la herramienta de
programación. Estas disparan la alarma del dispositivo, una vez se hayan configurado.

Las interrupciones de bases de tiempo internas, (1MSI / 100MSI), son interrupciones irrelevantes y no
necesitan configuración alguna, tan solo necesitamos establecer la etiqueta correspondiente
encabezando el subprograma a realizar. Esto implicaría que la interrupción ha sido establecida. Si es
necesario utilizar más de una de estas interrupciones, se pueden utilizar los bits bajos (B0 / B7) del
registro especial (R4162) para habilitar la interrupción que queramos ejecutar.

9.5.1- CONFIGURACIÓN DE INTERRUPCIONES CON WINPROLADDER.

Para acceder a la ventana de configuración, click en (Project name), click en (Sistem configuration),
click en (I/O Configuration). Aparecerá la siguiente ventana.
9.5.3- CONFIGURACION DE INTERRUPCIONES PERIODICAS MEDIANTE (R4162).

Cuando alguna etiqueta de las bases de tiempo internas, aparece en la zona de subprograma, (1MSI /
100MSI), significa que la interrupción ha sido planteada y puede ser enmascarada mediante el uso de
los 8 bits bajos del registro (R4162) como se muestra a continuación.

Cuando el estado del bit = 0 habilita la interrupción correspondiente, en cambio, cuando el estado del
bit = 1 la interrupción queda deshabilitada. Si existen varios de estos bits habilitados (=0), la CPU solo
permitirá el funcionamiento de la base de tiempo más pequeña, deshabilitando el resto. Por ejemplo,
si el contenido de (R4162) es (00H), en teoría todas las interrupciones periódicas quedarían
habilitadas, sin embargo tan solo (1MS) será ejecutada. El siguiente ejemplo muestra como habilitar
una interrupción periódica de 100mS (100MSI). (127 decimal = 01111111 binario).
El valor predeterminado de (R4162) es 0 y representa que ninguna de las bases de tiempo está
siendo enmascarada. Por lo tanto, cualquier etiqueta que reflejemos en la zona de subprograma será
ejecutada de forma periódica. Gracias a esta propiedad, el usuario puede cambiar de forma dinámica
las bases de tiempo o hacer una pausa con tan solo modificar el valor de (R4162).

9.6- EJEMPLOS DE RUTINAS DE INTERRUPCIÓN.

EJEMPLO-1. Control de posicionamiento mediante sensor de posición.

(Configuración de X0 como entrada de interrupción positiva).

DISPOSITIVOS: (X0) Sensor de posición, (X1) Parada emergencia, (Y0) Motor.

PROGRAMA PRINCIPAL. Cuando (M0) pasa a ON, (Y1) también pasará a ON y el motor arrancará.
La parada de emergencia (X1) anula esta acción en caso de emergencia.
SUBRUTINA. Cuando el sensor (X0) pasa a ON activado por el movimiento del proceso, se ejecuta
automáticamente la subrutina correspondiente como podemos observar en la siguiente imagen.

En el cuerpo del programa, además de resetear (Y0) utilizamos la función (74.IMDIO), actualización
inmediata de entradas y salidas, de esta forma suprimimos el retraso causado por el tiempo de
exploración.

EJEMPLO-2. Interrupción periódica (1MS).

PROGRAMA PRINCIPAL. Utilizamos el bit (M0) para habilitar o deshabilitar esta interrupción,
realizando un movimiento de datos al registro (R4162).

SUBRUTINA. Una vez habilitado, el sistema ejecuta automáticamente la subrutina cada milisegundo.
Mediante las funciones (15.INC) ó (16.DEC) podemos realizar un contaje del número de ciclos.

9.7- FILTRO DIGITAL. CAPTURA DE ENTRADAS.

En muchas aplicaciones de alta velocidad, debemos configurar las entradas de interrupción con el
propósito de evitar pérdidas de señal. Incluso podemos capturar señales con periodos transitorios
inferiores al tiempo de exploración del PLC. Todo ello podemos realizarlo fácilmente en la ventana
(I/O Configuration) del Winproladder.

La serie FB-PLC puede soportar hasta 36 puntos de captura de entradas (X0/X35) en función de la
unidad principal que se utilice. Las entradas (X0/X15) se pueden configurar como entradas de
interrupción por hardware, para aplicaciones de respuesta rápida. Estas entradas son utilizadas para
señales de baja frecuencia pero de corta duración, incluso inferiores a un ciclo de scan.

Hay 6 grupos de entradas digitales en la ventana de configuración, como podemos observar en la


siguiente imagen. (I/O Configuration) > (Input Setup).
Podemos utilizar dos métodos para el filtrado digital, por frecuencia ó tiempo, simplemente
seleccionando la casilla correspondiente en cada grupo. Siempre que la señal de entrada tenga una
duración superior al tiempo que hemos seleccionado, el PLC la reconocerá. Cuando trabajamos en
modo frecuencia sería a la inversa, la frecuencia de la señal de entrada debe ser inferior a la
preselección para ser reconocida por el autómata.

EJEMPLO-1. Cuando la entrada está configurada como entrada de captura y es utilizada en


aplicaciones de recuento, es necesario que el periodo de esta señal sea mayor que dos veces el
tiempo de exploración, para poder obtener un funcionamiento correcto. Por ejemplo, si la frecuencia
de entrada es de 50Hz, entonces el tiempo de exploración del PLC, debe ser inferior a 10
milisegundos para obtener un recuento sin perdidas. (50Hz corresponde a un periodo de 20
milisegundos).
Instrucciones de pasos con autómatas
FATEK

La utilización de programación estructurada es una tendencia importante en el diseño de programas.


Las principales ventajas son, alta legibilidad y fácil mantenimiento.

La mayoría de aplicaciones de control, consisten en muchas tareas secuenciales diseñadas con la


metodología convencional de diagramas de escalera, que por lo general no ofrecen una fácil
comprensión y mantenimiento. Por lo tanto es necesario combinar los actuales diagramas de
escalera, con los controles secuenciales diseñados para el control de flujo de la máquina.

La ejecución secuencial paso a paso, permite que otros sean capaces de entender fácilmente la
forma de trabajo de la máquina. Por lo que el diseño, operación y mantenimiento, será más eficaz y
más simple.

PRINCIPIOS DE OPERACIÓN EN DIAGRAMAS DE PASOS

STP (Sxxx), es el símbolo que representa el paso (Sxxx), que puede estar comprendido entre S0 y
S999.

Cuando la etapa se está ejecutando, (ON), el diagrama de contactos a la derecha se ejecutará y los
pasos previos junto a sus salidas pasarán a (OFF).

(M1924) es la marca del primer pulso de SCAN. Mediante este relé especial, utilizándolo como una
transición, activamos automáticamente la etapa inicial cada vez que arrancamos el PLC.
DIAGRAMAS DE PASOS. FORMACIÓN BÁSICA.

TRAYECTORIA INDIVIDUAL.

La etapa (S20) pasa a la (S21) mediante la transición (X0). Las transiciones como (X0) pueden estar
constituidas por contactos simples ó combinaciones serie paralelo de varios contactos.
CONVERGENCIA / DIVERGENCIA SELECTIVA.

En el ejemplo siguiente, (S0) selecciona una sola condición divergente, la primera en aparecer de
todas. Por ejemplo, si (X2) pasa a ON primero, entonces solo el paso 22 será ejecutado. Una
divergencia, puede tener un máximo de 8 rutas. Cada una de las rutas, pueden estar definidas por un
contacto o la combinación serie paralelo de varios.

CONVERGENCIA / DIVERGENCIA SIMULTANEA.


En el ejemplo siguiente, después de que (X0) pase a ON, se ejecutará simultáneamente todas las
rutas por debajo de ella. Todos los caminos divergentes deben converger en un punto común, el cual
no permitirá la siguiente transición hasta que todos ellos hayan sido completados. El máximo número
de rutas posibles son 8. En este ejemplo, (S31, S32, S33), tienen que estar a ON para que la
transición (X1) permita el paso a (S40).

SALTO.

En el ejemplo siguiente podemos observar que existen 3 rutas selectivas por debajo de (S20). Si (X2)
pasa a ON, el proceso puede saltar directamente a (S23) sin pasar por el proceso de convergencia
selectiva. Esta función no podría ser utilizada en convergencias simultáneas.
BUCLE CERRADO.

En el ejemplo siguiente, podemos apreciar como el paso inicial (S1) arranca gracias al relé especial
(M1924), primer pulso de scan, y continuará ejecutándose de forma ininterrumpida.
CICLO ÚNICO.

En este ejemplo, cuando la etapa (S20) está a ON, si (X2) también pasa a ON, se ejecutará (RST
S21), de esta forma el proceso quedará interrumpido hasta un nuevo arranque del PLC, o un reset
externo (X0).

INSTRUCCIONES DE PASO, INTRODUCCIÓN. (STP, FROM, TO, STPEND).

Hasta 8 pasos de inicio pueden ser utilizados en la serie FB-PLC. Cada proceso secuencial, puede
funcionar de forma independiente, o generar resultados que puedan ser utilizados en otros procesos
paralelos. Los pasos utilizados como inicio de secuencia, tienen que estar dentro del siguiente rango.
(S0 a S7).

Para ir al paso inicial cada vez que el PLC arranca, utilizaremos el bit (M1924) actuando sobre la
instrucción (TO).

(STP). Esta es la instrucción de paso. Cada paso en un proceso, representa un estado de la


secuencia. Si el estado del paso es ON, entonces la etapa está activa y se ejecutará el diagrama de
escalera asociado al mismo. El valor de (STP Sxxx) tiene que estar comprendido entre (S20 y S999).

(FROM). Esta instrucción muestra el paso de origen de una transferencia, que en coordinación con
una condición posterior, nos permitirá transferir la ejecución al siguiente paso. El valor de (FROM
Sxxx) puede estar comprendido entre (S0 y S999).

(TO). Esta instrucción describe el paso donde va a ser transferido. El valor de (TO Sxxx) puede estar
comprendido entre (S0 y S999).
(STPEND). Esta instrucción representa el final de un proceso. Es necesario incluirla en el diagrama
de escalera para que el sistema pueda operar correctamente. Un FB-PLC puede operar
simultáneamente hasta 8 procesos de pasos, por lo tanto hasta 8 instrucciones (STPEND), podrán ser
utilizadas.

NOTAS PARA ESCRIBIR UN DIAGRAMA DE PASOS.

En aplicaciones reales, el diagrama de escalera se puede utilizar de forma conjunta con los
diagramas de pasos.

Existen 8 pasos de inicio (S0 a S7), que pueden ser utilizados como puntos de partida en este tipo de
aplicaciones.

Es necesario la utilización del bit (M1924), pulso del primer ciclo de scan, para activar la etapa inicial.

A excepción de la etapa inicial, todas las demás etapas tienen que ser iniciadas mediante acciones
provenientes de otros pasos.

Es condición indispensable en todo proyecto de pasos, la existencia de un paso inicial (STP) y un


paso final (STPEND).

Hay 980 pasos disponibles (S20 a S999), que pueden ser utilizados libremente. Sin embargo los
números utilizados no se pueden repetir. (S500 a S999) son pasos remanentes. Este intervalo puede
ser modificado por el usuario mediante el uso de la herramienta de programación. Suelen utilizarse
básicamente para evitar pérdidas de posición en un determinado proceso, ante caídas de tensión.

Básicamente un paso consta de tres partes, la salida de control, las condiciones de transición y los
destinos de transición.

Las instrucciones (MC) y (SKP), no pueden ser utilizadas en diagramas de pasos. Se recomienda que
la instrucción (JMP), sea evitada tanto como sea posible.

Mirando hacia abajo desde una etapa inicial, el número máximo de rutas horizontales es 16. Sin
embargo, un paso solo permite un máximo de 8 trayectorias de bifurcación.

You might also like