交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò )記錄裝置中的應用
摘要:智能變電站改變了數據采集的方式,一次設備集成的采集器負責數據采樣,然后通過(guò)光以太網(wǎng)將采樣數據以網(wǎng)絡(luò )報文的形式發(fā)送給二次設備。介紹采用以太網(wǎng)交換芯片擴展網(wǎng)絡(luò )接口在錄波和網(wǎng)絡(luò )記錄裝置數據采集中的應用研究,介紹實(shí)踐中遇到的問(wèn)題及解決方法,并分析存在的問(wèn)題和其適用的范圍。
本文引用地址:http://dyxdggzs.com/article/201610/306811.htm引言
智能變電站改變了數據采集的方式,一次設備集成的采集器負責數據采樣,然后通過(guò)光以太網(wǎng)將采樣數據以網(wǎng)絡(luò )報文的形式發(fā)送給二次設備。二次設備需要多個(gè)網(wǎng)口接收采樣數據報文,尤其是集中式錄波裝置和網(wǎng)絡(luò )記錄裝置一般需要8個(gè)左右的光以太網(wǎng)采集口,而在GOOSE報文點(diǎn)對點(diǎn)接入方式下需要的光以太網(wǎng)就更多了。以往嵌入式CPU沒(méi)有這么多網(wǎng)口,于是采用交換芯片擴展以太網(wǎng)接口就成為首選方案。
1 設計方案及平臺介紹
1.1 設計平臺基礎
硬件采用POWERPC為核心,主頻為800 MHz,支持兩個(gè)RGMII接口;軟件采用嵌入式Linux,內核版本為2.6. 25。
1.2 設計方案
系統硬件以PowerPC CPU為核心,外圍模塊包括內存、SATA硬盤(pán)、LED指示燈、NORFlash、擴展網(wǎng)口的交換模塊、JTAG調試口、串口控制臺、獨立的千兆以太網(wǎng)口。
系統框圖如圖1所示。主要功能如下:
①其中大容量?jì)却嬗糜贚inux系統及應用程序運行,以及網(wǎng)絡(luò )報文數據和錄波數據緩沖;
②SATA硬盤(pán)用于報文數據和錄波數據記錄存儲、Linux根文件系統存儲;
③LED指示燈用于指示程序運行狀態(tài);
④Nor Flash用于Linux內核和U-boot存儲;
⑤交換模塊對外負責接入8個(gè)百兆光以太網(wǎng)口,CPU通過(guò)RGMII數字接口相連,將8個(gè)百兆光以太網(wǎng)口采集的數據匯集到CPU;
⑥JTAG調試口用于硬件調試;
⑦串口控制臺,用于程序及驅動(dòng)調試;
⑧獨立的千兆以太網(wǎng)口負責和后臺通信。

2 基本驅動(dòng)程序設計
交換芯片廠(chǎng)家提供交換芯片的驅動(dòng)、SDK源碼、例子,但是沒(méi)有針對本平臺的解決方案,基本驅動(dòng)需要實(shí)現上層函數對交換芯片進(jìn)行配置操作,實(shí)際網(wǎng)絡(luò )驅動(dòng)只需要把相應端口配置好,在Linux設備樹(shù)文件中定義好,就可以使用Linux通用網(wǎng)絡(luò )驅動(dòng)進(jìn)行網(wǎng)絡(luò )通信。
2.1 mii_read/mii_write接口函數實(shí)現
mii_read/mii_write是上層函數對交換芯片配置操作的函數,通過(guò)RGMII硬件接口實(shí)現。在Linux系統中對硬件操作不能有上層函數直接訪(fǎng)問(wèn),需要通過(guò)驅動(dòng)接口實(shí)現上層函數對底層硬件的訪(fǎng)問(wèn),本方案通過(guò)設備屬性文件的讀寫(xiě)實(shí)現對底層硬件端口的配置讀寫(xiě)。具體步驟如下:
①在內核層,利用Linux的device_attr(),在文件系統中增加設備屬性。內核代碼需要修改的文件為Gianfar_mii.c。
◆定義sysfs_reg_io函數實(shí)現硬件直接讀寫(xiě),本處文件讀寫(xiě)傳遞參數為字符串,故需要相應轉換。


◆綁定設備屬性文件reg_io,對其讀寫(xiě)實(shí)際執行的是sysfs_reg_io。
static DEVICE_ATTR(reg_io,S_IWUSR | S_IRUSR,sysfs_reg_io,sysfs_reg_io);
◆在int gfar_mdio_probe(struct devrice*dev)添力口以下代碼中的實(shí)現設備屬性文件到系統。
dev_set_drvdata(dev,new_bus);
device_create_file(dev,dev_attr_reg_io);
②在用戶(hù)層需要修改mii_read/mii_write函數的具體實(shí)現,示例代碼采用的是硬件直接訪(fǎng)問(wèn),本處需要使用對reg_io文件的讀寫(xiě)實(shí)現,注意傳入參數需要和sysfs_reg_io函數的處理一致。具體修改哪個(gè)文件,在不破壞SDK接口的情況下查找相應函數名修改,修改后代碼如下:


③多地址配置。
交換芯片的各個(gè)端口和PHY的配置端口的訪(fǎng)問(wèn)分為兩種模式:?jiǎn)蔚刂纺J胶投嗟刂纺J?。單地址模式還是多地址模式通過(guò)交換芯片的硬件跳線(xiàn)選擇,單地址模式指交換芯片的各個(gè)端口和PHY分別占用MDIO的設備地址空間,而多地址只占用一個(gè)MDIO設備的地址空間,這個(gè)設備地址空間的特殊寄存器實(shí)現各個(gè)端口和PHY的多地址復用訪(fǎng)問(wèn)。
在實(shí)際使用中,如果交換芯片使用單地址模式,交換芯片占用了所有的MDIO設備地址空間,和另一個(gè)獨立的千兆網(wǎng)口的MDIO設備地址沖突,故本方案采用多地址模式。多地址模式除了需要硬件配置外,還需要在SDK中相應配置。
本系統需要宏定義:#ifdef MULTI_ADDR_MODE。有了這個(gè)宏定義,實(shí)際訪(fǎng)問(wèn)交換芯片的函數為MultiAddrRead/MultiAddrRead,通過(guò)交換芯片的命令寄存器和數據寄存器訪(fǎng)問(wèn)。配置efg.mode.baseAddr=0x10為交換芯片地址(和交換芯片地址跳線(xiàn)相關(guān));配置cfg.cpu Port Num=10為交換芯片和CPU相連的端口地址,本例中為10口。
3 CPU和以太網(wǎng)RGMII連接驅動(dòng)配置
由于CPU是通過(guò)RGMII數字接口和交換芯片直接相連,中間沒(méi)有PHY,故需要在設備樹(shù)中直接定義連接配置為固定波特率模式。有PHY的配置,例如phy—handle=phy2>,實(shí)際波特率配置需要配置相應PHY的寄存器或者自適應;固定波特率模式配置,例如fixed—link=1 1 1000 0 0>,表示全雙工1000 Mbps(nopause and no asym_pause)。
4 數據匯集以及互相隔離設計
智能變電站中,過(guò)程層交換機為了控制流量,一般采用劃分VLAN的方式隔離應用無(wú)關(guān)以太網(wǎng)端口,而不同以太網(wǎng)端口可能都要接入同一個(gè)錄波裝置或網(wǎng)絡(luò )報文記錄儀設備。
實(shí)際應用中出現過(guò)錄波裝置內部不同網(wǎng)口之間有交換功能,導致網(wǎng)絡(luò )回環(huán)、網(wǎng)絡(luò )癱瘓的情況,這就要求裝置的數據接入口之間必須要隔離。采用劃分VLAN的方式現場(chǎng)維護困難,實(shí)際應用中采用端口見(jiàn)物理隔離的方法。
實(shí)現方案如下:交換芯片用于數據采集的0~7號端口、8號端口(實(shí)現1588對時(shí))、9號端口(用于和口頭通信)之間互相隔離。0~9號端口都和10號端口通信(10號端口和CPU相連匯集0~7口的數據)。
通過(guò)配置交換芯片所有端口的0x06控制寄存器可實(shí)現該功能,該寄存器名為端口級VLAN映射(PORT Based VLAN MAP)。其中的10:0位指示VLANTable,其中每一位對應一個(gè)端口,置1表示該端口輸入的數據會(huì )發(fā)到相應端口(如5端口的VLANTable=0x003表示5端口的數據會(huì )轉發(fā)給0端口和1端口)。實(shí)際配置0~9端口讀取寄存器內容,和0x400按位“與”之后回寫(xiě)。10端口讀取寄存器內容和0x300按位“與”之后回寫(xiě)。
結語(yǔ)
由于交換芯片造成的延時(shí)具有不確定性,且所有端口數據匯集到千兆口由CPU負責接收會(huì )造成排隊現象,本方案不適合對時(shí)間精度要求較高(μs)的SV報文記錄,但是由于本方案端口多,帶寬大適合作為GOOSE及MMS報文的記錄,及時(shí)GOOSE和MMS突發(fā)性報文較多本方案也能輕松記錄。實(shí)際測試本方案可記錄600~800 Mbps的流量(視報文大小不同)。
基于交換芯片的嵌入式智能電網(wǎng)錄波及網(wǎng)絡(luò )記錄裝置數據采集方案,有效解決了GOOSE及MMS大容量、突發(fā)性報文記錄的問(wèn)題,性?xún)r(jià)比較高。在實(shí)際應用中,由于錄波和網(wǎng)絡(luò )記錄裝置采集端口多,甚至可以減少智能變電站過(guò)程層網(wǎng)絡(luò )交換機需求。
評論