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 :
|
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.
|
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 :
|
Réservoir |
Configurer en tant que 'SysMLSimClass'. Configuration des Propriétés :
|
Contrôleur de base |
Configurer en tant que 'SysMLSimClass'. Configuration des Propriétés :
|
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 :
|
RéservoirsConnectedPI |
|
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