關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò)記錄裝置中的應(yīng)用

交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò)記錄裝置中的應(yīng)用

作者: 時(shí)間:2016-10-15 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:智能變電站改變了的方式,一次設(shè)備集成的采集器負(fù)責(zé)數(shù)據(jù)采樣,然后通過(guò)光以太網(wǎng)將采樣數(shù)據(jù)以網(wǎng)絡(luò)報(bào)文的形式發(fā)送給二次設(shè)備。介紹采用以太網(wǎng)交換芯片擴(kuò)展網(wǎng)絡(luò)接口在裝置中的應(yīng)用研究,介紹實(shí)踐中遇到的問(wèn)題及解決方法,并分析存在的問(wèn)題和其適用的范圍。

本文引用地址:http://2s4d.com/article/201610/306811.htm

引言

智能變電站改變了的方式,一次設(shè)備集成的采集器負(fù)責(zé)數(shù)據(jù)采樣,然后通過(guò)光以太網(wǎng)將采樣數(shù)據(jù)以網(wǎng)絡(luò)報(bào)文的形式發(fā)送給二次設(shè)備。二次設(shè)備需要多個(gè)網(wǎng)口接收采樣數(shù)據(jù)報(bào)文,尤其是集中式裝置和裝置一般需要8個(gè)左右的光以太網(wǎng)采集口,而在GOOSE報(bào)文點(diǎn)對(duì)點(diǎn)接入方式下需要的光以太網(wǎng)就更多了。以往嵌入式CPU沒(méi)有這么多網(wǎng)口,于是采用交換芯片擴(kuò)展以太網(wǎng)接口就成為首選方案。

1 設(shè)計(jì)方案及平臺(tái)介紹

1.1 設(shè)計(jì)平臺(tái)基礎(chǔ)

硬件采用POWERPC為核心,主頻為800 MHz,支持兩個(gè)RGMII接口;軟件采用嵌入式Linux,內(nèi)核版本為2.6. 25。

1.2 設(shè)計(jì)方案

系統(tǒng)硬件以PowerPC CPU為核心,外圍模塊包括內(nèi)存、SATA硬盤(pán)、LED指示燈、NORFlash、擴(kuò)展網(wǎng)口的交換模塊、JTAG調(diào)試口、串口控制臺(tái)、獨(dú)立的千兆以太網(wǎng)口。

系統(tǒng)框圖如圖1所示。主要功能如下:

①其中大容量?jī)?nèi)存用于Linux系統(tǒng)及應(yīng)用程序運(yùn)行,以及網(wǎng)絡(luò)報(bào)文數(shù)據(jù)和數(shù)據(jù)緩沖;

②SATA硬盤(pán)用于報(bào)文數(shù)據(jù)和錄波數(shù)據(jù)記錄存儲(chǔ)、Linux根文件系統(tǒng)存儲(chǔ);

③LED指示燈用于指示程序運(yùn)行狀態(tài);

④Nor Flash用于Linux內(nèi)核和U-boot存儲(chǔ);

⑤交換模塊對(duì)外負(fù)責(zé)接入8個(gè)百兆光以太網(wǎng)口,CPU通過(guò)RGMII數(shù)字接口相連,將8個(gè)百兆光以太網(wǎng)口采集的數(shù)據(jù)匯集到CPU;

⑥JTAG調(diào)試口用于硬件調(diào)試;

⑦串口控制臺(tái),用于程序及驅(qū)動(dòng)調(diào)試;

⑧獨(dú)立的千兆以太網(wǎng)口負(fù)責(zé)和后臺(tái)通信。

交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò)記錄裝置中的應(yīng)用

2 基本驅(qū)動(dòng)程序設(shè)計(jì)

交換芯片廠(chǎng)家提供交換芯片的驅(qū)動(dòng)、SDK源碼、例子,但是沒(méi)有針對(duì)本平臺(tái)的解決方案,基本驅(qū)動(dòng)需要實(shí)現(xiàn)上層函數(shù)對(duì)交換芯片進(jìn)行配置操作,實(shí)際網(wǎng)絡(luò)驅(qū)動(dòng)只需要把相應(yīng)端口配置好,在Linux設(shè)備樹(shù)文件中定義好,就可以使用Linux通用網(wǎng)絡(luò)驅(qū)動(dòng)進(jìn)行網(wǎng)絡(luò)通信。

2.1 mii_read/mii_write接口函數(shù)實(shí)現(xiàn)

mii_read/mii_write是上層函數(shù)對(duì)交換芯片配置操作的函數(shù),通過(guò)RGMII硬件接口實(shí)現(xiàn)。在Linux系統(tǒng)中對(duì)硬件操作不能有上層函數(shù)直接訪(fǎng)問(wèn),需要通過(guò)驅(qū)動(dòng)接口實(shí)現(xiàn)上層函數(shù)對(duì)底層硬件的訪(fǎng)問(wèn),本方案通過(guò)設(shè)備屬性文件的讀寫(xiě)實(shí)現(xiàn)對(duì)底層硬件端口的配置讀寫(xiě)。具體步驟如下:

①在內(nèi)核層,利用Linux的device_attr(),在文件系統(tǒng)中增加設(shè)備屬性。內(nèi)核代碼需要修改的文件為Gianfar_mii.c。

◆定義sysfs_reg_io函數(shù)實(shí)現(xiàn)硬件直接讀寫(xiě),本處文件讀寫(xiě)傳遞參數(shù)為字符串,故需要相應(yīng)轉(zhuǎn)換。

交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò)記錄裝置中的應(yīng)用
交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò)記錄裝置中的應(yīng)用

◆綁定設(shè)備屬性文件reg_io,對(duì)其讀寫(xiě)實(shí)際執(zhí)行的是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í)現(xiàn)設(shè)備屬性文件到系統(tǒng)。

dev_set_drvdata(dev,new_bus);

device_create_file(dev,dev_attr_reg_io);

②在用戶(hù)層需要修改mii_read/mii_write函數(shù)的具體實(shí)現(xiàn),示例代碼采用的是硬件直接訪(fǎng)問(wèn),本處需要使用對(duì)reg_io文件的讀寫(xiě)實(shí)現(xiàn),注意傳入?yún)?shù)需要和sysfs_reg_io函數(shù)的處理一致。具體修改哪個(gè)文件,在不破壞SDK接口的情況下查找相應(yīng)函數(shù)名修改,修改后代碼如下:

交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò)記錄裝置中的應(yīng)用
交換芯片在智能電網(wǎng)錄波及網(wǎng)絡(luò)記錄裝置中的應(yīng)用

③多地址配置。

交換芯片的各個(gè)端口和PHY的配置端口的訪(fǎng)問(wèn)分為兩種模式:?jiǎn)蔚刂纺J胶投嗟刂纺J?。單地址模式還是多地址模式通過(guò)交換芯片的硬件跳線(xiàn)選擇,單地址模式指交換芯片的各個(gè)端口和PHY分別占用MDIO的設(shè)備地址空間,而多地址只占用一個(gè)MDIO設(shè)備的地址空間,這個(gè)設(shè)備地址空間的特殊寄存器實(shí)現(xiàn)各個(gè)端口和PHY的多地址復(fù)用訪(fǎng)問(wèn)。

在實(shí)際使用中,如果交換芯片使用單地址模式,交換芯片占用了所有的MDIO設(shè)備地址空間,和另一個(gè)獨(dú)立的千兆網(wǎng)口的MDIO設(shè)備地址沖突,故本方案采用多地址模式。多地址模式除了需要硬件配置外,還需要在SDK中相應(yīng)配置。

本系統(tǒng)需要宏定義:#ifdef MULTI_ADDR_MODE。有了這個(gè)宏定義,實(shí)際訪(fǎng)問(wèn)交換芯片的函數(shù)為MultiAddrRead/MultiAddrRead,通過(guò)交換芯片的命令寄存器和數(shù)據(jù)寄存器訪(fǎng)問(wèn)。配置efg.mode.baseAddr=0x10為交換芯片地址(和交換芯片地址跳線(xiàn)相關(guān));配置cfg.cpu Port Num=10為交換芯片和CPU相連的端口地址,本例中為10口。

3 CPU和以太網(wǎng)RGMII連接驅(qū)動(dòng)配置

由于CPU是通過(guò)RGMII數(shù)字接口和交換芯片直接相連,中間沒(méi)有PHY,故需要在設(shè)備樹(shù)中直接定義連接配置為固定波特率模式。有PHY的配置,例如phy—handle=phy2>,實(shí)際波特率配置需要配置相應(yīng)PHY的寄存器或者自適應(yīng);固定波特率模式配置,例如fixed—link=1 1 1000 0 0>,表示全雙工1000 Mbps(nopause and no asym_pause)。

4 數(shù)據(jù)匯集以及互相隔離設(shè)計(jì)

智能變電站中,過(guò)程層交換機(jī)為了控制流量,一般采用劃分VLAN的方式隔離應(yīng)用無(wú)關(guān)以太網(wǎng)端口,而不同以太網(wǎng)端口可能都要接入同一個(gè)錄波裝置或網(wǎng)絡(luò)報(bào)文記錄儀設(shè)備。

實(shí)際應(yīng)用中出現(xiàn)過(guò)錄波裝置內(nèi)部不同網(wǎng)口之間有交換功能,導(dǎo)致網(wǎng)絡(luò)回環(huán)、網(wǎng)絡(luò)癱瘓的情況,這就要求裝置的數(shù)據(jù)接入口之間必須要隔離。采用劃分VLAN的方式現(xiàn)場(chǎng)維護(hù)困難,實(shí)際應(yīng)用中采用端口見(jiàn)物理隔離的方法。

實(shí)現(xiàn)方案如下:交換芯片用于數(shù)據(jù)采集的0~7號(hào)端口、8號(hào)端口(實(shí)現(xiàn)1588對(duì)時(shí))、9號(hào)端口(用于和口頭通信)之間互相隔離。0~9號(hào)端口都和10號(hào)端口通信(10號(hào)端口和CPU相連匯集0~7口的數(shù)據(jù))。

通過(guò)配置交換芯片所有端口的0x06控制寄存器可實(shí)現(xiàn)該功能,該寄存器名為端口級(jí)VLAN映射(PORT Based VLAN MAP)。其中的10:0位指示VLANTable,其中每一位對(duì)應(yīng)一個(gè)端口,置1表示該端口輸入的數(shù)據(jù)會(huì)發(fā)到相應(yīng)端口(如5端口的VLANTable=0x003表示5端口的數(shù)據(jù)會(huì)轉(zhuǎn)發(fā)給0端口和1端口)。實(shí)際配置0~9端口讀取寄存器內(nèi)容,和0x400按位“與”之后回寫(xiě)。10端口讀取寄存器內(nèi)容和0x300按位“與”之后回寫(xiě)。

結(jié)語(yǔ)

由于交換芯片造成的延時(shí)具有不確定性,且所有端口數(shù)據(jù)匯集到千兆口由CPU負(fù)責(zé)接收會(huì)造成排隊(duì)現(xiàn)象,本方案不適合對(duì)時(shí)間精度要求較高(μs)的SV報(bào)文記錄,但是由于本方案端口多,帶寬大適合作為GOOSE及MMS報(bào)文的記錄,及時(shí)GOOSE和MMS突發(fā)性報(bào)文較多本方案也能輕松記錄。實(shí)際測(cè)試本方案可記錄600~800 Mbps的流量(視報(bào)文大小不同)。

基于交換芯片的嵌入式智能電網(wǎng)錄波及裝置數(shù)據(jù)采集方案,有效解決了GOOSE及MMS大容量、突發(fā)性報(bào)文記錄的問(wèn)題,性?xún)r(jià)比較高。在實(shí)際應(yīng)用中,由于錄波和網(wǎng)絡(luò)記錄裝置采集端口多,甚至可以減少智能變電站過(guò)程層網(wǎng)絡(luò)交換機(jī)需求。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉