Réserver une Démo
Pré. Proc.

Dépannage de Simulation OpenModelica

Bien que cette rubrique décrive les problèmes possibles qui peuvent survenir lors de l'utilisation d'OpenModelica, de nombreux points s'appliquent également à la réalisation d'une simulation à l'aide de MATLAB Simulink.

Problèmes Simulation courants

Ce tableau décrit certains problèmes courants qui peuvent empêcher la simulation d'un modèle lors de l'utilisation d'OpenModelica. Vérifiez la sortie dans l'onglet « Build » de la fenêtre Sortie système. Les messages sont extraits du compilateur OpenModelica (omc.exe), qui vous renvoie normalement aux lignes du code source d'OpenModelica. Cela vous aidera à localiser la plupart des erreurs.

Problème

Description

Le nombre d'équations est inférieur au nombre de variables. Vous avez peut-être oublié de définir certaines propriétés sur « PhSConstant », ce qui signifie que la valeur ne change pas pendant la simulation. Vous devrez peut-être fournir les valeurs de la propriété « PhSConstant » avant le démarrage de la simulation. (Définissez les valeurs via un ensemble de données Simulation .)

Les blocs qui saisissent des données dans les ports peuvent ne pas contenir de propriétés conservées. Par exemple, un Bloc « ChargePort » contient deux parties : « v : Voltage » et « i : Current ». La propriété « i : Current » doit être définie comme PhSVariable avec l'attribut « isConserved » défini sur « True ».

Les PhSConstants peuvent ne pas avoir de valeurs par défaut : elles doivent leur être fournies.

Une variable PhS peut ne pas avoir de valeur initiale pour commencer — une doit être fournie.

Les propriétés peuvent être typées par des éléments (blocs ou Type de valeur) externes au Paquetage configuré ; utilisez un connecteur d'importation Paquetage pour résoudre ce problème.

Filtres de configuration Simulation SysML

La dialogue « Configuration Simulation SysML » affiche tous les éléments du Paquetage par défaut, notamment les types de valeur, les blocs, les blocs de contrainte, les parties et les ports, Propriétés de contrainte, les connecteurs, les contraintes et Ensembles de données. Pour un modèle de taille moyenne, la liste complète peut être assez longue et il peut être difficile de trouver une erreur modélisation potentielle.

Dans l'exemple TwoTanks, si nous effaçons la propriété Tank.area 'PhSConstant' puis effectuons une validation, nous trouverons cette erreur :

Erreur : Trop peu d'équations, système sous-déterminé. Le modèle comporte 11 équation(s) et 13 variable(s).

Cette erreur indique que nous avons peut-être oublié de définir certaines propriétés pour « PhSConstant ».

Ce que nous pouvons faire maintenant est de cliquer sur le deuxième bouton à droite de la barre d'outils (Filtre pour la configuration) et d'ouvrir le dialogue illustrée ici. Cliquez sur le bouton Tout, puis décochez les cases « Supprimer Bloc » et « Supprimer la partie variable » et cliquez sur le bouton OK .

Nous aurons maintenant une liste de variables beaucoup plus courte, à partir de laquelle nous pourrons constater que « area » ne change pas pendant Simulation . Nous définissons ensuite cela comme une « PhSConstant » et fournissons une valeur initiale pour résoudre le problème.

Exemples de validation Modèle

Message

Discussion

Variable non définie dans la contrainte

Dans l'exemple TwoTanks, lorsque nous accédons à « constraintBlock.Outcontrol.Constraint », supposons que nous trouvions une erreur de frappe : nous avons tapé « v » au lieu de « b » dans la contrainte.

Donc, au lieu de :

a=b*(c+d)

Nous avons tapé :

a=v*(c+d)

Cliquez sur le bouton Valider de la barre d'outils. Ces messages d'erreur apparaîtront dans l'onglet « Modelica » :

Validation du modèle...

Erreur : variable v introuvable dans la portée OutControl. (Expression : « a=v*(c+d); " )

Erreur : une erreur s'est produite lors de l'aplatissement du modèle TanksConnectedPI

Nombre d'erreurs et d'avertissements détectés : 2

Double-cliquez sur la ligne d'erreur ; la liste de configuration s'affiche avec la contrainte en surbrillance.

Remplacez « v » par « b » et cliquez à nouveau sur le bouton Valider. Aucune erreur n'est détectée et le problème est résolu.

Conseils : L'utilisation de la vue Configuration Simulation SysML est un moyen rapide de modifier les contraintes d'un Bloc ou Bloc de contraintes. Vous pouvez :

  • Modifier une contrainte en place
  • Supprimer à l'aide du menu contextuel d'une contrainte
  • Ajouter une nouvelle contrainte en utilisant le menu contextuel d'un Bloc ou Bloc de Contrainte

Noms de variables en double

Dans l'exemple TwoTanks, accédez à constraintProperty . Supposons que nous ayons donné le même nom à deux propriétés :

  • Cliquez-droit sur e1 , sélectionnez l'option ' Rechercher dans Projet Navigateur ', et changez le nom en e2 ; recharger la dialogue 'SysML Simulation Configuration'
Cliquez sur le bouton Valider de la barre d'outils ; ces messages d'erreur apparaissent dans l'onglet « Modelica » :

Validation du modèle...

Erreur : Les éléments en double (en raison d'éléments hérités) ne sont pas identiques : (Expression : "SensorValue e2 ; " )

Erreur : une erreur s'est produite lors de l'aplatissement du modèle TanksConnectedPI

Nombre d'erreurs et d'avertissements détectés : 2

Double-cliquez sur la ligne d'erreur ; la liste de configuration s'affiche avec les propriétés de contrainte mises en surbrillance.

Modifiez le nom de l'un d'eux de e2 à e1 et cliquez à nouveau sur le bouton Valider ; aucune erreur n'est trouvée et le problème est résolu.

Propriétés définies dans ConstraintBlocks non utilisées

Dans l'exemple TwoTanks, dans la fenêtre Navigateur , nous naviguons jusqu'à l'élément 'Exemple Modèle . Ingénierie des Systèmes .ModelicaExamples.TwoTanks.constraints.OutFlow'.

Supposons que nous ajoutions une propriété « c » et potentiellement une nouvelle contrainte, mais que nous oublions de synchroniser les instances - les ConstraintProperties. Cela provoquera une erreur système Too few equations, under-determined si nous exécuter pas la validation.

Rechargez le Paquetage dans la dialogue « Configuration Simulation SysML » et cliquez sur le bouton Valider dans la barre d'outils. Ces messages d'erreur apparaîtront dans l'onglet « Modelica » :

Validation du modèle...

Erreur : la propriété ConstraintProperty « e4 » ne contient pas les paramètres définis dans le bloc de contrainte de saisie « OutFlow ». (Manquant : c)

Erreur : Trop peu d'équations, système sous-déterminé. Le modèle comporte 11 équation(s) et 12 variable(s).

Nombre d'erreurs et d'avertissements détectés : 2

Double-cliquez sur la ligne d'erreur ; la liste de configuration s'affiche avec la propriété ConstraintProperty en surbrillance. La propriété ConstraintProperty est typée sur outFlow et le nouveau paramètre ' c ' est manquant.

Cliquez-droit sur la propriété ConstraintProperty dans la liste de configuration, sélectionnez l'option 'Rechercher dans tous Diagrammes ' et cliquez-droit sur la propriété 'Contrainte' sur le diagramme ; sélectionnez ' Fonctionnalités | Parts / Propriétés ' et cochez la case 'Afficher les propriétés possédées / héritées', puis cliquez sur 'c'.

Rechargez le modèle dans la dialogue « Configuration Simulation SysML » et cliquez sur le bouton Valider. Ces messages d'erreur apparaîtront dans l'onglet « Modelica » :

Validation du modèle...

      Erreur : ConstraintProperty 'e4' n'a aucun connecteur de liaison entrant ou sortant pour le paramètre 'c'.

Erreur : Trop peu d'équations, système sous-déterminé. Le modèle comporte 11 équation(s) et 12 variable(s).

Nombre d'erreurs et d'avertissements détectés : 2

Afin de résoudre ce problème, nous pouvons faire l’une des deux choses suivantes en fonction de la logique réelle :

  1. Si la propriété « c » est nécessaire dans le ConstraintBlock et qu'une contrainte est définie à l'aide de « c », nous devons alors ajouter une propriété dans le contexte de ConstraintProperty et la lier au paramètre « c ».
  2. Si la propriété « c » n'est pas requise, nous pouvons cliquer sur cette propriété dans le Bloc de contraintes et appuyer sur les touches Ctrl+D. (Les propriétés de contrainte correspondantes auront « c » automatiquement supprimé.)

Apprendre encore plus