基于C8051F040的CAN总线隔离器的设计与应用

2009-12-08 17:19:04来源: 电子设计工程

  1 引言

  CAN(Controller Area Network),即控制器局域网,是应用最广泛的现场总线之一,CAN总线以其实时性强,可靠性高,结构简单,互操作性好,价格低廉等优点,可应用于高速网络和低成本的线路网络。这里提出一种CAN总线隔离器的通讯系统,将其应用于某飞行器到地面的通讯网络,实现飞行器和地面的速度隔离,从而使飞行器和地面之间能够稳定实时通信。该系统设计在分析CAN总线2.0B协议的基础上,采用结构化方法独立设计飞行器和地面双方的通信协议。底层模块的硬件设计是以C8051F040高速型单片机为核心,其内部集成CAN协议控制器,因而只需增加CAN收发器就可实现CAN智能节点设计,比传统的由单片机与CAN 协议控制器共同组成的CAN节点更简单,可靠,易操作。而CAN总线应用层协议由用户自行定义编写,使其更符合该系统设计要求。目前整个系统运行良好,性能稳定,通信冗余度好,符合工业现场使用要求。

  2 基于C8051F040的CAN智能节点设计

  图1是基于C8051F040的CAN总线硬件接口原理电路图。通过C8051F040内部所集成的CAN控制器,为了增强系统的抗十扰能力,在CAN控制器与TJA1040之间接入光电耦合器6N137,从而实现TJA1040与外界CAN通信。事实上,集成收发器TJA1040本身具有瞬间抗干扰能力,可保护总线,降低射频干扰,以实现热保护功能。因此,在干扰不严重的廊用场合,无需增加光电隔离,使得系统达到最大通信速率或距离。如果使用光电隔离器,应尽量选用高速光电隔离器,以减少CAN总线有效回路信号传输的延时时间。由于CAN隔离器需通过CAN总线采集输入输出模块的数据信息,干扰较大,为了系统的稳定可靠性,需加光电隔离器。通过CAN2.0B兼容CAN2.0A协议的连接通讯测试,光电耦合器6N137上升时间为30 ns(典型值),隔离电压为3 000 V,其支持最大频率值超过30 MHz。

基于C8051F040的CAN总线硬件接口原理电路图

  为实现系统的稳定可靠性,该系统设计采用冗余设计,利用双通道光耦HCPL2631隔离并产生控制信号,控制两个单刀双掷开关MAX4635,从而实现CAN智能节点的切换。

  3 CAN总线隔离器设计

  该系统设计的CAN总线隔离主要由发送和接收两部分组成。发送和接收部分都由数据指令配置、数据处理和数据传输3个单元组成,如图2所示。其中发送部分:上位机指令配置完后,通过FPGA传输给单片机,单片机利用自身所带的CAN总线,经隔离处理后到达总线驱动器,然后通过CAN总线输出数据。而接收部分正好相反。该系统设计将飞行器速度设置为500 kHz,地面速度设置为50 km/s,从而更好模拟飞行器和地面的通信。

  4 隔离器收发双方通信协议

  总线隔离器分为飞行器高速接口和地面低速接口两部分,要求隔离器能通过所有地面上行到飞行器的数据。本系统CAN总线采用主从方式,所有总线数据统一采用数据帧,不用远程帧,数据长度最大为8字节,最小为0字节。根据数据链路层协议,仲裁场标准标识符共11位(ID1O~ID0),系统通过标识符确定数据传输的优先级。本协议规定,ID除表示优先级外,还是数据接收目的节点、数据发送源节点与数据类型。具体说明11位ID:ID[1](ID的0~3位)为数据接收目的节点;ID[2](ID的4~7位)为数据发送的源节点;ID[3](ID的8~10位)为数据类型。

  本协议中,飞行器系统和地面系统都有3个节点,节点编号和ID号如表1所示。

节点编号和ID号

  5 CAN隔离器的软件设计

  5.1 CAN总线初始化

  CAN总线初始化包括:I/O的配置、外部晶体振荡器的配置、CAN总线的开闭、发送和接收初始化。初始化程序如下:

void initial_can(unsigned char MsgNum,unsignedl int id)
{SFRPAGE=CONFIG_PAGE;

初始化程序

   5.2 发送和接收程序

  CAN报文发送是由CAN控制器自动完成,用户只需根据接收到的数据帧的识别符,将对应的数据转移到发送缓冲寄存器,然后将此报文对象的编码写入命令请求寄存器启动发送即可,而发送由硬件完成。这里使用定时更新发送报文对象中的数据,发送数据由控制器自动完成,当收到一个数据帧时,可将具有相同识别符的数据帧发送出去。其发送程序代码如下:

发送程序代码

   CAN报文的接收与发送相同,由CAN控制器自动完成,接收程序只需从接收缓存器中读取所接收的数据,再进行相应处理。其方法与发送程序基本一致,这里不再赘述。

  6 关键技术设计分析

  6.1 冗余设计

  工业控制现场状况复杂,因外力所致的电缆接触故障率远远高于节点的故障率,一旦电缆发生故障,总线就会失去通信能力,并导致系统瘫痪,对工控系统的健壮性构成威胁。解决这一故障最简单、有效的办法是对故障率较高的物理介质进行冗余设计。即使用2条总线电缆、2个CAN总线收发器,但只用1个总线控制器。仲裁电路自动监测总线状态,并自适应选择正常的电缆完成通信任务。发生电缆故障时,设备自动报警,提醒工作人员进行检修。检修过程中,设备使用备用电缆继续工作。电缆冗余设计可实现与通常的CAN总线通讯系统代码级兼容。仲裁电路设置于总线控制器与2个总线收发器之间,监测CAN总线电缆状态,实现自适应切换和报警。设备向其他节点发送报文时,总线控制器向2条总线同时发送相同的报文;而接收报文时,仲裁电路在无电缆故障时,一直使用总线1(主总线)进行报文接收。如果总线2(从总线)出现故障,故障监测电路就向主控计算机发出中断信号报故障,同时处于正常状态的总线1仍承担正常通讯任务;如果总线1出现故障,故障监测电路在向主控计算机发出中断信号的同时,自动切换成总线2,以保证设备正常工作。总线切换动作只会出现在正在使用的电缆发生故障时,这样可提高通讯的稳定性,降低应答失败的几率。

  6.2 接收数据时ID不滤波的实现

  在CAN总线的接收过程中,一般实现的都是发送ID和接收ID相匹配的方式,也就是说在接收方要进行接收,而ID滤波,而本设计实现任意接收方式,只要有数据就开始接收不进行ID号的滤波,这样可更好进行测试,例如某个设备所携带的ID号,由于各种原因与接收方所接收的ID不匹配,这样就可判断出所发设备可能收到干扰,或者所发设备自身出现了问题。这种ID号不过滤的方法主要通过对接收设备的命令请求寄存器、消息掩码寄存器、仲裁寄存器、消息控制寄存器和命令掩码寄存器的设置来实现。其实现程序如下:

实现程序

  7 结论

  本文提出一种CAN总线隔离器的实现方案。利用具有CAN总线控制器的C8051F系列单片机实现了CAN智能节点,增加CAN节点的冗余设计,提高通讯的稳定性,降低应答失败的几率;实现不滤波的CAN数据接收,可更好测试系统的可靠性和监测功能,当接收到不是已知设备发来的消息时,能够准确定位设备故障的位置。此方案实现的CAN总线隔离器已成功应用于某型号飞行器的地面测试台中,经测试和调试后,系统工作稳定,达到设计要求。并且由于采用内嵌的CAN 总线控制器,可为以后的系统升级预留大量空间。

关键字:CAN总线  隔离器  通信协议

编辑:金海 引用地址:http://www.eeworld.com.cn/gykz/2009/1208/article_2437.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
CAN总线
隔离器
通信协议

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved