info = NFlow.sspInfo(sspFile)
nflowFile = NFlow.sspImport(sspFile, destinationDirectory)
sspFile = NFlow.sspExport(sspFile, components, connections)
sspFile = NFlow.sspExportDiagram(nflowFile, sspFile)
NFlow.writeSsv(ssvFile, parameterValues)
| Paramètre | Description |
|---|---|
| sspFile | un vecteur de caractères : chemin d'une archive .ssp (un zip contenant un SystemStructure.ssd et ses FMU de composants sous resources/). |
| destinationDirectory | un vecteur de caractères : un répertoire existant qui reçoit les FMU de composants extraits et le modèle .nflow généré. |
| nflowFile | un vecteur de caractères : chemin d'un diagramme .nflow dont les blocs sont des blocs fmu (tel que produit par NFlow.sspImport), remis dans une archive SSP par NFlow.sspExportDiagram. |
| components | un tableau de structures avec les champs name et model (le chemin du modèle .nflow de chaque composant). |
| connections | un tableau de structures avec les champs startElement, startConnector, endElement, endConnector. Un startElement vide désigne une entrée du système et un endElement vide une sortie du système. |
| Paramètre | Description |
|---|---|
| info | une structure avec les champs name, systemConnectors (les connecteurs propres du système parent, name/kind), components (chacun name, source, type, implementation, parameterSources) et connections (chacune startElement, startConnector, endElement, endConnector). |
| nflowFile | le chemin du modèle .nflow écrit par NFlow.sspImport. |
SSP (System Structure and Parameterization) est un standard ouvert qui regroupe plusieurs FMU et la façon dont leurs connecteurs sont câblés dans une seule archive .ssp.
NFlow.sspInfo lit le SystemStructure.ssd de l'archive et décrit la composition sans charger aucun binaire : le nom du système, ses composants et chaque connexion entre connecteurs.
NFlow.sspImport câble chaque composant dans un diagramme nflow : tout composant FMI 3.0 Co-Simulation devient un bloc fmu, les connecteurs sont associés aux ports par leur nom, et une sortie de composant routée vers une sortie du système est exposée comme un puits enregistrable. Les valeurs de paramètres liées à un composant — via un fichier .ssv (System Structure Parameter Values) ou intégrées directement dans le .ssd — sont appliquées à son bloc FMU. Les composants non FMI 3.0 sont signalés avec leur version déclarée plutôt que d'échouer de façon obscure.
NFlow.sspExport réalise l'opération inverse : il exporte chaque modèle de composant vers un FMU, liste ses connecteurs et écrit un SystemStructure.ssd décrivant la composition. Les connexions qui référencent le système parent (un élément de départ ou d'arrivée vide) sont déclarées comme connecteurs au niveau du système.
NFlow.sspExportDiagram est l'inverse exact de NFlow.sspImport : il prend un diagramme dont les blocs sont des blocs fmu et réémet une archive SSP qui référence directement ces mêmes FMU de composants (sans les réexporter). Les fils entre blocs FMU deviennent des connexions — les indices de ports sont retrouvés sous forme de noms de connecteurs par inspection — et chaque puits To Workspace alimenté par une sortie FMU devient un connecteur de sortie du système. Importer une archive SSP puis exporter le diagramme obtenu reproduit les composants de la composition, ses liens composant à composant et ses sorties système (une entrée système n'a pas de bloc source après import, elle n'est donc pas reproduite). Les surcharges de paramètres portées par un bloc FMU (telles qu'appliquées par NFlow.sspImport depuis un .ssv) sont réécrites dans un .ssv lié, de sorte que les valeurs de paramètres font également l'aller-retour.
NFlow.writeSsv écrit une structure nom/valeur de paramètres dans un fichier .ssv (l'inverse de NFlow.readSsv) : les valeurs logical deviennent Boolean, les entiers Integer, le reste Real.
ssp = [modulepath('nflow_fmi', 'root'), '/examples/ControlledDrivetrain.ssp'];
info = NFlow.sspInfo(ssp);
disp(info.name);
disp({info.components.name});
disp(numel(info.connections));
ssp = [modulepath('nflow_fmi', 'root'), '/examples/ControlledDrivetrain.ssp'];
work = [tempdir(), 'ssp_roundtrip'];
mkdir(work);
nflowFile = NFlow.sspImport(ssp, work);
outSsp = NFlow.sspExportDiagram(nflowFile, [work, filesep, 'RoundTrip.ssp']);
info = NFlow.sspInfo(outSsp);
disp({info.components.name});
| Version | Description |
|---|---|
| 1.0.0 | version initiale |
| 2.0.0 | NFlow.sspExportDiagram : remettre un diagramme de blocs FMU dans une archive SSP ; NFlow.writeSsv exporte les valeurs de paramètres (aller-retour SSV) |