技术领域
[0001] 本发明概括而言涉及通信领域,更具体地,涉及一种EPA设备。
相关背景技术
[0002] 对于工业网络的应用场景来说,通常存在着两种类型的数据。一类数据是实时刷新的,称之为状态数据。状态数据具有定时刷新和超时无效的特点。定时刷新是指数据的产生时机是固定频率的,发送方只需保证每一个数据包能在设定的最大延时时间内被发送出去即可。超时无效是指接收方在需要这类数据时只采集最近一次的数据,而不会要求历史数据。例如,由温度、转速、压力等传感器采集到的传感器数据就是典型的状态数据。
[0003] 另一类数据是控制数据。控制数据的产生时机是随机的,并且产生频率也是随机的。控制数据的接收端需要提供一定的数据缓存能力,因此除非发送端在一定时间内产生的数据流量超过了接收端或者在网络传输过程中发生了误码,否则这类数据在传输过程中是不应该被丢弃的。
[0004] 当前的工业网络中,由于网络协议的限制或者由于应用场景的要求等原因,在工业设备处并不特别区分状态数据和控制数据的传输。这可能会使得所产生的状态数据不能被及时传输给接收端,或者所产生的控制数据被遗漏或丢弃。
具体实施方式
[0023] 下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0024] 在下文的描述中,出于说明各种发明的实施例的目的阐述了某些具体细节以提供对各种发明实施例的透彻理解。但是,相关领域技术人员将认识到可在无这些具体细节中的一个或多个细节的情况来实践实施例。在其它情形下,与本申请相关联的熟知的装置、结构和技术可能并未详细地示出或描述从而避免不必要地混淆实施例的描述。
[0025] 除非语境有其它需要,在整个说明书和权利要求中,词语“包括”和其变型,诸如“包含”和“具有”应被理解为开放的、包含的含义,即应解释为“包括,但不限于”。
[0026] 在整个说明书中对“一个实施例”或“一些实施例”的提及表示结合实施例所描述的特定特点、结构或特征包括于至少一个实施例中。因此,在整个说明书的各个位置“在一个实施例中”或“在一些实施例”中的出现不一定全都指相同实施例。另外,特定特点、结构或特征可在一个或多个实施例中以任何方式组合。
[0027] 此外,说明书和权利要求中所用的第一、第二、第三等术语,仅仅出于描述清楚起见来区分各个对象,而并不限定其所描述的对象的大小或其他顺序等,除非另有说明。
[0028] 图1示出了根据本发明的实施例的示例性EPA系统1的示意图。如图1中所示,EPA系统1可以包括多个EPA设备10(图1中示例性地示出了N个EPA设备10‑1、10‑2、10‑3……10‑N,其中N是大于或等于2的正整数),这些EPA设备10可以通过EPA总线20互连以构成各种拓扑结构的EPA系统1。这里,图1中示例性地显示了环形结构的EPA系统1,然而本领域技术人员可以理解, EPA系统1并不限于图1所示的拓扑结构,而是还可以具有其他类型的拓扑结构,如线型结构、星型结构、双行星结构、双环形结构或者混合型结构等。
[0029] 根据EPA协议的特性,当EPA系统1正常工作时,系统内存在一个EPA设备10作为主时钟节点设备,它为整个系统提供参考时钟,而其余所有EPA设备10的时钟与主时钟节点设备保持一致,也称为从时钟节点设备。基于以上同步特性,用户可以根据实际应用需求来设置EPA系统1的通信周期长度。EPA系统1中的各个EPA设备10使用相同的通信周期工作(也称为宏周期)。一个通信周期分为周期时间段和非周期时间段。在周期时间段中,每个EPA设备10被分配有固定的周期时间片来发送周期报文。对于非周期时间段的通信,由各个EPA设备
10根据其实际需求在周期报文中声明并竞争不同的非周期时间片来进行非周期报文的发送。基于EPA系统的通信周期中的周期时间片和非周期时间片的上述特性,在本发明中,考虑将周期时间片配置来传输诸如状态数据之类的高实时性的数据,以确保在最大为通信周期长度的延时时间内,接收节点能够接收到从发送节点发出的数据,并且考虑将非周期时间片配置来传输诸如控制数据之类的大流量但对传输延时没有很高要求的数据。
[0030] 图2示出了根据本发明实施例的示例性EPA设备10的结构示意图。如图2中所示,EPA设备10可以包括发送缓存模块110和/或接收缓存模块120、用户模块130和EPA协议模块140。
[0031] 一方面,一个EPA设备10自身可以产生或以其他方式获取状态数据和/或控制数据,用户模块130可以控制将该状态数据和/或控制数据缓存到发送缓存模块110的适当的缓存块中,并且EPA协议模块140可以从发送缓存模块110获取该状态数据和/或控制数据并且将其通过EPA总线20发送给EPA系统1中的其他EPA设备10。
[0032] 另一方面,一个EPA设备10的EPA协议模块140可以通过EPA总线20从EPA系统1中的其他EPA设备10接收其他EPA设备10所产生的状态数据和/或控制数据并且将其缓存到接收缓存模块120的适当的缓存块中,并且用户模块130可以根据接收缓存模块120中的数据缓存状态读取其中的状态数据和/或控制数据。
[0033] 在任一情况下,都可以将产生该状态数据和/或控制数据的EPA设备10称为发送节点或发送端,将接收该状态数据和/或控制数据的EPA设备10称为接收节点或接收端。在本文中,对于任何一个EPA设备10来说,其至少需要实现发送节点的功能或者接收节点的功能。
[0034] 具体地,如图2中所示,发送缓存模块110包括一个状态数据发送缓存块112和多个控制数据发送缓存块114。该状态数据发送缓存块112用于缓存要发送给EPA系统1中的其他EPA设备10的状态数据。多个控制数据发送缓存块114用于缓存要发送给EPA系统1中的多个其他EPA设备10的控制数据。
[0035] 状态数据发送缓存块112和每个控制数据发送缓存块114被配置为具有相同的深度。取决于不同实现需求,EPA系统1中可以规定自己的EPA报文的大小或者大小范围。在这种情况下,状态数据发送缓存块112和每个控制数据发送缓存块114需要大于或等于该EPA系统1中所规定的EPA报文的最大长度。这里,EPA报文是指通过EPA总线20发送或接收的数据报文,其例如由每个EPA设备10中的EPA协议模块140基于EPA协议规范将要发送的有效数据进行打包而产生。
[0036] 多个控制数据发送缓存块114构成一个发送缓存块队列,队列中的每个元素是一个缓存块,元素个数(即队列长度)可以由用户基于应用场景、EPA系统1内包含的EPA设备10的数量等设置。
[0037] 接收缓存模块120包括多个状态数据接收缓存块122和多个控制数据接收缓存块124。每个状态数据接收缓存块122与EPA系统1中的一个其他EPA设备10相对应,用于缓存从该其他EPA设备10接收的状态数据。因此,接收缓存模块120中的状态数据接收缓存块122的数量至少应当等于EPA系统1中的其他EPA设备10的数量。例如,如图1中所示,在EPA系统1中包含N个EPA设备10的情况下,对于每个EPA设备10来说,其状态数据接收缓存块122的数量至少为N‑1。此外,EPA设备10还可以在进行初始化EPA组态配置时为多个状态数据接收缓存块122构建一个映射表,其包含每个状态数据接收缓存块122的标识(如索引号)与一个其他EPA设备(即该状态数据接收缓存块122所缓存的状态数据的发送端或来源设备)的地址之间的映射关系。这里,EPA设备10的地址可以是EPA设备的MAC地址。该映射表可以是静态的,在接收缓存模块120的整个工作时间内保持不变。
[0038] 多个控制数据接收缓存块124用于缓存从EPA系统1中的其他EPA设备10接收的控制数据。多个控制数据接收缓存块124构成一个接收缓存块队列,队列中的每个元素是一个缓存块,元素个数(即队列长度)可以由用户基于应用场景、EPA系统1内包含的EPA设备10的数量等设置。
[0039] 类似地,每个状态数据接收缓存块122和每个控制数据接收缓存块124可以被配置为具有相同的深度。取决于不同实现需求,EPA系统1中可以规定自己的EPA报文的大小或者大小范围。在这种情况下,每个状态数据接收缓存块122和每个控制数据接收缓存块124需要大于或等于该EPA系统1中所规定的EPA报文的最大长度。这里,EPA报文是指通过EPA总线20发送或接收的数据报文,其例如可以由每个EPA设备10中的EPA协议模块140基于EPA协议规范将要发送的有效数据进行打包而产生。
[0040] 用户模块130可以由用户定义的用户程序控制以实现各种功能,并且可以在EPA设备10作为发送节点和接收节点时分别写入和读取状态数据和/或控制数据,如下所述。
[0041] EPA协议模块140可以是EPA协议实现电路,其可以根据各种配置参数运行以与其他EPA设备10进行通信,并且可以在EPA设备10作为发送节点和接收节点时分别读取和写入状态数据和/或控制数据,如下所述。
[0042] 发送缓存模块110和/或接收缓存模块120可以与EPA协议模块140一起通过FPGA(Field Programmable Gate Array,现场可编程门阵列)硬件编程实现。EPA协议模块140可以对用户程序提供统一的物理接口,以由用户程序控制数据写入。也就是说,可以对传统的EPA协议电路进行扩展以使其包含发送缓存模块110和/或接收缓存模块120。或者,在一些其他实现中,发送缓存模块110和/或接收缓存模块120也可以位于用户程序所在的系统内存上,通过软件程序(驱动)来实现。
[0043] 在EPA设备10用作发送节点时,用户模块130被配置为根据要发送的数据是状态数据还是控制数据而将要发送的数据写入发送缓存模块110,并且EPA协议模块140被配置为在EPA系统1的通信周期期间,从发送缓存模块110读取状态数据和控制数据并且将所读取的状态数据和控制数据发送给EPA总线20。
[0044] 在EPA设备10用作接收节点时,EPA协议模块140被配置为在EPA系统1的通信周期期间,从EPA总线20接收来自其他EPA设备10的状态数据和控制数据并且将所接收的状态数据和控制数据写入接收缓存模块120,并且用户模块130被配置为从接收缓存模块120读取状态数据和控制数据。
[0045] 图3示出了根据本发明一些实施例的一个EPA设备10的用户模块130被配置来执行数据发送的过程300的流程图。过程300可以在EPA设备10作为发送节点时执行。
[0046] 如图3中所示,过程300可以包括方框310,其中用户模块130可以获取要发送的数据。要发送的数据例如可以是EPA设备10自身产生的数据或者上位机传输而来的数据,该数据需要由该EPA设备10经由EPA总线20发送给其他EPA设备10。
[0047] 在方框320,用户模块130可以确定方框310获取的数据是状态数据还是控制数据。用户模块130可以根据数据的来源或类型确定该数据是状态数据还是控制数据。例如,如前所述,来自与EPA设备10相关联的温度、转速、压力等传感器等的传感器数据可以被确定为状态数据,来自EPA设备10的上位机(即管理用户)的数据可以被确定为控制数据。
[0048] 如果在方框320确定该数据是状态数据,则在方框330,用户模块130可以直接将该状态数据写入状态数据发送缓存块112而不考虑状态数据发送缓存块112中是否有未被读取的状态数据。也就是说,即使状态数据发送缓存块112中缓存有未被读取的状态数据,用户模块130也对状态数据发送缓存块112执行写入操作以覆盖已有的数据。
[0049] 在一些实施例中,在将状态数据写入状态数据发送缓存块112之后,用户模块130还可以设置状态数据发送缓存块112的有效标志位,例如设置为1。通过这种方式,可以指示状态数据发送缓存块112是否有未被读取的状态数据。
[0050] 在一些实施例中,用户模块130在写入状态数据之前,通过EPA系统时间查询接口获得EPA系统1的当前系统同步时间,并且将该时间作为时间戳与状态数据一起按照预定的数据格式写入状态数据发送缓存块112。该时间戳可以作为该状态数据的产生时间,并且在后续与状态数据一起通过EPA报文发送给其他EPA设备10。通过这种方式,接收到该状态数据的其他EPA设备10可以根据该时间戳和实际接收时间,确定该状态数据是否有效,如下所述。
[0051] 另一方面,如果在方框320确定该数据是控制数据,则在方框340,用户模块130可以将该控制数据写入多个控制数据发送缓存块114中的一个控制数据发送缓存块114中。
[0052] 具体地,用户模块130可以查看多个控制数据发送缓存块114构成的发送缓存块队列是否已满。例如,在控制数据发送缓存块114配置完成之后,用户模块130可以获取并存储发送缓存块队列的头指针和尾指针。在需要缓存该控制数据时,用户模块130可以将发送缓存块队列的当前指针与控制数据的长度之和与发送缓存块队列的尾指针进行比较。如果发送缓存块队列的当前指针与控制数据的长度之和小于或等于发送缓存块队列的尾指针,则可以确定发送缓存块队列未满,反之,则可以确定发送缓存块队列已满。
[0053] 如果确定队列未满,则用户模块130可以将控制数据写入发送缓存块队列的末尾。
[0054] 如果确定队列已满,用户模块130可以将发送缓存块队列中的数据前移以移除最早的控制数据并且将该控制数据写入发送缓存块队列的末尾。或者,用户模块130也可以直接由于产生的控制数据流量溢出而将新的控制数据丢弃。
[0055] 在用户模块130将数据写入发送缓存模块110之后,EPA协议模块140可以对发送缓存模块110中缓存的数据进行发送。
[0056] 图4示出了根据本发明一些实施例的EPA协议模块140被配置来执行数据发送的过程400的流程图。过程400可以在EPA设备10作为发送节点时执行。
[0057] 如图4中所示,过程400可以包括方框410,其中在EPA系统1的通信周期的周期时间段期间,EPA协议模块140可以从状态数据发送缓存块112读取状态数据并且将该状态数据发送给EPA总线20。如前所述,EPA设备10被分配有周期时间段期间的固定的周期时间片来发送其周期报文。因此,在该周期时间片来临之前,EPA协议模块140可以从状态数据发送缓存块112中读取其中缓存的状态数据。此外,EPA协议模块140可以按照EPA协议规范对该状态数据和该EPA设备10的地址(以及可能的时间戳等其他信息)进行打包以产生周期EPA报文。这里,该周期EPA报文例如是符合FRT(Fast Real Time,FRT)格式的FRT报文。EPA协议模块140可以在该EPA设备10的周期时间片中发送该FRT报文作为其周期报文。
[0058] 在一些实施例中,EPA协议模块140可以读取状态数据发送缓存块112的有效标志位以确定其中是否有未被读取的状态数据。如果状态数据发送缓存块112的有效标志位为1,则EPA协议模块140可以确定状态数据发送缓存块112中存在未被读取并且需要发送的状态数据,从而执行方框410的操作,并且在读取了状态数据发送缓存块112中的状态数据之后将状态数据发送缓存块112的有效标志位设置为0。反之,如果状态数据发送缓存块112的有效标志位为0,则EPA协议模块140可以确定状态数据发送缓存块112中不存在未被读取的状态数据,从而不执行方框410的操作。
[0059] 另一方面,在方框420,在EPA系统1的通信周期的非周期时间段期间,EPA协议模块140可以根据用于该EPA设备的非周期时间片的长度,从多个控制数据发送缓存块114中读取一个或多个控制数据并且将该一个或多个控制数据发送给EPA总线。如前所述,非周期时间片由每个EPA设备10声明并竞争而确定。因此,在竞争结束时,EPA设备10例如可以从主时钟设备得到为其分配的非周期时间片的开始时刻和长度。在这种情况下,EPA协议模块140可以根据该非周期时间片的长度确定该非周期时间片期间能够发送的控制数据的大小。根据该非周期时间片期间能够发送的控制数据的大小,EPA协议模块140可以从控制数据发送缓存块114中读取一个或多个控制数据。EPA协议模块140可以按照EPA协议规范对所读取的一个或多个控制数据和该EPA设备10的地址(以及可能的时间戳等其他信息)进行打包以产生非周期EPA报文。这里,该非周期EPA报文例如是符合NRT(Non Real Time,NRT)格式的NRT报文。EPA协议模块140可以在该EPA设备10的非周期时间片中发送该NRT报文作为其非周期报文。
[0060] 图5示出了根据本发明一些实施例的EPA协议模块140被配置来执行数据接收的过程500的流程图。过程500可以在EPA设备10作为接收节点时执行。
[0061] 如图5中所示,过程500可以包括方框510,其中EPA协议模块140可以从EPA总线20接收EPA报文。该EPA报文可以是其他EPA设备10在通信周期的周期时间段或者非周期时间段期间通过EPA总线20发送的。
[0062] 在方框520,EPA协议模块140可以确定方框510接收的EPA报文的有效数据是状态数据还是控制数据。例如,EPA报文中可以包括类型标志位,以指示该EPA报文的有效数据是状态数据还是控制数据。
[0063] 如果在方框520确定该EPA报文的有效数据是状态数据,则在方框530,EPA协议模块140可以提取该状态数据,并且将该状态数据写入与该状态数据的源EPA设备相对应的状态数据接收缓存块122中。例如,如前所述,EPA设备10可以在初始化组态配置时为多个状态数据接收缓存块122构建一个映射表,其包含每个状态数据接收缓存块122的标识与一个其他EPA设备10的地址之间的映射关系。因此,在方框530,EPA协议模块140可以从该EPA报文中提取该EPA报文的发送节点(即源EPA设备)的地址,并且基于该发送节点的地址和该映射表确定应当将该状态数据缓存到哪个状态数据接收缓存块122中。
[0064] 在一些实施例中,与状态数据发送缓存块112的有效标志位类似,可以为每个状态数据接收缓存块122设置一个有效标志位,并且EPA协议模块140在将状态数据写入该状态数据接收缓存块122中之后,可以将相应的有效标志位设置为1。
[0065] 另一方面,如果在方框520确定该EPA报文的有效数据是控制数据,则在方框540,EPA协议模块140可以提取该控制数据,并且将该控制数据写入多个控制数据接收缓存块124中的一个控制数据接收缓存块124中。
[0066] 与上述控制数据发送缓存块114类似,在方框540,EPA协议模块140可以查看多个控制数据接收缓存块124构成的接收缓存块队列是否已满。例如,在控制数据接收缓存块124配置完成之后,EPA协议模块140可以获取并存储接收缓存块队列的头指针和尾指针。在需要缓存该控制数据时,EPA协议模块140可以将接收缓存块队列的当前指针与控制数据的长度之和与接收缓存块队列的尾指针进行比较。如果接收缓存块队列的当前指针与控制数据的长度之和小于或等于接收缓存块队列的尾指针,则可以确定接收缓存块队列未满,反之,则可以确定接收缓存块队列已满。
[0067] 如果确定队列未满,则EPA协议模块140可以将控制数据写入接收缓存块队列的末尾。
[0068] 如果确定队列已满,EPA协议模块140可以将接收缓存块队列中的数据前移以移除最早的控制数据并且将该控制数据写入接收缓存块队列的末尾。或者,EPA协议模块140也可以直接由于产生的控制数据流量溢出而将新的控制数据丢弃。
[0069] 图6示出了根据本发明一些实施例的用户模块130被配置来执行数据接收的过程600的流程图。过程600可以在EPA设备10作为接收节点时执行。
[0070] 如图6中所示,过程600可以包括方框610,其中用户模块130可以确定接收缓存模块120中的数据缓存状态。
[0071] 在一些实施例中,用户模块130可以对接收缓存模块120中的各个缓存块进行轮询以确定其中是否有待读取的数据。
[0072] 在另一些实施例中,EPA协议模块140可以在向状态数据接收缓存块122中写入状态数据和/或向控制数据接收缓存块124中写入控制数据之后,向用户模块130发送中断信号。用户模块130可以基于该中断信号确定接收缓存模块120中的哪个缓存块中缓存了新的数据。
[0073] 在方框620,用户模块130可以基于方框610中确定的接收缓存模块120中的数据缓存状态确定需要读取的数据是状态数据还是控制数据。在方框610中,用户模块130可以根据轮询结果或者中断信号确定接收缓存模块120中的哪个缓存块中缓存了新的数据,并且可以根据该缓存块是状态数据接收缓存块122还是控制数据接收缓存块124确定该新的数据是状态数据还是控制数据。
[0074] 如果确定需要读取的数据是状态数据,则在方框630,用户模块130可以从对应的状态数据接收缓存块122读取该状态数据。例如,如果在方框610,用户模块130确定与EPA系统1中的另一EPA设备10(例如图1所示的EPA设备10‑N)对应的状态数据接收缓存块122中存在需要读取的数据,则用户模块130可以确定需要读取的数据是状态数据,并且从对应的状态数据接收缓存块122读取该状态数据。
[0075] 在一些实施例中,在方框630,用户模块130还可以进一步获取所读取的状态数据的时间戳(即状态数据的产生时间),并且将该时间戳与当前时间进行比较以确定该状态数据是否有效。例如,如果该时间戳与当前时间之差超过三个通信周期,则认为该状态数据已不再有效,用户模块130可以丢弃该状态数据而不再将其传递给上位机或执行其他处理。
[0076] 另一方面,如果确定需要读取的数据是控制数据,则在方框640,用户模块130可以从对应的控制数据接收缓存块124读取该控制数据。在方框610和620,用户模块130可以确定哪些控制数据接收缓存块124找存在着未被读取的控制数据,因此,在方框640,用户模块130可以从这些控制数据接收缓存块124中读取这些控制数据。用户模块130可以确定所有未被读取的控制数据的数据量,并且为这些控制数据分配用户数据缓存。用户模块130可以对所有未被读取的控制数据发起读请求并且将这些控制数据写入所分配的用户数据缓存中。
[0077] 图7示出了适合实现本发明的实施例的EPA设备700的方框图。EPA设备700可以用来实现如图1和图2中所示的EPA设备10。
[0078] 如图所示,EPA设备700可以包括处理器710。处理器710控制EPA设备700的操作和功能。例如,在某些实施例中,处理器710可以借助于与其耦合的存储器720中所存储的指令730来执行各种操作。存储器720可以是适用于本地技术环境的任何合适的类型,并且可以利用任何合适的数据存储技术来实现,包括但不限于基于半导体的存储器件、磁存储器件和系统、光存储器件和系统。尽管图7中仅仅示出了一个存储器720,但是本领域技术人员可以理解,EPA设备700可以包括更多个物理上不同的存储器720。
[0079] 处理器710可以是适用于本地技术环境的任何合适的类型,并且可以包括但不限于通用计算机、专用计算机、微处理器、数字信号处理器(DSP)以及基于处理器的多核处理器架构中的一个或多个多个。EPA设备700也可以包括多个处理器710。处理器710与收发器740耦合,收发器740可以借助于通信接口和/或其他部件来实现信息的接收和发送。
[0080] 当EPA设备700执行上述各种功能时,处理器710和收发器740可以在存储器720中的指令730的控制下配合操作,以实现上文参考图3至图6描述的过程300至600中的EPA设备10的各个模块的功能。上文参考图1至图6所描述的所有特征均适用于EPA设备700,在此不再赘述。
[0081] 本发明可以实现为方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。
[0082] 在一个或多个示例性设计中,可以用硬件、软件、固件或它们的任意组合来实现本发明所述的功能。例如,如果用软件来实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码来传输。
[0083] 本文公开的装置的各个单元可以使用分立硬件组件来实现,也可以集成地实现在一个硬件组件,如处理器上。例如,可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本发明所描述的各种示例性的逻辑块、模块和电路。
[0084] 本领域普通技术人员还应当理解,结合本发明的实施例描述的各种示例性的逻辑块、模块、电路和算法步骤可以实现成电子硬件、计算机软件或二者的组合。
[0085] 本发明的以上描述用于使本领域的任何普通技术人员能够实现或使用本发明。对于本领域普通技术人员来说,本发明的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本发明的精神和保护范围的情况下应用于其它变形。因此,本发明并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。