支持即插即用的分布式CAN网络及其节点地址自动分配方法
技术领域
本发明涉及CAN通信领域,尤其涉及一种支持即插即用的分布式CAN网络及其节点地址自动分配方法。
背景技术
众所周知,CAN网络节点在总线上必须拥有一个合法且唯一的网络地址。在CAN网络控制系统中,主节点对各个从节点的识别是依靠网络地址来实现的。在实际应用中,这种地址通常是通过设备生产厂家提供给用户的操作接口来设定的,如拨码开关、旋钮等。但是当节点需要防水、防尘或工作在恶劣、远程的环境中时,为了提高节点的防护等级,节点本身就不能再保留类似的这种接口,那么此时节点的网络地址就只能通过软件来进行设定。
无论采用何种方式配置CAN节点网络地址,都对现场维修人员的操作技能以及维护设备提出了较高的要求。因此,实现主控节点自动分配网络地址,开发能够实现即插即用的分布式CAN网络有着重要的意义。目前的CAN网络节点的即插即用实现方式,主要是通过软件实现CAN网络地址的自动分配,主要的实现方式有以下两种:
一种是基于模块虚地址的方式,实现模块个体差异;各模块在上电时,通过一定的随机算法产生虚地址,主机在上电后逐个缩小范围搜索虚地址,并依据从机的响应,判断虚地址是否重复(重复后需重新产生虚地址),以此最终确定各模块的唯一虚地址,主机通过该虚地址的差异分配地址,从机的通信地址和该虚地址进行绑定。这种方式的缺点是:嵌入式芯片的随机算法实现需要考虑,主机逐范围搜索虚地址的算法的可靠性和效率不够,且根据虚地址无法快速定位到该模块的物理位置;
另外一种是基于物理地址的方式,按照一定规则,写入一个唯一的32位编码(掉电记忆),通过该编码的不同来实现各模块的个体差异,该32位编码的前29位作为节点的通讯地址(CAN通讯帧29位标识符)。这种方式的缺点是:由于标准的CAN扩展帧中,29位标识符中的8位作为PS为目的地址、8位的SA为源地址,其他位用于表示ID页、报文代码等,但是本方式下,由于32位编码的不确定性,导致29位标识符的任意数字组合都可能被作为节点地址,因此这种情况下,前29位作为节点的通讯地址的时候,地址长度可能会超过PS和SA的8位的要求,这样也就导致此CAN网络不能用于其它的数据和命令处理,不具备通用性、兼容性,不能引入到其它的CAN网络中,必须单独设计一个CAN网络用于地址分配。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述使用操作接口来设定节点地址带来的操作不便、使用虚拟物理地址导致无法定位到节点的物理位置、以及使用32位编码绑定29位CAN标识符所造成的该CAN网络不具备通用性以及兼容性的缺陷,提供一种支持即插即用的分布式CAN网络及其节点地址自动分配方法。
本发明解决其技术问题所采用的技术方案是:构造一种支持即插即用的分布式CAN网络节点地址自动分配方法,该CAN网络包括一个主节点和N个从节点,1≤N≤255,所述方法包括以下步骤:
S1、从节点基于控制板上的SN码生成相应的MAC地址;
S2、从节点向主节点发送包含有所述MAC地址的注册站号请求;
S3、主节点根据接收的注册站号请求中的MAC地址分配一个唯一对应的站号X,并将所述站号X发送回从节点,其中,1≤X≤N;
S4、从节点将分配的站号X转换为二进制后作为CAN通讯帧中的8位的目的地址或源地址。
在本发明所述的支持即插即用的分布式CAN网络节点地址自动分配方法中,所述步骤S3中所述的为所述MAC地址分配一个唯一对应的站号X包括:
S31、判断所述注册站号请求中包含的MAC地址是否已经有绑定站号;如果没有绑定站号,则转步骤S33,如果已经有绑定站号,则转步骤S32;
S32、判断该绑定站号是否已经分配给其他从节点,如果已经分配给其他从节点,则转步骤S33,如果没有分配给其他从节点,则将该绑定站号分配给该MAC地址对应的从节点,结束;
S33、从空闲站号中选择一个最小的站号与该MAC地址进行绑定,再将与该MAC地址绑定的站号分配给从节点,结束。
在本发明所述的支持即插即用的分布式CAN网络节点地址自动分配方法中,所述步骤S4还包括:判断分配的站号X和该从节点的EEPROM中存储的站号是否相同,如不同,则将分配的站号X写入EEPROM中。
在本发明所述的支持即插即用的分布式CAN网络节点地址自动分配方法中,所述SN码为数字和/或字母的组合。
本发明还公开了一种支持即插即用的分布式CAN网络系统,包括一个主节点和N个从节点,1≤N≤255,所述从节点包括MAC地址生成单元和站号注册单元,所述主节点包括站号分配单元;其中:所述MAC地址生成单元用于基于控制板上的SN码生成相应的MAC地址;所述站号注册单元用于向主节点发送包括有MAC地址的注册站号请求;所述站号分配单元用于根据接收的注册站号请求中的MAC地址分配一个唯一对应的站号X,并将所述站号X发送回对应的从节点,其中,1≤X≤N;所述从站点将主节点分配的站号X转换为二进制后作为CAN通讯帧中的8位的目的地址或源地址。
在本发明所述的支持即插即用的分布式CAN网络系统中,所述的为所述MAC地址分配一个唯一对应的站号X包括:在所述注册站号请求中包含的MAC地址没有绑定站号或者已经绑定站号且该绑定站号已经分配给其他从节点时,从空闲站号中选择一个最小的站号与该MAC地址进行绑定,再将与该MAC地址绑定的站号分配给从节点;在所述注册站号请求中包含的MAC地址已经绑定站号且该绑定站号没有分配给其他从节点时,将该绑定站号分配给该MAC地址对应的从节点。
在本发明所述的支持即插即用的分布式CAN网络系统中,所述的站号注册单元还用于在分配的站号X和EEPROM中存储的站号不同时将分配的站号X写入EEPROM中。
在本发明所述的支持即插即用的分布式CAN网络系统中,所述SN码为数字和/或字母的组合。
实施本发明的支持即插即用的分布式CAN网络及其节点地址自动分配方法,具有以下有益效果:本发明中利用每个节点独有的SN码生成MAC地址,将MAC地址与站号唯一对应绑定分配,再将站号作为CAN通讯帧中的目的地址或源地址,即实现了SN码、站号以及节点地址的一一对应绑定,可以通过站号或者节点网络地址定位到节点所在的物理位置,而且从站站号小于256,因此站号可以用29位标识符中的8位的PS目的地址或者8位的SA源地址表示,迎合了标准CAN通讯帧的数据格式要求,可以用于所有满足标准CAN通信协议的网络的数据和命令处理,具备通用性、兼容性。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明支持即插即用的分布式CAN网络节点地址自动分配方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
CAN网络包括一个主节点和N个从节点,其中,1≤N≤255,例如一般基于CANopen协议的网络中最大支持127个站点。
参考图1是本发明支持即插即用的分布式CAN网络节点地址自动分配方法的流程图。
本发明的支持即插即用的分布式CAN网络节点地址自动分配方法包括以下步骤:
S1、从节点基于控制板上的SN码生成相应的MAC地址;
S2、从节点向主节点发送包含有所述MAC地址的注册站号请求;
S3、主节点根据接收的注册站号请求中的MAC地址分配一个唯一对应的站号X,并将所述站号X发送回从节点,其中,1≤X≤N;
S4、从节点将分配的站号X转换为二进制后作为CAN通讯帧中的8位的目的地址或源地址。
步骤S1中的SN码一般为数字和/或字母的组合,此处可以基于一定的规则将SN码转换为MAC地址,具体的转换规则并不做限制,只要能实现SN码与MAC地址的唯一对应即可。
其中,步骤S2中的注册站号请求主要包括注册报文,该步骤中将步骤S1中得到的MAC地址写入注册报文发送,以从主节点获取站号。
关于步骤S3:
主节点在上电后首先初始化从节点的站号,并统计从节点的站号申请信息,针对各个注册站号请求,按照以下步骤执行站号分配:
S31、判断所述注册站号请求中包含的MAC地址是否已经有绑定站号;如果没有绑定站号,则转步骤S33,如果已经有绑定站号,则转步骤S32;
S32、判断该绑定站号是否已经分配给其他从节点,如果已经分配给其他从节点,则转步骤S33,如果没有分配给其他从节点,则将该绑定站号分配给从节点,结束;
S33、从空闲站号中选择一个最小的站号与该MAC地址进行绑定,再将与该MAC地址绑定的站号分配给该MAC地址对应的从节点,结束。
关于步骤S4:
该步骤中,从节点判断分配的站号和该从节点的EEPROM中存储的站号是否相同,如不同,则将分配的站号写入EEPROM中,然后可以基于EEPROM中的站号X,确定其节点地址,将CAN通讯帧的29位标识符中的目标地址取值为X(作为接收数据帧使用时),或者29位标识符中的源地址取值为X(作为发送数据帧使用时)。
本发明的CAN通讯网络中数据链路层的通信协议主要参考CAN2.0B和J1939的相关规定,使用CAN扩展帧的29位标识符并进行了重新定义,例如,根据J1939的相关规定,29位标识符一般分为6个部分,PS和PA是其中的两个部分,用于表示报文发送节点地址和报文接收节点地址,具体的,PS为8位的目的地址,SA为8位的源地址。本发明与通用CAN通讯帧相同,保持29位标识符由6个部分组成,并且保持其中对于PS和PA两个部分用于表示节点地址的功能,所以本发明的数据帧具有兼容性和通用性。
该步骤S4即是将获得的站号X写入上述的PS或者SA。
比如站号1发送到站号2的报文,那么其29位标识符的其他部分按照预定的规则定义好,而PS就可以定义为2(代表目的地址是2),SA就可以定义为1(代表源地址为1);再比如站号5发送到站号3的报文,那么其29位标识符的其他部分按照预定的规则定义好,而PS就可以定义为3(代表目的地址是3),SA就可以定义为5(代表源地址为5)。
这样使用就可以和标准的CAN通信协议ID号定义兼容,只需使用29位ID标识符中的PS和SA两个字节,这种兼容性可以将该地址分配策略引入到所有满足标准CAN通信协议的网络中,而不必要单独为站号分配设计一个独立的CAN网络。
对应的,本发明还公开了一种支持即插即用的分布式CAN网络,包括一个主节点和N个从节点,且1≤N≤255,
所述从节点包括MAC地址生成单元和站号注册单元,所述主节点包括站号分配单元;其中:所述MAC地址生成单元用于基于控制板上的SN码生成相应的MAC地址;所述站号注册单元用于向主节点发送包括有MAC地址的注册站号请求;所述站号分配单元用于根据接收的注册站号请求中的MAC地址分配一个唯一对应的站号X,并将所述站号X发送回对应的从节点,其中,1≤X≤N;所述从站点将主节点分配的站号X转换为二进制后作为CAN通讯帧中的8位的目的地址或源地址。
其中,所述的为所述MAC地址分配一个唯一对应的站号X包括:在所述注册站号请求中包含的MAC地址没有绑定站号或者已经绑定站号且该绑定站号已经分配给其他从节点时,从空闲站号中选择一个最小的站号与该MAC地址进行绑定,再将与该MAC地址绑定的站号分配给从节点;在所述注册站号请求中包含的MAC地址已经绑定站号且该绑定站号没有分配给其他从节点时,将该绑定站号分配给从节点。
其中,所述的站号注册单元还用于在分配的站号和EEPROM中存储的站号不同时将分配的站号写入EEPROM中。
其中的SN码一般为数字和/或字母的组合,可以基于一定的规则将SN码转换为MAC地址,具体的转换规则并不做限制,只要能实现SN码与MAC地址的唯一对应即可。
综上所述,实施本发明的支持即插即用的分布式CAN网络及其节点地址自动分配方法,具有以下有益效果:本发明中利用每个节点独有的SN码生成MAC地址,将MAC地址与站号唯一对应绑定分配,再将站号作为CAN通讯帧中的目的地址或源地址,即实现了SN码、站号以及节点地址的一一对应绑定,可以通过站号或者节点网络地址定位到节点所在的物理位置,而且从站站号小于256,因此站号可以用29位标识符中的8位的PS目的地址或者8位的SA源地址表示,迎合了标准CAN通讯帧的数据格式要求,可以用于所有满足标准CAN通信协议的网络的数据和命令处理,具备通用性、兼容性。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。