一种iec61850高层协议报文发送的管理方法

文档序号:7745371阅读:180来源:国知局
专利名称:一种iec61850高层协议报文发送的管理方法
技术领域
本发明涉及一种IEC61850高层协议报文发送的管理方法,属 电力系统自动化领域。(二)、背景技术 IEC 61850是智能变电站的系统通信标准。通过将抽象通信 服务映射到具体的协议栈,IEC 61850解决了标准的稳定性与未来网络技术发展之间的矛 盾。目前IEC 61850的很多服务映射到MMS(制造报文规范),国内外绝大部分厂家都是基 于SISC0公司的MMSEASE-LITE软件来实现IEC61850,在嵌入式装置中选用主流的VxWorks 操作系统,其实现方式为TCP/IP+RFC1006+传输层(服务等级0) +会话层+表示层+应用 层。智能变电站强烈依赖于高速、可靠的网络通信,因此网络报文发送管理方式对系统的运 行效率和可靠性起着非常重要的作用。现有技术主要有两类方法(1)、为每一个网络连接建立一个网络守护任务,网络守护任务使用阻塞方式调用 recvO,在套接字上悬挂等待接收数据;在主任务中使用阻塞方式调用sendO来发送网络 数据。这种方法比较简单,但是效率低。一个网络守护任务只能为一个连接接收数据。在 主任务中发送数据时,如果应用层报文较长、较多,主任务会阻塞在sendO中,影响了主任 务后续事件的实时处理。(2)、系统在初始时创建一个网络守护任务,基于select ()调用负责处理所有网 络连接的数据接收,在主任务中使用非阻塞方式调用sendO来发送网络数据。每发送一个 应用数据报文,将其分割成几个带RFC1006报文头的传输层报文,放入套接字的发送报文 链表中,然后从链表头开始依次发送报文。未能完全发送出去的报文继续保存在该套接字 的发送报文链表中,设置标志,由网络守护任务择机进行继续发送。但网络守护任务利用 select ()调用的超时或者其它网络事件,在下次重新选择需要监视的文件描述字时才能判 断此时该套接字是否能重新发送数据。如果在超时等待期间网络连接能够重新发送数据, 则存在一个滞后发送的时间窗,影响了报文的实时发送。智能变电站是一个实时系统,装置生成的大量报文在网络上传输,应尽可能提高 传输效率。现有技术在用户发送数据、将会话层报文分割成传输层报文、以及报文进入发送 链表时均存在报文复制,大大影响了传输效率。(三)、发明内容本发明所要解决的技术问题是,在VxWorks系统下,提供一种 IEC 61850高层协议报文发送的管理方法,当网络资源拥挤报文不能完全发送出去时,采取 一种报文的缓存机制,监视文件描述字,在可以发送报文时及时发送待发送的报文;采取一 种高效的报文缓冲区管理方式,提高传输效率。为了解决上述问题,本发明采用了以下技术方案。一种IEC 61850高层协议报文发送的管理方法,其特征是主任务初始时分配一 个空闲发送报文缓冲区链表,每个发送报文缓冲区的大小比系统配置的会话层协议数据单 元长度多7个字节;每建立一个套接字,就创建一个相应的管道,管道消息结构包括的数据 成员有报文缓冲区起始指针、报文缓冲区长度、报文起始指针、报文实际长度、传输层报文 类型;发送报文时,从空闲发送报文缓冲区链表中分配一个发送报文缓冲区,对于数据报文,利用这个缓冲区从后向前进行报文编码,添加表示层协议控制信息和会话层协议控 制信息;对于连接管理报文,直接在这个缓冲区中生成一个传输层协议数据单元,然后加上 RFC1006报文头;主任务将生成报文的控制信息,包括报文缓冲区起始指针、报文缓冲区长 度、报文起始指针、报文实际长度、传输层报文类型,通过管道机制传递给网络守护任务进 行发送;网络守护任务基于selecto调用,监视一个读文件描述字数组、一个写文件 描述字数组和一个错误文件描述字数组;网络守护任务为每一个套接字设置一个标志 socketFlag,用来表示是等待网络套接字可写,还是等待套接字对应的管道有要发送的报 文;网络守护任务初始时,将套接字对应的管道文件描述字设置在读文件描述字数组中; 当网络守护任务等待的文件描述字就绪时,网络守护任务获得执行时机,检查存放系统返 回值的文件描述字数组,对于每个套接字上的报文发送(1)如果管道上有消息,则表明对应的套接字上有报文要发送,读取管道消息,获 取管道消息所指报文作为当前要发送的网络报文进行发送;(2)如果网络套接字可写,先发送上次没有发送出去的报文;如果上次没有发送 出去的报文本次完全发送出去,并且管道中存在消息,再读取管道中的消息,获取管道消息 所指报文作为当前要发送的网络报文进行发送;发送报文时,对于数据类型的报文,将其按照传输层用户数据长度,添加3个字节 的协议控制信息和4个字节的RFC1006报文头,利用socket接口进行分段发送;对于连接 管理报文,直接利用socket接口进行发送;如果当前需要发送的报文没有完全发送出去,标记套接字的socketFlag为需要 等待网络套接字可写;如果当前需要发送的报文已经完全发送出去,并且管道中没有消息 了,标记套接字的socketFlag为需要等待套接字对应的管道有要发送的报文;根据每个套接字的socketFlag所作标记,如果需要等待套接字对应的管道有要 发送的报文,则将管道文件描述字设置在读文件描述字数组中;如果需要等待网络套接字 可写,则将套接字设置在写文件描述字数组中;按照新设置的文件描述字数组,网络守护任 务进行下一轮文件描述字监视与处理流程。对于数据类型的报文,将其按照传输层用户数据长度TpktUserLen从低地址 开始分成若干段,只有当第n(n >= 1)段报文发送完后,才进行第n+1段的发送;指针 SessionPtr为会话层报文起始地址,第一段的RFC1006报文头起始指针为SessionPtr-7, 第一段的传输层协议控制信息起始指针为SessionPtr-3,第一段的RFC1006报文 头和传输层协议控制信息占用发送报文缓冲区中会话层协议数据单元没有使用的 空间;当第n(n > = 1)段报文发送完后,第n+1段报文的RFC1006报文头起始指针 为SessionPtr+r^TpktUserLen-7,第n+1段报文的传输层协议控制信息起始指针为 SessionPtr+n*TpktUserLen-3,第n+1段的RFC1006报文头和传输层协议控制信息占用了 已发送的第n段报文的缓冲区空间。一个报文完全发送出去后,将报文所在的发送报文缓冲区放入空闲发送报文缓冲 区链表中。本发明的积极效果在于对于一个套接字上的报文发送,网络守护任务要么监视 套接字是否可写,要么监视套接字对应的管道是否有要发送报文的消息,当套接字可写或者管道有要发送报文的消息时,操作系统唤醒网络守护任务及时进行报文发送,消除了具 备发送条件而实际发送滞后的现象,提高了报文发送的实时性。对于数据类型的传输报文, 发送时动态添加RFC1006报文头和传输层协议控制信息,避免了分段发送时的缓冲区复 制,提高了传输效率。

图1是处理一个套接字上的报文发送流程示意图。图2是一个会话层协议数据单元被分割成多个传输段进行发送的示意图。
具体实施方式
下面结合附图和具体实施例进一步说明本发明。主任务主要包括以下几个过程(1)主任务初始时分配一个空闲发送报文缓冲区链表,每个发送报文缓冲区的大 小比系统配置的会话层协议数据单元长度多7个字节;(2)每建立一个套接字,就创建一个相应的管道,管道消息结构包括的数据成员有 报文缓冲区起始指针、报文缓冲区长度、报文起始指针、报文实际长度、传输层报文类型;(3)发送报文时,从空闲发送报文缓冲区链表中分配一个发送报文缓冲区,对于数 据报文,利用这个缓冲区从后向前进行报文编码,添加表示层协议控制信息和会话层协议 控制信息;对于连接管理报文,直接在这个缓冲区中生成一个传输层协议数据单元,然后加 上RFC1006报文头;主任务将生成报文的控制信息,包括报文缓冲区起始指针、报文缓冲区 长度、报文起始指针、报文实际长度、传输层报文类型,通过管道机制传递给网络守护任务 进行发送。网络守护任务基于selectO系统调用,监视一个读文件描述字数组、一个写文 件描述字数组和一个错误文件描述字数组;网络守护任务为每一个套接字设置一个标志 socketFlag,用来表示是等待网络套接字可写,还是等待套接字对应的管道有要发送的报 文;任务初始时,将套接字对应的管道文件描述字设置在读文件描述字数组中,并且不存在 上次没有发送完的报文。当网络守护任务等待的文件描述字就绪时,网络守护任务获得执行时机,检查存 放系统返回值的文件描述字数组,如果某个套接字可写,或者套接字对应的管道上有消息, 则如图1所示,执行以下流程(1)判断当前报文是否发送完;(2)如果当前报文没有发送完,使用sendO,根据当前报文已经发送到的位置,继 续发送当前报文,然后转到过程(5)执行;(3)当前报文已发送完,将报文所在的发送报文缓冲区放入空闲发送报文缓冲区 链表中;使用不等待的select ()判断套接字对应的管道是否有消息;(4)如果管道有消息,读取管道消息,获取管道消息所指报文作为当前要发送的网 络报文,转到过程(1)继续执行;否则标记套接字的socketFlag为需要等待套接字对应的 管道有要发送的报文,结束流程。(5)根据sendO的返回值,更新当前报文已经发送到的位置。如果sendO的返回 值小于希望发送的字节个数,标记套接字的socketFlag为需要等待网络套接字可写,结束 流程;如果sendO的返回值等于希望发送的字节个数,转到过程(1)继续执行。根据每个套接字的socketFlag所作标记,如果需要等待套接字对应的管道有要 发送的报文,则将管道文件描述字设置在读文件描述字数组中;如果需要等待网络套接字可写,则将套接字设置在写文件描述字数组中;按照新设置的文件描述字数组,网络守护任 务进行下一轮文件描述字监视与处理流程。以下是报文发送的具体实现发送报文时,对于数据类型的报文,将其按照传输层用户数据长度,添加3个字节 的协议控制信息和4个字节的RFC1006报文头,利用socket接口进行分段发送;对于连接 管理报文,直接利用socket接口进行发送;如图2所示,对于数据类型的报文,将其按照传输层用户数据长度TpktUserLen从 低地址开始分成若干段,只有当第n(n>= 1)段报文发送完后,才进行第n+1段的发送。指针SessionPtr为会话层报文起始地址,第一段的RFC1006报文头起始指针 为SessionPtr-7,第一段的传输层协议控制信息起始指针为SessionPtr-3,第一段的 RFC1006报文头和传输层协议控制信息占用发送报文缓冲区中会话层协议数据单元没有使 用的空间;当第n(n > = 1)段报文发送完后,第n+1段报文的RFC1006报文头起始指 针为SessionPtr+r^TpktUserLen-7,第n+1段报文的传输层协议控制信息起始指针为 SessionPtr+n*TpktUserLen-3,第n+1段的RFC 1006报文头和传输层协议控制信息占用了 已发送的第n段报文的缓冲区空间。
权利要求
一种IEC 61850高层协议报文发送的管理方法,其特征是主任务初始时分配一个空闲发送报文缓冲区链表,每个发送报文缓冲区的大小比系统配置的会话层协议数据单元长度多7个字节;每建立一个套接字,就创建一个相应的管道,管道消息结构包括的数据成员有报文缓冲区起始指针、报文缓冲区长度、报文起始指针、报文实际长度、传输层报文类型;发送报文时,从空闲发送报文缓冲区链表中分配一个发送报文缓冲区,对于数据报文,利用这个缓冲区从后向前进行报文编码,添加表示层协议控制信息和会话层协议控制信息;对于连接管理报文,直接在这个缓冲区中生成一个传输层协议数据单元,然后加上RFC 1006报文头;主任务将生成报文的控制信息,包括报文缓冲区起始指针、报文缓冲区长度、报文起始指针、报文实际长度、传输层报文类型,通过管道机制传递给网络守护任务进行发送;网络守护任务基于select()系统调用,监视一个读文件描述字数组、一个写文件描述字数组和一个错误文件描述字数组;网络守护任务为每一个套接字设置一个标志socketFlag,用来表示是等待网络套接字可写,还是等待套接字对应的管道有要发送的报文;网络守护任务初始时,将套接字对应的管道文件描述字设置在读文件描述字数组中;当网络守护任务等待的文件描述字就绪时,网络守护任务获得执行时机,检查存放系统返回值的文件描述字数组,对于每个套接字上的报文发送(1)如果管道上有消息,则表明对应的套接字上有报文要发送,读取管道消息,获取管道消息所指报文作为当前要发送的网络报文进行发送;(2)如果网络套接字可写,先发送上次没有发送出去的报文;如果上次没有发送出去的报文本次完全发送出去,并且管道中存在消息,再读取管道中的消息,获取管道消息所指报文作为当前要发送的网络报文进行发送;发送报文时,对于数据类型的报文,将其按照传输层用户数据长度,添加3个字节的协议控制信息和4个字节的RFC1006报文头,利用socket接口进行分段发送;对于连接管理报文,直接利用socket接口进行发送;如果当前需要发送的报文没有完全发送出去,标记套接字的socketFlag为需要等待网络套接字可写;如果当前需要发送的报文已经完全发送出去,并且管道中没有消息了,标记套接字的socketFlag为需要等待套接字对应的管道有要发送的报文;根据每个套接字的socketFlag所作标记,如果需要等待套接字对应的管道有要发送的报文,则将管道文件描述字设置在读文件描述字数组中;如果需要等待网络套接字可写,则将套接字设置在写文件描述字数组中;按照新设置的文件描述字数组,网络守护任务进行下一轮文件描述字监视与处理流程。
2.如权利要求1所述的IEC61850高层协议报文发送的管理方法,其特征是对于数 据类型的报文,将其按照传输层用户数据长度TpktUserLen从低地址开始分成若干段,只 有当第n(n>= 1)段报文发送完后,才进行第n+1段的发送;指针SessionPtr为会话层报 文起始地址,第一段的RFC 1006报文头起始指针为SessionPtr-7,第一段的传输层协议控 制信息起始指针为SessionPtr-3,第一段的RFC1006报文头和传输层协议控制信息占用发 送报文缓冲区中会话层协议数据单元没有使用的空间;当第n(n>= 1)段报文发送完后, 第n+1段报文的RFC1006报文头起始指针为SessionPtr+n*TpktUserLen-7,第n+1段报文的传输层协议控制信息起始指针为SessionPtr+n*TpktUserLen-3,第n+1段的RFC 1006报 文头和传输层协议控制信息占用了已发送的第η段报文的缓冲区空间。
3.如权利要求1或2所述的一种IEC 61850高层协议报文发送的管理方法,其特征 是一个报文完全发送出去后,将报文所在的发送报文缓冲区放入空闲发送报文缓冲区链 表中。
全文摘要
本发明是一种IEC 61850高层协议报文发送的管理方法。发送报文时,从空闲发送报文缓冲区链表中分配一个发送报文缓冲区,对于数据报文,利用这个缓冲区生成一个会话层协议数据单元,发送时动态添加RFC1006报文头和传输层协议控制信息;对于连接管理报文,直接在这个缓冲区中生成一个传输层协议数据单元,然后加上RFC1006报文头;主任务将生成报文的控制信息,通过管道机制传递给网络守护任务进行发送。对于一个套接字上的报文发送,网络守护任务要么监视套接字是否可写,要么监视套接字对应的管道是否有要发送报文的消息。本方法提高了报文发送的实时性,并提高了传输效率。
文档编号H04L12/56GK101827026SQ201010140460
公开日2010年9月8日 申请日期2010年4月1日 优先权日2010年4月1日
发明者唐永建, 岳增辉, 郑永志, 韩明峰 申请人:东方电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1