La méthode WDLANG

La méthode WDlang permet d’écrire un module de régulation en WDlangage tel que défini dans l’environnement de développement Windev. Une aide sur ce langage est disponible sur le site http://www.pcsoft.fr.

Cette fonctionnalité, réalisée en WinDev, a pour but d’offrir une alternative à l’actuel lien DDE avec MATLAB ou SCILAB ou à l’interface Fortran utilisés avec les programmes FLUVIA et/ou SIRENE pour la programmation de modules de régulation. Cette nouvelle fonctionnalité ne nécessite aucun logiciel tiers, contrairement au lien DDE MatLab qui nécessite le logiciel MatLab, au lien DDE SciLab qui nécessite le logiciel SciLab (logiciel libre sous licence GNU) ou à l’interface Fortran qui nécessite un compilateur Fortran (Digital ou Intel).

Cette fenêtre offre un fonctionnement proche de celui des liens DDE MATLAB ou SCILAB. Elle applique des lois à des données d’entrée (Y, YT, Z) pour générer des données de sortie (U) résultats du calcul et éventuellement en utilisant des paramètres (PARA). Cette fenêtre offre comme MATLAB la possibilité à l’utilisateur d’écrire ses propres lois de calcul. Les variables Y, YT, Z et U sont optionnelles, on n’est pas obligé de toutes les définir et utiliser. On peut par exemple juste utiliser des variables Z pour les visualiser numériquement ou graphiquement, ou on peut juste utiliser des variables U pour les modifier en fonction du temps par exemple, ou les lire sur un fichier externe (commande de type Boucle Ouverte). On peut bien entendu toutes les utiliser pour par exemple calculer des commandes U à partir de variables mesurées Z, de variables contrôlées Y, éventuellement affectées de consignes YT (commande de type Boucle Fermée).

Voici un aperçu global de la fenêtre, composée en partie supérieure des tableaux de données, résultats, et en partie inférieure de l’algorithme à exécuter.

Fenêtre du module WDLANG

La fenêtre reçoit les données sous forme de quatre tableaux de réels appelés « Y, YT, Z et PARA » que les programme Fluvia et Sirene de calcul hydraulique en régime permanent et transitoire respectivement (écrits en Fortran) renseigne à chaque pas de temps de régulation.

Module WDLANG : tableau des données

La fenêtre va ensuite exécuter un code (loi de calcul), saisi par l’utilisateur ou encore chargé à partir d’un fichier texte. Si le fichier "wdroutine.txt" existe dans le sous répertoire de donnée, il sera chargé au premier appel. Sinon il sera possible de sélectionner un autre fichier d’extension .txt, ou de l’écrire dans la fenêtre de saisie (et de le sauvegarder).

Cette loi a pour but, par exemple, de renseigner le tableau de résultat « U » ci-contre en suivant l’algorithme de la loi de calcul (écrit en WLangage).

Module WDLANG : tableau des commandes U

Le programme Fluvia ou Sirene renseigne les tableaux d’entrée (Y, YT, Z PARA) à chaque pas de temps de régulation, lance le calcul de l’algorithme, récupère les variables de sorties (U) calculées ainsi que les autres variables modifiables à l’écran.

On peut faire passer la fenêtre en mode invisible pour accélérer les calculs (l’affichage de la fenêtre et des calculs ne sont alors réalisés que lors de la prochaine reprise en main). On peut également demander à ne reprendre la main que dans plusieurs pas de temps de calcul (ou à un instant futur).

L’utilisateur peut ensuite écrire du code en WLangage dans le champ prévu à cet effet dans la partie inférieure de la fenêtre, le sauvegarder en fichier texte, ou charger un fichier existant.

Bouton Compiler : Compile le code écrit dans la zone de texte. Cette phase est nécessaire si le code a été modifié, ou si un autre fichier a été chargé. Des messages sont indiqués s’il y a des erreurs de compilation, ou si au contraire tout s’est bien passé.

Bouton Exécuter : Exécute le dernier code compilé avec succès, sans incrémenter le temps, et sans retourner dans le calcul hydraulique de Fluvia ou Sirene.

Bouton Continuer : Exécute le dernier code compilé avec succès et redonne la main au programme Fluvia ou Sirene, pour ainsi réitérer sur la simulation hydraulique.

Un certain nombre de variables sont accessibles et modifiables à partir du code :

Les variables PARA correspondent au tableau des paramètres. Il est affiché sur la droite de la fenêtre. Ce tableau est dimensionné à 20 variables réelles dans les versions actuelles de SIC^2, mais peuvent être augmentées si nécessaire pour des versions futures. Ce sont des variables persistantes entre 2 appels au code. Les 5 premières variables PARA sont utilisées par le module de régulation WDLANG. Elles peuvent être modifiées par le code mais cela aura du coup des conséquences sur le fonctionnement du module :

PARA[1] pour fenêtre visible avec rafraîchissement des valeurs à chaque DTU (si PARA[1]=2) ou invisible (si PARA[1]=1) hors saisie écran (lu sur le fichier de données .xml, dans les données spécifiques du module, modifiable à l’écran)
PARA[2] pour compteur pour saisie écran (valeur max) (idem)
PARA[3] pour compteur pour saisie écran (valeur courante)
PARA[4] pour compteur pour exécution du calcul (valeur max) (lue sur .reg, pas modifiable à l’écran)
PARA[5] pour compteur pour exécution du calcul (valeur courante)

D’autres variables sont accessibles :
T : temps courant en secondes
DT : pas de temps du calcul numérique en secondes
DTU : pas de temps d’appel du module de régulation en secondes
TFIN : temps de fin de la simulation
NGR : numéro du régulateur
INU : nombre de variables U
INY : nombre de variables Y
INZ : nombre de variables Z
INPARA : nombre de paramètres (20 par défaut actuellement)

T et DT sont pilotés par le programme Fortran Fluvia et/ou Sirene. Les modifier n’aura pas de conséquence, hormis dans les lignes de codes suivant cette modification, et pour l’exécution présente. Ils seront remis à leurs valeurs initiales au prochain appel. DTU peut être modifé soit dans le code, soit grâce au champ "Prochaine pause" en Nombre de pas de temps ou en Temps.
TFIN peut être changé dans le code, mais uniquement en le racourcissant. Sinon il y aura des problèmes lors de l’écriture des résultats dans le fichier, en tout cas en format binaire.
Les autres paramètres ci-dessus ne peuvent pas être changés, ou en tout cas cela n’aura pas d’effets.

On peut aussi avoir accès à 2 champs Graphe (cf ce type de champs dans la documentation du langage Windev WdLangue sur leur site web www.pcsoft.fr) pour y dessiner ce que l’on veut, et par exemple les ou des variables U, Y, YT et/ou Z. Mais aussi d’autres choses comme des calculs intermédiaires de l’algorithme programmé par exemple. Ces champs Graphes sont nommés GRFU et GRFZ. Ils sont visibles sur le 2ème onglet de la fenêtre. Le code de programmation permettant de les utiliser est par exemple :

i est un entier
pour i=1 à INU
  grNuageAjouteDonnéeXY(GRFU,i,t,u[i])
fin
pour i=1 à INZ
  grNuageAjouteDonnéeXY(GRFZ,i,t,z[i])
fin
grDessine(GRFU)
grDessine(GRFZ)

Ces variables, ainsi que les u, y, yt, z, para, etc peuvent être utilisées en majuscules ou minuscules. Avant compilation, il y a une mise en forme et modification du source du code programmé, pour qu’il utilise les noms des variables compréhensibles par Windev, c’est à dire en utilisant le nom des variables globales (en ajoutant l’extension COL_RegWDLang.) ou faisant référence au nom de la fenêtre Windev (regWDLang.). Le source ainsi modifié est visible sur le 3ème onglet. Cette information est juste donnée pour les experts souhaitant comprendre comment cela fonctionne. Cette mise en forme change également les variables minuscule -> majuscule, et sa visualisation sur le 3ème onglet indique aussi le numéro de ligne, ce qui facilite le débuggage, puisque cette ligne est indiquée dans les retours de messages du compilateur dynamique.

Format de la ligne PS : (F8.2,1X,F8.2,1X,F8.2)