一种CAN总线数据仿真系统转让专利

申请号 : CN202210796410.6

文献号 : CN115190031B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李路遥

申请人 : 知迪汽车技术(北京)有限公司

摘要 :

本公开的实施例公开了一种CAN总线数据仿真系统,该系统包括仿真单元、控制单元、收发单元以及以太网:仿真单元用于对CAN总线数据文件进行解析并生成CAN消息和CAN消息对应的发送时间信息,且仿真单元设置为定时向控制单元发送CAN消息集;控制单元用于接收CAN消息集,并将CAN消息集中的CAN消息进行排序,且控制单元设置为定时向收发单元发送CAN消息和发送时间信息;收发单元用于接收控制单元发送的CAN消息和发送时间信息,并按照发送时间信息定时发送CAN消息。该实施方式实现了以更低的成本完成周期性动态仿真及总线数据回注的需求。

权利要求 :

1.一种CAN总线数据仿真系统,其特征在于,所述仿真系统包括仿真单元、控制单元、收发单元以及以太网,所述控制单元通过以太网连接于所述仿真单元和所述收发单元;

所述仿真单元用于对CAN总线数据文件进行解析并生成CAN消息和CAN消息对应的发送时间信息,且所述仿真单元设置为定时向所述控制单元发送CAN消息集,所述CAN消息集包含至少一条CAN消息和所述至少一条CAN消息对应的至少一条发送时间信息;

所述控制单元用于接收所述CAN消息集,并按照所述至少一条发送时间信息将所述CAN消息集中的CAN消息进行排序,且所述控制单元设置为定时向所述收发单元发送所述CAN消息和所述CAN消息对应的发送时间信息;

所述收发单元用于接收所述控制单元发送的CAN消息和对应的发送时间信息,并按照CAN消息的发送时间信息定时发送所述CAN消息。

2.根据权利要求1所述的仿真系统,其特征在于,

所述仿真单元包括解析模块、组装模块和时间确定模块;

所述解析模块用于获取所述CAN总线数据文件、并对所述CAN总线数据文件进行解析,得到至少一条CAN总线消息的数据信息,所述至少一条CAN总线消息的数据信息包含CAN总线消息的ID信息;

所述组装模块用于根据所述至少一条CAN总线消息的ID信息,对所述至少一条CAN总线消息的数据信息进行组装,生成至少一条CAN消息;

所述时间确定模块用于确定每条CAN消息的发送时间信息。

3.根据权利要求1所述的系统,其特征在于,

所述CAN消息集包括第一消息群组和第二消息群组,所述第二消息群组为所述CAN消息集中最前端t时间内的所有CAN消息和对应的发送时间信息,所述第一消息群组为CAN消息集中的剩余CAN消息和对应的发送时间信息;

所述控制单元包括第一缓存区和第二缓存区;

所述第一缓存区用于缓存所述CAN消息集中的第一消息群组和第二消息群组并将所述CAN消息集中的第二消息群组推入所述第二缓存区,所述第二缓存区用于将所述第二消息群组中的CAN消息按照对应的发送时间信息发送至所述收发单元;

所述第一缓存区设置为响应于确定所述第二缓存区已发送所述第二消息群组,将所述第一缓存区中的第二消息群组删除。

4.根据权利要求1所述的系统,其特征在于,

所述仿真单元设置为按照发送周期T1定时向所述控制单元发送对应的CAN消息集,所述CAN消息集的消息量为Y;

所述收发单元还用于确定所述收发单元的缓存空间使用信息,响应于确定所述缓存空间使用信息满足预设条件,根据所述缓存空间使用信息生成调整信息以及将所述调整信息通过所述控制单元发送至所述仿真单元;

所述仿真单元还用于根据所述调整信息对所述发送周期T1、所述CAN消息集的中的消息量Y和/或所述CAN消息集中CAN消息对应的发送时间信息进行调整。

5.根据权利要求1所述的系统,其特征在于,

所述仿真单元还用于显示第一展示界面以及响应于检测到用户在所述第一展示界面中针对目标CAN消息的编辑操作,根据所述编辑操作对所述目标CAN消息进行编辑,其中,所述第一展示界面包括至少一条CAN消息。

6.根据权利要求1所述的系统,其特征在于,

所述收发单元包括多个收发模块,各收发模块用于接收CAN消息和所述CAN消息对应的发送时间信息、并按照发送时间信息定时发送至目标设备。

7.根据权利要求1所述的系统,其特征在于,

所述CAN消息包括所述CAN消息的ID信息、长度、协议类型以及信号信息。

8.根据权利要求7所述的系统,其特征在于,

所述信号信息包括信号的大小端序、起始位置和比特位长度。

说明书 :

一种CAN总线数据仿真系统

技术领域

[0001] 本公开的实施例涉及计算机技术领域,具体涉及一种CAN总线数据仿真系统。

背景技术

[0002] 随着汽车的智能化发展,车内的控制器及控制器软件越来越复杂,对汽车总线在高带宽,低时延,低功耗,高可靠等需求越来越高。传统的CAN总线由于其极低的成本,高可靠的特点,依然是车内通信总线的首选。
[0003] 现有的CAN仿真技术主要分为两类,一类支持读入CAN数据库文件后,可以进行周期性信号发送,但周期信号仿真成本过高难以做到大量模拟。另一类不支持读入CAN数据库文件,但可以周期性发送普通CAN信号,但因为不支持读入CAN数据库文件使得仿真功能有限,效果较差。找到一个可以同时满足CAN数据库文件读取并且精确的周期性发送CAN消息的技术就成了当务之急。

发明内容

[0004] 本公开的内容部分用于以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。本公开的内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
[0005] 本公开的一些实施例提出了一种CAN总线数据仿真系统,来解决以上背景技术部分提到的技术问题。
[0006] 第一方面,本公开的一些实施例提供了一种CAN总线数据仿真系统,上述仿真系统包括:仿真单元、控制单元、收发单元以及以太网,上述控制单元通过以太网连接于上述仿真单元和上述收发单元;上述仿真单元用于对CAN总线数据文件进行解析并生成CAN消息和CAN消息对应的发送时间信息,且上述仿真单元设置为定时向上述控制单元发送CAN消息集,上述CAN消息集包含至少一条CAN消息和上述至少一条CAN消息对应的至少一条发送时间信息;上述控制单元用于接收上述CAN消息集,并按照上述至少一条发送时间信息将上述CAN消息集中的CAN消息进行排序,且上述控制单元设置为定时向上述收发单元发送上述CAN消息和上述CAN消息对应的发送时间信息;上述收发单元用于接收上述控制单元发送的CAN消息和对应的发送时间信息,并按照CAN消息的发送时间信息定时发送上述CAN消息。
[0007] 本公开的上述各个实施例中的一个实施例具有如下有益效果:本实施例利用异构系统的特点,在仿真单元中做CAN数据库解析和CAN消息以及发送时间生成,在控制单元中排序计算,再由收发单元完成消息发送的精准控制。从而实现了以更低的成本完成周期性动态仿真及总线数据回注的需求。

附图说明

[0008] 结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
[0009] 图1是根据本申请的一种CAN总线数据仿真系统的示例性架构;
[0010] 图2是根据本申请的一种CAN总线数据仿真系统的一实施例的时序图。

具体实施方式

[0011] 下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0012] 另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
[0013] 需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0014] 需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0015] 本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
[0016] 下面将参考附图并结合实施例来详细说明本公开。
[0017] 图1示出了根据本申请的一种CAN总线数据仿真系统的示例性架构100。
[0018] 如图1所示,系统架构100可以包括终端设备101、102、103,以太网104和服务器105。以太网104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。
[0019] 作为示例,终端设备101可以是仿真单元,终端设备102可以是控制单元,终端设备103可以是收发单元。以太网104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。
[0020] 用户可以使用终端设备101、102、103通过以太网104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种应用,例如终端管理类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
[0021] 终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有显示屏并且支持信息读取的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成例如用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
[0022] 服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103收发信息提供支持的后台服务器;又例如,服务器还可以是对仿真单元解析CAN总线数据文件提供支持的后台服务器。后台服务器可以对接收到的数据进行分析、转发、保存等处理,并将处理结果反馈给终端设备。
[0023] 应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0024] 继续参考图2,示出了根据本申请的一种CAN总线数据仿真系统的一实施例的时序图。
[0025] 本实施例的一种CAN总线数据仿真系统包括仿真单元、控制单元、收发单元以及以太网,上述控制单元通过以太网连接于上述仿真单元和上述收发单元。
[0026] 如图2所示,在步骤201中,上述仿真单元可以对CAN总线数据文件进行解析。在这里,上述CAN总线数据文件通常是指由多个CAN总线数据以及多个与CAN总线数据对应的DBC文件组成的。上述解析的方式通常是指利用上述DBC文件对上述CAN总线数据进行解析。
[0027] 之后,如步骤202所示,仿真单元可以生成CAN消息和CAN消息对应的发送时间信息。具体的,生成CAN消息的方式有多种。作为示例,仿真单元可以通过将解析得到的CAN总线数据进行拼接的方式实现。上述发送时间信息通常用于表征CAN消息的发送时间。在这里,上述发送时间可以是上述仿真单元随机设定的也可以是根据控制单元和收发单元的缓存空间计算得到的。
[0028] 接着,在步骤203中,仿真单元可以为定时向上述控制单元发送CAN消息集,上述CAN消息集包含至少一条CAN消息和上述至少一条CAN消息对应的至少一条发送时间信息。在这里,上述CAN消息对应的发送时间信息通常是指用于表征上述CAN消息发送时间的信息。
[0029] 进一步的,在步骤204中,上述控制单元可以接收上述CAN消息集并按照上述至少一条发送时间信息将上述CAN消息集中的CAN消息进行排序。在这里,上述排序方式有多种,作为示例可以是按照发送时间正序排序,作为又一示例也可以是按照发送时间反序排序。
[0030] 之后,在步骤205中上述控制单元可以定时向上述收发单元发送上述CAN消息和上述CAN消息对应的发送时间信息。
[0031] 最后,收发单元可以接收上述控制单元发送的CAN消息和对应的发送时间信息,并按照CAN消息的发送时间信息定时发送上述CAN消息。
[0032] 需要注意的是,上述定时发送的时间通常是由用户设置完成的。作为示例,仿真单元向控制单元发送消息集的时间可以是CAN消息发送时间的前2秒。作为又一示例,控制单元向收发单元发送CAN消息和发送时间信息的时间可以是CAN消息发送时间的前1秒。
[0033] 作为示例,仿真单元解析CAN数据文件生成CAN消息,仿真单元会为每条CAN消息编排好发送时间并提前t时间(100ms级别)将下一个时间段(100ms)要发送的所有CAN消息发送给控制单元。控制单元接收到所有CAN消息后对消息进行排序,并将前20ms的消息发送给收发单元,收发单元按照100微秒的精度对每条收到的CAN消息进行检验,达到目标时间即可发送。
[0034] 在一些实施例的一些可选的实现方式中,上述仿真单元包括解析模块、组装模块和时间确定模块。
[0035] 上述解析模块用于获取上述CAN总线数据文件、并对上述CAN总线数据文件进行解析,得到至少一条CAN总线消息的数据信息,上述至少一条CAN总线消息的数据信息包含CAN总线消息的ID信息。
[0036] 上述组装模块用于根据上述至少一条CAN总线消息的ID信息,对上述至少一条CAN总线消息的数据信息进行组装,生成至少一条CAN消息。作为示例,组装模块可以利用解析得到的CAN信号的大小端序,起始位置,比特位长度等信息,将一条CAN消息内的所有的CAN信号起始位,比特位长度,重新定义并组装为完整的CAN消息。
[0037] 上述时间确定模块用于确定每条CAN消息的发送时间信息。
[0038] 在一些实施例的一些可选的实现方式中,上述CAN消息集包括第一消息群组和第二消息群组,上述第二消息群组为上述CAN消息集中最前端t时间内的所有CAN消息和对应的发送时间信息,上述第一消息群组为CAN消息集中的剩余CAN消息和对应的发送时间信息。在这里,上述时间t通常由用户预先设置或根据收发单元的内存设置。
[0039] 上述控制单元包括第一缓存区和第二缓存区。在这里,上述第一缓存区为环形缓存区。在这里,环形缓冲器(ringr buffer),也称作圆形队列(circular queue),循环缓冲区(cyclic buffer),圆形缓冲区(circula buffer),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。
[0040] 上述第一缓存区用于缓存上述CAN消息集中的第一消息群组和第二消息群组并将上述CAN消息集中的第二消息群组推入上述第二缓存区,上述第二缓存区用于将上述第二消息群组中的CAN消息按照对应的发送时间信息发送至上述收发单元。在这里,将上述CAN消息集中的第二消息群组推入上述第二缓存区通常是指将第二消息群组的索引信息放入上述第二缓存区。上述索引信息通常是指只缓存第二消息群组的引用,而不会将整个第二消息群组拷贝到第二缓存区。
[0041] 上述第一缓存区设置为响应于确定上述第二缓存区已发送将上述第二消息群组,将上述第一缓存区中的第二消息群组删除。
[0042] 在一些实施例的一些可选的实现方式中,上述仿真单元设置为按照发送周期T1定时向上述控制单元发送对应的CAN消息集,上述CAN消息集的消息量为Y;
[0043] 上述收发单元还用于确定上述收发单元的缓存空间使用信息,响应于确定上述缓存空间使用信息满足预设条件,根据上述缓存空间使用信息生成调整信息以及将上述调整信息通过上述控制单元发送至上述仿真单元;
[0044] 上述仿真单元还用于根据上述调整信息对上述发送周期T1、上述CAN消息集的中的消息量Y和/或上述CAN消息集中CAN消息对应的发送时间信息进行调整。
[0045] 具体的,作为示例:以一条500kb/s速率的can举例,每条8字节的CAN消息的发送间隔是0.2ms(毫秒)。假设收发单元内部缓存为500条CAN消息,则在极限情况下,可处理时间长度T为500*0.2=100ms,单次可接收消息量Y为500(帧CAN消息)。也就是说如果满载时上层仿真发送提前时间超过T 100ms(或者超过Y 500),则收发单元会丢失消息。
[0046] 为了避免系统运行在极限工况,初始值发送周期T为20ms,单次发送帧数Y为100帧,收发单元检测自己内部缓存空闲空间来识别当前工况,如果空闲空间大于80%,说明此时负载较小,则可将发送周期T调低至10ms(Y不变,减少时延)或者调高单次发送帧数Y至200(T不变,增大单次处理量,减少控制单元和收发单元的发送次数)。如果空闲空间小于
20%,则向控制单元和收发单元发送控制帧,要求发送减慢速度。超过阈值(95%)可以暂停仿真单元的信息发送。
[0047] 在一些实施例的一些可选的实现方式中,上述仿真单元还用于显示第一展示界面以及响应于检测到用户在上述第一展示界面中针对目标CAN消息的编辑操作,根据上述编辑操作对上述目标CAN消息进行编辑,其中,上述第一展示界面包括至少一条CAN消息。在这里,上述目标CAN消息通常是指用户选择的CAN消息。
[0048] 在一些实施例的一些可选的实现方式中,上述收发单元包括多个收发模块,各收发模块用于接收CAN消息和上述CAN消息对应的发送时间信息、并按照发送时间信息定时发送至目标设备。在这里,上述目标设备通常是由用户提前指定的。
[0049] 在一些实施例的一些可选的实现方式中,上述CAN消息包括上述CAN消息的ID信息、长度、协议类型以及信号信息。具体的,上述ID信息通常是指CAN消息的CAN ID。上述长度通常是指上述CAN消息的CAN ID的长度。上述信号信息通常是指上述CAN消息中CAN信号的信息。
[0050] 在一些实施例的一些可选的实现方式中,上述信号信息包括信号的大小端序、起始位置和比特位长度。
[0051] 本公开的上述各个实施例中的一个实施例具有如下有益效果:本实施例利用异构系统的特点,收发单元虽然可以满足高精度的时间控制,但是由于其开发复杂,无法在其中做动态CAN数据库解析和的处理,因此在仿真单元中做CAN数据库解析和CAN消息以及发送时间生成,在控制单元中排序计算,在控制单元和仿真单元中由于存在系统调度的抖动和最小周期,所以无法满足CAN消息的高精度发送控制(100微秒级别),因此由收发单元完成消息发送的精准控制。从而实现了以更低的成本完成周期性动态仿真及总线数据回注的需求。
[0052] 在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText Transfer Protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
[0053] 可以以一种或多种程序设计语言或其组合来编写用于执行本公开的一些实施例的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0054] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0055] 描述于本公开的一些实施例中的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括仿真单元、控制单元和收发单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,仿真单元还可以被描述为“用于对CAN总线数据文件进行解析并生成CAN消息和CAN消息对应的发送时间信息,且定时向上述控制单元发送CAN消息集,上述CAN消息集包含至少一条CAN消息和上述至少一条CAN消息对应的至少一条发送时间信息的单元”。
[0056] 本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
[0057] 以上描述仅为本公开的一些较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。