工业控制环网链路中断快速获取链路节点数据的方法转让专利

申请号 : CN202211463457.7

文献号 : CN115514593B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘星宇李绍勇杨汶佼张兴明

申请人 : 之江实验室

摘要 :

本发明公开了一种工业控制环网链路中断快速获取链路节点数据的方法,涉及工业控制领域,其目的是提供一种在工业控制环网中链路发生中断情况下,主站设备能够快速获取断路后的链路拓扑结构,并快速的获取链路上节点从设备数据的方法,该方法能够最大化的利用网络协议的数据承载量来获取节点数据,进而保证工业控制环网系统在链路发生中断后的工业控制系统网络的实时性。

权利要求 :

1.一种工业控制环网链路中断快速获取链路节点数据的方法,其特征在于:包括以下步骤:

S1:主站设备获取节点从设备数据,包括正常数据和链路故障报文;

S2:当主站设备两端的网络接口收到链路故障报文后转入链路断路工作模式,在链路断路工作模式下,主站设备中断正在进行的工作进程,并根据本地两个网路端口的通断状态来决定向哪个网络端口发送报文;

S3:节点从设备收到链路位置获取报文,对链路位置获取报文进行处理;

S4:主站设备的一个网络端口收到链路位置获取报文后,经过解析链路位置获取报文后得到该网络端口对应的链路分支上的节点从设备数量以及链路上每个节点从设备的IP地址和对应的节点从设备链路位置序号,并形成节点从设备IP地址和节点从设备链路位置序号映射关系表;

S5:当主站设备收到链路位置获取报文并解析完成之后,主站设备向断路链路发送节点数据获取报文;

S6:节点从设备收到节点数据获取报文后,对节点数据获取报文进行处理;

S7:主站设备接收节点从设备返回的节点数据获取报文后,对节点数据获取报文进行处理;

所述步骤S3中,节点从设备收到链路位置获取报文后对其进行处理,包括以下子步骤:

S3.1:判断该链路位置获取报文的目的地址是否为主站设备IP地址,如果是,则将该链路位置获取报文不做任何处理直接从另一个网络端口发送出去;

S3.2:如果该链路位置获取报文为广播报文,则对该链路位置获取报文进行解析得到主站设备IP地址并将其保存在本地,同时根据报文中的链路位置序号做自加1操作后保存为本地节点从设备链路位置序号;

S3.3:节点从设备在链路位置获取报文末尾添加的本地IP地址和本地节点从设备链路位置序号,组成新的链路位置获取报文;

S3.4:判断本地节点从设备是否为发生链路断路的端点设备,如果是,则将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去;如果不是,则将该新的链路位置获取报文从另一个网络端口发送出去,还是广播报文;

所述步骤S6中,节点从设备对节点数据获取报文进行处理,包括如下子步骤:

S6.1:判断该节点数据获取报文的目的地址是否为主站设备IP地址,如果是,则将该节点数据获取报文直接从另一个端口发送出去;

S6.2:如果该节点数据获取报文为广播报文,解析节点数据获取报文获得节点数据获取报文长度Len0和起始节点从设备序号s_site;

S6.3:根据节点数据获取报文长度Len0加上本地需要上送的数据长度Len1判断是否小于网络协议承载的最大数据长度p;

S6.4:如果Len0 + Len1 <= p,则判断起始节点从设备序号s_site是否小于等于本地节点从设备的链路位置序号x,如果s_site <= x,则在收到的节点数据获取报文末尾添加本地节点从设备IP地址和本地需要上送的数据作为新的节点数据获取报文,再根据本地节点从设备是否为发生链路断路的端点设备判断将新的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将新的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,如果不是发生链路断路的端点设备,则将新的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变;如果s_site > x,则将收到的节点数据获取报文直接从另一个网络端口发送出去;

S6.5:如果Len0 + Len1 > p,则根据本地节点从设备是否为发生链路断路的端点设备判断将收到的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将收到的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,反之,则将收到的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变;

所述步骤S7中,主站设备对收到的节点数据获取报文进行处理包括以下子步骤:

S7.1:解析节点数据获取报文后得到该节点数据获取报文中各个节点从设备的上送数据,并获得该节点数据获取报文中最后一个节点从设备的IP地址,并根据步骤S4获得的节点从设备的IP地址和链路位置序号映射关系表,得到该节点数据获取报文中最后一个节点从设备的IP地址对应的链路节点序号y;

S7.2:判断该节点数据获取报文中最后一个节点从设备链路节点序号y是否小于链路分支上总的节点从设备数m;

S7.3:如果y < m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为y+1, 该报文为广播报文;

S7.4:如果y = m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为1, 该报文为广播报文。

2.根据权利要求1所述的一种工业控制环网链路中断快速获取链路节点数据的方法,其特征在于,所述步骤S1中,当环网所有链路处于环路连通状态时,主站设备通过环路获取各个节点从设备数据;当环网链路中某两个节点从设备之间以太网链路故障或者某个节点从设备故障时,发生故障的链路两侧的节点从设备分别向主站设备发送链路故障报文。

3.根据权利要求1所述的一种工业控制环网链路中断快速获取链路节点数据的方法,其特征在于,所述步骤S2中,主站设备首先判断本地两个网路端口的链路是否有一个处于断路状态,如果有一个网络端口处于链路断路状态,则主站设备只向另一个网络端口发送链路位置获取报文;如果两个网络端口都没有处于链路断路状态,则主站设备分别从两端的网络端口向断路链路发送链路位置获取报文,该链路位置获取报文是包含目的IP地址的广播报文,其中含有报文命令、主站设备IP地址、主站设备链路位置序号。

4.根据权利要求1所述的一种工业控制环网链路中断快速获取链路节点数据的方法,其特征在于,所述步骤S3.4中发生链路断路的端点节点从设备在接收到链路位置获取报文后,处理完报文后将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去。

5.根据权利要求1所述的一种工业控制环网链路中断快速获取链路节点数据的方法,其特征在于,所述步骤S5中,当主站设备的两个网络端口都收到链路位置获取报文时,主站设备分别从两端的网络端口向断路链路发送节点数据获取报文;当主站设备的两个网路端口有一个处于链路断路状态时,主站设备只向另一个网络端口发送节点数据获取报文;所述节点数据获取报文为广播报文,包含报文命令以及需要获取数据的起始节点从设备序号s_site,其中起始节点从设备序号s_site设置为1。

6.一种工业控制环网链路中断快速获取链路节点数据的系统,其特征在于,用于权利要求1‑5任一项所述的工业控制环网链路中断快速获取链路节点数据的方法,包括一个主站设备和若干个节点从设备,主站设备和节点从设备之间以及各节点从设备之间通过以太网络相连,形成一个环形网络。

7.根据权利要求6所述的一种工业控制环网链路中断快速获取链路节点数据的系统,其特征在于:所述主站设备具有两个网路端口。

说明书 :

工业控制环网链路中断快速获取链路节点数据的方法

技术领域

[0001] 本发明涉及工业控制领域,尤其涉及一种工业控制环网链路中断快速获取链路节点数据的方法。

背景技术

[0002] 随着工业控制系统对工业控制网络的可靠性和实时性的要求越来越高,工业控制网多采用环网组网的方式以提高网络的可靠性和实时性,但是当工业控制环网链路中发生多点中断时,工业控制系统中的主机设备往往需要很长时间去重新获取断网后的网络拓扑结构,增加了网络的收敛时间,同时现有工业控制环网系统在链路发生中断后,主机设备多采用点对点的方式获取链路节点设备的数据,随着网络上节点的增加,每个链路节点设备需要上传的数据量有大有小,主机设备采用点对点的方式获取数据严重降低了采集数据的效率,同时这种点对点的方式并不能最大化的利用网络协议的数据承载量,进一步降低了工业控制系统网络的实时性。

发明内容

[0003] 本发明的目的在于提供一种工业控制环网链路中断快速获取链路节点数据的方法,以克服现有技术的不足。
[0004] 为实现上述目的,本发明提供如下技术方案:
[0005] 本发明所述的一种工业控制环网链路中断快速获取链路节点数据的方法,所述工业控制环网包括一个主站设备和若干个节点从设备,主站设备和节点从设备之间以及各节点从设备之间通过以太网络相连,形成一个环形网络;所述方法包括以下步骤:
[0006] S1:主站设备获取节点从设备数据,包括正常数据和链路故障报文;
[0007] S2:当主站设备两端的网络接口收到链路故障报文后转入链路断路工作模式,在链路断路工作模式下,主站设备中断正在进行的工作进程,并根据本地两个网路端口的通断状态来决定向哪个网络端口发送报文;
[0008] S3:节点从设备收到链路位置获取报文,对链路位置获取报文进行处理;
[0009] S4:主站设备的一个网络端口收到链路位置获取报文后,经过解析链路位置获取报文后得到该网络端口对应的链路分支上的节点从设备数量以及链路上每个节点从设备的IP地址和对应的节点从设备链路位置序号,并形成节点从设备IP地址和节点从设备链路位置序号映射关系表;
[0010] S5:当主站设备收到链路位置获取报文并解析完成之后,主站设备向断路链路发送节点数据获取报文;
[0011] S6:节点从设备收到节点数据获取报文后,对节点数据获取报文进行处理;
[0012] S7:主站设备接收节点从设备返回的节点数据获取报文后,对节点数据获取报文进行处理。
[0013] 作为优选,所述步骤S1中,当环网所有链路处于环路连通状态时,主站设备通过环路获取各个节点从设备数据;当环网链路中某两个节点从设备之间以太网链路故障或者某个节点从设备故障时,发生故障的链路两侧的节点从设备分别向主站设备发送链路故障报文。
[0014] 作为优选,所述步骤S2中,主站设备首先判断本地两个网路端口的链路是否有一个处于断路状态,如果有一个网络端口处于链路断路状态,则主站设备只向另一个网络端口发送链路位置获取报文;如果两个网络端口都没有处于链路断路状态,则主站设备分别从两端的网络端口向断路链路发送链路位置获取报文,该链路位置获取报文是包含目的IP地址的广播报文,其中含有报文命令、主站设备IP地址、主站设备链路位置序号。
[0015] 作为优选,所述步骤S3中,节点从设备收到链路位置获取报文后对其进行处理,包括以下子步骤:
[0016] S3.1:判断该链路位置获取报文的目的地址是否为主站设备IP地址,如果是,则将该链路位置获取报文不做任何处理直接从另一个网络端口发送出去;
[0017] S3.2:如果该链路位置获取报文为广播报文,则对该链路位置获取报文进行解析得到主站设备IP地址并将其保存在本地,同时根据主站设备链路位置序号做自加1操作后保存为本地节点从设备链路位置序号;
[0018] S3.3:节点从设备在接收到的链路位置获取报文末尾添加的本地IP地址和本地节点从设备链路位置序号,组成新的链路位置获取报文;
[0019] S3.4:判断本地节点从设备是否为发生链路断路的端点设备,如果是,则将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去;如果不是,则将该新的链路位置获取报文从另一个网络端口发送出去,还是广播报文。
[0020] 作为优选,所述步骤S3.4中发生链路断路的端点节点从设备在接收到链路位置获取报文后,处理完报文后将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去。
[0021] 作为优选,所述步骤S5中,当主站设备的两个网络端口都收到链路位置获取报文时,主站设备分别从两端的网络端口向断路链路发送节点数据获取报文;当主站设备的两个网路端口有一个处于链路断路状态时,主站设备只向另一个网络端口发送节点数据获取报文;所述节点数据获取报文为广播报文,包含报文命令以及需要获取数据的起始节点从设备序号s_site,其中起始节点从设备序号s_site设置为1。
[0022] 作为优选,所述步骤S6中,节点从设备对节点数据获取报文进行处理,包括如下子步骤:
[0023] S6.1:判断该节点数据获取报文的目的地址是否为主站设备IP地址,如果是,则将该节点数据获取报文直接从另一个端口发送出去;
[0024] S6.2:如果该节点数据获取报文为广播报文,解析节点数据获取报文获得节点数据获取报文长度Len0和起始节点从设备序号s_site;
[0025] S6.3:根据节点数据获取报文长度Len0加上本地需要上送的数据长度Len1判断是否小于网络协议承载的最大数据长度p;
[0026] S6.4:如果Len0 + Len1 <= p,则判断起始节点从设备序号s_site是否小于等于本地节点从设备的链路位置序号x,如果s_site <= x,则在收到的节点数据获取报文末尾添加本地节点从设备IP地址和本地需要上送的数据作为新的节点数据获取报文,再根据本地节点从设备是否为发生链路断路的端点设备判断将新的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将新的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,如果不是发生链路断路的端点设备,则将新的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变;如果s_site > x,则将收到的节点数据获取报文直接从另一个网络端口发送出去;
[0027] S6.5:如果Len0 + Len1 > p,则根据本地节点从设备是否为发生链路断路的端点设备判断将收到的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将收到的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,反之,则将收到的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变。
[0028] 作为优选,所述步骤S7中,主站设备对收到的节点数据获取报文进行处理包括以下子步骤:
[0029] S7.1:解析节点数据获取报文后得到该节点数据获取报文中各个节点从设备的上送数据,并获得该节点数据获取报文中最后一个节点从设备的IP地址,并根据步骤S4获得的节点从设备的IP地址和链路位置序号映射关系表,得到该节点数据获取报文中最后一个节点从设备的IP地址对应的链路节点序号y;
[0030] S7.2:判断该节点数据获取报文中最后一个节点从设备链路节点序号y是否小于链路分支上总的节点从设备数m;
[0031] S7.3:如果y < m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为y+1, 该报文为广播报文;
[0032] S7.4:如果y = m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为1, 该报文为广播报文。
[0033] 本发明的有益效果:本发明的目的是提供一种工业控制环网链路中断快速获取链路节点数据的方法,该方法可使在工业控制环网链路发生中断时,主机设备能够快速的获取链路中断后的网络拓扑并进行网络重组,同时能够根据各节点从设备的需要上传数据量大小,最大限度的利用网络协议的容量来获取节点从设备数据,进而能够快速的获取各个节点从设备的数据,从而保证工业控制系统网络的实时性和可靠性。

附图说明

[0034] 图1是本发明中工业控制环网状态向链路中断状态变化前后数据流变化示意图;
[0035] 图2是本发明中主站设备对报文处理的控制流程图;
[0036] 图3是本发明中节点从设备处理链路位置获取报文流程图;
[0037] 图4是本发明中节点从设备处理节点数据获取报文流程图。

具体实施方式

[0038] 为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0039] 参阅图1,本发明公开了一种工业控制环网链路中断快速获取链路节点数据的方法,所述工业控制环网包括一个主站设备和若干个节点从设备,主站设备和节点从设备之间以及各节点从设备之间通过以太网络相连,形成一个环形网络;所述方法包括以下步骤:
[0040] S1:主站设备根据节点从设备报送上来的链路状态信息实时判断环网链路是否处于中断状态;在环网所有链路处于环路连通状态时,主站设备通过环路获取各个节点从设备数据。当环网链路中某两个节点从设备之间以太网链路故障或者某个节点从设备故障时,发生故障的链路两侧节点从设备分别向主站设备发送链路故障报文;
[0041] S2:主站设备两端的网络接口收到链路故障报文后转入链路断路工作模式,在链路断路工作模式下,主站设备中断正在进行的工作进程。主站设备首先判断本地两个网路端口的链路是否有一个处于断路状态。如果有一个网络端口处于链路断路状态,则主站设备只向另一个网络端口发送链路位置获取报文。如果两个网络端口都没有处于链路断路状态,则主站设备分别从两端的网络端口向断路链路发送链路位置获取报文,该链路位置获取报文的目的IP地址为255.255.255.255的广播报文,报文内容中主要包含报文命令,主站设备的IP地址和链路位置序号(设置为0);
[0042] S3:节点从设备收到链路位置获取报文,对链路位置获取报文进行处理,包括如下子步骤:
[0043] S3.1:判断该链路位置获取报文的目的地址是否为主站设备IP地址,如果是,则将该链路位置获取报文不做任何处理直接从另一个网络端口发送出去;
[0044] S3.2:如果该链路位置获取报文为广播报文,则对该链路位置获取报文进行解析得到链路位置获取报文中的主站设备IP地址并保存为本地主站设备IP地址,同时根据链路位置序号k(k大于等于0)做自加1操作后保存为本地节点从设备链路位置序号k+1;
[0045] S3.3:在接收到的链路位置获取报文末尾添加本地的IP地址和链路位置序号k+1,组成新的链路位置获取报文;
[0046] S3.4:判断本地节点从设备是否为发生链路断路的端点设备,如果是,则将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去;反之,则将该新的链路位置获取报文从另一个网络端口发送出去,还是广播报文;
[0047] S4:主站设备的一个网络端口收到链路位置获取报文后,经过解析链路位置获取报文后得到该网络端口对应的链路分支上总共有m(m大于0)个节点从设备以及链路上每个节点从设备的IP地址和对应的链路位置序号,并形成节点从设备的IP地址和链路位置序号映射关系表。
[0048] S5:当主站设备的两个网络端口都收到链路位置获取报文并解析完成之后,主站设备分别从两端的网络端口向断路链路发送节点数据获取报文(如果主站设备的两个网路端口有一个网络端口处于链路断路状态,则主站设备只向另一个网络端口发送节点数据获取报文),该报文内容中主要包含报文命令以及需要获取数据的起始节点从设备序号s_site(s_site大于等于1),第一包节点数据获取报文的s_site设置为1,该节点数据获取报文为广播报文。
[0049] S6:节点从设备收到节点数据获取报文后,对节点数据获取报文进行处理,包括如下子步骤:
[0050] S6.1:判断该节点数据获取报文的目的地址是否为主站设备IP地址,如果是,则将该报文直接从另一个端口发送出去;
[0051] S6.2:如果该节点数据获取报文为广播报文,解析报文获得节点数据获取报文长度Len0(单位:字节)和起始节点从设备序号s_site;
[0052] S6.3:根据该报文的长度Len0(单位:字节)加上本地需要上送的数据长度Len1(单位:字节)判断是否小于网络协议承载的最大数据长度p(如UDP协议数据区最大长度为1472个字节);
[0053] S6.4:如果Len0 + Len1 <= p,则判断起始节点从设备序号s_site是否小于等于本地节点从设备的链路位置序号x(x为本地节点从设备链路位置序号),如果s_site <= x,则在收到的节点数据获取报文末尾添加本地节点从设备IP地址和本地需要上送的数据作为新的节点数据获取报文,再根据本地节点从设备是否为发生链路断路的端点设备判断将新的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将新的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,如果不是发生链路断路的端点设备,则将新的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变;如果s_site > x,则将收到的节点数据获取报文直接从另一个网络端口发送出去;
[0054] S6.5:如果Len0 + Len1 > p,根据本地节点从设备是否为发生链路断路的端点设备判断将收到的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将收到的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,反之,则将收到的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变;
[0055] S7:主站设备在收到一个网络端口收到节点数据获取报文后,对节点数据获取报文进行处理,包括如下子步骤:
[0056] S7.1:解析节点数据获取报文后得到该节点数据获取报文中各个节点从设备的上送数据,并获得该节点数据获取报文中最后一个节点从设备的IP地址,并根据步骤24获得的节点从设备的IP地址和链路位置序号映射关系表,得到该节点数据获取报文中最后一个节点从设备的IP地址对应的链路节点序号y(y<=m);
[0057] S7.2:判断该节点数据获取报文中最后一个节点从设备链路节点序号y是否小于链路分支上总的节点从设备数m;
[0058] S7.3:如果y < m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为y+1, 该节点数据获取报文为广播报文;
[0059] S7.4:如果y = m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为1, 该节点数据获取报文为广播报文。
[0060] 如图2所示,主站设备控制处理流程,包括:
[0061] 主站设备根据节点从设备报送上来的链路状态信息实时判断环网链路是否处于中断状态;在环网所有链路处于环路连通状态时,主站设备通过环路获取各个节点从设备数据。当环网链路中某两个节点从设备之间以太网链路故障或者某个节点从设备故障时,发生故障的链路两侧节点从设备分别向主站设备发送链路故障报文。主站设备两端的网络接口收到链路故障报文后转入链路断路工作模式,在链路断路工作模式下,主站设备中断正在进行的工作进程。主站设备首先判断本地两个网路端口的链路是否有一个处于断路状态。如果有一个网络端口处于链路断路状态,则主站设备只向另一个网络端口发送链路位置获取报文。如果两个网络端口都没有处于链路断路状态,则主站设备分别从两端的网络端口向断路链路发送链路位置获取报文,该报文的目的IP地址为255.255.255.255的广播报文,报文内容中主要包含报文命令,主站设备的IP地址和链路位置序号(设置为0)。主站设备的一个网络端口收到链路位置获取报文后,经过解析报文后得到该网络端口对应的链路分支上总共有m(m大于0)个节点从设备以及链路上每个节点从设备的IP地址和对应的链路位置序号,并形成节点从设备的IP地址和链路位置序号映射关系表。
[0062] 当主站设备的两个网络端口都收到链路位置获取报文并解析完成之后,主站设备分别从两端的网络端口向断路链路发送节点数据获取报文(如果主站设备的两个网路端口有一个网络端口处于链路断路状态,则主站设备只向另一个网络端口发送节点数据获取报文),该报文内容中主要包含报文命令以及需要获取数据的起始节点从设备序号s_site(s_site大于等于1),第一包节点数据获取报文的s_site设置为1,该报文为广播报文。
[0063] 主站设备在收到一个网络端口收到节点数据获取报文后,解析报文后得到该报文中各个节点从设备的上送数据,并获得该报文中最后一个节点从设备的IP地址,并根据节点从设备的IP地址和链路位置序号映射关系表,得到该报文中最后一个节点从设备的IP地址对应的链路节点序号y(y<=m)。
[0064] 判断该报文中最后一个节点从设备链路节点序号y是否小于链路分支上总的节点从设备数m。如果y < m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该报文的需要获取数据的起始节点从设备序号s_site设置为y+1, 该报文为广播报文。如果y = m,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该报文的需要获取数据的起始节点从设备序号s_site设置为1, 该报文为广播报文。
[0065] 如图3所示,节点从设备处理链路位置获取报文流程,包括:
[0066] 判断该报文的目的地址是否为主站设备IP地址,如果是,则将该报文不做任何处理直接从另一个网络端口发送出去。如果该报文为广播报文,则对该报文进行解析得到报文中的主站设备IP地址并保存在本地,同时根据链路位置序号k(k大于等于0)做自加1操作后作为本地节点从设备的链路位置序号k+1,并保存在本地;在接收到的链路位置获取报文末尾添加本地的IP地址和链路位置序号k+1,组成新的链路位置获取报文;判断本地节点从设备是否为发生链路断路的端点设备,如果是,则将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去;反之,则将该新的链路位置获取报文从另一个网络端口发送出去,还是广播报文。
[0067] 如图4所示,节点从设备处理节点数据获取报文流程,包括:
[0068] 判断该报文的目的地址是否为主站设备IP地址,如果是,则将该报文直接从另一个端口发送出去;如果该报文为广播报文,解析报文获得报文长度Len0(单位:字节)和起始节点从设备序号s_site;根据该报文的长度Len0(单位:字节)加上本地需要上送的数据长度Len1(单位:字节)判断是否小于网络协议承载的最大数据长度p(如UDP协议数据区最大长度为1472个字节);如果Len0 + Len1 <= p,则判断起始节点从设备序号s_site是否小于等于本地节点从设备的链路位置序号x(x为本地节点从设备链路位置序号),如果s_site <= x,则在收到的节点数据获取报文末尾添加本地节点从设备IP地址和本地需要上送的数据作为新的节点数据获取报文,再根据本地节点从设备是否为发生链路断路的端点设备判断将新的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将新的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,如果不是发生链路断路的端点设备,则将新的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变;如果s_site > x,则将收到的节点数据获取报文直接从另一个网络端口发送出去;如果Len0 + Len1 > p,根据本地节点从设备是否为发生链路断路的端点设备判断将收到的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,则先将收到的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,反之,则将收到的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变。
[0069] 实施例1
[0070] 参照图1‑图4所示,本发明的一种工业控制环网链路中断快速获取链路节点数据的方法,工业控制环网包括一个主站设备和10个节点从设备,主站设备和节点从设备之间以及各节点从设备之间通过以太网络相连,形成一个环形网络, 获取链路节点数据的方法包括以下步骤:
[0071] 1)主站设备获取节点从设备数据,包括正常数据和链路故障报文;
[0072] 2)主站设备两端的网络接口收到链路故障报文后转入链路断路工作模式,在链路断路工作模式下,主站设备中断正在进行的工作进程,并根据本地两个网路端口的通断状态来决定向哪个网络端口发送报文;
[0073] 3)节点从设备收到链路位置获取报文,对链路位置获取报文进行处理;
[0074] 4)主站设备的一个网络端口收到链路位置获取报文后,经过解析链路位置获取报文后得到该网络端口对应的链路分支上的节点从设备数量以及链路上每个节点从设备的IP地址和对应的节点从设备链路位置序号,并形成节点从设备IP地址和节点从设备链路位置序号映射关系表;
[0075] 5)当主站设备收到链路位置获取报文并解析完成之后,主站设备向断路链路发送节点数据获取报文;
[0076] 6)节点从设备收到节点数据获取报文后,对节点数据获取报文进行处理;
[0077] 7)主站设备接收节点从设备返回的节点数据获取报文后,对节点数据获取报文进行处理。
[0078] 下面举例来说明步骤1)的具体判断方法:当环网所有链路处于环路连通状态时,主站设备通过环路获取各个节点从设备数据。假如图1中第三节点从设备和第四节点从设备之间的链路出现异常,发生故障的链路两侧的节点从设备分别向主站设备发送链路故障报文。
[0079] 主站设备根据收到链路故障报文首先判断本地两个网路端口的链路是否有一个处于断路状态,如果有一个网络端口处于链路断路状态,则主站设备只向另一个网络端口发送链路位置获取报文;如果两个网络端口都没有处于链路断路状态,则主站设备分别从两端的网络端口向断路链路发送链路位置获取报文,该链路位置获取报文是包含目的IP地址的广播报文,其中含有报文命令、主站设备IP地址、主站设备链路位置序号。
[0080] 节点从设备收到链路位置获取报文后对链路位置获取报文进行处理,包括以下步骤:
[0081] 1)判断该链路位置获取报文的目的地址是否为主站设备IP地址,如果是,则将该链路位置获取报文不做任何处理直接从另一个网络端口发送出去;
[0082] 2)如果该链路位置获取报文为广播报文,则对该链路位置获取报文进行解析得到主站设备IP地址并将其保存在本地,同时根据主站设备链路位置序号做自加1操作后保存为本地节点从设备链路位置序号;
[0083] 3)节点从设备在接收到的链路位置获取报文末尾添加的本地IP地址和本地节点从设备链路位置序号,组成新的链路位置获取报文;
[0084] 4)判断本地节点从设备是否为发生链路断路的端点设备,如果是,则将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去;如果不是,则将该新的链路位置获取报文从另一个网络端口发送出去,还是广播报文。
[0085] 发生链路断路的端点节点从设备,如第三节点从设备或第四节点从设备,在接收到链路位置获取报文后,处理完报文后将新的链路位置获取报文的目的地址改为主站设备IP地址,并将其从原网络端口发送出去。
[0086] 当主站设备的两个网络端口都收到链路位置获取报文时,主站设备分别从两端的网络端口向断路链路发送节点数据获取报文;当主站设备的两个网路端口有一个处于链路断路状态时,主站设备只向另一个网络端口发送节点数据获取报文;所述节点数据获取报文为广播报文,包含报文命令以及需要获取数据的起始节点从设备序号s_site。
[0087] 节点从设备对节点数据获取报文进行处理,包括以下子步骤:
[0088] 1)判断该节点数据获取报文的目的地址是否为主站设备IP地址,如果是,则将该节点数据获取报文直接从另一个端口发送出去;
[0089] 2)如果该节点数据获取报文为广播报文,解析节点数据获取报文获得节点数据获取报文长度Len0,和起始节点从设备序号s_site;
[0090] 3)根据节点数据获取报文长度Len0加上本地需要上送的数据长度Len1判断是否小于网络协议承载的最大数据长度p;
[0091] 4)如果Len0 + Len1 <= p,如Len0为1000字节,本地需要上送的数据长度Len1为300字节,而UDP数据报的数据区最大长度为1472字节,则判断起始节点从设备序号s_site是否小于等于本地节点从设备的链路位置序号x,如果s_site <= x,如第三节点从设备的链路位置序号3,而节点数据获取报文中的起始节点从设备序号s_site为1,则在收到的节点数据获取报文末尾添加本地节点从设备IP地址和本地需要上送的数据作为新的节点数据获取报文,再根据本地节点从设备是否为发生链路断路的端点设备判断将新的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,如第三或第四节点从设备,则先将新的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,如果不是发生链路断路的端点设备,则将新的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变;如果s_site > x,则将收到的节点数据获取报文直接从另一个网络端口发送出去;
[0092] 5)如果Len0 + Len1 > p, 如Len0为1000字节,本地需要上送的数据长度Len1为500字节,而UDP数据报的数据区最大长度为1472字节,则根据本地节点从设备是否为发生链路断路的端点设备判断将收到的节点数据获取报文从哪个网络端口发送出去,如果为发生链路断路的端点设备,如第三或第四节点从设备,则先将收到的节点数据获取报文的目的地址改为主站设备IP地址,将其从原网络端口发送出去,反之,则将收到的节点数据获取报文从另一个网络端口发送出去,目的地址保持不变。
[0093] 主站设备对收到的节点数据获取报文进行处理包括以下子步骤:
[0094] 1)解析节点数据获取报文后得到该节点数据获取报文中各个节点从设备的上送数据,并获得该节点数据获取报文中最后一个节点从设备的IP地址,并根据获得的节点从设备的IP地址和链路位置序号映射关系表,得到该节点数据获取报文中最后一个节点从设备的IP地址对应的链路节点序号y;
[0095] 2)判断该节点数据获取报文中最后一个节点从设备链路节点序号y是否小于链路分支上总的节点从设备数m;
[0096] 3)如果y < m,如节点数据获取报文中最后一个节点从设备的IP地址对应的链路节点序号为y为2,而总的节点从设备数m为3,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为y+1,即s_site设置为3, 该报文为广播报文;
[0097] 4)如果y = m, 如节点数据获取报文中最后一个节点从设备的IP地址对应的链路节点序号为y为3,而总的总的节点从设备数m为3,则主站设备向该链路分支对应的网络端口发送节点数据获取报文,该节点数据获取报文需要获取数据的起始节点从设备序号s_site设置为1, 该报文为广播报文。
[0098] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。