一种主从模式的多地址通信方法

文档序号:7590887阅读:162来源:国知局
专利名称:一种主从模式的多地址通信方法
技术领域
本发明涉及总线通信技术,尤指一种基于CAN总线的主从模式下的多地址通信方法。
背景技术
CAN的全称为控制器局域网(Controller Area Network),是一种具有国际标准、性能价格比较高且应用最广泛的现场总线之一。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点,但在实际应用中,所挂接节点的数目受网络硬件的电气特性所限制。
CAN是一种主从方式的串行通讯总线,可以有一个或多个主节点,CAN总线的设计具有高的位速率、高抗电磁干扰性,且能够检测出传输中产生的错误等特性。当信号传输距离达到10km时,CAN仍可提供高达50kbit/s的数据传输速率。由于现场总线通信技术具有拓扑结构简单、抗干扰能力强、实时性能高等特性,因此,已被广泛地运用于自动控制、数据采集、安全防护等领域。
目前现场总线的通信机制主要分为节点轮询方式和总线广播方式,其中,节点轮询方式是指主节点向所有需要通信的从节点轮流发送相关的信息,比如当主节点需要查询每个从节点的当前状态,主节点可以采用节点轮询方式向每个从节点发出查询状态信息,等待每个从节点的答复。但是,采用该节点轮询方式时,主节点为了逐个询问从节点的相关信息,会向总线上不断发送重复报文,如此不仅降低了现场总线的工作效率,而且会导致整个系统的实时性不好。
如果主节点采用总线广播的方式与所有从节点通信,也就是说,向所有需要通信的从节点广播发送相关信息,如此,则可能导致总线上的数据拥塞,从而影响系统的稳定性。

发明内容
有鉴于此,本发明的主要目的在于提供一种主从模式的多地址通信方法,既能防止总线上冗余的报文,又能避免总线上报文的拥塞,从而提高总线的通信效率以及系统的稳定可靠性。
为达到上述目的,本发明的技术方案是这样实现的一种主从模式的多地址通信方法,用于主从节点间的通信,关键在于,为每个从节点分配点对点通信地址和广播通信地址,且所有从节点的点对点通信地址互不相同,并为主节点分配与每个从节点相同的广播通信地址和一个以上点对点通信地址;当主节点要发送信息时,该方法还包括主节点根据当前要发送信息的特征和通信量大小确定要采用的通信模式,然后,主节点以当前所采用通信模式下要接收信息的从节点对应的通信地址作为目标节点通信地址发送信息。其中,所述要发送信息的特征为当前要发送信息与每个从节点的相关性。
该方法进一步包括主节点预先确定不同通信模式对应的缓冲区数量以及每个缓冲区的优先级别;则确定通信模式后该方法还包括根据所确定的通信模式给要发送的信息分配相应的缓冲区。
当前所采用的通信模式为主从节点点对点通信模式,所述主节点仅与点对点通信地址与自身当前设置的点对点通信地址相同的从节点进行相互之间的信息发送和信息接收。
当前所采用的通信模式为主节点广播应答模式,该方法进一步包括所述主节点使用广播通信地址发送广播报文,每个从节点使用广播通信地址接收当前的广播报文,并对所接收的广播报文进行处理,之后,以自身的点对点通信地址向主节点的广播通信地址发送应答报文,主节点接收从节点的应答报文。
当前所采用的通信模式为主节点广播无应答模式,该方法进一步包括所述主节点使用广播通信地址发送广播报文,每个从节点使用广播通信地址接收当前的广播报文,并对所接收的广播报文进行相应的处理。
该方法进一步包括更新从节点的点对点通信地址。
上述方案中,该方法进一步包括在每个节点中设置用于完成点对点通信的点对点地址模块,并设置用于实现广播应答通信的第一广播地址模块和用于实现广播无应答通信的第二广播地址模块;每个从节点的点对点地址模块对应自身的点对点通信地址,主节点的点对点地址模块对应所有从节点的点对点通信地址,每个节点的第一广播地址模块和第二广播地址模块对应广播通信地址,其中,主节点的第一广播地址模块能接收所有地址的报文。
该方法进一步包括在主节点中设置用于进行点对点通信地址切换的节点地址切换模块。
该方法进一步包括在主节点中设置用于调整广播报文发送周期的周期定时管理器。
该方法进一步包括在主节点中设置用于生成并启动从节点更新点对点通信地址的节点地址建立模块。
本发明所提供的主从模式的多地址通信方法,主节点可以根据当前通信量的大小选择使用不同的通信模式与从节点进行通信,而且,对于不同通信模式所分配的缓冲区大小和缓冲区优先级别均不相同,如此,可有效地将点对点通信模式与广播通信模式结合起来,发挥各自的特长,不仅可以防止总线上的冗余报文,又在一定程度上避免了总线上报文拥塞的出现,在很大程度上提高了总线的通信效率、工作效率。同时,本发明的方法可以随时修改从节点的点对点地址模块地址,有较强的灵活性。


图1为本发明主从节点点对点通信模式实现原理示意图;图2为本发明主节点广播应答模式实现原理示意图;图3为本发明主节点广播无应答模式实现原理示意图;图4为本发明方法实现的处理流程图。
具体实施例方式
本发明的核心思想是为总线上的每个节点分别设置点对点通信地址和广播通信地址;当主节点要向从节点发送信息时,先根据当前要发送信息的特征和通信量大小确定当前要采用的通信模式,然后,主节点与目标从节点通过当前采用的通信模式所对应的通信地址进行通信。
本发明的方法主要是针对一个主节点对应多个从节点的情况,主节点与从节点之间可以采用三种模式进行通信主从节点点对点通信模式、主节点广播应答模式、主节点广播无应答模式。其中,主从节点点对点通信模式就是指主节点和某一个从节点一对一地进行通信;主节点广播应答模式就是指主节点以广播方式向所有需要通信的从节点发送消息,并等待每个从节点的应答;主节点广播无应答模式就是指主节点以广播方式向所有需要通信的从节点发送消息,无需应答。
通常,主节点根据实际的需求选用不同的通信模式与从节点进行通信,对于所有从节点存在共同特征的信息,比如状态查询信息、地址信息等等,主节点都会选用相应的主节点广播模式;对不同从节点不存在共同特征的信息,主节点会选用主从节点点对点通信模式。实际应用中,主从节点之间的点对点通信和广播通信可以并行完成。
在配置不同的通信模式时,考虑到各种通信模式需求的数据通信量不同,相应使用的缓冲区容量及每个缓冲区的优先级也就不同,一般,将较多数量的缓冲区以及较高优先级的缓冲区分配给较大数据通信量的通信模式,如表一所示。这里,缓冲区优先级是指每个缓冲区在总线上被执行或发送的优先级别。
表一举个具体的例子来说,对于主节点,当主节点有16个通信缓冲区,优先级分为250级时,如果以统计的方式计算通信量,那么主节点中对应每种通信模式,缓冲区的分配如表二所示;对于从节点,当从节点有8个通信缓冲区,优先级分为250级时,如果以统计的方式计算通信量,从节点中对应每种通信模式,缓冲区的分配如表三所示。
表二 表三可以看出,主从节点点对点通信模式是最重要的,也是使用最多的模式,其不仅占用的缓冲区数量多,而且缓冲区中的内容要优先执行和发送。
在主从节点进行通信模式初始化时,主节点根据不同的通信模式给自身和从节点分配不同的通信地址,并根据不同通信模式以及通信量的大小,按照上述表格所示,为不同的通信地址分配不同的缓冲区个数和缓冲区优先级,一般可以将通信模式默认设置为主从节点点对点通信模式。
为了支持主从节点之间三种通信模式的实现,分别在主节点和每个从节点中设置点对点通信地址模块、第一广播地址模块和第二广播地址模块,参见图1~图3所示。其中,点对点通信地址模块用于实现主从节点点对点通信模式;第一广播地址模块用于实现主节点广播应答模式;第二广播地址模块用于实现主节点广播无应答模式。
在主从节点点对点通信模式下,每个从节点中点对点通信地址模块的地址互不相同,主节点中点对点通信地址模块的地址与当前通信的从节点的点对点通信地址模块地址相同,所有主从节点的点对点通信地址模块均能接收和发送(R/S)与其地址相同的报文。在主节点广播应答模式下,所有从节点中第一广播地址模块的地址相同,所有从节点的第一广播地址模块只接收(R)相同地址的广播报文,不发送报文;主节点的第一广播地址模块接收(R)所有地址的报文,并按自身地址发送(S)广播报文。在主节点广播无应答模式下,所有从节点中第二广播地址模块的地址相同,所有从节点的第二广播地址模块只接收(R)相同地址的广播报文,不发送报文;主节点的第二广播地址模块按照自身地址发送(S)广播报文,不接收任何报文。一般,主从节点的点对点通信地址是可变的,而广播通信地址都是固定的。
另外,如图1所示,对于主从节点点对点通信模式,由于每个从节点的点对点通信地址模块的地址均不相同,所以,主节点如果与不同从节点进行通信还需要在主节点内部设置一个节点地址切换模块,以保证主节点中点对点通信地址模块的地址改变为所切换的从节点的点对点通信地址模块地址,即实现从一个从节点中点对点通信地址模块地址向另一个从节点中点对点通信地址模块地址的切换。通常,切换的触发方式有两种一种是由外设动作触发切换,比如通过键盘操作进行点对点通信地址模块地址间的切换,也就是从一个从节点切换到另一个从节点;另一种是用过预先设定的指令自动触发切换,比如主节点与从节点1通信结束后,通过指令自动开始与从节点i(i=2...N)的通信。
本发明中,点对点通信地址模块的地址切换必须在与某个从节点的通信结束后才能进行,因此,所述的地址切换不会影响上一个从节点与主节点之间的点对点通信。也就是说,在同一时刻,主节点只与某一个从节点使用相同的地址进行通信,其它从节点均不参与通信。
如图2所示,对于主节点广播应答模式,主从节点间通信的工作原理是主节点使用第一广播地址模块向所有从节点广播报文,每个从节点使用各自的第一广播地址模块接收广播报文,并且,在对所收到的广播报文进行处理后,通知自身的点对点地址通信模块,由该点对点地址通信模块向主节点发送应答报文,而主节点使用自身的第一广播地址模块接收所有从节点的应答报文。主节点可以周期性地向所有需要通信的从节点发送广播报文,所以,主节点中可以进一步设置一个周期定时管理器,用于调整广播报文的发送周期,以保证系统的实时性。
如图3所示,对于主节点广播无应答模式,主节点向所有需要通信的从节点发送的广播报文中携带有修改信息,比如对从节点中点对点通信地址模块的地址进行更新的新地址信息,那么,就需要在主节点中设置一个节点地址建立模块,用于生成新的点对点通信地址,并负责启动广播报文的发送,使所有从节点进入地址更新状态。其工作原理是主节点使用第二广播地址模块向所有从节点发送广播报文,每个从节点使用各自的第二广播地址模块接收到报文之后,通知自身的地址管理模块,由地址管理模块对从节点中点对点地址通信模块的地址进行修改。在此通信模式下,从节点不需要向主节点回复广播报文。这里,可以在每个从节点中设置地址管理模块,专门用于更新和维护点对点地址通信模块的地址信息,当然,也可以将该更新功能放置于点对点地址通信模块中完成,比如如果放置于点对点地址通信模块中,则第二广播地址模块收到主节点的更新信息后,再将更新地址发送给点对点地址通信模块,由点对点地址通信模块更新自身的地址信息。
基于上述设置和主从节点的内部组成结构,本发明主从节点的通信实现过程如图4所示,包括以下步骤步骤401为每个从节点分配点对点通信地址和广播通信地址,所有从节点的点对点通信地址互不相同;同时,主节点拥有所有从节点的点对点通信地址和广播通信地址。具体实现可以是在总线上的每个节点中分别设置用于点对点通信和广播通信的点对点通信地址模块、第一广播地址模块和第二广播地址模块,并为每个地址模块设定对应的通信地址。这里,可以在主节点中专门设置一地址分配模块,用于配置所有从节点中不同地址模块以及自身地址模块的通信地址。
同时,主节点确定不同通信量等级所需分配的缓冲区数量以及每个缓冲区的优先级别,这里,也可以在主节点中专门设置一个缓冲区分配模块,负责完成通信量与缓冲区的匹配及缓冲区优先级的设置。
在实际应用中,也可以将所述的地址分配模块、缓冲区分配模块合成一个逻辑功能模块,实现相应的功能。
步骤402当主节点向从节点发送信息时,主节点先根据当前要发送信息的特征和通信量大小确定要采用的通信模式,这里,所述发送信息的特征可以是该信息与从节点的相关性。比如判断当前要发送信息是否与所有从节点有关,如果是,则选用相应的广播模式;如果仅与某个从节点有关,则选用点对点通信模式;如果与几个从节点有关,再根据发送信息的通信量确定采用点对点通信模式还是广播模式。
通信模式确定后,主节点再从所确定的通信模式配置好的缓冲区中取出发送信息需占用的缓冲区分配给要发送的信息,用于信息的发送。
步骤403选定当前采用的通信模式后,主节点以当前所采用通信模式下要接收信息的从节点对应的通信地址作为目标节点通信地址发送信息,该信息通过总线被具有相同地址的从节点接收,如果需要应答,该从节点就以自身的点对点地址模块的地址向主节点回应相应信息。
举个例子,假定主节点与所有从节点的第一广播地址模块的通信地址为Add1,主节点当前要发送查询从节点状态信息,那么,参见图2,主从节点的通信过程是主节点经判断发现该状态查询信息与所有从节点都相关,而且需要得到每个从节点的应答,则主节点确定选用主节点广播应答模式,并以Add1作为目标通信地址发送查询从节点状态信息;由于所有从节点的第一广播地址模块地址都为Add1,所以都能收到该查询从节点状态信息,从节点收到该信息后,通过点对点地址模块将自身的状态返回给主节点,每个从节点的点对点地址模块以本模块的通信地址发送应答信息;由于主节点的第一广播地址模块能够接收所有地址报文,所以能够接收到所有合法的应答报文。
对于主从节点点对点通信模式,当前通信过程结束后,主节点可以进一步判断是否需要与另一从节点进行点对点通信,如果需要,则主节点通过节点地址切换模块将自身的点对点通信地址切换为另一从节点的点对点通信地址,然后与另一从节点以相同地址进行通信。比如从节点1的点对点地址模块地址为add1,从节点5的点对点地址模块地址为add5,当前,主节点与从节点1通信,就将自身的点对点地址模块地址置为add1,当通信结束后主节点要与从节点5进行通信时,主节点再通过节点地址切换模块将自身的点对点通信地址切换为add5,与从节点5继续通信。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种主从模式的多地址通信方法,用于主从节点间的通信,其特征在于,为每个从节点分配点对点通信地址和广播通信地址,且所有从节点的点对点通信地址互不相同,并为主节点分配与每个从节点相同的广播通信地址和一个以上点对点通信地址;当主节点要发送信息时,该方法还包括主节点根据当前要发送信息的特征和通信量大小确定要采用的通信模式,然后,主节点以当前所采用通信模式下要接收信息的从节点对应的通信地址作为目标节点通信地址发送信息。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括主节点预先确定不同通信模式对应的缓冲区数量以及每个缓冲区的优先级别;则确定通信模式后该方法还包括根据所确定的通信模式给要发送的信息分配相应的缓冲区。
3.根据权利要求1所述的方法,其特征在于,所述要发送信息的特征为当前要发送信息与每个从节点的相关性。
4.根据权利要求1所述的方法,其特征在于,当前所采用的通信模式为主从节点点对点通信模式,所述主节点仅与点对点通信地址与自身当前设置的点对点通信地址相同的从节点进行相互之间的信息发送和信息接收。
5.根据权利要求1所述的方法,其特征在于,当前所采用的通信模式为主节点广播应答模式,该方法进一步包括所述主节点使用广播通信地址发送广播报文,每个从节点使用广播通信地址接收当前的广播报文,并对所接收的广播报文进行处理,之后,以自身的点对点通信地址向主节点的广播通信地址发送应答报文,主节点接收从节点的应答报文。
6.根据权利要求1所述的方法,其特征在于,当前所采用的通信模式为主节点广播无应答模式,该方法进一步包括所述主节点使用广播通信地址发送广播报文,每个从节点使用广播通信地址接收当前的广播报文,并对所接收的广播报文进行相应的处理。
7.根据权利要求1所述的方法,其特征在于,该方法进一步包括更新从节点的点对点通信地址。
8.根据权利要求1至7任一项所述的方法,其特征在于,该方法进一步包括在每个节点中设置用于完成点对点通信的点对点地址模块,并设置用于实现广播应答通信的第一广播地址模块和用于实现广播无应答通信的第二广播地址模块;每个从节点的点对点地址模块对应自身的点对点通信地址,主节点的点对点地址模块对应所有从节点的点对点通信地址,每个节点的第一广播地址模块和第二广播地址模块对应广播通信地址,其中,主节点的第一广播地址模块能接收所有地址的报文。
9.根据权利要求8所述的方法,其特征在于,该方法进一步包括在主节点中设置用于进行点对点通信地址切换的节点地址切换模块。
10.根据权利要求8所述的方法,其特征在于,该方法进一步包括在主节点中设置用于调整广播报文发送周期的周期定时管理器。
11.根据权利要求8所述的方法,其特征在于,该方法进一步包括在主节点中设置用于生成并启动从节点更新点对点通信地址的节点地址建立模块。
全文摘要
本发明公开了一种主从模式的多地址通信方法,用于主从节点间的通信,关键在于,为每个从节点分配点对点通信地址和广播通信地址,且所有从节点的点对点通信地址互不相同,并为主节点分配与每个从节点相同的广播通信地址和一个以上点对点通信地址;当主节点要发送信息时,该方法还包括主节点根据当前要发送信息的特征和通信量大小确定要采用的通信模式,然后,主节点以当前所采用通信模式下要接收信息的从节点对应的通信地址作为目标节点通信地址发送信息。该方法既能防止总线上冗余的报文,又能避免总线上报文的拥塞,从而提高总线的通信效率以及系统的稳定可靠性。
文档编号H04L12/40GK1677945SQ20041003070
公开日2005年10月5日 申请日期2004年3月31日 优先权日2004年3月31日
发明者全晓霖, 柳书广, 肖利民, 于学萍 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1