交换芯片在智能电网录波及网络记录装置中的应用
扫描二维码
随时随地手机看文章
摘要:智能变电站改变了数据采集的方式,一次设备集成的采集器负责数据采样,然后通过光以太网将采样数据以网络报文的形式发送给二次设备。介绍采用以太网交换芯片扩展网络接口在录波和网络记录装置数据采集中的应用研究,介绍实践中遇到的问题及解决方法,并分析存在的问题和其适用的范围。
引言
智能变电站改变了数据采集的方式,一次设备集成的采集器负责数据采样,然后通过光以太网将采样数据以网络报文的形式发送给二次设备。二次设备需要多个网口接收采样数据报文,尤其是集中式录波装置和网络记录装置一般需要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大容量、突发性报文记录的问题,性价比较高。在实际应用中,由于录波和网络记录装置采集端口多,甚至可以减少智能变电站过程层网络交换机需求。