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.