Comment ajouter une S-function C++ à Simulink

Dans nos exemples précédents tels que Exemple Matlab Level 2 S-Function : onde sinusoïdale (sortie continue) nous avons montré comment créer une S-function simple en C++.

Voici comment ajouter une S-function C++ à Simulink :

Étape 1 : Créer le fichier de code source de la S-function

Dans le répertoire que vous avez ouvert dans Matlab/Simulink, créez un nouveau fichier nommé par ex. sine_wave_generator.cpp. Voir Exemple Matlab Level 2 S-Function : onde sinusoïdale (sortie continue) pour un exemple du code C++.

Je recommande d’utiliser Visual Studio Code au lieu de Matlab comme éditeur C++.

Étape 2 : Compiler la S-function

Ouvrez un terminal et exécutez

build_sine_wave.sh
mex sine_wave_generator.cpp

Je ne recommande pas d’exécuter ceci dans Matlab même si c’est possible. Je recommande de toujours utiliser un terminal système.

Le processus de compilation fonctionne uniquement si la dernière ligne de la sortie est MEX completed successfully.

Si vous voyez une autre sortie, vous devez déboguer le problème.

Les problèmes courants sont :

Pour les tests, je recommande de créer un nouveau modèle Simulink au lieu de réutiliser un ancien.

Étape 4 : Ajouter un bloc S-function

Commencez d’abord par cliquer sur le dialogue pour ajouter un nouveau bloc :

Simulink library browser

Maintenant, cliquez sur User-defined functions et sélectionnez le bloc S-function. Ne sélectionnez pas le bloc Matlab Level-2 S-function même si vous utilisez une S-function de niveau 2. Les S-functions de niveau 2 fonctionnent très bien avec le bloc normal S-function.

Simulink add S function block

Faites glisser ce bloc dans la zone principale du modèle Simulink, c’est-à-dire le grand espace blanc vide dans l’autre fenêtre qui se trouve généralement juste derrière le dialogue library browser :

Simulink drag S function

Étape 5 : Configurer le bloc S-function

Double-cliquez sur le bloc S-function pour ouvrir le dialogue de configuration :

Simulink double click S function

Dans le dialogue, éditez le Name et entrez le nom de la S-function.

Le nom de la S-function est toujours le nom du fichier .cpp sans l’extension .cpp.

Dans notre cas, le fichier C++ est nommé sine_wave_generator.cpp, donc le nom de la S-function est sine_wave_generator.

Appuyez sur Apply pour sauvegarder les changements et fermer le dialogue.

Dans notre exemple, nous pouvons connecter le bloc S-function à un bloc Scope pour visualiser la sortie.

Ce n’est pas obligatoire mais c’est une bonne façon de vérifier que la S-function fonctionne comme attendu.

Afin d’ajouter le bloc Scope, cliquez sur l’icône Library browser dans la barre de navigation à nouveau :

Simulink library browser

Cliquez sur Sinks et sélectionnez le bloc Scope :

Simulink add Scope block

Faites glisser le bloc Scope dans la zone principale du modèle Simulink :

Simulink drag scope

Fermez le dialogue Library browser.

Maintenant, connectez la sortie du bloc S-function à l’entrée du bloc Scope :

Simulink connect S function

Les blocs connectés devraient maintenant ressembler à ceci :

Simulink connected S function

Cliquez sur le bouton Run dans la barre d’outils Simulink pour exécuter la simulation :

Simulink run simulation

Étape 8 : Vérifier le scope

Si tout fonctionne comme attendu, vous pouvez maintenant double-cliquer sur le bloc Scope pour voir la sortie de la S-function :

Simulink double click scope

Ceci ouvrira une nouvelle fenêtre montrant la sortie du scope de la S-function :

MATLAB Continous S Function Sine Wave Generator


Consultez les articles similaires par catégorie : Matlab/Simulink