J'ai récemment lu un livre intitulé "Introduction à l'ingénierie de contrôle avec Python". J'aimerais essayer le Python-Control qui en sort, donc je vais essayer une simulation de contrôle de fréquence. Bien qu'il soit inclus dans le titre du contrôle, le sujet principal est l'ingénierie électrique.
・ Explication du système d'alimentation et du contrôle de fréquence ・ Essayez d'utiliser Python-Control
Ce sera le contenu.
L'électricité 100V que nous utilisons à la maison n'est pas toujours de 100V, mais vibre à intervalles réguliers comme le montre la figure ci-dessous. À ce moment, le changement de temps de la tension
Pour ceux qui utilisent l'électricité, la fréquence de l'électricité est souvent considérée comme constante à 50 ou 60 Hz. Cependant, la fréquence réelle change constamment, et si la fréquence change de manière significative, cela peut avoir un effet négatif sur l'équipement électrique. Par conséquent, l'exploitant du système électrique (c'est-à-dire la compagnie d'électricité) doit contrôler la fréquence afin qu'elle ne fluctue pas de manière significative.
Avant d'expliquer pourquoi la fréquence fluctue, expliquons d'abord brièvement le système d'alimentation. Le système d'alimentation se compose d'une centrale électrique qui fournit de l'énergie, des consommateurs qui consomment de l'énergie et d'un réseau de transmission et de distribution d'énergie qui les relie. Une propriété importante du système d'alimentation est le principe de "quantité égale simultanée" (car il est difficile de stocker l'électricité) que la puissance fournie $ P_G $ et la puissance consommée $ P_L $ doivent toujours correspondre. Cependant, le côté qui utilise l'électricité (les clients) veut utiliser autant d'électricité qu'ils le souhaitent, quand ils le souhaitent, de sorte que la centrale doit toujours adapter la puissance produite à la consommation d'énergie afin d'atteindre la même quantité en même temps.
Alors, comment la centrale ajuste-t-elle la puissance générée à la consommation électrique? Il n'est pas possible de saisir la consommation électrique de tous les consommateurs en temps réel. Par conséquent, le ** contrôle de fréquence ** devient important.
Les types de centrales électriques sont l'énergie thermique, l'énergie hydraulique et la production d'énergie nucléaire. Récemment, la production d'énergie solaire et la production d'énergie éolienne augmentent, mais je n'y penserai pas cette fois. Ces méthodes de production d'énergie ne diffèrent que par la manière d'obtenir l'énergie de rotation (énergie mécanique), mais toutes les pièces qui passent de l'énergie mécanique à l'énergie électrique sont les mêmes et un "générateur synchrone" est utilisé.
Comme le montre la figure, en installant un générateur coaxialement à la turbine à vapeur, la puissance mécanique de la turbine est convertie en énergie électrique. A ce moment, la relation suivante est vraie entre la vitesse de rotation du rotor $ \ omega_m \ [\ rm {rad / s}] $ et la fréquence de la tension induite par le générateur $ f \ [\ rm {Hz}]
-Lorsque $ P_m> P_g $, la fréquence augmente (offre excédentaire) -Lorsque $ P_m = P_g $, la fréquence est constante (l'offre et la demande sont équilibrées) -Lorsque $ P_m <P_g $, la fréquence chute (alimentation insuffisante)
En d'autres termes, il est nécessaire de mesurer la fréquence du système d'alimentation, de diminuer la sortie du générateur lorsque la fréquence augmente, et d'augmenter la sortie du générateur lorsque la fréquence diminue. Le contrôle de fréquence est un contrôle de rétroaction qui utilise la relation entre l'équilibre et la fréquence de l'offre et de la demande.
Cette fois, considérons le cas où les générateurs de l'ensemble du système électrique sont intégrés dans une seule unité. Le schéma de principe du contrôle de fréquence est le suivant. La différence entre la sortie du générateur et la charge affecte la fluctuation de fréquence. Les caractéristiques de fréquence du système sur la figure prennent en considération les caractéristiques de fréquence de la charge en plus de l'inertie du générateur. Il existe deux principaux types de boucles de rétroaction, les boucles de contrôle locales et les boucles de contrôle globales.
Dans la boucle de commande locale, le régulateur du générateur mesure la fréquence et ajuste la quantité de vapeur qui s'écoule dans la turbine en fonction de l'écart de fréquence. Cela permet de maintenir un équilibre entre l'offre et la demande même lorsque la charge fluctue. Cependant, même si l'équilibre offre-demande peut être maintenu avec seulement un contrôle local, la fréquence convergera vers une valeur déviée de 50 $ \ rm {Hz} $ en raison d'un écart constant.
Le contrôle global est contrôlé à partir du centre de commande central de l'alimentation électrique, qui gère la centrale électrique. La déviation de fréquence se produira uniquement avec le contrôle local, mais ici nous utiliserons le contrôle intégral pour commander à chaque générateur de renvoyer la fréquence à 50 $ \ rm {Hz} $ (cette fois un générateur) ).
De plus, bien qu'une simple commande intégrale soit utilisée cette fois, la sortie est déterminée en considérant de manière exhaustive les caractéristiques de vitesse et le coût du carburant de chaque générateur dans le système réel.
J'ai fait référence à cet article pour savoir comment utiliser Python-Control. Utilisez PythonControl pour trouver la réponse à l'onde sinusoïdale.
Maintenant, je voudrais simuler la fluctuation de fréquence par rapport à la fluctuation de charge en Python. L'exemple de code est assemblé à la fin. Tout d'abord, comme le montre la figure ci-dessous, le bloc de contrôle est simplifié et représenté par une seule fonction de transfert. L'utilisation de Python-Control facilite la gestion des fonctions de transfert.
Le temps de simulation est de 100 secondes et le pas est de 0,01 seconde. On suppose que la fluctuation de la charge augmentera de 10% 10 secondes après le début de la simulation.
Affiche le changement de temps de l'écart de fréquence lorsque la fluctuation de charge est appliquée. Le premier est pour le contrôle local uniquement ($ K_I = 0 $). Vous pouvez voir qu'il y a un écart constant.
Vient ensuite le cas de l'ajout d'un contrôle global. Il est revenu à 50Hz correctement.
De cette manière, le système d'alimentation surveille en permanence la fréquence et continue d'ajuster la sortie de la centrale électrique afin qu'elle puisse maintenir 50 Hz ou 60 Hz. Cependant, il est difficile de contrôler la production des sources d'énergie renouvelables (énergie éolienne et solaire), qui ont augmenté ces dernières années, et c'est un facteur qui réduit la capacité de contrôle de fréquence. Il semble que les compagnies d'électricité ont également du mal à faire face au nombre toujours croissant de sources d'énergie renouvelables.
En fait, je voulais faire une simulation de reproduction du Hokkaido Blackout en septembre 2018, mais c'était compliqué et je n'ai pas bien compris. Donc, cette fois, j'ai essayé le plus simple avec contrôle de fréquence. Je veux augmenter ce que je peux faire petit à petit.
Si vous êtes intéressé, veuillez lire ce matériel. La fluctuation de fréquence juste avant la panne est répertoriée. Quel genre de phénomène est blackout --Electrical Society
Exemple de code
import numpy as np
from control.matlab import *
import matplotlib.pyplot as plt
def main():
#réglages des paramètres
M = 10 #Constante inertielle
D = 2 #Amortissement
K_gov = 20 #Gain de contrôle proportionnel
K_I = 2 #Gain de contrôle intégré
#Paramètres de la fonction de transmission
System_frequency = tf(1, [M, D]) #Caractéristiques de fréquence du système
Governor = tf(K_gov, 1) #Bloc de contrôle gouvernemental
LFC = tf(K_I, [1, 0]) #Bloc de contrôle LFC
G = - feedback(System_frequency, Governor + LFC) #Fonction de transfert à l'échelle du système
#Paramètres de simulation
T = np.arange(0, 100, 0.01) # 0~100 secondes
dPL = np.array([0 if t < 10 else 0.1 for t in T]) #Réglage de la fluctuation de la charge(Variation de pas)
#Calcul
df, T, _ = lsim(G, dPL, T)
#terrain
plt.figure(figsize=(9, 4))
plt.plot(T, dPL) #Fluctuation de charge
plt.grid()
plt.xlim(0, 100)
plt.figure(figsize=(9, 4))
plt.plot(T, (df+1)*50) #Écart de fréquence
plt.grid()
plt.xlim(0, 100)
if __name__ == '__main__':
main()
plt.show()
Recommended Posts