《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 電源技術(shù) > 設(shè)計應(yīng)用 > DSP/BIOS在電能質(zhì)量監(jiān)測終端中的應(yīng)用
DSP/BIOS在電能質(zhì)量監(jiān)測終端中的應(yīng)用
摘要: 電能質(zhì)量監(jiān)測終端系統(tǒng)采用DSP/BIOS作為系統(tǒng)的實(shí)時內(nèi)核,以任務(wù)線程的形式安排各個子功能模塊,,并為之分配系統(tǒng)資源,最終完成對電網(wǎng)電能質(zhì)量的實(shí)時監(jiān)測。本文在以DSP/BIOS作為系統(tǒng)核心的基礎(chǔ)上,,對系統(tǒng)的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析和設(shè)計,。
Abstract:
Key words :

  DSP(數(shù)字信號處理器)在現(xiàn)今的工程應(yīng)用中使用越來越頻繁。其原因主要有三點(diǎn):第一,,它具有強(qiáng)大的運(yùn)算能力,,能夠勝任FFT、數(shù)字濾波等各種數(shù)字信號處理算法,;第二,,各大DSP廠商都為自己的產(chǎn)品設(shè)計了相關(guān)的IDE(集成開發(fā)環(huán)境),使得DSP應(yīng)用程序的開發(fā)如虎添翼,;第三,,具有高性價比,相對于它強(qiáng)大的性能,,不高的價格有著絕對的競爭力,。

  TI為本公司的DSP設(shè)計了集成可視化開發(fā)環(huán)境CCS(Code Composer Studio),而DSP/BIOS是CCS的重要組成部分,。它實(shí)質(zhì)上是一種基于TMS320系列DSP平臺的實(shí)時操作系統(tǒng)內(nèi)核,,也是TI公司實(shí)時軟件技術(shù)——eXpress DSP技術(shù)的核心部分,。DSP/BIOS主要包含三方面的內(nèi)容:多線程內(nèi)核、實(shí)時分析工具,、外設(shè)配置庫,。

  1 系統(tǒng)功能需求

  電能質(zhì)量監(jiān)測終端主要功能是對電網(wǎng)(三相電壓、電流)的電能質(zhì)量進(jìn)行實(shí)時監(jiān)測與分析,。其主要監(jiān)測量有:電壓,、電流有效值,有功,、無功功率,,電壓頻率,三相不平衡,,各次諧波電壓,、電流含有率,功率因素,,相移功率因素,,電壓波動,長時間,、短時間閃變,。

  系統(tǒng)選用TI公司的高性能DSP芯片TMS320

 

F2812作為處理核心,其150 MIPS的處理速度足以滿足本系統(tǒng)的實(shí)時性要求,。按照系統(tǒng)需求,,將本系統(tǒng)分成以下功能模塊:引導(dǎo)自檢模塊、采集任務(wù)執(zhí)行模塊,、電能質(zhì)量數(shù)據(jù)預(yù)處理模塊,、電能質(zhì)量分析運(yùn)算模塊、數(shù)據(jù)存儲模塊,、通信模塊,、人機(jī)交互模塊。按照傳統(tǒng)的編程方式,,這些功能模塊將以順序結(jié)構(gòu)形式組織在一起,,各模塊之間的調(diào)用和切換都由各模塊自身的代碼來完成,使得應(yīng)用程序各模塊之間處于一種耦合狀態(tài),。如果要添加新的功能模塊或者修改已有的功能模塊,,不但要修改與之相關(guān)模塊的調(diào)用代碼,而且新增模塊也會明顯影響到原有系統(tǒng)的時間響應(yīng)特性,,使得升級,、維護(hù)起來相當(dāng)麻煩。DSP/BIOS的出現(xiàn)提供了另外一種組織應(yīng)用程序各功能模塊的機(jī)制,。它將各功能模塊作為任務(wù)線程來看待,,通過可配置的內(nèi)核服務(wù)使各任務(wù)線程在系統(tǒng)調(diào)度器的安排下按照優(yōu)先級的高低分時復(fù)用CPU資源,,各個任務(wù)線程之間通過同步、通信,、數(shù)據(jù)交換等進(jìn)行協(xié)調(diào),。這種機(jī)制使得應(yīng)用程序可維護(hù)性提高,并且提供了更方便,、更高級的謫試手段,。根據(jù)以上特點(diǎn),本系統(tǒng)采用DSP/BIOS作為實(shí)時內(nèi)核,,并以此為基礎(chǔ)對整個系統(tǒng)進(jìn)行設(shè)計。

 

系統(tǒng)在DSP

  2 基于DSP/BIOS的軟件設(shè)計

  2.1 執(zhí)行線程規(guī)劃

  系統(tǒng)的實(shí)時運(yùn)行中,,一些功能函數(shù)由外部控制信號驅(qū)動或者按既定周期運(yùn)行,,所以,函數(shù)的驅(qū)動方式和執(zhí)行周期對實(shí)時系統(tǒng)非常重要,。DSP/BIOS支持多線程應(yīng)用,,線程可以定義為不同的優(yōu)先級。高優(yōu)先級線程可以中斷低優(yōu)先級的線程,,而且不同的線程之間可以實(shí)現(xiàn)交互,,比如阻塞、通信和同步,,線程分為以下4種類型(優(yōu)先級由高到低):硬件中斷(HWI),、軟件中斷(SWI)、任務(wù)(TSK),、后臺線程(IDL),。按照電能質(zhì)量監(jiān)測終端系統(tǒng)的功能需求,將系統(tǒng)各子功能模塊分為以上4種類型線程,。

  首先,,安排硬件中斷線程(HWI)。一般情況下,,系統(tǒng)的主要程序代碼放在軟件中斷或任務(wù)中,;但是,與外部設(shè)備密切相關(guān),、實(shí)時性要求很高的功能模塊程序代碼必須放置在硬件中斷中,。本系統(tǒng)按照上述要求,將以下幾個子功能模塊設(shè)置為硬件中斷線程:A/D采集任務(wù)模塊和通信模塊(接收),。A/D采集是本系統(tǒng)的重要基礎(chǔ),,并且與系統(tǒng)底層硬件緊密相連,所以將它設(shè)置為硬件中斷線程(HWI),。其主要流程是:A/D芯片以一定的頻率采集電網(wǎng)的實(shí)時數(shù)據(jù),,然后與DSP的McPSP口進(jìn)行通信,。DSP接收A/D芯片采集的數(shù)據(jù),并存儲在片內(nèi)RAM的特定區(qū)域,,為其他線程的運(yùn)算作好準(zhǔn)備,。通信模塊采用RS485與上位機(jī)通信,其與系統(tǒng)的底層硬件密切相關(guān),,而且DSP本身的SCI接口只有最大16個字的FIFO,,如不及時對接收數(shù)據(jù)進(jìn)行處理,將會造成數(shù)據(jù)丟失,。

  下面介紹HWI模塊在DSP/BIOS中的參數(shù)設(shè)置,。McBSP串口的接收中斷放在HWI模塊的HWI_INT6位置上,并且將接收中斷的ISR函數(shù)ad_rx_isr()填寫到HWI_INT6中斷的函數(shù)調(diào)用項(xiàng)中,;同時選擇使用DSP/RI-OS的HWI調(diào)度功能,,當(dāng)響應(yīng)McBSP串口接收中斷時,系統(tǒng)將自動調(diào)用ad_rx_isr()函數(shù),。McBSP串口接收中斷設(shè)置如圖2所示,。與McBSP串口接收中斷設(shè)置類似,設(shè)置SCIA接收中斷為通信接收中斷,,將其ISR函數(shù)scia_rx_isr()填寫到HWI_INT9中斷的函數(shù)調(diào)用項(xiàng)中,。響應(yīng)接收中斷時,系統(tǒng)調(diào)用scia_rx_isr()函數(shù)進(jìn)行處理,。CLK線程也屬于HWI硬件中斷線程之一,,它為整個系統(tǒng)的運(yùn)行提供了時間基準(zhǔn),為用戶周期性地調(diào)用函數(shù)提供了方法,,同時為一些代碼評估工具提供了時間參考,。CLK模塊完全依賴于DSP的定時器中斷,TMS320C2812為DSP/BIOS提供了2個定時器,。

 

McBSP串口接收中斷設(shè)置

  其次,,安排軟件中斷線程(SWI)。所有的軟件中斷都是通過DSP/BIOS內(nèi)核的API調(diào)用來啟動的,,為了便于控制,,系統(tǒng)為每個SWI對象都設(shè)置一個16位的郵箱(Mailbox),可以利用這個郵箱的值有條件地啟動對應(yīng)的軟件中斷,??梢詫⑾鄬τ谄胀ㄈ蝿?wù)比較重要的、發(fā)生頻率比較頻繁的子功能模塊安排在軟件中斷線程(SWI)中,。其子功能模塊包括:電能質(zhì)量數(shù)據(jù)預(yù)處理模塊,、通信模塊(發(fā)送)。電能質(zhì)量數(shù)據(jù)預(yù)處理模塊主要完成對A/D轉(zhuǎn)換結(jié)果的后續(xù)處理,。對A/D轉(zhuǎn)換結(jié)果進(jìn)行預(yù)處理是必要的,。因?yàn)锳/D芯片選用固定頻率進(jìn)行采集,,但是電網(wǎng)的頻率fo是波動的,所以直接對采集數(shù)據(jù)進(jìn)行FFT運(yùn)算會產(chǎn)生頻譜泄漏,,因此,,必須對采集數(shù)據(jù)進(jìn)行預(yù)處理。例如,,對4個周波每個周渡256點(diǎn)一共l024個數(shù)據(jù)進(jìn)行1024點(diǎn)的FFT運(yùn)算,。假設(shè)4個周波的平均頻率為f,則頻率分辨率為f/4,F(xiàn)FT運(yùn)算結(jié)果依次為f/4,、2f/4,、3f/4、f,、5f/4……頻率上的強(qiáng)度,。因此,當(dāng)電網(wǎng)頻率fo發(fā)生變化時,,進(jìn)行FFT運(yùn)算的電網(wǎng)數(shù)據(jù)頻率f也要隨之變化,,使得進(jìn)行FFT運(yùn)算前的電網(wǎng)數(shù)據(jù)頻率f始終與當(dāng)前電網(wǎng)的頻率fo保持一致

 

,。電能質(zhì)量數(shù)據(jù)預(yù)處理模塊具體操作是對A/D轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行插值,,插值算法采用線性插值。經(jīng)過驗(yàn)證,,額定電壓下,,線性插值算法造成的FFT運(yùn)算的誤差在O.1‰以內(nèi)。除此之外,,該模塊還有一個功能就是計算一個周波內(nèi)的電壓有效值,。這是計算電壓波動和長時間、短時間閃變的必要數(shù)據(jù),。通信模塊(發(fā)送)負(fù)責(zé)向上位機(jī)發(fā)送數(shù)據(jù),,雖然其實(shí)時性要求不高,但是與硬件底層密切聯(lián)系,,所以設(shè)置為軟件中斷線程,。當(dāng)串口接收中斷發(fā)生時,調(diào)用scia_rx_isr()函數(shù)對接收數(shù)據(jù)命令進(jìn)行處理,,根據(jù)相關(guān)的命令發(fā)送相應(yīng)的電能質(zhì)量數(shù)據(jù),。DSP/BIOS為軟件中斷對象提供了O~14的優(yōu)先級,按照上述線程的重要程度,,將采集數(shù)據(jù)處理線程優(yōu)先級設(shè)為14,,主機(jī)通信線程設(shè)為8,其他優(yōu)先級預(yù)留以便將來軟件升級,。

 

  需要注意的是:中斷線程(包括硬件中斷和軟件中斷)都運(yùn)行于相同的堆棧,。當(dāng)高優(yōu)先級中斷發(fā)生導(dǎo)致系統(tǒng)進(jìn)行任務(wù)切換時,,高優(yōu)先級中斷線程會中斷低優(yōu)先級中斷線程;在運(yùn)行高優(yōu)先級中斷線程前會保存低優(yōu)先級中斷線程相關(guān)寄存器內(nèi)容,,在高優(yōu)先級中斷線程運(yùn)行結(jié)束后,,寄存器會恢復(fù)為原先的內(nèi)容,繼續(xù)完成原先低優(yōu)先級線程,。所以,,如果設(shè)置硬件中斷或軟件中斷線程過多,則堆棧將會溢出,,為此必須將大部分任務(wù)模塊放置在任務(wù)線程中,。接下來,安排任務(wù)線程(TSK),。如同絕大多數(shù)實(shí)時系統(tǒng),,任務(wù)線程是整個系統(tǒng)的主要組成部分。任務(wù)線程中的函數(shù)可以獨(dú)立運(yùn)行,,也可以并行運(yùn)行,。DSP/BIOS任務(wù)管理模塊根據(jù)任務(wù)線程的優(yōu)先級安排運(yùn)行,并通過切換函數(shù)完成從一項(xiàng)任務(wù)到另一項(xiàng)任務(wù)的轉(zhuǎn)換,。每個任務(wù)有4種執(zhí)行狀態(tài):運(yùn)行(run),、就緒(ready)、暫停(blocked)和終止(terminated),。一月任務(wù)被創(chuàng)建,,它總是處在4個狀態(tài)之一。DSP/BIOS為每個任務(wù)對象提供了-l~15的優(yōu)先級,。任務(wù)會按照嚴(yán)格的優(yōu)先級順序來執(zhí)行,,相同優(yōu)先級的任務(wù)會按照“先來先服務(wù)”的原則來安排執(zhí)行順序。需要注意的足,,當(dāng)創(chuàng)建一個任務(wù)線程時,,需要同時建立一個屬于該任務(wù)的專用堆棧。該堆棧用于存儲奉地局部變量或進(jìn)一步的函數(shù)調(diào)用嵌套,。

  我們將電能質(zhì)量分析運(yùn)算模塊,、數(shù)據(jù)存儲模塊、人機(jī)交互模塊設(shè)置在任務(wù)線程(TSK)中,。電能質(zhì)量分析運(yùn)算模塊又可以分為諧波計算任務(wù)線程,、電壓波動計算任務(wù)線程、閃變計算任務(wù)線程3部分,。諧波計算任務(wù)線程主要負(fù)責(zé)對電能質(zhì)量數(shù)據(jù)預(yù)處理后的結(jié)果進(jìn)行FFT運(yùn)算,。FFT運(yùn)算主要包括位轉(zhuǎn)換運(yùn)算、加窗運(yùn)算、以2為基的蝶形運(yùn)算,、分裂基運(yùn)算,、平方和運(yùn)算5個部分。電壓波動計算任務(wù)線程負(fù)責(zé)記錄3 min內(nèi)電網(wǎng)電壓的波動情況,。前面電能質(zhì)量數(shù)據(jù)預(yù)處理模塊已經(jīng)得出每個周波的電壓有效值,,這樣,只須記錄3min內(nèi)電壓有效值最大值和最小值,,兩者之差就是電壓波動,。閃變計算仟務(wù)線程包括計算短時間閃變和長時間閃變。現(xiàn)在一般采用IEC閃變儀設(shè)計方法,,輸入適配自檢信號通過平方解調(diào)器,、帶通加權(quán)濾波、平方一階低通濾波,、在線統(tǒng)計評價4個過程最終得到閃變值,;但足此方法復(fù)雜、耗時多,。通過算法簡化,,得出一種簡單可行的運(yùn)算方法:對連續(xù)256個周波的電壓有效值進(jìn)行FFT運(yùn)算,結(jié)果再經(jīng)過加權(quán)等一系列運(yùn)算后可以得到12.8s的閃變值,,10min內(nèi)閃變值經(jīng)過相關(guān)運(yùn)算就可得到短時間閃變,,12次連續(xù)短時間閃變(2 h內(nèi))經(jīng)過運(yùn)算可以得到長時間閃變。經(jīng)過驗(yàn)證,,此種算法與IEC閃變儀算法相比,,誤差在l‰以內(nèi),。

  數(shù)據(jù)存儲模塊也放置在任務(wù)線程中,,其過程是將電能質(zhì)量分析結(jié)果、電壓波動以及閃變值存儲在FIash中,。人機(jī)交互模塊包括鍵盤檢測任務(wù)和液晶顯示任務(wù)兩部分,。鍵盤檢測任務(wù)線程可以通過周期函數(shù)PRD來完成。PRD可以根據(jù)實(shí)時時鐘來確定函數(shù)運(yùn)行的時間,。這里,,設(shè)置鍵盤檢測任務(wù)100ms運(yùn)行1次,檢測按鍵,。根據(jù)按鍵情況,,液晶顯示任務(wù)顯示當(dāng)前最新電能質(zhì)量數(shù)據(jù)。

 

  最后,,就是后臺線程(IDL),。后臺線程(IDL)的優(yōu)先級最低,一般,,將實(shí)時分析模塊(TRA)放在其中運(yùn)行,,其可以在應(yīng)用程序執(zhí)行期間對DSP應(yīng)用程序進(jìn)行實(shí)時交互與診斷,。CCS巾有CPU負(fù)載圖、執(zhí)行圖示,、主機(jī)通道控制,、信息記錄、統(tǒng)計觀察,、實(shí)時控制板和內(nèi)核/對象觀察等實(shí)時分析工具,。這一系列功能模塊都可以放置在IDL線程中,通過這些工具,,整個DSP系統(tǒng)的運(yùn)行情況將一目了然,。

  2.2 線程之間的通信與同步

  在這個多線程系統(tǒng)中,對共享資源的訪問需要線程之間的相互協(xié)調(diào)來解決,。

  DSP/BIOS環(huán)境下有3種通信方式,,即基于管道(PIPE)的通信、基于流(SIO)通道的通信以及基于主機(jī)(HST)通道的通信,。

4種線程共享數(shù)據(jù)和實(shí)現(xiàn)同步的途徑

  本系統(tǒng)中,,選用數(shù)據(jù)管道來管理線程之間的數(shù)據(jù)交換,因?yàn)樗m用于高速實(shí)時或大批量的數(shù)據(jù)交換,。每個數(shù)據(jù)管道對象保留一個緩存,,并將該緩存分成一定數(shù)據(jù)的定長幀,所有通過數(shù)據(jù)管道的I/O操作1次處理l幀,。多線程之間的同步主要采用郵箱方式,。

  3 系統(tǒng)

 

實(shí)時分析與調(diào)試

 

  DSP/BIOS內(nèi)核本身的開銷對系統(tǒng)程序?qū)崟r性會有影響,為此需要對DSP/BIOS內(nèi)核進(jìn)行優(yōu)化,??梢允褂肅CS中提供的DSP/BIOS分析工具確定DSP/BIOS的開銷以及整個應(yīng)用系統(tǒng)的運(yùn)算量。比如,,DSP/BIOS提供的實(shí)時分析工具中的CPU負(fù)載圖就是常用工具之一,。

  在最后的集成階段,由于實(shí)時交互等原因,,會經(jīng)常出現(xiàn)一些錯誤或者響應(yīng)不及時的現(xiàn)象,。一般來說,由于這些現(xiàn)象是非周期性的并且出現(xiàn)的頻率很低,,因此難于發(fā)現(xiàn)和跟蹤,。然而,由于DSP/BIOS中的RTA模塊是嵌入到其內(nèi)核中去的,,再結(jié)合開發(fā)人員所提供的定制檢測向量,,從而提供了對錯誤產(chǎn)生根源的獨(dú)一無二的町視性。該可視化功能極大地幫助了隔離和修正錯誤,是一般嵌入式開發(fā)系統(tǒng)所不具備的,。

  可以從下面四個方面提高整個系統(tǒng)中應(yīng)用程序的執(zhí)行性能:為不同的程序函數(shù)仔細(xì)選擇線程的類型,;把系統(tǒng)堆棧放置在片上內(nèi)存中;降低時鐘中斷頻率,;增加流式輸入輸出緩沖器的大小,。

  4 總 結(jié)

  DSP/BIOS作為CCS提供的一套工具,其本身僅占用極少的CPU資源,,但卻提供相當(dāng)高的性能,,加快了開發(fā)進(jìn)度。采用DSP/BIOS作為電能質(zhì)量監(jiān)測終端實(shí)時操作系統(tǒng),,編寫DSP程序時控制硬件資源容易,、協(xié)調(diào)各個軟件模塊靈活,大幅加快軟件的開發(fā),、調(diào)試進(jìn)度,。最終實(shí)驗(yàn)證明,整個系統(tǒng)實(shí)時性好,,運(yùn)行穩(wěn)定可靠,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。