一种基于CAN总线的地址自动分配方法

文档序号:28158952发布日期:2021-12-24 17:51阅读:1863来源:国知局
一种基于CAN总线的地址自动分配方法
一种基于can总线的地址自动分配方法
技术领域
1.本发明涉及can总线、can地址自动分配,特别是涉及一种结合了两段随机数获取、can总线访问竞争、自动can主机选择、从地址自动竞争分配、失败重发等多种机制,实现了可靠的can设备地址自动分配的方法。


背景技术:

2.can是控制器局域网络(controller area network,can)的简称,通过iso11898及iso11519 进行了标准化。can总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。can的高性能和可靠性已被认同,并被广泛地应用于工业自动化、工业设备等方面。can总线是国际上应用最广泛的现场总线之一,为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
3.can总线特点包括:数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个) 节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,高优先级节点信息在134μs通信;多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞;can总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从,或者各个节点平等的现场中使用。
4.在使用can总线的设备环境中,经常会涉及到数量众多的同一种类型的设备的部署。为了区分这些众多的can设备,需要为每个设备分配设备地址(id)。如果是采用手工方式为每一个独立的设备进行地址分配,通常会需要较多的人力投入,而且容易出错。相反,如果有一个合理的机制和方法,能够实现can设备的自动地址分配,就能够极大的减少众多设备安装部署的人力需求,也提高了整个部署工作的可靠性和效率。


技术实现要素:

5.本发明的目标是,结合两段随机数获取、can总线访问竞争、自动can主机选择、从地址自动竞争分配、失败重发等多种机制,设计实现了一种可靠的can地址自动分配的方法。从而使得众多的同类型can设备可以进行无差异安装部署,在部署完成后的第一次上电启动过程中,该方法作用于can总线的全部设备,自动对它们进行主机从机选择,以及从设备地址(id)分配。
6.本发明使用了两段随机数获取机制。can设备上电启动后,首先调用随机数发生函数两次,第一次得到一个0到255之间的随机数,第二次得到一个0到999之间的随机数。
7.本发明使用[0006]中获取的第一个随机数作为延迟时间的秒数,使用[0006]中获取的第二个随机数作为延迟时间的毫秒数,这两个时间加在一起,构成了主设备的竞争延迟时间t
master

[0008]
每个can设备中的控制程序,在控制程序延迟t
master
时间段之后,尝试发出主设备竞争报文m
master
。如果某个设备的can总线访问竞争成功,则该设备能够成功发出主设备竞争报文m
master
,该设备将自己设置为主设备。与此同时,其它的设备会处于等待延迟状态,或
者can总线访问竞争失败状态,它们都能收到前面那个成功的设备发出的主设备竞争报文m
master
,然后它们将自己设置为从设备。这样就完成了 can总线上主设备和从设备的自动选择。成为主设备的那个设备将自己的设备地址(id)设置为0x00。
[0009]
接下来进入从设备的地址自动分配阶段。使用[0006]中获取的第一个随机数作为延迟时间的秒数,使用[0006]中获取的第二个随机数作为延迟时间的毫秒数,这两个时间加在一起,构成了从设备的竞争延迟时间t
slave

[0010]
每个从设备中的控制程序,在控制程序延迟t
slave
时间段之后,尝试发出从设备竞争报文m
slave
。该报文的目标地址为主设备的设备地址(id),为0x00(十六进制0)。该报文的源地址为缺省设备地址(id),为0xff(十六进制ff)。如果某个设备的can总线访问竞争成功,则该设备能够成功发出从设备竞争报文 m
slave
。与此同时,主设备能够收到该报文m
slave
,其它的设备会处于等待延迟状态,或者can总线访问竞争失败状态。处于can总线访问竞争失败状态的设备,则需要从头开始进行t
slave
时间段延迟,进行报文重发,这个就是失败重发机制。
[0011]
主设备会维持一个递增的地址编号id
slave
,从0x01开始递增1。主设备收到该m
slave
报文后,知道这个设备在请求分配地址。主设备发回一个地址确认报文m
addr
,该报文的目标地址为缺省设备地址 (id),为0xff(十六进制ff)。该报文的源地址为主设备的设备地址(id),为0x00(十六进制0)。该报文的数据是为这个从设备所分配的设备地址id
slave
。主设备发送完报文m
addr
后,将id
slave
递增1。
[0012]
在[0010]中成功发出m
slave
报文的从设备,收到主设备发送的m
addr
报文后,提取报文中的id
slave
数据,作为自己的设备地址,并写入存储器保存。这一个从设备的设备地址分配完成。
[0013]
整个部署中的所有从设备,依照[0010]、[0011]、[0012]所述的步骤,分别从主设备那里获取到自己的设备地址。当所有的从设备的设备地址分配完成后,部署中的所有设备的地址自动分配完成。
[0014]
本发明通过结合[0006]、[0007]、[0008]、[0009]、[0010]、[0011]、[0012]、[0013]的功能,组成一个整体,实现了一种可靠的can地址自动分配的方法,使得众多的同类型can设备可以进行无差异安装部署,在部署完成后的第一次上电启动过程中,依照该方法的程序,自动对can总线上的全部设备,进行了主机从机选择和设备地址(id)分配。
附图说明
图1是一种基于can总线的地址自动分配方法的逻辑流程图:

主设备竞争阶段的流程

从设备的地址自动分配的流程

主设备和从设备之间的can总线通信
具体实施方式
[0015]
两段随机数获取
[0016]
can设备上电启动后,首先调用随机数发生器两次,第一次得到一个0到255之间的随机数,第二次得到一个0到999之间的随机数。第一个随机数作为延迟时间的秒数,使用
[0006]中获取的第二个随机数作为延迟时间的毫秒数,这两个时间加在一起,构成了主设备的竞争延迟时间t
master
,以及从设备的竞争延迟时间t
slave
。对于每个设备t
master
和t
slave
在数值上是相同的,在主设备竞争阶段称为t
master
,在从设备竞争阶段称为t
slave

[0017]
主设备竞争
[0018]
每个can设备中的控制程序,在控制程序延迟t
master
时间段之后,尝试发出主设备竞争报文 m
master
。如果某个设备的can总线访问竞争成功,则该设备能够成功发出主设备竞争报文m
master
,该设备将自己设置为主设备。与此同时,其它的设备会处于等待延迟状态,或者can总线访问竞争失败状态,它们都能收到前面那个成功的设备发出的主设备竞争报文m
master
,然后它们将自己设置为从设备。这样就完成了 can总线上主设备和从设备的自动选择。成为主设备的那个设备将自己的设备地址(id)设置为0x00。
[0019]
整个部署中主设备只有一个,由该设备完成接从设备的地址自动分配工作。
[0020]
从设备的地址自动分配
[0021]
每个从设备中的控制程序,在控制程序延迟t
slave
时间段之后,尝试发出主设备竞争报文m
slave
。该报文的目标地址为主设备的设备地址(id),为0x00(十六进制0)。该报文的源地址为缺省设备地址(id),为0xff(十六进制ff)。如果某个设备的can总线访问竞争成功,则该设备能够成功发出从设备竞争报文 m
slave
。与此同时,主设备能够收到该报文m
slave
,其它的设备会处于等待延迟状态,或者can总线访问竞争失败状态。处于can总线访问竞争失败状态的设备,则需要从头开始进行t
slave
时间段延迟,延迟时间到之后进行失败重发。
[0022]
主设备收到该m
slave
报文后,知道这个设备在请求分配地址。主设备发回一个地址确认报文 m
addr
,该报文的目标地址为缺省设备地址(id),为0xff(十六进制ff)。该报文的源地址为主设备的设备地址(id),为0x00(十六进制0)。该报文的数据是为这个从设备所分配的设备地址id
slave
。主设备发送完报文m
addr
后,将id
slave
递增1。成功发出m
slave
报文的设备,收到主设备发送的m
addr
报文后,提取报文中的 id
slave
数据,作为自己的设备地址,并写入存储器保存。这一个从设备的设备地址分配完成。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1