一种用于工业以太网的站点同步系统及方法与流程

文档序号:13763092阅读:199来源:国知局
一种用于工业以太网的站点同步系统及方法与流程

本发明涉及电子信息技术领域,尤其涉及一种用于工业以太网的站点同步系统及方法。



背景技术:

在目前常用的以太网控制自动化技术(EtherCAT)方案中,通过从站采用ASIC达到了硬实时,而主站则是基于高性能CPU的软解决方案,使得系统在运行过程中的最小循环周期受制于主站CPU,若主站所采用的CPU性能不够高,或者操作系统实时性不足,就会导致其循环周期增大。

影响操作系统实时性的因素有很多,比如在基于目前的EtherCAT协议的应用中,主站协议需要不断从操作系统获取定时器时钟,由于操作系统存在时钟抖动会造成主站启动报文发出的时间抖动、处理周期数据和非周期数据时间的抖动。主站直接通过NIC发出EtherCAT报文,就会引起数据帧每次发出时间的抖动,从而影响主站设备的实时性能。并且由于系统中控制设备的多样性,在实际应用中,整个系统需要整合基于不同协议下的工业以太网设备,此时采用同一个基于cpu软件处理的主站进行同步,不可避免会存在很大的抖动,使得不同协议之间的同步性能很差,难以满足主站设备的实时性能。



技术实现要素:

本发明的实施例提供一种用于工业以太网的站点同步系统及方法,能够解决由于操作系统和协议栈的抖动导致时间不准确的问题。

为达到上述目的,本发明的实施例采用一种用于工业以太网的站点同步系统,包括:主控处理器、与所述主控处理器通过总线相连的FPGA、NIOS、时钟计数器、主站和主站对应的从站,所述NIOS至少用于所述站点控制系统的速度环和位置环的计算加速,或者所述主控处理器用于器进行速度环和位置环的计算;

所述时钟计数器设置在所述FPGA中,所述主站通过Avalon-MM(Avalon Memory Map总线接口,为Altera提供的一套完成的系统总线标准,并用于FPGA产品中)接口连接所述主控处理器,参考时钟参数由所述时钟计数器向所述主站提供,所述主站用于通过所述时钟计数器发送的参考时钟参数进行时钟同步;

所述主站通过网口与对应的从站相连,所述主站用于向所述主站对应的从站发送太网帧,并用于解析所述主站对应的从站返回的以太网帧,所述主站还用于向对应的从站发送时钟同步包;

所述主站对应的从站用于根据所述主站发送的时钟同步包进行时钟同步。

其中,所述主控处理器包括ARM,所述主控处理器用于各个主站的初始化配置,并用于发送邮箱数据,还用于对各个从站的进行初始化操作,并计算从站的所需的指令数据,各个从站的控制寄存器的数据由所述主控处理器读写访问。

且每一个主站通过网口与至少一个对应的从站相连,各个网口对应连接不同的伺服设备和/或IO设备,具体的,可以有部分主站的网口不连接从站,主站可以配置成关闭模式;各个网口用于传输应的小数据包。

且所述站点控制系统采用至少一种工业以太网协议,不同的工业以太网协议对应承载到不同的网口;各个工业以太网协议的参考时钟为设置在所述FPGA中的所述时钟计数器。

在现有的基于EtherCAT的协议的站点控制系统中,由于操作系统和协议栈的抖动,传统的主站在数据帧上的时间戳存在很大的误差,导致时间戳不准确。而第一个从站使用ASIC,基本不存在打时间戳会出现抖动的问题,所以从第一个从站往数据帧上打时间戳相对准确;且传统的主站发送的所有的数据都会经过第一个从站,之后再转发到后续从站,从而将第一个从站的时间信息发送给后续所有的从站,因此一般使用第一个从站作为参考时钟来同步后续所有的EtherCAT从站时钟。本发明实施例提供的站点同步系统及方法,使用FPGA中的时钟计数器作为授时的时间源及周期性数据包发送的定时器,可以保证发包的时间及数据包中的时间戳准确无误,解决了现有技术中由于操作系统和协议栈的抖动导致时间戳不准确的问题。且缩短了周期性数据的循环周期,定时发包及实时解析接收到的工业以太网包,处理器无需关心发包和解包的过程,大幅提高整个主站系统的处理能力,解决由于操作系统和软件协议栈的抖动导致实时处理能力低的问题,还能够提供主站授时功能,协同从站间的同步操作。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1-3为本发明实施例提供的系统架构示意图;

图4为本发明实施例提供的周期性数据的任务时间分配的具体实例的示意图;

图5a为本发明实施例提供的主站的发送控制的流程示意图;

图5b为本发明实施例提供的主站的接收控制的流程示意图;

图6为本发明实施例提供的一种发送时序的具体实例的示意图;

图7为本发明实施例提供的一种周期性数据和非周期性数据发送冲突的具体实例的示意图;

图8为本发明实施例提供的一种非周期性报文进行拆分发送的示意图;

图9为本发明实施例提供的一种周期性数据发送的流程示意图;

图10为本发明实施例提供的一种非周期性数据发送的流程示意图。

具体实施方式

为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

本发明实施例提供一种用于工业以太网的站点同步系统,如图1所示,包括:主控处理器、与所述主控处理器通过总线相连的FPGA(Field-Programmable Gate Array,现场可编程门阵列)、NIOS(一种采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器)、时钟计数器、主站和主站对应的从站,所述NIOS至少用于所述站点控制系统的速度环和位置环的计算加速,或者所述主控处理器用于器进行速度环和位置环的计算,并可以通过NIOS的加速功能提高系统的处理效率。

本实施例中,设置了多个主站的FPGA也可称为FPGA主站,从站也可以称为EtherCAT(以太网控制自动化技术)从站。具体的,主站的时钟计数器作为参考时钟并用于同步所有网络上的设备,如EtherCAT/PowerLink等;主站主要用于数据包的发包解包;主站的控制寄存器的数据由ARM(Advanced RISC Machine,先进的精简指令集处理器)写入;采用FPGA的NIOS进行多轴速度环/位置环计算加速,也可以直接用ARM进行速度环和位置环的计算。以提高实时性并减轻ARM侧的负担;FPGA定时产生中断给NIOS和ARM,之后获取下次发包的数据;主站可配置周期性发送分布时钟同步包,尤其是本实施例应用在伺服周期较长的场景中;

所述时钟计数器设置在所述FPGA中,如图2所示的,所述主站通过Avalon-MM接口连接所述主控处理器,参考时钟参数由所述时钟计数器向所述主站提供,所述主站用于通过所述时钟计数器发送的参考时钟参数进行时钟同步。

需要说明的是,对于FPGA主站只使用单网口的情况,在本实施例的具体应用中,可以用主站时间作为参考时间,也可以使用主站对应的第一个在DC模式下支持DC功能的从站的时间作为参考时间,这里推荐使用主站时间作为参考时间;而对于FPGA主站存在多网口的情况,则必须使用主站的时间作为参考时间。

在本实施例中,所述主站通过网口与对应的从站相连,所述主站用于向所述主站对应的从站发送太网帧,并用于解析所述主站对应的从站返回的以太网帧,所述主站还用于向对应的从站发送时钟同步包。所述主站对应的从站用于根据所述主站发送的时钟同步包进行时钟同步。

在本实施例中,所述主控处理器可以采用ARM,所述主控处理器用于各个主站的初始化配置,并用于发送邮箱数据,还用于对各个从站的进行初始化操作,并计算从站的所需的指令数据,各个从站的控制寄存器的数据由所述主控处理器读写访问。其中,FPGA主站配置为周期性发送固定的数据包的模式,ARM则配置相应的周期性描述符。

具体的,可以采用帧头寄存器作为本实施例中的寄存器。例如:根据以太网协议,以太网帧包括目的地址,源地址,帧类型,数据和FCS(Frame Check Sequence,帧校验序列)。本实施例中采用如表1所示的帧头寄存器,主要包含目的地址,源地址,帧类型(比如:EtherCAT为0x88A4),Ethercat头的信息器。目的地址、源地址、帧类型只需要初始化定义一次即可。

表1

其中,可以通过描述符buffer来存储每个子报文的操作内容及数据存放的地址(类似DMA(Directional Memory Access,直接内存访问)的Descriptor buffer),描述符寄存器如表2所示。本实施例中,周期性寄存器和非周期性的描述符的结构大体相同,区别在于周期性描述符只对应一个数据帧,但是非周期的描述符对应多个数据帧。

表2

如表2所示,每个描述符从0xN0-0xN0+10的描述内容对应一个子报文,多个描述符存放在一个RAM(Random-Access Memory,随机存取存储器)里面构成一个描述符buffer,每次ARM/NIOS往描述符Buffer里面写入每个子报文对应的描述符,同时FPGA解析这些描述符,并将需要往slave中写的数据从WriteMemory Address读出并组织成EtherCAT数据帧发往从站。解析模块则将返回的数据帧实时解析,在数据帧收到的时候即开始数据解析过程,,并将解析出的数据写入到Read Memory Address指定的地址,从而通过FPGA主站实现实时解包,相对于传统的数据帧全部收完后才解析的方案,本实施例的实时性和灵活性更强。

其中,对于周期性的发送数据,FPGA主站根据描述符中的是否有后续报文标志(M)来决定插入FCS或者继续添加后续报文。而对于非周期性的发送数据,FPGA主站按照描述符里面的顺序发数据帧。

本实施例中,所述NIOS至少用于所述站点控制系统的速度环和位置环的计算加速,或者所述主控处理器用于器进行速度环和位置环的计算。具体的,FPGA主站在运行过程中产生不同的中断分别给NIOS和ARM,对于周期性数据,FPGA主站完成数据的接收后,通过中断通知NIOS处理接收到的数据,中断发送给NIOS后,NIOS进行速度环和位置环的计算;对于非周期性数据,FPGA主站完成数据的接收后通过中断通知ARM处理接收到的数据。同时,FPGA主站在异常情况下也发送中断通知给ARM进行处理。本实施例中,ARM中的中断寄存器具体如表3所示

表3

在本实施例中,对于整个系统中从站的节点数目过多,导致数据包过长、循环周期变大的问题,采用多个网口连接不同的伺服或IO设备,从而把数据量大的数据包分解成不同网口上的小数据包发出,降低每个网口负载的数据量,从而缩短循环周期从而提高系统的性能。具体如图3所示的,每一个主站通过网口与至少一个对应的从站相连,各个网口对应连接不同的伺服设备和/或IO设备;具体的,可以有部分主站的网口不连接从站,主站可以配置成关闭模式。其中,各个网口用于传输应的小数据包,对应各个网口的小数据包由数据量大于阈值的数据包分解得到。

进一步的,如图3所示,通过FPGA连接的多个主站,每一个主站设备都可以设置一个网口,从而FPGA主站具备并发多个网口的架构,从而支持多网口冗余和从站的热插拔功能。且其中的多个主站设备基于同一个时钟计数器作为参考时钟,并进行时钟同步。且在本实施例中,可以在多个网口上分别配置不同的通信协议,由于各网口的主站设备的时钟是同步的,因此实现了多个协议的通信制式同时、同步地运行。

在本实施例中,所述站点控制系统采用至少一种工业以太网协议,不同的工业以太网协议对应承载到不同的网口。其中,各个工业以太网协议的参考时钟为设置在所述FPGA中的所述时钟计数器。本实施例中,对于不同协议之间的同步,具体将不同的工业以太网协议对应到不同的网口上,且所有的协议的参考时钟都使用FPGA主站的时钟计数器,使得所有的协议的从站都同步于主站的时钟,不同协议之间的时钟都通过一个精准的主站时钟实现间接同步,从而实现了不同协议之间的混动。

在基于EtherCAT的协议的站点控制系统中,由于操作系统和协议栈的抖动,传统的主站在数据帧上打时间戳存在很大的误差,导致时间戳不准确。而第一个从站使用ASIC,基本不存在打时间戳会出现抖动的问题,所以从第一个从站往数据帧上打时间戳相对准确;且传统的主站发送的所有的数据都会经过第一个从站,之后再转发到后续从站,从而将第一个从站的时间信息发送给后续所有的从站,因此一般使用第一个从站作为参考时钟来同步后续所有的EtherCAT从站时钟。

而在本实施例中,采用FPGA作为EtherCAT协议下的主站,将主站发包和解包等逻辑在FPGA中进行硬化,即定时发送数据包工作等在FPGA中进行处理,从而大幅减少报文发出时间的抖动。同时所有的EtherCAT从站设备的时钟都同步于主站时钟,这样也可以使得主站和从站之间几乎完全同步,主站和从站之间的同步脉冲抖动会远小于1us。且对于FPGA主站,ARM负责FPGA主站的初始化及配置等流程,负责发送邮箱数据及对所有从站的初始化操作。其中NIOS负责速度环和位置环的计算加速,从而提高实时性。同时大幅提高主站的循环周期等性能。从而避免了传统意义上的操作系统和协议栈的抖动,且发包时间可控且完全可以测量,从而提高时间戳的准确度,避免了现有技术中由于操作系统和协议栈的抖动导致时间不准确的问题。

本实施例还提供一种用于工业以太网的站点同步方法,具体用于系统,该系统具体可以参考本实施中,如图1-3所示的站点控制系统,其中包括:主控处理器、与所述主控处理器通过总线相连的FPGA、NIOS、时钟计数器、主站和主站对应的从站,所述NIOS用于所述站点控制方法的速度环和位置环的计算加速。所述时钟计数器设置在所述FPGA中,所述主站通过Avalon-MM接口连接所述主控处理器。所述主站通过网口与对应的从站相连。

所述方法包括:

从所述时钟计数器获取参考时钟参数,并将所述参考时钟参数向所述主站发布,并控制所述主站通过所述时钟计数器发送的参考时钟参数进行时钟同步。

再控制所述主站向对应的从站发送时钟同步包,并控制所述主站向所述主站对应的从站发送太网帧,和/或控制所述主站解析所述主站对应的从站返回的以太网帧。

之后控制所述主站对应的从站根据所述主站发送的时钟同步包进行时钟同步。

在本实施例中,还包括:控制所述主控处理器对各个主站进行初始化配置,并发送邮箱数据。和,对各个从站的进行初始化操作,并计算从站的所需的指令数据,其中,所述主控处理器包括ARM,各个从站的控制寄存器的数据由所述主控处理器读写访问。

在本实施例中,还包括:将数据量大于阈值的数据包分解为对应各个网口的小数据包。并通过各个网口传输应的小数据包,其中,每一个主站通过网口与至少一个对应的从站相连,各个网口对应连接不同的伺服设备和/或IO设备。

在本实施例中,所述将数据量大于阈值的数据包分解为对应各个网口的小数据包包括:

根据非周期性数据的长度,检测非周期性数据与周期性数据的发送时间是否存在冲突。若存在冲突,则先在所检测的非周期性数据和周期性数据中,筛选并发送不存在冲突的数据包;并按照最大发送的报文长度将非周期性数据的子报文进行拆分,并等待周期性数据包发完后再发送。例如:周期性数据的任务时间分配可以如图4所示,其中,向上的箭头表示定时中断,Tcycle表示循环周期。由于FPGA主站按照EtherCAT协议将数据发送到网络上,需要发送的数据包分为周期性数据和非周期性数据,其中,周期性数据的优先级要高于非周期性数据,需要在指定的时间窗口内完成发送,且周期性数据内容不可拆解,而非周期性数据没有严格的时序要求,只需完成发送接收即可。

本实施例中的FPGA主站的周期性和非周期性的发送控制,可以采用如图5a所示的控制逻辑,其中,数据搬移逻辑类似于DMA控制器,只需要将指定位置的数据按照EtherCAT协议打包放入数据帧中,FCS计算逻辑负责数据帧的CRC32的计算,并将计算的CRC32加入到帧末尾。Sof产生模块则生成Sof的时刻的脉冲信号,外部逻辑会使用sof信号锁存此时刻的时间戳,供ARMW或者FRMW命令使用,用于同步时钟的校准。在DC模式下,FPGA主站需要保证数据帧在SYNC之前到达从站,可以采用如图6所示的发送时序,其中,虚线箭头表示主站发送数据帧时间,带点的虚线箭头表示从站的SYNC时间(或称为同步时间)。

并且,FPGA主站按照PHY(物理层)的时序对PHY侧的数据进行接收,并将PHY侧的数据按照EtherCAT协议进行解包处理。接收的框图如图5b所示,其中,FPGA主站需检查数据帧和FCS是否正确,并根据描述符中的内容把返回的数据写到相应的位置。FPGA主站需通过检查WKC(Working Count,工作计数)判断从站有没有完成指定的动作,如果收到的WKC和预期的WKC不一致,则需要通知ARM侧进行相应处理。FPGA主站会根据收到数据的Index来判断是周期性数据帧还是非周期性数据帧,Index小于0x80的帧为周期性数据帧,Index大于0x80的帧为非周期性数据帧。

当一个非周期性数据帧请求发送时,FPGA主站根据非周期性数据帧所需要的发送时间判断其是否和周期性数据帧的发送有冲突。如果非周期性数据帧请求发送的时间和周期性数据帧的定时发送时间的间隔无法发送非周期性数据帧的第一个子报文,则将非周期性数据帧的发送请求延迟到周期性数据发送完成后。如果非周期性数据帧请求发送的时间和周期性数据帧定时发送的时间间隔可以完成一个或多个非周期性数据帧的子报文但是无法完成发送全部的子报文,则需要将非周期性数据帧进行分割后发送。分割依据是最大能发送的子报文时间小于非周期性数据帧请求发送的时间和周期性数据帧定时发送的时间间隔。在没有使能周期性数据帧发送的时刻,比如在初始化阶段,并不需要分割非周期性数据帧,只有在周期性数据发送期间才需要分割非周期性数据帧。如果分割后仍然有冲突,则FPGA主站需要报错。例如:周期性数据和非周期性数据发送冲突的时序如图7所示,非周期性报文进行拆分发送的时序如图8所示,在图7和图8中,实线框表示周期性数据帧,虚线框表示非周期性数据帧,由图所示,当非周期性报文的最长子报文发送所需的时长小于周期性数据发送到下次周期的间隔时间时,即可以避开冲突,本实施例中具体可以采取减小单个子报文的长度、减小周期性数据帧的长度或者加大循环周期的方案以避开冲突。或者,本实施例中也可以不对报文的长度或周期进行改动,而是直接获取冲突时间,并在冲突时间以外的时刻发送报文,从而避开冲突时间。

通过拆分非周期性数据避免冲突后,周期性数据和非周期性数据发送流程分别如图9和图10所示。进一步的,非周期描述符将在数据帧正确返回后删除,周期性描述符不会自动删除,只有ARM侧进行更改。

进一步的,本实施例中,主站可以实时检测异常并对异常进行处理,其中包括:若数据发送冲突,则主站查找发送冲突的原因,对照数据发送部分章节进行解决;若数据帧丢失,则主站通知ARM进行处理,一般情况下需要重发。若数据帧异常或错误,则主站通知ARM进行处理,一般情况下需要重发;若WKC错误,则主站通知ARM进行处理。

在现有的基于EtherCAT的协议的站点控制系统中,由于操作系统和协议栈的抖动,传统的主站在数据帧上打时间戳存在很大的误差,导致时间戳不准确。而第一个从站使用ASIC,基本不存在打时间戳会出现抖动的问题,所以从第一个从站往数据帧上打时间戳相对准确;且传统的主站发送的所有的数据都会经过第一个从站,之后再转发到后续从站,从而将第一个从站的时间信息发送给后续所有的从站,因此一般使用第一个从站作为参考时钟来同步后续所有的EtherCAT从站时钟。本发明实施例提供的站点同步系统及方法,使用FPGA中的时钟计数器作为授时的时间源及周期性数据包发送的定时器,可以保证发包的时间及数据包中的时间戳准确无误,解决了现有技术中由于操作系统和协议栈的抖动导致时间戳不准确的问题。且缩短了周期性数据的循环周期,定时发包及实时解析接收到的工业以太网包,处理器无需关心发包和解包的过程,大幅提高整个主站系统的处理能力,解决由于操作系统和软件协议栈的抖动导致实时处理能力低的问题,还能够提供主站授时功能,协同从站间的同步操作。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1