Es mostren els missatges amb l'etiqueta de comentaris #automatization. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris #automatization. Mostrar tots els missatges

dissabte, 4 de febrer del 2017

3. Funciones de matriz

Las funciones de matriz nos permiten trabajar con datos en formato matricial para realizar operaciones características, como la resolución de sistemas de ecuaciones lineales.

En la siguiente imagen se muestran algunas las estructuras de funciones de matriz del diagrama de bloques más habituales.

Imagen 1. Estructuras de funciones de matriz más habituales.

Veamos algunos ejemplos de las estructura mostradas en la imagen 1 y para que podríamos utilizarlas.

(1) En primer lugar tenemos la estructura Array Size:

Imagen 2. Estructura de Array Size (view as icon) en el diagrama de bloques.

Imagen 3. Estructura de Array Size en el diagrama de bloques.

En el Panel de Control la estructura Array Size nos permite introducir los elementos que constituyen una matriz y nos indica el tamaño. Con el controlador de la izquierda podemos incrementar el número de posiciones disponibles para escritura; si seleccionamos el recuadro array y arrastramos hacia abajo podemos visualizar más posiciones disponibles, además de las ya editadas (las primeras aparecen en translúcido, ver imagen 4).

Imagen 4. Estructura de Array Size en el panel de control.

(2) La estructura Index Array nos permite seleccionar un elemento dentro de la matriz. Esto nos puede resultar interesante si disponemos de una fuente de datos matricial (muy habitual) y deseamos extraer alguno de los datos para ser visualizado o procesado como señal del diagrama de bloques del sistema de control de un proceso o procedimiento automatizado.

Imagen 5. Estructura de Index Array en el diagrama de bloques.

Imagen 6. Estructura de Index Array en el panel de control.

(3) La estructura Replace Subset posibilita el cambiar alguno de los elementos de la matriz por otros de nuestra elección, que bien podría ser un dato dinámico o un valor que introducimos manualmente mediante un controlador (ver imagen 7 y 8), así como una constante de corrección que hayamos determinado.
Imagen 7. Estructura Replace Subset en el diagrama de bloques.

Imagen 8. Estructura Replace Subset en el panel de control.

Aquí puedes descargar el archivo .vi con los ejemplos desarrollados hasta este punto del módulo. 

(4) La estructura Insert Into Array se utiliza para introducir un nuevo elemento en la matriz de origen; si hemos de construir una matriz a partir de datos de diversas matrices o bien a partir de datos de 1 D.

Imagen 9. Estructura Insert Into Array en el diagrama de bloques.

Imagen 10. Estructura Insert Into Array en el panel de control.

Aquí puedes descargar el archivo .vi con los ejemplos desarrollados hasta este punto del módulo; si deseas obtener el archivo que contiene menos estructuras o cualquier aclaración estaremos encantados de recibir tu comunicación.

(5) La estructura Delete from Array se utiliza para eliminar elementos contenidos en una matriz; si por ejemplo, un dispositivo capta diversas señales que almacena en forma matricial y deseamos utilizarla, a excepción de alguna medida concreta, únicamente deberemos conocer la posición de esa variable en la matriz y descartarla.

Imagen 11. Estructura Delete From Array en el diagrama de bloques.

Imagen 12. Estructura Delete From Array en el panel de control.

Aquí puedes descargar el archivo .vi con los ejemplos desarrollados hasta este punto del módulo

(6) La estructura Initialize Array nos permite, como su nombre indica, inicializar una matriz de n dimensiones con el elemento que introducimos en el controlador correspondiente.

(a)

(b)
 Imagen 13. (a) Estructura Initialize Array (view as icon) en el diagrama de bloques. (b) Estructura Initialize Array en el diagrama de bloques.

Imagen 14. Estructura Initialize Array en el panel de control.

(6) La estructura Sort 1D Array sirve para recuperar un elemento de la matriz original según la posición que le indiquemos, pasando a tener una matriz reducida.
 
Imagen 15. Estructura Sort 1D Array en el diagrama de bloques.

Imagen 16. Estructura Sort 1D Array en el panel de control.

Tal y como puedes ver en la imagen 16 las posiciones en labview se contabilizan desde la posición 0, por lo que deberás tenerlo muy presente en el momento de seleccionar el dato que se desea aislar, dado que habitualmente las posiciones se acostumbran a numerar comenzando en la posición 1.

Combinación de Initialized Array y Insert Into Array
 Imagen 17. Estructura Initialize Array + Insert Into Array en el diagrama de bloques.

 Imagen 18. Estructura Initialize Array + Insert Into Array en el panel de control.

Aquí puedes descargar la .vi de la imagen 17.

¿Cómo nos podrían ser de utilidad todas estas estructuras explicadas hasta el momento?

Piensa por ejemplo en un sistema de control formado por un conjunto de sensores que captan señales de diversos parámetros y/o variables de un proceso y los envían en forma de paquetes de datos matriciales que podríamos separar y reconducir a otras funciones, como las numéricas, para realizar cálculos cuyos resultados podríamos mostrar en pantalla o bien programar el sistema para que actúe conforme a la programación introducida.

Como habrás observado, tanto el diagrama de bloques como el panel de control, se ha ido construyendo gradualmente, implementando las distintas estructuras consecutivamente(*), esto además de facilitar la comprensión permite visualizar distintas funciones interactuando, dado que en un programa lo habitual es que se trabaje con todas estas estructuras de forma simultánea.

Gracias por dedicar tu tiempo a la lectura de esta entrada; si detectas cualquier error y deseas informarnos, estaremos encantados de recibir tu comunicación.

(*) Excepto en la estructura Initialize Array.

dimecres, 25 de gener del 2017

Labview

Panel de control
El panel de control, como su nombre indica, contiene los elementos de control en forma de botones (todo o nada) y/o otros elementos como , entre otros, además de los elementos para visualizar la salida de datos.

Por ejemplo, si deseamos monitorizar un proceso donde las variables a controlar son la altura del fluido en el tanque, la temperatura de reacción, la temperatura del refrigerante, la presión del reactor, caudales de entrada y de salida, así como otras variables típicas en los sistemas de control e instrumentación podemos construir un panel de control como el que sigue:

 
Imagen 1. Ejemplo panel de control.

El diseño del panel de control es algo muy personal que dependerá de la necesidad que se desea cubrir y de la disponibilidad por parte de la empresa de los sensores y equipos de medida adecuados para alimentar el sistema de información. 

La elevada versatilidad de Labview permite, por ejemplo, integrar el lenguaje de programación de autómatas, ofreciendo la posibilidad de programar entornos productivos con filosofía colaborativa.

A continuación, se muestra el panel de control de lo que podría ser una línea productiva  con autómatas.

Imagen 2. Ejemplo panel de control.

Los objetos que aparecen en el mismo son fácilmente programables, por ejemplo, intervalo de la variable o formato del valor, así como la etiqueta y la tipología de dato (doble precisión, precisión simple, número complejo, etc.) puede ser modificado desde la ficha de propiedades del terminal que se abre cuando hacemos click con el botón derecho sobre el mismo y seleccionamos properties.

Imagen 3. Ejemplo de panel de control personalizado.

Diagrama de bloques
Después de construir el panel frontal, es hora de añadir el código usando representaciones gráficas o funciones para controlar los objetos del panel frontal. El diagrama de bloques contiene esta fuente de código gráfico. Los objetos sobre el diagrama de bloques incluye terminales, nodos y funciones. La construcción del diagrama de bloques se hace mediante la conexión de estos objetos con cableado.

Terminales del diagrama de bloques
Puedes configurar los controles e indicadores del panel de control frontal para que aparezcan como iconos o como terminales según el tipo de dato sobre el diagrama de bloques.

De forma predefinida los objetos del panel frontal de control aparecen como iconos.
  • Tipología de controles e indicadores
La siguiente tabla muestra los símbolos de diferentes tipologías de terminales de control y terminales indicadores.


Imagen 4. Símbolos de diferentes tipologías de terminales.

Imagen 5. Otros símbolos de diferentes tipologías de terminales.
  • Constantes
Las constantes son terminales del diagrama de bloques que aportan valores constantes fijados al diagrama de bloques. Las constantes universales son constantes con valores fijos, tal como el número pi (π) como el infinito (∞). Las constantes definidas por el usuario son constantes que tú defines y editas antes de ejecutar una VI.

Etiquetar una constante es tan sencillo como hacer click con el botón derecho sobre la misma y seleccionar Visible Items < Label.
    • Constantes universales. LabVIEW incluye los siguientes tipos de constantes universales:
      • Constantes universales numéricas.
      • Constantes universales de cadena.
      • Constantes universales de archivo.
    • Constantes definidas por el usuario. La paleta de funciones incluye constantes organizadas por tipo, tal como booleanos, numéricas, de anillo, enumeradas por tipo, color de la caja, cadena, matriz, clúster y constantes de trayectoria.
Nodos del diagrama de bloques
Los nodos son objetos del diagrama de bloques que tienen entradas (inputs) y/o salidas (outputs) que realizan operaciones cuando se ejecuta la VI.

LabVIEW incluye los siguientes tipos de nodos:
  • Funciones.
    • Funciones numéricas
      • Usa las funciones numéricas para crear y establecer operaciones aritméticas, trigonométricas, logarítmicas y complejas.

Imagen 6. Ejemplo de adquisición, selección, cambio tipo de dato, operación aritmética.

Si nunca antes has trabajado con LabVIEW se recomienda comenzar la instrucción con pequeños programas como el mostrado a continuación para habituarse a estructurar en el formato de bloques las operaciones implicadas en nuestros procesos. 

Si intentamos desarrollar un programa complejo desde cero es muy probable que nos encontremos con enormes dificultades para visualizar adecuadamente el avance de la programación y la localización de errores. 

Por lo tanto, es recomendable descomponer nuestro programa en pequeños módulos que finalmente acabaremos implementando.

Imagen 7. Ejemplo de funciones numéricas para la resolución de una ecuación de 2º grado.

Puedes descargar el ejemplo de la imagen 6 aquí.
    • Funciones booleanas
      • Usa las funciones booleanas para establecer relaciones lógicas, como comparaciones que permitan determinar si se cumple una determinada condición límite.

Imagen 8. Ejemplo de adquisición, selección, cambio tipo de dato, operación aritmética.
    • Funciones de cadena
      • Usa las funciones de cadena para las siguientes tareas:
        • Concatenar 2 o más secuencias de texto.
        • Extraer un subconjunto de una secuencia de texto.
        • Buscar y reemplazar caracteres o subconjuntos de una secuencia de texto.
        • Convertir datos numéricos en una secuencia.
        • Dar formato a una secuencia para su uso en un procesador de texto o hoja de cálculo.
    • Funciones de matriz
      • Usa las funciones de matriz para crear o manipular matrices, además de para las siguientes tareas:
        • Extraer datos individuales de una matriz.
        • Añadir un dato individual a una matriz.
        • Dividir una matriz.
Una manera de familiarizarse con las diversas funciones es el insertarlas en el diagrama de bloques y posteriormente, seleccionando la figura con el ratón y haciendo click con el botón derecho seleccionar Create < All Controls and Indicators (ver imagen 9).

Imagen 9. Ejemplo de creación de controladores e indicadores de una función.
    • Funciones de clúster
    • Funciones de comparación
      • Usa las funciones de comparación para comparar valores booleanos, secuencias, números, matriz y clústers.
    • Funciones de tiempo y diálogo (*)1
      • Usa las funciones de tiempo y diálogo para las siguientes tareas:
        • Manipular la velocidad con la que las operaciones se ejecutan.
        • Recuperar información sobre la hora y la fecha del reloj del PC.
    • Funciones de archivo I/O (input/output) (*)2
      • Usa las funciones de archivo I/O para las siguientes tareas:
        • Abrir y cerrar archivos.
        • Leer y escribir en archivos.
        • Crear directorios y archivos donde especifiques a través del control de directorio.
        • Recuperar información de directorio.
        • Escribir cadenas de números, matrices y clusters en archivos.
    • Funciones de onda
      • Usa las funciones de onda para llevar a cabo las siguientes tareas:
        • Construir formas de onda que incluyan los valores de forma de onda, canales de información y información de tiempo.
        • Extraer información individual de una onda.
    • Funciones de control de aplicaciones
    • Funciones avanzadas 
  • Sub VIs. Es el equivalente a subrutinas en los lenguajes de programación habituales; un programa dentro de otro programa.
  • Estructuras. Incluye elementos de control del proceso tales como 'estructuras de caso', 'estructuras en secuencia', entre otros. (ver imagen 15)
  • Nodos de fórmula. Estructuras redimensionables para la introducción de ecuaciones directamente en el diagrama de bloques.
  • Nodos de expresión
    • Usa los nodos de expresión para calcular expresiones o ecuaciones que contienen una sola variable. Los nodos de expresión son útiles cuando una ecuación sólo tiene una variable.
    • Los nodos de expresión utilizan el valor que pasa al terminal de entrada como el valor de la variable. El terminal de salida devuelve el valor del cálculo.
  • Nodos de propiedad. Usa los 'nodos de propiedad' para obtener o configurar varias propiedades de una aplicación o VI. Se pueden leer o escribir múltiples propiedades usando un simple nodo, sin embargo algunas propiedades no son reescribibles. Puedes usar la herramienta de posicionamiento para redimensionar el 'nodo de propiedad' y añadir más terminales.
  • Nodos de invocación. Usa los 'nodos de invocación' para realizar acciones o métodos sobre una aplicación o VI. Selecciona el método mediante el uso de la herramienta de operación para seleccionar el método del terminal.
  • Nodos de interfaz de código (NICs).
  • Llamada por nodos de referencia.
  • Llamada por nodos de librería.
En el ejemplo de la imagen 1, una vez situados los elementos en el panel de control podemos acceder al correspondiente diagrama de bloques para comenzar con la programación de los elementos y su interrelación para que el sistema se comporte tal y como deseamos según nuestros requerimientos.

Los elementos aparecen más o menos ordenados en el diagrama de bloques y será nuestra tarea la de situarlos de un modo que nos resulte cómodo establecer las conexiones entre los mismos para que la programación integrada sea coherente y el programa se ejecute adecuadamente sin generar errores. 

Además de los elementos que aparecen en el diagrama de bloques, deberemos añadir todos los "auxiliares" necesarios para que la programación se ajuste a los requerimientos que habremos de haber establecido previamente al iniciar el proyecto de programación. 

Del ejemplo anterior tenemos que el diagrama de bloques es el que sigue:

Imagen 10. Diagrama de bloques ejemplo anterior.

Los objetos del panel de control aparecen como terminales en el diagrama de bloques. Si hacemos doble click sobre un terminal del diagrama de bloques se nos mostrará el control o indicador correspondiente del panel frontal.

Estos son algunos de los controles más habituales en su vista del diagrama de bloque.


Imagen 11. Elemento de control numérico.

A través de la ventana del diagrama de bloques añadimos los elementos de medida o entrada de datos que nutrirán nuestros indicadores del panel de control y también lo referente a registros de las mediciones, que se irán almacenando en nuestra base de datos para su posterior estudio. Si lo deseamos, también podemos implementar una función estadística que nos devolverá un análisis de aquellas variables de proceso que consideremos que es necesario estudiar para una posible mejora de proceso, por ejemplo, de las condiciones óptimas de refrigeración de la unidad de proceso.

             (a)  (b) 
Imagen 12. (a) Elemento de entrada de datos. (b) Vista de icono.

Ahora es el momento de realizar las conexiones entre los diferentes terminales; estas conexiones indicarán el sentido en el que fluye la información y su formato será característico del tipo de dato (digital, analógico, etc.). 

Los elementos de entrada de datos pueden ser multivariable, lo que significa que para procesar los datos habrá que separarlos, a continuación se muestra el elemento habitualmente utilizado para esta finalidad.


(a) (b)                   
Imagen 13. (a) Elemento de cribado de datos. (b) Vista de icono.

Imagen 14. Elemento de medida con cribado de datos.

El cableado que une los elementos de la imagen 6 indica que los datos que fluyen a través del mismo es es del tipo dinámico o contínuo.


Imagen 15. Menú del elemento de cribado de datos.

Otra funcionalidad habitualmente utilizada y muy útil para el control e instrumentación de procesos es la creación de registros con los datos que el proceso genera.

Imagen 16. Funcionalidad escritura de datos en registro.

La estructura empleada para crear el registro es secuencial y se suele implementar en la denominada Flat Sequence Structure; la primera etapa crea el archivo y lo nutre de los datos que llegan de los distintos dispositivos; la segunda etapa permite introducir un comentario u cualquier otro tipo de input y finalmente la tercera etapa cierra el archivo.

La estructura anterior se puede ampliar añadiendo progresivamente más etapas que se irán ejecutando secuencialmente.

Iremos ampliando el contenido del blog con programas hechos a medida. Si tienes alguna necesidad específica aquí te podemos ayudar.

(*)1 Ideales para sistemas de control con retraso.
(*)2 Recomendadas para modelización de sistemas.

Descarga aquí el software LabVIEW.

Gracias por dedicar tu tiempo a la lectura de esta entrada; si detectas cualquier error y deseas informarnos, estaremos encantados de recibir tu comunicación.