Serie de prototipos funcionales: Ingeniería de algoritmos

Información general

La serie de prototipos funcionales es una colección de artículos que lo guían a través de los procesos de la generación de prototipos. Siga leyendo para conocer los conceptos clave, los beneficios de la generación de prototipos, la discusión sobre la elección del producto y recursos técnicos adicionales.

Contenido

Ingeniería de algoritmos

La ingeniería de algoritmos es un término creado para el diseño de algoritmos aplicados. Se refiere al proceso de transformar un algoritmo de lápiz y papel en una implementación robusta, bien probada y fácil de usar. Implementar un algoritmo para proporcionar la funcionalidad deseada en un prototipo puede ser la parte más desafiante de todo el ciclo de vida del desarrollo del producto, pero también tiene el potencial de ser la más beneficioso. Al aplicar E/S del mundo real, puede ver cómo la funcionalidad de su algoritmo cobra vida ante sus ojos. 

Este artículo examina algunas de las dificultades que un desarrollador puede experimentar al diseñar algoritmos, así como las ventajas de utilizar el diseño de sistemas gráficos para superar estos desafíos.

Desafíos de la ingeniería de algoritmos 

La implementación de algoritmos en un prototipo funcional puede ser difícil por varias razones:

Limitaciones de programación.

A menudo, los sistemas de control o procesadores que se eligen por sus capacidades de E/S, como los arreglos de compuertas programables en campo (FPGA), implican limitaciones de programación para un desarrollador. La programación para diferentes plataformas generalmente requiere conocimientos de programación para lo que pocos diseñadores a nivel de sistema son suficientemente competentes.

Implementación de algoritmos básicos.

Implementar algoritmos de bajo nivel para funcionalidades básicas lleva tiempo. La velocidad es primordial en la generación de prototipos y los diseñadores a menudo no pueden permitirse el lujo de estancarse en la implementación de un algoritmo desde cero debido a la falta de código existente.

Reformular algoritmos para múltiples plataformas.

A medida que el prototipo funcional evoluciona, muchas veces los algoritmos deben revisarse para trasladarlos a un tipo de sistema diferente. El código rara vez es funcional entre diferentes entornos de ejecución, y eso dificulta escalar una aplicación desde la generación de prototipos hasta la implementación.

Prueba y verificación.

Es difícil saber con certeza si un sistema puede cumplir con los requisitos funcionales hasta el final del juego, y es costoso comenzar de nuevo. Por ejemplo, es posible que el procesador no sea capaz de realizar la cantidad requerida de tareas paralelas con la suficiente rapidez. Es posible que no pueda lograr un tiempo de ciclo adecuado. También es posible que no pueda manejar el análisis de procesamiento intenso en tiempo real.

Las ventajas del diseño de sistemas gráficos para la ingeniería de algoritmos

El diseño de sistemas gráficos aborda y mitiga muchas de las posibles dificultades que implican los algoritmos de ingeniería para un prototipo funcional. El diseño de sistemas gráficos es un enfoque para resolver los desafíos del diseño que combina la programación gráfica intuitiva y el hardware comercial (COTS), listo para usar y flexible. Con este enfoque, usted puede utilizar un solo entorno en todas las etapas del diseño. Ahora eche un vistazo más a fondo a cómo este enfoque aborda específicamente los desafíos planteados anteriormente.

Múltiples modelos de cómputo

Una de las virtudes del diseño de sistemas gráficos es que les brinda a los programadores la capacidad de crear sus algoritmos sin importar el modelo de cálculo (MoC) con el que estén implementados. A medida que la complejidad del código para los algoritmos continúa creciendo, los programadores tienen que usar diferentes MoCs para expandir sus capacidades de codificación. Los siguientes son solo algunos modelos de cálculo que puede usar con el diseño de sistemas gráficos:

Flujo de datos

El flujo de datos es el MoC asociado más frecuentemente con el software NI LabVIEW . Con el flujo de datos, las operaciones requieren que el desarrollador inserte datos en todas las entradas antes de que se ejecuten. El flujo de datos es una estructura de codificación intuitiva que sea más fácil implementar aplicaciones como los procesos paralelos.

Matemática textual

La matemática textual es otra herramienta para crear funciones complejas fácilmente. La matemática basada en texto son una implementación legible por humanos de algoritmos complejos que son más fáciles de escribir en forma de descripción de script. Ejemplos de matemática textual son el nodo de fórmula y el nodo Script de MATLAB . Con LabVIEW, usted puede elegir la sintaxis más efectiva para el desarrollo de algoritmos, ya sea que esté desarrollando algoritmos, explorando conceptos de procesamiento de señales o analizando resultados.

Código C

A veces, el algoritmo que usted utiliza se creó originalmente en C o C++. En este caso, ya no tiene que descartar el trabajo anterior. En su lugar, puede usar el nodo C en línea o el nodo de función de la biblioteca de llamadas para llamar directamente a su código anterior desde LabVIEW. Usar el nodo C en línea para el código C preexistente o para implementar un pequeño algoritmo numérico o de matriz y usar el nodo de función de biblioteca de llamadas para acceder al código C en archivos DLL o bibliotecas compartidas.

Aprenda más sobre el uso de Python, MathWorks® MATLAB Software y C/C ++ con LabVIEW

Arquitectura de software abierta

A lo largo de los años, la plataforma LabVIEW ha experimentado una adopción a gran escala en numerosas disciplinas de diseño, lo que ha resultado en la necesidad de incorporar datos con diferentes herramientas de diseño y simulación. LabVIEW logra esta intercompatibilidad con numerosas herramientas de integración, bibliotecas y formatos de archivo. LabVIEW también ofrece una amplia variedad de integración estándar con otras herramientas de software y recursos de medidas, incluidos los siguientes:

  • DLL, bibliotecas compartidas
  • ActiveX, COM y .NET (Microsoft)
  • DDE, TCP/IP, UDP, Ethernet, Bluetooth
  • CAN, DeviceNet, Modbus, OPC
  • USB, IEEE 1394, RS232/485, GPIB
  • Bases de datos (ADO, SQL, etc.)

Con estas herramientas, es posible la integración con datos de casi todos los tipos de dispositivos de medidas y control. Al combinar LabVIEW con estándares de uso general para la comunicación de hardware, los desarrolladores pueden garantizar la compatibilidad y escalabilidad durante muchos años en el futuro.

El enfoque de LabVIEW

Los cientos de funciones en LabVIEW que cubren una amplia variedad de algoritmos tradicionales en matemáticas, procesamiento de señales, probabilidad y control son bloques de construcción esenciales para cualquier algoritmo personalizado. Estas funciones alivian la carga de escribir código de bajo nivel y brindan a los ingenieros tiempo para concentrarse en una solución en lugar de en la implementación.

Debido a que el uso de LabVIEW hace que la adquisición de datos del mundo real sea tan fácil, los usuarios encuentran valioso probar sus algoritmos con datos reales como un enfoque iterativo para ajustarlos. Con este enfoque de pruebas interactivo, puede experimentar con diferentes funciones para ver si proporcionan el resultado esperado requerido. Por ejemplo, al procesar una señal con un filtro, puede seleccionar entre una amplia variedad de soluciones, adquirir la señal real que necesita y ver los resultados en una gráfica o archivo. Si los resultados no son adecuados para la aplicación, puede seleccionar otro filtro. A menudo, es más fácil adquirir la señal real para aplicarla a un algoritmo que tomarse el tiempo para simularla en el software.

 

Hardware de COTS

El hardware comercial listo-para-usar no solo ofrece una forma económica de comenzar rápidamente a generar prototipos, sino que también, con el diseño del sistema gráfico, lo ayuda a implementar algoritmos nativos en una gran cantidad de objetivos diferentes con E/S integradas. Utilice procesadores en tiempo real como los que encuentra en las plataformas NI CompactRIO y PXI para integrar E/S con control determinista para mayor fiabilidad. Esto es esencial en casos como las aplicaciones de hardware-in-the-loop, en las que necesita integrar hardware y software para simular dinámicamente el entorno que los algoritmos de control intentan controlar.

Además de usar solo procesadores en tiempo real con FPGA, puede incorporar LabVIEW en su aplicación para transportar código de un tipo de hardware COTS a otro. Por ejemplo, puede transportar código que analiza una señal en un escritorio para E/S del mundo real y usarlo en formatos como módulos PXI o procesadores embebidos sin tener que reescribirlo significativamente. De hecho, diseñar y verificar un prototipo primero en una PC de escritorio y luego transferirlo a un procesador de 32 bits para su implementación en un sistema integrado puede ahorrar un tiempo de desarrollo significativo y un reelaboración costosa debido a las limitaciones de diseño perdidas.

Herramientas para el diseño de simulación y control

Debido a que LabVIEW es una plataforma abierta, usted puede mapear sus datos de medidas con resultados simulados. Incluso puede intercambiar datos físicos y simulados para el modelado de comportamiento. Además, puede realizar pruebas físicas con estímulos simulados para proporcionar un entorno de pruebas robusto.

Utilice la simulación con LabVIEW para verificar y predecir el rendimiento de los criterios de diseño. Puede importar diseños en herramientas de simulación independientes para una evaluación temprana del diseño. El siguiente paso implica el diseño automatizado o la formación del modelo y las herramientas para automatizar el proceso de construcción. Guardar la información del estado del sistema y las señales de salida, si corresponde, lo ayuda a depurar aplicaciones, así como a establecer especificaciones para el rendimiento de la aplicación.

Use diagramas de bloques de control como los que se encuentran en el LabVIEW Control Design and Simulation Module para diseñar un sistema de control lineal, no lineal, discreto o continuo. Con este estilo de programación abstracto, usted puede programar con conceptos de control tradicionales como bloques de función de transferencia, integradores, diferenciadores y ciclos de retroalimentación. Con este diagrama de bloques de alto nivel, puede desarrollar soluciones desde el nivel conceptual, donde puede aprovechar su experiencia y conocimiento previos sobre un sistema.

Figura 1. Control PID con diseño de control y simulación

 Pasos siguientes

Diseñar los algoritmos que implementan la funcionalidad de su prototipo puede ser un proceso desafiante. El diseño de sistemas gráficos es un enfoque que aprovecha la estrecha integración entre el software gráfico intuitivo y el hardware COTS para ayudarlo a superar los desafíos asociados con la ingeniería de algoritmos para que su prototipo esté listo y funcionando rápidamente a un costo menor.

Para obtener más información sobre los aspectos técnicos de la transición de un diseño en papel a un diseño de software, consulte los recursos relacionados a continuación.

Pasos siguientes