掌桥专利:专业的专利平台
掌桥专利
首页

CAN总线波特率自配置方法和系统

文献发布时间:2023-06-19 10:43:23


CAN总线波特率自配置方法和系统

技术领域

本公开涉及CAN总线控制领域,具体地,涉及一种CAN总线波特率自配置方法和系统。

背景技术

目前不论是屏蔽门系统,还是汽车内部控制系统或其他工业自动化等领域,CAN(Controller Area Network)总线通信技术是应用最广泛的现场总线之一。其中,波特率是保证CAN总线的控制器和各个控制子单元之间正常通信的根本,若出现波特率不匹配的情况,会导致CAN总线的控制器与控制子单元不能进行正常的数据传输。由于CAN总线的波特率并非唯一,在相关技术中,为了保证CAN总线的正常通信,一般都需要人工为CAN总线的控制器和各个控制子单元设定相同的波特率,但通过人工设置波特率过程复杂,效率偏低,且容易出现错误。

发明内容

为了解决上述问题,本公开提供一种CAN总线波特率自配置方法和系统。

第一方面,本公开提供了一种CAN总线波特率自配置方法,所述方法应用于CAN总线系统的控制器,所述CAN总线系统包括控制器,与控制器相连接的一个或多个控制子单元,所述方法包括:

按照预设频率向末端控制子单元发送第一脉冲,所述末端控制子单元为一个或多个控制子单元中距离所述控制器最远的控制子单元;

接收所述末端控制子单元响应于所述第一脉冲而发送的第二脉冲;

获取所述第一脉冲和所述第二脉冲的时间差;

根据所述时间差设置CAN总线的实际波特率。

可选地,所述根据所述时间差设置CAN总线的实际波特率包括:根据所述时间差计算得到CAN总线的基线波特率;从预先设置的候选波特率中,将与所述基线波特率的差值的绝对值最小的波特率作为所述实际波特率。

可选地,在所述向末端控制子单元按照预设频率发送第一脉冲之前,所述方法还包括:检测与末端控制子单元的通信是否故障;

所述向末端控制子单元按照预设频率发送第一脉冲包括:在与末端控制子单元的通信故障的情况下,向末端控制子单元按照预设频率发送第一脉冲。

可选地,在所述根据所述时间差设置CAN总线的实际波特率之后,所述方法还包括:按照所述实际波特率向所述一个或多个控制子单元发送数据。

第二方面,本公开提供了一种CAN总线波特率自配置系统,所述系统包括控制器,与控制器相连接的一个或多个控制子单元,其中:

所述控制器,用于按照预设频率向末端控制子单元发送第一脉冲;接收所述末端控制子单元响应于所述第一脉冲而发送的第二脉冲;获取所述第一脉冲和所述第二脉冲的时间差;根据所述时间差设置CAN总线的实际波特率;其中,所述末端控制子单元为一个或多个控制子单元中与控制器距离最远的控制子单元;

所述末端控制子单元,用于接收所述控制器发送的第一脉冲,并根据该第一脉冲向所述控制器发送第二脉冲。

可选地,所述控制器具体用于:根据所述时间差计算得到CAN总线的基线波特率;从预先设置的候选波特率中,将与所述基线波特率的差值的绝对值最小的波特率作为所述实际波特率。

可选地,所述控制器还用于:检测与末端控制子单元的通信是否故障;在与末端控制子单元的通信故障的情况下,执行向末端控制子单元按照预设频率发送第一脉冲的步骤。

可选地,所述控制器还用于:在所述根据所述时间差设置CAN总线的实际波特率之后,按照所述实际波特率向所述一个或多个控制子单元发送数据。

可选地,所述控制子单元用于:接收所述控制器发送的数据;根据接收到所述数据的时刻获取最小时间间隔;根据所述最小时间间隔设置所述控制子单元的实际波特率。

可选地,所述控制子单元具体用于:根据所述最小时间间隔计算得到控制子单元基线波特率;从预先设置的候选波特率中,将与所述控制子单元基线波特率的差值的绝对值最小的波特率作为所述控制子单元的实际波特率。

采用上述技术方案,控制器按照预设频率向末端控制子单元发送第一脉冲,接收末端控制子单元响应于第一脉冲而发送的第二脉冲;获取第一脉冲和第二脉冲的时间差;根据时间差设置CAN总线的实际波特率。这样,实现了准确高效的CAN总线波特率自配置。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是本公开实施例提供的一种CAN总线波特率自配置系统的结构示意图;

图2是本公开实施例提供的一种CAN总线波特率自配置方法的流程图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

在下文中的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

首先,对本公开的应用场景进行说明。本公开可以应用于CAN总线控制领域,具体地,可以应用于CAN总线波特率自配置领域。CAN总线系统可以包括控制器和一个或多个控制子单元,其中不同的控制子单元可以用于控制不同的节点或设备。示例地,在该CAN总线系统应用于车辆控制中的情况下,可以将整车控制器作为CAN总线的控制器,其中的控制子单元可以包括:灯光控制子单元、电动座椅控制子单元、车窗控制子单元、雨刷控制子单元和仪表控制子单元等。在另外的示例中,在该CAN总线系统应用于列车的站台门控制的情况下,其中的控制器可以是PEDC(Platform Electrical Door Controller,逻辑单元控制器),用于根据用户指令向每个控制子单元发送控制信号;控制子单元可以是DCU(DoorControl Unit,门控单元),每个DCU对应一个站台门,该DCU用于控制对应的站台门的开启或关闭。

为了保证CAN总线的正常通信,一般都需要人工为CAN总线的控制器和各个控制子单元设定相同的波特率。但由于CAN总线的控制子单元众多,比如应用于列车的站台门控制的CAN总线可以有30到60个控制子单元,通过人工给每个控制子单元设置波特率,过程复杂,效率低下,且一旦某个控制子单元设置错误会导致通信故障。另外,在相关技术中,还采用了一次一个波特率进行试探性查找匹配的方式,但是由于CAN总线可用的波特率较多以及控制子单元众多,所以这种方式的自适应匹配获取合理的波特率也需要花费比较多的时间,效率低下。

为了解决上述问题,本公开提供了一种CAN总线波特率自配置的方法和系统,该系统包括控制器,以及与控制器相连接的一个或多个控制子单元;其中,一个或多个控制子单元中距离所述控制器最远的控制子单元为末端控制子单元,控制器按照预设频率向末端控制子单元发送第一脉冲,接收末端控制子单元响应于第一脉冲而发送的第二脉冲;获取第一脉冲和第二脉冲的时间差;根据时间差设置CAN总线的实际波特率,从而实现了准确高效的CAN总线波特率自配置。

以下结合附图对本公开的具体实施方式进行详细说明。

图1是本公开实施例提供的一种CAN总线波特率自配置系统,如图1所示,该系统可以包括控制器101,与控制器相连接的一个或多个控制子单元102(即控制子单元1021、控制子单元1022、控制子单元1023、…、控制子单元102n,n为正整数),将一个或多个控制子单元中与控制器101距离最远的控制子单元1021作为末端控制子单元1021,其中:

该控制器101,可以用于按照预设频率向末端控制子单元1021发送第一脉冲;接收末端控制子单元1021响应于第一脉冲而发送的第二脉冲;获取第一脉冲和第二脉冲的时间差;根据该时间差设置CAN总线的实际波特率。

该末端控制子单元1021,可以用于接收控制器101发送的第一脉冲,并根据该第一脉冲向控制器101发送第二脉冲。

需要说明的是,上述第一脉冲可以是预设频率的矩形脉冲,该预设频率可以是1HZ到1000HZ之间的任意频率,示例地,该预设频率可以是4HZ。第二脉冲可以是与第一脉冲的预设频率相同的矩形脉冲。

上述距离可以是CAN总线距离,上述时间差的大小可以表征末端控制子单元1021与控制器101的CAN总线距离的远近。末端控制子单元1021与控制器101的CAN总线距离越远,该时间差越大,相应的可以设置的实际波特率越小。控制器101可以根据预先设置的时间差波特率对应关系获取该时间差对应的波特率作为实际波特率,该时间差波特率对应关系是预先设置的时间差与波特率的对应关系。示例地:时间差20us可以对应到波特率为55kbps;时间差10us可以对应到波特率为90kbps。

这样,通过该CAN总线波特率自配置系统,控制器按照预设频率向末端控制子单元发送第一脉冲,接收末端控制子单元响应于第一脉冲而发送的第二脉冲;获取第一脉冲和第二脉冲的时间差;根据时间差设置CAN总线的实际波特率,从而实现了准确高效的CAN总线波特率自配置。

另外需要说明的是,在该系统中,每个控制子单元可以有预设的各自不同的控制子单元编号,并将该控制子单元编号设置在服务器中。这样,控制器可以根据各个控制子单元编号与每个控制子单元进行通信。其中,每个控制子单元与控制器101的CAN总线距离不同,可以将其中距离控制器最远的控制子单元作为末端控制子单元1021,并将其控制子单元编号设置为末端控制子单元编号。这样,控制可以根据末端控制子单元编号确定该末端控制子单元,并与之通信。末端控制子单元与控制器的CAN总线距离限定了CAN总线的波特率,若CAN总线波特率设置过大,而控制子单元与控制器的距离过远时,会导致该控制子单元与控制器通信异常。因此,需要根据末端控制子单元与控制器的CAN总线距离设定合适的波特率。

可选地,末端控制子单元1021可以有CAN总线输入接口和施密特延时电路,该末端控制子单元1021在上电后将对应的CAN总线输入接口设置为I/O中断输入,用于接收控制器101发送的第一脉冲,该第一脉冲经过施密特延时电路后触发中断信号,末端控制子单元1021根据该中断信号向控制器101发送第二脉冲。

在本公开的另外一些实施例中,该控制器可以具体用于:根据该时间差计算得到CAN总线的基线波特率;从预先设置的候选波特率中,将与该基线波特率的差值的绝对值最小的波特率作为实际波特率。

其中,控制器计算基线波特率的公式可以是:基线波特率=1/时间差。示例地,时间差为5us,则根据该公式可以得到基线波特率为200kbps。

上述候选波特率可以是CAN总线经过调测验证后,能够实现可靠通信的一个或多个波特率,并可以将候选波特率预先设置在CAN总线的控制器中。示例地,该候选波特率可以包括50kpbs、100kpbs、125kpbs、200kpbs、500kpbs和1000kpbs;当上述时间差为7us时,计算得到的基线波特率为143kpbs,此时可以从候选波特率中选择最接近的125kpbs作为该实际波特率。

这样,采用该方式从候选波特率中选择的实际波特率能够实现CAN总线的可靠通信。

可选地,控制器也可以从预先设置的候选波特率中,选择与该基线波特率的差值的绝对值最小,且小于该基线波特率的波特率作为该实际波特率。这样,可以避免选择较大的波特率导致通信不可靠的问题,进一步提高了CAN总线通信的可靠性。

进一步地,该控制器还可以用于:在根据时间差设置CAN总线的实际波特率之后,按照该实际波特率向一个或多个控制子单元发送数据。从而实现了CAN总线的正常数据通信。

在本公开的另外一些实施例中,上述控制子单元可以用于:接收控制器发送的数据;根据接收到数据的时刻获取最小时间间隔;根据该最小时间间隔设置控制子单元的实际波特率。

其中,该控制子单元可以在上电后执行上述步骤。示例地,每个控制子单元都具有CAN总线数据接口,该控制子单元上电后可以将对应的CAN总线输入接口设置为I/O中断输入,如果有持续的中断信号输入,那么就说明CAN总线上控制器在发送数据,该控制子单元可以接收该数据,并根据I/O中断输入的信号自动计算最小时间间隔,然后根据该最小时间间隔设置控制子单元的实际波特率,根据该实际波特率初始化CAN总线,从而使CAN总线正常通信。这样,每个控制子单元通过该方式都可以将控制器发送数据的波特率作为控制子单元的实际波特率,实现了CAN总线波特率的正确配置,从而保证了CAN总线的正常通信。

另外,该控制子单元还可以预先设定第一预设时间,在第一预设时间内获取接收到每两个数据之间的间隔,取其中的最小值作为上述最小时间间隔。这样,通过第一预设时间可以限定控制子单元进行波特率设定的时间,提高效率。

进一步地,该控制子单元可以具体用于:根据上述最小时间间隔计算得到控制子单元基线波特率;从预先设置的候选波特率中,将与该控制子单元基线波特率的差值的绝对值最小的波特率作为该控制子单元的实际波特率。

这样,当获取的最小间隔由于时间精度导致略有偏差时,通过候选波特率的选择,实现每个控制子单元与控制器的波特率一致,从而保证了CAN总线的正常通信。

同样地,在本步骤中,控制子单元也可以从预先设置的候选波特率中,选择与该控制子单元基线波特率的差值的绝对值最小且小于该控制子单元基线波特率的波特率作为该实际波特率。这样,可以避免选择较大的波特率导致通信不可靠的问题,进一步提高了CAN总线通信的可靠性。

需要说明的是,上述CAN总线波特率自配置方法可以在CAN总线的控制器和控制子单元上电初始化的过程中完成,也可以在控制器检测到与末端控制子单元的通信故障后进行,因此,在本公开的另外一些实施例中,该控制器还可以用于:检测与末端控制子单元的通信是否故障;在与末端控制子单元的通信故障的情况下,执行向末端控制子单元按照预设频率发送第一脉冲的步骤;在末端子单元的通信正常的情况下,可以继续按照当前波特率进行通信。

其中,控制器可以在向末端字段发送数据后,等待末端控制子单元对该数据的响应信号,若在第二预设时间内未收到该响应信号,则确认与末端控制子单元的通信故障;反之,若在第二预设时间内正常收到该响应信号,则确认与末端控制子单元的通信正常。上述第二预设时间可以是控制器预设的时间阈值,例如可以是1ms至100ms之间的任意数值。

这样,在CAN总线通信异常的情况下,控制器可以主动检测,并进行波特率自适应重配置,从而可以恢复正常的CAN总线通信。

图2是本公开实施例提供的一种CAN总线波特率自配置方法,如图2所示,该方法的执行主体可以是CAN总线系统中的控制器,该CAN总线系统包括控制器,以及与控制器相连接的一个或多个控制子单元,该方法包括:

S201、按照预设频率向末端控制子单元发送第一脉冲。

其中,该末端控制子单元为一个或多个控制子单元中距离控制器最远的控制子单元。可以通过控制子单元的编号确定。

第一脉冲可以是预设频率的矩形脉冲,该预设频率可以是1HZ到1000HZ之间的任意频率,示例地,该预设频率可以是4HZ。

S202、接收末端控制子单元响应于第一脉冲而发送的第二脉冲。

需要说明的是,末端控制子单元在接收到第一脉冲后,可以向控制器回复相应的第二脉冲。该第二脉冲可以是与第一脉冲的预设频率相同的矩形脉冲。

S203、获取第一脉冲和第二脉冲的时间差。

在本步骤中,可以记录第一脉冲的发送时刻和第二脉冲的接收时刻,将接收时刻与发送时刻的差值作为该时间差。

S204、根据该时间差设置CAN总线的实际波特率。

需要说明的是,该时间差可以表征末端控制子单元与控制器的CAN总线距离。末端控制子单元与控制器的CAN总线距离越大,该时间差越大,相应的可以设置的实际波特率越小。

在本步骤中,可以根据预先设置的时间差波特率对应关系获取该时间差对应的波特率作为实际波特率,该时间差波特率对应关系是预先设置的时间差与波特率的对应关系。示例地:时间差20us可以对应到波特率为55kbps;时间差10us可以对应到波特率为90kbps。

采用上述方法,控制器按照预设频率向末端控制子单元发送第一脉冲,接收末端控制子单元响应于第一脉冲而发送的第二脉冲;获取第一脉冲和第二脉冲的时间差;根据时间差设置CAN总线的实际波特率,从而实现了准确高效的CAN总线波特率自配置。

在本公开的另外一些实施例中,可以采用以下方式根据该时间差设置CAN总线的实际波特率:

首先,根据该时间差计算得到CAN总线的基线波特率。

其中,计算公式可以是:基线波特率=1/时间差。示例地,时间差为5us,则根据该公式可以得到基线波特率为200kbps。

其次,从预先设置的候选波特率中,将与该基线波特率的差值的绝对值最小的波特率作为该实际波特率。

在本步骤中,上述候选波特率可以是CAN总线经过调测验证后,能够实现可靠通信的一个或多个波特率,并可以将候选波特率预先设置在CAN总线的控制器中。示例地,该候选波特率可以包括50kpbs、100kpbs、125kpbs、200kpbs、500kpbs和1000kpbs;当上述时间差为7us时,计算得到的基线波特率为143kpbs,此时可以从候选波特率中选择的差值的绝对值最小的波特率125kpbs作为该实际波特率。

这样,采用该方式从候选波特率中选择的实际波特率能够实现CAN总线的可靠通信。

可选地,在本步骤中,也可以从预先设置的候选波特率中,选择与该基线波特率的差值的绝对值最小,且小于该基线波特率的波特率作为该实际波特率。这样,可以避免选择较大的波特率导致通信不可靠的问题,进一步提高了CAN总线通信的可靠性。

进一步地,在根据时间差设置CAN总线的实际波特率之后,该方法还包括:按照该实际波特率向一个或多个控制子单元发送数据。从而实现了CAN总线的正常数据通信。

需要说明的是,上述CAN总线波特率自配置方法可以在CAN总线的控制器和控制子单元上电初始化的过程中完成,也可以在控制器检测到与末端控制子单元的通信故障后进行,因此,在本公开的另外一些实施例中,该方法还可以包括:

首先,检测与末端控制子单元的通信是否故障。

在本步骤中,控制器可以在向末端字段发送数据后,等待末端控制子单元对该数据的响应信号,若在第二预设时间内未收到该响应信号,则确认与末端控制子单元的通信故障;反之,若在第二预设时间内正常收到该响应信号,则确认与末端控制子单元的通信正常。

其次,在末端控制子单元的通信正常的情况下,可以继续按照当前波特率进行通信。在与末端控制子单元的通信故障的情况下,可以执行上述CAN总线波特率自配置方法的步骤。

这样,在CAN总线通信异常的情况下,控制器可以主动检测,并进行波特率自适应重配置,从而可以恢复正常的CAN总线通信。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

相关技术
  • CAN总线波特率自配置方法和系统
  • 车辆远程监控终端的CAN总线波特率配置方法及系统
技术分类

06120112654331