控制器局域网络的同步方法

文档序号:7985119阅读:196来源:国知局
控制器局域网络的同步方法
【专利摘要】本发明提供了一种控制器局域网络的同步方法,包括:每个节点的数据帧的封装:在每个节点的网络控制器从控制器局域网络接收到数据时,将设置在节点的网络控制器上的时钟部件的第一当前时钟值与所述数据封装为数据帧;主控设备和网络控制器之间的时间协调:基于主控设备的主控时钟的时钟值或者时钟部件的第二当前时钟值,协调主控时钟与时钟部件的时钟;主节点与从节点之间的时间的同步:基于同步触发消息,将主节点的网络控制器的时钟部件的第三当前时钟值广播至从节点的网络控制器,从节点网络控制器根据接收的第三当前时钟值更新自身时钟部件的时钟。本发明能够确定消息数据到达的精确时间,有利于消除时间偏差,提高控制器局域网络的同步精度。
【专利说明】控制器局域网络的同步方法
【技术领域】
[0001]本发明涉及一种控制器局域网络的同步方法,尤其涉及一种用于高精度时钟同步的控制器局域网络的同步方法。
【背景技术】
[0002]同步基于CANopen协议的控制器局域网络(CAN)中的时钟,有一个基础要求是主节点能够取得CANopen消息到达主节点的精确时间。现有技术的实现方式中,为了满足上层应用层获取CANopen消息数据到达的时间,CAN驱动层对每个收到的数据都会打上时间戳,距离CAN数据到达最近的时间点是CAN数据接收中断函数中所确定的时间点。
[0003]如图1所示,目前主流厂商生产的CAN卡11在从CAN网络10接收到CAN帧100之后,将其传输至个人计算机(PC) 12,PC 12采取的方法是在驱动层121的中断函数中获取PC时钟值,即高精度计时器寄存器123的时钟值,并将其作为CAN帧100的时间戳124,之后交由应用层122处理。由于此时的PC时钟值与数据真正的到达时间之间存在偏差,即CAN卡11接收CAN帧100的时间到中断响应中获取PC时钟值之间的时间,并且这个偏差存在抖动。
[0004]由于Iinux等操作系统的内核是可抢占的,同时驱动层121在内核中获取PC时钟时,受系统负载、调度以及外部事件等等影响,相邻两个数据到达产生的偏差是不一样的,因此,CANopen协议如果利用这种存在偏差和抖动的时间去同步网络中的各个设备,效果肯定是不理想的。

【发明内容】

[0005]本发明要解决的技术问题是提供一种控制器局域网络的同步方法,能够确定消息数据到达的精确时间,有利于消除时间偏差、提高同步精度。
[0006]为解决上述技术问题,本发明提供了一种控制器局域网络的同步方法,所述控制器局域网络包括主节点和从节点,每个节点包括主控设备和与其耦合的网络控制器,所述方法包括:
[0007]每个节点的数据帧的封装:在每个节点的网络控制器从控制器局域网络接收到数据时,将设置在所述节点的网络控制器上的时钟部件的第一当前时钟值与所述数据封装为数据帧;
[0008]所述主控设备和网络控制器之间的时间协调:基于所述主控设备的主控时钟的时钟值或者所述网络控制器的时钟部件的第二当前时钟值,协调所述主控设备的主控时钟与所述网络控制器的时钟部件的时钟;
[0009]所述主节点与所述从节点之间的时间的同步:基于同步触发消息,以所述主节点的网络控制器的时钟部件的第三当前时钟值为基准,将主节点的网络控制器的时钟部件的第三当前时钟值广播至从节点的网络控制器,从节点网络控制器根据所接收的第三当前时钟值更新自身的时钟部件的时钟。[0010]可选地,所述主节点与所述从节点之间的时间的同步包括:
[0011]步骤a,基于所述同步触发消息,分别记录所述控制器局域网络内主节点的网络控制器的时钟部件的第三当前时钟值以及从节点的网络控制器的时钟部件的第四当前时钟值,分别记为主节点同步时钟值tm_sync和从节点同步时钟值ts_sync ;
[0012]步骤b,将所述主节点同步时钟值tm_sync广播至从节点;
[0013]步骤c,所述从节点根据所述从节点同步时钟值ts_sync以及接收到的主节点同步时钟值tm_sync更新自身的时钟部件的时钟。
[0014]可选地,所述步骤c包括:
[0015]步骤cl,所述从节点收到所述主节点同步时钟值tm_sync后,采用如下公式重设自身的时钟部件的时钟 ts:ts=ts_sync+ Δ tm_ts/n+ Δ ts,其中,Δ tm_ts=tm_sync_ts_sync, Δ ts=ts_recv_ts_sync, ts_recv为所述从节点收到所述主节点同步时钟值tm_sync时从节点的时钟部件的第五当前时钟值,η为大于I的正整数;
[0016]步骤c2,重复所述步骤a、b、cl多次。
[0017]可选地,基于所述同步触发消息,分别记录所述控制器局域网络内主节点的网络控制器的第三当前时钟值以及从节点的网络控制器的时钟部件的第四当前时钟值包括:
[0018]在所述主节点和从节点的网络控制器从控制器局域网络接收到所述同步触发消息时,将所述主节点和从节点自身的时钟部件的第三当前时钟值和第四当前时钟值分别与所述同步触发消息封装为数据帧;
[0019]将所述数据帧通过通信接口传输至所述主节点和从节点各自的主控设备。
[0020]可选地,所述主控设备和网络控制器之间的时间协调包括:
[0021]各节点的主控设备定时从该节点自身的时钟部件读取所述时钟部件的第二当前时钟值;
[0022]各节点以读取的时钟部件的第二当前时钟值更新自身主控设备的主控时钟。
[0023]可选地,所述主控设备采用如下方式从所述时钟部件读取所述第二当前时钟值:所述时钟部件定时向所述主控设备上报所述第二当前时钟值。
[0024]可选地,所述主控设备和网络控制器之间的时间协调包括:
[0025]将各节点的主控设备的主控时钟的时钟值定时写入至自身的时钟部件中以对其进行更新。
[0026]可选地,所述主控设备为具有主机总线的计算机,所述主控设备采用如下方式将所述主控时钟的时钟值写入至所述时钟部件:
[0027]关中断;
[0028]读取所述主控时钟的时钟值;
[0029]锁定所述主控设备的主机总线;
[0030]将所述主控时钟的时钟值经由所述主机总线写入至所述时钟部件中;
[0031]解除对所述主机总线的锁定;
[0032]开中断。
[0033]可选地,所述同步触发消息由所述控制器局域网络中的任一节点发出。
[0034]可选地,所述方法还包括:在每个节点的数据帧的封装之后,将所述数据帧通过通信接口传输至所述主控设备。[0035]与现有技术相比,本发明具有以下优点:
[0036]本发明实施例的控制器局域网络的同步方法中,在控制器局域网络内各节点的网络控制器处设置独立的时钟部件,之后基于同步触发消息,记录主节点的时钟部件的第三当前时钟值以及从节点的时钟部件的第四当前时钟值,分别记为为主节点同步时钟值tm_sync和从节点同步时钟值ts_sync,并将主节点同步时钟值tm_sync广播至各从节点,从节点根据先前记录的从节点同步时钟值ts_sync以及接收到的主节点同步时钟值tm_sync更新自身的工作时钟。由于在网络控制器上设置了独立的时钟部件,因而可以将同步触发消息到达各节点的精确时间记录下来,避免了操作系统对中断响应的不确定性和不稳定性,使得各节点之间的同步更精确。
[0037]进一步地,本发明实施例的控制器局域网络的同步方法还包括节点的数据帧的封装,当网络控制器从控制器局域网络接收到数据时,将接收到的数据与时钟部件的第一当前时钟值封装为数据帧,并经由通信接口传输至主控设备,由于数据帧中包含有数据到达时的准确时间,因而主控设备中的中断响应无需进行时间戳的添加动作,主控设备的负载以及外部事件并不会对记录的数据到达时间造成影响。
[0038]此外,本发明实施例中,控制器局域网络节点的主控设备与网络控制器的时钟部件的时钟可以协调,可以以时钟部件为基准,也可以以主控设备的主控时钟为基准,使得整个节点是基于同一个时钟工作的。
【专利附图】

【附图说明】
[0039]图1示出了现有技术中CAN帧的时间戳获取过程;
[0040]图2示出了本发明实施例的控制器局域网络的同步方法中主节点与从节点之间的同步的流程示意图;
[0041]图3示出了本发明实施例的控制器局域网络中各节点的结构框图;
[0042]图4示出了本发明实施例中在接收到同步触发消息后时间戳的获取过程;
[0043]图5示出了本发明实施例的控制器局域网络中主节点和从节点的同步过程。
【具体实施方式】
[0044]下面结合具体实施例和附图对本发明作进一步说明,但不应以此限制本发明的保护范围。
[0045]控制器局域网络包括主节点和从节点,其中每个节点包括主控设备以及与其耦合的网络控制器,本实施例的控制器局域网络的同步方法包括节点的数据帧的封装、主控设备和网络控制器之间的时间协调以及主节点和从节点之间的时间的同步。其中,每个节点的数据帧的封装包括:在每个节点的网络控制器从控制器局域网络接收到数据时,将设置在所述节点的网络控制器上的时钟部件的第一当前时钟值与所述数据封装为数据帧;主控设备和网络控制器之间的时间协调包括:基于所述主控设备的主控时钟的时钟值或者所述网络控制器的时钟部件的第二当前时钟值,协调所述主控设备的主控时钟与所述网络控制器的时钟部件的时钟;主节点和从节点之间的时间的同步包括:基于同步触发消息,以所述主节点的网络控制器的时钟部件的第三当前时钟值为基准,将主节点的网络控制器的时钟部件的第三当前时钟值广播至从节点的网络控制器,从节点网络控制器根据所接收的第三当前时钟值更新自身的时钟部件的时钟。
[0046]图2示出了本实施例中主节点与从节点之间的时间的同步的流程示意图,包括:
[0047]控制器局域网络步骤a,基于所述同步触发消息,分别记录所述控制器局域网络内主节点的网络控制器的第三当前时钟值以及从节点的网络控制器的时钟部件的时钟部件的第四当前时钟值,分别记为主节点同步时钟值tm_sync和从节点同步时钟值ts_sync ;
[0048]步骤b,将所述主节点同步时钟值tm_sync广播至从节点;
[0049]步骤c,所述从节点根据所述从节点同步时钟值ts_sync以及接收到的主节点同步时钟值tm_sync更新自身的时钟部件的时钟。
[0050]图3示出了本实施例的控制器局域网络内各节点的结构框图,主要包括网络控制器22、时钟部件21、记录模块23、通信接口 24以及主控设备25。
[0051]时钟部件21设置在网络控制器22上,例如可以设置在网络控制器22的外部或者集成在其内部,具体可以采用各种专用的高精度计时器或者可编程器件来实现。作为一个非限制性的例子,本实施例中,时钟部件21采用网络控制器22外部的现场可编程门阵列(FPGA)来实现。时钟部件21是独立的高精度时钟,在节点启动时自动运行,能够为节点提供独立的高精度基准时钟。
[0052]记录模块23在网络控制器22从控制器局域网络接收到网络数据时,能够记录时钟部件21的当前的时钟值。例如在网络控制器22接收到同步触发消息时,将时钟部件21的第一当前时钟值与接收到的同步触发消息封装在一起,形成数据帧。当然,根据具体实施例的不同,在网络控制器22接收到同步触发消息时,也可以将时钟部件21的第一当前时钟值记录为与该同步触发消息相关联的数据,但二者并不封装在一起。
[0053]本实施例中,记录模块23可以采用控制器局域网络控制器22外部的FPGA来实现,优选地,可以采用同一 FPGA器件来实现时钟部件21和记录模块23。
[0054]封装形成的数据帧通过通信接口 24传输至主控设备25。通信接口 24可以是各种串行、并行的数据传输接口,本实施例中采用的是PCIe接口,PCIe接口的双单工连接能够提供更高的传输速率和质量,第三代PCIe能够达到每通道lGB/s的传输速率,采用高速高宽带接口来实现通信接口 24,能够实现控制器局域网络数据的传输实时性。主控设备25可以是和控制器局域网络控制器22配合使用的各种计算机设备等,本实施例中主控设备25例如可以是个人计算机(PC)。
[0055]作为一个非限制性的例子,图4示出了一具体实施例中CAN帧的时间戳获取过程,CAN卡31中的CAN控制器(未示出)从CAN网络30中接收CAN帧300,在主节点与从节点的同步过程中,该CAN帧可以是上述同步触发消息。在接收到CAN帧300时,从CAN卡31中的32位高精度计时器311 (即时钟部件)中获取第一当前时钟值,并将其作为硬件时间戳312与CAN帧300封装在一起。封装后的CAN帧300和硬件时间戳312传输至主控设备32,经由驱动层321后直接传输至上层的应用层322,驱动层321并不需要进行时间戳的添加动作。由于硬件时间戳312的封装过程是在CAN卡31中通过独立的时钟部件(即32位高精度计时器311)以及记录模块来自动完成的,驱动层321不再负责添加时间戳,与主控设备32的系统运行相独立,从而避免了 PC等主控设备32中系统负载、调度等造成的影响,最大程度地减小了干扰,使得抖动和延迟最小化。
[0056]参考图5,采用上述记录机制,网络中的各个节点(包括主节点以及一个或多个从节点)基于同一同步触发消息sync,分别记录该同步触发消息到达时主节点的网络控制器的时钟部件的第三当前时钟值以及从节点的网络控制器的时钟部件的第四当前时钟值,分别记为主节点同步时钟值tm_sync和从节点同步时钟值ts_sync,即完成图1中的步骤a。其中,该同步触发消息sync可以是网络中任何一个节点发出的。
[0057]结合图1和图5,执行步骤b,主节点将记录的主节点同步时钟值tm_sync广播至从节点;之后执行步骤c,从节点根据从节点同步时钟值ts_sync以及接收到的主节点同步时钟值tm_sync更新自身的时钟部件的时钟ts。
[0058]优选地,本实施例中步骤c包括如下步骤,步骤cl:从节点收到主节点同步时钟值tm_sync后,采用如下公式重设自身的时钟部件的时钟ts:ts=ts_sync+Δ tm_ts/n+Δ ts,其中,Δ tm_ts=tm_sync - ts_sync, Δ ts=ts_recv - ts_sync, ts_recv 为从节点收至丨J主节点同步时钟值tm_sync时从节点的时钟部件的第五当前时钟值,η为大于I的正整数,例如可以选取10 ;步骤c2:重复上述步骤b、c、dl多次,使得从节点的时钟部件的时钟ts逐步趋近于主节点的时钟部件的时钟tm。
[0059]仍然参考图3,本实施例中,在每一节点内的网络控制器22上设置有时钟部件21,其时钟值与主控设备25的主控时钟的时钟值相独立,为了实现更好的网络同步效果,主控设备25和网络控制器22之间的时间需要进行协调,协调过程可以基于主控设备25的主控时钟的时钟值或者网络控制器22的时钟部件的第二当前时钟值。
[0060]根据具体实施例的不同,可以以时钟部件21为基准进行时钟的协调,具体包括:主控设备25定时从时钟部件21读取时钟部件21的第二当前时钟值;采用时钟部件21的第二当前时钟值更新主控设备25自身主控设备25的主控时钟(例如PC时钟)。其中,该节点内可以包括专用的时钟接口,以供主控设备25通过该时钟接口读取时钟部件21的当前时钟值。
[0061]时钟部件21的当前时钟值的获取方式至少有以下两种:
[0062]初始化时将时钟部件21映射到主控部件25的内存中,并在驱动中提供一个IO操作来实现对时钟部件21的读写,为了防止获取时钟的及时性和准确性受到影响,可以采取比较设置的方法,即获取主控时钟一获取时钟部件21的第二当前时钟值一获取主控时钟,如果前后两次获取的主控时钟比较接近,则认为此次获取的时钟部件21的第二当前时钟值有效。获取时钟部件21的第二当前时钟值可以包括以下两个数据传输过程:一是读时钟请求数据到达通信接口 24的过程;二是时钟数据从通信接口 24到达请求者的过程,两个动作过程都会受到系统的影响,而且这种方式如果失败则需要多次尝试;
[0063]对时钟部件21进行配置,根据预设的频率定时上报一特定格式的数据包或者直接封装成CAN帧的格式,其中包含有时钟部件21的第二当前时钟值,主控设备25在接收到该数据后,即获取了时钟部件21的第二当前时钟值。由于此方式只有一次数据传输过程,因而可以减少时钟获取过程中受影响的概率,是一种优选的方式。
[0064]根据具体实施例的不同,还可以以主控设备25自身的主控时钟为基准进行时钟的协调,具体包括:将主控设备25的主控时钟的时钟值定时写入至自身的时钟部件21中,以对时钟部件21进行更新。
[0065]以主控设备25为个人计算机为例,对时钟部件21的写入过程不能有太大的延迟,否则会导致整个系统同步时间错乱。写入过程受到多种因素影响,例如终端、多核CPU以及总线上的突发数据等都会造成写入操作的延迟。现代主流处理器包括Intel传统的前端总线(FSB)、QPI总线和AMD的HT总线,一般存在两层总线:主机(host)总线和PCI总线或者其他IO总线。Host总线连接多个CPU和内存(或者内存控制器集成于处理器内部)、host/PCI桥(北桥),PCI总线连接host/PCI桥和PCI主从设备及PCI/ISA桥即通常的南桥。无论哪种方式PCI设备要将自己的寄存器映射到内存中,需要通过北桥访问host总线,然后到达内存。内存的映射和访问由bridge + DMA完成,而且在多处理器中,CPU也是共享总线的。IA32体系CPU的#lock引脚连接到北桥芯片的#lock引脚,当带lock前缀的指令执行时,北桥芯片会拉起#lock电平,从而锁住总线,直到该指令执行完毕再放开。这就避免了在对时钟同步的过程中,总线上出现大量的数据交互或者总线被另外CPU占据造成的延迟。所以对时钟进行同步时可以通过锁总线避免总线被占用而造成的影响。
[0066]具体地,将主控时钟的当前值写入至时钟部件21的处理过程可以包括:关中断;读取主控时钟的时钟值;锁定主控设备25的host总线;将主控时钟的当前值通过host总线、通信接口 24写入到时钟部件21中对其进行更新;解除对host总线的锁定;打开中断。
[0067]将主控时钟定时写入至时钟部件21中可以改善同步效果,例如可以在驱动加载时启动定时器,并在定时器处理函数中进行上述动作,定时地以主控时钟为基准来更新时钟部件。但是由于上述过程涉及锁定主机总线以及关中断,因而为了避免对系统改造成影响,其频率一般不宜太高。
[0068]本实施例的控制器局域网络的同步方法包括节点的数据帧的封装,在网络控制器从控制器局域网络接收到数据时,将该数据与节点设置在网络控制器上的时钟部件的第一当前时钟值封装为数据帧;之后,可以将该数据帧通过通信接口传输至主控设备。
[0069]由于数据帧中的第一当前时钟值是从网络接收到数据时获取并封装的,因而其准确度非常高,另外主控设备也不需要在中断函数中添加时间戳,避免了当前系统负载以及外部时间影响所导致的时间戳偏差的问题。关于该数据接收方法的更多详细信息还可以参考上述控制器局域网络的同步方法中的相关描述。
[0070]需要说明的是,本领域的技术人员可以知道,以上描述中的第一当前时钟值至第五当前时钟值在数值上可以是相同的,也可以是不同的。
[0071]本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
【权利要求】
1.一种控制器局域网络的同步方法,所述控制器局域网络包括主节点和从节点,每个节点包括主控设备和与其耦合的网络控制器,其特征在于,包括: 每个节点的数据帧的封装:在每个节点的网络控制器从控制器局域网络接收到数据时,将设置在所述节点的网络控制器上的时钟部件的第一当前时钟值与所述数据封装为数据帧; 所述主控设备和网络控制器之间的时间协调:基于所述主控设备的主控时钟的时钟值或者所述网络控制器的时钟部件的第二当前时钟值,协调所述主控设备的主控时钟与所述网络控制器的时钟部件的时钟; 所述主节点与所述从节点之间的时间的同步:基于同步触发消息,以所述主节点的网络控制器的时钟部件的第三当前时钟值为基准,将主节点的网络控制器的时钟部件的第三当前时钟值广播至从节点的网络控制器,从节点网络控制器根据所接收的第三当前时钟值更新自身的时钟部件的时钟。
2.根据权利要求1所述的控制器局域网络的同步方法,其特征在于,所述主节点与所述从节点之间的时间的同步包括: 步骤a,基于所述同步触发消息,分别记录所述控制器局域网络内主节点的网络控制器的时钟部件的第三当前时钟值以及从节点的网络控制器的时钟部件的第四当前时钟值,分别记为主节点同步时钟值tm_sync和从节点同步时钟值ts_sync ; 步骤b,将所述主节点同步时钟值tm_sync广播至从节点; 步骤c,所述从节点根据所述从节点同步时钟值ts_sync以及接收到的主节点同步时钟值tm_sync更新自身的时钟部件的时钟。
3.根据权利要求2所述`的控制器局域网络的同步方法,其特征在于,所述步骤c包括: 步骤cl,所述从节点收到所述主节点同步时钟值tm_sync后,采用如下公式重设自身的时钟部件的时钟 ts:ts=ts_sync+Δ tm_ts/n+Δ ts,其中,Δ tm-ts=tm_sync_ts_sync,Δ ts=ts_recv-ts_sync, ts_recv为所述从节点收到所述主节点同步时钟值tm_sync时从节点的时钟部件的第五当前时钟值,η为大于I的正整数; 步骤c2,重复所述步骤a、b、cl多次。
4.根据权利要求2所述的控制器局域网络的同步方法,其特征在于,基于所述同步触发消息,分别记录所述控制器局域网络内主节点的网络控制器的第三当前时钟值以及从节点的网络控制器的时钟部件的第四当前时钟值包括: 在所述主节点和从节点的网络控制器从控制器局域网络接收到所述同步触发消息时,将所述主节点和从节点自身的时钟部件的第三当前时钟值和第四当前时钟值分别与所述同步触发消息封装为数据帧; 将所述数据帧通过通信接口传输至所述主节点和从节点各自的主控设备。
5.根据权利要求1或2所述的控制器局域网络的同步方法,其特征在于,所述主控设备和网络控制器之间的时间协调包括: 各节点的主控设备定时从该节点自身的时钟部件读取所述时钟部件的第二当前时钟值; 各节点以读取的时钟部件的第二当前时钟值更新自身主控设备的主控时钟。
6.根据权利要求5所述的控制器局域网络的同步方法,其特征在于,所述主控设备采用如下方式从所述时钟部件读取所述第二当前时钟值:所述时钟部件定时向所述主控设备上报所述第二当前时钟值。
7.根据权利要求1或2所述的控制器局域网络的同步方法,其特征在于,所述主控设备和网络控制器之间的时间协调包括: 将各节点的主控设备的主控时钟的时钟值定时写入至自身的时钟部件中以对其进行更新。
8.根据权利要求7所述的控制器局域网络的同步方法,其特征在于,所述主控设备为具有主机总线的计算机,所述主控设备采用如下方式将所述主控时钟的时钟值写入至所述时钟部件: 关中断; 读取所述主控时钟的时钟值; 锁定所述主控设备的主机总线; 将所述主控时钟的时钟值经由所述主机总线写入至所述时钟部件中; 解除对所述主机总线的锁定; 开中断。
9.根据权利要求 1至8中任一项所述的控制器局域网络的同步方法,其特征在于,所述同步触发消息由所述控制器局域网络中的任一节点发出。
10.根据权利要求1所述的控制器局域网络的同步方法,其特征在于,还包括: 在每个节点的数据帧的封装之后,将所述数据帧通过通信接口传输至所述主控设备。
【文档编号】H04L7/00GK103795519SQ201210431049
【公开日】2014年5月14日 申请日期:2012年11月1日 优先权日:2012年11月1日
【发明者】曾群, 赵大鹏 申请人:上海联影医疗科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1