Pré. | Proc. |
Création d'un Modèle Paramétrique
Dans cette rubrique, nous abordons la manière dont vous pouvez développer des éléments de modèle SysML pour la simulation (en supposant que vous possédez déjà des connaissances en matière modélisation SysML), configurer ces éléments dans la fenêtre Configurer Simulation SysML et observer les résultats d'une simulation selon certaines des différentes définitions et approches modélisation . Les points sont illustrés par Instantanés de diagrammes et d'écrans issus des exemples Simulation SysML fournis dans ce chapitre.
Lors de la création d'un Modèle Paramétrique , vous pouvez appliquer l'une des trois approches pour définir les équations de contrainte :
- Définition d'équations de contrainte en ligne sur un élément Bloc
- Créer des ConstraintBlocks réutilisables et
- Utilisation des propriétés de contrainte connectées
- Flux dans les interactions physiques
- Valeurs par défaut et valeurs initiales
- Fonctions Simulation
- Répartition de la valeur et
- Paquetages et importations
Accéder
Ruban |
Simulate > Comportement du Système > Modelica/Simulink > SysMLSim Configuration Manager |
Définition d'équations de contraintes en ligne sur un Bloc
Définir des contraintes directement dans un Bloc est simple et constitue le moyen le plus simple de définir des équations de contraintes.
Dans cette figure, la contrainte 'f = m * a' est définie dans un élément Bloc .
Conseil : Vous pouvez définir plusieurs contraintes dans un même Bloc .
- Créez un artefact de configuration SysMLSim « Force=Mass*Acceleration(1) » et pointez-le vers le Paquetage « FMA_Test ».
- Pour « FMA_Test », dans la colonne « Valeur », définissez « SysMLSimModel ».
- Pour les parties « a », « m » et « f », dans la colonne « Valeur » : définissez « a » et « m » sur « PhSConstant » et (éventuellement) définissez « f » sur « PhSVariable ».
- Dans l'onglet « Simulation », dans le panneau « Propriétés à tracer », cochez la case en regard de « f ».
- Cliquez sur le bouton Résoudre pour exécuter la simulation.
Un graphique doit être tracé avec f = 98,1 (qui vient de 10 * 9,81).
Propriétés de contrainte connectée
Dans SysML, les propriétés de contrainte existant dans ConstraintBlocks peuvent être utilisées pour offrir une plus grande flexibilité dans la définition des contraintes.
Dans cette figure, ConstraintBlock 'K' définit les paramètres 'a', 'b', 'c', 'd' et 'KVal', ainsi que trois propriétés de contrainte 'eq1', 'eq2' et 'eq3', typées respectivement 'K1', 'K2' et 'K1MultiplyK2'.
Créez un diagramme Paramétriques dans ConstraintBlock 'K' et connectez les paramètres aux propriétés de contrainte avec des connecteurs de liaison, comme indiqué :
- Créer un modèle MyBlock avec cinq Propriétés (Parties)
- Créez une propriété de contrainte « eq » pour MyBlock et affichez les paramètres
- Lier les propriétés aux paramètres
- Fournir des valeurs (arg_a = 2, arg_b = 3, arg_c = 4, arg_d = 5) dans un ensemble de données
- Dans la dialogue « Configurer Simulation SysML », définissez « Modèle » sur « MyBlock » et « Ensemble de données » sur « DataSet_1 »
- Dans le panneau « Propriétés à tracer », cochez la case en regard de « arg_K »
- Cliquez sur le bouton Résoudre pour exécuter la simulation
Le résultat 120 (calculé comme 2 * 3 * 4 * 5) sera calculé et représenté graphiquement. C'est la même chose que lorsque nous faisons un développement avec un stylo et du papier : K = K1 * K2 = (x*y) * (p*q), puis lions avec les valeurs (2 * 3) * (4 * 5) ; nous obtenons 120.
Ce qui est intéressant ici, c'est que nous définissons intentionnellement l'équation de K2 comme étant « p = K2 / q » et cet exemple fonctionne toujours.
Nous pouvons facilement résoudre K2 comme étant p * q dans cet exemple, mais dans certains exemples complexes, il est extrêmement difficile de résoudre une variable à partir d'une équation ; cependant, Enterprise Architect SysMLSim peut toujours y parvenir.
En résumé, l'exemple vous montre comment définir un ConstraintBlock avec une plus grande flexibilité en construisant les propriétés de contrainte. Bien que nous n'ayons démontré qu'une seule couche dans le ConstraintBlock, ce mécanisme fonctionnera sur des modèles complexes pour un niveau d'utilisation arbitraire.
Créer des blocs de contraintes réutilisables
Si une équation est couramment utilisée dans plusieurs blocs, un bloc de contrainte peut être créé pour être utilisé comme propriété de contrainte dans chaque Bloc . Voici les modifications que nous apportons, sur la base de l'exemple précédent :
- Créez un élément ConstraintBlock 'F_Formula' avec trois paramètres 'a', 'm' et 'f', et une contrainte 'f = m * a'
Conseil : Le type primitif 'Real' sera appliqué si les types de propriété sont vides
- Créez un Bloc « FMA_Test » avec trois propriétés « x », « y » et « z », et donnez à « x » et « y » les valeurs par défaut « 10 » et « 9,81 » respectivement
- Créer un diagramme Paramétriques dans 'FMA_Test', montrant les propriétés 'x', 'y' et 'z'
- Créez une ConstraintProperty « e1 » typée « F_Formula » et affichez les paramètres
- Dessinez les connecteurs de liaison entre « x—m », « y—a » et « f—z » comme indiqué :
- Créez un élément d'artefact SysMLSimConfiguration et configurez-le comme indiqué dans le dialogue :
- Dans la colonne « Valeur », définissez « FMA_Test » sur « SysMLSimModel »
- Dans la colonne « Valeur », définissez « x » et « y » sur « PhSConstant »
- Dans le panneau « Propriétés à tracer », cochez la case en regard de « Z »
- Cliquez sur le bouton Résoudre pour exécuter la simulation
Un graphique doit être tracé avec f = 98,1 (qui vient de 10 * 9,81).
Flux dans les interactions physiques
Lors de modélisation de l'interaction physique, les échanges de substances physiques conservées telles que le courant électrique, la force, le couple et le débit doivent être modélisés comme des flux, et les variables de flux doivent être définies sur l'attribut « isConserved ».
Deux types différents de couplage sont établis par les connexions, selon que les propriétés d'écoulement sont potentielles (par défaut) ou d'écoulement (conservées) :
- Couplage d'égalité, pour les propriétés potentielles (également appelées efforts)
- Couplage somme à zéro, pour les propriétés de flux (conservées) ; par exemple, selon la loi de courant de Kirchoff dans le domaine électrique, la conservation de la charge fait que tous les flux de charge en un point sont somme à zéro
connecteur ChargePort
flux actuel i ; // le mot-clé flow sera généré si 'isConserved' = true
Tension v;
fin ChargePort;
modèle de circuit
Source source;
Résistance résistance;
Sol sol;
équation
connect(source.p, résistance.n);
connect(terre.p, source.n);
connect(résistance.p, source.n);
fin du circuit;
Chaque équation de connexion est en fait étendue à deux équations (il existe deux propriétés définies dans ChargePort), l'une pour le couplage d'égalité, l'autre pour le couplage somme à zéro :
source.pv = résistance.nv;
source.pi + résistance.ni = 0;
Valeur par défaut et valeurs initiales
Si des valeurs initiales sont définies dans les éléments de propriété SysML ( dialogue « Propriétés » > page « Propriété » > champ « Initiale »), elles peuvent être chargées comme valeur par défaut pour un PhSConstant ou comme valeur initiale pour un PhSVariable.
Dans cet exemple de pendule, nous avons fourni des valeurs initiales pour les propriétés « g », « L », « m », « PI », « x » et « y », comme indiqué sur le côté gauche de la figure. Étant donné que « PI » (la constante mathématique), « m » (la masse du pendule), « g » (le facteur de gravité) et « L » (la longueur du pendule) ne changent pas pendant la simulation, définissez-les comme « PhSConstant ».
Le code Modelica généré ressemble à ceci :
classe Pendule
paramètre PI réel = 3,141 ;
paramètre Réel m = 1 ;
paramètre réel g = 9,81 ;
paramètre Réel L = 0,5 ;
Réel F;
Réel x (début=0,5) ;
Réel y (début=0) ;
VX réel;
Vrai vy;
......
équation
......
fin du pendule;
- Propriétés 'PI', 'm', 'g' et 'L' sont constantes et sont générées sous forme d'équation de déclaration
- Propriétés 'x' et 'y' sont variables ; leurs valeurs de départ sont respectivement 0,5 et 0, et les valeurs initiales sont générées sous forme de modifications
Fonctions Simulation
Une fonction Simulation est un outil utile pour écrire une logique complexe et est facile à utiliser pour les contraintes. Cette section décrit une fonction de l'exemple TankPI.
Dans le ConstraintBlock 'Q_OutFlow', une fonction 'LimitValue' est définie et utilisée dans la contrainte.
- Sur un Bloc ou un ConstraintBlock, créez une opération ('LimitValue' dans cet exemple) et ouvrez l'onglet 'Opérations' de la fenêtre Fonctionnalités
- Donnez à l'opération le stéréotype « SimFunction »
- Définissez les paramètres et définissez la direction sur « entrée/sortie »
Conseils : Plusieurs paramètres peuvent être définis comme 'out', et l'appelant récupère la valeur au format :
(out1, out2, out3) = nom_fonction(in1, in2, in3, in4, ...); //Forme d'équation
(out1, out2, out3) := function_name(in1, in2, in3, in4, ...); //Formulaire de déclaration
- Définissez le corps de la fonction dans le champ de texte de l'onglet « Code » de la fenêtre Propriétés , comme indiqué :
pLim :=
si p > pMax alors
pMax
sinon si p < pMin alors
pMin
autre
p;
Lors de la génération de code, Enterprise Architect collecte toutes les opérations stéréotypées comme « SimFunction » définies dans ConstraintBlocks et Blocks, puis génère un code ressemblant à ceci :
fonction LimitValue
entrée Réel pMin;
entrée pMax réel ;
entrée Réel p;
sortie Real pLim;
algorithme
pLim :=
si p > pMax alors
pMax
sinon si p < pMin alors
pMin
autre
p;
fin de LimitValue;
Répartition de la valeur
Cette figure montre un modèle simple appelé « Force = Masse * Accélération ».
- Un Bloc « FMA » est modélisé avec les propriétés « a », « f » et « m » et une constraintProperty « e1 », typée sur Bloc de contrainte « F_Formula »
- Le Bloc 'FMA' n'a aucune valeur initiale définie sur ses propriétés, et les propriétés 'a', 'f' et 'm' sont toutes variables, donc leur changement valeur dépend de l'environnement dans lequel elles sont simulées
- Créez un Bloc 'FMA_Test' en tant que SysMLSimModel et ajoutez la propriété 'fma1' pour tester le comportement du Bloc 'FMA'
- Contrainte 'a_value' à être ' sin (time)'
- Contrainte 'm_value' à être ' cos (temps)'
- Dessinez des connecteurs d'allocation pour allouer des valeurs de l'environnement au modèle « FMA »
- Cochez les cases « Propriétés à tracer » pour « fma1.a », « fma1.m » et « fma1.f »
- Cliquez sur le bouton Résoudre pour simuler le modèle
Paquetages et importations
L'artefact SysMLSimConfiguration collecte les éléments (tels que les blocs, les blocs de contrainte et les types de valeur) d'un Paquetage . Si la simulation dépend d'éléments qui ne sont pas détenus par ce Paquetage , tels que des bibliothèques réutilisables, Enterprise Architect fournit un connecteur d'importation entre les éléments Paquetage pour répondre à cette exigence.
Dans l'exemple de circuit électrique, l'artefact est configuré sur le Paquetage « ElectricalCircuit », qui contient presque tous les éléments nécessaires à la simulation. Cependant, certaines propriétés sont typées sur des types valeur tels que « Tension », « Courant » et « Résistance », qui sont couramment utilisés dans plusieurs modèles SysML et sont donc placés dans un Paquetage appelé « CommonlyUsedTypes » en dehors des modèles SysML individuels. Si vous importez ce Paquetage à l'aide d'un connecteur d'importation, tous les éléments du Paquetage importé apparaîtront dans le gestionnaire de configuration SysMLSim.