DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1439|回复: 0
打印 上一主题 下一主题

[待整理] 交换芯片在智能电网录波及网络记录装置中的应用

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 23:24:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
智能变电站改变了数据采集的方式,一次设备集成的采集器负责数据采样,然后通过光以太网将采样数据以网络报文的形式发送给二次设备。介绍采用以太网交换芯片扩展网络接口在录波和网络记录装置数据采集中的应用研究,介绍实践中遇到的问题及解决方法,并分析存在的问题和其适用的范围。
       
        引言
       
        智能变电站改变了数据采集的方式,一次设备集成的采集器负责数据采样,然后通过光以太网将采样数据以网络报文的形式发送给二次设备。二次设备需要多个网口接收采样数据报文,尤其是集中式录波装置和网络记录装置一般需要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调试口用于硬件调试;
       
        ⑦串口控制台,用于程序及驱动调试;
       
        ⑧独立的千兆以太网口负责和后台通信。
       
       
        图1 系统框图
       
        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,
       
        ②在用户层需要修改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=,实际波特率配置需要配置相应PHY的寄存器或者自适应;固定波特率模式配置,例如fixed—link=,表示全双工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大容量、突发性报文记录的问题,性价比较高。在实际应用中,由于录波和网络记录装置采集端口多,甚至可以减少智能变电站过程层网络交换机需求。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-16 14:34 , 耗时 0.108547 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表