Kostenlose
Testversion

Réglage Plugin

Le réglage Plugin est un réglage qui peut être étendu par des extensions. Les Plugins du réglage peuvent être créés même dans le langage de programmation Java. Cela permet de créer des réglages complexes. Le transfert vers d’autres environnements de programmation comme Matlab est possible, par exemple pour intégrer des réglages existantes dans Polysun.  L’interface des réglages Plugin est l’interface Java IPluginController.

Introduction

Les réglages Plugin permettent de créer des réglages dans Polysun. Ils permettent de développer des réglages complexes et puissants. Ces réglages peuvent être développés par l’utilisateur ou des plug-ins de réglages reçus peuvent être ajoutés à une installation Polysun.

Diverses réglages Plugin sont incluses dans une installation Polysun, voir les chapitres suivants.

Dans l’application, les réglages Plugin se comportent de la même manière que les « réglages traditionnels ». La différence est que toute personne sachant programmer Java peut développer et distribuer des réglages Plugin.

Différence par rapport au réglage programmable ou avantages du réglage Plugin

Les réglages Plugin permettent également la programmation de réglages comme la « Réglage programmable ». Toutefois, les réglages sont programmées dans les langages de programmation Java, Python ou Matlab. Des réglages complexes peuvent être programmés. Des boucles de programme ou des bibliothèques peuvent être utilisées. La gamme complète de ces langages de programmation est disponible.

Il existe en outre la possibilité de programmer des « redirections » vers des réglages existantes ou vers d’autres environnements de programmation, comme cela a été fait pour Matlab ou Python, par exemple.

Application des réglages Plugin

Les réglages Plugin sont ajoutées comme des  » réglages traditionnels  » via la sélection des réglages d’une variante. Toutes les réglages Plugin existantes sont affichées dans la sélection de réglage Plugin.

Les projets qui contiennent un réglage Plugin ont besoin du Plugin avec le réglage pour être exécutés et modifiés. Les Plugins sont stockés sous forme de fichiers .jar et peuvent être ajoutés au dossier Plugins dans le chemin des données de Polysun, par exemple, pour Windows, ce serait normalement C:UsersPublicPolysunplugins oder normalerweise für MacOS /Programme/Polysun/plugins. Les Plugins ajoutés sont disponibles pour la sélection après un redémarrage de Polysun.

Vous pouvez l’essayer en utilisant le réglage Plugin de démonstration, qui est contenu dans le Plugin DemoPlugin.jar. Il est stocké dans le répertoire de données de Polysun et peut être copié du répertoire de données plugins/examples dans le dossier plugins. Le réglage est disponible pour la sélection après le redémarrage de Polysun.

Si un réglage Plugin est manquant, une erreur est affichée. L’édition ou la simulation n’est pas possible si le Plugin est absent. Le Plugin de réglage manquant doit être ajouté.

Polysun est livré avec un certain nombre de réglages Plugin.

Des exemples de projets sont disponibles dans le répertoire de données plugins/examples.

Les réglages Plugin ne sont actuellement pas ajoutés automatiquement aux projets comme les profils. Les Plugins doivent être transmis par l’utilisateur lui-même.

Réglage du débit par Plugin

Le réglage de débit Plugin se comporte exactement comme le réglage de débit existant. C’est une copie. Ce réglage est disponible en code source et est un logiciel open source, voir dans le répertoire de données plugins/PolysunPluginDevelopmentKit.zip.

Réglage Plugin « Intervalle fixe »

Un réglage qui spécifie un intervalle régulier et fixe dans la simulation.

Pour chaque point temporel qui est un multiple d’intervalle fixe, la simulation exécute un intervalle. Polysun peut effectuer plus d’intervalles si la simulation l’exige. Par exemple, pour un intervalle fixe de 180s, la simulation exécute les pas de temps suivants : 0s, 180s, 360s, 480s, 720s, …..  0 signifie qu’il n’y a pas d’intervalle fixe et que les intervalles normaux (240s pendant le jour et 720s pendant la nuit) de Polysun sont appliqués. 0 représente donc les « intervalles normaux ».

Réglage Plugin Matlab

Le réglage Matlab est un réglage Plugin qui transmet les appels de réglage de Polysun à une fonction Matlab. Le nom de la fonction dans Matlab est défini dans le réglage. Cette fonction doit se trouver dans le chemin de Matlab ou dans le répertoire de démarrage. La fonction Matlab doit avoir les arguments de fonction suivants :

function [ controlSignals, logValues, timepoints ] = control( simulationTime, status, sensors, sensorsUsed, properties, propertiesStr, preRun, controlSignalsUsed, numLogValues, stage, fixedTimestep, verboseLevel, parameters)

La fonction Matlab spécifiée dans le réglage Matlab est appelée à chaque intervalle par Polysun et doit calculer les signaux de réglage pour Polysun à chaque intervalle en fonction des paramètres d’entrée.

La configuration et les exemples du réglage Matlab sont stockés dans le répertoire de données de Polysun plugins/com.velasolaris.plugin.controller.matlab.matconsolectl.MatlabPluginController nach dem ersten Steuerungsaufruf abgelegt, z.B.

C:UsersPublicPolysunpluginscom.velasolaris.plugin.controller.matlab.matconsolectl.MatlabPluginController.

Le fichier config.properties contient la configuration de base du réglage Matlab. Si Matlab n’est pas trouvé, le chemin du fichier du programme Matlab doit être défini avec matctl.matlabLocation, par exemple :

matctl.matlabLocation=C:\Program Files\MATLAB\R2017a\bin\matlab.exe

La spécification correcte de «  » est techniquement nécessaire, c’est-à-dire double et simple avant les deux points (« : »). De même, le répertoire de démarrage peut être défini avec le paramètre matctl.matlabStartingDirectory lorsque Matlab est appelé pour la première fois. La plupart des autres paramètres sont explicites par leur nom ou ne nécessitent généralement pas d’adaptation supplémentaire.

Les arguments de la fonction du réglage sont documentés dans control.m. La fonction Matlab controlFlowrate.m met en œuvre un réglage débit. Il se comporte de la même manière que le « réglage débit traditionnel » de Polysun.

Ce réglage est disponible en code source et est un logiciel open source, voir dans le répertoire de données plugins/PolysunPluginDevelopmentKit.zip.

Si Matlab n’a pas encore été démarré, Matlab est démarré. Les points d’arrêt dans Matlab sont supportés.

Le réglage Matlab utilise la bibliothèque MatConsoleCtl pour la communication interne.

Dans le chapitre « Comparaison des vitesses », Matlab est comparé aux autres types d’appels de réglage.

Réglage Plugin RCP

Le réglage RPC est un réglage Plugin qui transmet les appels de réglage de Polysun à un serveur RPC via un Remote Procedure Call (RPC). Le nom de la fonction et l’URL du serveur sont définis dans le réglage, par exemple « controlFlowrate » et « http://localhost:2102/control ». La fonction dans le serveur RPC doit avoir les arguments de fonction suivants :

control(simulationTime, status, sensors, sensorsUsed, properties, propertiesStr, preRun, controlSignalsUsed, numLogValues, stage, fixedTimestep, verboseLevel, parameters)

=> controlSignals, logValues, timepoints

La fonction RPC spécifiée dans le réglage est appelée à chaque intervalle par Polysun et doit renvoyer les signaux de réglage pour Polysun à chaque intervalle en fonction des paramètres d’entrée.

Trois types de RPC sont supportés : JSON-RPC stream (vitesse optimisée) JSON-RPC et XML-RPC. JSON-RPC et XML-RPC sont tous deux supportés par de nombreux systèmes, par exemple par le langage de programmation Python.

Python (https://python.org) supporte JSON-RPC via des modules supplémentaires et XML-RPC par défaut. Un serveur XML, un serveur JSON-RPC et un serveur JSON-RPC stream optimisé pour Python sont disponibles dans le répertoire de données du réglage RPC (plugins/com.velasolaris.plugin.controller.rpc.SimpleRpcPluginController). Les fonctions de réglage sont dans controlFunctions.py.

Démarrage du serveur de fonctions :

python controlJsonRpcStreamServer.py

python controlJsonRpcServer.py

python controlXmlRpcServer.py

python controlRpcServer.py

Ou avec pypy (http://pypy.org), qui utilise un compilateur Just in Time (JIT) et est donc plus rapide :

pypy controlJsonRpcStreamServer.py

pypy controlJsonRpcServer.py

pypy controlXmlRpcServer.py

pypy controlRpcServer.py

Il est possible de démarrer le serveur de fonctions RPC automatiquement dans Polysun. Pour un démarrage réussi du serveur RPC, les paramètres doivent être définis correctement. Si le démarrage automatique du serveur RPC ne fonctionne pas, veuillez consulter le fichier journal de Polysun dans le répertoire de données de Polysun, par exemple C:UsersPublicPolysundata.log. L’analyse des problèmes requiert une certaine compréhension technique.

Les différents types d’appels de réglage sont comparés entre eux dans le chapitre « Comparaison des vitesses ».

Des informations supplémentaires sont documentées dans les fichiers de script.

Ce réglage est disponible en code source et est un logiciel Open Source, voir dans le répertoire des données plugins/PolysunPluginDevelopmentKit.zip.

Développement du réglage Plugin

Vous pouvez créer vous-même des réglages Plugin dans le langage de programmation Java. La condition préalable à la création de Plugins de réglage est la connaissance de la programmation Java et un environnement de développement Java.

Pour introduire, l’interface IPluginController définit un réglage et ControllerPlugin définit un Plugin.

Les réglages Plugin doivent se conformer ( implémenter ) à l’interface Java IPluginController. La méthode la plus importante est control(). Cette méthode est appelée à chaque intervalle et calcule les signaux de réglage à partir des signaux des sondes. La signature est

control(int simulationTime, boolean status, float[] sensors, float[] controlSignals, float[] logValues, boolean preRun, Map<String, Object> parameters).

Les valeurs des entrées de réglage sont mises à disposition dans le sensors-Array à chaque intervalle. À partir de là, le réglage Plugin calcule les signaux de réglage (controlSignals-Array) pour les sorties de réglage définies.

Les fichiers nécessaires au développement des réglages Plugin sont disponibles dans le répertoire de données de l’archive zip plugins/PolysunPluginDevelopmentKit.zip. Des informations complémentaires sont décrites dans les fichiers README.txt.

Un Plugin de réglage est défini par l’interface ControllerPlugin. Un Plugin doit avoir une classe qui implémente cette interface. Pour que le Plugin soit trouvé, il doit être « enregistré ». Pour ce faire, le nom de classe complet du Plugin créé (y compris les paquets) doit être saisi dans le fichier

META-INFservicescom.velasolaris.plugin.controller.spi.ControllerPlugin

Pour le Plugin de démonstration, le contenu de ce fichier est le suivant.

com.velasolaris.plugin.controller.DemoControllerPlugin. Les classes Java compilées (.class) avec le répertoire META-INF peuvent ensuite être emballées dans une archive Java (fichier .jar) et ajoutées au classpath de Polysun. Il est préférable d’ajouter les Plugins dans le dossier plugins du répertoire de données. La façon la plus simple de créer le fichier jar du Plugin est avec un script Ant, voir build.xml pour le Plugin de démonstration.

Par défaut, les jars des Plugins ne sont pas rechargés lorsque Polysun est en cours d’exécution. Cependant, le rechargement peut être utile pendant le développement. Si dans le fichier user.ini (par exemple dans C:UsersPublicPolysun), qui contient les paramètres de l’utilisateur Polysun, le paramètre

Plugin.ReloadAlways=1

est défini, les Plugins sont rechargés à chaque fois que le dialogue du réglage Plugin est appelé.

Pour développer un nouveau réglage Plugin, il est préférable de faire une copie du Plugin de démonstration et d’adapter les fichiers correspondants. Il est recommandé de sécuriser les nouveaux réglages avec des tests JUnit. Le test DemoFlowratePluginControllerTest est un exemple de test JUnit.

Comparaison de la vitesse

Les appels de réglage Plugin sont possibles de différentes manières. Les langages de programmation tels que Matlab, Python ou Java peuvent être particulièrement adaptés à certaines tâches.

La durée de la simulation dépend du type d’appels de réglage. Pour avoir une comparaison de vitesse, les différents appels de réglage ont été comparés entre eux. Le modèle « 16c : Chauffage (pompe à chaleur, sans puffer) » avec toujours la même logique de réglage du débit a été utilisé pour la comparaison, voir le projet Polysun « FlowratePluginControllerComparison.pse ».

Tableau: Temps de simulation et temps moyen d’appel des réglages pour différents types de commandes plug-in Testsystem: Intel Core i7-6820HQ 2.7GHz, Windows 10 1607, Java 8, Matlab 2016a, pypy 5.4.1, Polysun 9.2 dev (r24000), plugins/examples/FlowratePluginControllerComparison.pse

Type d’appelDurée de la simulationØ Appel de contrôle
FlowrateController4 s0 ms
Java FlowratePluginController4 s0 ms
MatlabPluginController86 s0.5 ms
JSON-RPC stream (Python)14 s0.06 ms
JSON-RPC (Python)Arrêt (68s)0.4 ms
XML-RPC (Python)228 s1.5 ms

Comparaison des appels de contrôle à travers différents protocoles RPC (Remote Procedure Call) avec les différents interpréteurs Python.

Tableau: Temps moyen d’appel de réglage pour différents interpréteurs Python et protocoles RPC Testsystem: Intel Core i7-4500U CPU 1.80GHz, openSuse 13.2 Linux, Java 8, Polysun 9.2 dev (r24000), plugins/examples/FlowratePluginControllerComparison.pse

Python / RPC-ProtocoleJSON-RPC streamJSON-RPCXML-RPC
Type RPCDéveloppement propreStandardStandard
Protocole de communicationTCP SocketHTTPHTTP
 EineTCP-Connection proSimulationIntervalleIntervalle
PyPy 5.4.10.06 ms0.5 ms0.6 ms
Python 2.70.09 ms0.7 ms1.3 ms
Python 3.40.08 ms0.9 ms1.4 ms

JSON-RPC provoque l’erreur « java.net.BindException : Address already in use : connect » (PSA-4571) sur un système rapide sous Windows lorsqu’il est exécuté localement. Utilisez plutôt le protocole « JSON-RPC stream ».

Développements ultérieurs possibles

Actuellement, les Plugins de réglage doivent également être transmis en parallèle lors de la transmission de projets. Dans le futur, il sera peut-être possible des enregistrer les Plugins dans des fichiers de projet Polysun .pse, comme c’est déjà le cas pour les profils.