Réserver une Démo

SVP notez : Cette page d’aide n’est pas pour la dernière version d’Enterprise Architect. La dernière aide peut être trouvée ici.

Pré. Proc.

Régulateur de pression du réservoir d'eau

Dans cette section, nous allons parcourir la création d'un modèle SysML Paramétriques pour un régulateur de pression de réservoir d'eau, composé de deux réservoirs connectés, d'une source d'eau et de deux contrôleurs, chacun surveillant le niveau d'eau et contrôlant la vanne pour réguler le système. .

Nous allons expliquer le modèle SysML, le créer et mettre en place les Configurations SysMLSim. Nous procéderons ensuite à la Simulation avec exécuter .

Système en cours de modélisation

Ce diagramme représente deux réservoirs reliés entre eux et une source d'eau qui remplit le premier réservoir. Chaque réservoir est relié à un contrôleur continu proportionnel-intégral (PI) qui régule le niveau d'eau contenu dans les réservoirs à un niveau de référence. Pendant que la source remplit d'eau le premier réservoir, le régulateur continu PI régule le débit du réservoir en fonction de son niveau réel. L'eau du premier réservoir s'écoule dans le deuxième réservoir, que le régulateur continu PI essaie également de réguler. Il s'agit d'un problème physique naturel, non spécifique à un domaine.

Créer un Modèle SysML

Composant

Discussion

Types de ports

Le char a quatre ports qui sont typés sur ces trois blocs :

  • ReadSignal : lecture du niveau de liquide ; ceci a une propriété 'val' avec l'unité 'm'
  • ActSignal : le signal envoyé à l'actionneur pour le réglage de la position de la vanne
  • LiquidFlow : le débit de liquide aux entrées ou aux sorties ; ceci a une propriété 'lflow' avec l'unité 'm 3 /s"

Interrompre lorsqu'une Variable Change de Valeur

LiquidSource : L'eau entrant dans le réservoir doit provenir de quelque part, nous avons donc un composant de source liquide dans le système de réservoir, avec la propriété flowLevel ayant une unité de 'm 3 /s'. Un port 'qOut' est typé 'LiquidFlow'.

Réservoir : les réservoirs sont connectés aux contrôleurs et aux sources de liquide via des ports.

  • Chaque réservoir a quatre ports :
    - qIn : pour le débit d'entrée
    - qOut : pour le débit de sortie
    - tSensor : pour fournir des mesures de niveau de liquide
    - tActionneur : pour le réglage de la position de la vanne en sortie de
    le tank
  • Propriétés :
    - volume (unit='m 3 ') : capacité du réservoir, impliquée dans le bilan de masse
            équation
    - h (unité = 'm') : niveau d'eau, impliqué dans le bilan de masse
    équation; sa valeur est lue par le capteur
    - flowGain (unité = 'm 3 /s') : le débit de sortie est lié à la vanne
    position par flowGain
          - minV, maxV : Limites pour le débit de la vanne de sortie
BaseController : ce Bloc peut être le parent ou l'ancêtre d'un PI Continuous Controller et d'un PI Discrete Controller.
  • Ports :
    - cIn : Niveau du capteur d'entrée
    - cOut : commande vers l'actionneur
  • Propriétés :
    - Ts (unit = 's') : Période de temps entre échantillons discrets (non utilisé
    dans cet exemple)
    - K : Facteur de gain
    - T (unité = 's') : Constante de temps du régulateur
    - ref : niveau de référence
    - erreur : différence entre le niveau de référence et le niveau réel
    niveau d'eau, obtenu à partir du capteur
    - outCtr : signal de commande vers l'actionneur pour la commande de la vanne
    position
PIcontinuousController : spécialisé de BaseController
  • Propriétés :
    - x : la variable d'état du contrôleur

Blocs de contrainte

Le débit augmente brusquement au temps = 150 jusqu'à un facteur trois du niveau de débit précédent, ce qui crée un problème de contrôle intéressant que le contrôleur du réservoir doit gérer.

L'équation centrale régulant le comportement du réservoir est l'équation du bilan massique .

Le débit de sortie est lié à la position de la vanne par un paramètre 'flowGain'.

Le capteur lit simplement le niveau du réservoir.

Les contraintes définies pour 'BaseController' et 'PIcontinuousController' sont illustrées dans ces figures.

Diagramme Interne de Bloc

Il s'agit du diagramme de Bloc interne pour un système avec un seul réservoir.

Il s'agit du diagramme de Bloc interne pour un système avec deux réservoirs connectés.

Exécuter Simulation

Puisque TankPI et TanksConnectedPI sont définis comme 'SysMLSimModel', ils seront listés dans la liste déroulante de ' Modèle ' sur la page ' Simulation '.

Sélectionnez TanksConnectedPI et observez ces modifications de l'interface graphique :

  • Combobox 'Data Set' : sera rempli avec tous les jeux de données définis dans TanksConnectedPI
  • Liste 'Dépendances' : collectera automatiquement tous les Blocks, Constraints, SimFunctions et ValueTypes directement ou indirectement référencés par TanksConnectedPI (ces éléments seront générés sous forme de code OpenModelica)
  • ' Propriétés to Plot' : une longue liste de propriétés variables 'feuille' (c'est-à-dire qu'elles n'ont pas de propriétés) sera collectée ; vous pouvez en choisir une ou plusieurs à simuler, et les Propriétés seront affichées dans la Légende de la parcelle

Créer un artefact et configurer

Sélectionnez 'Simuler > Comportement du Système > Modelica/Simulink > SysMLSim Configuration Manager'

Les éléments du Paquetage seront chargés dans le Configuration Manager.

Configurez ces blocs et leurs propriétés comme indiqué dans ce tableau .

Note : Les Propriétés non configurées en 'SimConstant' sont 'SimVariable' par défaut.

Bloc

Propriétés

LiquidSource

Configurer en tant que 'SysMLSimClass'.

Configuration des Propriétés :

  • flowLevel : défini comme 'SimConstant'

Réservoir

Configurer en tant que 'SysMLSimClass'.

Configuration des Propriétés :

  • zone : définir comme 'SimConstant'
  • flowGain : défini sur "SimConstant"
  • maxV : défini comme 'SimConstant'
  • minV : définir comme 'SimConstant'

Contrôleur de base

Configurer en tant que 'SysMLSimClass'.

Configuration des Propriétés :

  • K : définir comme 'SimConstant'
  • T : définir comme 'SimConstant'
  • Ts : définir comme 'SimConstant'
  • ref : définir comme 'SimConstant'

Contrôleur continu PI

Configurer en tant que 'SysMLSimClass'.

TankPI

Configurer en tant que 'SysMLSimModel'.

RéservoirsConnectedPI

Configurer en tant que 'SysMLSimModel'.

Configurer l'ensemble de données

Cliquez-droit sur chaque élément, sélectionnez l'option 'Créer un jeu de données de Simulation ', et configurez les jeux de données comme indiqué dans ce tableau .

Élément

Base de données

LiquidSource

niveau de débit : 0,02

Réservoir

h.start : 0

Gain de débit : 0,05

zone : 0,5

maxV : 10

minV : 0

Contrôleur de base

T : 10

K : 2

Ts : 0,1

Contrôleur continu PI

Aucune configuration nécessaire.

Par défaut, le Bloc spécifique utilisera les valeurs configurées du jeu de données par défaut du super Bloc .

TankPI

Ce qui est intéressant ici, c'est que la valeur par défaut pourrait être chargée dans la boîte de dialogue "Configurer les données de Simulation ". Par exemple, les valeurs que nous avons configurées comme ensemble de données par défaut sur chaque élément Bloc ont été chargées comme valeurs par défaut pour les propriétés de TankPI. Cliquez sur l'icône sur chaque ligne pour développer les structures internes de la propriété à une profondeur arbitraire.

Cliquez sur le bouton OK et revenez au gestionnaire de configuration. Ensuite, ces valeurs sont configurées :

  • valeur : 1 ceci remplace la valeur par défaut 0.5 définie dans le jeu de données du Tank Bloc
  • piRéf.continue : 0,25

RéservoirsConnectedPI

  • controller1.ref : 0,25
  • controller2.ref : 0,4

Simulation et analyse 1

Sélectionnez ces variables et cliquez sur le bouton Résoudre. Ce tracé doit prompt :

  • source.qOut.lflow
  • tank1.qOut.lflow
  • réservoir1.h
  • réservoir2.h

Voici les analyses du résultat :

  • Le débit liquide augmente fortement au temps=150, à 0,06 m 3 /s, un facteur trois du débit précédent (0,02 m 3 /s)
  • Réservoir1 régulé à hauteur 0,25 et réservoir2 régulé à hauteur 0,4 comme prévu (nous avons défini la valeur du paramètre via le jeu de données)
  • Tank1 et tank2 ont été régulés deux fois pendant la simulation ; la première fois régulée avec le débit 0,02 m 3 /s ; la deuxième fois réglée avec le débit 0,06 m 3 /s
  • Le réservoir2 était vide avant qu'il y ait un débit du réservoir1

Simulation et analyse 2

Nous avons défini les propriétés du réservoir 'minV' et 'maxV' sur les valeurs 0 et 10, respectivement, dans l'exemple. Dans le monde réel, un débit de 10 m 3 /s nécessiterait l'installation d'une très grosse vanne sur le réservoir.

Que se passerait-il si on changeait la valeur de 'maxV' à 0.05 m 3 /s ? Sur la base du modèle précédent, nous pourrions apporter ces modifications :

  • Sur le 'DataSet_1' existant de TanksConnectedPI, cliquez cliquez-droit et sélectionnez 'Duplicate DataSet', et renommez-le en 'Tank2WithLimitValveSize'
  • Cliquez sur le bouton pour configurer, développez 'tank2' et tapez '0.05' dans la colonne 'Valeur' pour la propriété 'maxV'
  • Sélectionnez 'Tank2WithLimitValveSize' sur la page ' Simulation ' et tracez les propriétés
  • Cliquez sur le bouton Résoudre pour exécuter la simulation

Voici les analyses des résultats :

  • Notre modification ne s'applique qu'à tank2 ; réservoir1 peut réguler comme avant sur 0,02 m 3 /s et 0,06 m 3 /s
  • Lorsque le débit de la source est de 0,02 m 3 /s, tank2 peut réguler comme avant
  • Cependant, lorsque le débit de la source augmente à 0,06 m 3 /s, la vanne est trop petite pour laisser le débit de sortie correspondre au débit d'entrée ; le seul résultat est que le niveau d'eau du réservoir2 augmente
  • Il appartient alors à l'utilisateur de résoudre ce problème ; par exemple, passer à une vanne plus grande, réduire le débit de la source ou fabriquer une vanne supplémentaire
En résumé, cet exemple montre comment régler les valeurs des paramètres en dupliquant un DataSet existant.