result = fmiModelExchange(fmu, tStop)
result = fmiModelExchange(fmu, tStop, dt)
| Paramètre | Description |
|---|---|
| fmu | une chaîne de caractères : le chemin d'une archive .fmu, ou d'un répertoire de FMU déjà extrait. La FMU doit fournir l'interface Model Exchange. |
| tStop | un scalaire réel strictement positif : l'instant d'arrêt. La simulation débute à l'instant 0. |
| dt | un scalaire réel strictement positif optionnel : le pas d'intégration fixe. En son absence il vaut par défaut tStop / 1000. Le Model Exchange demande en général un pas plus fin que la co-simulation, car Nelson intègre lui-même les états. |
| Paramètre | Description |
|---|---|
| result | une structure scalaire avec les champs time (N x 1), outputNames (1 x nOut) et outputs (N x nOut). |
fmiModelExchange importe une unité de maquette fonctionnelle (FMU) conforme à l'interface FMI 2.0 ou 3.0 Model Exchange et l'intègre avec le solveur de Nelson.
La différence essentielle avec fmiCoSimulate est de savoir qui possède le solveur. Une FMU de co-simulation contient son propre solveur et est avancée par doStep. Une FMU Model Exchange n'expose que les équations du modèle (dérivées des états, sorties et indicateurs d'événement) ; c'est l'outil importateur qui fournit le solveur. fmiModelExchange intègre les états continus de la FMU avec une méthode de Runge-Kutta d'ordre 4 à pas fixe et gère les événements d'état détectés en fin de pas (passage en mode événement, exécution du point fixe de mise à jour discrète, relecture des états continus).
Aucune entrée externe n'est appliquée : les paramètres et entrées conservent leurs valeurs initiales. Une erreur est levée lorsque la FMU ne fournit pas l'interface Model Exchange.
fmu = [modulepath('nflow_fmi', 'root'), '/examples/VanDerPol.fmu'];
r = fmiModelExchange(fmu, 20, 0.01);
plot(r.time, r.outputs); legend(r.outputNames);
| Version | Description |
|---|---|
| 2.0.0 | version initiale |