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

Exemple de 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 de simulation en comparant deux oscillateurs fournis avec des valeurs de paramètres différentes à travers des ensembles de données.

Système en cours de modélisation

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

Créer un Modèle SysML

Le modèle MassSpringDamperOscillator dans SysML a un Bloc principal, l' oscillateur . L'oscillateur comporte 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 reliées par 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 par les brides. Ainsi, l'attribut isConserved de la propriété de flux Flange.f doit être défini sur True.

Blocs et ports

  • Créez les blocs 'Spring', 'Damper', 'Mass' et 'Fixed' 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 de type Flange_a et Flange_b respectivement ; 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 de type Flange_a et Flange_b respectivement ; le Bloc 'Mass' généralise à partir de 'Partial Rigide'
  • Créez un Bloc 'fixe' avec une seule bride pour le plafond, qui n'a que le port 'flange_a' tapé sur Flange_a

Structure interne

Créez un diagramme de Bloc interne (IBD) pour 'Oscillator'. 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 simplifier, 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 .

Plan de comparaison de deux oscillateurs

Après avoir modélisé l'oscillateur, nous voulons faire une analyse de simulation. 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 de masses différentes ?
Voici les étapes pour créer un modèle de comparaison :
  • Créez un Bloc nommé 'OscillatorCompareModel'
  • Créez deux Propriétés pour 'OscillatorCompareModel', appelées oscillator1 et oscillator2, et tapez-les avec le Bloc Oscillator

Configuration du jeu de données et Exécuter Simulation

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

  • Amortisseur : petit vs grand
    fournir 'oscillator1.damper1.d' avec la valeur 10 et 'oscillator2.damper1.d' avec la plus grande valeur 20
  • Amortisseur : non vs oui
    fournir 'oscillator1.damper1.d avec 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 plus grande valeur 12000
  • Masse : léger vs lourd
    fournir 'oscillator1.mass1.m' avec la valeur 0.5 et 'oscillator2.mass1.m' avec la plus grande valeur 2

La page configurée ressemble à ceci :

Sur la page ' Simulation ', sélectionnez 'OscillatorCompareModel', tracez pour 'oscillator1.mass1.s' et 'oscillator2.mass1.s', puis choisissez l'un des jeux 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 tapez 'mass1.s' dans cet exemple.

Voici les résultats de simulation :

  • Amortisseur, petit vs grand : le plus petit amortisseur permet au corps d'osciller davantage

  • Amortisseur, non contre oui : l'oscillateur ne s'arrête jamais sans amortisseur

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

  • Masse, léger vs lourd : l' object avec une masse plus petite oscillera plus rapidement et se régulera plus rapidement