Modules de régulation
Dans SIC^2, un module de régulation correspond à un ensemble de régulateurs (appelés aussi contrôleurs) qui fonctionneront simultanément lors d’une simulation. Il est possible de définir plusieurs modules de régulations dans un projet, donc stockés dans le fichier xml et disponibles potentiellement (si sélectionnés et activés) pour tous les scénarios et variantes. Pour chaque scénario, il faut définir quel module de régulation utiliser avant de lancer une simulation. Si un module est sélectionné pour un scénario, il sera aussi actif pour toutes ses variantes. Pour le désactiver au niveau d’une variante, il faut le désactiver au niveau du scénario père. On peut bien entendu n’en sélectionner aucun, mais au maximum un seul. On peut dire qu’un module de régulation permet de définir une logique de gestion d’un réseau, composé d’éventuellement plusieurs régulateurs ou contrôleurs.
Les modules de régulation sont utilisables aussi bien en calcul en régime transitoire qu’en calcul en régime permanent.
Les modules de régulations sont accessibles à partir du mode hydraulique de SIC, soit par le menu Outils > Modules de régulation, soit en effectuant un clic-droit sur une zone vierge du graphe du réseau.
La fenêtre qui apparaît permet de :
- Ajouter, supprimer et modifier des modules de régulation dans le projet en cours.
- Sélectionner un module de régulation à utiliser pour la simulation.
Choix d’un module de régulation
Pour ne pas utiliser de module de régulation cliquer sur le bouton "Aucun Module". Sinon, choisir un module dans la liste et cliquer sur "Sélectionner".
Dans le mode hydraulique, d’édition des scénarios et variantes, l’ensemble des régulateurs du module de régulation sélectionné apparaitront sur le graphe du réseau. Sauf si bien entendu, par exemple pour alléger l’affichage, ou pour en cacher certains moins importants que d’autres, certains d’entre eux sont déclarés comme non-visibles (cliquer ou non sur la boite Visible à droite du nom du Régulateur dans la liste). Les variables U sont reliées à la boite représentant le régulateur avec un trait rouge. Les variables Y avec un trait vert foncé. Les variables Z avec un trait vert clair.
Edition d’un module de régulation
Le principe des modules de régulation dans cette version est d’une part de définir les points de mesure (variables mesurées Z), de régulation (variables contrôlées Y ainsi que leurs consignes fonction du temps YT, éventuellement) et de contrôle (variables de contrôle U), et d’autre part de préciser la méthode de régulation agissant sur ces points, quelque soit leur nature et leur localisation.
Cette méthode peut être choisie parmi une bibliothèque existante. Les méthodes de régulation proposées pour l’instant sont :
- AMIL (vannes de régulation Gec-Alsthom, mais ancienne option disponible dans les versions 4 de SIC, il est possible maintenant de sélectionner directement cet ouvrage dans la bibliothèque d’ouvrages, ce qui est bien mieux car implémentation implicite au lieu de bouger l’ouverture avec un pas de temps de retard)
- AVIS (même remarque que pour AMIL)
- AVIO (même remarque que pour AMIL)
- ATV (Auto Tuning Variation, permettant de caler automatiquement un PID)
- ATVPID (Méthode qui applique la méthode ATV dans un premier temps puis qui enclenche le PID dès qu’ATV a fournis les paramètres du PID, et passe d’un U à un autre s’il y en a plusieurs, avec une temporisation éventuelle pour ne caler un autre U que une fois la stabilisation hydraulique obtenue)
- BIVAL (Méthode contrôlant un point intermédiaire virtuel obtenu comme la combinaison linéaire d’un point amont et d’un point aval, qui, si bien choisis, correspond à peu près à contrôler un volume dans ce tronçon. L’algorithme du contrôleur est de type PID. Méthode développée par la Sogreah dans les années 80)
- BOLST (boucle ouverte fournie sous forme d’un fichier texte)
- BOMAT (boucle ouverte fournie sous forme d’un fichier .mat MatLab)
- BOSCI (boucle ouverte fournie sous forme d’un fichier .dat SciLab)
- DIGEST (simulateur du digesteur du SCADA inspiré de celui du canal de Gignac, par échange de données via des fichiers texte structurés, cf. SCADA ci-dessous)
- DSS (contrôleur discret dans l’espace d’état dont les matrices A, B, C et D sont données dans un fichier .mat MatLab, permettant de simuler tout contrôleur LTI = Linear Time Invariant)
- FILEX (échange de données U, Y, YT et Z dans un fichier externe)
- GPC (Generalized Predictive Contôleur. Pas actif dans cette version)
- LP (calcul de la norme LP d’un signal Z choisi)
- MATLAB (lien DDE avec MatLab)
- PID (contrôleur Proportionnel, Intégral, Dérivé)
- PLOT (dessins. En cours de dévelopement)
- POMPES (déclanchements et arrêts de pompes en fonction de cotes, voir exemple et documentation spécifique)
- PRINT (écriture des variables U, Y, YT et Z choisie sur le fichier .LST)
- QSCP (scénario type de prélèvement à des prises d’irrigation)
- SCADA (simulateur du SCADA inspiré de celui du canal de Gignac, cf. DIGEST)
- SCILAB (lien DDE avec SciLab)
- STEPS (génération automatique d’échelons)
- STOP (interruption du calcul permettant de mimer une régulation manuelle)
- USER1 à USER9 (9 modules ouverts à l’utilisateur, à programmer en FORTRAN dans DLLUSERn.FOR (n=1 à 9) puis à compiler avec le compilateur Digital ou Intel, cf MkDllUser.bat sous sic/prog, pour en faire une dll qui remplacera la dll vide initiale sous sic/exe).
- WDLANG (possibilité d’écrire un script en language WdLanguage de Windev)
Des exemples sont fournis pour chacune de ces méthodes.
Ces méthodes de régulation utilisent les variables U, Y, YT et Z ou parfois juste une sous-partie de ces différentes variables. Par exemple, la méthode LP ne calcule pas de variable U, et n’utilise pas les variables Y ni YT, puisqu’elle fait juste le calcul de la norme Lp des variables mesurées Z. Si le bon nombre minimum de ces variables n’est pas fournis, un message d’erreur sera indiqué lors de l’exécution du calcul.
Nous indiquons dans le tableau suivant les variables utilisées par les différentes méthodes. Cette table est importante puisqu’elle indique par exemple que si vous utilisez la méthode de régulation PID, il faudra définir la variable commandée comme variable Y, et non pas comme variable Z.
Méthode | U (variables de contrôle) | Y (variables contrôlées) | YT (Consignes sur les variables contrôlées) | Z (Variables mesurées) | Mono ou Multivariable |
AMIL, AVIS, AVIO | X | X : doit être donné en tirant d’eau | SISO | ||
ATV | X | X | X | option si calcul des paramètres à partir de Z au lieu de U | SISO mais dupliqué si nu > 1. Option également si on veut appliquer ATV non pas sur Y mais sur une pondération de Z, pour caler un régulateur Bival par exemple |
ATVPID | X | X | X | option si calcul des paramètres à partir de Z au lieu de U | MIMO avec des SISO successifs envoyés vers ATV puis PID |
BIVAL | X | X : une variable Y(1) doit être définie, même si elle est recalculée ensuite à partir de Z(1) et Z(2), mais rend ainsi disponible les trajectoires au cours du temps YT | X | X | 2ISO mais dupliqué si nu > 1 |
BOLST | X | SISO mais on peut en avoir plusieurs qui partagent le même fichier de paramétrisation BOLST.TXT | |||
BOMAT, BOSCIL | X | MO | |||
DIGEST | X | X | X | X | MIMO |
DSS | X | X | X | X | MIMO |
FILEX | X | X | X | X | MIMO |
GPC | X | X | X | X | pas actif |
LP | X | MI | |||
LQR | X | X | X | X | pas actif |
MATLAB | X | X | X | X | MIMO |
PID | X | X | X | SISO mais dupliqué si nu > 1 | |
POMPES | X | X | X | SISO mais SI2O si nu = 2 : le débit est réinjecté ailleurs : U(2)=-U(1) | |
X | X | X | X | MIMO | |
QSCP | X | SISO mais dupliqué si nu > 1 | |||
SCADA | X | X | X | X | MIMO |
SCILAB | X | X | X | X | MIMO |
STEPS | X : tous les U sont bougés de la même manière | option : écrites sur fichier LST | X : le seuil de déclanchement est calculé sur le min de tous les Z | MIMO | |
STOP | X | X | MIMO | ||
USER1 à USER9 | X | X | X | X | MIMO |
WDLANG | X | X | X | X | MIMO |