摘要:为了提高控制系统的通信可靠性,介绍了基于DSP和SJA1000的双滤波冗余 CAN总线的设计与实现。该系统中,CAN总线的工作模式为PeliCAN下的双滤波,使从节点既能够与主节点进行点对点通信,又能够接收主节点的广播数据。给出了系统硬件电路设计和SJA1000的初始化与接收,以及发送数据和切换总线的软件流程。
关键词关键词:DSP;CAN;双滤波;双冗余
中***分类号:TP319文献标识码:A文章编号文章编号:16727800(2013)011012103
0引言
现场总线技术因具有较强的开放性、可操作性、通信实时性以及对环境的适应性等特点而被广泛应用于工业控制领域\[1\]。控制器局域网(Controller Area Network,CAN) 属于工业现场总线范畴,是一种多主方式的串行通讯总线。CAN总线具有较高的位速率、很强的抗电磁干扰性、完善的错误检测机制,在汽车、制造业以及航空工业领域中得到了广泛应用\[2\]。CAN总线存在两个固有缺点:截止期丢失和不确定性信息传输延时\[3\]。为了提高应用CAN总线控制系统的可靠性,本文提出了一种基于DSP处理器TMS320VC33,使用双滤波冗余CAN总线的通信方式。使用两套总线电缆、两个总线驱动器和两个总线控制器,实现物理介质、物理层、数据链路层等关键网络协议部分的冗余配置,在工作总线发生故障时自动切换,启用冗余总线传输数据\[4\]。
1总体设计
本系统中,存在一个主节点和多个从节点,节点与节点之间使用CAN总线进行数据传输。主节点与从节点之间既存在点对点通信,又存在广播通信。采用双滤波冗余CAN总线通信方案,在一套总线瘫痪的情况下,切换到另一套总线,从而保证各个节点之间两种通信形式的高可靠性。每个节点通过***的总线接口电路连接到主总线和备份总线上。其总线连接方式如***1所示。
两套总线都采用热备份的方式,系统上电以后,对两套总线控制器都进行复位初始化,正常情况下,一条总线作为主总线(***1中总线A)用于数据传输,另一条总线作为主总线的备份总线(***1中总线B)等待唤醒。系统默认使用总线A进行通信,当总线A发生异常时,将总线B投入使用,按照同样的方式,也可以实现总线B到总线A的切换。主节点和从节点可以使用A、B两套总线进行点对点通信。同时,主节点也可以通过广播的方式,使用两套总线向各个从节点发送数据。
2硬件设计
系统中每一个与CAN总线相关的通信节点的硬件电路如***2所示。系统中使用的处理器TMS320VC33,TMS320VC33为32位浮点运算器,具有每秒1.5亿次的浮点运算能力,其特点是运算精度高、具有较多并行处理指令,主要完成自适应均衡、自适应滤波等功能。总线驱动器74FCT164245完成总线驱动和电平转换,即处理器工作电平3.3V到CAN总线控制器工作电平5V的转换。SJA1000为CAN总线控制器,PCA82C250为CAN总线驱动器,控制CAN总线的接收和发送数据。系统中还存在一个FPGA完成与CAN总线控制器和DSP的交互。两套CAN总线共享DSP的同一个外中断引脚。
***2硬件电路
在CAN总线设计细节上,尽管SJA1000本身具备一定的保护能力,但其与总线接口部分还是采用了一定的抗干扰措施:SJA1000的CANH和CANL与地之间并联两只10pF的小电容,可以滤除总线上的高频干扰\[5\];为了增强CAN总线各个节点的抗干扰能力,总线输入端与地之间分别接入一只瞬态抑制二极管,当两输入与地之间出现瞬变干扰时,收发器输入端电压被设定在安全范围内。由于CAN总线数据传输率较高,为了提高信号质量,终端连接120Ω左右的匹配电阻。
3软件设计
3.1软件设计概述
在系统初始化时,对两套总线都进行初始化,将两套总线都配置在PeliCAN的双滤波工作模式下。系统采用中断处理的方式,通过判断CAN总线的状态寄存器(SR)的接收缓冲区是否为满,进行CAN总线数据的读取,将读取的数据根据传输帧格式中所定义的帧标识,分别放入广播数据缓存、主总线数据缓存、备份总线数据缓存。从节点的发送采用应答的方式,只有在从节点接收到主节点发送的数据或者指令以后才会应答,从节点不会主动向主节点发送数据或者指令。在总线帧格式的定义中实现主节点数据、从节点数据和广播数据的区分。因此,本文在软件设计中首先介绍了CAN总线的传输帧格式,然后介绍了总线的初始化、接收数据处理、发送数据处理及总线切换方式。
3.2传输帧协议说明
为了易于构建稳定、高速、实时性高和低成本的控制网络,现场总线采用的通信模型大都对ISO模型进行了不同程度的简化\[6\]。CAN总线只采用了物理层和数据链路层。在实际应用中还需添加应用层或用户层的其它约定。CAN总线的传输帧有4种类型:数据帧、远程帧、错误帧和过载帧。如***3所示,数据帧由帧头、仲裁域、控制域、数据域、CRC域、应答域和帧尾组成,帧头标志数据帧的开始,仲裁域包括11位识别码和远程发送请求位,控制域中的数据长度标识表明了数据场中字节数量,数据场由数据帧中的发送数据组成,长度为0~8个字节,CRC域包括CRC序列和CRC界定符,应答场的长度为2个位,包含应答间隙和应答界定符,帧结尾被用来标识帧的结束,使用的传输帧为CAN总线标准帧格式。在总线数据的发送和接收之前,通过对CAN总线的帧信息、识别码1和识别码23个寄存器的设置和判断,来实现帧格式仲裁域所具备的功能。
在总线传输帧格式的定义中,仲裁域包含标识符ID10~ID0和远程传输请求位RTR。如表1所示,ID3表示传输帧的类型,该位为0表示广播通信,为1表示点对点通信;ID2表示传输总线标识,该位为0表示主总线,为1表示备份总线;ID10为0表示主处理占用总线,为1表示从处理占用总线;ID4~ID9表示源节点或目的节点地址;ID0~ID1表示单帧和复帧的首帧、相邻帧和尾帧等信息。按照数据帧格式的定义,系统通过仲裁域完成数据传输路由、设置数据通信方式、选择通信总线、确定数据长度等功能。在实际应用中,为了保证传输帧的可靠性,可以在数据帧中加入校验信息。
3.3软件实现说明
(1)总线初始化。在对两套总线初始化时,系统需要进行的工作有:通过时钟分频寄存器CDR设置CAN总线处于PeliCAN的工作模式;在对总线初始化前,应设置输出控制寄存器(OCR)的复位请求位为高,再设置其它寄存器;通过设置多个接收码寄存器(ACR)来设定节点地址和传输方式,通过接收屏蔽寄存器(AMR)设定工作形式,使CAN总线工作在双滤波模式下,将两个过滤器配置为一个用于过滤点对点通信,另一个用于过滤广播通信;通过定时寄存器(BTR0、BTR1)设定总线的工作频率、采样频率;最后,将输出控制寄存器设置为正常输出方式,复位请求位从高变成低,使CAN控制器进入正常工作状态。
(2)接收数据处理。CAN总线的接收处理,采用的是中断处理函数。当中断到来时,首先根据CAN总线地址中的值来判断是主总线还是备份总线产生的中断,将总线标识设置成相应的值。从总线上读取广播标识、帧类型、数据长度,将总线上的数据存入总线接收缓存。根据帧类型和数据长度判断是否为CAN总线复位帧,数据长度为0,则是复位帧,如果是复位帧,将复位标识设为1。将整个数据帧接收完成以后,对传输数据进行校验,校验成功后,根据广播标识和总线标识,将数据放入不同的缓冲区,以供数据处理。
(3)发送数据处理。在本系统中,从节点发送数据采用应答式,只有收到主节点的数据或者指令后,才发送应答,不会主动发送应答。在正常工作模式下,主节点使用主总线发送数据和指令,从节点通过主总线进行应答。当从节点接收到总线复位命令以后,复位当前总线,使用备份总线发送应答数据。在进行总线发送时,根据总线标识,选择发送CAN地址。在CAN总线的状态寄存器(SR)的发送缓冲器为“释放”时,发送数据。在发送数据前,需要进行拼帧,即加入帧字节长度、节点信息,以及总线标识和帧类型等信息。信息发送结束后,将CAN总线的命令寄存器(CMR)的发送请求位设置为1,表明信息被发送。
(4)总线切换处理。在主函数中,以查询方式检测总线复位标识,如果总线复位标识为1,说明当前总线接收到总线复位命令,需要进行复位操作。在复位操作处理中,首先需要对复位标识清0;然后,填充应答数据,复位当前总线,重新初始化当前总线的接收缓存;接下来通过切换总线标识的方式进行两套总线间的切换;最后,重新复位冗余总线,初始化冗余总线的缓存,使用冗余总线发送应答数据。具体流程见***4。
***4总线切换操作流程
3.4软件测试说明
在125kb/s、666kb/s、1000kb/s 三种波特率下,使用主节点向系统中的各个从节点发送点对点通信数据和广播数据,发送数据与从节点接收数据一致,接收帧数目、接收帧的首尾标识和协议定义一致,这表明CAN总线能够工作在双滤波的模式下。在同样的频率设置下,主节点向从节点发送总线复位指令,从节点接收到复位指令以后,清除总线缓存数据,切换总线,使用冗余总线发送应答数据,测试显示总线复位功能正常。
4结语
使用DSP和双滤波冗余CAN总线的实时控制系统工作稳定,响应速度快,通信可靠,已经成功应用于大型、多节点、可靠性要求较高的控制系统中。
参考文献参考文献:
\[1\]阳宪惠.现场总线技术及其应用\[M\].北京:清华大学出版社,2008.
\[2\]周立功.iCAN现场总线原理与应用\[M\].北京:北京航空航天大学出版社,2007.
\[3\]LEEN G,HEFFERNAN D.Timertriggered controller area network\[J\].Control Engineering Journal,2001,12(6):245256.
\[4\]黄自莹.基于冗余CAN总线的船用阀门嵌入式控制系统\[J\].仪表技术,2011(10).
\[5\]王金龙.短波数字化抗干扰单元的设计与实现\[C\].***事通信干扰会议,2001.
\[6\]饶运涛,邹继***,王进宏,等.现场总线CAN原理与应用\[M\].北京:北京航空航天大学出版社,2007.
\[7\]JEAN PIERRE THOMESSE.Field technology in industrial au—tomation\[C\].San Francisco:Proceedings of the IEEE,2005.
转载请注明出处学文网 » 基于SJA1000和DSP的双滤波冗余CAN总线研究