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

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


◆綁定設備屬性文件reg_io,對其讀寫實際執行的是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)添力口以下代碼中的實現設備屬性文件到系統。
dev_set_drvdata(dev,new_bus);
device_create_file(dev,dev_attr_reg_io);
②在用戶層需要修改mii_read/mii_write函數的具體實現,示例代碼采用的是硬件直接訪問,本處需要使用對reg_io文件的讀寫實現,注意傳入參數需要和sysfs_reg_io函數的處理一致。具體修改哪個文件,在不破壞SDK接口的情況下查找相應函數名修改,修改后代碼如下:


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