Simulink Coder

Principales fonctionnalités

  • Code ANSI/ISO C et C++ et fichiers exécutables pour les modèles Simulink et Stateflow discrets, continus ou hybrides
  • Génération de code incrémentale pour les modèles complexes
  • Prise en charge des types de données entières, en virgule flottante et en virgule fixe
  • Génération de code pour les modèles monocadence, multicadence et asynchrones
  • Exécution de code monotâche, multitâche et multicœur avec ou sans système d'exploitation en temps réel (RTOS)
  • Simulation du mode externe pour la mise au point des paramètres et le contrôle des signaux

Système aérien complexe modélisé en utilisant Simulink.

Sélection et utilisation de cibles

Simulink Model Explorer fournit une interface utilisateur unique dans Simulink pour configurer tous les paramètres de génération de code. A partir de Model Explorer, vous pouvez :

  • Sélectionner une cible de génération de code
  • Configurer la cible pour la génération de code
  • Générer du code pour les modèles ou sous-systèmes

Code Generation Advisor vérifie votre modèle et vos paramètres de génération de code et offre des conseils pour améliorer votre configuration en fonction de vos besoins. Lorsque vous avez identifié les paramètres optimaux pour votre projet, vous pouvez les enregistrer sous la forme d'un ensemble de configuration réutilisable avec d'autres modèles.

Large aircraft system modeled using Simulink.
Système aérien complexe modélisé en utilisant Simulink. Simulink Coder prend en charge les fonctions avancées de Simulink pour la modélisation à grande échelle, y compris les blocs modèles, les variantes de sous-systèmes et les tableaux de bus.

Sélection des cibles

Simulink Coder utilise des fichiers système cibles afin de convertir vos modèles en code source et en fichiers exécutables. Les fichiers cibles définissent l'environnement dans lequel votre code généré sera exécuté. Simulink Coder inclut les fichiers cibles pour plusieurs configurations prêtes à l'emploi, et prend également en charge les cibles tierces et personnalisées. Les cibles intégrées sont les suivantes :

Cible temps réel générique : génère le code pour une mise au point interactive des paramètres de modèle, journalise et affiche en temps réel les résultats de la simulation et exécute une allocation statique des données (pour une exécution en temps réel efficace)

Cible malloc temps réel générique : utilise l'allocation de mémoire dynamique dans le code généré pour vous permettre d'inclure plusieurs instances de votre modèle ou plusieurs modèles dans un même fichier exécutable

Cible de simulation rapide (RSim) : fournit une plate-forme de test rapide et flexible pour l'exécution d'études de simulation par lots ou Monte-Carlo à l'aide de solveurs à pas fixes ou variables, et permet l'enregistrement des données de chaque exécution dans des fichiers de sortie uniques

Vous pouvez étendre ces cibles afin de créer des interfaces d'exécution personnalisées et des fichiers de pilote de périphérique, ce qui vous permet de cibler votre environnement spécifique et d'accéder aux fonctions de débogage et d'exécution de Simulink Coder qu'il contient.

Compilation et exécution du code généré

Simulink Coder offre la prise en charge intégrée de la compilation et de l'exécution du code généré avec les principaux environnements de développement, notamment :

  • Eclipse IDE
  • Microsoft® Visual C++® IDE
  • Système d'exploitation Linux®
  • Système d'exploitation Windows®

Vous pouvez générer et déployer du code C et C++ optimisé dans des systèmes embarqués en temps réel à l'aide de Embedded Coder.

Définition et contrôle des données

Simulink Coder vous permet de définir et de contrôler la façon dont les données de modèle apparaissent dans le code généré. Vous pouvez également gérer vos données en :

  • Déclarant des types de données entières, en virgule flottante et en virgule fixe
  • Spécifiant le stockage afin de mettre au point et de calibrer les paramètres ou les constantes
  • Spécifiant le stockage afin de contrôler et de journaliser les données de signaux
  • Réutilisant le stockage pour minimiser les données de portée locale

Simulink Coder génère le code à partir des données stockées dans votre diagramme Simulink ou dans un dictionnaire de données accessible via Simulink Model Explorer. En utilisant différents jeux de dictionnaires de données, vous pouvez redéployer le code vers des cibles diverses à partir d'un seul modèle.

Simulink Model Explorer showing various data types and storage classes used in a model.
Simulink Model Explorer montrant les différents types de données et classes de stockage utilisés dans un modèle.

Generating Code

Simulink Coder offers comprehensive code generation support for Simulink and Stateflow features and components, including:

  • Model blocks for generating code incrementally
  • Atomic subsystems and atomic subcharts for reusing code via reentrant C functions
  • Bus objects and arrays of buses for generating structures in your code
  • S-functions for simulating and interfacing with legacy code
  • MATLAB function blocks in Simulink and MATLAB functions in Stateflow for generating code from models with MATLAB components

Simulink Coder also supports the Simulink product family, including fixed-point modeling, physical modeling, signal processing and communications modeling, and rapid prototyping and hardware-in the-loop (HIL) testing products.

Code Generation Options

Simulink Coder provides user-selectable options to facilitate execution of generated code in desktop and simulation environments. These options include:

  • Code reuse
  • Expression folding
  • Signal storage reuse
  • Dead path elimination
  • Parameter inlining
  • Single-precision and prebuilt math libraries (including ISO C and GNU C)
Generated code using for-loop fusion and expression folding for a 10-element array model.
Generated code using for-loop fusion and expression folding for a 10-element array model. Simulink Coder produces efficient and readable code for single and multidimensional signals.

Exécution du code dans un environnement en temps réel

Simulink Coder fournit un atelier complet pour l'exécution en temps réel du code généré et son incorporation dans votre environnement d'exécution. Il génère un code monocadence ou multicadence en fonction des périodes d'échantillonnage périodique que vous spécifiez dans le modèle.

Modes d’exécution

Le code peut être déployé avec ou sans système d'exploitation en temps réel (RTOS), en mode monotâche, multitâche ou asynchrone.

Mode monotâche

En mode monotâche, un ordonnanceur simple appelle le code généré dans un « thread » d'exécution unique, évitant la préemption entre les cadences.

Mode multitâche

En mode multitâche, un ordonnanceur déterministe à taux monotone appelle le code généré, autorisant la préemption entre les cadences. Dans un environnement carte nue, vous utilisez les interruptions imbriquées pour assurer la préemption du code. Dans un environnement de système d'exploitation en temps réel (RTOS), vous utilisez la priorité et la préemption de tâche.

Mode asynchrone

En mode asynchrone, les cadences non périodiques ou asynchrones sont définies à l'aide des S-fonctions Simulink. Simulink Coder traduit ces cadences dans le code nécessaire pour votre environnement d'exécution. Vous modélisez et générez le code pour les événements, tels que les interruptions matérielles, et déclenchez des sous-systèmes en tant que tâches indépendantes. Vous pouvez prendre exemple de la bibliothèque de blocs asynchrones incluse pour créer une bibliothèque appropriée à d'autres environnements.

Déploiement en temps réel

Simulink et Simulink Coder proposent pour le déploiement en temps réel un ensemble complet de fonctions indépendantes de la cible. En particulier :

  • Priorités de tâche que vous pouvez spécifier pour chaque cadence dans votre modèle
  • Compteurs et horloges de production pour calculer le temps absolu et le temps écoulé
  • Bloc de transition de cadence permettant de spécifier les mécanismes de transfert de données entre les cadences (par exemple, sémaphore, mutex et double tampon) pour vous permettre de réaliser des compromis parmi l'intégrité des données, le déterminisme et les performances
  • Détection des surcharges afin d'incorporer la logique de traitement des erreurs pour chaque cadence

Intégration du code existant

Vous pouvez personnaliser le code généré et son environnement en temps réel en incorporant du code personnalisé C, Fortran, Ada et C++ pour la simulation et la génération de code. Les outils de personnalisation de Simulink Coder incluent un compilateur TLC (Target Language Compiler), des blocs de code personnalisés, des modèles de fichiers makefile, des API de traitement de construction et une interface S-Function Builder. L'outil Legacy Code Tool permet d'intégrer rapidement les fonctions C et C++ existantes dans vos modèles Simulink, ce qui est particulièrement utile pour intégrer du code à temps discret généralement utilisé dans les systèmes embarqués.

Ajustement des paramètres et enregistrement des données

Simulink Coder vous aide à optimiser les performances de votre algorithme et à améliorer le comportement de l'exécution du code en vous permettant d'interagir avec l'exécutable généré et de l'analyser.

Simulink Coder vous permet de contrôler et d'ajuster les paramètres et les signaux de bloc à l'aide des interfaces de données suivantes :

API C basée sur la cible : permet au code écrit par l'utilisateur d'accéder aux paramètres et aux sorties de bloc en dehors de MATLAB et de Simulink

Fichier d'échange de données ASAP2 basé sur l'hôte : permet d'utiliser la description de données standard ASAP2 pour les systèmes de mesure, de calibration et de diagnostic en dehors de MATLAB et de Simulink

Mode externe Simulink : permet de télécharger de nouvelles valeurs de paramètres et de charger des valeurs de signaux en vue de les afficher dans Simulink ou de les enregistrer dans l'espace de travail MATLAB. (Si vous ouvrez une boîte de dialogue pour un bloc source, vous interrompez l'exécution de Simulink. Vous pouvez alors modifier les valeurs des paramètres. Vous devez fermer la boîte de dialogue pour valider les modifications et relancer l'exécution de Simulink.)

Essayer Simulink Coder

Obtenir une version d'évaluation

Génération de code embarqué pour des contrôleurs de moteur AC

Demander un tutoriel