周樑 吳浩偉 姜波 陳濤
(武漢第二船舶設(shè)計(jì)研究所,武漢 430064)
本文研究了一種基于 FPGA+DSP技術(shù)的艦船監(jiān)控單元。將其與斷路器等配合構(gòu)成的智能化開關(guān)柜。其與傳統(tǒng)開關(guān)柜的主要區(qū)別在于數(shù)據(jù)處理與信息取樣、控制的通訊方式上。傳統(tǒng)開關(guān)柜是將系統(tǒng)電壓、支路電流、開關(guān)狀態(tài)量以控制電纜傳送到集中監(jiān)控臺(tái),由集中監(jiān)控臺(tái)統(tǒng)一實(shí)現(xiàn)保護(hù)控制功能[1]。智能開關(guān)柜采用監(jiān)控單元直接進(jìn)行電流、電壓及開關(guān)狀態(tài)信息的采集,并能夠獨(dú)立進(jìn)行數(shù)據(jù)處理,實(shí)現(xiàn)保護(hù)、控制、測(cè)量等功能,同時(shí)通過標(biāo)準(zhǔn)接口上傳。能實(shí)現(xiàn)數(shù)據(jù)采集與監(jiān)控、事故報(bào)警、事故追憶等功能。
該監(jiān)控單元安裝在智能配電柜中,不但要求多路采集大量數(shù)據(jù),同時(shí)還要求通過通信網(wǎng)絡(luò)與監(jiān)控臺(tái)實(shí)時(shí)通信,對(duì)控制芯片提出了很高的要求。
當(dāng)前常用的控制芯片主要有三種,分別為FPGA[2]、DSP[3]及 ARM[4]。FPGA 是專用集成電路中集成度最高的一種,用戶可對(duì)內(nèi)部的邏輯模塊和模塊重新配置,以實(shí)現(xiàn)用戶的邏輯,目前FPGA同時(shí)具有軟件編程的靈活性和 ASIC電路的快速性等優(yōu)點(diǎn),適合高速數(shù)字信號(hào)處理。DSP是一種集成高速乘法器,具有多組內(nèi)部總線,能進(jìn)行快速乘法和加法運(yùn)算,具有處理精度高、處理數(shù)據(jù)量大等優(yōu)勢(shì),同時(shí)集成有各種外設(shè)接口。特別適用于數(shù)據(jù)處理和數(shù)據(jù)通信。ARM支持雙指令集,具有很好的兼容性,適用于界面以及應(yīng)用程序等方面,因此該處理器主要用于與人機(jī)接口顯示和數(shù)據(jù)接口等控制方面。
綜合考慮以上控制芯片各自的優(yōu)缺點(diǎn),本裝置采用了DSP+FPGA雙控制器的方案。
DSP 選用 TI公司 TMS320LF28335[5~6],該芯片采用高性能的靜態(tài) CMOS技術(shù),低功耗設(shè)計(jì)。具有高性能的 32位 CPU。采用哈佛總線結(jié)構(gòu),實(shí)現(xiàn)了片內(nèi)、片外尋址的統(tǒng)一。且芯片內(nèi)部集成了多種功能模塊,其中包括 ADC,PWM,eCAP等芯片提供了多種通信接口,其中包括SPI,SCI,I2c等,且同一種通信接口的數(shù)量不止一個(gè),只需增加外圍器件即可實(shí)現(xiàn)擴(kuò)展功能。
FPGA選用Altera公司的超大規(guī)模可編程邏輯器件 Cyclone系列的 EP1C6PQ240[7]作為輔控制芯片,該芯片有5980個(gè)邏輯單元,嵌入式存儲(chǔ)塊有一列M4K塊,每個(gè)M4K塊可以組成各種存儲(chǔ)器,包括雙端口、單端口RAM、ROM和FIFO等,I/O單元包含一個(gè)雙向I/O緩沖器和三個(gè)寄存器,具有2個(gè)鎖相環(huán)和8個(gè)獨(dú)立系統(tǒng)時(shí)鐘,芯片管腳數(shù)為240個(gè),可用管腳數(shù)為185個(gè)。
在監(jiān)控單元中,大量的現(xiàn)場(chǎng)實(shí)時(shí)數(shù)據(jù)需要采集和處理,并及時(shí)、迅速地向集中監(jiān)控臺(tái)傳輸,即向集中監(jiān)控臺(tái)提供整個(gè)控制過程的具體數(shù)據(jù),同時(shí)還要完成判斷處理并通過輸出模塊發(fā)送各種控制命令。其硬件結(jié)構(gòu)原理參見圖1。
圖1 監(jiān)控單元硬件結(jié)構(gòu)圖
1) A/D芯片。該系統(tǒng)采用AD7865作為A/D芯片,它的主要特性有:高速14位A/D轉(zhuǎn)換器,同時(shí)采樣4個(gè)輸入通道,并具有4個(gè)采樣、保持放大器。其優(yōu)點(diǎn)在于能夠真正實(shí)現(xiàn)多路信號(hào)的同步采樣,并保持各通道信號(hào)的相位關(guān)系。本系統(tǒng)共配置了4片AD7865,能同步采樣多達(dá)16路模擬量數(shù)據(jù)。
2) 磁隔離。所有開關(guān)量的輸入輸出均采用磁隔離技術(shù),可有效提高抗干擾能力,本系統(tǒng)選擇了16片4路集成磁隔離芯片ADUM1410,使得該模塊能同時(shí)完成多達(dá)32輸入,32路輸出的數(shù)據(jù)采集。
3) FPGA主要完成數(shù)據(jù)輸入輸出控制及數(shù)據(jù)預(yù)處理功能。所有的開關(guān)量信號(hào)經(jīng)過光耦輸出將送入FPGA,所有的模擬量信號(hào)經(jīng)A/D芯片轉(zhuǎn)換為數(shù)字信號(hào)后也送入FPGA,因此FPGA需要向A/D芯片提供控制信號(hào)來控制A/D芯片的讀寫,所有的數(shù)據(jù)將在FPGA內(nèi)進(jìn)行預(yù)處理以供DSP讀取。
通過干預(yù)的不合理醫(yī)囑分析發(fā)現(xiàn),中心審方藥師在重復(fù)用藥、適應(yīng)癥、超說明書用藥等方面把控較好,而在溶媒用量、配伍禁忌、給藥途徑等方面把關(guān)不嚴(yán),仍由PIVAS藥師糾正此類不合理醫(yī)囑。如萬古霉素1.5 g加入100 mL 0.9%氯化鈉注射液;多巴胺與呋塞米配伍;前列地爾注射液靜脈滴注等。雙重審方給患者用藥安全上了雙保險(xiǎn)。
4) DSP主要完成數(shù)據(jù)處理、邏輯控制及通訊功能。由于FPGA已經(jīng)將大量數(shù)據(jù)做了預(yù)處理,而且本系統(tǒng)中DSP與FPGA的16位地址線和16位數(shù)據(jù)線均相連,采用并行數(shù)據(jù)傳輸,因此DSP只要通過簡單的指令即可快速讀取所需要的開關(guān)量和模擬量值,為狀態(tài)監(jiān)測(cè)及故障診斷功能提供基礎(chǔ)。
5) 數(shù)據(jù)存儲(chǔ)器。由于本系統(tǒng)具有能掉電保持要求,故本系統(tǒng)外擴(kuò)數(shù)據(jù)存儲(chǔ)器采用掉電不丟失SRAM IS61LV25616。
6) CAN通信。大多數(shù)嵌有CAN控制器的控制芯片只有一個(gè) CAN控制器,如果希望系統(tǒng)具有雙CAN接口,則需要外接一個(gè)CAN控制芯片,增加了硬件成本,電路結(jié)構(gòu)更復(fù)雜[6~7]。而本系統(tǒng)使用的DSP芯片中嵌有兩個(gè)CAN控制器,因此只要將兩個(gè)CAN控制器分別外接CAN驅(qū)動(dòng)器就可以實(shí)現(xiàn)與兩條獨(dú)立的CAN總線連接。
7) 以太網(wǎng)通信 本系統(tǒng)選用了W5100作為以太網(wǎng)接入芯片[8]。W5100包含了 TCP/IP、UDP等網(wǎng)絡(luò)協(xié)議和 DLC、MAC以太網(wǎng)協(xié)議。它提供多種總線,包括兩種并行總線以及SPI串行總線等接口方式。內(nèi)置16KB數(shù)據(jù)緩沖雙口RAM,可快速進(jìn)行數(shù)據(jù)交換。
DSP具有純軟件實(shí)現(xiàn)的靈活性,適用于流程復(fù)雜的算法。因此本系統(tǒng)利用DSP主要完成數(shù)據(jù)處理、邏輯控制及通訊功能。但是用 DSP完成FFT運(yùn)算需占用大量DSP的運(yùn)算時(shí)間,使整個(gè)系統(tǒng)的數(shù)據(jù)吞吐率降低。而FPGA資源豐富,易于組織流水和并行結(jié)構(gòu),因此利用FPGA完成所有信號(hào)的預(yù)處理,主要是進(jìn)行FFT運(yùn)算。
FFT實(shí)現(xiàn)的設(shè)計(jì)方案有順序處理、級(jí)聯(lián)處理、并行處理和陣列處理[8]。順序處理每次運(yùn)算僅用一個(gè)蝶形單元,處理方式簡單,運(yùn)算速度較慢。級(jí)聯(lián)處理、并行處理和陣列處理的速度較快,但占用資源較多。本設(shè)計(jì)采用改進(jìn)的順序處理方案,在原有順序處理的基礎(chǔ)上對(duì)FFT處理過程中數(shù)據(jù)傳輸進(jìn)行控制,使得該結(jié)構(gòu)在繼承原有順序處理電路簡單、占用資源較少優(yōu)點(diǎn)同時(shí)又兼有級(jí)聯(lián)處理運(yùn)算速度較快的優(yōu)點(diǎn)。采用自頂向下的方法對(duì)處理器模塊化,其結(jié)構(gòu)框圖如圖2。
圖2 FFT處理器結(jié)構(gòu)框圖
蝶形運(yùn)算單元是整個(gè)FFT處理單元的重要部分,直接影響整個(gè)FFT單元性能?;?時(shí)間抽取的蝶形信號(hào)流程圖如圖3所示,p和q為數(shù)據(jù)序號(hào),xm(p)和xm(q)是第m級(jí)蝶形運(yùn)算的輸入,xm+1(p)和xm+1(q)是該蝶形運(yùn)算的輸出,WrN為相應(yīng)的旋轉(zhuǎn)因子。
圖3 第m級(jí)蝶形信號(hào)流程圖
圖3的算法表示為:
由上式看出,一個(gè)基2蝶形運(yùn)算要進(jìn)行1次復(fù)乘、2次復(fù)加。為了提高運(yùn)算速度采用并行運(yùn)算,采用 4個(gè)實(shí)數(shù)乘法器、3個(gè)實(shí)數(shù)加法器和 3個(gè)實(shí)數(shù)減法器組成。如圖4所示。設(shè)蝶形運(yùn)算單元的輸入數(shù)據(jù)為 x1=x1_re+jx1_im 和x2=x2_re+jx2_im,旋轉(zhuǎn)因子為WrN=c-jd,則輸出為y1=y1_re+jy1_im和y2=y2_re+jy2_im。
存儲(chǔ)單元在FFT處理單元中存儲(chǔ)器是必不可少的單元,蝶形運(yùn)算數(shù)據(jù)的輸入輸出和中間結(jié)果的存儲(chǔ)都要經(jīng)過存儲(chǔ)器,圖2中存儲(chǔ)器A接收外部輸入數(shù)據(jù),存儲(chǔ)器B是中間結(jié)果單元,除第一級(jí)蝶形運(yùn)算外每級(jí)數(shù)據(jù)的輸入輸出均經(jīng)過該存儲(chǔ)器。在兩塊存儲(chǔ)器和蝶形運(yùn)算模塊之間加入兩個(gè)數(shù)據(jù)控制器配合工作,可以在寫入上一組中間結(jié)果的同時(shí)讀取下一組蝶形運(yùn)算數(shù)據(jù),從而提高FFT的處理速度。
圖4 蝶形運(yùn)算單元
旋轉(zhuǎn)因子單元是存儲(chǔ)FFT運(yùn)算所需的旋轉(zhuǎn)因子WrN=exp(-j2πr/N)。旋轉(zhuǎn)因子分為實(shí)部和虛部,由于它們是小于1的小數(shù),故在設(shè)計(jì)中需將其定點(diǎn)化。其過程是將旋轉(zhuǎn)因子擴(kuò)大214倍,取整數(shù)部分轉(zhuǎn)化為16位定點(diǎn)數(shù)保存。根據(jù)旋轉(zhuǎn)因子的對(duì)稱性和周期性,在利用 ROM存儲(chǔ)旋轉(zhuǎn)因子時(shí),可以只存儲(chǔ)旋轉(zhuǎn)因子表的一部分,通過地址的改變查詢出每級(jí)蝶形運(yùn)算所需的旋轉(zhuǎn)因子。
控制單元用于協(xié)調(diào)驅(qū)動(dòng)各模塊,在FFT運(yùn)算中具有關(guān)鍵作用。旋轉(zhuǎn)因子單元數(shù)據(jù)控制器的讀信號(hào),存儲(chǔ)器A、B的讀寫信號(hào)都是由控制單元產(chǎn)生。控制單元具有單獨(dú)的輸入時(shí)鐘,可產(chǎn)生相應(yīng)的控制信號(hào)。
圖5 監(jiān)控單元程序流程
DSP軟件結(jié)構(gòu)采取的是模塊化設(shè)計(jì),使用C++語言編寫。程序流程如圖 5,主要完成的功能有信號(hào)檢測(cè)、數(shù)據(jù)處理、數(shù)據(jù)傳輸以及邏輯控制。因此按照功能分為以下三個(gè)模塊:數(shù)據(jù)處理模塊、狀態(tài)監(jiān)測(cè)模塊、通信模塊。
數(shù)據(jù)處理模塊的主要功能為實(shí)時(shí)接收來自FPGA的電流、電壓量,通過計(jì)算轉(zhuǎn)換成相應(yīng)的電壓、電流、有功功率、無功功率、功率因數(shù)及頻率等工程信息,實(shí)時(shí)接收斷路器、隔離開關(guān)的分合位置信號(hào)。
狀態(tài)監(jiān)測(cè)模塊的主要功能為通過實(shí)時(shí)監(jiān)測(cè)采集的模擬量、開關(guān)量的數(shù)值和狀態(tài),與模擬量所設(shè)上限、下限等限值比較,當(dāng)測(cè)量值越限時(shí)向集中監(jiān)控臺(tái)發(fā)出報(bào)警,并作相應(yīng)處理。當(dāng)發(fā)生故障開關(guān)跳閘時(shí)將設(shè)備動(dòng)作的所有信息記錄,保護(hù)信息以文件形式保存。
通信模塊主要功能為實(shí)現(xiàn)與集中監(jiān)控臺(tái)建立聯(lián)系,對(duì)所有采集的信息數(shù)據(jù)進(jìn)行匯總和綜合處理,并把各類信息上送給集中監(jiān)控臺(tái)。其按功能又分為 CAN通信模塊、以太網(wǎng)通信模塊兩個(gè)部分。
CAN通信模塊分為三個(gè)層次,硬件抽象層文件、功能函數(shù)層文件、應(yīng)用程序接口層。其中硬件抽象層文件定義了各 CAN控制器的寄存器數(shù)據(jù)格式及讀寫訪問的方法。功能函數(shù)層文件包括CAN控制器各種控制功能的實(shí)現(xiàn)函數(shù)和CAN總線異常中斷處理函數(shù)。應(yīng)用程序接口層的文件包括3個(gè)函數(shù)。
①初始化CAN控制器,包括使能CAN模塊,CAN時(shí)鐘設(shè)置、配置CAN管腳等。②發(fā)送數(shù)據(jù),使發(fā)送報(bào)文按協(xié)議打包或解析后在總線上傳輸,可通過本點(diǎn)把本設(shè)備檢測(cè)參數(shù)和狀態(tài)向 CAN網(wǎng)絡(luò)上上位機(jī)發(fā)送,實(shí)現(xiàn)遠(yuǎn)程網(wǎng)絡(luò)監(jiān)控和管理。③接收數(shù)據(jù),接收上位機(jī)發(fā)送的與本節(jié)點(diǎn)標(biāo)識(shí)符相匹配的報(bào)文來對(duì)本節(jié)點(diǎn)檢測(cè)和運(yùn)行控制。
如圖6所示太網(wǎng)通信模塊分為6個(gè)子模塊:初始化模塊(主要功能為對(duì)W5100內(nèi)部寄存器初始化)、創(chuàng)建socket模塊、網(wǎng)絡(luò)連接模塊、數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊、關(guān)閉socket模塊。其中socket是應(yīng)用程序與網(wǎng)絡(luò)協(xié)議的接口,在用戶進(jìn)程和網(wǎng)絡(luò)協(xié)議之間起到橋梁作用。
本文設(shè)計(jì)的基于 FPGA+DSP技術(shù)的監(jiān)控單元,已應(yīng)用在某船的配電柜中。應(yīng)用結(jié)果表明該單元具有實(shí)時(shí)性高、可靠性好、通信接口豐富的特點(diǎn)。實(shí)現(xiàn)了上位機(jī)監(jiān)控終端與現(xiàn)場(chǎng)設(shè)備的雙網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控。為整個(gè)監(jiān)控系統(tǒng)采取靈活而可靠的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)提供基礎(chǔ),具有很好的推廣應(yīng)用價(jià)值。
圖6 以太網(wǎng)通信程序流程
[1] 李勇. 低壓配電開關(guān)柜智能監(jiān)控單元設(shè)計(jì)[D]. 成都理工大學(xué), 2010.
[2] 彭堅(jiān), 何渝. 基于 FPGA 的交通信息采集系統(tǒng)的設(shè)計(jì)與應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2011, 28(1): 82~84.
[3] 崔學(xué)深, 張建華, 肖剛. DSP技術(shù)在電力系統(tǒng)中的應(yīng)用和硬件實(shí)現(xiàn)方式[J]. 現(xiàn)代電力, 2002, 19(2): 36~42.
[4] 崔秀芳, 喻方平, 常勇. 基于ARM的船舶現(xiàn)場(chǎng)監(jiān)控模塊的設(shè)計(jì)[J]. 微計(jì)算機(jī)信息, 2007, 23(11):159,166~167.
[5] 蘇奎峰, 呂強(qiáng), 鄧志東, 湯霞等. TMS320x28xxx原理與開發(fā)[M]. 北京:電子工業(yè)出版社, 2009.
[6] 樓曉春, 何麗莉. 基于DSP28335的電能質(zhì)量監(jiān)測(cè)儀器設(shè)計(jì)[J]. 杭州電子科技大學(xué)學(xué)報(bào), 2010, 30(4):146~152.
[7] 張晶. 基于 USB2.0接口的數(shù)字圖像通信模塊設(shè)計(jì)[D]. 南京理工大學(xué), 2008.
[8] 鄒依依等. W5100在DSP以太網(wǎng)數(shù)據(jù)通信系統(tǒng)中應(yīng)用[J]. 工業(yè)控制計(jì)算機(jī), 2008, 21(8): 20~21, 23.