专利名称:一种小型can总线网络组网的方法
技术领域:
本发明涉及CAN总线技术领域,尤其涉及一种小型CAN总线网络组网的方法。
技术背景
CAN即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计, CAN总线越来越受到人们的重视。其应用范围目前已不再局限于汽车行业,而向自动控制、 航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。
一般在组成CAN网络时,需要先定义好CAN网络中每个节点的ID,这样使得CAN网络的建立需要大量的准备时间,需要有专业人员设置好每个节点的ID。对于一般的CAN网络,用户无法使自行完成CAN网络中ID的分配。
虽然现有的CAN组网的方法中,也可由网络分配ID,但多采用一个主机来管理和分配地址,各个节点需要依次连接到网络,在节点接入过程中容易在网络中引入干扰,组网复杂度较高,操作较不方便。发明内容
本发明的目的在于针对上述问题而设计了一种能自行分配ID,实现CAN网络通讯的小型CAN总线网络组网的方法,主要针对网络节点数目较少的场合,本方法无需主机分配地址,各个节点在组网时都已经接入CAN总线网络,不需要依次连接到网络,算法简单, 操作简单,在现有硬件条件下只需加入简单代码就可以实现本方法。
为实现上述目的,本发明采用如下方法一种小型CAN总线网络组网的方法,它的步骤为第一步,CAN网络中各个节点的ID均为初始值ID0,选定其中一个为起始的目标节点, 然后在CAN网络上广播发送生成ID的命令;由于节点初始值均为ID0,所以CAN通讯模块可以批量生产,装配简单,无需像传统组网那样,需要提前设定好每个节点的ID。由于各个节点的CAN通讯模块并无差异,所以起始的目标节点可以按用户的需要选定,无任何限制, 而现有的能自行分配ID的网络中,都采用一个专门用来管理和分配ID的节点,这个节点是唯一确定的,在实际安装网络中很不方便。
第二步,其他节点在接收到生成ID的命令后,开始随机生成一个整数作为自己的 ID,各个节点生成自己的ID后,把IDO作为目标地址,将自己新ID发送出去;由于节点初始 ID都为ID0,所以目标节点发送的生成ID的命令,各个节点在同一时间均可接收到,然后利用随机数函数生成自己的ID。较之用固定的管理节点来对依次接入网络的节点进行ID的分配,可以节约大量的时间,且通讯稳定性好,不会因节点的依次接入而引入干扰;算法简单可靠,直接调用现有的随机数函数即可。
第三步,IDO节点将接收到的ID号码加上IDO组成一个ID表;起始的目标节点暂时对网络中的ID进行管理,可以快速的判断出组网是否成功。固定的管理节点需要时时刻刻的对总线进行监听,这样不仅浪费资源,而且还大量占用总线时间,降低有效通讯。与采用固定的管理节点不同,起始的目标节点只是被动的接收各个节点发送来的数据,全部为有益通讯,总线利用率高,而且只是暂时管理ID表。
第四步,IDO节点将生成的ID表发送给各个其他节点,至此CAN网络ID分配完成。 将完整的ID表发送给其他各个节点,从而取消了起始的目标节点的差异性,使网络中各个节点的地位均相同,使用固定的管理节点的网络,这一管理节点始终处于管理者的地位,其他节点均受到管理。
所述第三步中,如果各个节点随机生成的ID号均不一样,则ID表中含有N个不相同的ID号,则表示ID分配成功,进入第四步。
所述第三步中,如果生成的ID表中出现相同的ID,或者ID表中ID的数目少于N, IDO节点则按照当前的ID表重发生成ID的命令,跳至第二步继续进行。
本发明是针对小型的CAN网络提出的组网方法,具体说是针对节点数50以内的 CAN网络的组网方法。它先将CAN网络中各节点的地址一致化,然后从中选择一个节点作为起始的目标节点,随即向CAN网络发布ID生成信息,除目标节点外的其余各节点都会自动生成一个地址,并向目标节点发送自己的地址,为防止冲突出现,只有当所有节点发布的自己地址不同时,组网才算成功,只要有任何两个或多个节点的地址出现相同,则本次组网失败,将重新进行组网操作。
本发明的有益效果是1)方法实现简单,从而降低了开发成本,只需加入简单的代码就可以实现本方法,无需任何的硬件改动。 2)本方法中最初各个节点的初始ID相同,各个节点的CAN通讯部分软硬件完全相同,所以适合于产量化的生产节点通讯器件。 3)组网操作简单,可由用户自行完成,用户只要连接好线路,即可完成整个网络的ID分配,使用方便。
图1为本发明CAN网络示意图。
具体实施方式
下面结合附图与实施例对本发明作详细说明。
图 1 中,第一步,先按附图所示连接好各个节点,各个节点的ID初始值均为ID0,且使用的为10 位二进制ID。
第二步,选取一节点,例如节点3,输入CAN网络中节点总数N,开启ID分配功能。
第三步,节点3以IDO作为目标地址,在CAN网络中发送生成ID的命令。
第四步,CAN网络中其他节点接收到生成ID的命令后,开始随机生成一个10位二进制的正整数作为自己的ID,并将此ID发送给节点3。例如,节点1在接收到生成ID的命令后,节点1会随机生成一个10位二进制数,将此二进制数作为自己的ID,并将此ID发送给节点3。
第五步,节点3会在一定时间里接收各个节点发来的ID号,并生成ID表。超过此时间后,节点3开始开始计算ID表中不相同ID的数目n,如果η等于N,则表示网络中各个节点的ID都不相同,ID分配成功,进入第六步。否则,节点3将根据当前的ID表,向其他各个节点重发生成ID的命令,转至第四步继续进行。
第六步,节点3将ID表发送给其他各个节点。
关于此方法在CAN网络中适用范围的计算。
假设采用10位二进制ID,则可用ID为IOM个,我们以1000个可用ID计算。(CAN网络中节点总数N)-1第一次ID分配成功的概率
权利要求
1.一种小型CAN总线网络组网的方法,其特征是,它的步骤为第一步,CAN网络中各个节点的ID均为初始值ID0,选定其中一个为起始的目标节点, 然后在CAN网络上广播发送生成ID的命令;第二步,其他节点在接收到生成ID的命令后,开始随机生成一个整数作为自己的ID, 各个节点生成自己的ID后,把IDO作为目标地址,将自己新ID发送出去; 第三步,IDO节点将接收到的ID号码加上IDO组成一个ID表; 第四步,IDO节点将生成的ID表发送给各个其他节点,至此,CAN网络ID分配完成。
2.如权利要求1所述的小型CAN总线网络组网的方法,其特征是,所述第三步中,如果各个节点随机生成的ID号均不一样,则ID表中含有N个不相同的ID号,则表示ID分配成功,进入第四步。
3.如权利要求1所述的小型CAN总线网络组网的方法,其特征是,所述第三步中,如果生成的ID表中出现相同的ID,或者ID表中ID的数目少于N,IDO节点则按照当前的ID表重发生成ID的命令,跳至第二步继续进行。
全文摘要
本发明公开了一种能自行分配ID,实现CAN网络通讯的小型CAN总线网络组网的方法,主要针对网络节点数目较少的场合。它的步骤为第一步,CAN网络中各个节点的ID均为初始值ID0,选定其中一个为起始的目标节点,然后在CAN网络上广播发送生成ID的命令;第二步,其他节点在接收到生成ID的命令后,开始随机生成一个整数作为自己的ID,各个节点生成自己的ID后,把ID0作为目标地址,将自己新ID发送出去;第三步,ID0节点将接收到的ID号码加上ID0组成一个ID表;第四步,ID0节点将生成的ID表发送给各个其他节点,至此,CAN网络ID分配完成。
文档编号H04L12/40GK102546340SQ201210034238
公开日2012年7月4日 申请日期2012年2月16日 优先权日2012年2月16日
发明者于国栋, 方圆, 王公堂, 许福运 申请人:山东师范大学