专利名称:使用发送和接收缓冲器实现的消息防丢失的制作方法
技术领域:
本发明的实施例总体上涉及车辆内的控制器局域网系统。
背景技术:
控制器局域网(CAN)是一种车辆总线标准,用来允许电子控制单元(ECU)与其它装置在没有中央计算机或主机的情况下相互通信。车辆系统和子系统具有大量ECU,它们控制致动器或从传感装置接收车辆运行数据。CAN系统是异步广播串行总线,该总线串行地传递消息。因此,同一时刻在通信总线上只传递一个消息。当预备向通信总线上传送消息时, 总线控制器控制总线上的消息转移。如果多个传送器同时开始一个以上的消息传输,就传送更占优势的消息。这称为仲裁过程。具有最高优先级的消息将赢得这个仲裁,并且以较低优先级传送的消息将检测到这种状况并等待。在不同的情形中,可以通过CAN系统内连续的不同节点处理与车辆运行有关的消息。在这样的情形中,向第一节点提供消息并且在不同时刻处理这些消息。当在相应节点处完成对第一消息的处理时,沿着通信总线传递其至下一节点进行另外的处理。同时,在第一节点处理下一消息并且随后继续沿着通信总线将其传递至下一节点进行另外的处理。这个过程针对连续消息而继续。由于处理消息期间的固有延时或对通信总线的争用,消息可能在通信过程中丢失,因为没有中央计算机或主机确保每个消息得到保存且不遗漏。在这样的情况中,丢失的消息可能被另一消息盖写。因此,需要确保可能由于抖动、异步时钟和有限的总线控制器缓冲器大小而丢失的每个消息在CAN系统内得到适当地保存和处理。
发明内容
一个实施例的优点是减少了由对CAN系统中的通信总线的争用而引起的消息丢失。发送缓冲器被加在每个节点中,这些缓冲器存储消息,这些消息是为传输生成的,但是不能转移给总线控制器,因为当前消息已经占用总线控制器的存储器。接收缓冲器加在每个节点中用于存储从通信总线收到的消息,在此,该消息所引向的节点内的应用部件不可用来接收和处理该收到的消息。因此,由抖动、有限的CAN控制器缓冲器大小和异步时钟引起的在CAN系统中传输延迟的消息能够存储在缓冲器中,直到总线控制器可用或者应用部件预备处理该消息。—个实施例设想一种用于车辆的分布嵌入式实时控制器局域网系统。在控制器局域网系统内,通信总线传送消息。多个节点形成通过通信总线可通信地连接的多个通信端点。每个节点包括用于生成车辆运行数据的至少一个应用部件和与该至少一个应用部件通信的电子控制单元。该电子控制单元生成包含车辆运行数据的消息。该电子控制单元在事件触发模式中用于启动向通信总线的消息传输。该电子控制单元包括发送缓冲器用于存储生成的消息。总线控制器与该电子控制单元对接。总线控制器管理消息往返于通信总线的转移。消息向通信总线上的转移由总线控制器定期执行。当存储在总线控制器的存储器内的前一消息等待在通信总线上传输时,总线控制器不能用于从电子控制单元接收消息。当该存储器空闲时,总线控制器可用于从电子控制单元接收消息。当总线控制器不可用时,消息被存储在发送缓冲器中。当总线控制器可用时,发送缓冲器内的相应的消息被转移给总线控制器。—个实施例设想一种在车辆的分布嵌入式实时控制器局域网系统内的节点之间传送消息的方法。控制器局域网系统包括通信总线和用于控制消息在通信总线上的传输的总线控制器,其中消息向通信总线上的转移是由总线控制器定期执行的。控制器局域网系统进一步包括多个节点,它们形成通过通信总线可通信地连接的多个通信端点。每个节点包括至少一个应用部件、电子控制单元、发送缓冲器和接收缓冲器。该方法包括下述步骤 电子控制单元从至少一个应用部件接收车辆运行数据并且生成包含车辆运行数据的消息用于在通信总线上传输。该电子控制单元在事件触发模式中用于启动通信总线上消息向下一相应节点的传输。响应于总线控制器表明通信总线不可用,将消息存储在发送缓冲器中。 当总线控制器可用于接收下一消息时,从发送缓冲器转移相应的消息。当存储在总线控制器的存储器内的前一消息等待在通信总线上传输时,总线控制器不能用于从电子控制单元接收下一消息。当该存储器空闲时,总线控制器可用于从电子控制单元接收消息。在通信总线上传送相应的消息。方案I. 一种用于车辆的分布嵌入式实时控制器局域网系统,包括
用于在所述控制器局域网系统内传送消息的通信总线;
形成通过所述通信总线可通信地连接的多个通信端点的多个节点,其中每个节点包
括
用于生成车辆运行数据的至少一个应用部件;
与所述至少一个应用部件通信的电子控制单元,所述电子控制单元生成包含所述车辆运行数据的消息,所述电子控制单元在事件触发模式中用于启动所述消息向所述通信总线的传输,所述电子控制单元包括用于存储所生成的消息的发送缓冲器;以及
与所述电子控制单元对接的总线控制器,所述总线控制器管理消息往返于所述通信总线的转移,消息向所述通信总线上的转移由所述总线控制器定期执行,当存储在所述总线控制器的存储器内的前一消息等待在所述通信总线上传输时,所述总线控制器不能用于从所述电子控制单元接收消息,并且其中当所述存储器空闲时,所述总线控制器可用于从所述电子控制单元接收消息;
其中当所述总线控制器不可用时,消息被存储在所述发送缓冲器中,并且其中当所述总线控制器可用时,所述发送缓冲器内的相应的消息被转移给所述总线控制器。方案2.如方案I所述的系统,其中,所述发送缓冲器由相应节点内的多个应用部件共享。方案3.如方案I所述的系统,其中,所述电子控制单元包括管理从所述至少一个应用部件向所述发送缓冲器的消息转移的入队任务模块,其中所述入队任务模块确定所述发送缓冲器内是否有可用的空闲单元,并且其中响应于所述发送缓冲器内有可用的空闲单元,所述消息被存储在所述空闲单元中。方案4.如方案3所述的系统,其中,所述电子控制单元包括用于保存所述发送缓冲器内的存储消息的优先级排序的发送消息链表,其中所述入队任务模块将所述消息加到所述发送消息链表中。
方案5.如方案4所述的系统,其中,响应于所述发送缓冲器内没有可用的空闲单元,所述入队任务模块删除所述发送缓冲器中的存储消息,其中所述入队任务模块将所述消息加到所述发送消息链表中。方案6.如方案5所述的系统,其中,响应于所述发送缓冲器内没有可用的空闲单元,所述入队任务模块删除所述发送缓冲器内的最旧的存储消息。方案7.如方案5所述的系统,其中,响应于所述发送缓冲器内没有可用的空闲单元,所述入队任务模块删除所述发送缓冲器内的具有最低优先级的消息。方案8.如方案5所述的系统,其中,所述电子控制单元包括管理从所述发送缓冲器向所述总线控制器的相应消息的转移的出队任务模块,其中所述出队任务模块确定所述总线控制器是否可用于接收所述消息,并且其中响应于所述总线控制器存储器可用于接收所述消息,所述出队任务模块将在所述发送缓冲器的发送消息链表中排队的相应消息转移给所述总线控制器。方案9.如方案8所述的系统,其中,从所述发送缓冲器转移给所述总线控制器的所述相应消息是所述发送缓冲器中最旧的消息。方案10.如方案8所述的系统,其中,从所述发送缓冲器转移给所述总线控制器的所述相应消息是所述发送缓冲器中具有最高优先级的消息。方案11.如方案I所述的系统,其中,所述电子控制单元包括接收缓冲器,该接收缓冲器用于在所述至少一个应用部件不可用时存储所述通信总线上收到的消息,所述接收缓冲器包括多个缓冲单元。方案12.如方案11所述的系统,其中,所述接收缓冲器由相应节点内的多个应用部件共享。方案13.如方案12所述的系统,其中,所述电子控制单元包括管理从所述总线控制器向所述接收缓冲器的消息转移的入队任务模块,其中所述入队任务模块确定所述接收缓冲器内是否有可用的空闲单元,其中响应于所述接收缓冲器的单元可用,从所述通信总线收到的消息存储在所述接收缓冲器的所述空闲单元中,并且其中所述电子控制单元包括用于保存所述接收缓冲器内的存储消息的优先级排序的收到消息链表,其中所述入队任务模块将所述收到的消息加到所述收到消息链表中。方案14.如方案13所述的系统,其中,响应于所述接收缓冲器内没有可用的空闲单元,所述入队任务模块删除所述接收缓冲器中的存储消息,其中所述入队任务模块将所述收到的消息加到可用的缓冲单元中。方案15.如方案14所述的系统,其中,响应于所述接收缓冲器内没有可用的空闲单元,所述入队任务模块删除所述接收缓冲器内的最旧的存储消息。方案16.如方案14所述的系统,其中,响应于所述接收缓冲器内没有可用的空闲单元,所述入队任务模块删除所述接收缓冲器内的具有最低优先级的消息。方案17.如方案14所述的系统,其中,出队任务模块管理从所述接收缓冲器向所述至少一个应用部件的下一消息的转移,所述接收缓冲器中的最旧的存储消息被从所述接收缓冲器转移给所述至少一个应用部件。方案18. —种在车辆的分布嵌入式实时控制器局域网系统内的节点之间传送消息的方法,所述控制器局域网系统包括通信总线和用于控制所述通信总线上的消息传输的总线控制器,其中消息向所述通信总线上的转移是由所述总线控制器定期执行的,所述控制器局域网系统进一步包括形成通过所述通信总线可通信地连接的多个通信端点的多个节点,每个节点包括至少一个应用部件、电子控制单元、发送缓冲器和接收缓冲器,所述方法包括如下步骤
所述电子控制单元从所述至少一个应用部件接收车辆运行数据并且生成包含所述车辆运行数据的消息用于在所述通信总线上传输,所述电子控制单元在事件触发模式中用于启动所述通信总线上消息向下一相应节点的传输;
响应于所述总线控制器表明所述通信总线不可用,将所述消息存储在所述发送缓冲器中;以及
当所述总线控制器可用于接收下一消息时,从所述发送缓冲器转移相应的消息,当存储在所述总线控制器的存储器内的前一消息等待在所述通信总线上传输时,所述总线控制器不能用于从所述电子控制单元接收所述下一消息,并且其中当所述存储器空闲时,所述总线控制器可用于从所述电子控制单元接收消息;以及在所述通信总线上传送所述相应的消息。方案19.如方案18所述的方法,其中,入队任务模块管理从所述至少一个应用部件向所述发送缓冲器的消息转移,其中所述入队任务模块确定所述发送缓冲器内是否有可用的空闲单元,并且其中响应于所述发送缓冲器内有可用的空闲单元,将所述相应的消息存储在所述空闲单元中。方案20.如方案19所述的方法,其中,所述电子控制单元包括用于保存所述存储消息的优先级排序的发送消息链表,其中响应于所述发送缓冲器中没有可用的空闲单元, 所述入队任务模块删除所述发送缓冲器中的存储消息,其中所述入队任务模块将所述相应的消息加到所述空闲单元中。方案21.如方案18所述的方法,其中,出队任务模块管理从所述发送缓冲器向所述总线控制器的下一消息的转移,并且其中响应于所述总线控制器可用于接受所述下一消息,所述出队任务模块将在所述发送缓冲器的发送消息链表中排队的下一消息转移给所述总线控制器。方案22.如方案18所述的方法,进一步包括如下步骤
在所述总线控制器中接收来自所述通信总线的所述下一消息;
将所述总线控制器收到的消息存储在所述接收缓冲器中;以及
当所述至少一个应用部件可用于接收下一消息时,转移所述存储消息给所述至少一个应用部件。方案23.如方案22所述的方法,其中,入队任务模块管理从所述通信总线向所述接收缓冲器的消息转移,其中响应于所述接收缓冲器中没有可用的空闲单元,所述入队任务模块删除所述接收缓冲器中的存储消息,其中所述入队任务模块将所述消息加到所述空闲的缓冲单元中。方案24.如方案23所述的方法,其中,出队任务模块管理从所述接收缓冲器向所述至少一个应用部件的下一消息的转移,其中所述接收缓冲器中的最旧的存储消息被从所述接收缓冲器转移给所述至少一个应用部件。
图
图
图
图
图
图
图
图
图
I是控制器局域网系统的示意图。
2是时间线,图解了控制器局域网系统中的数据消息处理。
3是时间线,图解了控制器局域网系统的缓冲技术。
4是根据本发明实施例的发送缓冲器的缓冲技术的流程图。 5是根据本发明实施例的发送缓冲器的入队任务的流程图。 6是根据本发明实施例的发送缓冲器的出队任务的流程图。 7是根据本发明实施例的接收缓冲器的缓冲技术的流程图。 8是根据本发明实施例的接收缓冲器的入队任务的流程图。 9是根据本发明实施例的接收缓冲器的出队任务的流程图。
具体实施例方式图I示出的是控制器局域网(CAN)系统10。CAN系统10包括多个电子控制单元 (E⑶)12-18,它们与允许这些E⑶彼此通信的通信总线20连接。多个E⑶12-18中的每个都与一个或多个传感器、致动器或控制装置(这个群体在下文称作应用部件)连接并且总体上分别由22-28代表。这些应用部件不直接连接到通信总线20,而是通过相应的ECU连接。这些应用部件还可以是ECU中的软件部件。单个控制特征可以覆盖多个应用部件,并且涉及从源头到目的E⑶经由连接到同一通信总线的一个或多个中间处理/控制E⑶的控制信号。对本发明来说,应当理解,CAN系统是本领域已知的,并且ECU、应用装置、CAN控制器和收发器称为节点并且这里将不再详细论述它们的结构的细节。在图I中,如图所示,在通信总线20上串联地传递消息给每个E⑶12-18。每个节点NI、N2、N3和N4在传送每个消息给下一相应的节点之前处理每个消息。图2中图示了五个消息dl-d5。消息dl-d5每个都连续地传送给第一节点NI。在第一节点NI处,定期处理每个消息并且然后相应地将其传送至第二节点N2进行另外的处理。时间线30代表消息 dl-d5输入给第一节点NI时的相应时间。时间线32代表消息dl-d5提供给控制器局域网控制器(下文称为总线控制器)用于经由通信总线传输给第二节点N2时的相应时间。由于通信总线上的争用,消息可能不会立即加到总线控制器上。如果存在争用,那么消息可能丢失。图2图解了消息丢失的一个例子。在第一节点NI处理第一消息dl然后在通信总线上将其传送至第二节点N2。时间线34图解了在第二节点N2收到消息dl时的时间。在第二节点N2处理第一消息dl然后将其提供给总线控制器用于在通信总线上传输。在第一节点NI中处理第二消息d2,如时间线30图解的。消息d2成功地在通信总线上传送并且被第二节点N2收到,如时间线32图解的。 在消息d2到达节点N2之前,节点N2上应用部件的第二执行需要输入,如38所示,在这种情况下,再使用第一消息dl,如图2中的虚线36所示。在线34上的节点N2上的应用部件的第二执行与第三执行之间,两个输入消息d2和d3到达节点N2,如图2中的线32所示。 因为每个节点的典型的缓冲器大小仅仅能够容纳一个消息,消息d2在能够被节点N2上的应用部件使用之前将被消息d3盖写。因此,节点N2上应用部件的第三执行将使用消息d3, 并且消息d2将丢失。
图2进一步示出了,由于消息盖写消息d3和d4也丢失了,并且消息dl被反复地重新使用。从第四节点N4输出的处理过的消息包括dl-dl-dl-dl-d5。数据消息d2、d3、d4 丢失了,这归因于可能是抖动、有限缓冲器或异步时钟的直接后果的消息盖写。为了减少由总线控制器或通信总线上的争用引起的消息丢失,在每个节点采用基于软件的发送缓冲器和接收缓冲器。CAN控制器硬件包括用于数据传输和接收的硬件缓冲单元(CAN信箱区)。因此,本文描述的实施例关注基于软件的缓冲策略,而不影响实际的 CAN控制器硬件缓冲器使用。节点内相应的ECU将包括被相应节点上的全部应用部件共享的发送缓冲器和接收缓冲器。例如,对于图2中描绘的节点N1-N4,N1中的全部应用部件使用公用发送缓冲器和公用接收缓冲器,N2中的全部应用部件使用公用发送缓冲器和公用接收缓冲器,N3中的全部应用部件使用公用发送缓冲器和公用接收缓冲器,并且N4中的全部应用部件也使用公用发送缓冲器和公用接收缓冲器。图3图解了用于防止消息丢失的发送缓冲器和接收缓冲器的使用。如图3所示, 以时间线40上示出的时间周期传送消息dl-d5至第一节点NI。时间线41代表传送出消息至总线控制器时的时间。时间线42代表在通信总线上传送出消息时的时间。时间线43代表第二节点N2收到消息时的时间。发送缓冲器44集成在第一节点NI中的E⑶内并且被第一节点NI上的全部应用部件共享。发送缓冲器44临时存储消息,直到总线控制器预备接受在通信总线上传输的下
一消息。接收缓冲器45集成在第二节点N2中的E⑶内并且被第二节点N2上的全部应用部件共享。接收缓冲器45临时存储通信总线上收到的消息,直到消息预备转移给应用部件。如图3所图解的,以时间线40上图解出的时间周期输入全部消息给第一节点NI。 在时间线41中,可以防止由于消息盖写或占用总线控制器的另一消息而将消息立即放入总线控制器中。这点通过消息d3而图解出来。时间线40上示出的消息d2占用总线控制器存储器,等待在通信总线上传输。典型地,总线控制器具有仅供单个消息的可用存储器, 并且如果消息例如d2已经占用总线控制器,那么消息d3不能转移给总线控制器。在现有技术条件下,消息d3将丢失。在如图3图解的优选实施例中,如果总线控制器没有预备接受消息d3,那么,数据消息d3就临时存储在发送缓冲器44中。消息d3在它等到总线控制器可用的发送消息链表中被列入优先位置。各种规则可用来确定相应的消息是怎样在消息链表中被列入优先位置,这将在随后详细论述。当总线控制器空闲并且消息d3是发送缓冲器44中的最高排序的消息时,那么消息d3就转移给总线控制器,如时间线41上示出的,并且随后在通信总线上传送,如时间线42上示出的。接收缓冲器45是与第二节点N2的ECU集成的存储装置。当应用预备处理消息时, 应用部件从接收缓冲器45接收消息。如果应用部件不能接受从通信总线收到的消息,那么如果不立即取回该消息它就可能丢失。为了减少消息丢失,接收缓冲器45存储总线控制器收到的相应的消息,直到应用部件预备接受该消息。存储在接收缓冲器45中的消息被加到接收消息链表的末端并且等待相应的应用部件取回消息。如图3所示,接收缓冲器45由第二节点N2中的全部应用部件共享。接收缓冲器45可以分隔成多个缓冲单元并且每个缓冲单元按照相应的排序方案保存在接收消息链表中。
9
从通信总线收到的消息的缓冲进程由两个软件任务模块控制,这些模块与发送缓冲器和接收缓冲器协作使用。第一任务模块是入队任务模块。第二任务模块是出队任务模块。对于每个发送缓冲器,包含有入队任务模块和出队任务模块。在由于总线控制器的存储器被占用而使ECU不能传送消息给总线控制器时,执行入队任务。当总线控制器不可用时,入队任务模块提供程序,用于增加消息到发送缓冲器的相应单元中。发送缓冲器包括多个缓冲单元。将发送缓冲器内的每个缓冲单元当作独立的存储块,并且不同缓冲单元中的消息在发送消息链表中排序。发送消息链表优先考虑缓冲单元的顺序。ECU的入队任务模块保存每个缓冲单元的二进制标志。当对应的缓冲单元空闲时, 二进制标志设为I。当对应的缓冲单元被占用时,二进制标志设为O。当入队任务模块需要增加新消息给缓冲器时,首先检查每个缓冲单元中二进制标志的状态。如果二进制标志表明存在空闲的缓冲单元(即二进制标志设为I ),那么将输入新消息到缓冲单元中并且相应的缓冲单元被加到发送消息链表的末端。相应的缓冲单元的标志从I变到O。如果不存在可用的空闲缓冲单元,那么,能够采用不同的删除策略来容纳新消息,例如首先删除最旧的消息或者首先删除最低优先级的消息。第二软件任务即出队任务用来按顺序从发送缓冲器转移消息给总线控制器。出队任务能够由不同的方法触发,例如定期触发,或者在入队任务模块执行之后,或者一旦证实总线控制器成功传输了上一消息。在执行出队任务时,消息是从发送缓冲器转移给总线控制器。如果这个转移是成功的,从而使得总线控制器可用来接受消息,那么将转移消息并且将删除发送缓冲器中的相应的消息;否则,该消息将留在发送缓冲器中并且出队任务终止。 在证实总线控制器成功传输了上一消息之后,这表明总线控制器当前可用于接收消息,将再次执行出队任务。各种出队策略可用于确定选择发送缓冲器中的哪个消息转移给通信控制器。出队策略可包括首先传送最旧的消息或者首先传送最高优先级的消息。对于接收缓冲器,也包含有入队任务模块和出队任务模块,用于从通信总线过渡消息到应用部件。当需要从通信总线取回消息时,应用入队任务模块。每当总线控制器收到新消息时,触发入队任务模块。将接收缓冲器的每个单元当作独立的存储块,并且将不同缓冲单元中的消息组织成接收消息链表。当对应单元空闲时,ECU的入队任务模块保存每个缓冲单元的二进制空闲标志(即二进制标志为I);否则二进制标志为O。当入队任务模块需要增加新消息到接收缓冲器中时,它首先检查是否有空闲的缓冲单元。如果有空闲的缓冲单元,那么,新消息将存储在空闲的缓冲单元中并且将该缓冲单元加到接收消息链表的末端。 缓冲单元的二进制标志从I变到O。如果接收缓冲器中不存在当前可用的空闲单元,那么可采用不同的删除策略,例如首先删除最旧的消息或者首先删除最低优先级的消息。应用出队任务模块将消息从接收缓冲器转移给相应的应用部件。出队任务能够在需要输入消息时由应用部件触发或者可以定期触发。一旦从接收缓冲器成功移除消息,该消息将从接收缓冲器中去除并且转移给应用部件或者与应用部件关联的其它本地存储装置。出队任务将总是从每个应用部件的接收缓冲器去除最旧的消息。图4图解了发送缓冲器管理技术的流程图的宽泛概况,该技术用于从相应节点的应用部件转移消息给总线控制器。在框50处,应用部件处理数据并且转移给节点内的E⑶,用于生成消息并且在通信总线上传送。在框51处,启动发送缓冲器入队任务。在框52处,相应的消息存储在发送缓冲器的相应单元中。在框53处,启动发送缓冲器出队任务。在框54处,消息转移给总线控制器用于在通信总线上传输。图5图解了如图4的框51处标识的启动的发送缓冲器入队任务模块的详细过程。 在框60处,启动发送缓冲器入队算法。在框61处,确定发送缓冲器中是否有空闲的缓冲单元可用。这个确定是基于任一缓冲单元是否具有指示空闲单元状态的二进制标志。如果确定缓冲单元是空闲的,那么程序继续到步骤63。如果确定发送缓冲器中没有可用的空闲缓冲单元,那么就在步骤62按照删除策略删除发送缓冲单元中当前存储的消息(例如,首先删除最旧的消息或者首先删除最低优先级的消息)。在步骤63,将新消息存储在空闲的缓冲单元中。缓冲单元的二进制标志设为1,并且该缓冲单元被加到发送消息链表中。在步骤 64,对于相应的转移任务,入队算法结束。图6图解了如图4的框53处标识的启动的发送缓冲器出队任务的详细过程。在框70处,启动发送缓冲器出队算法。在框71处,确定总线控制器是否可用于接受消息。如果确定总线控制器不可用,那么程序继续到步骤73。如果确定总线控制器缓冲器可用来接受消息,那么就在步骤72中按照出队过程策略从发送缓冲器移除消息到总线控制器缓冲器(例如,首先使最旧的消息出队或者首先使最高优先级的消息出队)。在步骤73,对于相应的转移任务,出队算法结束。图7图解了接收缓冲管理技术的流程图的宽泛概况,该技术用于从总线控制器转移消息给相应节点的应用部件。在框80处,应用总线控制器在通信总线上传送消息并且在相应节点接收该消息。在框81处,启动接收缓冲器的入队任务。在框82处,相应的消息存储在接收缓冲器的空闲单元中。在框83处,启动接收缓冲器出队任务。在框84处,相应的消息转移给相应的应用部件。图8图解了如图7的框81处标识的启动的接收缓冲器入队任务模块的详细过程。 在框90处,启动接收缓冲器入队算法。在框91处,通过确定任一接收缓冲单元是否具有表明空闲单元状态的二进制标志来确定接收缓冲器中是否有可用的空闲缓冲单元。如果确定接收缓冲单元具有空闲单元状态,那么程序继续到步骤93。如果确定接收缓冲器中没有可用的空闲缓冲单元,那么就按照删除策略删除接收缓冲单元中的消息(例如,首先删除最旧的消息或者首先删除最低优先级的消息)。在步骤93,接收到的消息存储在空闲的缓冲单元中。相应的接收缓冲单元的二进制标志设为1,并且该相应的接收缓冲单元被加到消息链表的末端。在步骤94,对于相应的消息任务,入队算法结束。图9图解了如图7的框83处标识的启动的接收缓冲器出队任务的详细过程。在框100处,启动接收缓冲器出队算法。在框101处,存储在接收缓冲器中的最旧的消息被从接收缓冲器中移除并且提供给相应的应用部件。在框102处,对于相应的任务,程序结束。尽管已经详细描述了本发明的某些实施例,但是本领域技术人员将认识到用于实施由所附权利要求限定的本发明的各种替代设计和实施例。
权利要求
1.一种用于车辆的分布嵌入式实时控制器局域网系统,包括用于在所述控制器局域网系统内传送消息的通信总线;形成通过所述通信总线可通信地连接的多个通信端点的多个节点,其中每个节点包括用于生成车辆运行数据的至少一个应用部件;与所述至少一个应用部件通信的电子控制单元,所述电子控制单元生成包含所述车辆运行数据的消息,所述电子控制单元在事件触发模式中用于启动所述消息向所述通信总线的传输,所述电子控制单元包括用于存储所生成的消息的发送缓冲器;以及与所述电子控制单元对接的总线控制器,所述总线控制器管理消息往返于所述通信总线的转移,消息向所述通信总线上的转移由所述总线控制器定期执行,当存储在所述总线控制器的存储器内的前一消息等待在所述通信总线上传输时,所述总线控制器不能用于从所述电子控制单元接收消息,并且其中当所述存储器空闲时,所述总线控制器可用于从所述电子控制单元接收消息;其中当所述总线控制器不可用时,消息被存储在所述发送缓冲器中,并且其中当所述总线控制器可用时,所述发送缓冲器内的相应的消息被转移给所述总线控制器。
2.如权利要求I所述的系统,其中,所述发送缓冲器由相应节点内的多个应用部件共享。
3.如权利要求I所述的系统,其中,所述电子控制单元包括管理从所述至少一个应用部件向所述发送缓冲器的消息转移的入队任务模块,其中所述入队任务模块确定所述发送缓冲器内是否有可用的空闲单元,并且其中响应于所述发送缓冲器内有可用的空闲单元, 所述消息被存储在所述空闲单元中。
4.如权利要求3所述的系统,其中,所述电子控制单元包括用于保存所述发送缓冲器内的存储消息的优先级排序的发送消息链表,其中所述入队任务模块将所述消息加到所述发送消息链表中。
5.如权利要求4所述的系统,其中,响应于所述发送缓冲器内没有可用的空闲单元,所述入队任务模块删除所述发送缓冲器中的存储消息,其中所述入队任务模块将所述消息加到所述发送消息链表中。
6.如权利要求5所述的系统,其中,响应于所述发送缓冲器内没有可用的空闲单元,所述入队任务模块删除所述发送缓冲器内的最旧的存储消息。
7.如权利要求5所述的系统,其中,响应于所述发送缓冲器内没有可用的空闲单元,所述入队任务模块删除所述发送缓冲器内的具有最低优先级的消息。
8.如权利要求5所述的系统,其中,所述电子控制单元包括管理从所述发送缓冲器向所述总线控制器的相应消息的转移的出队任务模块,其中所述出队任务模块确定所述总线控制器是否可用于接收所述消息,并且其中响应于所述总线控制器存储器可用于接收所述消息,所述出队任务模块将在所述发送缓冲器的发送消息链表中排队的相应消息转移给所述总线控制器。
9.如权利要求8所述的系统,其中,从所述发送缓冲器转移给所述总线控制器的所述相应消息是所述发送缓冲器中最旧的消息。
10.一种在车辆的分布嵌入式实时控制器局域网系统内的节点之间传送消息的方法,所述控制器局域网系统包括通信总线和用于控制所述通信总线上的消息传输的总线控制器,其中消息向所述通信总线上的转移是由所述总线控制器定期执行的,所述控制器局域网系统进一步包括形成通过所述通信总线可通信地连接的多个通信端点的多个节点,每个节点包括至少一个应用部件、电子控制单元、发送缓冲器和接收缓冲器,所述方法包括如下步骤所述电子控制单元从所述至少一个应用部件接收车辆运行数据并且生成包含所述车辆运行数据的消息用于在所述通信总线上传输,所述电子控制单元在事件触发模式中用于启动所述通信总线上消息向下一相应节点的传输;响应于所述总线控制器表明所述通信总线不可用,将所述消息存储在所述发送缓冲器中;以及当所述总线控制器可用于接收下一消息时,从所述发送缓冲器转移相应的消息,当存储在所述总线控制器的存储器内的前一消息等待在所述通信总线上传输时,所述总线控制器不能用于从所述电子控制单元接收所述下一消息,并且其中当所述存储器空闲时,所述总线控制器可用于从所述电子控制单元接收消息;以及在所述通信总线上传送所述相应的消息。
全文摘要
本发明涉及使用发送和接收缓冲器实现的消息防丢失,具体提供一种车辆的分布嵌入式实时控制器局域网系统,该系统包括ECU,其在事件触发模式中用于启动消息向通信总线的传输。每个ECU包括用于存储消息的发送缓冲器。总线控制器与ECU对接并且管理消息往返于通信总线的转移。消息向通信总线上的转移由总线控制器定期执行。当存储在总线控制器的存储器内的前一消息等待在通信总线上传输时,总线控制器不能用于从ECU接收消息。当存储器空闲时,总线控制器可用于从ECU接收消息。当总线控制器不可用时,消息被存储在发送缓冲器中。当总线控制器可用时,发送缓冲器内的相应的消息被转移给总线控制器。
文档编号H04L12/40GK102594640SQ201210002798
公开日2012年7月18日 申请日期2012年1月6日 优先权日2011年1月6日
发明者S.梅农, S.蒋 申请人:通用汽车环球科技运作有限责任公司