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

Dépannage de la Simulation OpenModelica

Bien que cette rubrique décrive les éventuels problèmes pouvant 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 de 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 System Output. Les messages sont extraits du compilateur OpenModelica (omc.exe), qui vous dirige normalement vers les lignes du code source 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 jeu de données de Simulation .)

Les blocs qui tapent vers les ports peuvent ne pas contenir de propriétés conservées. Par exemple, un Bloc 'ChargePort' contient deux parties — 'v : Tension' et 'i : Courant'. 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 être fournies avec celles-ci.

Une valeur 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 (Blocks ou Value Type ) externes au Paquetage configuré ; utilisez un Paquetage d'importation de paquets pour résoudre ce problème.

Filtres de configuration de Simulation SysML

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

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 , c'est cliquer sur le deuxième bouton à partir de la droite de la barre d'outils (Filtre pour la configuration) et ouvrir le dialogue montré ici. Cliquez sur le bouton Tout, puis décochez les cases 'Suppress Bloc ' et 'Suppress Variable Part' et cliquez sur le bouton OK .

Maintenant, nous aurons une liste de variables beaucoup plus courte, à partir de laquelle nous pouvons trouver que la "zone" ne change pas pendant la Simulation . Ensuite, nous définissons cela comme un ' valeur ' 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 naviguons jusqu'à 'constraintBlock.Outcontrol.Constraint', supposons que nous trouvions une erreur de frappe : nous avons tapé 'v' au lieu de 'b' dans la contrainte.

Ainsi, 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 l'étendue 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 trouvé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 de SysML Simulation est un raccourci pour modifier les contraintes d'un Bloc ou d'un Bloc de contraintes. Tu peux:

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

Noms de variables en double

Dans l'exemple TwoTanks, accédez à block.tank.constraintProperty.e1 . Supposons que nous donnions 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 boîte de dialogue 'Configuration de la Simulation SysML'
Cliquez sur le bouton Valider de la barre d'outils ; ces messages d'erreur apparaissent dans l'onglet 'Modelica' :

Validation du modèle...

Erreur : Éléments dupliqués (en raison d'éléments hérités) non identiques : (Expression : "SensorValue e2 ; " )

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

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

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

Changez le nom de l'un d'eux de e2 à e1 et cliquez à nouveau sur le bouton Valider ; aucune erreur n'est détecté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 du Navigateur , on navigue jusqu'à l'élément 'Example 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 entraînera une erreur système Trop peu d'équations, sous-déterminées si nous ne exécuter pas à la validation.

Rechargez le Paquetage dans la boîte de dialogue 'Configuration de la Simulation SysML' et 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 : ConstraintProperty 'e4' ne contient pas les paramètres définis dans le bloc de saisie ConstraintBlock '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 trouvés : 2

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

Cliquez-droit sur la ConstraintProperty dans la liste de configuration, sélectionnez l'option 'Find in all Diagrammes ' et cliquez-droit sur la propriété 'Constraint' sur le diagramme ; sélectionnez ' Fonctionnalités | Parts / Propriétés ' et cochez la case 'Show Owned / Inherited', puis cliquez sur 'c'.

Rechargez le modèle dans la boîte de dialogue 'Configuration de la 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 pas de connecteurs de liaison entrants ou sortants 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 trouvés : 2

Afin de résoudre ce problème, nous pouvons faire l'une des deux choses basées sur la vraie logique :

  1. Si la propriété 'c' est nécessaire dans ConstraintBlock et qu'une contrainte est définie à l'aide de 'c', nous devons 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 ConstraintProperties correspondantes auront 'c' supprimé automatiquement.)

Apprendre encore plus