Einphasiges Phasenregelkreisprinzip und praktische Erklärung des Codes

Das Prinzip des einphasigen Phasenregelkreisprogramms ist in der folgenden Abbildung dargestellt

Fügen Sie hier eine Bildbeschreibung ein

Prinzip der einphasigen Phasenregelschleife

Ein Phasenregelkreis (PLL) ist eine Schaltung oder ein digitaler Algorithmus, der üblicherweise in den Bereichen Synchronisation, Demodulation und Signalverarbeitung verwendet wird. Seine Hauptfunktion besteht darin, die Phase und Frequenz eines Eingangssignals genau an ein Referenzsignal anzupassen. Hier erklären wir kurz das Prinzip und die Analyse des einphasigen Phasenregelkreises.

In einem einphasigen Phasenregelkreis ist das Eingangssignal eine einphasige Wechselspannung, und das Ziel des Phasenregelkreises besteht darin, einen Phasenwinkel auszugeben, der immer mit dem Eingangssignal synchronisiert ist. Das Funktionsprinzip des gesamten Phasenregelkreises kann in drei Hauptblöcke vereinfacht werden: Phasendetektor, Tiefpassfilter und Controller.

Der Phasendetektor (Phasendetektor) ist der erste Block im Phasenregelkreis. Seine Hauptfunktion besteht darin, die Phasendifferenz zwischen dem Eingangssignal und dem Referenzsignal zu vergleichen und die Phasendifferenz in ein Spannungssignal umzuwandeln. In einem einphasigen Phasenregelkreis können wir einen Doppelfrequenz-Phasendetektor (Frequenzvervielfacher PLL) verwenden, bei dem Eingangssignal und Referenzsignal durch Multiplikation mit einem Frequenzvervielfacher abgeglichen werden, sodass die Phasendifferenz einfacher berechnet werden kann.

Die Aufgabe des Tiefpassfilters besteht darin, die hochfrequenten Rauschkomponenten im Phasendifferenzsignal zu entfernen, um den Ausgang des Phasenregelkreises glatter zu machen. In einem einphasigen Phasenregelkreis wird zur Implementierung dieser Funktion üblicherweise ein einfacher RC-Tiefpassfilter verwendet.

Der Controller ist das letzte Modul im Phasenregelkreis. Seine Hauptfunktion besteht darin, die Phase des Ausgangssignals entsprechend dem Phasendifferenzsignal anzupassen. In einem einphasigen Phasenregelkreis können wir zum Erreichen dieser Funktion einen PID-Regler verwenden, der die Phase des Ausgangssignals entsprechend der Größe und Änderungsrate der Phasendifferenz anpasst, um sie mit dem Eingangssignal zu synchronisieren.

Im Allgemeinen ist das Prinzip eines einphasigen Phasenregelkreises relativ einfach, er kann jedoch nur eine Phasenanpassung zwischen dem Eingangssignal und dem Referenzsignal erreichen und die Signalfrequenz nicht vollständig sperren. Daher müssen wir in praktischen Anwendungen eine komplexere Phasenregelkreisstruktur verwenden, um eine höherpräzise Signalverriegelung zu erreichen.

Quellcode für einphasige Phase-Locked-Loop-Programme

Das Folgende ist ein einfaches einphasiges Phasenregelkreisprogramm, das mithilfe der Funktionen implementiert wird: Die Eingangsspannung Ui, der Ausgangsphasenwinkel Sita und die Abtastfrequenz betragen 20 kHz.


#include <stdio.h>
#include <math.h>

// Constants
const float sampling_freq = 20000.0;  // Sampling frequency in Hz
const float omega_grid = 2 * M_PI * 50.0;  // Grid frequency in rad/s (50Hz)
const float kp_pll = 10.0;  // Proportional gain for PLL
const float ki_pll = 100.0; // Integral gain for PLL
const float ts = 1.0 / sampling_freq; // Sampling time

// Variables
float v_in;  // Input voltage
float theta_pll = 0.0;  // Phase angle of PLL
float sin_pll = 0.0;  // Sine component of PLL output
float cos_pll = 1.0;  // Cosine component of PLL output

// Functions
void calculate_pll(void);

int main()
{
    
    
    while (1)
    {
    
    
        // Read input voltage from sensor
        v_in = read_voltage_S();

        // Calculate PLL angle
        calculate_pll();

        // Output result
        printf("PLL angle: %.2f\n", theta_pll);
    }
    return 0;
}

void calculate_pll(void)
{
    
    
    float v_d, v_q, theta_err;
    v_d = v_in;
    v_q = 0.0;
    theta_err = omega_grid * ts;
    theta_pll += kp_pll * theta_err + ki_pll * theta_err * ts;
    sin_pll = sin(theta_pll);
    cos_pll = cos(theta_pll);
}

Das Simulationsausgabeergebnis der Phasenverriegelung: Die Phasenverriegelungsposition ist eine 90-Grad-Winkelposition
Fügen Sie hier eine Bildbeschreibung ein

Im obigen Programm:

read_spannung_S() wird zum Lesen der Eingangsspannung verwendet, die entsprechend Ihrer tatsächlichen Situation geändert werden kann.
Die Funktion „calcure_pll“ empfängt die Eingangsspannung und gibt den Phasenwinkel entsprechend der Netzfrequenz und den PID-Parametern aus.
Es ist zu beachten, dass für die Berechnung nur eine Eingangsspannung benötigt wird, da die einphasige PLL nicht über drei Phasenspannungseingänge verfügt.

In der Hauptfunktion rufen wir die obige Funktion wiederholt auf, um eine einphasige PLL zu simulieren. Wir geben den aktuellen Phasenwinkel aus, damit wir das Ergebnis der Phasensperre mithilfe von Debug-Tools visualisieren können.

In praktischen Anwendungen ist es auch erforderlich, den Ausgangswinkel zu verarbeiten, z. B. durch Tiefpassfilterung oder Mittelungsberechnung, um zuverlässigere Ergebnisse zu erhalten.

Das verbesserte Phasenregelkreisprogramm ist in der folgenden Abbildung dargestellt

Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/AQRSXIAO/article/details/131978365
Empfohlen
Rangfolge