Escalado de señales analógicas no lineales F282_SCAL con autómata Panasonic
El tratamiento de señales analógicas utilizado de forma más habitual, debido principalmente a su simplicidad, considera esta señal como si fuera una función lineal. En estos casos, la utilización de dos únicos puntos de coordenadas es más que suficiente para obtener resultados con un aceptable margen de error. Sin embargo, hay multitud de casos en los que la curva descrita por el sensor no responde ni mucho menos a esta definición, incluso los considerados como lineales, no lo son en su totalidad. Debido a ello, es necesaria la utilización de recursos más potentes, mediante herramientas de programación, para la obtención de una respuesta que nos permita seguir fielmente las desviaciones de una determinada curva.
La solución a este problema, consiste en segmentar dicha curva, para la obtención de nuevos puntos de referencia intermedios. De esta forma cuantos más puntos introduzcamos, más precisión obtendremos en nuestra salida escalada.
La función (F282_SCAL) de Panasonic, asocia el valor (Y) a la posición (X), realizando una interpolación lineal basada en los puntos de referencia por vecindad. La función conecta los puntos de referencia individuales, el inferior más cercano y el superior más cercano, traza la recta que pasa por esos dos puntos y calcula el valor de salida (Y), que pasa por esa recta para un valor de entrada (X).
Hay que tener en cuenta que si el valor de la entrada (X), es menor que la coordenada (X) del primer punto de referencia, la salida (Y) que obtendremos, será la coordenada (Y) del primer punto de referencia. De igual forma, si el valor de la entrada (X), es mayor que la coordenada (X) del último punto de referencia, la salida (Y) que obtendremos, será la coordenada (Y) del último punto de referencia.
Los puntos de referencia (P1, P2,…) se transfieren a la función mediante una variable del tipo DUT, la cual contiene, el número de puntos y los valores de los pares XY. (Número de pares; X1, X2,…; Y1, Y2,…).
(DUT) es el acrónimo de (Data Unit Type), que podemos definir como una estructura formada por datos de diferente tipo. En realidad se trata de una tabla de datos que puede ser configurada a voluntad del propio usuario.
La estructura de la (DUT) que nos ocupa, es la siguiente:
1.- Entrada. Variable del tipo (INT), que contiene el número de puntos de referencia. Su valor, puede estar comprendido entre (2) y (100).
2.- Entrada. Variable de tipo (ARRAY [0..z] DE INT), donde (z) representa el número de puntos de referencia. Contiene los valores de (X).
3.- Entrada. Variable de tipo (ARRAY [0..z] DE INT), donde (z) representa el número de puntos de referencia. Contiene los valores de (Y).
NOTA: Hay que tener muy en cuenta, que los valores de (X), deben ser introducidos en orden ascendente. (X1<X2<X3<…). Si existen valores de (X) idénticos, por ejemplo, (X2=X3=X4), se ignoraran los puntos de referencia (P2 y P3). Esta función solo puede procesar números enteros.
EJEMPLO DE APLICACIÓN
Como ejemplo práctico de esta instrucción, vamos a utilizar una (NTC-10K) como sensor de temperatura, atacando directamente a la entrada de termistor de un (FP-SIGMA). Aquellas unidades de control cuya referencia termine en TM disponen de dos entradas de termistor en lugar de los dos potenciómetros analógicos. Al variar la temperatura del termistor, se producen cambios en la resistencia del mismo que son traducidos a cambios de voltaje. El procesador de la unidad de control, convierte el valor analógico (voltaje) en un valor digital. Los valores digitales de las entradas a termistor se almacenan en los registros de datos especiales (DT90040 o DT90041) pudiendo ser utilizados en la programación.
En la siguiente tabla, queda reflejada la relación entre la temperatura a la que se encuentra el termistor y el valor digital obtenido. Mediante el uso de formulas sencillas se puede obtener dicha relación. A partir de estos datos, podremos crear nuestra (DUT) personalizada, sobre la cual, nuestra instrucción (F282_SCAL), realizará todos sus calculos.
En primer lugar, mediante el FPWINPro, vamos a crear una nueva (DUT), a la que vamos a llamar, (Interpolacion_16). Donde introduciremos los datos de la tabla anterior, respetando la estructura que mencionamos al principio del tema.
A continuación, pasamos a declarar en la pestaña de varibles globales, la direccion de entrada que vamos a utilizar, identificandola convenientemente. Los valores digitales de las entradas a termistor se almacenan en los registros de datos especiales (DT90040 o DT90041), en nuestro ejemplo, utilizamos el (DT90040).
En la cabecera de la (POU), realizamos la declaración de todos los componentes que más tarde utilizaremos en el cuerpo del programa.
Y por último, introducimos nuestros datos en el cuerpo del programa. Mediante la instrucción (F282_SCAL), obtendremos una salida que se ajusta fielmente a las desviaciones típicas observadas en señales no lineales.