Ontwerp van bewakingsterminal voor stroomkwaliteit op basis van DSP-chip TMS320F2812

Update: 12 december 2023
DSP (Digital Signal Processor) wordt steeds vaker gebruikt in de hedendaagse technische toepassingen. Daar zijn drie belangrijke redenen voor: ten eerste beschikt het over krachtige computermogelijkheden, geschikt voor verschillende digitale signaalverwerkingsalgoritmen zoals FFT en digitale filtering; Ten tweede hebben grote DSP-fabrikanten gerelateerde IDE's (geïntegreerde ontwikkeling) voor hun producten ontworpen. Environment), wat de ontwikkeling van DSP-applicaties nog krachtiger maakt; ten derde heeft het hoge kostenprestaties en is het absoluut concurrerend met zijn krachtige prestaties en lage prijs.

TI ontwierp de geïntegreerde visuele ontwikkelomgeving CCS (CodeComposerStudio) voor de DSP van het bedrijf, en DSP/BIOS is een belangrijk onderdeel van CCS. Het is in wezen een real-time besturingssysteemkernel gebaseerd op het DSP-platform uit de TMS320-serie, en is ook een kernonderdeel van TI's real-time software technologie-eXpressDSP-technologie. DSP/BIOS omvat hoofdzakelijk drie aspecten: multi-threaded kernel, real-time analysetool, randconfiguratiebibliotheek.

1 Systeemfunctievereisten

De belangrijkste functie van de terminal voor bewaking van de stroomkwaliteit is het bewaken en analyseren van de stroomkwaliteit van het elektriciteitsnet (Drie fase spanning en actueel) in realtime. De belangrijkste monitoringvariabelen zijn: effectieve waarde van spanning en stroom, actief en reactief vermogen, spanningsfrequentie, driefasige onbalans, elke harmonische spanning en stroominhoud, arbeidsfactor, faseverschuivingsvermogensfactor, spanningsschommelingen, lange tijd, flikkering gedurende een korte tijd.

Het systeem selecteert TI's krachtige DSP-chip TMS320F2812 als verwerkingskern, en de verwerkingssnelheid van 150MIPS is voldoende om aan de realtime vereisten van het systeem te voldoen. Afhankelijk van de systeemvereisten is het systeem onderverdeeld in de volgende functionele modules: begeleide zelfcontrole module, module voor het uitvoeren van verzamelingstaken, module voor voorverwerking van gegevens over de stroomkwaliteit, module voor analyse van de stroomkwaliteit, module voor gegevensopslag, communicatiemodule en module voor mens-computerinteractie.

Volgens de traditionele programmeermethode zullen deze functionele modules samen in een sequentiële structuur worden georganiseerd, en worden de oproepen en het schakelen tussen modules voltooid door de code van elke module, zodat de modules van de applicatie zich in een gekoppelde toestand bevinden. Als u een nieuwe functiemodule wilt toevoegen of een bestaande functiemodule wilt wijzigen, moet niet alleen de aanroepcode van de betreffende module worden gewijzigd, maar zal de nieuwe module uiteraard ook de tijdresponskarakteristieken van het oorspronkelijke systeem beïnvloeden, waardoor de upgrade en onderhoud behoorlijk lastig.

De opkomst van DSP/BIOS biedt een ander mechanisme voor het organiseren van de functionele modules van applicatieprogramma's. Het behandelt elke functionele module als een taakthread. Via de configureerbare kernelservice multiplext elke taakthread CPU-bronnen volgens de prioriteit van de systeemplanner. Elke taakthread passeert synchronisatie, communicatie en gegevensuitwisseling, enz. worden gecoördineerd. Dit mechanisme verbetert de onderhoudbaarheid van de applicatie en biedt een gemakkelijkere en geavanceerdere manier om opnieuw te testen. Volgens de bovenstaande kenmerken gebruikt dit systeem DSP/BIOS als de real-time kernel, en ontwerpt het het hele systeem op basis hiervan.

Figuur 1 toont de classificatie van de functionele modules van het systeem onder DSP/BIOS.

2 Softwareontwerp op basis van DSP/BIOS

2.1 Uitvoeringsdraadplanning

Bij de real-time werking van het systeem worden sommige functiefuncties aangestuurd door externe stuursignalen of binnen een vooraf bepaalde periode uitgevoerd. Daarom zijn de rijmodus en de uitvoeringsperiode van de functie erg belangrijk voor het realtime systeem. DSP/BIOS ondersteunt toepassingen met meerdere threads, en threads kunnen als verschillende prioriteiten worden gedefinieerd.

Threads met hoge prioriteit kunnen threads met lage prioriteit onderbreken, en interacties tussen verschillende threads, zoals blokkeren, communicatie en synchronisatie, zijn onderverdeeld in de volgende 4 typen (prioriteit van hoog naar laag): Hardware Interrupt (HWI), Software Interrupt ( SWI), Taak (TSK), Achtergrondthread (IDL). Volgens de functionele vereisten van het terminalsysteem voor bewaking van de stroomkwaliteit, zijn de subfunctiemodules van het systeem verdeeld in de bovengenoemde 4 soorten threads.

Plan eerst de hardware-interruptthread (HWI). Onder normale omstandigheden wordt de hoofdprogrammacode van het systeem in de software-interrupt of -taak geplaatst; de programmacode van de functionele module die nauw verwant is aan het externe apparaat en hoge real-time prestaties vereist, moet echter in de hardware-interrupt worden geplaatst.

In overeenstemming met de bovenstaande vereisten stelt het systeem de volgende subfunctiemodules in als hardware-interruptthreads: A/D-acquisitietaakmodule en communicatiemodule (ontvangen). A/D-acquisitie is een belangrijke basis van dit systeem en is nauw verbonden met de onderliggende hardware van het systeem, daarom is het ingesteld als een hardware-interruptthread (HWI).

Het belangrijkste proces is: de A/D-chip verzamelt realtime gegevens van het elektriciteitsnet op een bepaalde frequentie en communiceert vervolgens met de McPSP-poort van de DSP. De DSP ontvangt de gegevens die door de A/D-chip zijn verzameld en slaat deze op in een specifiek gebied van het RAM-geheugen op de chip ter voorbereiding op de werking van andere threads. De communicatiemodule gebruikt RS485 om te communiceren met de hostcomputer, die nauw verwant is aan de onderliggende hardware van het systeem, en de SCI-interface van de DSP zelf heeft slechts een FIFO van maximaal 16 woorden. Als de ontvangen gegevens niet op tijd worden verwerkt, gaan gegevens verloren.

Hieronder worden de parameterinstellingen van de HWI-module in DSP/BIOS beschreven. De ontvangende interrupt van de seriële McBSP-poort wordt in de HWI_INT6-positie van de HWI-module geplaatst, en de ISR-functie ad_rx_isr() van de ontvangende interrupt wordt ingevuld in het functieaanroepitem van de HWI_INT6-interrupt; kies er tegelijkertijd voor om de HWI-planningsfunctie van DSP/RI-OS te gebruiken bij het reageren op McBSP. Wanneer de seriële poort een interrupt ontvangt, zal het systeem automatisch de functie ad_rx_isr() aanroepen. De instelling voor het ontvangen van interrupts op de seriële McBSP-poort wordt weergegeven in Figuur 2.

Vergelijkbaar met de instelling van de McBSP seriële poort ontvangende interrupt, wordt de SCIA ontvangende interrupt ingesteld als de communicatie ontvangende interrupt, en zijn ISR-functie scia_rx_isr() wordt ingevuld in het functieaanroepitem van de HWI_INT9 interrupt. Bij het reageren op de ontvangstinterrupt roept het systeem de functie scia_rx_isr() op voor verwerking. De CLK-thread is ook een van de HWI-hardware-interruptthreads. Het biedt een tijdreferentie voor de werking van het hele systeem, biedt een methode waarmee gebruikers functies periodiek kunnen oproepen en biedt een tijdreferentie voor sommige code-evaluatietools. De CLK-module is volledig afhankelijk van de timer-interrupt van de DSP. TMS320C2812 biedt 2 timers voor de DSP/BIOS.

Ten tweede, regel de software-interruptthread (SWI). Alle software-interrupts worden geïnitieerd via de API-aanroep van de DSP/BIOS-kernel. Om de besturing te vergemakkelijken, stelt het systeem voor elk SWI-object een 16-bits mailbox (Mailbox) in, die kan worden gebruikt om de bijbehorende mailbox voorwaardelijk te starten. Software-onderbreking. De subfunctiemodules die belangrijker zijn dan gewone taken en vaak voorkomen, kunnen worden gerangschikt in de software interrupt thread (SWI). De subfunctiemodules omvatten: module voor voorverwerking van gegevens over de stroomkwaliteit, communicatiemodule (verzenden).

De voorverwerkingsmodule voor de stroomkwaliteitsgegevens voltooit voornamelijk de daaropvolgende verwerking van de A/D-conversieresultaten. Het is noodzakelijk om het resultaat van de A/D-conversie voor te verwerken. Omdat de A/D-chip een vaste frequentie selecteert voor acquisitie, maar de frequentie van het elektriciteitsnet fluctueert, zal het rechtstreeks uitvoeren van FFT-bewerkingen op de verkregen gegevens spectrumlekkage veroorzaken. Daarom moeten de verkregen gegevens worden voorbewerkt. Er wordt bijvoorbeeld een FFT-bewerking van 1024 punten uitgevoerd op een totaal van 1024 gegevens van 256 punten voor elk van de vier cycli. Ervan uitgaande dat de gemiddelde frequentie van 4 cycli f is, is de frequentieresolutie f/4 en zijn de FFT-bewerkingsresultaten f/4, 4f/2, 4f/3, f, 4f/5... de intensiteit op de frequentie. Wanneer de elektriciteitsnetfrequentie fo verandert, verandert daarom ook de elektriciteitsnetgegevensfrequentie f voor FFT-berekening dienovereenkomstig, zodat de elektriciteitsnetgegevensfrequentie f vóór de FFT-berekening altijd consistent is met de huidige elektriciteitsnetfrequentie fo.

De specifieke werking van de voorverwerkingsmodule voor stroomkwaliteitsgegevens is het interpoleren van de gegevens na A/D-conversie, en het interpolatiealgoritme maakt gebruik van lineaire interpolatie. Na verificatie ligt de fout van de FFT-werking, veroorzaakt door het lineaire interpolatie-algoritme, onder de nominale spanning binnen 0. Binnen 1 ‰. Bovendien is een andere functie van de module het berekenen van de effectieve waarde van de spanning binnen een cyclus. Dit zijn de noodzakelijke gegevens voor het berekenen van spanningsschommelingen en flikkeringen op lange en korte termijn. De communicatiemodule (verzenden) is verantwoordelijk voor het verzenden van gegevens naar de bovenste computer. Hoewel de real-time vereisten niet hoog zijn, is het nauw verwant aan de onderste laag van de hardware, dus is het ingesteld als een software-interruptthread.

Wanneer de ontvangende interrupt van de seriële poort optreedt, roept u de functie scia_rx_isr() aan om het ontvangen gegevenscommando te verwerken en verzendt u de overeenkomstige netvoedingskwaliteitsgegevens volgens het gerelateerde commando. DSP/BIOS biedt een prioriteit van 0 tot 14 voor het software-interruptobject. Afhankelijk van het belang van de bovenstaande thread, is de prioriteit van de thread voor het verwerken van verzamelingsgegevens ingesteld op 14, is de hostcommunicatiethread ingesteld op 8 en zijn andere prioriteiten gereserveerd voor toekomstige software-upgrades.

Opgemerkt moet worden dat interrupt-threads (inclusief hardware-interrupts en software-interrupts) allemaal op dezelfde stapel draaien. Wanneer een interrupt met hoge prioriteit optreedt en ervoor zorgt dat het systeem van taak verandert, zal de interruptthread met hoge prioriteit de interruptthread met lage prioriteit onderbreken; voordat de interrupt-thread met hoge prioriteit wordt uitgevoerd, wordt de relevante registerinhoud van de interrupt-thread met lage prioriteit opgeslagen, en de interrupt met hoge prioriteit. Nadat de thread is uitgevoerd, wordt het register hersteld naar de oorspronkelijke inhoud en wordt het origineel voortgezet topic met lage prioriteit.

Als er dus te veel hardware-interrupts of software-interruptthreads zijn ingesteld, zal de stapel overstromen. Om deze reden moeten de meeste taakmodules in taakthreads worden geplaatst. Plan vervolgens de taakthread (TSK). Zoals de meeste real-time systemen vormen taakthreads het hoofdbestanddeel van het hele systeem. Functies in taakthreads kunnen onafhankelijk of parallel worden uitgevoerd. De DSP/BIOS-taakbeheermodule regelt de werking volgens de prioriteit van de taakthread en voltooit de conversie van de ene taak naar de andere taak via de schakelfunctie.

Elke taak heeft 4 uitvoeringsstatussen: uitvoeren, gereed, geblokkeerd en beëindigd. De missie van januari is gemaakt en bevindt zich altijd in een van de vier staten. DSP/BIOS biedt een prioriteit van -l tot 15 voor elk taakobject. Taken worden uitgevoerd in een strikte prioriteitsvolgorde, taken met dezelfde prioriteit worden gerangschikt in de volgorde van uitvoering volgens het principe ‘wie het eerst komt, het eerst maalt’. Opgemerkt moet worden dat wanneer een taakthread wordt gemaakt, er tegelijkertijd een speciale stapel moet worden gemaakt die bij de taak hoort. De stapel wordt gebruikt voor het opslaan van lokale variabelen of voor het verder nesten van functieaanroepen.

We hebben de berekeningsmodule voor de analyse van de stroomkwaliteit, de gegevensopslagmodule en de mens-computerinteractiemodule in de taakthread (TSK) geplaatst. De berekeningsmodule voor de analyse van de netvoedingskwaliteit kan in drie delen worden verdeeld: de taakthread voor harmonische berekeningen, de taakthread voor het berekenen van spanningsfluctuaties en de taakthread voor flikkeringsberekeningen.

De taakthread voor harmonische berekeningen is hoofdzakelijk verantwoordelijk voor het uitvoeren van FFT-bewerkingen op de voorverwerkte netvoedingskwaliteitsgegevens. FFT-bewerking omvat hoofdzakelijk vijf delen: bitconversiebewerking, vensterbewerking, vlinderbewerking op basis van 2, gesplitste basisbewerking en kwadratische sombewerking. De taakthread voor het berekenen van spanningsschommelingen is verantwoordelijk voor het registreren van de schommelingen van de netspanning binnen 3 minuten. De vorige voorverwerkingsmodule voor stroomkwaliteitsgegevens heeft de effectieve waarde van de spanning voor elke cyclus verkregen.

Op deze manier is het alleen nodig om binnen 3 minuten de maximale en minimale waarden van de effectieve waarde van de spanning te registreren, en het verschil tussen beide is de spanningsfluctuatie. De taakthread voor het berekenen van flikkeringen omvat de berekening van flikkeringen op korte termijn en flikkeringen op lange termijn. Nu wordt algemeen de ontwerpmethode van de IEC-flikkermeter toegepast.

Het adaptieve zelfcontrolesignaal van de ingang passeert de kwadratische demodulator, banddoorlaatgewogen filtering, kwadratische eerste-orde laagdoorlaatfiltering en online statistische evaluatie om uiteindelijk de flikkeringswaarde te verkrijgen; maar deze methode is voldoende complex en tijdrovend. Door het algoritme te vereenvoudigen wordt een eenvoudige en haalbare berekeningsmethode verkregen: FFT-berekening wordt uitgevoerd op de effectieve spanningswaarde van 256 opeenvolgende cycli, en na een reeks berekeningen zoals weging kan de flikkerwaarde van 12.8s worden verkregen, en de flikkerwaarde ligt binnen 10 minuten.

De waarde kan een kortetermijnflikkering krijgen na berekening van de correlatie, en 12 opeenvolgende korte flikkeringen (binnen 2 uur) kunnen na berekening een langdurige flikkering krijgen. Na verificatie heeft dit algoritme een fout van minder dan 1‰ vergeleken met het IEC-flikkermeteralgoritme.

De gegevensopslagmodule wordt ook in de taakthread geplaatst en het proces bestaat uit het opslaan van de analyseresultaten van de netvoedingskwaliteit, spanningsschommelingen en flikkerwaarden in FIash. De mens-computer-interactiemodule bestaat uit twee delen: een toetsenborddetectietaak en een taak met vloeibare kristallen. De toetsenborddetectietaakthread kan worden voltooid door de periodieke functie PRD. PRD kan de looptijd van de functie bepalen volgens de real-time klok. Stel hier de toetsenborddetectietaak zo in dat deze eenmaal per 100 ms wordt uitgevoerd om toetsaanslagen te detecteren. Volgens de belangrijkste voorwaarde, het vloeibare kristal tonen taak geeft de huidige, meest recente gegevens over de netvoedingskwaliteit weer.

Tenslotte is er de achtergrondthread (IDL). De achtergrondthread (IDL) heeft de laagste prioriteit. Over het algemeen wordt de real-time analysemodule (TRA) erin geplaatst om te draaien, die real-time interactie en diagnose van de DSP-applicatie kan uitvoeren tijdens de uitvoering van de applicatie. CCS beschikt over real-time analysetools zoals CPU-belastingsdiagram, uitvoeringsdiagram, hostkanaalcontrole, informatieregistratie, statistische observatie, real-time besturingskaart en kernel-/objectobservatie. Deze serie functionele modules kan in de IDL draad geplaatst worden, via deze tools wordt de werking van het gehele DSP systeem in één oogopslag duidelijk.

2.2 Communicatie en synchronisatie tussen threads

In dit multi-threaded systeem vereist toegang tot gedeelde bronnen wederzijdse coördinatie tussen threads om op te lossen.

Er zijn drie communicatiemethoden in de DSP/BIOS-omgeving, namelijk pipe-gebaseerde (PIPE) communicatie, stream-gebaseerde (SIO) kanaalgebaseerde communicatie en host-kanaalgebaseerde communicatie (HST).

Tabel 1 toont de manieren waarop 4 threads gegevens delen en synchronisatie bereiken.

3 Systeem real-time analyse en foutopsporing

De overhead van de DSP/BIOS-kernel zelf zal een impact hebben op de real-time prestaties van het systeemprogramma. Om deze reden moet de DSP/BIOS-kernel worden geoptimaliseerd. U kunt de in CCS meegeleverde DSP/BIOS-analysetool gebruiken om de DSP/BIOS-overhead en de rekencapaciteit van het gehele applicatiesysteem te bepalen. Het CPU-belastingsdiagram in de real-time analysetool van DSP/BIOS is bijvoorbeeld een van de meest gebruikte tools.

In de laatste integratiefase zullen er vanwege realtime interactie en andere redenen vaak fouten of voortijdige reacties optreden. Omdat deze verschijnselen niet-periodiek zijn en weinig voorkomen, zijn ze over het algemeen moeilijk te vinden en te volgen. Omdat de RTA-module in de DSP/BIOS echter in de kern is ingebed, gecombineerd met de aangepaste detectievector van de ontwikkelaar, biedt deze een uniek inzicht in de hoofdoorzaak van de fout. Deze visualisatiefunctie helpt enorm bij het isoleren en corrigeren van fouten, wat niet beschikbaar is in algemene embedded ontwikkelingssystemen.

De uitvoeringsprestaties van het applicatieprogramma in het gehele systeem kunnen worden verbeterd op basis van de volgende vier aspecten: selecteer zorgvuldig het threadtype voor verschillende programmafuncties; plaats de systeemstack in het on-chip geheugen; verminder de klokonderbrekingsfrequentie; verhoog de grootte van de streaminvoer- en uitvoerbuffer.

4 samenvatting

Als een set tools die door CCS wordt geleverd, neemt DSP/BIOS zelf slechts heel weinig CPU-bronnen in beslag, maar het levert behoorlijk hoge prestaties en versnelt de voortgang van de ontwikkeling. Door DSP/BIOS te gebruiken als het real-time besturingssysteem van de Power Quality Monitoring Terminal, is het eenvoudig om hardwarebronnen te controleren bij het schrijven van DSP-programma's en om verschillende softwaremodules flexibel te coördineren, wat de voortgang van softwareontwikkeling en foutopsporing aanzienlijk versnelt. Het laatste experiment bewees dat het hele systeem goede realtime prestaties en een stabiele en betrouwbare werking heeft.