一种双协议栈双网口mms通信系统及方法

文档序号:8383761阅读:638来源:国知局
一种双协议栈双网口mms通信系统及方法
【技术领域】
[0001]本发明属于嵌入式系统技术领域,涉及一种通信系统,具体涉及一种双协议栈双网口 MMS通信系统及方法。
【背景技术】
[0002]MMS (制造报文规范)协议是智能变电站中IEC61850在站控层的实现协议。SISCO的 MMS-EASE Lite (Embedded App Iicat1nService Flement)是 MMS 的 C 语言编程接口。它是一个经过优化,支持MMS和IEC61850的源代码包,在国内继电保护领域有广泛应用。使用其可以减少开发风险和开发成本,缩短投入市场时间。
[0003]随着国内智能电网的大力推广,现场应用中要求保护装置能支持独立双网口的MMS通信。由于历史原因,我司装置的NetX协议栈仅支持单个物理网口的通信,如何做出更改,使其支持双独立网口的MMS通信,是一个现实而紧迫的问题。
[0004]由于NetX是一种商业协议栈,如要其支持双独立网口的通信,需要额外的付费取得技术支持,迫于成本压力,此种方案暂时搁置。
[0005]另一种直观的想法就是将NetX协议栈更改成为其他支持多个物理网口的协议栈,然后在此协议栈上实现应用的双网口通信。因为装置上所有通信程序都使用的NetX的通信接口,此种方法带来的问题是,一旦新协议栈的通信接口与NetX的通信接口有差异,我们都必须更改所有通信程序代码的通信接口,这将带来很大的工作量,同时使已经运行的通信程序变得不稳定。

【发明内容】

[0006]本发明的目的在于克服上述现有技术的缺点,提供了一种双协议栈双网口丽S通信系统,该系统可以实现双协议栈双网口的通信及方法。
[0007]为达到上述目的,本发明所述的双协议栈双网口丽S通信系统包括第一网口、第二网口、NetX 协议栈、LffIP 协议栈、第一 socket、第二 socket 及 MMS ;
[0008]所述第一网口与NetX协议栈相连接,NetX协议栈通过第一 socket与MMS相连接,第二网口与LWIP协议栈相连接,LffIP协议栈通过第二 socket与MMS相连接。
[0009]所述第一网口与NetX协议栈通过第一驱动相连接;
[0010]所述第二网口与LWIP协议栈通过第二驱动相连接。
[0011]本发明所述的双协议栈双网口 MMS通信方法包括以下步骤:
[0012]丽S报文分别经第一网口及第二网口保存到NetX协议栈及LWIP协议栈中,NetX协议栈中的MMS报文及LWIP协议栈中的MMS报文分别经第一 socket及第二 socket进入到丽S中,丽S对接收的丽S报文添加标记,用于表明丽S报文经第一 socket接收的还是经第二 socket接收的,MMS再对各MMS报文进行响应,然后根据各MMS报文的标记将各MMS报文的响应转发至对应的第一 socket及第二 socket,第一 socket及第二 socket将接收到MMS报文的响应分别转发至NetX协议栈及LWIP协议栈中,NetX协议栈中MMS报文的响应及LWIP协议栈中MMS报文的响应分别经第一驱动及第二驱动转发至第一网口及第二网口中。
[0013]丽S对接收的丽S报文添加标记的具体过程为:
[0014]对原来的MMS报文接收结构体增加LWIP的socket指针,所述LWIP的socket指针的默认值为空,当MMS报文经第一 socket收上来,则不对LWIP的socket指针进行赋值,当MMS报文经第二 socket接收上来,则将接收socket的指针赋给LWIP的socket指针,当该LWIP的socket指针为空,则MMS报文为经第一 socket收上来的数据,LWIP的socket指针不为空,则MMS报文为经第二 S0Cket6收上来的数据。
[0015]本发明具有以下有益效果:
[0016]本发明所述的双协议栈双网口丽S通信系统及方法只需在原有的系统中添加独立的物理网口及LWIP协议栈,在工作时,将第一网口及第二网口接收的丽S报文分别经NetX协议栈及LWIP协议栈转发至丽S中,在丽S对各丽S报文作标记,使各丽S报文与接收上来的路径相对应,然后对各MMS报文进行响应,再根据各MMS报文的标记将各MMS报文的响应经对应的路径转发到第一网口及第二网口中,从而实现双协议栈双网口的通信,不需要对原有的系统进行修改,只需给原有的系统中添加开源的LWIP协议栈,将新网口驱动挂接到LWIP协议栈上,使新网口的物理通信正常,减小系统风险及成本,并且不需要针对LffIP协议栈及NetX协议栈运行两条MMS程序。
【附图说明】
[0017]图1为本发明的结构示意图;
[0018]图2为本发明中实施例一的流程图。
[0019]其中,I为第一驱动、2为第二驱动、3为丽S、4为第一 socket,5为第二网口、6为第二 socket、7为LWIP协议栈、8为NetX协议栈、9为第一网口。
【具体实施方式】
[0020]下面结合附图对本发明做进一步详细描述:
[0021]参考图1,本发明所述的双协议栈双网口丽S通信系统包括第一网口 9、第二网口5、NetX协议栈8、LffIP协议栈7、第一 socket4套接字、第二 socket6及MMS3 ;第一网口 9与NetX协议栈8相连接,NetX协议栈8通过第一 socket4与丽S3相连接,第二网口 5与LffIP协议栈7相连接,LWIP协议栈7通过第二 socket6与MMS3相连接;第一网口 9与NetX协议栈8通过第一驱动I相连接;第二网口 5与LWIP协议栈7通过第二驱动2相连接。
[0022]本发明所述的双协议栈双网口丽S通信方法包括以下步骤:
[0023]丽S报文经第一网口 9及第二网口 5保存到NetX协议栈8及LWIP协议栈7中,NetX协议栈8中的MMS报文及LWIP协议栈7中的MMS报文分别经第一 socket4及第二 socket6进入到丽S3中,丽S3对接收的丽S报文添加标记,用于表明丽S报文经第一 socket4接收的还是经第二 socket6接收的,丽S3再对各丽S报文进行响应,然后根据各丽S报文的标记将各MMS报文的响应转发至对应的第一 socket4及第二 socket6,第一 socket4及第二socket6将接收到MMS报文的响应分别转发至NetX协议栈8及LWIP协议栈7中,NetX协议栈8中丽S报文的响应及LWIP协议栈7中丽S报文的响应分别经第一驱动I及第二驱动2转发至第一网口 9及第二网口 5中。
[0024]丽S3对接收的丽S报文添加标记的具体过程为:对原来的丽S报文接收结构体增加LWIP的socket指针,所述LWIP的socket指针的默认值为空,当MMS报文经第一 socket4收上来,则不对LWIP的socket指针进行赋值,当MMS报文经第二 socket6接收上来,则将接收socket的指针赋给LWIP的socket指针,当该LWIP的socket指针为空,则MMS报文为经第一 socket4收上来的数据,LffIP的socket指针不为空,则MMS报文为经第二 socket6收上来的数据。
[0025]实施例一
[0026]图2描述了丽S3任务中的处理细节,初始化I要创建针对LWIP协议栈7的侦听socket,用来侦听来自新网口的网络连接。在MMS报文接收2中,添加LWIP socket接收函数来接收报文,socket接收函数中,socket采用非阻塞模式,使用select函数去监听socket文件描述符,防止接收进程在这里阻塞住,影响另一个网口的报文接收。报文解析3中,对原来的报文接收结构体增加LWIP的socket指针,默认值为空,凡是NetX socket收上来的报文,则不对此指针进行赋值,如果是LWIPsocket接收上来的报文则将接收socket的指针赋给此变量,此变量若为空,则必是NetX socket收上来的数据,不为空,则是LWIP socket收上来的数据,然后按照OSI协议一层层的解包,剥去报文的表示层及会话层,只留应用层丽S结构,将丽S结构保存到事件队列中,此丽S结构中也会隐含最初的LWIP socket指针,每次从此事件队列中取出一个MMS事件结构进行处理,处理完后,将其相应MMS报文用socket指针直接发送出去,而发送的时候根据此LWIP socket指针是否为空来判断要发送给哪个socket,如果不为空,则直接以此指针为发送参数,便可以发送至LWIP socket,送出报文,如果此指针为空,则直接调用结构中的NetX指针来发送报文,送出报文。
[0027]以一个石化项目为例,客户要求现场装置支持两个独立网口的MMS3通信。因为历史原因,此种类型装置只有一个网口,且协议栈为商业协议栈NetX,不支持双物理网口。
[0028]我们新增加了流行的开源协议栈LWIP,使其只负责新网口的通信,同时我们按照上述方式成功的使一个丽S3任务处理了来自两个协议栈的数据,实现了双协议栈双网口丽S3通信。
【主权项】
1.一种双协议栈双网口 MMS通信系统,其特征在于,包括第一网口(9)、第二网口(5)、NetX 协议栈(8)、LffIP 协议栈(7)、第一 socket (4)、第二 socket (6)及 MMS (3); 所述第一网口(9)与NetX协议栈(8)相连接,NetX协议栈(8)通过第一 socket (4)与丽S(3)相连接,第二网口(5)与LWIP协议栈(7)相连接,LWIP协议栈(7)通过第二socket (6)与 MMS (3)相连接。
2.根据权利要求1所述的双协议栈双网口MMS通信系统,其特征在于, 所述第一网口(9)与NetX协议栈(8)通过第一驱动(I)相连接; 所述第二网口(5)与LWIP协议栈(7)通过第二驱动(2)相连接。
3.一种双协议栈双网口 MMS通信方法,其特征在于,基于权利要求2所述的双协议栈双网口丽S通信系统,包括以下步骤: 丽S报文分别经第一网口(9)及第二网口(5)保存到NetX协议栈⑶及LWIP协议栈(7)中,NetX协议栈⑶中的丽S报文及LWIP协议栈(7)中的丽S报文分别经第一socket (4)及第二 socket(6)进入到MMS(3)中,MMS (3)对接收的MMS报文添加标记,用于表明丽S报文经第一 socket (4)接收的还是经第二 socket (6)接收的,丽S(3)再对各丽S报文进行响应,然后根据各MMS报文的标记将各MMS报文的响应转发至第一 socket (4)及第二 socket (6),第一 socket (4)及第二 socket (6)将接收到MMS报文的响应分别转发至NetX协议栈(8)及LWIP协议栈(7)中,NetX协议栈(8)中MMS报文的响应及LWIP协议栈(7)中MMS报文的响应分别经第一驱动(I)及第二驱动(2)转发至第一网口(9)及第二网口(5)中。
4.根据权利要求3所述的双协议栈双网口MMS通信方法,其特征在于,MMS (3)对接收的MMS报文添加标记的具体过程为: 对原来的MMS报文接收结构体增加LWIP的socket指针,所述LWIP的socket指针的默认值为空,当MMS报文经第一 socket (4)收上来,则不对LWIP的socket指针进行赋值,当MMS报文经第二 socket (6)接收上来,则将接收socket的指针赋给LWIP的socket指针,当该LWIP的socket指针为空,则MMS报文为经第一 socket (4)收上来的数据,LWIP的socket指针不为空,则MMS报文为经第二 socket (6)收上来的数据。
【专利摘要】本发明公开了一种双协议栈双网口MMS通信系统及方法,包括第一网口、第二网口、NetX协议栈、LWIP协议栈、第一socket、第二socket及MMS;所述第一网口与NetX协议栈相连接,NetX协议栈通过第一socket与MMS相连接,第二网口与LWIP协议栈相连接,LWIP协议栈通过第二socket与MMS相连接。本发明可以实现双协议栈双网口的通信。
【IPC分类】H04L29-10, H04L29-06
【公开号】CN104702614
【申请号】CN201510122244
【发明人】马少帅, 尚江龙, 郭守刚, 葛阳, 单丁, 兰靖
【申请人】西电通用电气自动化有限公司
【公开日】2015年6月10日
【申请日】2015年3月19日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1