.. _session-inverter-grid: ################################################## Conversion DC/AC 2/2 : Onduleur connecté au réseau ################################################## Ce TP, suite à celui sur :ref:`session-inverter-island`, vise à mettre en œuvre un onduleur connecté au réseau, tel qu'utilisé dans les centrales solaires et les batteries stationnaires (ex. : alimentation de secours “UPS” ou alimentation de microréseau isolé). Pour fonctionner, ces convertisseurs nécessitent différentes régulations. Ce TP vise à étudier la **régulation du courant** dite "grid following" qui vise à injecter un courant sinusoïdal en phase avec la tension d'un réseau électrique existant. Introduction ============ Ce TP se déroule sur 2 séances (TP 4 et 5), car il nécessite d'aborder plusieurs blocs préparatoires, selon l'enchainement suivant : .. figure:: images/progression_onduleur.png :alt: Structuration des concepts et des séances du TP onduleur connecté au réseau Structuration des concepts et des séances du TP onduleur connecté au réseau En effet, réguler le courant dans un onduleur est un problème d'asservissement en **régime alternatif**. Pour se ramener à un problème plus usuel de régulation de grandeurs **quasi statiques**, le coeur contrôle est formulé dans le **référentiel tournant**, synchrone avec la fréquence du réseau (référentiel dq), comme illustré : .. figure:: images/inverter_grid_control.png :alt: Structure de l'onduleur connecté au réseau avec contrôle de courant :name: fig_inverter_grid_control Structure de l'onduleur connecté au réseau avec contrôle de courant Ainsi le contrôleur dq se trouve interfacé avec un onduleur "transformé" dans l'espace dq. La première séance vise à étudier, réaliser et valider cet "interfaçage dq". Cela inclut : 1. Synchronisation au réseau avec une boucle à verrouillage de phase (PLL) 2. Transformation dq des signaux La deuxième séance vise à étudier, réaliser et valider la régulation de courant. Modes de fonctionnement ----------------------- Le code proposé inclut une sur une supervision de la partie puissance qui se base sur 3 modes de fonctionnement : * IDLE : partie puissance éteinte (état initial) * POWER : partie puissance activée * ERROR : partie puissance éteinte, suite à un arrêt forcé par la supervision Le passage vers IDLE et POWER se fait en pressant la touche respectivement "i" ou "p" dans le Moniteur Série. Pour pouvoir entrer dans le mode POWER et pour y rester il faut que plusieurs conditions soient conjointement respectées : * Aucun courant trop élevé * Tension bus DC suffisamment grande * PLL synchronisée .. figure:: images/inverter_state-machine.png :alt: Supervision de la partie puissance : monitoring et modes de fonctionnement Structure de supervision de la partie puissance : monitoring et modes de fonctionnement Expérience synchronisation réseau ================================= L'objectif est de réaliser un **onduleur autonome**, c.-à-d. qui aliment une charge résistive, mais dont la fréquence et la phase sont **synchronisées sur le réseau**. C'est une expérience sans application réelle, mais qui permet de fonctionner sans régulation de courant. Schéma : On reprend l'onduleur qui alimente une charge réstive autonome de :ref:`session-inverter-island`, mais en ajoutant une **mesure de tension réseau** pour se synchroniser : .. figure:: images/ownverter_wiring_inverter_load-grid-sync.png :height: 20em :alt: Câblage du convertisseur OwnVerter en onduleur triphasé autonome, avec filtre inductif, sur charge triphasée en étoile + mesure tension réseau pour la synchronisation Câblage du convertisseur OwnVerter en onduleur triphasé autonome, avec filtre inductif, sur charge triphasée en étoile + mesure tension réseau pour la synchronisation .. admonition:: Code à utiliser :class: attention Le microcontrôleur de la carte OwnTech est à programmer avec le template suivant : https://github.com/pierre-haessig/ownverter-sync Présentation de la PLL ---------------------- On va utiliser une PLL triphasée dite "SRF-PLL" (Synchronous Reference Frame), c.-à-d. qui utilise la transformation dp (transformation de Park) comme bloc de comparaison de phase : .. figure:: images/PLL-3ph.png :height: 8em :alt: Schéma bloc de la SRF-PLL triphasée Schéma bloc de la SRF-PLL triphasée En effet, la composante q du signal est *proportionnelle au sinus de la différence de phase* (et avec pour gain l'amplitude de la tension d'entrée). Aux petites variations, on peut obtenir le modèle linéarisé suivant : .. figure:: images/PLL-lin.png :height: 9em :alt: Schéma bloc de la PLL linéarisée Schéma bloc de la PLL linéarisée Modèle de simulation -------------------- Modèle Matlab/Simulink de la PLL (linéarisée) : * Modèle Simulink: :download:`pll_sim_blank.slx ` (simulation temporelle, À COMPLÉTER) * Script Matlab compagnon: :download:`pll_params_blank.m ` (définition des paramètres et analyse fréquentielle, À COMPLÉTER) .. figure:: downloads/pll_sim_blank.png :alt: Modèle Simulink linéarisé de la PLL (À COMPLÉTER) Modèle Simulink linéarisé de la PLL (À COMPLÉTER) Travail à effectuer ------------------- * Analyser théoriquement la PLL, valider le réglage du correcteur (analyse fréquentielle + simulation) * pertinence du réglage du correcteur PI fonction(ξ, ωn) * effet du feedforward * Implémenter la PLL, valider le fonctionnement (réaliser des essais indiciels) * Implémenter la tension de sortie sinusoïdale de l'onduleur Et si le temps le permet, faire un essai indiciel Vid -> Id. TODO : * clarifier atttendu de la partie théorique PLL (réglage flexible). Ajouter écart angle scope (pour comparer à pi) * spécif voltage_duty Ressources pour l'implémentation : * :ref:`prog-transform` * :ref:`prog-ctrl` Onduleur connecté au réseau =========================== Schéma : Pour cette dernière expérience, l'onduleur est **connecté au réseau** à la fois pour la mesure de tension, mais aussi pour l'injection de puissance : .. figure:: images/ownverter_wiring_inverter_grid.png :height: 20em :alt: Câblage du convertisseur OwnVerter en onduleur triphasé connecté au réseau Câblage du convertisseur OwnVerter en onduleur triphasé connecté au réseau .. admonition:: Code à utiliser (onduleur connecté au réseau) :class: attention Le microcontrôleur de la carte OwnTech est à programmer avec le template suivant : https://github.com/pierre-haessig/ownverter-grid Travail à effectuer ------------------- Le code fournit est fonctionnel, mais il utilise un correcteur "legacy" dont le réglage est figé et mal maitrisé. L'objectif est d'analyser sa performance puis de l'améliorer, dans une démarche MBE (Model-based engineering). Le TP se déroule ainsi : 1. Analyse de l'existant, en expérimentation 2. Reproduction de l'existant sur un modèle de simulation 3. Amélioration du contrôle par des essais en simulation 4. Validation des améliorations en expérimentation Deux axes d'amélioration sont à explorer : * Est-il possible d'enlever le feedfoward de la tension réseau ? * La méthode de réglage de contrôleur PI "SIMC" permet-elle d'obtenir facilement une constante de temps en boucle plus rapide ? à propos du feedfoward de la tension réseau : le contrôleur existant utilise une constant ``VG_FF = GRID_VPK`` (21.5 V) comme terme de feedforward pour la tension onduleur sur le canal d. Cette constante adhoc est évaluée comme un risque de bug future (si on oublie de changer sa valeur). Si le contrôleur fonctionne sans, autant l'enlever. à propos de la méthode réglage de contrôleur PI "SIMC" : elle propose une formule de réglage qui permet d'obtenir une réponse en boucle fermée approximativement du 1er ordre, avec une constante de temps à choisir, notée :math:`\tau_c`. La méthode se traduit, pour un système à contrôler du premier ordre noté :math:`G(p) = \frac{k}{1+\tau_1 p}` par le choix d'un contrôleur PI :math:`C(p) = K_p (1+\frac{1}{T_i.p})` avec pour réglage : * gain proportionnel :math:`K_p = \frac{1}{k}\frac{\tau_1}{\tau_c}` * constante de temps de l'action intégrale :math:`T_i = \min(\tau_1, 4.\tau_c)` On se propose ici d'essayer avec :math:`\tau_c` = 5 ms ou moins. Source : Sigurd Skogestad "Simple analytic rules for model reduction and PID controller tuning", *Journal of Process Control*, 2003. https://skoge.folk.ntnu.no/publications/2003/tuningPID/ Méthode : 1. Charger le code "onduleur connecté au réseau" et réaliser le couplage au réseau (faire vérifier le montage par l'encadrant.e) 2. Mesurer la performance du système : dans quelle mesure le courant suit la consigne ? quelle est la dynamique en régime transitoire (essai indiciel sur la consigne) 3. ... Modèles de simulation ---------------------- **Modèles de contrôle dans le référentiel d/q** C'est-à-dire contrôleur dq dont le comportement est simulé uniquement dans le référentiel dq (modèle dq de l'onduleur). Archive :download:`Inverter_dq_control.zip `, avec **deux modèles simulables (complet vs simplifié)** : * ``inverter_control_params_FR.m`` : Script Matlab pour définir les paramètres des modèles * ``inverter_dq.slx`` : Schéma Simulink de contrôle de l'onduleur (onduleur modélisé dans le référentiel dq). Modèle complet avec les deux canaux (d et q). :numref:`fig_simulink_inverter_dq` * ``inverter_dq_single.slx`` : Schéma Simulink de contrôle de l'onduleur (onduleur modélisé dans le référentiel dq). Modèle simplifié à un seul canal (d ou q). :numref:`fig_simulink_inverter_dq_single` Et l'archive contient aussi des **sous-sytèmes** (`subsystems `_), c'est-à-dire des briques de base utilisées dans les deux modèles simulables : * ``dq_current_control.slx`` : contrôleur de courant dq (utilise deux contrôleurs PI) * interface (cad définition des entrées et sorties) en parfaite correspondance du bloc **"dq current controller"** du schéma global :numref:`fig_inverter_grid_control` * utilisé comme contrôleur du modèle complet ``inverter_dq.slx`` * avec feedforward de la tension réseau pour le canal d * ``pi_current.slx`` : contrôleur de courant PI (contrôleur avec comparateur, comme dans le code embarqué, cf. :ref:`prog-ctrl`) * utilisé dans le modèle simplifié ``inverter_dq_single.slx`` et dans ``inverter_dq_single.slx`` (un pour le canal d, un pour le canal q) * PI paramétré par les variables ``Kp_current`` et ``Ti_current`` (définies dans le script Matlab) .. figure:: downloads/inverter_dq.png :alt: Schéma Simulink de contrôle de l'onduleur :name: fig_simulink_inverter_dq Schéma Simulink de contrôle de l'onduleur (onduleur modélisé dans le référentiel dq). Modèle complet avec les deux canaux (d et q). .. figure:: downloads/inverter_dq_single.png :alt: Schéma Simulink de contrôle de l'onduleur (modèle simplifié) :name: fig_simulink_inverter_dq_single Schéma Simulink de contrôle de l'onduleur (onduleur modélisé dans le référentiel dq). Modèle simplifié à un seul canal (d ou q). **Modèles de contrôle dans le référentiel abc** (c'est-à-dire appliqué à un modèle moyen abc de l'onduleur) : *NON DISPONIBLE pour 2025*. * reste à implémenter : blocs d'interfaces dq (Park et inverse Park) et bloc "voltage to duty" du schéma global :numref:`fig_inverter_grid_control`