Design des Power Quality Monitoring Terminals basierend auf dem DSP Chip TMS320F2812

Update: 12. Dezember 2023
DSP (Digital Signal Processor) wird in heutigen technischen Anwendungen immer häufiger verwendet. Dafür gibt es drei Hauptgründe: Erstens verfügt es über leistungsstarke Rechenfähigkeiten, die verschiedene digitale Signalverarbeitungsalgorithmen wie FFT und digitale Filterung ausführen können; Zweitens haben große DSP-Hersteller entsprechende IDEs (integrierte Entwicklung) für ihre Produkte entwickelt. Environment), was die Entwicklung von DSP-Anwendungen noch leistungsfähiger macht; drittens hat es ein hohes Preis-Leistungs-Verhältnis und ist mit seiner leistungsstarken Leistung und seinem niedrigen Preis absolut wettbewerbsfähig.

TI hat die integrierte visuelle Entwicklungsumgebung CCS (CodeComposerStudio) für den DSP des Unternehmens entwickelt, und DSP/BIOS ist ein wichtiger Bestandteil von CCS. Es handelt sich im Wesentlichen um einen Echtzeit-Betriebssystemkern, der auf der DSP-Plattform der TMS320-Serie basiert, und ist auch ein zentraler Bestandteil der Echtzeitsoftware von TI Technologie-eXpressDSP-Technologie. DSP/BIOS umfasst hauptsächlich drei Aspekte: Multithread-Kernel, Echtzeit-Analysetool, Peripheriekonfigurationsbibliothek.

1 Anforderungen an die Systemfunktion

Die Hauptfunktion des Netzqualitätsüberwachungsterminals besteht darin, die Netzqualität des Stromnetzes zu überwachen und zu analysieren (Drei Phasen Spannung und Strom) in Echtzeit. Die wichtigsten Überwachungsvariablen sind: Spannungs- und Stromeffektivwert, Wirk- und Blindleistung, Spannungsfrequenz, Dreiphasen-Unsymmetrie, Spannungs- und Strominhalt jeder Oberschwingung, Leistungsfaktor, Phasenverschiebungsleistungsfaktor, Spannungsschwankung, lange Zeit, Flicker für a kurze Zeit.

Als Verarbeitungskern wählt das System den Hochleistungs-DSP-Chip TMS320F2812 von TI, dessen Verarbeitungsgeschwindigkeit von 150 MIPS ausreicht, um die Echtzeitanforderungen des Systems zu erfüllen. Je nach Systemanforderungen ist das System in folgende Funktionsmodule unterteilt: Geführte Selbstprüfung Modulen, Erfassungsaufgabenausführungsmodul, Modul zur Vorverarbeitung von Stromqualitätsdaten, Betriebsmodul zur Stromqualitätsanalyse, Datenspeichermodul, Kommunikationsmodul und Mensch-Computer-Interaktionsmodul.

Gemäß der herkömmlichen Programmiermethode werden diese Funktionsmodule in einer sequentiellen Struktur organisiert, und die Aufrufe und das Umschalten zwischen Modulen werden durch den Code jedes Moduls vervollständigt, sodass sich die Module der Anwendung in einem gekoppelten Zustand befinden. Wenn Sie ein neues Funktionsmodul hinzufügen oder ein vorhandenes Funktionsmodul ändern möchten, muss nicht nur der aufrufende Code des zugehörigen Moduls geändert werden, sondern das neue Modul wirkt sich offensichtlich auch auf die Zeitreaktionseigenschaften des ursprünglichen Systems aus, was das Upgrade und die Aktualisierung erleichtert Wartung ziemlich mühsam.

Das Aufkommen von DSP/BIOS bietet einen weiteren Mechanismus zur Organisation der Funktionsmodule von Anwendungsprogrammen. Es behandelt jedes Funktionsmodul als Aufgabenthread. Über den konfigurierbaren Kernel-Dienst multiplext jeder Task-Thread CPU-Ressourcen entsprechend der Priorität des Systemplaners. Jeder Task-Thread durchläuft Synchronisation, Kommunikation, Datenaustausch usw. und wird koordiniert. Dieser Mechanismus verbessert die Wartbarkeit der Anwendung und bietet eine bequemere und fortschrittlichere Möglichkeit zum erneuten Testen. Gemäß den oben genannten Merkmalen verwendet dieses System DSP/BIOS als Echtzeitkern und entwirft das gesamte System darauf basierend.

Abbildung 1 zeigt die Einordnung der Funktionsmodule des Systems unter DSP/BIOS.

2 Softwaredesign basierend auf DSP/BIOS

2.1 Ausführungsthread-Planung

Im Echtzeitbetrieb des Systems werden einige Funktionsfunktionen durch externe Steuersignale gesteuert oder laufen in einem vorgegebenen Zeitraum ab. Daher sind der Fahrmodus und die Ausführungsdauer der Funktion für das Echtzeitsystem sehr wichtig. DSP/BIOS unterstützt Multithread-Anwendungen und Threads können mit unterschiedlichen Prioritäten definiert werden.

Threads mit hoher Priorität können Threads mit niedriger Priorität unterbrechen, und Interaktionen zwischen verschiedenen Threads, wie Blockierung, Kommunikation und Synchronisierung, werden in die folgenden vier Typen unterteilt (Priorität von hoch nach niedrig): Hardware-Interrupt (HWI), Software-Interrupt ( SWI), Aufgabe (TSK), Hintergrund-Thread (IDL). Entsprechend den Funktionsanforderungen des Terminalsystems zur Überwachung der Stromqualität sind die Unterfunktionsmodule des Systems in die oben genannten 4 Thread-Typen unterteilt.

Planen Sie zunächst den Hardware-Interrupt-Thread (HWI). Unter normalen Umständen wird der Hauptprogrammcode des Systems in den Software-Interrupt oder die Software-Task eingefügt. Allerdings muss der Programmcode des Funktionsmoduls, der eng mit dem externen Gerät zusammenhängt und eine hohe Echtzeitleistung erfordert, im Hardware-Interrupt platziert werden.

Gemäß den oben genannten Anforderungen legt das System die folgenden Unterfunktionsmodule als Hardware-Interrupt-Threads fest: A/D-Erfassungsaufgabenmodul und Kommunikationsmodul (Empfangen). Die A/D-Erfassung ist eine wichtige Grundlage dieses Systems und ist eng mit der zugrunde liegenden Hardware des Systems verbunden, sodass sie als Hardware-Interrupt-Thread (HWI) festgelegt ist.

Der Hauptprozess besteht darin, dass der A/D-Chip Echtzeitdaten des Stromnetzes mit einer bestimmten Frequenz sammelt und dann mit dem McPSP-Port des DSP kommuniziert. Der DSP empfängt die vom A/D-Chip gesammelten Daten und speichert sie in einem bestimmten Bereich des On-Chip-RAM, um sie auf den Betrieb anderer Threads vorzubereiten. Das Kommunikationsmodul kommuniziert über RS485 mit dem Host-Computer, der eng mit der zugrunde liegenden Hardware des Systems verbunden ist, und die SCI-Schnittstelle des DSP selbst verfügt nur über einen FIFO mit maximal 16 Wörtern. Wenn die empfangenen Daten nicht rechtzeitig verarbeitet werden, gehen Daten verloren.

Im Folgenden werden die Parametereinstellungen des HWI-Moduls im DSP/BIOS beschrieben. Der Empfangsinterrupt des seriellen McBSP-Ports wird an der HWI_INT6-Position des HWI-Moduls platziert, und die ISR-Funktion ad_rx_isr () des Empfangsinterrupts wird in das Funktionsaufrufelement des HWI_INT6-Interrupts eingefügt. Wählen Sie gleichzeitig die Verwendung der HWI-Planungsfunktion von DSP/RI-OS, wenn Sie auf McBSP reagieren. Wenn die serielle Schnittstelle einen Interrupt empfängt, ruft das System automatisch die Funktion ad_rx_isr() auf. Die Einstellung für den Empfangsinterrupt der seriellen McBSP-Schnittstelle ist in Abbildung 2 dargestellt.

Ähnlich wie bei der Einstellung des Empfangsinterrupts der seriellen McBSP-Schnittstelle wird der SCIA-Empfangsinterrupt als Kommunikationsempfangsinterrupt festgelegt und seine ISR-Funktion scia_rx_isr() wird im Funktionsaufrufelement des HWI_INT9-Interrupts ausgefüllt. Als Reaktion auf den Empfangsinterrupt ruft das System die Funktion scia_rx_isr() zur Verarbeitung auf. Der CLK-Thread ist auch einer der HWI-Hardware-Interrupt-Threads. Es bietet eine Zeitreferenz für den Betrieb des gesamten Systems, eine Methode für Benutzer zum regelmäßigen Aufrufen von Funktionen und eine Zeitreferenz für einige Code-Evaluierungstools. Das CLK-Modul ist vollständig auf den Timer-Interrupt des DSP angewiesen. TMS320C2812 bietet 2 Timer für das DSP/BIOS.

Zweitens: Ordnen Sie den Software-Interrupt-Thread (SWI) an. Alle Software-Interrupts werden durch den API-Aufruf des DSP/BIOS-Kernels initiiert. Um die Steuerung zu erleichtern, legt das System für jedes SWI-Objekt ein 16-Bit-Postfach (Mailbox) fest, mit dem das entsprechende Postfach bedingt gestartet werden kann. Softwareunterbrechung. Die Unterfunktionsmodule, die wichtiger als gewöhnliche Aufgaben sind und häufig auftreten, können im Software-Interrupt-Thread (SWI) angeordnet werden. Zu den Unterfunktionsmodulen gehören: Vorverarbeitungsmodul für Stromqualitätsdaten, Kommunikationsmodul (Senden).

Das Vorverarbeitungsmodul für Netzqualitätsdaten vervollständigt hauptsächlich die anschließende Verarbeitung der A/D-Umwandlungsergebnisse. Es ist notwendig, das A/D-Wandlungsergebnis vorzuverarbeiten. Da der A/D-Chip eine feste Frequenz für die Erfassung auswählt, die Frequenz fo des Stromnetzes jedoch schwankt, führt die direkte Durchführung von FFT-Operationen an den erfassten Daten zu Spektrumsverlusten. Daher müssen die erfassten Daten vorverarbeitet werden. Beispielsweise wird eine 1024-Punkt-FFT-Operation an insgesamt 1024 Daten mit 256 Punkten für jeden der 4 Zyklen durchgeführt. Unter der Annahme, dass die durchschnittliche Frequenz von 4 Zyklen f ist, beträgt die Frequenzauflösung f/4 und die Ergebnisse der FFT-Operation sind f/4, 2f/4, 3f/4, f, 5f/4 … die Intensität auf der Frequenz. Wenn sich daher die Stromnetzfrequenz fo ändert, ändert sich auch die Stromnetzdatenfrequenz f für die FFT-Berechnung entsprechend, sodass die Stromnetzdatenfrequenz f vor der FFT-Berechnung immer mit der aktuellen Stromnetzfrequenz fo übereinstimmt.

Der spezifische Betrieb des Vorverarbeitungsmoduls für Netzqualitätsdaten besteht darin, die Daten nach der A/D-Wandlung zu interpolieren, und der Interpolationsalgorithmus verwendet lineare Interpolation. Nach der Überprüfung liegt der Fehler des FFT-Betriebs, der durch den linearen Interpolationsalgorithmus verursacht wird, bei Nennspannung innerhalb von 0, innerhalb von 1‰. Darüber hinaus besteht eine weitere Funktion des Moduls darin, den Effektivwert der Spannung innerhalb eines Zyklus zu berechnen. Dies sind die notwendigen Daten zur Berechnung von Spannungsschwankungen sowie Langzeit- und Kurzzeitflimmern. Das Kommunikationsmodul (Senden) ist für das Senden von Daten an den übergeordneten Computer verantwortlich. Obwohl die Echtzeitanforderungen nicht hoch sind, ist es eng mit der untersten Hardwareschicht verbunden und wird daher als Software-Interrupt-Thread festgelegt.

Wenn die Empfangsunterbrechung der seriellen Schnittstelle auftritt, rufen Sie die Funktion scia_rx_isr() auf, um den empfangenen Datenbefehl zu verarbeiten und die entsprechenden Stromqualitätsdaten gemäß dem zugehörigen Befehl zu senden. DSP/BIOS bietet eine Priorität von 0 bis 14 für das Software-Interrupt-Objekt. Entsprechend der Wichtigkeit des oben genannten Threads wird die Priorität des Sammeldatenverarbeitungsthreads auf 14 und die des Hostkommunikationsthreads auf 8 festgelegt. Andere Prioritäten sind für zukünftige Software-Upgrades reserviert.

Es ist zu beachten, dass Interrupt-Threads (einschließlich Hardware-Interrupts und Software-Interrupts) alle auf demselben Stapel ausgeführt werden. Wenn ein Interrupt mit hoher Priorität auftritt und das System dazu führt, die Aufgabe zu wechseln, unterbricht der Interrupt-Thread mit hoher Priorität den Interrupt-Thread mit niedriger Priorität. Bevor der Interrupt-Thread mit hoher Priorität ausgeführt wird, wird der relevante Registerinhalt des Interrupt-Threads mit niedriger Priorität und der Interrupt mit hoher Priorität gespeichert. Nach der Ausführung des Threads wird das Register auf seinen ursprünglichen Inhalt zurückgesetzt und das Original wird weiterhin vervollständigt Thread mit niedriger Priorität.

Wenn daher zu viele Hardware-Interrupts oder Software-Interrupt-Threads festgelegt sind, läuft der Stapel über. Aus diesem Grund müssen die meisten Aufgabenmodule in Aufgabenthreads platziert werden. Als nächstes planen Sie den Aufgabenthread (TSK). Wie bei den meisten Echtzeitsystemen sind Task-Threads die Hauptkomponente des gesamten Systems. Funktionen in Aufgabenthreads können unabhängig oder parallel ausgeführt werden. Das DSP/BIOS-Aufgabenverwaltungsmodul ordnet den Betrieb entsprechend der Priorität des Aufgabenthreads an und schließt die Konvertierung von einer Aufgabe zu einer anderen Aufgabe über die Umschaltfunktion ab.

Jede Aufgabe hat 4 Ausführungszustände: ausgeführt, bereit, blockiert und beendet. Die Januar-Mission wird erstellt und befindet sich immer in einem von vier Staaten. DSP/BIOS stellt für jedes Aufgabenobjekt eine Priorität von -l bis 15 bereit. Aufgaben werden in strenger Prioritätsreihenfolge ausgeführt, Aufgaben mit gleicher Priorität werden in der Reihenfolge der Ausführung nach dem Prinzip „Wer zuerst kommt, mahlt zuerst“ angeordnet. Es ist zu beachten, dass beim Erstellen eines Aufgabenthreads gleichzeitig ein dedizierter Stapel erstellt werden muss, der zur Aufgabe gehört. Der Stapel wird zum Speichern lokaler Variablen oder zur weiteren Verschachtelung von Funktionsaufrufen verwendet.

Wir legen das Berechnungsmodul für die Stromqualitätsanalyse, das Datenspeichermodul und das Mensch-Computer-Interaktionsmodul im Aufgabenthread (TSK) fest. Das Berechnungsmodul für die Netzqualitätsanalyse kann in drei Teile unterteilt werden: Aufgabenthread zur harmonischen Berechnung, Aufgabenthread zur Spannungsschwankungsberechnung und Aufgabenthread zur Flickerberechnung.

Der Task-Thread zur harmonischen Berechnung ist hauptsächlich für die Durchführung von FFT-Operationen an den vorverarbeiteten Netzqualitätsdaten verantwortlich. Die FFT-Operation besteht hauptsächlich aus fünf Teilen: Bitkonvertierungsoperation, Fensteroperation, Butterfly-Operation basierend auf 2, Split-Base-Operation und Quadratsummenoperation. Der Aufgabenthread zur Spannungsschwankungsberechnung ist für die Aufzeichnung der Schwankungen der Netzspannung innerhalb von 3 Minuten verantwortlich. Das vorherige Vorverarbeitungsmodul für Netzqualitätsdaten hat den Effektivwert der Spannung für jeden Zyklus ermittelt.

Auf diese Weise ist es lediglich erforderlich, innerhalb von 3 Minuten den Maximal- und Minimalwert des Effektivwerts der Spannung aufzuzeichnen, und die Differenz zwischen beiden ist die Spannungsschwankung. Der Aufgabenthread zur Flickerberechnung umfasst die Berechnung von Kurzzeitflimmern und Langzeitflimmern. Mittlerweile wird allgemein die IEC-Flickermesser-Entwurfsmethode übernommen.

Das eingegebene adaptive Selbstprüfungssignal durchläuft den quadratischen Demodulator, die gewichtete Bandpassfilterung, die quadrierte Tiefpassfilterung erster Ordnung und die statistische Online-Auswertung, um schließlich den Flickerwert zu erhalten. aber diese Methode ist ausreichend aufwendig und zeitaufwändig. Durch die Vereinfachung des Algorithmus wird eine einfache und praktikable Berechnungsmethode erhalten: Die FFT-Berechnung wird auf dem effektiven Spannungswert von 256 aufeinanderfolgenden Zyklen durchgeführt, und nach einer Reihe von Berechnungen wie der Gewichtung kann der Flickerwert von 12.8 s erhalten werden Der Flimmerwert liegt innerhalb von 10 Minuten.

Der Wert kann nach der Korrelationsberechnung ein kurzfristiges Flackern aufweisen, und 12 aufeinanderfolgende kurzfristige Flackern (innerhalb von 2 Stunden) können nach der Berechnung ein langfristiges Flackern ergeben. Nach der Überprüfung weist dieser Algorithmus im Vergleich zum IEC-Flickermeter-Algorithmus einen Fehler von weniger als 1‰ auf.

Das Datenspeichermodul befindet sich ebenfalls im Task-Thread und speichert die Ergebnisse der Stromqualitätsanalyse, Spannungsschwankungen und Flickerwerte in FIash. Das Mensch-Computer-Interaktionsmodul besteht aus zwei Teilen: der Tastaturerkennungsaufgabe und der Flüssigkristallanzeigeaufgabe. Der Task-Thread zur Tastaturerkennung kann durch die periodische Funktion PRD abgeschlossen werden. PRD kann die Laufzeit der Funktion anhand der Echtzeituhr ermitteln. Stellen Sie hier ein, dass die Tastaturerkennungsaufgabe alle 100 ms ausgeführt wird, um Tastenanschläge zu erkennen. Entsprechend der Schlüsselbedingung, dem Flüssigkristall Display Task zeigt die aktuellen aktuellen Netzqualitätsdaten an.

Schließlich gibt es noch den Hintergrund-Thread (IDL). Der Hintergrund-Thread (IDL) hat die niedrigste Priorität. Im Allgemeinen wird darin das Echtzeit-Analysemodul (TRA) zum Laufen platziert, das während der Ausführung der Anwendung eine Echtzeit-Interaktion und -Diagnose der DSP-Anwendung durchführen kann. CCS verfügt über Echtzeit-Analysetools wie CPU-Lastdiagramm, Ausführungsdiagramm, Hostkanalsteuerung, Informationsaufzeichnung, statistische Beobachtung, Echtzeit-Steuerplatine und Kernel-/Objektbeobachtung. Diese Reihe von Funktionsmodulen kann in den IDL-Thread platziert werden, durch diese Tools wird die Bedienung des gesamten DSP-Systems auf einen Blick klar.

2.2 Kommunikation und Synchronisation zwischen Threads

In diesem Multithread-System erfordert der Zugriff auf gemeinsam genutzte Ressourcen zur Lösung eine gegenseitige Koordination zwischen den Threads.

Es gibt drei Kommunikationsverfahren in der DSP/BIOS-Umgebung, nämlich leitungsbasierte (PIPE) Kommunikation, strombasierte (SIO) kanalbasierte Kommunikation und Host (HST) kanalbasierte Kommunikation.

Tabelle 1 zeigt, wie 4 Threads Daten gemeinsam nutzen und eine Synchronisation erreichen.

3 Echtzeitanalyse und Debugging des Systems

Der Overhead des DSP/BIOS-Kernels selbst wirkt sich auf die Echtzeitleistung des Systemprogramms aus. Aus diesem Grund muss der DSP/BIOS-Kernel optimiert werden. Mit dem in CCS bereitgestellten DSP/BIOS-Analysetool können Sie den DSP/BIOS-Overhead und die Rechenkapazität des gesamten Anwendungssystems ermitteln. Das CPU-Lastdiagramm im Echtzeit-Analysetool von DSP/BIOS ist beispielsweise eines der am häufigsten verwendeten Tools.

In der letzten Integrationsphase kommt es aufgrund von Echtzeitinteraktionen und anderen Gründen oft zu Fehlern oder verfrühten Antworten. Da diese Phänomene nicht periodisch sind und eine geringe Häufigkeit aufweisen, sind sie im Allgemeinen schwer zu finden und zu verfolgen. Da das RTA-Modul im DSP/BIOS jedoch in seinen Kern eingebettet ist, bietet es in Kombination mit dem vom Entwickler bereitgestellten benutzerdefinierten Erkennungsvektor eine einzigartige Sichtbarkeit der Fehlerursache. Diese Visualisierungsfunktion hilft sehr dabei, Fehler zu isolieren und zu korrigieren, die in allgemeinen eingebetteten Entwicklungssystemen nicht verfügbar sind.

Die Ausführungsleistung des Anwendungsprogramms im Gesamtsystem kann durch die folgenden vier Aspekte verbessert werden: sorgfältige Auswahl des Thread-Typs für verschiedene Programmfunktionen; Platzieren des Systemstapels im On-Chip-Speicher; die Taktunterbrechungsfrequenz reduzieren; Erhöhen Sie die Größe des Stream-Eingabe- und Ausgabepuffers.

4 Zusammenfassung

Als Werkzeugsatz von CCS belegt DSP/BIOS selbst nur sehr wenig CPU-Ressourcen, bietet aber eine recht hohe Leistung und beschleunigt den Entwicklungsfortschritt. Mit DSP/BIOS als Echtzeit-Betriebssystem des Power Quality Monitoring Terminals ist es einfach, Hardware-Ressourcen beim Schreiben von DSP-Programmen zu kontrollieren und verschiedene Software-Module flexibel zu koordinieren, was den Fortschritt der Software-Entwicklung und des Debuggens erheblich beschleunigt. Das abschließende Experiment bewies, dass das gesamte System eine gute Echtzeitleistung und einen stabilen und zuverlässigen Betrieb aufweist.