CAN总线系统中多播技术的实现
- 格式:pdf
- 大小:262.49 KB
- 文档页数:5
第21卷第3期2004年9月河 北 省 科 学 院 学 报
JournaloftheHebeiAcademyofSciencesVol.21No.3
Sep2004
文章编号:1001-9383(2004)03-0062-05
CAN总线系统中多播技术的实现①
孙立辉,和志强,曾文献
(河北经贸大学,河北石家庄050061)
摘要:多播技术是控制CAN总线系统中节点同步工作的有效方法。详细介绍了CAN总线控
制器SJA1000在PeliCAN模式下验收过滤器的工作原理。设计了在同一CAN总线网络中实现
单播、组播和广播的方法。该方法具有单播帧和多播帧全部由总线控制器自动验收,无需软件
处理的优点,可以大大简化CAN总线节点的软件设计,增强应用系统的实时性能。
关键词:SJA1000;CAN总线;组播;广播
中图分类号:TN91 文献标识码:A
ImplementationofmulticastinCANbussystem
SUNLi2hui,HEZhi2qiang,ZengWen2xian
(HebeiEconomic&TradeUniversity,ShijiazhuangHebei050061)
Abstract:MulticastisaneffectivewaytocontrolnodesworkingsynchronouslyinCANbus
system.TheprincipleofacceptancefilterofSJA1000workinginPeliCANmodeisdescribedin
detail.Amethodofrealizingsingle2cast,broadcastandmulticastinoneCANbusnetworkis
presented.Thismethodcanachievethatallsingle2castframesandmulticastframesarefiltrated
byCANbuscontrollerautomaticallywithoutsoftware′sdisposal.Thismethodcansimplifysoft2
waredesignofCANbusnodesandenhancereal2timeperformanceofapplicationsystemgreat2
ly.
Keywords:SJA1000;CANBus;Multicast;Broadcast
多播技术是现场总线系统中实现多点同步动作的一种有效方法,但是在复杂的现场总线控制系统
中为满足控制的需要可能要同时用到单播、组播和多播三种帧传送方式,这时对系统节点的配置则需要
一些技巧。在详细分析独立CAN控制器SJA1000PeliCAN模式下验收过滤器工作原理的基础上,介绍
了在CAN总线系统中实现同时支持单播、组播和多播的方法。
1SJA1000验收过滤器的工作原理
独立CAN控制器SJA1000是PhilipsSemiconductorsCAN控制器PCA82C200的替代产品,它提供了
两种工作模式:BasicCAN模式和PeliCAN模式。BasicCAN模式与PCA82C200完全兼容,PeliCAN模式
不仅全面兼容CAN2.0B技术规范,而且增加了许多新的功能,尤其是帧过滤功能得到增强。与
PCA82C200相比,不仅验收代码寄存器和验收屏蔽寄存器的个数都增加到了4个,而且配置方法更加灵
活。
SJA1000工作在PeliCAN模式时,验收过滤器由验收代码寄存器ACR3、ACR2、ACR1、ACR0和验收
①收稿日期:2003-08-23作者简介:孙立辉(1971-),男,河北东光县人,军械工程学院在读博士研究生,主要从事通信技术的应用研究.屏蔽寄存器AMR3、AMR2、AMR1、AMR0组成。ACR和AMR配合在一起工作,所有对应AMR中0的
ACR位与CAN信息帧有关位必须全部相同才算验收通过。所有对应AMR为1的ACR位,其验收过滤
功能被屏蔽,CAN信息帧的对应位对验收不产生影响。
由于SJA1000兼容CAN2.0B技术规范,它支持标准帧和扩展帧两种帧格式,SJA1000对每种帧格式
都有单过滤和双过滤两种过滤方法,故实际上SJA1000有四种过滤形式,下面将分别进行介绍。
1.1单过滤模式
在单过滤模式中,4个验收代码寄存器和4个验收屏蔽寄存器分别被配置成32位的验收代码寄存
器和验收屏蔽寄存器,总线上的帧只有通过了它的验收才予以接收。
1.1.1接收标准帧时过滤器的配置
图1为单滤波模式接收标准帧的过滤器配置图。在这种配置下,标准帧的11位识符(ID.28~ID.
18)、RTR和数据帧中的前两个字节(DB1、DB2)被用于过滤。参与过滤位对应AMR中“1”的那些位对
接收过滤不产生影响。参与过滤位中所有对应AMR中“0”的那些位逐位与ACR中对应位比较,只有全
部相同,该帧过滤才算通过。若接收到的帧为远程帧(RTR=1)或是数据帧但其数据字节个数为0,则
验收时只要11位标识符和RTR位验收通过,该帧即可被接收。
图1单滤波模式接收标准帧时过滤器配置1.1.2接收扩展帧时过滤器的配置
图2为单滤波模式接收扩展帧时的过滤器配置图。
图2 单滤波模式接收扩展帧过滤器的配置
单过滤模式接收扩展帧时,验收代码寄存器和验收屏蔽寄存器分别由除ACR3和AMR3的最
低两位以外的其余30位组成,ACR3和AMR3的最低2位未使用,扩展帧的29位标识符和RTR被用于
过滤,其过滤规则同过滤标准帧相同。
1.2双过滤模式在双过滤模式中,4个ACR和4个AMR被配置成两个短的过滤器,总线上的帧只要通过了两个过36 第3期 孙立辉等:CAN总线系统中多播技术的实现滤器中一个的验收,该帧即可被接收。双过滤模式下接收标准帧和扩展帧过滤器的配置相差较大,下面
分别进行介绍:
1.2.1接收标准帧时过滤器的配置
图3为双滤波模式接收标准帧的过滤器配置图。
在对标准帧进行验收时,过滤器1按图示验收规则对标识符和第一个数据字节进行检验,过滤器2只对帧标识符和RTR位进行检验,当报文通过两个过滤器中一个的验收时即可被接收。同单过滤模式
接收标准帧一样,当接收到的帧为远程帧或者数据帧的数据字节的个数为0,接收过滤器1在验收时将
忽略对数据字节的检验。
图3双滤波模式接收标准帧的过滤器配置1.2.2接收扩展帧时过滤器的配置图4为双滤波模式接收扩展帧的过滤器配置图。在这种情况下两个过滤器看起来比较规整,两个过滤器的均16位,对扩展帧标识符的高16位进行过滤。过滤规则与前述相同。
2广播和组播的实现
在CAN总线系统中,帧的发送形式共有3种,即:单播、组播和广播。其中组播和广播都属于多播。由于绝大多数系统中都要用到单播,所以在同一CAN系统中通常用到的发送形式组合,归纳起来有四种可能:(1)只用到单播;(2)既用到单播,也用到组播;(3)既用到单播,也需要广播;(4)既用到单播,也需要广播和组播。若系统中只用到单播,实现起来非常简单,而在一个系统中同时用到两种以上的发送
方式,实现时则需要一些技巧。对于PCA82C200和SJA1000的BasicCAN模式,过滤器只有一种单过滤
模式,要想在一个系统中既支持单播又支持多播,不仅需要合理设置验收过滤器,而且还要结合软件才
可以实现。此时系统的实时性能会大打折扣。SJA1000的双过滤模式为实现同时支持单播和多播的功
能提供了极大的方便。将通过几个例子分三种情况介绍SJA1000工作在PeliCAN模式且过滤器采用双
过滤模式实现多播的方法。
2.1支持单播和组播的实现方法
下面通过一个双过滤模式下接收标准帧的例子,来介绍在同一CAN总线系统中实现支持单播和组
播的方法。
系统中帧标识符按图5所示进行分配。标识符的最高位用于区分帧是组播帧还是单播帧。需要说
明的是,笔者仅仅是利用图5作为例子来说明设计思想,具体应用时可以根据具体需要规定标识符中各
位的含义。46河北省科学院学报 2004年第21卷 图4 双滤波模式接收扩展帧的过滤器配置
2827262524232221201918说明
1目的组地址源节点地址自定义组播帧
0目的节点地址源节点地址自定义单播帧
图5采用标准帧进行单播和组播时标识符的分配举例
两个过滤器中的一个用于过滤单播帧,另一个用于过滤组播帧。用过滤器1验收组播帧,过滤器2验收单播帧。ACR寄存器和AMR寄存器的设置如图6所示。ACR0.6~ACR0.4表示节点所属组的编号,ACR2.6~ACR0.3表示节点的地址。
图6采用标准帧进行单播和组播时ACR、AMR设置举例当总线上传送的是组播帧且报文标识符的ID.27~ID.25与节点所属组编号相同时,报文会通过过
滤器1的验收而被接收。当总线上传送的是单播帧且帧标识符的ID.27~ID.24与节点地址相同时报
文会通过过滤器2的验收而被接收。56 第3期 孙立辉等:CAN总线系统中多播技术的实现2.2支持单播和广播的实现方法同时支持单播和广播的实现方法与同时支持单播和组播的实现方法基本相同,只不过不用设置组
地址,只需区分广播帧和单播帧即可。
2.3支持单播、组播和广播的实现方法
采用前述的方法不能直接实现同一系统中支持单播、组播和广播的功能,但利用验收过滤器在双过
滤模式下接收标准帧和扩展帧时配置不同这一特点,则可以巧妙地实现该功能。
比较一下图3和图4不难发现,双过滤模式下接收扩展帧和标准帧时,过滤器配置的差异在于:接
收标准帧时,ACR3和AMR3的低四位属于过滤器1,参与对第一个数据字节的验收过滤,而在接收扩展
帧时,它属于过滤器2,参与对扩展帧标识符的过滤。更为重要的是,这种配置的变换是由SJA1000根据
接收到帧的格式不同自动进行的。利用这一特点,我们可以实现在同一CAN系统中同时支持单播、组
播和广播。下面举例来说明实现方法。
规定使用过滤器1验收组播帧和广播帧,过滤器2用来验收单播帧,且用标准帧格式发送组播帧,
用扩展帧格式发送广播帧和单播帧。组播、广播和单播帧的帧格式定义分别如图7、8、9所示。
按照图7-9所示的帧格式定义,ID.28用以表示帧是单播还是多播,置ACR0.7=1,AMR0.7=0,
ACR2.7=0,AMR2.7=0,使过滤器1验收组播和广播帧,过滤器2验收单播帧。若发送帧的ID.28=1且为扩展帧格式,则该帧为广播帧,接收节点的过滤器1按照图4所示的规则对该帧进行验收过滤。若
发送帧ID.28=1且帧格式为标准帧,则该帧为组播帧。接收节点的过滤器1按照图3所示的规则对帧
进行验收,与验收广播帧不同的是,它不仅过滤帧中ACR0、ACR1的对应位,而且还要过滤ACR3低4位
的对应位,即目标组编号。用这4位判断本节点所在组是否是该帧的目标组。若ID.28=0且帧格式为
扩展帧,则该帧为单播帧,接收节点的过滤器2按照图4所示的规则对该帧进行验收过滤,此时ACR3和AMR3的低4位属于过滤器2,它仍然是对目标节点所属组编号进行过滤,ACR2全部8位与ACR3的
高4位对源节点地址、目标节点地址以及自定义部分进行验收过滤。282726252423-18DB1.7-DB1.4DB1.3-DB1.01源节点地址自定义目标组编号
图7组播帧的帧格式定义举例