Versuchen Sie die Frequenzsteuerungssimulation mit Python

Einführung

Ich habe kürzlich ein Buch mit dem Titel "Einführung in die Steuerungstechnik mit Python" gelesen. Ich möchte die Python-Steuerung ausprobieren, die darin herauskommt, also werde ich eine Frequenzsteuerungssimulation ausprobieren. Obwohl es im Titel der Steuerung enthalten ist, ist das Hauptthema die Energietechnik.

・ Erläuterung des Stromversorgungssystems und der Frequenzregelung ・ Versuchen Sie es mit Python-Control

Es wird der Inhalt sein.

Was ist Frequenz?

Die 100-V-Elektrizität, die wir zu Hause verbrauchen, beträgt nicht immer 100 V, sondern vibriert in regelmäßigen Abständen, wie in der folgenden Abbildung gezeigt. Zu diesem Zeitpunkt ändert sich die Zeit der Spannung $v(t) = 100\sqrt 2 \sin(2\pi f t)  [\rm{V}]$ Wird ausgedrückt als. Hier wird $ f \ $ Frequenz genannt und gibt an, wie oft es pro Sekunde vibriert. Und diese Frequenz beträgt 50 Hz in Ostjapan und 60 Hz in Westjapan. image.png

Für diejenigen, die Elektrizität verbrauchen, wird die Frequenz der Elektrizität oft als konstant bei 50 oder 60 Hz behandelt. Die tatsächliche Frequenz ändert sich jedoch ständig, und wenn sich die Frequenz erheblich ändert, kann dies die elektrische Ausrüstung nachteilig beeinflussen. Daher muss der Betreiber des Stromnetzes (dh das Energieversorgungsunternehmen) die Frequenz so steuern, dass sie nicht wesentlich schwankt.

Verhältnis zwischen Gleichgewicht und Häufigkeit von Angebot und Nachfrage

Nachfrage und Angebot des Stromversorgungssystems

Bevor wir erklären, warum die Frequenz schwankt, erklären wir zunächst kurz das Stromversorgungssystem. Das Stromnetz besteht aus einem Kraftwerk, das Strom liefert, Verbrauchern, die Strom verbrauchen, und einem Stromübertragungs- und -verteilungsnetz, das sie verbindet. Eine wichtige Eigenschaft des Stromversorgungssystems ist das Prinzip der "gleichzeitigen Gleichmenge" (da es schwierig ist, Strom zu speichern), dass der zugeführte Strom $ P_G $ und der verbrauchte Strom $ P_L $ immer übereinstimmen müssen. Die Seite, die Strom verbraucht (Kunden), möchte jedoch so viel Strom verbrauchen, wie sie möchten, wann sie möchten. Daher muss das Kraftwerk den erzeugten Strom immer an den Stromverbrauch anpassen, um gleichzeitig die gleiche Menge zu erreichen.

image.png

Wie passt das Kraftwerk den erzeugten Strom an den Stromverbrauch an? Es ist nicht möglich, den Stromverbrauch aller Verbraucher in Echtzeit zu erfassen. Daher wird ** Frequenzsteuerung ** wichtig.

Generator-Pendelgleichung

Die Kraftwerkstypen sind Wärmekraft, Hydraulikkraft und Kernkraft. In letzter Zeit nehmen die Erzeugung von Sonnenenergie und Windkraft zu, aber ich werde diesmal nicht darüber nachdenken. Diese Stromerzeugungsmethoden unterscheiden sich nur darin, wie Rotationsenergie (mechanische Energie) gewonnen wird, aber alle Teile, die von mechanischer Energie in elektrische Energie umgewandelt werden, sind gleich, und es wird ein "Synchrongenerator" verwendet. image.png Wie in der Abbildung gezeigt, wird durch die koaxiale Installation eines Generators mit der Dampfturbine die mechanische Leistung der Turbine in elektrische Energie umgewandelt. Zu diesem Zeitpunkt gilt die folgende Beziehung zwischen der Drehzahl des Rotors $ \ omega_m \ [\ rm {rad / s}] $ und der Frequenz der vom Generator $ f \ [\ rm {Hz}] $ induzierten Spannung. Ich werde. $\omega_m=2\pi f/p$ Hier wird $ p $ als Polpaar bezeichnet und hat je nach Generator einen festen Wert ($ p = 1 $ wird häufig für die Wärmeleistung verwendet). Daher sind die elektrische Frequenz und die Drehzahl des Generators / der Turbine gleich. Da die Frequenz für das gesamte Stromnetz gleich ist, drehen sich alle an das System angeschlossenen Generatoren mit der gleichen Geschwindigkeit. Mit anderen Worten, die Steuerung der Anzahl der Umdrehungen eines Generators entspricht der Steuerung der Frequenz des gesamten Stromversorgungssystems. Die Änderung der Drehzahl (= Frequenz) des Generators wird durch die folgende ** Pendelgleichung ** ausgedrückt. $M\frac{df}{dt}=P_m-P_g$ Hier wird $ M $ als Trägheitskonstante bezeichnet und ist ein Parameter wie das Trägheitsmoment des rotierenden Körpers. Auch der Wert der mechanischen Leistung $ P_m $ ist ein steuerbarer Wert, der durch die Durchflussmenge von Dampf usw. bestimmt wird, aber die elektrische Leistung $ P_g $ wird durch den Leistungsbedarf $ P_L $ des Stromversorgungssystems bestimmt ($ P_g, wenn der Systemverlust ignoriert wird). = P_L $). Aus dieser Rührgleichung kann folgendes gesagt werden.

-Wenn $ P_m> P_g $, steigt die Frequenz (Überangebot) -Wenn $ P_m = P_g $, ist die Frequenz konstant (Angebot und Nachfrage sind ausgeglichen) -Wenn $ P_m <P_g $, sinkt die Frequenz (unzureichende Versorgung)

Mit anderen Worten ist es notwendig, die Frequenz des Stromversorgungssystems zu messen, die Leistung des Generators zu verringern, wenn die Frequenz zunimmt, und die Leistung des Generators zu erhöhen, wenn die Frequenz abnimmt. Die Frequenzsteuerung ist eine Rückkopplungssteuerung, die das Verhältnis zwischen Angebots- und Nachfragegleichgewicht und Frequenz nutzt.

Übersicht über die Frequenzregelung

Blockdiagramm

Betrachten wir diesmal den Fall, in dem die Generatoren des gesamten Stromversorgungssystems in einer Einheit integriert sind. Das Blockschaltbild der Frequenzsteuerung ist wie folgt. Die Differenz zwischen Generatorleistung und Last wirkt sich auf die Frequenzschwankung aus. Die Systemfrequenzkennlinien in der Abbildung berücksichtigen zusätzlich zur Trägheit des Generators die Frequenzkennlinien der Last. Es gibt zwei Haupttypen von Rückkopplungsschleifen: lokale Regelkreise und globale Regelkreise.

image.png

Lokale Steuerung

Im lokalen Regelkreis misst der Generatorregler die Frequenz und passt die in die Turbine strömende Dampfmenge entsprechend der Frequenzabweichung an. Dies ermöglicht es, auch bei schwankender Last ein Gleichgewicht zwischen Angebot und Nachfrage aufrechtzuerhalten. Selbst wenn das Gleichgewicht zwischen Angebot und Nachfrage nur mit lokaler Kontrolle aufrechterhalten werden kann, konvergiert die Frequenz aufgrund einer stetigen Abweichung gegen einen Wert, der von $ 50 \ rm {Hz} $ abweicht.

Globale Kontrolle

Die globale Steuerung wird von der zentralen Kommandozentrale für die Stromversorgung aus gesteuert, die das Kraftwerk verwaltet. Frequenzabweichungen treten nur bei lokaler Steuerung auf. Hier verwenden wir jedoch eine integrierte Steuerung, um jedem Generator zu befehlen, die Frequenz auf $ 50 \ rm {Hz} $ zurückzusetzen (diesmal einen Generator). ).

Obwohl diesmal eine einfache integrale Steuerung verwendet wird, wird die Leistung durch umfassende Berücksichtigung der Drehzahlkennlinien und der Kraftstoffkosten jedes Generators im tatsächlichen System bestimmt.

Versuchen Sie es mit Python-Control

In diesem Artikel wurde die Verwendung von Python-Control beschrieben. Verwenden Sie PythonControl, um die Antwort auf die Sinuswelle zu finden.

Übertragungsfunktion berechnen

Nun möchte ich die Frequenzschwankung in Bezug auf die Lastschwankung in Python simulieren. Der Beispielcode wird am Ende zusammengestellt. Zunächst wird, wie in der folgenden Abbildung gezeigt, der Steuerblock vereinfacht und durch eine einzelne Übertragungsfunktion dargestellt. Die Verwendung von Python-Control erleichtert die Handhabung von Übertragungsfunktionen. image.png

Zustandseinstellung

Die Simulationszeit beträgt 100 Sekunden und der Schritt beträgt 0,01 Sekunden. Es wird angenommen, dass die Lastschwankung 10 Sekunden nach Beginn der Simulation um 10% zunimmt. image.png

Simulation

Zeigt die zeitliche Änderung der Frequenzabweichung an, wenn Lastschwankungen angewendet werden. Die erste dient nur der lokalen Steuerung ($ K_I = 0 $). Sie können sehen, dass es eine stetige Abweichung gibt. image.png

Als nächstes wird die globale Kontrolle hinzugefügt. Es kam richtig auf 50Hz zurück. image.png

Auf diese Weise überwacht das Stromversorgungssystem ständig die Frequenz und passt die Leistung des Kraftwerks so an, dass es 50 Hz oder 60 Hz aufrechterhalten kann. Es ist jedoch schwierig, die Leistung von Stromversorgungen für erneuerbare Energien (Windkraft und Solarenergie) zu steuern, die in den letzten Jahren zugenommen haben, und dies ist ein Faktor, der die Fähigkeit zur Frequenzsteuerung verringert. Es scheint, dass die Elektrizitätsunternehmen auch Schwierigkeiten haben, mit der ständig wachsenden Zahl erneuerbarer Energiequellen fertig zu werden.

schließlich

Eigentlich wollte ich im September 2018 eine Reproduktionssimulation des Hokkaido Blackout machen, aber es war kompliziert und ich verstand es nicht gut. Also habe ich diesmal das einfachste mit Frequenzregelung ausprobiert. Ich möchte nach und nach steigern, was ich tun kann.

Wenn Sie interessiert sind, lesen Sie bitte dieses Material. Die Frequenzschwankung kurz vor dem Blackout wird aufgelistet. Was für ein Phänomen ist Blackout - Electric Society

Beispielcode

import numpy as np
from control.matlab import *
import matplotlib.pyplot as plt


def main():
    #Parametereinstellungen
    M = 10  #Trägheitskonstante
    D = 2  #Dämpfung
    K_gov = 20  #Proportionaler Regelgewinn
    K_I = 2  #Integrierte Regelverstärkung

    #Einstellungen der Übertragungsfunktion
    System_frequency = tf(1, [M, D])  #Systemfrequenzkennlinien
    Governor = tf(K_gov, 1)  #Regierungskontrollblock
    LFC = tf(K_I, [1, 0])  #LFC-Steuerblock
    G = - feedback(System_frequency, Governor + LFC)  #Systemweite Übertragungsfunktion

    #Simulationseinstellungen
    T = np.arange(0, 100, 0.01)  # 0~100 Sekunden
    dPL = np.array([0 if t < 10 else 0.1 for t in T])  #Lastschwankungseinstellung(Schritt Variation)

    #Berechnung
    df, T, _ = lsim(G, dPL, T)

    #Handlung
    plt.figure(figsize=(9, 4))
    plt.plot(T, dPL)  #Lastschwankungen
    plt.grid()
    plt.xlim(0, 100)

    plt.figure(figsize=(9, 4))
    plt.plot(T, (df+1)*50)  #Frequenzabweichung
    plt.grid()
    plt.xlim(0, 100)


if __name__ == '__main__':
    main()
    plt.show()

Recommended Posts

Versuchen Sie die Frequenzsteuerungssimulation mit Python
Versuchen Sie es mit Python.
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Erste Nervenzellsimulation mit NEURON + Python
Versuchen Sie die Gesichtserkennung mit Python
Versuchen Sie es mit Python + Beautiful Soup
Versuchen Sie, Facebook mit Python zu betreiben
Versuchen Sie die Singularwertzerlegung mit Python
Versuchen Sie Python
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Exklusive Steuerung mit Sperrdatei in Python
Versuchen Sie eine Formel mit Σ mit Python
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
[Python / PyRoom Acoustics] Raumakustische Simulation mit Python
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
Versuchen Sie, Python von Ruby aus mit Sparsamkeit aufzurufen
Versuchen Sie, eine Karte mit Python + Cartopy 0.18.0 zu zeichnen
[ev3dev × Python] SSH-Steuerung (Fernbedienung mit Tastatur)
[Fortsetzung] Versuchen Sie den Zugriff auf das SPS-Register mit Python
Versuchen Sie, Python: Lambda zuzuweisen oder zu wechseln
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Statistik mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
Python> try: / außer:
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
Ambisonics Simulation Python
mit Syntax (Python)
Installieren Sie Python Control
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
nginxparser: Versuchen Sie, die nginx-Konfigurationsdatei mit Python zu analysieren
Probieren Sie es mit Word Cloud Japanese Python JupyterLab.
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten
[Python3] [Ubuntu16] [Docker] Versuchen Sie die Gesichtserkennung mit OpenFace
Lassen Sie uns EV3-Motoren und -Sensoren mit Python steuern
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
[Python] Versuchen Sie, die FX-Systolenparameter durch zufällige Suche zu optimieren
Scraping in Python (Vorbereitung)
Python lernen mit ChemTHEATER 03