Composición de modelos que mezclan bloques de tiempo discreto y continuo en Simulink (R2016b). (a) Modelo básico. (b) Simulación de modelo básico. Crédito:Benveniste et al.
Los sistemas híbridos son sistemas que exhiben un comportamiento dinámico tanto continuo como discreto, permitiendo una mayor flexibilidad en el modelado de fenómenos dinámicos. Los lenguajes de modelado de sistemas híbridos se utilizan ampliamente para el desarrollo de sistemas ciberfísicos, en el que el software de control interactúa con los dispositivos físicos.
Investigadores de Inria y ANSYS / Esterel Technologies han presentado recientemente un nuevo enfoque para diseñar e implementar lenguajes de sistemas híbridos. Su método, esbozado en un documento en Actas del IEEE , se basa en principios de lenguaje síncrono y técnicas de compilación asociadas.
Las herramientas de modelado de sistemas híbridos han evolucionado de ser meras interfaces a solucionadores numéricos, luego se convirtieron en lenguajes de pleno derecho para la programación de modelos ejecutables de sistemas dinámicos. Estos modelos generalmente se simulan, probado, depurado y verificado en diferentes etapas de su cadena de desarrollo.
Con métodos de última generación, los compiladores suelen comprobar los modelos fuente, producir representaciones intermedias y generar código secuencial para una simulación o ejecución eficiente en plataformas de destino. Sin embargo, estos pasos de compilación son a menudo difíciles de diseñar e implementar.
El estudio reciente se centró en el diseño, semántica e implementación de lenguajes de modelado de sistemas híbridos. Se basa en el supuesto de que dichos lenguajes son lenguajes de programación con semántica de sistemas híbridos, por lo tanto, presenta una serie de nuevos desafíos.
"La conclusión es que la complejidad de los lenguajes de modelado de sistemas híbridos reales dificulta la definición de una semántica formal estática y dinámica integral, "escriben los investigadores en su artículo". Lejos de ser preocupaciones filosóficas abstractas, estas dificultades tienen consecuencias prácticas ".
Para abordar estos desafíos, los investigadores se propusieron identificar un núcleo de lenguaje mínimo de construcciones de programación ortogonales que sea lo suficientemente expresivo como para escribir modelos híbridos realistas. También deseaban definir la semántica estática y dinámica detallada de este lenguaje, así como sus pasos de compilación.
"El resultado es un lenguaje de modelado de sistemas híbridos en el que las construcciones de programación síncrona se pueden mezclar con ecuaciones diferenciales ordinarias (ODE) y eventos de cruce por cero, y un tiempo de ejecución que delega su aproximación a un solucionador numérico estándar, "explican los investigadores en su artículo." Proponemos una semántica ideal basada en análisis no estándar, que define la ejecución de un modelo híbrido como una secuencia infinita de pasos de tiempo infinitesimalmente pequeños ".
El marco semántico propuesto por los investigadores se puede utilizar para especificar y probar tres pasos esenciales de compilación. Primero, conduce a un sistema de tipos que garantiza que nunca se utilice una señal de tiempo continuo en situaciones en las que se espera una señal de tiempo discreto, y viceversa. Además, asegura la ausencia de bucles combinatorios, así como la generación de código programado estáticamente para una ejecución eficiente.
"Nuestro enfoque ha sido evaluado en dos implementaciones:el lenguaje académico Zélus, que extiende un lenguaje que recuerda a Lustre con Odas y eventos de cruce por cero, y el prototipo industrial Scade Hybrid, una extensión conservadora de Scade 6, "escriben los investigadores en su artículo.
En comparación con otras herramientas e idiomas, como Ptolomeo, el enfoque utilizado por los investigadores favorece la detección de modelos inseguros en el momento de la compilación. La consecuencia de esto es que se rechazan algunos buenos modelos, principalmente porque los sistemas de tipos resultantes no son lo suficientemente expresivos. Más estudios experimentales podrían ayudar a determinar si estos sistemas de tipos son demasiado restrictivos.
"El descubrimiento de dificultades numéricas está relacionado con la rigidez que permanece en tiempo de ejecución, y descarta la necesidad de disciplinas de programación demasiado restrictivas en contextos industriales, "escriben los investigadores en su artículo". Al realizar análisis detallados en el momento de la compilación, mientras restringe a los usuarios, puede detectar errores en modelos temprano; También permite eliminar las comprobaciones en tiempo de ejecución y programar estáticamente el cálculo de la función de paso y las acciones de reinicio. lo que conduce a un código más eficiente ".
© 2018 Science X Network