Composition de modèles qui mélangent des blocs à temps discret et continu dans Simulink (R2016b). (a) Modèle de base. (b) Simulation du modèle de base. Crédit :Benveniste et al.
Les systèmes hybrides sont des systèmes qui présentent à la fois un comportement dynamique continu et discret, permettant plus de flexibilité dans la modélisation des phénomènes dynamiques. Les langages de modélisation de systèmes hybrides sont largement utilisés pour le développement de systèmes cyber-physiques, dans lequel le logiciel de contrôle interagit avec les appareils physiques.
Des chercheurs d'Inria et d'ANSYS/Esterel Technologies ont récemment présenté une nouvelle approche pour concevoir et mettre en œuvre des langages de systèmes hybrides. Leur méthode, décrit dans un article de Actes de l'IEEE , est basé sur les principes du langage synchrone et les techniques de compilation associées.
Les outils de modélisation de systèmes hybrides sont passés de simples interfaces à des solveurs numériques, sont ensuite devenus des langages à part entière pour la programmation de modèles exécutables de systèmes dynamiques. Ces modèles sont généralement simulés, testé, débogués et vérifiés à différentes étapes de leur chaîne de développement.
Dans des méthodes de pointe, les compilateurs vérifient généralement les modèles sources, produire des représentations intermédiaires et générer du code séquentiel pour une simulation ou une exécution efficace sur les plates-formes cibles. Cependant, ces étapes de compilation sont souvent difficiles à concevoir et à mettre en œuvre.
L'étude récente a porté sur la conception, sémantique et implémentation de langages de modélisation de systèmes hybrides. Il est basé sur l'hypothèse que ces langages sont des langages de programmation avec une sémantique de systèmes hybrides, présentant ainsi un certain nombre de nouveaux défis.
"L'essentiel est que la complexité des langages de modélisation de systèmes hybrides réels rend difficile la définition d'une sémantique formelle statique et dynamique complète, " écrivent les chercheurs dans leur article. " Loin d'être des préoccupations philosophiques abstraites, ces difficultés ont des conséquences pratiques.
Pour relever ces défis, les chercheurs ont entrepris d'identifier un noyau de langage minimal de constructions de programmation orthogonale suffisamment expressif pour écrire des modèles hybrides réalistes. Ils ont également souhaité définir une sémantique statique et dynamique détaillée de ce langage, ainsi que ses étapes de compilation.
"Le résultat est un langage de modélisation de systèmes hybrides dans lequel les constructions de programmation synchrone peuvent être mélangées avec des équations différentielles ordinaires (ODE) et des événements de passage par zéro, et un runtime qui délègue leur approximation à un solveur numérique standard, " expliquent les chercheurs dans leur article. " Nous proposons une sémantique idéale basée sur une analyse non standard, qui définit l'exécution d'un modèle hybride comme une séquence infinie de pas de temps infiniment petits."
Le cadre sémantique proposé par les chercheurs permet de spécifier et de prouver trois étapes essentielles de compilation. D'abord, il conduit à un système type qui garantit qu'un signal à temps continu n'est jamais utilisé dans des situations où un signal à temps discret est attendu, et vice versa. En outre, il assure l'absence de boucles combinatoires, ainsi que la génération de code planifié statiquement pour une exécution efficace.
« Notre approche a été évaluée dans deux implémentations :le langage académique Zélus, qui prolonge un langage rappelant Lustre avec des odes et des événements de passage à zéro, et le prototype industriel Scade Hybrid, une extension conservatrice de Scade 6, " écrivent les chercheurs dans leur article.
Par rapport à d'autres outils et langages, comme Ptolémée, l'approche utilisée par les chercheurs favorise la détection de modèles dangereux au moment de la compilation. La conséquence de ceci est que certains bons modèles sont rejetés, principalement parce que les systèmes de types résultants ne sont pas assez expressifs. D'autres études expérimentales pourraient aider à déterminer si ces systèmes types sont trop contraignants.
"La découverte de difficultés numériques est liée à la raideur reste runtime, et exclut la nécessité de disciplines de programmation trop restrictives dans les contextes industriels, " écrivent les chercheurs dans leur article. " Effectuer des analyses riches au moment de la compilation, tout en contraignant les utilisateurs, peut détecter des erreurs dans les modèles tôt ; il permet également de supprimer les contrôles d'exécution et de programmer statiquement le calcul de la fonction step et les actions de réinitialisation, ce qui conduit à un code plus efficace."
© 2018 Réseau Science X