Tutorial BCVTB PluginV2 - muse

publicité
Tutorial plug’in BCVTB
1
Sommaire :
I.
II.
Introduction : .................................................................................................................. 3
Ajout d’un nouveau acteur dans BCVTB ...................................................................... 3
1. L’environnement BCVTB .......................................................................................... 3
2. Description d’un acteur de Ptolemy II ....................................................................... 3
III.
Le plug-in MUSE dans BCVTB ................................................................................ 4
1. Principe et réalisation ................................................................................................. 4
2. Composition ............................................................................................................... 5
3. Configuration et pré utilisation .................................................................................. 5
4. Utilisation ................................................................................................................... 6
5. Modification du plug-in ............................................................................................. 8
6. Limitation du plug’in : ............................................................................................... 8
IV.
Simulation d’un exemple : ......................................................................................... 8
2
I. Introduction :
L’objectif de ce plug-in est de pouvoir, de manière automatique et générique, utiliser un
composant MUSE dans l’environnement BCVTB. Il s’agit de développer un nouvel acteur
Ptolemy II (la base du BCVTB) permettant d’importer et de simuler un MUSE dans cet
environnement.
Le développement de ce plug-in a était inspiré de l’import réalisé pour les composants FMU.
L’import de MUSE est plus simple étant donné l’utilisation du même langage de
programmation Java. Donc il n’est pas besoin d’utilisation de JNA (Java Native Acess) pour
assurer le bridge entre le Java et le C comme réalisé pour les FMUs.
Le principe de ce plug-in et son utilisation seront détaillés dans ce document à travers un
exemple simple de Muse « SimpleRoomMuse » qui représente un modèle simple d’une
chambre en reproduisant les équations du modèle « Room » dans l’exemple « PtolemyRoom » du BCVTB
II. Ajout d’un nouveau acteur dans BCVTB
1. L’environnement BCVTB
BCVTB « Buildings Virtual Control Test Bed » (https://simulationresearch.lbl.gov/bcvtb) est
un environnement de co-simulation des outils de simulation énergétique de bâtiment. Il est
basé sur l’environnement Ptolemy II et utilise certaines de ces fonctionnalités.
Réaliser un plug-in dans cet environnement consiste à ajouter un nouvel acteur comme décrit
dans
la
documentation
du
BCVTB
(http://simulationresearch.lbl.gov/bcvtb/releases/1.0.0/doc/manual/ch06s09.xhtml)
et
de
Ptolemy II.
2. Description d’un acteur de Ptolemy II
Comme Ptolemy II est développé en Java, Tout acteur est une classe Java décrite selon une
manière bien défini.
L’acteur est également défini par un fichier XML structuré selon un schéma défini également
et qui appelé MOML file. Ce fichier suit la structure suivante :
L’acteur est composé de
-
Ports : qui sont publics de type TypedIOPort et qui représentent les inputs et les
outputs du modèle :
L’orientation du port est définie lors de sa création par les arguments 3 (actor is an input)
et 4 (actor is an output)
Ptolemy II est basé sur la notion de « token », qui assurent l’échange d’information entre
3
le modèle et l’environnement. Cet échange est assuré part lecture/écriture depuis et vers
un canal de communication.
-
Paramètres : qui sdoivent être déclarés comme suit :
et crées et affecté de cette manière :
-
Un constructeur : pour créer et configurer les ports et les paramètres.
Cette étape peut se faire de manière générique tel est le besoin pour l’utilisation de
MUSE. En effet, cette partie de la classe change selon le MUSE ce qui nécessite une
définition dynamique en fonction de l’introspection du MUSE. Ceci est possible, en
modifiant dynamiquement le MOML file de l’acteur en focntion du MUSE et grâce à la
fonction « MOMLChangeRequest » (modifier la partie model définition):
Afin d’assurer sa simulation efficace par le cœur de Ptolemy, l’acteur doit implémenter
certaines méthodes selon l’action désirée dont principalement ces méthodes qui vont être
implémenté pour l’exploitation du MUSE :
-
-
Preinitialize : préparation de la simulation comme charger le composant MUSE
Initialize : Initialiser la simulation (affecter les valeurs initiales par exemple)
Fire : c’est la méthode principale d’exécution et qui,appelé, à chaque étape de la
simulation assure principalement la récupération des inputs et lla production des
outputs.
Warrup : appelée à la fin de la simulation principalement pour l’affichage des résultats
finaux.
III. Le plug-in MUSE dans BCVTB
1. Principe et réalisation
Le plug-in du MUSE dans BCVTB consiste ainsi à créer un nouveau acteur ayant les mêmes
ports et paramètres et qui permettra l’échange d’information entre le MUSE et PtolemyII pour
permettre sa simulation.
Pour le faire, la première étape consiste à créer un acteur atomique générique
MUSE.actor.MUSEImport. Il s’agit ensuite d’implémenter les méthodes d’action de l’acteur
ptolemy II avec les interfaces correspondantes du MUSE :
- Preinitialize : MuseJarLoader, getMuse et loadFacets.
- Initialize : var.setValue pour l’affectation des paramètres et initialize pour
l’initialisation de la simulation.
- Fire : var.setValue pour l’affectation des inputs, doStep pour l’éxcétion du step,
var.getValue pour la récupération des outputs
4
-
Warrup : terminate pour finir la simulation.
Cette classe définit également un paramètre commun à chaque MUSE et qui est le MUSEFile.
Ce paramètre qui indique le MUSE path sera définit par l’utilisateur lors de l’instanciation de
l’acteur (ENTITY) à travers une fenêtre de communication.
Ceci est réalisé dans le constructeur dans le but de réaliser une introspection préalable du
MUSE avant de spécifier sa représentation graphique qui est unique au MUSE. Suite à cette
introspection, le fichier MOML du MUSE sera définit afin de rendre spécifique au MUSE,
l’acteur générique.
2. Composition
Les éléments développés et nécessaires à l’utilisation du plug-in sont rassemblés dans un
dossier appelé MUSE.
Ce kit est composé de :
- La classe Java de l’acteur MUSE: MUSEImport.java dans MUSE\src\MUSE\actor
- Le fichier MOML de description de l’entité : MUSEImport.xml
- Les librairies du MUSE : nécessaire pour sont exécution dans MUSE\src\util
- Le fichier du build nécessaire à la compilation : build.xml
Ce dossier doit être placé dans le répertoire lib/ ptII du BCVTB.
3. Configuration et pré utilisation
Après installation du BCVTB en suivant les instructions sur le site
(http://simulationresearch.lbl.gov/bcvtb/releases/1.0.0/doc/manual/tit-InstallationUser.xhtml)
et
modification
des
variables
d’environnements
système
(http://simulationresearch.lbl.gov/bcvtb/releases/1.0.0/doc/manual/settingEnvironmentVariabl
es.xhtml), il faut dans un premier temps copier le kit du plug-in MUSE dans BCVTB/lib/PTII.
Il faut ensuite rajouter les librairies nécessaires à l’exécution du MUSE, génériques et
spécifiques au classpath. Elles doivent être ajoutées dans la variable d’environnement
BCVTB_Home dans le fichier systemVariables-windows.properties à la racine du dossier
BCVTB.
Librairies génériques commune à tous les composant MUSE et qui doivent être
obligatoirement rajoutés:
%PTII%\MUSE\src\util\cades.facet.api-3.0.5-SNAPSHOT.jar;
%PTII%\MUSE\src\util\cades.facet.cosimulation.api-3.0.5-SNAPSHOT.jar;
%PTII%\MUSE\src\util\cades.facet.cosimulation.impl-3.0.5-SNAPSHOT.jar;
%PTII%\MUSE\src\util\cades.facet.impl-3.0.5-SNAPSHOT.jar;
%PTII%\MUSE\src\util\cades.muse.api-3.0.5-SNAPSHOT.jar;
%PTII%\MUSE\src\util\cades.muse.impl-3.0.5-SNAPSHOT.jar;
%PTII%\MUSE\src\util\org.eclipse.emf.common_2.8.0.v20120911-0500.jar;
5
%PTII%\MUSE\src\util\org.eclipse.emf.ecore.xmi_2.8.0.v20120911-0500.jar;
%PTII%\MUSE\src\util\org.eclipse.emf.ecore_2.8.1.v20120911-0500.jar;
%PTII%\MUSE\src\util\org.eclipse.osgi_3.8.1.v20120830-144521.jar;
Exemple de librairies spécifiques au composant du logiciel de l’exemple étudié :
SimpleRoomMuseCosim.jar (jar intermédiaire)
4. Utilisation
Pour importer un MUSE dans BCVTB, suivre les étapes suivantes :
– Lancer BCVTB et un nouveau éditeur graphique
– Cliquez sur “Instantiate Entity” dans “Graph”
–
Une fenêtre apparaîtra et où il faut préciser le nom de la calsse d’import du
MUSE « MUSE.actor.MUSEImport ».
–
A l’issue de cette instanciation, il faut préciser le nom du MUSE à importer
6
–
Ainsi le composant MUSE apparaîtra dans l’éditeur avec ces ports de
connexion. On cliquant dessus, on a accès à ces paramètres qu’on peut
modifier leurs valeurs.
–
Il suffit ensuite de connecter les composants à d’autres éléments de la
bibliothèque et lance la simulation
7
5. Modification du plug-in
Pour modifier/améliorer le plu-in réalisé, il suffit de :
- Supprimer le MUSEImport.class dans MUSE\actor
- Modifier la classe java MUSEImport.
- Compiler la nouvelle classe en exécutant la commande « ant all » dans une fenêtre de
commande lancé à la racine du dossier MUSE.
6. Limitation du plug’in :
Etant donné que l’introspection du MUSE et la modification du MOML file en conséquence
sont faite dans le constructeur de MUSEImport.java, ces actions sont répétées à chaque
instanciation de l’acteur. Ceci cause des problèmes lors de la réouverture d’un fichier utilisant
cet acteur : multiple instanciation multiplications des ports et des paramètres.
Ce problème est résolu dans l’import de FMU par le rajout d’une méthode spécifique en
dehors du constructeur permettant d’assurer ces opérations. Ceci nécessite la modification du
cœur de Ptolemy II pour pouvoir traiter cette méthode.
Remarque : L’acteur MUSE peut être rajouté dans les éléments graphiques de la bibliothèque
du PTII en le rajoutant dans le BCVTB configuration file bcvtbLibrary.xml dans
BCVTB\lib\ptII\ptolemy\configs\bcvtb:
Le problème de cette technique est également la double instantiation lors du drag and drop de
l’acteur MUSE.
IV. Simulation d’un exemple :
Après avoir suivre les étapes d’utilisation du plug-in décrite ci-dessous, le muse correspond à
la chambre est connecté aux mêmes sources que la chambre développée dans Ptolemy et sont
toutes les deux simulées dans les mêmes conditions pour obtenir des résultats simulaires
(figure du haut : chambre dans Ptolemy et figure du bas : chambre dans MUSE):
8
9
Téléchargement