Pré. | Proc. |
Création d'un Modèle Paramétrique
Dans cette rubrique, nous expliquons comment développer des éléments de modèle SysML pour la simulation (en supposant une connaissance existante de la modélisation SysML), configurer ces éléments dans la fenêtre Configurer la Simulation SysML et observer les résultats d'une simulation sous certaines des différentes définitions et approches de modélisation . Les points sont illustrés par des instantanés de diagrammes et d'écrans des exemples de 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 de 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 |
Simuler > Comportement du Système > Modelica/Simulink > SysMLSim Configuration Manager |
Définition d'équations de contrainte 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 Bloc .
- Créez un artefact de configuration SysMLSim 'Force=Mass*Acceleration(1)' et pointez-le vers le paquetage ' Paquetage '.
- Pour 'FMA_Test', dans la colonne 'Valeur', définissez 'SysMLSimModel'.
- Pour les parties 'a', 'm' et 'f', dans la colonne 'Valeur' : réglez 'a' et 'm' sur 'PhSConstant' et (en option) réglez '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 contrainte connexe
Dans SysML, les propriétés de contrainte existantes dans ConstraintBlocks peuvent être utilisées pour fournir 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', et trois propriétés de contrainte 'eq1', 'eq2' et 'eq3', typées à 'K1 ', 'K2' et 'K1MultiplierK2' respectivement.
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 (Parts)
- Créez une propriété de contrainte 'eq' pour MyBlock et affichez les paramètres
- Liez 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 boîte de dialogue 'Configure SysML Simulation ', réglez ' Modèle ' sur 'MyBlock' et 'Data Set' 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 tracé. C'est la même chose que lorsque nous faisons une expansion avec un stylo et du papier : K = K1 * K2 = (x*y) * (p*q), puis liez 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 faire les choses correctement.
En résumé, l'exemple vous montre comment définir un ConstraintBlock avec une plus grande flexibilité en construisant les propriétés de la contrainte. Bien que nous ayons démontré une seule couche dans le ConstraintBlock, ce mécanisme fonctionnera sur des modèles complexes pour un niveau d'utilisation arbitraire.
Création de ConstraintBlocks réutilisables
Si une équation est couramment utilisée dans plusieurs Blocks, un ConstraintBlock peut être créé pour être utilisé comme propriété de contrainte dans chaque Bloc . Voici les modifications que nous apportons, basées sur 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 'Réel' sera appliqué si les types de propriétés 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 un ConstraintProperty 'e1' tapé sur 'F_Formula' et affichez les paramètres
- Dessinez des connecteurs de liaison entre 'x—m', 'y—a' et 'f—z' comme indiqué :
- Créez un élément SysMLSimConfiguration Artifact et configurez-le comme indiqué dans l'illustration de la boîte de le dialogue :
- Dans la colonne 'Valeur', définissez 'FMA_Test' sur 'SysMLSimModel'
- Dans la colonne 'Valeur', réglez 'x' et 'y' sur 'PhSConstant'
- Dans le panneau ' Propriétés à la parcelle' 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 la 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 en tant que flux, et les variables de flux doivent être définies sur l'attribut "isConserved".
Deux types de couplage différents sont établis par des 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 effort)
- Couplage somme à zéro, pour les propriétés d'écoulement (conservées) ; par exemple, selon la loi actuelle de Kirchoff dans le domaine électrique, la conservation de la charge fait que toutes les charges s'écoulent en une somme ponctuelle à zéro
connecteur ChargePort
flux Courant i ; // Le mot-clé de flux sera généré si 'isConserved' = true
Tension v;
fin ChargePort ;
modèle Circuit
Source source ;
Résistance résistance;
Rez-de-chaussée ;
équation
connect(source.p, resistance.n);
connect(ground.p, source.n);
connect(resistor.p, source.n);
circuit de fin ;
Chaque équation de connexion est en fait étendue à deux équations (il y a deux propriétés définies dans ChargePort), une pour le couplage par é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 (boîte de dialogue ' Propriétés ' > page 'Propriété' > champ 'Initial'), elles peuvent être chargées comme valeur par défaut pour une valeur ou comme valeur initiale pour une 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 on le voit sur le côté gauche de la figure. Étant donné que 'PI' (la constante mathématique), 'm' (masse du pendule), 'g' (facteur de gravité) et 'L' (longueur du pendule) ne changent pas pendant la simulation, définissez-les sur 'PhSConstant'.
Le code Modelica généré ressemble à ceci :
pendule de classe
paramètre réel PI = 3.141 ;
paramètre Réel m = 1 ;
paramètre Réel g = 9.81 ;
paramètre Réel L = 0.5 ;
Vrai F ;
Réel x (début=0.5) ;
Réel y (début=0) ;
vx réel ;
Réel vy;
......
équation
......
Fin Pendule;
- Propriétés 'PI', 'm', 'g' et 'L' sont constants, et sont générés sous la forme d'une équation de déclaration
- Les 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 de 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 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 réglez la direction sur 'in/out'
Conseils : Plusieurs paramètres peuvent être définis comme 'out', et l'appelant récupère la valeur au format de :
(out1, out2, out3) = nom_fonction(in1, in2, in3, in4, ...); //Forme d'équation
(out1, out2, out3) := nom_fonction(in1, in2, in3, in4, ...); //Formulaire de déclaration
- Définissez le corps de la fonction dans le champ 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 collectera toutes les opérations stéréotypées comme 'SimFunction' définies dans ConstraintBlocks et Blocks, puis générera du code ressemblant à ceci :
fonction LimitValue
entrée Réel pMin ;
entrée Réel pMax ;
entrée Réel p ;
sortie réel pLim ;
algorithme
pLim :=
si p > pMax alors
pMax
sinon si p < pMin alors
pMin
autre
p;
valeur limite de fin ;
Répartition de la valeur
Cette figure montre un modèle simple appelé 'Force=Mass*Acceleration'.
- Un Bloc 'FMA' est modélisé avec les propriétés 'a', 'f' et 'm' et une propriété de contrainte 'e1', typée Bloc de contrainte 'F_Formula'
- Le Bloc 'FMA' n'a pas de valeur initiale définie sur ses propriétés, et les propriétés 'a', 'f' et 'm' sont toutes variables, donc leur changement de 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'
- Contraindre 'a_value' à ' sin (time)'
- Contraindre 'm_value' à ' 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' contre '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 Blocks, ConstraintBlocks et Value Types) d'un Paquetage . Si la simulation dépend d'éléments qui n'appartiennent pas à ce Paquetage , tels que les bibliothèques réutilisables, Enterprise Architect fournit un connecteur d'importation entre les éléments du Paquetage pour répondre à cette exigence.
Dans l'exemple du 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 en types de valeur tels que 'Voltage', 'Current' et 'Resistance', qui sont couramment utilisés dans plusieurs modèles SysML et sont donc placés dans un paquetage appelé ' Paquetage ' 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.