一种高效高带宽的通信方法及系统
技术领域
本发明属于通信、工业控制自动化领域,具体涉及一种高效高带宽的通信方法及系统。
背景技术
现有的工业网络通信总线、机制种类繁多,比较典型的机制有主从式通信、仲裁式通信和分布式通信,如POWERLINK、CAN、EPA等。但是这些通信总线由于机制限制,并不能将网络带宽充分的利用起来。POWERLINK采用主从式问答机制通信,每一次数据的交互都需要主从之间进行握手问答,导致一次数据的交互需要来回两次数据传输,仅一半带宽的数据是有效数据。CAN采用仲裁机制,存在不确定性,设备仲裁退避再重复对带宽的浪费较大。EPA采用分布式通信,为每个设备分配了固定的时间槽,各设备在对应的时间自发的发送数据,该机制解决了主从式通信的缺陷,但是由于每个设备并不是所有的通信周期都会有数据要交互,其固定的这段时间槽里只能收发无效重复的数据,同样导致带宽浪费。
现有的针对通信资源分配的实现方案,较相近的有CN110336727A和CN101719876B。其中CN110336727A是通过控制节点和终端节点间收发资源请求报文、预留资源发布报文或动态带宽发布报文等进行节点资源调度。该方法需要有一个控制节点,存在控制节点故障整个网络瘫痪的风险。收发资源请求、预留资源发布等报文的同时也占用了带宽,同时报文种类多,用户和工程师使用和维护较繁琐。另外该方法只适应环形、总线型这种拓扑结构,适用场景较小。CN101719876B提到的方法则是通过将网络分多级,将小数据包合并成大数据包,从而节省多个小以太网报文分开发送所产生的多个报文头的传输带宽。节点间发送还是按照预先分配的时间片按顺序发送。该方法的按固定时间片发送存在上述提到的EPA分布式通信的缺陷,同时该方法设备只能按照顺序发送,没办法对优先级不同的数据进行动态调整顺序。此外,由于该方法的分时调度机制,所有的设备需要严格的同步,如果一旦同步不上,通信就会发生碰撞。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种高效高带宽的通信方法及系统。
本发明的技术方案如下:
一种高效高带宽的通信方法,应用于一种高效高带宽的通信系统,所述通信系统包括:若干个通信设备,每个通信设备均设有唯一的物理ID;所述各个通信设备通过通信链路,周期性地进行通信;所述方法包括:
所述各个通信设备在每个通信周期内根据待发送数据优先级的高低,先后发送数据帧;
所述通信设备在发送数据帧的同时,在数据帧中声明下个通信周期是否有数据要发送,并告知数据优先级;
在每个通信周期内,没有数据要发的通信设备在其他有数据要发送的通信设备发送完了之后再声明下个通信周期是否有数据要发送以及数据的优先级;
所述各通信设备在通信周期内接受所有已发送的数据帧,通过获得通信周期内所有数据帧的发送方的物理ID和对应的待发送数据优先级后,判断出下个通信周期自身设备的数据发送时间点。
可选地,所述通信设备发送的数据帧中至少包括:物理ID字段、待发送数据的优先级PRI字段、数据帧长度LEN字段。
可选地,“在每个通信周期内,没有数据要发的通信设备在其他有数据要发送的通信设备发送完了之后再声明下个通信周期是否有数据要发送以及数据的优先级;”进一步包括:
每个通信周期内,有数据要发送的通信设备先发送数据帧,待这些通信设备发送完数据帧后,没有数据要发送的通信设备仅发送一个长度小的数据帧,用于声明下个通信周期是否有数据要发送以及数据的优先级。
可选地,“所述各通信设备在通信周期内接受所有已发送的数据帧,通过获得通信周期内所有数据帧的发送方的物理ID和对应的待发送数据优先级后,判断出下个通信周期自身设备的数据发送时间点。”进一步包括:
各通信设备在接收并收集当前通信周期内所有数据帧的发送方物理ID和对应的待发送数据优先级后,判断出自身在下个通信周期里是第几个发送的设备,以及根据发送顺序确定预设超时时间Timeout,并记录下一通信周期内发送时间离自身设备最近且先于自身发送的设备的物理ID,记录这个ID为Pre-ID;其中:
所述预设超时时间Timeout为从通信周期当前时刻到自身设备开始发送数据帧的最长等待时间;如自身设备为该通信周期内第n个发送的设备,则其预设超时时间Timeout为(n-1)*T,T为通信所基于的协议中规定的一个最长数据帧发送所需的时间,n为大于1的整数;
所有设备在接收完当前通信周期所有设备的数据后,判断计算完发送顺序以及预设超时时间Timeout后,即进入下一个通信周期,新的通信周期开始;其中,通信周期内的未发送数据的设备在每有一个设备发送完数据之后,就要重新更新预设超时时间 Timeout。
可选地,在一个通信周期中,首个发送数据帧的通信设备没有Pre-ID值,其Pre-ID值可设为0。
可选地,所述方法还包括:
当多个通信设备待发送的数据的数据优先级一致,则可以按照各通信设备的物理ID 的大小进行仲裁,以决定处于同一优先级的各个通信设备发送数据帧的先后顺序。
可选地,所述“通信链路”为以太网、CAN、BLVDS、RS485、光纤中的一种。
可选地,所述数据帧还包括:用于向网络报警的字段或用于通知故障信息的字段。
一种高效高带宽的通信系统,包括:
若干个通信设备,每个通信设备均设有唯一的物理ID;所述各个通信设备通过通信链路,采用了如前任意一项所述的方法,周期性地进行通信。
与现有技术相比,本发明具有如下的有益效果:
网络中的设备在每个通信周期内根据数据的紧急性即数据优先级的高低,先后发送数据。优先级高的数据先发送,优先级低的数据后发送。设备间数据交互不会产生冲突。同时每个通信周期各设备自动分析计算下一个通信周期需要发送的时间节点。
通过本发明的方法,每个通信周期不固定,数据多则通信周期长,数据少则通信周期短。最大限度地节约了通信带宽,提高了带宽利用率。
同时,基于本发明的方法,网络通信设备间无需进行同步,无需额外发送资源分配报文,节省了开发、维护、使用等各环节的工作量。
此外,本发明支持星型、总线型等网络拓扑结构。
通过本发明,解决了目前工业网络通信存在带宽利用率不高、资源调度不灵活、开发使用不便捷等缺点,并使得工业网络通信具备更高的实时性和可用性。
本发明中的数据帧可以增添一些其他有需要的字段,以满足网络通信的可用性和可靠性,如报警字段等。
本发明中的设备在预存下一通信周期发送时间离自身设备最近且先于自身发送的设备ID,可不限于Pre-ID,根据需要可以记录更多更前面的设备ID可用于判断更多的设备掉线。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明具体实施例一种高效高带宽的通信系统的网络拓扑结构示意图;
图2是本发明具体实施例通信设备发送的数据帧结构示意图;
图3是本发明具体实施例通信系统上电后前5个通信周期的通信设备数据调度示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本实施例公开了一种高效高带宽的通信方法,其应用于一种高效高带宽的通信系统,所述通信系统包括:若干个通信设备,每个通信设备均设有唯一的物理ID;所述各个通信设备通过通信链路,周期性地进行通信(如数据的采集扫描、传输交互、执行响应等)。
其中,所述方法包括:
所述各个通信设备在每个通信周期内根据待发送数据优先级的高低,先后发送数据帧;当多个通信设备待发送的数据的数据优先级一致,则可以按照某种规则(如各通信设备的物理ID的大小)进行仲裁,以决定处于同一优先级的各个通信设备发送数据帧的先后顺序。
所述通信设备在发送数据帧的同时,在数据帧中声明下个通信周期是否有数据要发送,并告知数据优先级;
在每个通信周期内,没有数据要发的通信设备在其他有数据要发送的通信设备发送完了之后再声明下个通信周期是否有数据要发送以及数据的优先级;
所述各通信设备在通信周期内接受所有已发送的数据帧,通过获得通信周期内所有数据帧的发送方的物理ID和对应的待发送数据优先级后,判断出下个通信周期自身设备的数据发送时间点。
所述通信设备发送的数据帧中至少包括:物理ID字段、待发送数据的优先级PRI字段、数据帧长度LEN字段。所述数据帧可以是以太网报文、CAN报文、串行传输协议报文等各种不同形式的数据帧格式。
其中,“在每个通信周期内,没有数据要发的通信设备在其他有数据要发送的通信设备发送完了之后再声明下个通信周期是否有数据要发送以及数据的优先级;”进一步包括:
每个通信周期内,有数据要发送的通信设备先发送数据帧,待这些通信设备发送完数据帧后,没有数据要发送的通信设备仅发送一个长度小的数据帧,用于声明下个通信周期是否有数据要发送以及数据的优先级。
其中,“所述各通信设备在通信周期内接受所有已发送的数据帧,通过获得通信周期内所有数据帧的发送方的物理ID和对应的待发送数据优先级后,判断出下个通信周期自身设备的数据发送时间点。”进一步包括:
各通信设备在接收并收集当前通信周期内所有数据帧的发送方物理ID和对应的待发送数据优先级后,判断出自身在下个通信周期里是第几个发送的设备,以及根据发送顺序确定预设超时时间Timeout,并记录下一通信周期发送时间离自身设备最近且先于自身发送的设备ID,记录这个ID为Pre-ID(其中首个发送的设备没有Pre-ID值,该值可设为0)。其中:
所述预设超时时间Timeout为从通信周期当前时刻(所述当前时刻可分每一通信周期开始、以及在该通信周期中某一设备发送数据后这两种情况)到自身设备开始发送数据帧的最长等待时间(也可称为最大保守估计时间);如自身设备为该通信周期内第n 个发送的设备,则其预设超时时间Timeout为(n-1)*T,T为通信所基于的协议中规定的一个最长数据帧发送所需的时间;n为大于1的整数。
所有设备在接收完当前通信周期所有设备的数据后,判断计算完发送顺序以及预设超时时间Timeout后,即进入下一个通信周期,新的通信周期开始。其中,通信周期内的未发送数据的设备在每有一个设备发送完数据之后,就要重新更新预设超时时间 Timeout。
例如通信开始时,第n个发送的设备A的预设超时时间Timeout为(n-1)*T,当第1个设备发送数据之后,设备A在剩余待发设备中处于第n-1个,则设备A的预设超时时间Timeout为(n-2)*T,以此类推。
待进入下一个周期,有优先级最高的数据帧待发的通信设备最先发送数据帧,其他待发通信设备根据当前设备发送的数据帧中的物理ID、数据帧长度LEN以及预存的 Pre-ID来判断自身发送数据的时机,即通过当前设备发送的数据帧中的物理ID和预存的Pre-ID判断是否轮到自身发送下一个数据帧,根据数据帧的长度LEN以及当前接受的数据长度来判断当前设备是否发送结束。
其中,待发通信设备在新的通信周期开始后开始计时,如果计时时间达到预设的超时时间Timeout值,Pre-ID通信设备还未发出数据帧,则认定其掉线或者故障,待发设备随后开始发送数据帧。与此同时,位于该待发设备后面发送的设备也在计时,在该待发设备发出数据的时候,其余的设备的计时还未满足其预设的超时时间。当其余设备收到了该待发设备的数据时,剩余设备的计时将重新开始。同时,其余设备的预设超时时间也将根据当前通信周期中剩余的设备发送顺序进行调整计算。
本实施例同时公开了一种高效高带宽的通信系统,包括:若干个通信设备,每个通信设备均设有唯一的物理ID;所述各个通信设备通过通信链路,采用了前述的方法,周期性地进行通信。
如图1,本实施例中,所述通信系统的物理拓扑结构为星型网络拓扑结构,其包括5个通信设备,物理ID为1~5,所述5个通信设备通过作为通信链路的交换设备/网络进行通信。需要说明的是,所述通信系统的物理拓扑结构也可以是总线型等类似的拓扑结构,本发明不对其做出限定。
上述通信设备可以为控制器、执行机构、变送器或数据采集器等设备。
物理ID可以是以太网MAC ID、IP、DEVICE ID等各种可以用于识别区分设备的识别号。
这里的通信链路可以为以太网、CAN、BLVDS、RS485、光纤等任何中的一种。
系统上电并且所有设备完成配置后,进入通信状态。配置过程不限形式,但是每个设备需要保存当前网内所有设备的物理ID。本实施例中如附图3所示,本实施例的网络通信调度过程具体如下:
第一个通信周期,所有设备不发送实质数据,所有设备按照本地物理ID从小到大依次发送空数据帧,每个设备在该数据帧中标识了下一通信周期要发送的数据优先级PRI,优先级PRI为0表示没有数据要发送,PRI的值为1~255表示有数据要发送,并且优先级为当前的非0值,数值越小表示优先级越高。数据帧格式如附图2所示。
空数据帧包括:物理ID字段(目的ID,源ID)、待发送数据的优先级PRI字段(PRI)、数据帧长度LEN字段(LEN)、校验值字段;非空数据帧包括:物理ID字段(目的ID,源ID)、待发送数据的优先级PRI字段(PRI)、数据帧长度LEN字段(LEN)、数据字段 (DATA)、校验值字段;空数据帧和非空数据帧区别在于空数据帧的LEN字段为0,且后面直接跟着校验值,没有数据,数据帧整个长度控制到最短。非空数据帧的LEN字段表示后面跟着DATA部分的长度。空数据帧和非空数据帧都带有PRI声明字段,用于表示下一个通信周期是否有数据要发送。所有设备在该通信周期接受数据帧并进行优先级对比,判断自身在下个通信周期里是第几个发送的设备,以及根据发送顺序确定预设超时时间Timeout,并记录下一通信周期发送时间离自身设备最近且先于自身发送的设备ID,记录这个ID为Pre-ID(其中首个发送的设备没有Pre-ID值,该值可设为0)。判断规则为:数据优先级高的ID先发送,当优先级相同时,ID值小的优先发送。
待第一个通信周期中所有设备依次发送数据帧结束后即进入第二个通信周期,在正常情况下,有优先级最高的数据帧待发的设备最先发送,其他待发设备根据当前设备发送的数据帧中的物理ID、数据帧长度LEN以及预存的Pre-ID来判断自身发送数据的时机,即通过数据帧中的物理ID和预存的Pre-ID判断是否轮到自身发送下一个数据帧,根据数据帧的长度LEN以及当前接受的数据长度来判断当前设备是否发送结束,如果当前设备发送结束,则下一个待发设备开始发送本地数据帧。
如附图3所示,第一个周期设备1~设备5依次发送空数据帧,设备1、设备2和设备3分别声明了下一个通信周期分别有优先级为1、2、1的数据要发送。设备4和设备5声明下一周期没有数据要发送。第二个通信周期里,优先级最高且ID最小的设备1最先发送,其次是优先级同样为1且ID为3发送数据帧,最后是优先级最低的设备2发送。当所有有数据要发送的设备发送完成后,其他没有数据要发送的设备4和设备5开始发送空数据帧声明下一个通信周期是否有数据要发送。第二个周期,设备3和设备5分别声明了优先级为2和1的数据要发送,其他设备没有数据要发送。因此,第三个周期,优先级最高的设备5最先发送,设备3其次。待设备3发送结束,没有数据要发送的设备1、设备2和设备4 根据ID从小到大依次发送空数据帧声明下一通信周期是否有数据要发送。依次类推,每个周期所有设备都按照这样的机制周期性的进行数据收发。通过该实施例,可见每个周期的通信周期时间T1~T5都根据设备发送的数据量和数据大小动态变化,最大限度地节约了带宽,提高了通信的实时性。
在通信过程中,考虑到设备掉线或故障的情况会影响后面设备的数据帧发送,因此引入了超时时间Timeout。待发通信设备在新的通信周期开始后开始计时,如果计时时间达到预设的超时时间Timeout值,Pre-ID通信设备还未发出数据帧,则认定其掉线或者故障,待发设备随后开始发送数据帧。当然,如果考虑到多个设备同时掉线的情况,为了增强网络的健壮性,设备可以记录不止Pre-ID,记录更多更前面的设备ID可以判断更多的设备掉线。同时,也可以采用设备冗余、链路冗余的模式,增加网络通信的健壮性。进一步的,如果为了通信系统更好的运行,本实施例的数据帧还可以开辟用于向网络报警的字段或用于通知故障信息的字段,用于向网络报警,用于通知网内掉线或故障设备的ID等故障信息。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。