IEC 61850-9-2数据收发测试的探索

2011-04-12 08:18:18王瑞雪王开宇李忠安
电力工程技术 2011年3期
关键词:缓冲区队列报文

王瑞雪,王开宇,李忠安

(1.南瑞继保电气有限公司,江苏南京211102;2.辽宁省电力有限公司,辽宁沈阳110006)

数字化变电站工程中,变电站间隔设备与过程层采集设备之间以网络传输方式取代并行电缆连接的SMV通信受到了广泛关注,SMV通信主要有IEC 61850-9-1和IEC 61850-9-2 2种格式。文献[1]和文献[2]以连接电子式电流互感器合并单元MU装置为例说明了IEC 61850-9-2采样值的建模、发送和接收过程。文献[3]说明IEC 61850-9-2比IEC 61850-9-1更灵活、完善,除了支持直接映射到数据链路层的SendSMVMessage服务,还支持直接MMS映射服务。文献[4]提到了自主开发的SMV报文测试与分析软件。文献[5]说明OMICRON测试仪器可以配置IEC 61850-9-2模块发出IEC 61850-9-2报文用于测试数字化保护装置,文献[6]和文献[7]说明可以使用WINPCAP软件包使计算机Windows系统直接发出GOOSE报文用于数字化保护设备测试。目前还未见专门基于Windows平台通过网卡介质直接收发的IEC61850-9-2数据模拟测试收发软件的报道。

文中主要使用WinPcap4.0.2版本软件开发包设计了IEC 61850-9-2仿真收发测试软件。设计了5个模块:MAC嗅探模块、CID文件读取模块、SNTP对时模块、IEC 61850-9-2报文发送模块、IEC 61850-9-2报文接受模块。该仿真测试软件在计算机Windows环境下网卡介质上能够直接发送和接受符合数字化变电站装置要求的IEC 61850-9-2报文,从而方便了数字化变电站装置测试人员的相关测试工作。

1 WinPcap和IEC 61850-9-2简介

WinPcap由Packet.dll、函数库Libpcap和Wpcap.dll 3个部分组成软件开发包,可以在Windows操作平台上实现对底层网络数据包的截取过滤[7]。其主要执行函数如表1所示。

表1 WinPcap函数

IEC 61850-9-2实现了过程层到间隔层采样值的数字化传输,可以灵活定义数据集,读写控制块等,对数据传输进行VLAN和优先级设置[4]。其结构如图1所示。

2 软件结构和流程

此仿真测试软件首先使用Microsoft xml CORE SERVICES 3.0解析装置配置文本CID文件,把得出IEC 61850-9-2的ASDU配置参数再配置为WinPcap可发送的sendqueue数据,使用IPHLPAPI.LIB来获得网络内设备的MAC信息、IP信息、name信息。用pcap_open打开网络适配器,pcap_sendqueue_transmit发送和pcap_next_ex接受,最后用pcap_close关闭网络适配器。此软件使用SNTP对时。其程序流程如图2所示。

3 SNTP对时

图2 软件程序流程

在设置时区参数、客户端IP参数和服务器IP参数后,接受SNTP对时服务器的2种对时方式。(1)主动查询点对点;(2)广播对时。保证IEC 61850-9-2数据报文发送和接受时间的一致性。

4 pcap_sendqueue_transmit函数的作用

WinPcap的发送函数有pcap_sendpacket和pcap_sendqueue_transmit,分别为发送单个数据包和发送队列[7]。pcap_sendpacket函数需要的参数是1个装有要发送数据的缓冲区、发送的长度和1个适配器。缓冲区中的数据将不被WinPcap内核缓冲协议处理,只是作为最原始的数据流被发送,发送时间随机,不能固定。而pcap_sendqueue_transmit函数提供同步时间最优机制来发送1组队列数据包,pcap_sendqueue_alloc函数用来创建1个队列,pcap_sendqueue_queue函数将带有时间戳和长度的pcap_pkthdr结构附加在队列数据包上,然后调用pcap_sendqueue_transmit函数来发送队列数据包,该函数的第3个参数如果非0则表示发送将是同步的,这样能够使发送时间精确到微秒,但是将占用很大的CPU资源,因为WinPcap的数据是在内核级上被缓冲,最后使用pcap_sendqueue_destroy函数来释放掉所有的队列资源。

对于数字化变电站设备来说,IEC 61850-9-2报文在1 s内要被发送上千次,所以需将发送IEC 61850-9-2报文的时间精确到微秒级别,这就需要使用pcap_sendqueue_transmit函数。本文实验联调的数字化变电站设备1 s需要接受4 000次IEC 61850-9-2报文,并且根据ASDU中数据变化计算幅值和角度。

5 微秒定时器的作用

此软件编译环境是Windows下的Visual C++编译环境,Visual C++的定时器极限只能到达1 ms。本文对比使用了2种微秒定时器:rdtsc内嵌机器码微秒定时器和CPU时钟频率微秒定时器。

rdtsc内嵌机器码微秒定时器使用2次getcyclecount函数返回CPU时钟周期数值差来测知时间,和CPU主频速率直接对应,1个计数相当于1/s(CPU主频Hz数),缺点是数据抖动不稳定。

CPU时钟频率微秒定时器首先调用QueryPerformanceFrequency函数取得高精度运行计数器的频率f,单位是每秒多少次,在需要定时的代码的两端分别调用QueryPerformanceCounter函数以取得高精度运行计数器的数值n1、n2,两次数值的差值通过f换算成时间间隔t=(n2-n1)/f,当t大于或等于定时时间长度时启动定时器。

本文使用毫秒定时器内嵌套微秒定时器和pcap_next_ex函数来接受IEC 61850-9-2报文,速度较快,接受不丢包。

6 与装置联调

此软件与PCS9705B装置进行IEC 61850-9-2数据收发联调,硬件设备连接如图3所示。

图3 硬件设备连接

设置完电压一次值、电压二次值和UA,UB,UC之间相角后,计算机发送4组IEC 61850-9-2电压数据 (ua1,ub1,uc1;ua2,ub2,uc2;ua3,ub3,uc3;ua4,ub4,uc4), 第 1组联调电压数据的SMV参数示意如下。

4组电压数据经过以太网-光纤转换器到达PCS9705B装置的光纤数据接入插件,4组IEC 61850-9-2数据可分别持续发送1 min,装置接受效果较好。测试人员进行分析,第1组联调电压数据显示结果如下:UA=57.7V,UB=57.7V,UC=57.7V,UAB=100.0V,UBC=100.0V,UCA=100.0V。

7 结束语

本文主要设计了基于WinPcap4.0.2版软件包、在计算机网卡介质上直接收发的IEC 61850-9-2数据收发仿真测试软件,可以用来测试数字化变电站设备的SMV数据接受。

此软件受到pcap_sendqueue_transmit函数建立数据缓冲区大小的制约,需要改进以下几点。(1)由于IEC 61850-9-2报文发送点数太多,需要的数据缓冲区太大,如果想持续发送,必须不断地建立和释放SMV数据缓冲区,在建立和释放的时间片段内如何保证发送数据时间的连贯性是一个问题,需要改进。(2)接受的SMV数据合成波形COMTRADE格式文件用于故障分析。(3)SNTP对时精度不够,需要改进对时方式。

[1]万 博,苏 瑞.遵循IEC 61850-9-2实现变电站采样值传输[J].电网技术,2009,33(19):199-203.

[2]赵应兵,周水斌,马朝阳,等.基于IEC 61850-9-2的电子式互感器合并单元的研制[J].电力系统保护与控制,2010,38(6):104-110.

[3]郑新才,施鲁宁,杨 光,等.IEC 61850标准下采样值传输规范9-1、9-2的对比和分析[J].电力系统保护与控制,2008,36(18):47-50.

[4]莫 峻,谭建成.基于IEC 61850-9-2的合并单元研究[J].现代电力,2009,26(4):10-14.

[5]何 刚,胡 宝,陈强林,等.OMICRON测试仪在数字化保护装置测试中的应用[J].电力系统保护与控制,2010,38(12):132-135.

[6]范建忠,马千里.基于WINPCAP的GOOSE报文捕获分析工具开发[J].电力系统自动化,2007,31(23):52-56.

[7]循序渐进学习使用WINPCAP[EB/OL].http://www.onlyblog.com/blog/saobaolpsj/archives/2007/5404.html.

猜你喜欢
缓冲区队列报文
嵌入式系统环形缓冲区快速读写方法的设计与实现
基于J1939 协议多包报文的时序研究及应用
汽车电器(2022年9期)2022-11-07 02:16:24
CTCS-2级报文数据管理需求分析和实现
队列里的小秘密
基于多队列切换的SDN拥塞控制*
软件(2020年3期)2020-04-20 00:58:44
浅析反驳类报文要点
中国外汇(2019年11期)2019-08-27 02:06:30
在队列里
丰田加速驶入自动驾驶队列
ATS与列车通信报文分析
关键链技术缓冲区的确定方法研究