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

Exemple Simulation d'oscillateur masse-ressort-amortisseur

Dans cette section, nous allons parcourir la création d'un modèle paramétrique SysML pour un oscillateur simple composé d'une masse, d'un ressort et d'un amortisseur, puis utiliser une simulation paramétrique pour prédire et tracer le comportement de ce système mécanique. Enfin, nous effectuons une analyse hypothétique en comparant deux oscillateurs fournis avec des valeurs de paramètres différentes via des ensembles de données.

Système en cours de modélisation

Une masse est suspendue à un ressort et à un amortisseur. Le premier état représenté ici représente le point initial à l'instant = 0, juste au moment où la masse est relâchée. Le deuxième état représente le point final lorsque le corps est au repos et que les forces du ressort sont en équilibre avec la gravité.

Créer Modèle SysML

Le modèle MassSpringDamperOscillator dans SysML possède un Bloc principal, l' Oscillateur . L'Oscillateur est composé de quatre parties : un plafond fixe, un ressort , un amortisseur et un corps de masse . Créez un Bloc pour chacune de ces parties. Les quatre parties du Bloc Oscillateur sont connectées via des Ports, qui représentent des brides mécaniques.

Composants

Description

Types de ports

Les blocs « Flange_a » et « Flange_b » utilisés pour les brides dans le domaine mécanique de transition 1D sont identiques mais ont des rôles légèrement différents, quelque peu analogues aux rôles de PositivePin et NegativePin dans le domaine électrique. Les forces sont transmises à travers les brides. L'attribut isConserved de la propriété d'écoulement Flange.f doit donc être défini sur True.

Blocs et ports

  • Créez les blocs « Ressort », « Amortisseur », « Masse » et « Fixe » pour représenter respectivement le ressort, l'amortisseur, le corps de masse et le plafond
  • Créez un Bloc « PartialCompliant » avec deux ports (brides), nommés « flange_a » et « flange_b » — ceux-ci sont respectivement de type Flange_a et Flange_b ; les blocs « Spring » et « Damper » généralisent à partir de « PartialCompliant »
  • Créez un Bloc « PartialRigid » avec deux ports (brides), nommés « flange_a » et « flange_b » — ceux-ci sont respectivement de type Flange_a et Flange_b ; le Bloc « Mass » se généralise à partir de « PartialRigid »
  • Créez un Bloc « Fixe » avec une seule bride pour le plafond, qui n'a que le port « flange_a » typé sur Flange_a

Structure interne

Créez un diagramme Bloc internes (IBD) pour « Oscillateur ». Ajoutez des propriétés pour le plafond fixe, le ressort, l'amortisseur et le corps de masse, typées par les blocs correspondants. Connectez les ports avec des connecteurs.

  • Connectez « flange_a » de « fixed1 » à « flange_b » de « spring1 »
  • Connectez « flange_b » de « damper1 » à « flange_b » de « spring1 »
  • Connectez « flange_a » de « damper1 » à « flange_a » de « spring1 »
  • Connectez « flange_a » de « spring1 » à « flange_b » de « mass1 »

Contraintes

Pour plus de simplicité, nous définissons les contraintes directement dans les éléments Bloc ; vous pouvez éventuellement définir des ConstraintBlocks, utiliser des propriétés de contrainte dans les Blocks et lier leurs paramètres aux propriétés du Bloc .

Comparaison de deux plans d'oscillateurs

Après avoir modélisé l'oscillateur, nous souhaitons effectuer une analyse hypothétique. Par exemple :

  • Quelle est la différence entre deux oscillateurs avec des amortisseurs différents ?
  • Et s’il n’y a pas d’amortisseur ?
  • Quelle est la différence entre deux oscillateurs avec des ressorts différents ?
  • Quelle est la différence entre deux oscillateurs avec des masses différentes ?
Voici les étapes pour créer un modèle de comparaison :
  • Créer un Bloc nommé « OscillatorCompareModel »
  • Créez deux Propriétés pour « OscillatorCompareModel », appelées oscillator1 et oscillator2, et saisissez-les avec le Bloc Oscillator

Configurer DataSet et Exécuter Simulation

Créez un artefact de configuration SysMLSim et attribuez-le à ce Paquetage . Créez ensuite ces ensembles de données :

  • Amortisseur : petit ou grand
    fournir 'oscillator1.damper1.d' avec la valeur 10 et 'oscillator2.damper1.d' avec la valeur la plus élevée 20
  • Amortisseur : non ou oui
    fournir à 'oscillator1.damper1.d la valeur 0 ; ('oscillator2.damper1.d' utilisera la valeur par défaut 25)
  • Printemps : petit vs grand
    fournir 'oscillator1.spring1.c' avec la valeur 6000 et 'oscillator2.spring1.c' avec la valeur plus grande 12000
  • Masse : légère vs lourde
    fournir 'oscillator1.mass1.m' avec la valeur 0,5 et 'oscillator2.mass1.m' avec la valeur la plus élevée 2

La page configurée ressemble à ceci :

Sur la page « Simulation », sélectionnez « OscillatorCompareModel », tracez « oscillator1.mass1.s » et « oscillator2.mass1.s », puis choisissez l'un des ensembles de données créés et exécuter la simulation.

Conseil : S'il y a trop de propriétés dans la liste des parcelles, vous pouvez basculer la barre de filtre en utilisant le menu contextuel sur l'en-tête de la liste, puis taper 'mass1.s' dans cet exemple.

Voici les résultats de la simulation :

  • Amortisseur, petit ou grand : le plus petit amortisseur permet au corps d'osciller davantage
  • Amortisseur, non vs oui : l'oscillateur ne s'arrête jamais sans amortisseur

  • Ressort, petit ou grand : le ressort avec le plus petit « c » oscillera plus lentement

  • Masse, légère vs lourde : l' object avec la plus petite masse oscillera plus vite et régulera plus rapidement