专利名称:用于在总线上传输数据的方法
技术领域:
本发明涉及一种用于在总线上从一个数据源向一个数据接收器传输数据块的方法,所述的总线支持带有可变的、有限的数据元数量的帧的传输。当一个这样的数据块的数据元数量大于一个帧中可传输数据元的数量时,就必须把该数据块分配到多个帧上来传输。接收这些帧的一个数据接收器,就必须从中恢复该数据块。
如果在从数据源向数据接收器传输时未被注意地丢失了帧,或者如果当一个在传输该数据块时代表最后帧的帧不被识别为这样的帧,并且进一步地,由数据接收器较迟接收的帧归入同一个块中,那么就不可能正确恢复该数据块。
必须传输大规模的不完全适合于用一个帧的数据块的问题,在研发以CAN标准为基础的数据处理系统时,例如在研发汽车技术的控制装置时,特别突出。CAN标准良好地适用于在预定的时间段中从一个传感器向一个控制装置以及从控制装置向一个执行器传输小的数据量,以影响一个汽车马达或者汽车的其它单元的运行状态。然而在研发和优化这样一种系统的过程中常常要求在控制装置与主计算机之间传输大规模的数据量,以使与主计算机对话的研发人员可以准确和详细地跟踪控制装置的工作方式。
经CAN总线传输这样的数据量要求一个显著的额外量并且导致CAN总线传输能力的可观的负载。如果控制装置与主计算机的通信与其它的在该总线上进行的、对于待由该控制装置实现的控制任务所要求的通信进程竞争传输容量,就可能发生传输容量不足以用于所有的任务,并且可能影响装置的功能性。
通过本发明创建一种用于在总线上在一个数据源与一个数据接收器之间传输数据块的方法,所述的方法用很少的传输额外量就足够并且从而有效地利用总线上所提供的带宽。所述的方法假定,数据接收器指定它预期从一个源接收的一个数据块的格式,特别是数据元的数量。这一数据元数量可以大于在单个由总线系统支持的帧中可传输的数据元的数量。如果是这种情况,就把一个数据块的数据元分配到多个帧上,并且在总线上向接收点传输这些帧。如果N是一个待传输的数据块的数据元的数量,并且n是一个帧中可传输的最大的数据元数量,那么该数据块就完全地填满int(N/n)个帧,其中int(N/n)是小于或者等于N/n的最大整数。在传输完这些完全填满的帧后,接着再传输一个含有(N模n)个数据元的帧。如果N被n整除,那么该最后一个帧的数据元的数量也可以是零。根据接收到带有小于最大可能数据元数量n的数量的帧的事实,所述的数据接收器就可以得出结论,这涉及到数据块的最后一个帧。实际接收到的数据元数量与预期的数量N的比较使得在数据接收器方能够判断是否完全地接收了该数据块。
如果一个待传输的数据块的数据元的数量小于在一个帧中最多可传输的数据元的数量n,原则上可以不加改变地应用上述方法在int(N/n)=0的情况下,就只传输带有N个数据元的一个单个帧,所述的帧由数据接收器直接识别为该数据块的最后的帧。
如果数据块的数据元数量N与帧的数据元的最大数量n相一致,可以有一种有利的特殊调节。因为数据接收器指定了该数据块待传输的数据元的数量并且当数据接收器接收该数据块时识别这一数量,所以它在完全接收一个帧时就已经能够识别其中含有的数据块完全到达。因为没有其他的有可能丢失或者以其它方式错误地传输的帧要传输,所以在此情况下不要求传输一个没有数据元的帧,该帧用于向数据接收器表明数据块的完全传输。
有利的是由数据接收器向数据源传输的控制信息不仅指定待要传输的数据块的数据元的数量,还指定待传输的参数的时刻(或者,在周期地传输的情况下,多个时刻)以及方式和含义。
本发明的其它特征和优点将会从以下参照附图对实施例的说明中变得明确。
图1,示出一个其中可应用根据本发明的方法的示例性数据处理系统的方框图;图2示出CAN帧的结构;图3示出一个由主计算机实施的处理的流程图;图4示出,由图1中的控制装置在根据本发明的方法的范围内所实施的处理的一个流程图。
图1的方框图示出一个针对控制器,特别是汽车控制器的研发环境作为根据本发明的数据处理系统的例子。该控制器1包含一个微处理器2,一个存储部件3和一个对总线,特别是CAN总线5的接口4,汽车的许多功能单元6连接在所述的总线上,所述的功能单元6通过总线5向控制器1发送车辆运行参数的测量值和/或从控制器1接收命令并执行。所述功能单元可涉及车辆马达的曲轴上的转角检测器,该检测器向控制器1发送曲轴转角的测量值,或者可涉及马达火花塞,该火花塞接收由控制器1根据转角的测量值可检测地导出的点火命令。所述功能单元还可以满足在此没有详细说明的各种其它的测量和控制任务。
在控制器还处于试验和研发阶段时,在CAN总线上连接一个接口7,通过该接口7研发环境的主计算机8可以与控制器1通信。
借助于该主计算机8,有可能把由控制器1从各种功能单元6采集的且存储在存储器组件3中的数据读出并且向研发人员显示,从而研发人员能够评价微处理器2的工作方式并且通过改变微处理器2的控制程序排除工作方式的可能的错误。
在微处理器2与功能单元6通信时,一般地在严格的时间要求下传输小数据量。也就是说,如果功能单元6之一发送一个参数值,那么控制器1必须在一个预定的、短的时间内对此响应,并且不可能例如采集功能单元的多个测量值并且把这些多个测量值作为带有额外量信息的一个整体去传输,以提高传输效率。因此CAN总线控制采用带有最多8个字节的有效数据单元的较短的帧,在这些帧中额外量占总共传输的数据量的比例相当地高,然而因此可以以短的时延进行数据传输。
为了表达清楚,在图2中详细地描述一个CAN帧的结构。一个单个的起始位S标记帧的开始,其后跟着一个11位宽的字段ID,所述字段ID包含各个连接在CAN总线5上的装置(功能单元6、控制器1或者单个在其上运行的进程,或者主计算机8或在其上运行的进程之一)的唯一性的标记,针对其确定所涉CAN帧的有效数据。
接着是3个说明CAN帧的特征的状态标志F,所述状态标志对于本发明不重要而不进一步地说明。
后续的4位字段L表示在所述CAN帧中含有的有效数据字节的数量。这一数量可以在0与8个字节之间。
接着的段DATA的长度相应于字段L中指出的字节数量。
一个16位宽的校验和字段CRC使得能够以常规的方式识别和排除在以前的字段中出现的传输错误。其后跟着两个确认位ACK和一个7位宽的带有指明所述帧结束的位的字段EFL。直到其后接的帧的开始可以添加1-3个不传输信息的位。
尽管CAN协议能够良好地匹配具有短的响应时间的较小的数据量的传输,然而,如果必须传输不适于在单个的CAN帧中的、较大的相互关联的数据量时,就出现了问题。必须在用总线5发送所述数据量的数据源方把所述数据量分配到多个帧中,并且在接收所述数据量的数据接收器方又完全地并且按正确的顺序重新拼合所述数据量。特别的是,如果由于在传输标识段ID时的一个错误一个数据接收器没有把为之确定的帧识别为这样的帧并且加以忽略,如果它由于相同的原因把一个帧误认为为之确定的帧,如果在接收长度字段L时出现一个错误,就可能有失败,错误地传输有效数据或者类似错误。为了能够避免这种情况,或者至少能够识别和拦住这样的错误,在常规的系统中占用每个帧8个有效数据字节之一,以传输一个循环的数码,所述的数码使数据接收器能够识别由它所接收的帧序列的空隙或错误分配给它的帧。这样的循环数码的传输附加地增加了该帧的额外量的比例,从而降低了数据传输的效率。
为了应对这种弊端,本发明利用在许多传输任务中对于数据接收器待传输的数据集的范围是事先知道的这样一个事实。这特别是在如图1所示的数据处理系统中,在向主计算机8传输控制器1的测量数据或者其它运行数据时是这种情况。这一般地在预先安排主计算机8时出现,从而主计算机“知道”哪些是要由控制器1传输的数据并且知道它们具有什么范围。如果主计算机从控制器接收到一个提示,即最后的帧将数据块的传输视为结束,因此就是以把实际在块中接收的数据的范围与预知的范围比较,以确定是否出现传输错误,以及在接收的数据量与期待的相一致时就把该传输认为是成功的。
按照上述原理合作的控制器1和主计算机8的工作程序,参照图3和图4的流程图加以说明。
图3示出数据接收器的工作方式,在这里涉及的例子中也就是主计算机8的工作方式,而图4示出数据源的工作方式,也就是控制器1的工作方式。
在步骤S1中,一个与主计算机8对话的研发人员定义一个应当从控制器1向主计算机8传输的数据块的结构。该结构的定义包括详细地确定标识ID的一个值,所述的标识ID以后使得能够将传输的帧分配给在主计算机上运行的进程。此外确定待传输的参数,也就是说确定控制器1的寄存器或者存储器组件3的存储位置的一个表,其内容应当向主计算机8传输,和应当传输这些参数的顺序。接着,还确定读取所涉存储位置应当进行的时刻。该时间点可以是一个单个的绝对确定的时刻,它可以是通过针对一个外部条件的出现的某个的时间关系来定义,例如用在触发某个中断后一个指定的时延,或者也可以被设置为一个带有指定周期的周期性传输。
在步骤2中把这样确定的控制信息传输给控制器1。为了简化,应当假定,要传输的控制信息的规模不超过8个字节,从而可以在单个常规的CAN帧中传输所述控制信息。如果要传输的控制信息包含多于8个的字节,可以把下面针对从数据源向数据接收器传输一个数据块所述的方法用于从数据接收器向数据源传输控制信息。
所述控制信息由数据源,在此是控制器1接收(图4中的步骤D1)。在此期间,数据接收器预备接收第一个数据块,其中它把一个计数器N(t)设置为0(步骤S3)。接着,它转到等待状态S4,在此状态它等待通过CAN总线5的一个帧的出现。
与此并行地数据源等待在控制信息中规定的时刻读取寄存器(D2)。在规定的时间点它以读取寄存器开始,并且向主计算机8发送一个CAN帧的头段H,也就是在图2中用S至L标示出的段。这个主计算机在步骤S5中检验在头段H中传输的标识ID是否与预期的相一致。如果不存在一致性,该主计算机8或者返回待收状态S4,或者,在标识ID相应于另一个、同样要由其实施的进程时,转向另一个处理进程。
在此期间,所述的控制器在步骤D4发送该帧的一个数据字节。接着(D5)该控制器检验,是否根据数据块的定义还剩有要发送的数据字节。如果不是这种情况,就在步骤D6中发送CAN帧的尾段(Trailer),也就是说从CRC段至EOF段。然后在步骤D7中检验,数据块的字节数N是否不同于n,或者是否可被n整除。如果满足这样的条件之一,只要不涉及一个只要一次发送的数据块,就在所述流程返回步骤D2以前,在步骤D8再发送一个没有有效数据的帧。在其它情况下所述流程直接结束或者直接返回D2,无需发送一个空帧。
如果在步骤D5中的检验得出,还有数据字节要发送,所述流程进一步转到步骤D9,在步骤D9中检验,是否在传输中的帧中还允许再传输一个字节。如果是,所述流程返回到步骤D4,以发送该字节,如果不是,就在步骤D10中发送尾段,并且所述流程返回到步骤D3,以开始传输另一个帧的头段。
如果主计算机8在步骤S5发现帧的标识正确,它就在步骤S6接收一个数据字节,并且把所接收字节的计数器N(t)增加。接着,主计算机在步骤S7中比较在头段H的长度字段L中说明的该帧中含有的有效数据字节的数量n(t),与最大允许的有效数据字节的数量n=8。当这两个值一致时,所述流程转向步骤S8,在所述步骤S8中,主计算机把在定义块的步骤S1中知道的在要传输的数据块中含有的数据字节的总数N与一个帧的最大允许的字节数n进行比较。在两个不一致时,就意味着应等待传送同一数据块的其它字节的其他CAN帧的传输,并且所述流程返回到步骤S4的等待状态。然而,如果在步骤S7中确定了相同性,这就意味着所述数据块总共只含有≤8个数据字节,并且从而其传输完全了。在此情况下所述流程转到在步骤S9中所接收数据字节的处理。
如果主计算机在步骤S7中确定,在当前帧中传输的比特数n(t)是最高可允许的比特数n,这就意味着涉及一个数据块的最后的帧。接着(S9)主计算机把该数据块的至此时接收的数据字节的数量N(t)与在步骤1中所涉的定义的字节数N比较。在不相同时,必定发生了一个错误,并且所述流程转到一个出错处理子程序,其中,例如可以摒弃整个数据块或者请求重新传输该数据块。在相符时把该数据块认为是正确地接收的,并且在步骤S9中进行处理。
接着,所述流程返回步骤S3,以把字节计数器N(t)重新设置为0并且等待另一个数据块的传输。
用上述方法达到,即使在传输含更多有用数据位的相关有用数据块时能够作为一个CAN帧来接受,CAN帧的全部传输容量都提供用于传输这些有用数据,并且不必安排用于传输控制信息的附加有用数据传输容量。所述方法与现有的、在CAN总线上的数据传输所涉标准兼容。
权利要求
1.一种用于在一个总线(5)上从一个数据源(1)向一个数据接收器(8)传输数据块的方法,所述总线(5)支持带有可变的、有限数量n的数据元的帧的传输,所述方法有步骤(a)从所述的数据接收器(8)向所述的数据源(1)发送(S2)一个控制信息,该控制信息至少指定在一个要传输的数据块中含有的数据元的数量N;(b)如果N>n,从所述的数据源(1)向所述的数据接收器(8)发送(D4)各带有要传输的数据块的n个数据元的int(N/n)个帧,以及一个带有要传输的数据块的(N模n)个数据元的帧,其中int(N/n)是小于或者等于N/n的最大整数;(c)如果在步骤b)中接收到的数据元的数量与在控制信息中所指定的数量相一致,就由数据接收器(8)把一个数据块的传输识别成完整的(S9)。
2.如权利要求1所述的方法,其特征在于,如果N=n,那么所述的数据源(1)发送带有N个数据元的一个单个帧,并且在接收该单个帧以后数据接收器(8)就把该数据块识别成完整的。
3.如权利要求1或2所述的方法,其特征在于,所述的数据源(1)在一个控制信息中指定的时刻发送该数据块。
4.如上述权利要求之一所述的方法,其特征在于,所述的数据源(1)由多个在控制信息中指定的参数编排所述数据块。
5.如上述权利要求之一所述的方法,其特征在于,所述的总线是CAN总线。
6.如上述权利要求之一所述的方法,其特征在于,用于一种控制电路的研发环境中,其中所述的数据源(1)是控制电路,而所述的数据接收器(8)是主计算机。
全文摘要
在总线(5)上从一个数据源(1)向一个数据接收器(8)之间传输数据块的方法,所述总线(5)支持带有可变的、有限的数据元数量的帧的传输,所述方法具有下列步骤(a)从数据接收器(8)向数据源(1)发送(S2)一个至少指定在一个待传输的数据块中含有的数据元的数量N的控制信息;(b)如果N>n,从数据源(1)向数据接收器(8)发送(D4)int(N/n)个各带有待传输的数据块的n个数据元的帧,以及一个带有待传输的数据块的(N模n)个数据元的帧,其中int(N/n)是小于或者等于N/n的最大整数;(c)如果在步骤b)中接收到的数据元的数量与在控制信息中所指定的数量相一致,就由数据接收器(8)把一个数据块的传输识别成完整的(S9)。
文档编号H04L29/08GK1706170SQ200380101619
公开日2005年12月7日 申请日期2003年10月17日 优先权日2002年10月18日
发明者R·许尔曼斯, T·奥斯特加特 申请人:罗伯特·博世有限公司