关于控制局域网总线从节点设备的节点号自动分配方法

文档序号:7692192阅读:169来源:国知局
专利名称:关于控制局域网总线从节点设备的节点号自动分配方法
技术领域
本发明涉及一种节点号自动分配方案,更具体地说,涉及一种关于CAN 总线通信系统中的同 一型号节点设备的节点号自动分配方案。
背景技术
在工业网络中利用CAN总线来建立通信系统已经是一个很成熟的应用 了 ,比如CANOpen、 DeviceNet等,在一根CAN总线上可以挂载多个节点设 备,但只能有一个主节点(master)与多个从节点(slave )组成,如图1所示。 图1示出了一种利用CAN总线建立的由一个主节点和多个从节点组成的 CAN的主从式网络构架。图1所示的CAN的主^v式网络构架中,为了说明 列举了一个主节点和6个从节点。而从节点的数目可以根据需要来设置,并 不限于此处列举的6个。
在整个网络系统中,每个节点(包括主节点与从节点)都有唯一的节点 号来标识每个网络节点设备,这样通信数据才能根据节点号正确的进行主从 之间的传输。在目前应用中,对每个从节点的节点号分配都是通过用户设定 的手段来实现的,比如为每个从节点设备安装一个数字拨码开关,通过数字 拨码开关为每个从节点分配唯一的节点号。这样做当然可以解决问题,但显 而易见的是会增加硬件成本(至少一个数字拨码开关的成本),更致命的还在 于会降低节点设备的防护等级(比如防水、防腐蚀、抗爆等),这是因为在工 业应用中,很多设备从节点都需要考虑到这些因素的影响,增加了一个数字 拨码开关意味着需要在设备外壳上为拨码开关开个窗口以便节点号设置,这 样势必会降低设备从节点的防护等级。
如果我们能够做到既不需要利用拨码开关,又能为每个从节点分配唯一 节点号的话,那么上述的问题就解决了,接下来就重点描述该设计方案。
CAN基本应用
在进行方案描述之前,为了后面更好的理解,我们先简略的介绍一下 CAN的应用与基本实现方法。在CAN核中,一4殳存在数个数据通道,设计者可以把各个数据通道配置成数据发送通道或者数据接收通道,每个通道包 含一个ID寄存器与一组通信数据寄存器,当其中某一个数据发送通道在数
据发送时,通信数据包里会包含该通道的ID值与通信数据值。在CAN核收 到CAN通信数据时,首先对接收到的通信数据包的ID值与自身的各个数据 接收通道进行逐个比较,如果与某个数据接收通道的ID寄存器的设置值一 致,那么该数据接收通道就把通信数据值存入到该通信寄存器里。值得一提 的是,对于数据接收通道的ID值的比较,我们还会经常用到一些ID值Mask 功能,利用Mask功能可以忽略对ID值中的指定几位数据的比较,不管这几 位数据是不是与接收到的数据包的ID值一致,只要非mask位的ID数据一 致,都能接收进来,在本方案中我们将会利用到此功能。如图2所示,图2 示出了 CAN接收、发送数据通道的例子,其中数据接收通道利用了 ID值mask 功能。
如图2所示,CAN数据发送方向CAN数据4妄收方发送CAN通信数据 包片断。CAN数据接收方的数据接收通道验证ID值是否一致,数据接收通 道1验证ID不一致,则不接收CAN通信数据包片断;而数据接收通道2利 用mask功能将后两位mask之后,验证ID—致,则接收通信数据包片断。
ID设置值一般分为两种 一种是11位的标准帧(如图2所示的ID设置), 另外一种是29位的括展帧,为了实现本发明的方案,将会使用29位的括展 帧,其原因在下面的具体实施方式
部分将详细描述。
CAN具有载波侦听多路访问/冲突检测的通信仲裁机制,所以如果有多 个节点同时往CAN总线上发送数据的时候,发送ID值小的那个节点优先获 得CAN总线的控制权,至于更细节的东西请参考CAN通信规范,不属于本 发明方案的重点描述范围。为了清楚和简洁,将省略对公知功能和结构的描 述。

发明内容
本发明的另外方面和优点部分将在后面的描述中阐述,还有部分可从描 述中明显地看出,或者可以在本发明的实践中得到。
本发明提供了一种CAN总线通信系统中从节点设备的节点号自动分配 方法,包括a.初始化从节点设备的节点号;b.发送重复节点号查询请求;c. 等待预定时间,如果预定时间内收到其他从节点设备的节点号沖突回复,则返回步骤a;如果没有收到来自其他从节点设备的节点号沖突回复,则检查该 次重复节点号查询请求是否是第卩次,其中卩为自然数;d.如果小于卩次, 则返回步骤b;如果是第卩次,则该节点号被确定为该从节点设备的节点号。
本发明还提供一种CAN总线通信系统中从节点设备的节点号自动分配 设备,包括用于初始化从节点设备的节点号的装置;用于响应于节点号的 初始化操作,发送重复节点号查询请求的装置;用于判断预定时间内是否收 到来自其他从节点设备的节点号冲突回复的装置,在收到冲突回复时,该判 断装置将结果反馈回用于初始化节点号的装置,在没有收到节点号冲突回复 时,将结果输出到检查装置;用于检查该次重复节点号查询请求是否是第卩 次的装置,其中(3为自然数,在小于卩次时,将输出反馈回用于发送查询请 求的装置,否则将结果输出到确定装置;用于将该节点号确定为该从节点设 备的节点号的装置。
本发明还提供一种包含一个主节点和多个从节点的CAN通信系统,用 于自动分配从节点设备的节点号,该系统包括用于初始化从节点设备的节 点号的装置;用于响应于节点号的初始化操作,发送重复节点号查询请求的 装置;用于判断预定时间内是否收到来自其他从节点设备的节点号冲突回复 的装置,在收到冲突回复时,该判断装置将结果反馈回用于初始化节点号的 装置,在没有收到节点号冲突回复时,将结果输出到检查装置;用于检查该 次重复节点号查询请求是否是第卩次的装置,其中卩为自然数,在小于(3次 时,将输出反馈回用于发送查询请求的装置,否则将结果输出到确定装置; 用于将该节点号确定为该从节点设备的节点号的装置。


通过结合附图对本发明的优选实施例进行详细描述,本发明的上述和其 他目的、特性和优点将会变得更加清楚,其中相同的标号指定相同结构的单 元,并且在其中
图1示出了一种利用CAN总线建立的由一个主节点和多个从节点组成 的CAN的主/人式网络构架;
图2示出了 CAN接收、发送数据通道的例子,其中数据接收通道利用 了 ID值mask功能;
图3示出了 CAN的主从式网络构架中从节点设备节点号确定的状态迁移图4示出了重复节点号查询请求的数据发送通道和重复节点号冲突回复 的数据接收通道的寄存器设置;
图5示出了重复节点号冲突回复的数据发送通道;
图6示出重复节点号查询请求的数据接收通道和重复节点号冲突回复的 数据发送通道的寄存器设置;
图7示出了 CAN的主从式网络构架中从节点设备节点号自动分配的方 法流程图;和
图8示出了 CAN通信系统。
具体实施例方式
下面将参照示出本发明实施例的附图充分描述本发明。然而,本发明可 以以许多不同的形式实现,而不应当认为限于这里所述的实施例。相反,提 供这些实施例以便使本公开透彻且完整,并且将向本领域技术人员充分表达 本发明的范围。在附图中,为了清楚起见放大了组件。
除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本 发明所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通
含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里 明确地这样定义。
与现有技术方案相比校,本发明方案不需要使用拨码开关来确定节点号, 我们都知道在CANopen或DeviceNet通信协议的从节点设备中,每个从节点 设备都会含有一个唯一的序列号,序列号一般^f皮用来标识产品的生产编号, 以便召回或维修产品因生产因素导致的产品问题,该序列号一般是被保存在 非易失性存储器中,比如EEPROM或者FLASH,且同一型号中的各个产品 的序列号都是唯一的。本方案正是利用序列号的唯一性这个特性,并通过从 节点设备之间的通信交互来确定各个节点设备的节点号。确定节点号的流程 机制如图3所示,图3示出了 CAN的主从式网络构架中从节点设备节点号确 定的状态迁移图。
下面对图3中的A、 B、 C、 D四种节点状态进行详细的描述。 首先读取当前要设置节点号的X从节点的序列号并将发送请求次数设置n为零,其中n是自然数。接着,进入状态A。
A:随机生成一个节点号,并利用读取到的序列号设置一个数据发送通 道与数据接收通道,如图4所示,图4示出了 X/人节点的重复节点号查询请 求的数据发送通道和重复节点号冲突回复的数据接收通道的寄存器设置。如 果从节点状态C返回状态A,则继续使用上次生成的节点号初始值。
通过图4也可以回答上面提到的为什么要采用29位扩展帧的问题了,这 是因为如果采用ll位的标准帧,那么除去2位命令字以后,序列号范围只有 为(0 2A9-1),也就是最多只有512个序列号,通常估计很少有产品只生产 512个。因此,如果采用29位的扩展帧,那么序列号范围就大多了,可以支 持2A27= 134217728个产品,这个数已经完全可以满足工控产品的生产需要 了。当然,在产品数量在512个内的情况下,也可以采用ll位的标准帧
在图4的重复节点号查询请求的数据发送通道中,包含了 ID寄存器和数 据寄存器。在ID寄存器中存储了 27位节点设备序列号以及2位重复节点号 命令字。当然,在采用标准帧的情况下,序列号是9位。在数据寄存器中存 储了待发送的查询节点号。
B:在X节点发送完重复节点号查询请求后(l),接下来X节点要等待在
t秒(其中t为自然数,可以根据实际情况对t进行设置,例如,t可以等于
1秒)内会不会收到重复节点号冲突的回复了,假如已经有一个节点设备Y 确定了节点号了,并且该节点号与X节点请求的节点号是相同的,那么Y节 点在收到来自X节点的重复节点号查询请求后,就会发送重复节点号冲突的 回复并将发送请求次数n清零(2),而X节点在收到节点号冲突的回复后重 新返回到初始化节点号状态A,并再次随机生成一个新的节点号,如此重复, 直到请求的节点号没被占用为止,Y节点的重复节点号冲突回复的数据发送 通道如图5所示,图5示出了重复节点号沖突回复的数据发送通道。
在图5中,Y节点重复节点号冲突回复的数据发送通道中包含ID寄存器 和数据寄存器。在Y节点ID寄存器中存储了发送重复节点号查询请求的节 点(在本例中为X节点)的设备序列号,并且Y节点数据寄存器中存储了 X 节点的查询节点号。
C:如果在t秒时间内没收到节点号冲突的回复(3),那么将发送请求次 数n加1,并检查该次重复节点号查询的发送请求次数n是否是第卩次(其 中P为自然数,用户可以根据实际情况设置|3,例如2或3等),如果小于卩次的话(4),那么对这个节点号再次发送查询请求,如果第p次查询后还是没 有收到任何回复的话(5),那么该节点号就被正式确定下来进入状态D,否则 进入状态A,继续重复查询与等待回复的工作,多次查询是为了更加可靠的 保证该节点号是没被其他节点设备占用的。
D:假如X节点的节点号通过如上方式被确定了,那么节点设备X就进 入了正常通讯的状态了,也就是D状态。进入该状态后,节点X除了要正常 通讯外,还需要对来自未确定节点号的节点设备N的重复节点查询请求做出 回复(如果有节点号冲突的话,否则保持沉默)。所以还需要设置一个重复节 点号查询请求的数据接收通道,以及一个重复节点号冲突回复的数据发送通 道。如图6,图6示出重复节点号查询请求的数据接收通道和重复节点号冲 突回复的数据发送通道的寄存器设置。
在图6中,M节点的数据接收通道中用到了 IDmask寄存器的设置,用 了 mask功能就可以忽略了 N节点的序列号的比较,这样做是因为对于X节 点来说,其并不关心对方节点N的序列号,只关心存在于通信包数据部分的 查询节点号,采用mask功能就可以把查询请求都接收进来,进而检查该查询 节点号是否与本节点的节点号有冲突,如果有的话,那么就立即给出一个节 点号冲突的回复,否则的话就保持沉默。而在节点ID寄存器中存储了发送查 询请求的节点的设备序列号,由于采用了 IDmask寄存器,因此节点ID寄存 器中的设备序列号可以是任何数,其并不影响通信数据包的接收。同时,还 包括存储查询节点号的数据寄存器。
图7示出了 CAN的主从式网络构架中从节点设备节点号自动分配的方 法流程图。在步骤S1,给待确定节点号的从节点设备上电。在步骤S2,读取 从节点设备的序列号。在步骤S3,初始化节点号,也即随机生成一个新节点 号,并将发送请求次数n设置为零。在步骤S4, 乂人节点设备向所有上电的其 他从节点设备发送重复节点号查询请求。在步骤S5,发送请求的从节点设备 等待t秒。在步骤S6,在t秒之后,判断从节点设备是否收到来自其他从节 点设备的节点号冲突回复。当收到节点号冲突回复时,返回步骤S3,重新随 机生成新的节点号,并将发送请求次数n设置为零。当没有收到节点号冲突 回复时,进入步骤S7,将发送请求次凄t加1,即n-n+l。接着,在步骤S8, 判断发送请求次数n是否等于用户根据实际情况设定的预定常数p。如果发 送请求次数n不等于预定常数P,则返回步骤S4,继续向其他从i殳备发送重复节点号重新请求。如果等于预定常数P,则进入步骤S9,确定该节点号为 该从节点设备的节点号。
为了更好的阐述上述方法,现以一个例子来进^f亍讲述。
图8示出了 CAN通信系统。如图8所示,布I定在一个CAN通信系统中 有K个节点设备(在本例中,K-6),其中包括一个主节点设备和5个从节 点设备,在CAN通信系统中一般主节点设备的节点号固定为0,所以主节点 设备的节点号是不需要进行自动分配的,而且主节点是不会对任何重复节点 号的请求命令作出任何反应的,这样做可以减少主节点的工作负担,接下来 主要是对各个从节点设备进行节点号的自动分配。
假定5个从节点设备的序列号依次为10000、 10001、 10002、 10003、和 10004。
给定上述的假设条件后,接下来我们分两种情况来描述该方法,以验证
该方法的正确性与可4亍性。
情况1——所有节点设备都不是同时上电
假设节点1先上电,很显然节点1请求任何一个有效节点号都是可行的, 因为别的节点都还没有上电,所以收不到任何回复。 一旦节点1确定节点号 后,如果接下来是节点2上电,那么如果节点2请求查询的节点号与节点1 不冲突的话,节点2的节点号也就确定下来了,否则的话,节点l会给节点 2发送重复节点号冲突的回复,那么节点2只能再次随即产生一个新的查询 节点号,如此重复。其他的节点也是如此重复上述步骤,到最后所有的节点 都可以得到一个有效无冲突的节点号。这样就证明该方案对情况1是适用的。
情况2--至少两个节点设备同时上电
如果至少两个节点设备同时上电,假设有节点1、 3、 5同时上电,那么 可想而知3个节点都会同时发出重复节点号的查询请求,现在我们回到先前 介绍过的CAN协议的仲裁机制----如果有多个节点同时往CAN总线上发送数 据的时候,发送ID值小的那个节点优先获得CAN总线的控制权。根据这一 机制,回到图4,由于同一型号的节点设备序列号是不相同的,所以序列号 越小的节点优先获得发送权,注意这并不意味着序列号小的节点优先获得有 效的节点号,这个道理很简单,虽然一个节点序列号小就可以优先获得重复 节点号的查询请求发送权,但是如果其运气不佳查询的随机节点号总是跟别 的已经确定节点号的节点有沖突的话,那么该节点确定节点号的速度会反而会不及那些序列号大但运气好查询节点号无沖突的节点来的快。但不管怎么 说,同时上电的每个节点都会依次获得有效的节点号。这样证明该方案也同
时适用于情况2。
根据上述本发明方案可知,与现有技术相比,本发明具有如下优点自 动的节点号分配可以去掉拨码开关等硬件设备,降低成本;采用自动节点号 分配可以避免使用像拨码开关等硬件设备带来的开窗设计,可以提高设备的 防护等级;并且该方案中对节点号的分配并没有让主节点参与进来,这样既 没有增加主节点的工作负担,又能实现节点号自动分配的功能。
这里参照支持根据本发明实施例的方法和系统的方框图和流程图描述本 发明示例性实施例。应当理解,流程图和/或方框图的每个方框以及流程图和 /或方框图的方框组合可以通过计算机程序指令实现。这些计算机程序指令可 以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产 生机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令创 建实现流程图和/或方框图方框中指定功能/动作的手段。
这些计算机程序指令也可以存储在计算机可读存储器中,可以引导计算 机或其他可编程数据处理装置以特定方式运行,使得存储在计算机可读存储 器中的指令产生包括实现流程图和/或方框图方框中指定功能/动作的指令手 ,殳的制造物 品。
计算机程序指令还可以加载到计算机或其他可编程数据处理装置上,导 致在计算机或其他可编程装置上执行一系列操作步骤来产生计算机实现的处 理,使得计算机或其他可编程装置上执行的指令提供实现流程图和/或方框图 方框中指定功能/动作的步骤。每个方框可以表示代码模块、片断或部分,其 包括一个或多个用来实现指定逻辑功能的可执行指令。还应当注意,在其他 实现中,方框中标出的功能可能不按图中标出的顺序发生。例如,根据所涉 及的功能,连续示出的两个方框可能实际上基本上并发地执行,或者方框有 时可能以相反的顺序执行。
用于执行根据本发明示例性实施例的web浏览方法的程序也可以作为计 算机可读代码实现在计算机可读记录介质上。计算机可读记录介质是可以存 储之后可由计算机系统读取的数据的任何存储设备。计算机可读记录介质的 示例包括只读存储器(ROM)、随机存取存储器(RAM)、 CD-ROM、磁带、 软盘和光数据存储设备。计算可读记录介质也可以分布在网络互连的计算机
12系统上,从而以分布式存储和执行计算机可读代码。
虽然结合目前被认为是最实际和最优的实施例描述了本发明,但本领域 技术人员应当理解本发明不限于所公开的实施例,相反,本发明旨在覆盖所 附权利要求的精神和范畴之内包括的各种各样的修改和等价结构。
权利要求
1.一种CAN总线通信系统中从节点设备的节点号自动分配方法,包括a.初始化从节点设备的节点号;b.发送重复节点号查询请求;c.等待预定时间,如果预定时间内收到来自其他从节点设备的节点号冲突回复,则返回步骤a;如果没有收到来自其他从节点设备的节点号冲突回复,则检查该次重复节点号查询请求是否是第β次,其中β为自然数;d.如果小于β次,则返回步骤b;如果是第β次,则该节点号被确定为该从节点设备的节点号。
2. 如权利要求1所述的节点号自动分配方法,其中在所述步骤a之前进 一步包括读取从节点设备的序列号。
3. 如权利要求2所述的节点号自动分配方法,其中所述步骤a进一步包 括随^L生成一个节点号并将发送请求次数设置为零。
4. 如权利要求3所述的节点号自动分配方法,其中所述步骤b进一步包 括利用读取的从节点设备的序列号设置一个重复节点号查询请求的数据发 送通道和一个重复节点号冲突回复的数据接收通道。
5. 如权利要求4所述的节点号自动分配方法,其中所述步骤c进一步包 括在没有收到来自其他从节点设备的节点号冲突回复时,将发送请求次数 加1。
6. 如权利要求5所述的节点号自动分配方法,其中在该从节点设备的节 点号被确定后,进一步包括在该从节点设备设置一个重复节点号查询请求 的数据接收通道和一个重复节点号冲突回复的数据发送通道,以响应来自未 确定节点号的从节点设备的重复节点查询请求。
7. 如权利要求5所述的节点号自动分配方法,其中所述重复节点号查询 请求的数据发送通道包括ID寄存器,用于存储节点设备序列号和重复节点 号命令字;和数据寄存器,用于存储查询节点号;以及所述重复节点号冲突回复的数据接收通道包括ID寄存器,用于存储节点 设备序列号。
8. 如权利要求6所述的节点号自动分配方法,其中重复节点号冲突回复 的数据发送通道包括ID寄存器,用于存储节点设备序列号和重复节点号命令字;和数据寄存器,用于存储查询节点号;以及所述重复节点号查询请求的数据接收通道包括IDmask寄存器,用于 忽略从节点设备的序列号的比较而接收查询请求;ID寄存器,用于存储节点 设备序列号和重复节点号命令字;和数据寄存器,用于存储查询节点号。
9. 如权利要求7或8任一个所述的节点号自动分配方法,其中所述序列 号是27位,所述命令字是2位。
10. 如权利要求1所述的节点号自动分配方法,其中主节点设备的节点 号是固定的,并且主节点设备不对来自从节点设备的重复节点号请求命令作 出任何反应。
11. 如权利要求1所述的节点号自动分配方法,其中所述预定时间可以 是l秒,卩可以是2。
12. 如权利要求1所述的节点号自动分配方法,其中从节点设备上电时 即请求执行节点号的自动分配。
13. 如权利要求12所述的节点号自动分配方法,其中如果多个从节点设 备同时上电,ID值小的从节点设备优先获得CAN总线的控制权。
14. 一种CAN总线通信系统中从节点设备的节点号自动分配设备,包括用于初始化从节点设备的节点号的装置;用于响应于节点号的初始化操作,发送重复节点号查询请求的装置;用于判断预定时间内是否收到来自其他从节点设备的节点号冲突回复的 装置,在收到冲突回复时,该判断装置将结果反馈回用于初始化节点号的装 置;在没有收到节点号冲突回复时,将结果输出到检查装置;用于检查该次重复节点号查询请求是否是第p次的装置,其中(3为自然 数,在小于卩次时,将输出反馈回用于发送查询请求的装置,否则将结果输 出到确定装置;用于将该节点号确定为该从节点设备的节点号的装置。
15. 如权利要求14所述的节点号自动分配设备,还包括用于读取从节点 设备的序列号的装置。
16. 如权利要求15所述的节点号自动分配设备,用于初始化的装置随机 生成一个节点号并将发送请求次数设置为零。
17. 如权利要求16所述的节点号自动分配设备,用于发送查询请求的装置利用读取的从节点设备的序列号设置一个重复节点号查询请求的数据发送 通道和一个重复节点号冲突回复的数据接收通道。
18. 如权利要求17所述的节点号自动分配设备,进一步包括一计数器,用于在从用于判断的装置收到没有节点号冲突回复的结果时,将发送请求次 数加l,并将结果输出到用于检查的装置。
19. 如权利要求14所述的节点号自动分配设备,其中所述预定时间可以 是1秒,卩可以是2。
20. —种包含一个主节点和多个从节点的CAN通信系统,用于自动分 配从节点设备的节点号,该系统包括用于初始化从节点设备的节点号的装置;用于响应于节点号的初始化操作,发送重复节点号查询请求的装置;用于判断预定时间内是否收到来自其他从节点设备的节点号冲突回复的 装置,在收到冲突回复时,该判断装置将结果反馈回用于初始化节点号的装 置;在没有收到节点号冲突回复时,将结果输出到检查装置;用于检查该次重复节点号查询请求是否是第卩次的装置,其中卩为自然 数,在小于卩次时,将输出反馈回用于发送查询请求的装置,否则将结果输 出到确定装置;用于将该节点号确定为该从节点设备的节点号的装置。
全文摘要
本发明提供了一种CAN总线通信系统中从节点设备的节点号自动分配方法,包括a.初始化从节点设备的节点号;b.发送重复节点号查询请求;c.等待预定时间,如果预定时间内收到来自其他从节点设备的节点号冲突回复,则返回步骤a;如果没有收到来自其他从节点设备的节点号冲突回复,则检查该次重复节点号查询请求是否是第β次,其中β为自然数;d.如果小于β次,则返回步骤b;如果是第β次,则该节点号被确定为该从节点设备的节点号。
文档编号H04L12/40GK101582824SQ20081009735
公开日2009年11月18日 申请日期2008年5月13日 优先权日2008年5月13日
发明者任可可, 李人东 申请人:施耐德电器工业公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1