基于C8051F045的CAN总线在机车状态监测诊断中的应用

2010-11-27 05:57丁国君王立德王苏敬
铁道机车车辆 2010年6期
关键词:应用层寄存器报文

丁国君,王立德,申 萍,王苏敬

(北京交通大学 电气工程学院,北京100044)

目前用于机车车辆上的常用总线是 TCN、Lon-Works、ARENET和控制器局域网(CAN,Controller Area Network)总线等[1]。与 TCN 、ARENET、LonWorks总线相比,CAN总线响应时间短,系统工作和数据传输的可靠性高,系统扩充灵活,性价比高。CAN总线强调了实时性,又具有极高的可靠性和独特的设计,价格低廉,发展前景广阔。因此采用CAN总线作为电力机车分布式车载状态监测与故障诊断系统的网络总线[2]。

CAN总线是一种有效支持分布式监控或实时控制的串行通信现场总线网络[1]。作为ISO11898国际标准的现场总线技术,以其自身的优势不断得到推广和应用,CAN最早出现在20世纪80年代末的汽车行业中,由德国Bosch公司提出,CAN可提供高达1Mbit/s的数据传输速率,这使实时控制和分布式监控变得非常容易,外硬件的错误检定特性也增强了CAN的抗电磁干扰能力。针对开发的分布式车载状态监测检测与诊断系统(如图1所示),制定了标准CAN总线应用层协议。实际运行结果表明,设计开发的CAN通信网络具有较高的可靠性、实时性和抗干扰能力。

图1 机车状态监测诊断系统框图

1 硬件设计

目前流行的CAN总线器件有2大类[3]:一类是独立的CAN控制器,如SJA1000 CAN控制器,另一类是带有片上CAN的微控制器,如DSP、ARM 和C8051F系列等。由于C8051F045单片机内部集成CAN控制器,符合Bosch规范2.0B(全功能CAN),且C805lF045的集成度高,只需少量外围电路便可组成CAN网络通信系统,可提高系统的整体可靠性。另外,C8051F045内核和普通51系列兼容,指令简单易学,可缩短系统研发周期,故系统采用C8051F045作为微控制器。系统硬件由微处理器和隔离的CAN收发器以及与网络节点通信的SPI或 UART串行接口3部分组成。CAN收发器建立CAN控制器和物理总线之间的连接,控制逻辑电平信号在CAN控制器与物理总线之间的传输,CAN控制器执行CAN协议,用于信息缓冲和滤波。SPI或UART串行总线接口实现网络节点与CAN总线内部的数据传输功能。

1.1 C8051F045和CAN收发器CTM1050

C805lF045单片机是Silicon Laboratories公司推出的完全集成的混合信号SOPC型MCU,具有以下特点:①高速、流水线结构的8051兼容的CIP-51内核(可达25MIPS);②控制器局域网(CAN2.0B)控制器,具有32个消息对象,每个消息对象有其自己的标识掩码;③全速、非侵入式的在系统调试接口(片内);④64kB可在系统编程的FLASH存储器和4 352(4k+256)字节的片内RAM;⑤可寻址64kB地址空间的外部数据存储器接口;⑥硬件实现的SPI和两个UART串行接口。

对于CAN收发器,选用CTM1050收发模块[4],这是一款带隔离的高速CAN收发器芯片,该芯片内部集成了必须的电源隔离、电气隔离和CAN收发器件,并且面积不到3 cm2,可以将CAN控制器的逻辑电平转换为CAN总线的差分电平,并且具有DC2 500 V的隔离功能和ESD保护作用。该模块TXD、RXD引脚兼容+3.3 V、+5 V的CAN控制器.不需外接其他元器件.直接将+3.3 V或+5 V的CAN控制器发送、接收引脚与CTM1050的发送、接收引脚相连。由于采用隔离CAN收发器模块,实现CAN总线上各节点电气、电源间完全隔离和独立,提高了节点的稳定性和安全性。CAN总线通信系统中CAN节点硬件结构框图如图2所示。

图2 CAN节点硬件结构框图

1.3 CAN总线通信工作原理

C8051F045内部集成的CAN控制器符合Bosch规范2.0B,CAN控制器包含一个CAN核、消息RAM(独立于CIP-51的RAM)、消息处理状态机和控制寄存器。CAN内核由CAN协议控制器和负责消息收发的串行/并行转换RX/TX移位寄存器组成,消息RAM用于存储消息对象和每个对象的仲裁掩码。CAN处理器有32个可配置为发送和接收的消息对象,并且每一个消息对象都有自己的识别掩码,所有的数据传输和接收滤波都是由CAN控制器完成的,而不是由CIP-51来完成,大大减小了CPU的负担。

CAN内部寄存器中存储了所有CAN的控制和配置信息,其中包括控制寄存器、状态寄存器、设置波特率的位定时寄存器,测试寄存器、错误计数器和消息接口寄存器。另外,CIP51的SFR并不能直接访问CAN内部寄存器的所有单元,其配置CAN、消息对象、读取CAN状态以及获取接收数据、传递发送数据都由SFR中的 6个特殊寄存器来完成,其中CANOCN,CANOTST和CANOSTA 3个寄存器可直接获取或修改CAN控制器中对应的寄存器,而CANODATH,CANOATL,CANOADR 3个寄存器主要用来访问修改其他不能直接访问的CAN内部寄存器,其中CANOADR用来指出要访问寄存器的地址,CAODATH,CANODAT L这时就相当于要访问的16位寄存器的高低字节的映射寄存器,而对他们的读写则相当于所指向寄存器的读写。

2 CAN应用层协议的制定

到目前为止,国际上已经先后出现 DeviceNet、CAL、CANopen、J1939和SDS等基于 CAN协议标准的应用子协议。但基于CAN总线的商业应用层协议主要有DeviceNet和CANopen两种[5]。但是由于这两种协议是基于通用目的而开发的,结构复杂而且协议软件的价格不菲,因此并非完全适合分布式车载状态监测与诊断系统。针对上述原因,结合CAN总线和列车通信网络系统的结构特点,在吸收以上两种高层协议的基础上,结合IEC61375列车通信网络标准提出了一种可靠实用并且适合于分布式车载状态监测与诊断系统的CAN总线应用层协议[6]。CAN应用协议最基本的要求就是对标识符ID和数据信息代码的合理编写,在设计的同时还要考虑到数据的相对重要程度(优先权)、数据传输的实时性要求(时序)、数据相对于CAN总线在汽车应用而言,考虑到电力机车自身的特殊性,设计的CAN总线应用层协议如表1所示。

表1 面向机车车辆的CAN应用层协议

报文优先级(3位)将所有网络数据分为8个等级的优先权.报文优先级的设计是以报文重要性、报文传输频率、报文数据长度和报文具体的实时性要求为参考的。分段编号(3位)用于对数据分段进行编号,最大支持64 B的数据长度,如果需要传输大于64 B的数据,可以利用应用程序来定义更高一层的用户层协议来予以实现。资源号(2位)用于指示所要操作的节点设备内部单元,根据报文资源节点地址号对设备内部的单元进行操作.目的MAC地址(8位)和源MAC地址(8位)用来指示接收数据的目的节点地址和发送数据的源节点地址,支持同一网络系统中挂接的最大节点数理论为256个资源节点号。功能码(4位)用于指示报文所需要实现的功能。结束标记(1位)是用来标记该数据包传输过程的结束。

数据长度(4位)是标识传输数据的字节数,支持0-8个字节的数据传输,大于8个字节时结合分段编号分帧传输。

CAN总线应用层协议规定了标准设备在执行网络功能时的基本过程,在CAN网络中,各节点功能大小不同,按照CAN总线应用层协议对报文处理的要求,网络中的标准设备的软件设计流程图如图3所示。

图3 标准设备软件设计流程图

3 测试结果

网络测试采用如图4所示的CAN总线网络组网测试方案。首先进行是SPI(UART)-CAN卡的传输测试(以SPI-CAN卡为例),试验用于检验是否能够把网络节点的数据通过SPI经CAN网卡转换并传输到CAN总线上,通过多通道示波器探测SPI总线的SCK、MOSI和MISO信号,测得波形如图5所示,其中波形1为SPI时钟信号SCK,波形2为SPI的MOSI信号。SCK波特率为467 kb/s,CAN网卡能够正常收发网络节点的数据。网络节点的SPI总线在时钟下降沿发送数据,上升沿接收数据,符合设计要求。

其次测试CAN总线收发数据,在测试CAN总线数据传输过程中,将USB-CAN模块与故障检测记录仪连接,观察检测记录仪发出的数据查询帧信息。如图6所示为上位机截获的检测记录终端查询帧,可以看出检测记录终端的查询帧在CAN网络中成功的传输,没有出现丢帧或者帧错误的现象。

图4 CAN总线网络测试示意图

图5 SPI-CAN多字节数据传输波形图

图6 CAN总线数据传输测试

该CAN总线网络通信系统经过试验室的测试,能够完成数据的点对点主从通讯、组播广播通讯、设备轮询/应答、时间触发传输、事件触发传输、故障触发锁存以及故障信息传输等功能。

4 结束语

设计的基于C8051F045单片机的CAN总线智能节点以及配套开发的应用层协议具有集成度高、性能稳定、实时性好等特点,在通信波特率设置为250 kb/s时通信顺畅、可靠。硬件和软件设计方案均已通过测试,并成功应用于昆明铁路局SS34000型电力机车的分布式车载状态监测与故障诊断系统的实际项目中,已无故障运行两年。运行结果证明了开发的CAN总线具有较高可靠性、实时性和抗干扰性。而且后续节点在开发过程中遵循此协议,可使产品开发标准化,更有效保障产品的一致性,增强CAN总线的可靠性和稳定性。

[1]路向阳.我国列车通信网络的发展和应用[J].机车电传动,2001,(6):1-5.

[2]马钊,严祥,丁国君,等.基于 ARM9的车载智能显示终端设计与应用[J].铁道机车车辆,2010,(2):72-75.

[3]饶运涛.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.

[4]杨志国,孙斌.基于CAN总线的橡胶生产监测系统的开发[J].仪器仪表学报,2008,(8):1 686-1 689.

[5]张侃谕.方正.适合于温室控制系统的CAN总线应用层协议开发[J].工业仪表与自动化装置,2007,(1):18-21.

[6]王苏敬,王立德 ,申萍,等.列车用 CAN总线应用层协议研究与实现[J].北京交通大学学报(自然科学版),2008,(5):102-106.

猜你喜欢
应用层寄存器报文
基于J1939 协议多包报文的时序研究及应用
STM32和51单片机寄存器映射原理异同分析
CTCS-2级报文数据管理需求分析和实现
Lite寄存器模型的设计与实现
浅析反驳类报文要点
基于分级保护的OA系统应用层访问控制研究
ATS与列车通信报文分析
新一代双向互动电力线通信技术的应用层协议研究
物联网技术在信息机房制冷系统中的应用
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair