https://www.acsysteme.com/wp-content/uploads/2021/07/Saga2021-MBz-Model-Reference-Simulink-750x316.png

S01E04 : Faster Simulink simulation with “Reference Model”, by Marouane BENAZIZ

Please accept our most sincere apologies, we can not show you this webpage in English. You will find it in its original language below, and a link to a Google Translate version.

Vous êtes un utilisateur de Simulink et vous trouvez que vos temps de simulation sont trop longs ? Avez-vous pensé à passer une partie de votre modèle en modèle référencé ? C’est ce que nous avons fait pour un de nos clients pour lequel nous développons une plateforme de validation des algorithmes de contrôle de véhicule hybride. La validation de ce type de systèmes est coûteuse en temps de calculs car elle nécessite de simuler plusieurs scénarios pour différentes configurations de véhicule, ce qui peut durer plusieurs heures voire plusieurs jours. Voici une solution !

Qu’est-ce que le modèle référencé ?

Le modèle référencé (« Model Reference ») est un bloc Simulink qui permet de référencer un modèle dans un autre. Dans notre cas, on référence le modèle contenant l’algorithme de contrôle (bloc « Contrôle » ci-dessous) dans un modèle dit « parent » qui est la plateforme de simulation.

https://www.acsysteme.com/wp-content/uploads/2021/07/Saga2021-MBz-Model-Reference-Simulink-750×316.png

Lorsque le modèle référencé est utilisé en mode « Accelerator », il est compilé une première fois et est ensuite réutilisé pour toutes les simulations suivantes. Tant que le bloc « Contrôle » n’est pas modifié, il n’y aura pas besoin de le recompiler.

Comment convertir un sous-système en modèle référencé ?

La conversion du sous-système (subsystem) en modèle référencé nécessite quelques étapes de préparation du modèle afin qu’il respecte certaines règles. En particulier, nous avons :

  • défini les bus d’entrée et de sortie du modèle référencé,
  • résolu les signaux qui passaient directement à travers le bloc « Contrôle » en utilisant des blocs « Signal Conversion »,
  • géré le comportement des « trigger ports » présents dans le modèle référencé,
  • résolu les boucles algébriques de la plateforme, suite au passage du bloc « Contrôle » en modèle atomique.

Les règles à respecter pour la conversion sont définies dans la page suivante : Convert Subsystems to Referenced Models – MATLAB & Simulink (mathworks.com)

Une fois que le modèle référencé est prêt, nous avons écrit un script qui permet de compiler le modèle avec mingw64, puis de compresser les fichiers dans une archive « .zip ». Cela permet de stocker et d’échanger proprement les fichiers du modèle référencé compilé.

Enfin, nous avons lancé des simulations de validation afin de garantir la stricte égalité des résultats de simulation avant et après la conversion et d’évaluer le gain de temps de simulation obtenu.

Quels sont les bénéfices obtenus ?

Voici les résultats grâce au « Reference Model » :

  • le temps de simulation est divisé par 3 : une simulation dure parfois plusieurs heures, ce gain de temps est donc très appréciable,
  • le temps perdu pour compiler le bloc « Contrôle » est largement compensé par le temps gagné lors des simulations,
  • la plateforme est plus légère à manipuler et s’ouvre plus rapidement : le modèle référencé n’est chargé que lorsque cela est nécessaire,
  • cette technique permet une approche modulaire : il est aisé de changer de versions d’algorithme de contrôle en modifiant simplement la référence du bloc « Model Reference »,
  • la possibilité de protéger l’algorithme de contrôle avec Simulink Coder est pertinente : elle permet de ne pas révéler sa propriété intellectuelle.

Nous appliquons la technique du modèle référencé sur d’autres applications et notamment pour la validation d’algorithmes de contrôle pour les systèmes ADAS.

Pour avoir plus d’informations sur les détails techniques et les subtilités des modèles référencés, vous pouvez nous contacter et consulter la page Mathworks dédiée à ce sujet Model References – MATLAB & Simulink (mathworks.com).

Share this post: