侯建華,劉雪芬,張 凱
(西安西電開關(guān)電氣有限公司技術(shù)中心,西安 710077)
電力系統(tǒng)中高壓開關(guān)設(shè)備運行的穩(wěn)定和可靠對整個電力系統(tǒng)至關(guān)重要,對高壓開關(guān)設(shè)備進行在線監(jiān)測很有必要。目前在線監(jiān)測裝置對監(jiān)測功能分類過細(xì),造成監(jiān)測IED(智能電子設(shè)備)種類多,工程實施成本高,在線監(jiān)測產(chǎn)生的經(jīng)濟效益遠(yuǎn)低于預(yù)期。因此將各種監(jiān)測IED如機械特性監(jiān)測IED、SF6監(jiān)測IED、局放監(jiān)測IED、避雷器監(jiān)測IED等多種監(jiān)測功能整合成一臺綜合監(jiān)測IED,對高壓開關(guān)運行的各項參數(shù)進行在線監(jiān)測,將有利于降低成本、工程實施難度和維護工作量[1]。
高壓開關(guān)綜合數(shù)據(jù)采集與監(jiān)測裝置應(yīng)能連續(xù)或周期性監(jiān)測、記錄被監(jiān)測設(shè)備狀態(tài)的參數(shù),及時有效地跟蹤設(shè)備的狀態(tài)變化,有利于預(yù)防事故的發(fā)生;根據(jù)監(jiān)測數(shù)據(jù)能夠有效判斷被監(jiān)測設(shè)備狀況,以便調(diào)整設(shè)備試驗周期,減少不必要的停電試驗,或?qū)摲怨收线M行預(yù)警;裝置宜具備多種輸出接口,具有與其它監(jiān)控系統(tǒng)間按統(tǒng)一通信規(guī)約相連的接口,具備報警輸出;具有良好的人機界面,操作簡單,便于運用。根據(jù)在線監(jiān)測裝置的技術(shù)要求,高壓開關(guān)綜合數(shù)據(jù)采集與監(jiān)測系統(tǒng)應(yīng)能監(jiān)測高壓開關(guān)的機械特性、SF6氣體、母線溫度、避雷器、局放等參數(shù),并具備錄波功能[2]。
基于以上工程實際出發(fā)和在線監(jiān)測系統(tǒng)的技術(shù)要求,裝置在硬件設(shè)計時采用了FGPA+STM32雙處理器的架構(gòu)。FPGA(field programmable gate array,現(xiàn)場可編程門陣列)屬于專用集成電路中的一種半定制電路,內(nèi)部有豐富的可編程邏輯單元、大量的硬件乘法器模塊、充足的I/O引腳資源,使用Verilog HDL/VHDL(硬件描述語言)實現(xiàn)設(shè)計。采用FPGA進行的嵌入式系統(tǒng)硬件設(shè)計,可重編程、可定制、速度快、能縮短開發(fā)周期,滿足實時處理的要求[3]。基于ARM Cortex-M4內(nèi)核的STM32F407是一種高性能的32位微控制器,它是針對低成本、低功耗、高性能的、面向終端應(yīng)用的微控制器,內(nèi)核架構(gòu)先進,性能優(yōu)越,主頻可達(dá)168 MHz,執(zhí)行效率高,具有較高的運算能力及數(shù)據(jù)處理能力,擁有豐富的外設(shè)接口和擴展功能[4]。采用FPGA和STM32雙處理器架構(gòu)的平臺設(shè)計,可以充分發(fā)揮兩者各自優(yōu)勢,通過STM32的FSMC(flexible static memory controller,靈活的靜態(tài)存儲控制器)接口和FPGA的雙端口RAM(random access memory,隨機訪問存儲器)能快速實現(xiàn)兩者之間的數(shù)據(jù)交互,整個系統(tǒng)具有成本低、速度快、可靠性高的優(yōu)點,能滿足高速數(shù)據(jù)采集、存儲、控制等多功能應(yīng)用。
STM32微控制器采用的芯片是ST(意法半導(dǎo)體)的STM32F407ZE,F(xiàn)PGA是Xilinx(賽靈思)的XC6SLX9-2TQG144I。FPGA芯片基于成熟的45納米低功耗銅工藝技術(shù),在成本、功率和性能上實現(xiàn)了最佳平衡,內(nèi)部提供了豐富的邏輯單元、觸發(fā)器等內(nèi)置系統(tǒng)級塊用于邏輯設(shè)計,并提供了一種新的、更高效的雙寄存器6輸入查找表(LUT)邏輯供選擇[5]。STM32F407ZE為144引腳封裝,主頻高達(dá)168 MHz,具有512 KB Flash和192 KB SRAM,通信接口多達(dá)15個,多達(dá)17個定時器,還具有符合IEEE 1588 v2標(biāo)準(zhǔn)要求的以太網(wǎng)MAC10/100控制器和能夠連接CMOS照相機傳感器的8~14位并行照相機接口,是一種高集成度、高性能的微控制器。
系統(tǒng)總體設(shè)計見圖1,現(xiàn)場各種信號先經(jīng)過信號采集電路統(tǒng)一處理后進入FPGA,由FPGA進行高速采集存儲。在FPGA內(nèi)部利用Xilinx提供的IP核構(gòu)建雙口RAM,A口用于FPGA讀寫數(shù)據(jù),B口由STM32F407通過FSMC總線讀寫數(shù)據(jù)[6]。FPGA將采集的實時數(shù)據(jù)和錄波數(shù)據(jù)經(jīng)過處理后存儲到雙口RAM中,并從雙口RAM中讀取STM32下發(fā)的數(shù)據(jù),實現(xiàn)與STM32數(shù)據(jù)交互。STM32F407用于控制、顯示和管理數(shù)據(jù),通過串口與液晶屏按私有協(xié)議方式進行通信,向液晶屏上傳數(shù)據(jù),同時接收液晶屏下發(fā)的控制指令解析執(zhí)行,同時通過以太網(wǎng)口上傳數(shù)據(jù)給上位機。系統(tǒng)充分發(fā)揮了FPGA高速采集、并行處理和STM32強大的處理能力和豐富的外設(shè),可實現(xiàn)高速數(shù)據(jù)采集和多種應(yīng)用。

圖1 系統(tǒng)總體設(shè)計框圖
系統(tǒng)根據(jù)功能劃分共設(shè)計了3塊電路板,信號采集電路板、主控板和電源板。信號采集電路板主要包括采集現(xiàn)場各模擬量信號,并對信號進行調(diào)理,開關(guān)量信號輸入和輸出電路,編碼器TTL電平信號采集電路,光B碼輸入電路等。主控板為FPGA+STM32雙處理器核心板以及外圍電路,電源板為系統(tǒng)電源設(shè)計回路,為系統(tǒng)及外部傳感器提供電源。
信號采集電路板與裝置后面板端子相連,各種模擬量、開關(guān)量、旋轉(zhuǎn)編碼器TTL信號、光B碼信號和光以太網(wǎng)信號先統(tǒng)一進入信號采集電路板進行處理,再通過排線與主控板FPGA進行相連。光纖接口可以采集基于IEC61850-9-2的互感器信號[7],B碼對時功能主要是滿足電力系統(tǒng)變電站對裝置的設(shè)計要求,以達(dá)到時間同步[8]。
信號采集電路板模擬量采集單元由信號調(diào)理部分和信號采集部分組成,信號調(diào)理部分主要實現(xiàn)對輸入的各種信號進行變換和調(diào)理,保證信號能夠準(zhǔn)確的被ADC(analog to digital converter,模數(shù)轉(zhuǎn)換器)采集[9],如圖2所示。信號采集部分主要實現(xiàn)信號模數(shù)轉(zhuǎn)換,由ADC、電壓參考及接口電路組成,本系統(tǒng)采用ADI(亞德諾半導(dǎo)體)公司的AD7606芯片。AD7606是一款8通道同步采集輸入、真雙極性模擬輸入的ADC,其輸入范圍±5 V或±10 V可選,內(nèi)部集成輸入保護和抗混疊濾波器,自帶片電壓基準(zhǔn),分辨率為16 bits,每通道采樣率能夠達(dá)到200 ksps(kilo samples per second,千次每秒),數(shù)據(jù)輸出通道靈活,既可以選擇并行輸出也可以支持串行輸出。

圖2 模擬量信號調(diào)理部分原理框圖
開關(guān)量采集單元主要實現(xiàn)開關(guān)狀態(tài)和各輔助觸點信號的采集。為了保證設(shè)備的可靠性,防止現(xiàn)場環(huán)境對裝置運行的影響,需要對輸入信號進行隔離。開關(guān)量采集單元的電路如圖3所示,將待測開關(guān)串聯(lián)接入開關(guān)量測量電路中光耦的隔離前端,當(dāng)開關(guān)閉合時,前向通道導(dǎo)通,進而隔離后端通道導(dǎo)通,輸出狀態(tài)改變。通過判斷隔離后端輸出狀態(tài),就可以確定開關(guān)量輸入的狀態(tài)。

圖3 開關(guān)量采集電路
旋轉(zhuǎn)編碼器輸出為TTL雙路正交信號,電平標(biāo)準(zhǔn)兼容5V的RS422接口。由于用FPGA對旋轉(zhuǎn)編碼器輸出信號進行解析,而FPGA的輸入電壓最高只能夠支持3.3 V,所以還需要加一級電平轉(zhuǎn)換電路。旋轉(zhuǎn)編碼器接口電路原理如圖4所示。旋轉(zhuǎn)編碼器輸出的TTL正交信號通過RS422接口芯片,轉(zhuǎn)換成標(biāo)準(zhǔn)5 V的時序信號,再通過電平轉(zhuǎn)換電路,將5 V信號轉(zhuǎn)換為3.3 V的邏輯信號,最后進入FPGA解析。

圖4 旋轉(zhuǎn)編碼器接口
光B碼主要用于系統(tǒng)對時,光B碼的接口主要是將光信號變換為電信號,再通過FPGA進行解析。其接口電路如圖5所示。

圖5 光B碼接口
FPGA是一種掉電易失型器件,所以邏輯代碼必須放在非易失性存儲器內(nèi),也就是FPGA的配置芯片內(nèi),F(xiàn)PGA上電后從配置芯片加載程序到FPGA內(nèi)部運行。系統(tǒng)采用主SPI(serial peripheral interface,串行外圍設(shè)備接口)模式實現(xiàn)FPGA與FLASH配置芯片通信,該通信方式既支持原廠配置芯片,也支持第三方通用SPI FLASH,大大地降低了選型的局限性,可以選擇多種配置芯片,而且通用SPI FLASH配置芯片存儲空間可以足夠大,不需要進行多片串聯(lián),可以降低PCB的布局難度,同時支持多線SPI模式,可以加快燒寫及加載速度,其接口電路如圖6所示。

圖6 主SPI配置模式
STM32F407具有豐富的通信接口,包括6個速度高達(dá)11.25 Mb/s的UART(universal asynchronous receiver and transmitter,通用異步收發(fā)器)、3個速度高達(dá)45 Mb/s的SPI、3個I2C(Inter-Integrated Circuit)、2個CAN(controller area network)和1個SDIO(secure digital input and output,安全數(shù)字輸入/輸出接口),可連接很多的外部設(shè)備,ST公司為用戶應(yīng)用開發(fā)提供了簡單易用的固件庫,使得基于STM32微控制器開發(fā)變得快速容易[10]。
STM32通過FSMC接口從FPGA讀取采集的數(shù)據(jù),并通過UART與工業(yè)液晶屏通信,實現(xiàn)實時數(shù)據(jù)的定時上傳顯示,并能上傳開關(guān)動作的機械特性曲線等非實時數(shù)據(jù),完成開關(guān)運行狀態(tài)各項參數(shù)的監(jiān)測,同時接收液晶屏下發(fā)的指令,可以對開關(guān)進行相應(yīng)的本地操作和參數(shù)設(shè)置,STM32與串口液晶屏通信接口電路如圖7所示,另外系統(tǒng)還設(shè)計了幾路RS485接口,作為與其它串口設(shè)備通信的預(yù)留接口,如圖8所示。
STM32F407可作為TCP服務(wù)器與上位機通過以太網(wǎng)接口進行通信,芯片內(nèi)部自帶網(wǎng)絡(luò)MAC控制器,只需要外加一個PHY(物理層)芯片,即可實現(xiàn)網(wǎng)絡(luò)通信功能。系統(tǒng)選擇LAN8720芯片作為STM32F407的PHY芯片,該芯片采用RMII(簡化介質(zhì)獨立接口)接口與STM32F407通信,占用IO較少,且支持自動識別交叉/直連網(wǎng)線功能,自帶一個網(wǎng)絡(luò)變壓器的RJ45頭(HR911103C),一起組成10M/100M自適應(yīng)網(wǎng)卡,其原理如圖9所示。

圖8 RS485接口電路

圖9 以太網(wǎng)接口電路
STM32F407芯片使用FSMC外設(shè)來讀寫外部存儲器中的數(shù)據(jù),F(xiàn)SMC可以用于驅(qū)動包括SRAM、NORFLASH 以及NAND FLSAH類型的存儲器。在FPGA中利用Xilinx提供的IP核構(gòu)建雙口RAM,可實現(xiàn)異構(gòu)系統(tǒng)之間快速交換數(shù)據(jù)[5]。而STM32F407就可以通過FSMC接口訪問此RAM,就像訪問外部SRAM一樣進行數(shù)據(jù)的讀寫,從而實現(xiàn)STM32和FPGA的并行數(shù)據(jù)通信[3],其接口如圖10所示。

圖10 FPGA與STM32接口圖
配置好FSMC外設(shè)后,STM32通過FSMC訪問FPGA中數(shù)據(jù)時,通過控制引腳FSMC_NE1可以將FPGA內(nèi)部RAM映射到STM32的地址0x6C000000-0x6CFFFFFF上,訪問的數(shù)據(jù)寬度為16位,就像操作STM32外部存儲器一樣簡單,直接通過地址就可以訪問,F(xiàn)SMC控制器會根據(jù)時序自動產(chǎn)生地址信號、數(shù)據(jù)信號和控制信號。
地址線中的A23-A20這4根地址線用于FPGA與STM32之間的I/O控制,STM32收到相應(yīng)開關(guān)的合分閘命令經(jīng)過編碼通過這4個I/O信號輸出到FPGA,這樣可以將動作命令快速準(zhǔn)確地下發(fā)給FPGA。而地址線A19和A18作為FPGA和STM32之間的非實時數(shù)據(jù)的異步讀寫處理信號,來互相通知對方完成對開關(guān)動作波形數(shù)據(jù)的讀寫。其中A19作為STM32的輸入信號,當(dāng)FPGA將動作波形數(shù)據(jù)保存到雙口RAM中時,會在此信號上產(chǎn)生一個脈沖,此信號上升沿會在STM32觸發(fā)外部中斷,從而通知STM32數(shù)據(jù)準(zhǔn)備好可以進行讀取,當(dāng)STM32讀取并保存后,會將A18電平進行翻轉(zhuǎn)從而通知FPGA數(shù)據(jù)讀取完成,進而可以繼續(xù)進行后續(xù)數(shù)據(jù)的異步讀寫。
FPGA負(fù)責(zé)數(shù)據(jù)采集、數(shù)據(jù)臨時存儲與數(shù)據(jù)傳輸,以及光B碼解碼功能,還可用于互感器信號的采集和開關(guān)分合控制。FPGA端的邏輯功能如圖11所示。其中寫數(shù)據(jù)模塊負(fù)責(zé)采集32路模擬量通道串行發(fā)送過來的數(shù)據(jù)以及32路開入量信號,并將其依次放入內(nèi)部RAM中;通信模塊負(fù)責(zé)將內(nèi)部RAM中的數(shù)據(jù)提取出來,存入開辟的雙端口RAM中。每次開機時,STM32端首先下發(fā)定值數(shù)據(jù)到雙口RAM中,通信模塊將該數(shù)據(jù)從雙口RAM中提取出來,送到CRC校驗?zāi)K中進行校驗,如果校驗無誤,則將定值存入指定的定值寄存器中。啟動數(shù)據(jù)采集,同時發(fā)送寫使能信號給通信模塊,令其開始向雙口RAM中寫數(shù)據(jù)。如果FPGA判斷到了開關(guān)動作,則開始將RAM內(nèi)緩存的數(shù)據(jù)存入外部DDR3中,直到FPGA判斷到動作結(jié)束,停止存儲,此時DDR3中的數(shù)據(jù)包含有完整的開關(guān)動作采樣數(shù)據(jù)。然后數(shù)據(jù)經(jīng)過處理后存入FIFO,由通信模塊寫入雙端口RAM中[11],并通過I/O告知STM32進行讀取。

圖11 FPGA邏輯設(shè)計圖
ST公司為了方便用戶開發(fā)程序,提供了一套豐富的STM32F4固件庫,實現(xiàn)了對芯片寄存器操作的封裝,開發(fā)時根據(jù)具體功能需要調(diào)用相應(yīng)的庫函數(shù),可以方便地實現(xiàn)對芯片資源的操作。
圖12為STM32F407的主程序流程圖,同時設(shè)計有兩個中斷源用于中斷主程序完成特定任務(wù)。系統(tǒng)上電后程序首先進行中斷優(yōu)先級分組設(shè)置、配置系統(tǒng)時鐘和時鐘節(jié)拍、配置實時時鐘、配置FSMC接口、初始化串口以太網(wǎng)口、配置外部中斷等一系列初始化動作。初始化完成后先向FPGA發(fā)送定值配置參數(shù),然后分別開辟一段數(shù)據(jù)緩存用于保存從FPGA雙口RAM中讀取的實時數(shù)據(jù)和一段指令隊列緩存用于保存從串口液晶屏接收到的下發(fā)指令。之后開始主循環(huán),首先判斷是否有TCP客戶端進行連接,然后讀取FPGA中采集的實時數(shù)據(jù),刷新數(shù)據(jù)緩存。接著判斷指令隊列中是否有完整的屏下發(fā)指令,如有則提取最前面一條指令進行解析,調(diào)用相應(yīng)子程序完成規(guī)定任務(wù)。緊接著判斷定時器節(jié)拍時間是否達(dá)到,如果達(dá)到則按固定時間節(jié)拍通過串口和以太網(wǎng)口向液晶屏及上位機上傳實時數(shù)據(jù)。最后判斷是否有通過中斷方式讀取的開關(guān)動作波形數(shù)據(jù),有則會將波形數(shù)據(jù)發(fā)送到液晶屏和客戶端。主程序循環(huán)進行以上任務(wù),以響應(yīng)液晶屏的操作及向屏和客戶端上傳數(shù)據(jù)。

圖12 STM32主程序流程圖
根據(jù)系統(tǒng)特點設(shè)計了兩個中斷以完成相應(yīng)的功能,如圖13所示。串口中斷用于從屏接收指令數(shù)據(jù),并保存在開辟的指令隊列中。開關(guān)每次動作時FPGA將高速采樣并保存開關(guān)動作時的機械特性采樣數(shù)據(jù),然后利用I/O信號觸發(fā)STM32外部中斷,相應(yīng)的中斷服務(wù)函數(shù)從雙口RAM中指定區(qū)域讀取采樣數(shù)據(jù),并通過內(nèi)部標(biāo)志位通知主程序處理[12]。設(shè)計的中斷服務(wù)程序應(yīng)盡量高效簡潔,減少CPU中斷時間,保證主程序能及時響應(yīng)屏下發(fā)的操作指令及讀取FPGA采樣數(shù)據(jù)和后續(xù)程序的執(zhí)行,保證數(shù)據(jù)及時更新和上傳。

圖13 STM32中斷服務(wù)子程序
STM32與FPGA之間的接口是程序的關(guān)鍵,需要對STM32讀寫雙口RAM進行測試,以保證數(shù)據(jù)的正常交互。在程序中添加部分測試代碼和數(shù)據(jù),利用FPGA的仿真分析工具可以分析STM32通過FSMC讀寫RAM的時序圖,見圖14和圖15。

圖14 STM32讀FPGA RAM時序

圖15 STM32寫FPGA RAM時序
STM32訪問外部存儲器地址時,F(xiàn)SMC會根據(jù)配置的控制信號線產(chǎn)生時序訪問外部存儲器,讀操作時,地址線發(fā)出要訪問的地址,地址建立周期結(jié)束后讀使能信號線發(fā)出讀使能信號,接著存儲器通過數(shù)據(jù)信號線把目標(biāo)數(shù)據(jù)傳輸給FSMC,F(xiàn)SMC把它交給STM32內(nèi)核。寫操作類似,地址線發(fā)出要訪問的地址,數(shù)據(jù)建立周期期間寫使能信號線發(fā)出寫信號,接著FSMC把數(shù)據(jù)通過數(shù)據(jù)線傳輸?shù)紽PGA存儲器中[4]。讀寫時序圖滿足FSMC訪問外部存儲器的時序要求,數(shù)據(jù)均能正常寫入和讀取。
實驗現(xiàn)場高壓開關(guān)為斥力機構(gòu),有兩個斷口分別是K1和K2,合分閘線圈回路連接直流電容,通過電容放電驅(qū)動相應(yīng)線圈來控制開關(guān)進行合分閘。系統(tǒng)啟動后,F(xiàn)PGA采集到如斷口狀態(tài)、儲能狀態(tài)、分合閘電容電壓、開關(guān)行程位置、SF6氣體壓力等數(shù)據(jù)并寫入雙口RAM,STM32通過FSMC可以實時讀取采集的數(shù)據(jù),再通過串口發(fā)送到液晶屏進行顯示刷新。當(dāng)開關(guān)動作時,F(xiàn)PGA會快速采集和記錄從發(fā)出動作命令開始10 ms的采樣數(shù)據(jù),記錄開關(guān)動作的特性曲線,然后通知STM32進行讀取,最終在界面上進行開關(guān)動作特性曲線的顯示,如圖16所示。由于系統(tǒng)可以同時監(jiān)測和控制多個開關(guān),所以對開關(guān)進行分合閘操作時,利用FSMC接口的3根地址線進行編碼,由STM32通過這3個I/O向FPGA發(fā)送分合閘命令,從而實現(xiàn)對多個開關(guān)的可靠控制。
實驗結(jié)果表明系統(tǒng)運行時,液晶屏上的各種狀態(tài)數(shù)據(jù)都能正常顯示刷新,數(shù)據(jù)交互正常。在屏上進行操作時系統(tǒng)能及時響應(yīng)并完成相應(yīng)任務(wù),控制開關(guān)合分閘時,動作命令能快速輸出,相應(yīng)的機械特性波形曲線數(shù)據(jù)能及時上傳,系統(tǒng)運行穩(wěn)定可靠,滿足了各項功能要求。

圖16 系統(tǒng)液晶屏界面
本文采用FPGA+STM32的雙處理器架構(gòu),設(shè)計了一種高壓開關(guān)綜合數(shù)據(jù)采集與監(jiān)測系統(tǒng),利用FPGA的靈活配置及高速并行性,實現(xiàn)模擬、數(shù)字信號的采集,利用STM32強大的數(shù)據(jù)處理能力和豐富的接口資源,實現(xiàn)采集數(shù)據(jù)的管理和傳輸。FPGA和STM32之間采用雙口RAM和FSMC接口通信實現(xiàn)數(shù)據(jù)的交互。測試結(jié)果表明,系統(tǒng)采樣速度高、數(shù)據(jù)傳輸快、運行穩(wěn)定,能應(yīng)用在高壓開關(guān)在線監(jiān)測中及其它高速數(shù)據(jù)采集和監(jiān)測系統(tǒng)中。