一种CAN总线节点地址分配方法及系统与流程

文档序号:16063691发布日期:2018-11-24 12:27阅读:6781来源:国知局

本发明涉及嵌入式领域,具体而言是一种can总线节点地址分配方法及系统。

背景技术

can是控制器局域网络(controllerareanetwork)的简称,具有较高的可靠性和良好的错误检测能力,是国际上应用最广泛的现场总线之一,广泛用于汽车电子、工业测控和工业自动化等领域。

can网络中包含多个节点(如图1所示),它们通过can总线连接在一起,每个节点都可以监听can总线上的通信。

can网络中每个节点都必须有自己的地址,can协议中规定了地址的长度必须为11位(标准帧)或者29位(扩展帧)。但是can协议中没有规定地址的获取方式。

通常情况下,采用预设地址的方式进行地址分配。具体而言,在节点接入can网络之前,进行地址分配。例如,采用拨码开关、上下拉电阻等方式,或者直接修改程序,为各节点分配对应地址。

以上方法实现起来不仅浪费资源,而且可能出现地址分配不合理、冲突等情况。



技术实现要素:

本发明针对现有技术中存在的技术问题,提供一种can总线地址分配的方法及系统,以保证can总线通信的正常进行。

本发明解决上述技术问题的技术方案如下:

一方面,本发明提供一种can总线节点地址分配方法,包括以下步骤:

步骤1,从节点控制器通过随机数发生器产生一组随机数,该组随机数组成该从节点的临时can网络节点地址;

步骤2,从节点向主节点发送数据帧,所述数据帧中包含该从节点的临时can网络节点地址和获取地址的命令;

步骤3,主节点接收从节点发送的数据,根据所述临时can网络节点地址给该从节点分配相应的地址,并对应生成存储表条目;

步骤4,从节点接收数据,将该从节点的临时地址修改为主节点分配的地址。

进一步,所述的一组随机数包括依次生成的11位或29位随机数,每位随机数取值0~f,由所述11位或29位随机数构成该从节点的临时can网络节点地址。

进一步,所述步骤3还包括:

主节点接收从节点发送的数据后,将所述临时can网络节点地址与存储表中已记录的从节点地址进行匹配操作,若匹配到相同的从节点地址,则主节点不响应当前从节点的节点地址分配请求。

进一步,所述步骤3后还包括:

从节点等待接收主节点分配地址超时,则跳转至步骤1,重新生成一组随机数,作为该从节点的临时can网络节点地址。

进一步,该方法还包括,多个从节点根据优先级获取对can总线的控制权,在当前从节点地址分配完毕后,释放对can总线的控制权。

另一方面,本发明还提供一种can总线节点地址分配系统,包括通过can总线连接的一个主节点控制器和多个从节点控制器;

所述从节点控制器包括:

一随机数发生器,用于产生一组随机数,该组随机数组成该从节点的临时can网络节点地址;

一数据帧封装模块,用于将该从节点的临时can网络节点地址和获取地址的命令封装成一个数据帧,并发送给主节点控制器;

所述主节点控制器包括:

一数据解析模块,用于解析从节点控制器发送的数据帧,获取从节点的临时can网络节点地址;

一地址存储表,用于存储主节点控制器已分配的从节点地址;

一地址匹配模块,用于判断获取的临时can网络节点地址与所述地址存储表中的从节点地址是否匹配。

进一步,所述随机发生器产生的一组随机数包括依次生成的11位或29位随机数,每位随机数取值0~f,由所述11位或29位随机数构成该从节点的临时can网络节点地址。

进一步,所述从节点控制器还包括一延时计数器,所述数据帧封装模块向所述主节点控制器发送数据后进行计数,当计数超过阈值时,则随机数发生器重新生成一组随机数,并由数据帧封装模块封装后发送给主节点控制器。

进一步,所述多个从节点控制器设有不同的优先级,优先级高的从节点控制器在进行节点地址请求时拥有较高的can总线控制权,当且仅当该从节点地址分配结束后,所述从节点控制器释放can总线控制权。

本发明的有益效果是:该方法利用从节点自动生成随机数节点地址,并向主节点请求分配的方法,有效的解决了现有技术中采用拨码开关、上下拉电阻等方式,或者直接修改程序等方法出现的软硬件资源浪费,以及由此导致的地址分配不合理、冲突等问题。

附图说明

图1为can网络结构示意图;

图2为本发明方法流程图;

图3为本发明系统结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图2所示,一方面,本发明提供一种can总线节点地址分配方法,包括以下步骤:

步骤1,从节点控制器通过随机数发生器产生一组随机数,该组随机数组成该从节点的临时can网络节点地址,所述的一组随机数包括依次生成的11位或29位随机数,每位随机数取值0~f,由所述11位或29位随机数构成该从节点的临时can网络节点地址;

步骤2,从节点向主节点发送数据帧,所述数据帧中包含该从节点的临时can网络节点地址和获取地址的命令;

步骤3,主节点接收从节点发送的数据,根据所述临时can网络节点地址给该从节点分配相应的地址,并对应生成存储表条目;

主节点接收从节点发送的数据后,将所述临时can网络节点地址与存储表中已记录的从节点地址进行匹配操作,若匹配到相同的从节点地址,则主节点不响应当前从节点的节点地址分配请求。

从节点等待接收主节点分配地址超时,则跳转至步骤1,重新生成一组随机数,作为该从节点的临时can网络节点地址。

步骤4,从节点接收数据,将该从节点的临时地址修改为主节点分配的地址。

在进行地址分配时,多个从节点根据优先级获取对can总线的控制权,在当前从节点地址分配完毕后,释放对can总线的控制权。

另一方面,本发明还提供一种can总线节点地址分配系统,如图3所示,包括通过can总线连接的一个主节点控制器和多个从节点控制器;

所述从节点控制器包括:

一随机数发生器,用于产生一组随机数,该组随机数组成该从节点的临时can网络节点地址;

一数据帧封装模块,用于将该从节点的临时can网络节点地址和获取地址的命令封装成一个数据帧,并发送给主节点控制器;

一延时计数器,所述数据帧封装模块向所述主节点控制器发送数据后进行计数,当计数超过阈值时,则随机数发生器重新生成一组随机数,并由数据帧封装模块封装后发送给主节点控制器。

所述主节点控制器包括:

一数据解析模块,用于解析从节点控制器发送的数据帧,获取从节点的临时can网络节点地址;

一地址存储表,用于存储主节点控制器已分配的从节点地址;

一地址匹配模块,用于判断获取的临时can网络节点地址与所述地址存储表中的从节点地址是否匹配。

所述多个从节点控制器设有不同的优先级,优先级高的从节点控制器在进行节点地址请求时拥有较高的can总线控制权,当且仅当该从节点地址分配结束后,所述从节点控制器释放can总线控制权。

该方法利用从节点自动生成随机数节点地址,并向主节点请求分配的方法,有效的解决了现有技术中采用拨码开关、上下拉电阻等方式,或者直接修改程序等方法出现的软硬件资源浪费,以及由此导致的地址分配不合理、冲突等问题。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1