Progettazione del terminale di monitoraggio della qualità dell'alimentazione basato sul chip DSP TMS320F2812

Aggiornamento: 12 dicembre 2023
DSP (Digital Signal Processor) viene utilizzato sempre più frequentemente nelle odierne applicazioni ingegneristiche. Ci sono tre ragioni principali per questo: in primo luogo, ha potenti capacità di calcolo, capaci di vari algoritmi di elaborazione del segnale digitale come FFT e filtraggio digitale; In secondo luogo, i principali produttori di DSP hanno progettato IDE correlati (sviluppo integrato) per i loro prodotti. Environment), che rende ancora più potente lo sviluppo di applicazioni DSP; terzo, ha prestazioni ad alto costo ed è assolutamente competitivo con le sue potenti prestazioni e il prezzo basso.

TI ha progettato l'ambiente di sviluppo visivo integrato CCS (CodeComposerStudio) per il DSP dell'azienda e DSP/BIOS è una parte importante di CCS. Si tratta essenzialmente di un kernel del sistema operativo in tempo reale basato sulla piattaforma DSP della serie TMS320 ed è anche una parte fondamentale del software in tempo reale di TI la tecnologia-Tecnologia eXpressDSP. DSP/BIOS comprende principalmente tre aspetti: kernel multi-thread, strumento di analisi in tempo reale, libreria di configurazione delle periferiche.

1 Requisiti delle funzioni di sistema

La funzione principale del terminale di monitoraggio della qualità dell'energia è monitorare e analizzare la qualità dell'energia della rete elettrica (Trifase voltaggio e corrente) in tempo reale. Le principali variabili di monitoraggio sono: valore effettivo di tensione e corrente, potenza attiva e reattiva, frequenza di tensione, squilibrio trifase, tasso di contenuto di tensione e corrente di ciascuna armonica, fattore di potenza, fattore di potenza di sfasamento, fluttuazione di tensione, tempo lungo, sfarfallio per un poco tempo.

Il sistema seleziona il chip DSP ad alte prestazioni TMS320F2812 di TI come core di elaborazione e la sua velocità di elaborazione di 150 MIPS è sufficiente per soddisfare i requisiti in tempo reale del sistema. A seconda delle esigenze impiantistiche, il sistema è suddiviso nei seguenti moduli funzionali: autocontrollo guidato modulo, modulo di esecuzione delle attività di raccolta, modulo di preelaborazione dei dati sulla qualità dell'energia, modulo operativo di analisi della qualità dell'energia, modulo di archiviazione dei dati, modulo di comunicazione e modulo di interazione uomo-computer.

Secondo il metodo di programmazione tradizionale, questi moduli funzionali saranno organizzati insieme in una struttura sequenziale, e le chiamate e il passaggio da un modulo all'altro sono completati dal codice di ciascun modulo, in modo che i moduli dell'applicazione siano in uno stato accoppiato. Se si vuole aggiungere un nuovo modulo funzionale o modificare un modulo funzionale esistente, non solo sarà necessario modificare il codice chiamante del relativo modulo, ma il nuovo modulo influenzerà ovviamente anche le caratteristiche temporali di risposta del sistema originale, rendendo l'aggiornamento e manutenzione piuttosto problematica.

L'avvento del DSP/BIOS fornisce un altro meccanismo per organizzare i moduli funzionali dei programmi applicativi. Tratta ciascun modulo funzionale come un thread di attività. Attraverso il servizio kernel configurabile, ogni thread di attività multiplexa le risorse della CPU in base alla priorità dello scheduler di sistema. Ogni thread di attività passa attraverso la sincronizzazione, la comunicazione e lo scambio di dati, ecc. Sono coordinati. Questo meccanismo migliora la manutenibilità dell'applicazione e fornisce un mezzo più pratico e avanzato per ripetere il test. In base alle caratteristiche di cui sopra, questo sistema adotta DSP/BIOS come kernel in tempo reale e progetta l'intero sistema in base a questo.

La Figura 1 mostra la classificazione dei moduli funzionali del sistema in DSP/BIOS.

2 Progettazione software basata su DSP/BIOS

2.1 Pianificazione del thread di esecuzione

Nel funzionamento in tempo reale del sistema, alcune funzioni funzionali sono guidate da segnali di controllo esterni o vengono eseguite in un periodo predeterminato. Pertanto, la modalità di guida e il periodo di esecuzione della funzione sono molto importanti per il sistema in tempo reale. DSP/BIOS supporta applicazioni multi-thread e i thread possono essere definiti come priorità diverse.

I thread ad alta priorità possono interrompere i thread a bassa priorità e le interazioni tra thread diversi, come il blocco, la comunicazione e la sincronizzazione, sono suddivise nei seguenti 4 tipi (priorità da alta a bassa): Interruzione hardware (HWI), Interruzione software ( SWI), Attività (TSK), Thread in background (IDL). In base ai requisiti funzionali del sistema terminale di monitoraggio della qualità dell'energia, i moduli sottofunzionali del sistema sono suddivisi nei 4 tipi di thread sopra indicati.

Innanzitutto, pianifica il thread di interruzione hardware (HWI). In circostanze normali, il codice del programma principale del sistema viene inserito nell'interruzione o nel task del software; tuttavia, il codice di programma del modulo funzionale che è strettamente correlato al dispositivo esterno e richiede elevate prestazioni in tempo reale deve essere inserito nell'interrupt hardware.

In conformità ai requisiti di cui sopra, il sistema imposta i seguenti moduli sottofunzionali come thread di interrupt hardware: modulo del compito di acquisizione A/D e modulo di comunicazione (ricezione). L'acquisizione A/D è una base importante di questo sistema ed è strettamente connessa all'hardware sottostante del sistema, quindi è impostata come thread di interruzione hardware (HWI).

Il processo principale è il seguente: il chip A/D raccoglie i dati in tempo reale della rete elettrica ad una determinata frequenza, quindi comunica con la porta McPSP del DSP. Il DSP riceve i dati raccolti dal chip A/D e li memorizza in un'area specifica della RAM on-chip per prepararli al funzionamento di altri thread. Il modulo di comunicazione utilizza RS485 per comunicare con il computer host, che è strettamente correlato all'hardware sottostante del sistema, e l'interfaccia SCI del DSP stesso ha solo una FIFO con un massimo di 16 parole. Se i dati ricevuti non vengono elaborati in tempo, i dati andranno persi.

Di seguito viene descritta la parametrizzazione del modulo HWI nel DSP/BIOS. L'interrupt di ricezione della porta seriale McBSP viene posizionato nella posizione HWI_INT6 del modulo HWI e la funzione ISR ad_rx_isr() dell'interrupt di ricezione viene compilata nell'elemento di chiamata di funzione dell'interrupt HWI_INT6; allo stesso tempo, scegliere di utilizzare la funzione di pianificazione HWI di DSP/RI-OS, quando risponde a McBSP. Quando la porta seriale riceve un interrupt, il sistema chiamerà automaticamente la funzione ad_rx_isr(). L'impostazione dell'interruzione di ricezione della porta seriale McBSP è mostrata nella Figura 2.

Similmente all'impostazione dell'interruzione di ricezione della porta seriale McBSP, l'interruzione di ricezione SCIA è impostata come interruzione di ricezione della comunicazione e la sua funzione ISR scia_rx_isr() è compilata nell'elemento di chiamata di funzione dell'interruzione HWI_INT9. Quando risponde all'interruzione di ricezione, il sistema chiama la funzione scia_rx_isr() per l'elaborazione. Il thread CLK è anche uno dei thread di interruzione hardware HWI. Fornisce un riferimento temporale per il funzionamento dell'intero sistema, fornisce agli utenti un metodo per chiamare periodicamente le funzioni e fornisce un riferimento temporale per alcuni strumenti di valutazione del codice. Il modulo CLK si basa completamente sull'interruzione del timer del DSP. TMS320C2812 fornisce 2 timer per DSP/BIOS.

In secondo luogo, organizzare il thread di interruzione del software (SWI). Tutti gli interrupt software vengono avviati tramite la chiamata API del kernel DSP/BIOS. Per facilitare il controllo, il sistema imposta per ogni oggetto SWI una casella di posta a 16 bit (Mailbox), che può essere utilizzata per avviare condizionalmente la casella di posta corrispondente. Interruzione del software. I moduli di sottofunzioni che sono più importanti delle attività ordinarie e si verificano frequentemente possono essere organizzati nel thread di interruzione del software (SWI). I suoi moduli secondari includono: modulo di preelaborazione dei dati sulla qualità dell'alimentazione, modulo di comunicazione (invio).

Il modulo di preelaborazione dei dati sulla qualità dell'energia completa principalmente la successiva elaborazione dei risultati della conversione A/D. È necessario preelaborare il risultato della conversione A/D. Poiché il chip A/D seleziona una frequenza fissa per l'acquisizione, ma la frequenza fo della rete elettrica fluttua, l'esecuzione diretta di operazioni FFT sui dati acquisiti causerà una perdita di spettro. Pertanto, i dati acquisiti devono essere preelaborati. Ad esempio, un'operazione FFT da 1024 punti viene eseguita su un totale di 1024 dati di 256 punti per ciascuno dei 4 cicli. Supponendo che la frequenza media di 4 cicli sia f, la risoluzione di frequenza sia f/4 e i risultati dell'operazione FFT siano f/4, 2f/4, 3f/4, f, 5f/4... l'intensità sulla frequenza. Pertanto, quando la frequenza della rete elettrica fo cambia, anche la frequenza dei dati della rete elettrica f per il calcolo FFT cambia di conseguenza, in modo che la frequenza dei dati della rete elettrica f prima del calcolo FFT sia sempre coerente con l'attuale frequenza della rete elettrica fo.

Il funzionamento specifico del modulo di preelaborazione dei dati sulla qualità dell'alimentazione consiste nell'interpolare i dati dopo la conversione A/D e l'algoritmo di interpolazione utilizza l'interpolazione lineare. Dopo la verifica, alla tensione nominale, l'errore del funzionamento FFT causato dall'algoritmo di interpolazione lineare è compreso tra 0 e 1‰. Inoltre, un'altra funzione del modulo è quella di calcolare il valore effettivo della tensione all'interno di un ciclo. Questi sono i dati necessari per il calcolo delle fluttuazioni di tensione e dello sfarfallio a lungo e breve termine. Il modulo di comunicazione (invio) è responsabile dell'invio dei dati al computer superiore. Sebbene i suoi requisiti in tempo reale non siano elevati, è strettamente correlato allo strato inferiore dell'hardware, quindi è impostato come thread di interruzione del software.

Quando si verifica l'interruzione di ricezione della porta seriale, chiamare la funzione scia_rx_isr() per elaborare il comando dei dati ricevuti e inviare i dati sulla qualità della potenza corrispondenti in base al comando correlato. DSP/BIOS fornisce una priorità da 0 a 14 per l'oggetto di interruzione del software. A seconda dell'importanza del thread di cui sopra, la priorità del thread di elaborazione dei dati di raccolta è impostata su 14, il thread di comunicazione host è impostato su 8 e altre priorità sono riservate per futuri aggiornamenti del software.

Va notato che i thread di interruzione (inclusi gli interrupt hardware e software) vengono eseguiti tutti sullo stesso stack. Quando si verifica un'interruzione ad alta priorità e fa sì che il sistema cambi attività, il thread di interruzione ad alta priorità interromperà il thread di interruzione a bassa priorità; prima di eseguire il thread di interruzione ad alta priorità, il contenuto del registro pertinente del thread di interruzione a bassa priorità verrà salvato e l'interruzione ad alta priorità Dopo l'esecuzione del thread, il registro verrà ripristinato al suo contenuto originale e continuerà a completare l'originale thread a bassa priorità.

Pertanto, se vengono impostati troppi interrupt hardware o thread di interrupt software, lo stack andrà in overflow. Per questo motivo, la maggior parte dei moduli delle attività deve essere inserita nei thread delle attività. Successivamente, pianifica il thread delle attività (TSK). Come la maggior parte dei sistemi in tempo reale, i thread delle attività sono il componente principale dell'intero sistema. Le funzioni nei thread delle attività possono essere eseguite in modo indipendente o in parallelo. Il modulo di gestione delle attività DSP/BIOS organizza il funzionamento in base alla priorità del thread delle attività e completa la conversione da un'attività a un'altra tramite la funzione di commutazione.

Ogni attività ha 4 stati di esecuzione: eseguito, pronto, bloccato e terminato. Viene creata la missione di gennaio, ed è sempre in uno dei quattro stati. DSP/BIOS fornisce una priorità compresa tra -l e 15 per ciascun oggetto attività. Le attività verranno eseguite in rigoroso ordine di priorità, le attività con la stessa priorità saranno organizzate in ordine di esecuzione secondo il principio "primo arrivato, primo servito". Va notato che quando viene creato un thread di attività, è necessario creare contemporaneamente uno stack dedicato appartenente all'attività. Lo stack viene utilizzato per memorizzare variabili locali o ulteriori annidamenti di chiamate di funzione.

Impostiamo il modulo di calcolo dell'analisi della qualità dell'energia, il modulo di archiviazione dei dati e il modulo di interazione uomo-computer nel thread delle attività (TSK). Il modulo di calcolo dell'analisi della qualità dell'energia può essere diviso in tre parti: thread dell'attività di calcolo delle armoniche, thread dell'attività di calcolo della fluttuazione della tensione e thread dell'attività di calcolo dello sfarfallio.

Il thread dell'attività di calcolo delle armoniche è principalmente responsabile dell'esecuzione delle operazioni FFT sui dati di qualità dell'alimentazione preelaborati. L'operazione FFT comprende principalmente cinque parti: operazione di conversione bit, operazione di windowing, operazione a farfalla basata su 2, operazione di base divisa e operazione di somma quadrata. Il thread dell'attività di calcolo della fluttuazione della tensione è responsabile della registrazione delle fluttuazioni della tensione di rete entro 3 minuti. Il precedente modulo di preelaborazione dei dati sulla qualità dell'energia ha ottenuto il valore effettivo della tensione per ciascun ciclo.

In questo modo è sufficiente registrare entro 3 minuti solo i valori massimo e minimo del valore effettivo della tensione e la differenza tra i due è la fluttuazione della tensione. Il thread dell'attività di calcolo dello sfarfallio include il calcolo dello sfarfallio a breve e a lungo termine. Ora viene generalmente adottato il metodo di progettazione del misuratore di sfarfallio IEC.

Il segnale di autocontrollo adattivo in ingresso passa attraverso il demodulatore quadratico, il filtraggio ponderato passa-banda, il filtraggio passa-basso del primo ordine quadrato e la valutazione statistica online per ottenere infine il valore dello sfarfallio; ma questo metodo è sufficientemente complesso e richiede tempo. Semplificando l'algoritmo si ottiene un metodo di calcolo semplice e fattibile: il calcolo FFT viene eseguito sul valore di tensione efficace di 256 cicli consecutivi e dopo una serie di calcoli come la ponderazione si può ottenere il valore di flicker di 12.8 s e il valore di flicker di 10 s. il valore dello sfarfallio è entro XNUMX minuti.

Il valore può ottenere uno sfarfallio a breve termine dopo il calcolo della correlazione e 12 sfarfallii consecutivi a breve termine (entro 2 ore) possono ottenere uno sfarfallio a lungo termine dopo il calcolo. Dopo la verifica, questo algoritmo presenta un errore entro 1‰ rispetto all'algoritmo del misuratore di sfarfallio IEC.

Anche il modulo di archiviazione dati è inserito nel thread delle attività e il suo processo consiste nel memorizzare i risultati dell'analisi della qualità dell'energia, le fluttuazioni di tensione e i valori di sfarfallio in FIash. Il modulo di interazione uomo-computer comprende due parti: attività di rilevamento della tastiera e attività di visualizzazione a cristalli liquidi. Il thread dell'attività di rilevamento della tastiera può essere completato dalla funzione periodica PRD. PRD può determinare il tempo di esecuzione della funzione in base all'orologio in tempo reale. Qui, imposta l'attività di rilevamento della tastiera in modo che venga eseguita una volta ogni 100 ms per rilevare le sequenze di tasti. Secondo la condizione chiave, il cristallo liquido dalla visualizzazione attività visualizza gli ultimi dati sulla qualità dell'alimentazione correnti.

Infine, c'è il thread in background (IDL). Il thread in background (IDL) ha la priorità più bassa. In genere, al suo interno viene inserito il modulo di analisi in tempo reale (TRA), che può eseguire l'interazione e la diagnosi in tempo reale dell'applicazione DSP durante l'esecuzione dell'applicazione. CCS dispone di strumenti di analisi in tempo reale come diagramma di carico della CPU, diagramma di esecuzione, controllo del canale host, registrazione delle informazioni, osservazione statistica, scheda di controllo in tempo reale e osservazione del kernel/oggetto. Questa serie di moduli funzionali può essere inserita nel thread IDL, attraverso questi strumenti, il funzionamento dell'intero sistema DSP sarà chiaro a colpo d'occhio.

2.2 Comunicazione e sincronizzazione tra thread

In questo sistema multi-thread, l'accesso alle risorse condivise richiede il coordinamento reciproco tra i thread da risolvere.

Esistono tre metodi di comunicazione nell'ambiente DSP/BIOS, ovvero la comunicazione basata su pipe (PIPE), la comunicazione basata sul canale SIO (stream-based) e la comunicazione basata sul canale host (HST).

La tabella 1 mostra i modi in cui 4 thread condividono i dati e ottengono la sincronizzazione.

3 Analisi e debug del sistema in tempo reale

Il sovraccarico del kernel DSP/BIOS stesso avrà un impatto sulle prestazioni in tempo reale del programma di sistema. Per questo motivo, il kernel DSP/BIOS deve essere ottimizzato. È possibile utilizzare lo strumento di analisi DSP/BIOS fornito in CCS per determinare il sovraccarico DSP/BIOS e la capacità di elaborazione dell'intero sistema applicativo. Ad esempio, il diagramma di carico della CPU nello strumento di analisi in tempo reale fornito da DSP/BIOS è uno degli strumenti comunemente utilizzati.

Nella fase di integrazione finale, a causa dell'interazione in tempo reale e per altri motivi, ci saranno spesso degli errori o delle risposte intempestive. In generale, poiché questi fenomeni non sono periodici e hanno una bassa frequenza di accadimento, sono difficili da trovare e monitorare. Tuttavia, poiché il modulo RTA nel DSP/BIOS è incorporato nel suo nucleo, combinato con il vettore di rilevamento personalizzato fornito dallo sviluppatore, fornisce una visibilità unica alla causa principale dell'errore. Questa funzione di visualizzazione aiuta notevolmente a isolare e correggere gli errori, che non è disponibile nei sistemi di sviluppo embedded generali.

Le prestazioni di esecuzione del programma applicativo nell'intero sistema possono essere migliorate dai seguenti quattro aspetti: selezionare accuratamente il tipo di thread per le diverse funzioni del programma; posizionare lo stack di sistema nella memoria su chip; ridurre la frequenza di interruzione dell'orologio; aumentare la dimensione del buffer di input e output del flusso.

4 sommario

Essendo un insieme di strumenti forniti da CCS, DSP/BIOS occupa solo poche risorse della CPU, ma fornisce prestazioni piuttosto elevate e accelera il progresso dello sviluppo. Utilizzando DSP/BIOS come sistema operativo in tempo reale del terminale di monitoraggio della qualità dell'alimentazione, è facile controllare le risorse hardware durante la scrittura di programmi DSP e coordinare in modo flessibile vari moduli software, il che accelera notevolmente il progresso dello sviluppo e del debug del software. L'esperimento finale ha dimostrato che l'intero sistema ha buone prestazioni in tempo reale e un funzionamento stabile e affidabile.