CAN总线扩展

2024-10-08

CAN总线扩展(精选8篇)

CAN总线扩展 篇1

CAN是博世公司开发的一种串行通讯总线,主要是为解决现代汽车中不断增加的电子器件相互间的信息交换问题。CAN总线的数据通信在工业应用中相比其他总线在可靠性、实时性和灵活性等方面具有较大优势[1],凭借其优良的性能及独特的设计,在嵌入式开发中有着广泛的应用。随着现代汽车电子网络化的不断发展,车载显示屏需要显示的内容也在不断增加。文中的车载显示屏采用的是WINCE操作系统,主处理器芯片是S3C6410,针对该处理器不包含CAN总线控制器,文中采用CAN总线控制器芯片MCP2515对该处理器进行接口扩展,并设计了WINCE系统下CAN的流接口驱动程序[2]。

1 硬件设计

系统硬件电路如图1所示,其中主处理器芯片采用三星公司的S3C6410,CAN总线控制器和收发器分别采用MCP2515和MCP2551[3]。

图1中SPIMOSI、SPIMISO、SPICLK和SPICS是处理器SPI接口的数据线和控制线,INT16是MCP2515的中断引脚,与处理器的外部中断引脚相连。S3C6410是一款采用ARM1176JZF-S内核的高性能32位处理器,其主频稳定工作在667 MHz,且芯片内拥有两路SPI串行总线控制器,这可实现与CAN总线控制器MCP2515的通信[4]。

Microchip公司的MCP2515是一款带有SPI接口的CAN总线控制器。完全支持CAN V2.0B 技术规范,该器件能发送、接收标准和扩展数据帧以及远程帧。MCP2515自带的两个验收屏蔽寄存器和6个验收滤波寄存器可过滤掉不必要的报文,并且内部包含了两个接收缓冲器和3个发送缓冲器。

MCP2551是一个可容错的高速CAN器件,可作为CAN协议控制器和物理总线接口。MCP2551可为CAN协议控制器提供差分收发能力,符合ISO-11898标准[5]。

2 软件设计

基于WINCE的设备驱动目前有3种:本机设备驱动程序、总线驱动程序和流接口驱动程序。系统采用流接口驱动程序,工作结构框图如图2所示[6]。

2.1 地址映射

在WINCE下,由于有MMU管理单元,因此不能使用物理地址,而只能采用虚拟地址(VA)来访问该寄存器[2],调用WINCE系统函数MmMapIoSpace()将物理地址转化为程序可直接访问的虚拟地址[7]。

需要映射的物理地址为:PHYSICAL_ADDRESS ioPhysicalBase = {0,0};映射的地址长度为:sizeof(S3C6410_GPIO_REG);调用MmMapIoSpace()函数:v_pIOPregs=MmMapIoSpace(ioPhysicalBase,sizeof(S3C6410_GPIO_REG),FALSE);然后可通过修改v_pIOPregs的值改变SPI寄存器,实现SPI通信。

2.2 SPI接口编程

SPI接口一共有4个多功能复用引脚,可通过这些引脚的赋值来完成SPI接口的初始化工作,使其正常启动,从而MCU能够调用SPI接口函数实现对MCP2515的操作。接口函数主要由Spi_Write和Spi_Read组成。程序流程设计如图3所示。

2.3 CAN初始化

CAN控制器MCP2515正常运行之前,需要完成初始化。初始化工作是在函数Init_MCP2515内完成的。首先设置CAN通信的波特率,随后屏蔽中断,设置屏蔽和接收寄存器,接着是清除接收和发送缓冲区,最后打开中断。

2.4 CAN收发实现

根据CAN通信协议的特性,CAN的收发程序中均包含标识符(ID)和数据。下面介绍了接收程序,在MCP2515中包含了两个接收缓冲器RXB0和RXB1,且每个接收缓冲器配有多个验收过滤寄存器。文中在中断方式下,通过设置验收过滤寄存器对符合条件的报文数据进行接收,函数流程设计如图4所示。

2.5 流接口函数编写

MCP2515的流接口驱动程序编译后生成DLL,然后建立CANBus.def文件将其中的接口函数导出。这一文件中包含CAN_Init()、CAN_IOControl()以及CAN_PowerUp()等一组标准函数,这些函数是用于完成标准的文件I/O函数和电源管理等。最终要将此文件添加到本驱动程序的工程中。

因此在对设备进行读写操作时,首先要先通过CreatFile()函数调用CAN_Open()打开设备,在此过程中CAN_Open()函数用到了初始化函数CAN_Init()返回的句柄,而CAN_Read()和CAN_Write()函数需要CreatFile()成功执行后返回的句柄。在应用程序中可通过ReadFile()和WriteFile()函数来调用CAN_Read()和CAN_Write()来对设备进行读写操作。

2.6 注册表

具体的流接口驱动程序和注册表是分不开的,在WINCE内核中添加注册表文件CANBus.reg,内容为

[HKEY_LOCAL_MACHINEDriversBuiltInCANBus]

"Prefix"="CAN"

"Dll"="CANBus.dll"

"Order"=dword:1

"Index"=dword:1

3 结束语

讨论了ARM11处理器S3C6410的CAN总线接口扩展的方法,利用该处理器内部集成的SPI接口扩展,设计出了详细的硬件电路,并设计了基于WINCE系统的CAN接口流驱动程序。试验验证CAN网络通信完全正常,证明了该方案的可实施性。

摘要:介绍了一种基于S3C6410的CAN总线接口扩展方案,通过SPI接口对CAN接口进行扩展,并给出具体的硬件电路。重点研究了WINCE系统下独立CAN控制器MCP2515的驱动程序。结合CAN总线技术规范和MCP2515的特点设计了相关的软件代码,编写了CAN流接口驱动程序,实验结果表明,在WINCE系统下能够较好实现CAN总线的通信。

关键词:CAN,SPI,S3C6410,流接口驱动,WINCE

参考文献

[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.

[2]张冬泉.Windows CE实用开发技术[M].北京:电子工业出版杜,2006.

[3]武安河,部铭,于洪涛.windows2000/XP WDM设备驱动程序开发[M].北京:电子工业出版社,2003.

[4]杨军波,须文波.基于WINCE环境的CAN适配卡驱动程序的设计与实现[J].微计算机信息,2005(21):26-28.

[5]王丹,华红艳,赵嵩.基于双层CAN总线的声纳数据通信系统设计[J].电子科技,2010,23(9):14-17.

[6]李玲娟,毕瑞英.网格环境中基于元数据节点的资源发现方法[J].西安邮电学院学报,2008(1):97-100.

[7]张妮,毕雪芹,田萍果.CAN总线在汽车行驶记录仪中的应用[J].电子设计工程,2010(9):132-135.

CAN总线扩展 篇2

关键词:S3C2440AL,总线扩展,CAN

嵌入式技术和现场总线技术相结合对现代制造业领域产生重大的影响, 由于现在许多ARM微处理器上面没有集成CAN总线接口电路, 所以为了能够利用CAN总线实现制造业的网络化, 需要在嵌入式处理器的SPI总线上扩展CAN总线接口电路。本次设计的CAN总线扩展电路采用MCP2510作为CAN总线控制器, TJA1050作为CAN总线收发器。

1 ARM上扩展CAN接口的实现方法

MCP2510作为CAN控制器的硬件电路结构如图1所示。该电路主要有CAN总线控制器MCP2510、CAN总线收发器TJA1050、高速光电隔离芯片6N137等组成。

设计完硬件电路后就需要在Linux操作系统下编写CAN总线控制器MCP2510控制器的驱动程序, 将编写好的CAN总线驱动程序以模块的方式加入到Linux内核, 然后通过编写CAN总线驱动测试程序验证了这一方案的可行性。

2 MCP2510总线驱动程序的编写

MCP2510驱动程序的开发需要定义一个数据结构file_operations, , 内核就是通过file_operations数据结构来完成对驱动程序访问的。根据系统需求, 在Linux操作系统下设计的CAN总线控制器MCP2510驱动程序的系统调用接口函数如下:

将编写好的CAN总线驱动程序以模块的方式加入到Linux内核, 然后通过编写CAN总线驱动测试程序验证了这一方案的可行性。

3 结论

随着现代制造业向着智能化和网络化方向的发展, CAN总线技术凭着其自身的优点已经成为网络化制造的主流。本文通过在微处理器S3C2440AL上扩展CAN总线控制器, 实现S3C2440AL与CAN总线通信的功能。本设计对工业控制的网络化、智能化发展有积极的推动作用

参考文献

[1]刘淼.嵌入式系统接口设计与Linux驱动程序开发[M].北京:北京航空航天大学出版社, 2006

[2]张建, 蒋新华, 陈兴武.CAN总线在基于ARM嵌入式数控系统中的应用[J].自动化与仪表, 2008 (7) :25-27

CAN总线与以太网互连系统设计 篇3

摘要:介绍了一种基于单片机SX52的CAN与以太网互连方案,阐述了以太网和CAN总线网络协议转换的软硬件设计,实现了以太网与现有CAN总线网的直接连接。保证管理监控层(以太网)与生产测控层(CAN总线网)之间的连接,使得上下层数据能方便地通信。

关键词:现场总线CAN总线以太网

在大型企业自动化系统中,上层企业管理层和生产监控层一般都采用以太网和PC机,而下层车间现场则采用现场总线和单片机测控设备。上下两层的沟通,通常采用工业控制机加以太网卡,再加上PC机插槽上的接口卡或并行打印口的EPP接口卡实现。这种连接方式成本高,开发周期长。针对这种情况,笔者设计一种单独的CAN以太网网关互连系统,成功地实现以太网与现有CAN总线网的直接数据互联。

1系统结构

系统总体结构分为三部分:现场测控网络(CAN网络)、嵌入式透明SX52网关、以太网信息管理终端(如监控平台和网络数据库等),如图1所示。

CAN总线是一个设备互连总线型控制网络。在CAN总线上可以挂接多达110个设备节点,各设备间可以自主相互通信,实现复杂网络控制系统。但设备信息层无法直接到达信息管理层,要想设备信息进入信息管理层需通过数据网关。嵌入式透明SX52网关就是为此而设计的。

透明式网关在以太网应用层构建和解析完整的CAN协议数据包。CAN协议数据包作为TCP/IP网络应用层的数据进行传输,它对通信数据的具体实际意义不做任何解释。透明式网关由通信处理器、CAN总线控制器和以太网控制器三部分组成。其中SX52单片机为核心处理器,它实现了CAN控制网络与以太网之间的协议转换。以太网信息管理层的控制指令发送到嵌入式透明SX52网关,将TCP/IP协议包数据转换为CAN协议形式发送至CAN控制网络中的指定设备节点,完成信息管理层对现场设备层的控制。同样地,当CAN网络上的设备数据(如定时采样数据或报警信息)要传输到信息管理层时,可将数据发送到嵌入式透明SX52网关,再通过网关协议转换程序将CAN协议数据封装成TCP/IP协议的以太网数据帧发送至以太网上的监控计算机。

以太网信息管理终端是一个根据用户的具体要求而设计的用户层应用软件。它可以是一个WIN32监控程序或网络数据库(记录CAN节点设备数据)软件等;甚至可能是CAN节点设备的`服务器软件,为设备提供较复杂的数据处理工作。

2硬件设计

系统硬件分为两大部分:CAN总线网络设备接口设计和嵌入式透明SX52网关设计。

2.1CAN总线网络设备接口设计

CAN总线网络设备接口设计较网关设计简单。它是在完成设备功能的基础上加入一个CAN通信控制器接口芯片,实现与CAN总线网络的连接。考虑到开发成本和灵活性,笔者在设计中选用PHILIPHS公司的独立CAN通信控制器SJA1000芯片和CAN总线收发器82C250芯片。其结构如图2所示。

2.2嵌入式透明SX52网关设计

嵌入式透明网关设计是整个系统设计的核心。其结构如图3所示。它由CAN控制器协议转换模块和以太网控制器协议转换模块两部分组成。网关硬件中SX52微处理器起核心作用。它是由美国Ubicom公司研制的高速可配置通信控制器,其处理速度相当高。在外接100MHz时钟时,指令执行速度可达100MIPS。它可实现TCP/IP协议栈中的ARP、IP、UDP、TCP、HTTP、SMTP、ICMP等网络协议。

CAN控制器协议转换模块硬件电路原理如图3左框图。它由三部分组成:微控制器SX52、独立CAN通信控制器SJA1000、CAN总线收发器82C250。其中SX52为唯一的CPU核心,负责SJA1000的初始化,通过读写SJA1000内部寄存器实现数据的接收、发送和错误处理等。PCA82C250则提供对总线的差动发送能力和对CAN控制器的差动接收能力。

以太网控制器协议转换模块主要由微控制器SX52、以太网通信控制器RTL8019AS和隔离滤波器FB2002组成。RTL8019AS是台湾Realtek公司制造的一种高集成度的全双工10Mbps以太网控制芯片,实现了基于Ethernet协议的MAC层的全部功能,内置16KB的SRAM、双DMA通道和FIFO完成数据包的接收和发送功能。在网关设计中,使用跳线模式(JP置为高)硬配置RTL8019AS为8位模式。使用RTL8019的低5位地址线A0~A4以及低8位数据线D0~D7。SX52的B口的B0~B4脚作为地址线连接RTL8019AS的低5位地址线,B5~B7作为控制线分别连接读写时序控制脚IORB、IOWB、IOCHRDY;C口作为数据线连接RTL8019AS的低8位数据线;A口保留,用作日后扩展。图3中

AT24C64为8KBEEPROM,主要用来保存嵌入式透明SX-52网关的配置信息,如网关IP地址、MAC地址和SJA1000的ID网络标示符、网络掩码AMR和总线定时(BTR0、BTR1)等。这样,可以灵活方便地修改网关参数,适应不同环境,同时也考虑到以后的扩展。

RTL8019AS除与SX52连接外,还将其网络收发器的4根引脚TPOUT+、TPOUT-、TPIN+、TPIN-通过外接的隔离滤波器FB2002与以太网相连。采用隔离滤波器FB2002是为了提高网络通信的抗干扰能力。

3软件设计

整个互联系统的软件设计可以分为三部分:CAN总线设备接口通信程序、透明网关协议转换程序和以太网层应用程序设计。其中,CAN总线设备接口通信程序和透明网关协议转换程序的CAN控制器协议模块在结构上有较大的相似性,但有可能因采用微控制器不同而导致实现的程序语言相异。因而,在此不作论述,而主要讨论后两个方面的程序设计。

3.1透明网关协议转换程序

透明网关协议转换程序的整体设计思路为:当以太网应用层有数据要发送到CAN节点时,首先,数据发送到透明网关由以太网控制器协议转换模块从传输层数据报文中解析出完整的CAN协议数据包,存放在数据缓冲区A?再通知总调度模块,由它调用CAN控制器协议模块将CAN协议数据包发送到CAN总线上。反过来,当CAN设备有数据要发送到用户层时,首先,数据发送到透明网关由CAN控制器协议模块将完整的CAN协议数据包存放在数据缓冲区B?再通知总调度模块,由它调用以太网控制器协议转换模块将完整的CAN协议数据包作为应用层数据封装起来,再发送到以太网的应用层。其程序结构如图4所示。

3.1.1CAN控制器协议模块

CAN控制器协议转换模块程序主要由SJA1000的寄存器读程序CANRead、写程序CANWrite()、初始化程序CANInit()、发送程序txdsub()、接收程序rxdsub()程序组成。之所以要编写单独的SJA1000的寄存器读、写子程序,这是由SX52芯片只有I/O端口决定的。

选用CAN2.0A协议构建CAN总线控制网络,对SJA1000的初始化主要完成控制寄存器CR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线定时寄存器BTR0,1和输出控制寄存器OCR的设置。初始化完成后,由总调度模块监控SJA1000控制器。当CAN总线上有数据到达时,它调用接收子程序rxdsub(),把这一帧数据包存入数据缓冲区B中,然后释放接收缓冲器。同样,当有按CAN2.0A协议格式组合成的一帧数据报文在数据缓冲区A中要发送到CAN总线上去时,总调度模块将调CAN发送子程序txdsub()发送。

3.1.2以太网控制器协议转换模块

以太网控制器协议转换模块主要负责从UDP数据包中解析出完整CAN协议报文,存入数据缓冲区A。同时,可能将数据缓冲区B中的完整CAN协议报文封装成UDP数据报,然后将其发送到以太网上。

在通信传输层采用UDP协议是考虑到CAN协议数据报为短帧形式(每个数据帧最多为8字节)。如果采用TCP传输协议,要传输8字节CAN协议数据,要先通过3次握手建立连接,再传输数据,之后还要通过握手释放连接。这样传输效率对有限的网络资源来说无疑是一种浪费。而UDP是无连接的传输,可以提高网络传输效率,同时,也减轻网关的处理任务。当然,UDP传输协议是不可靠的,对于控制网络来说,是不允许的。为了提高通信的可靠性,采用了回传校验机制。通过实验测试表明这种方式是行之有效的。

以太网控制器协议转换模块主要由以太网卡驱动、ARP、UDP协议的若干个API函数组成,如NICInit()、NICDMAInit()、NICInitTxFrame()、NICSendTxFrame()、NICReadAgain()、ARPCheckIfIs()、ARPSendResponse()、ARPSendStPacket()、ICMPProcPktIn()、UDPAppInit()、IPGenCheckSum()、、UDPAppProcPktIn()、UDPStartPktOut()和UDPEndPktOut()等。所使用的变量有:remoteIP[3:0]、myIP[3:0]、UDPRxSrcPortMSB、UDPRxSrcPortLSB、UDPRxDataLenMSB、UDPRxDataLenLSB、UDPTxSrcPortMSB,UDPTxSrcPortLSB、UDPTxDestPortMSB、UDPTxDestPortLSB、DPTxDataLenMSB,UDPTxDataLenLSB等。

系统首次执行或复位时,以太网控制器协议转换模块将首先调用NICInit和UDPAppInit()等进行NIC、ARP、IP、UDP和应用程序的初始化。初始化完成后,即进入主循环。在主循环中,SX52将反复检测RTL8019AS是否接收以太网帧。当有数据被接收时,SX52调用NICDMAInit()和NICReadAgain()读入以太网帧首部?再调用ARPCheckIfIs()判断接收帧是否为ARP数据。若是ARP,则转入ARPSendResponse()和ARPSendStPacket()子程序进行ARP处理并发送响应ARP数据报;若不是ARP,则判断是否为IP数据报。若非IP数据报则清除该以太网帧;当所接收帧包含IP数据报时,则需进一步判断是ICMP数据报还是UDP数据报文。若是ICMP数据报则执行ICMPProcPktIn()子程序处理ICMP数据报并重发IP数据报;若数据为UDP数

据报文,则调用UDPProcPktIn()子程序。该程序将读入UDP数据报文首部的数据并进行相应处理,还原出完整的CAN协议数据报文存入数据缓冲区B中,再通知总调度程序,由总调度程序调用CAN总线控制子程序将CAN协议数据报文发往CAN总线。

反过来,当总调度程序通知以太网控制器协议转换模块将数据缓冲区B中准备好的CAN协议数据发送到以太网上时,它将调用NICInitTxFrame()、UDPStartPktOut()、IPGenCheckSum()、IPStartPktOut()、NICSendTxFrame()、UDPEndPktOut()等子函数进行发送处理,从而实现CAN总线到以太网的数据传输。

3.2以太网层应用程序设计

以太网上的通信协议一般采用TCP/IP协议。本文采用流行的SOCKET套接字编程,传输层协议选择UDP(用户数据报协议),通过VisualC++编写用户层程序。

WinSock提供了对UDP的支持,通过UDP协议可以向指定IP地址的透明网关发送CAN协议数据,同时也可以通过它接收CAN协议数据。发送和接收方处于相同的地位没有主次之分。利用CAsyncSocket类操纵无连接的数据发送较简单。首先生成一个本地套接口(需要指明SOCK_DGRAM标记);然后利用intCAsyncSocket??SendTo?constvoid?lpBuf?intnBufLen?UINTnHostPort?LPCTSTRlpszHostAddress=NULL?intnFlags=0?发送数据,intCAsyncSocket??ReceiveFrom?void?lpBuf?intnBufLen?CString&rSocketAddress?UINT&rSocketPort?intnFlags=0?接收数据。利用UDP协议可以使管理主机和SX52网关实现双向的数据通信。同时,这种传输方式也易于使数据SX52网关透明化。

CAN总线技术及其应用 篇4

CAN的高性能和可靠性已被认同, 并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一, 被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

在北美和西欧西欧, CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线, 并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。

1 CAN 总线技术原理简介

1. 1 CAN 总线的分层结构

CAN协议定义了ISO/OSI参考模型的物理层及数据链路层[1], 如下图所示。

物理层定义信号是如何实际传输, 涉及位定时、位编码/解码、同步的解释。数据链路层包含介质访问控制子层MAC ( Medium Access Control) 和逻辑链路控制子层LLC ( Logical Link Control) 。其中, MAC子层是CAN协议的核心, 负责报文分帧、仲裁、应答、错误检测和标定, 把接收到的报文提供给LLC子层, 并接受来自LLC子层的报文; LC子层涉及报文滤波、过载通知和恢复管理。

1. 2 CAN 报文格式

CAN总线上的信息以报文的形式进行传输, 报文传输分为四种不同类型的帧: 数据帧、远程帧、错误帧和过载帧。

数据帧从一个发送器承载数据到一个接收器。根据CAN规范, 有两种数据帧格式: CAN标准帧 (也称为CAN2. 0A, 支持11位长度的标识符) 和CAN扩展帧 (也称为CAN2.0B, 支持29位长度的标识符) 。远程帧是由一个接收CAN节点发送, 用来请求带有远程帧中规定的标识符的数据帧。错误帧将任何总线错误通知其他单元, 在接收到这个帧时发送器会自动进行消息重发。过载帧由一个忙的CAN节点送出, 以请求在前后数据帧之间增加一个额外的延迟。

标准格式的数据帧, 开始是帧起始SOF (Start -Of Frame) ; 其后是11位标识符和远程发送请求位RTR ( Remote Transmission Request) , 这两部分构成了仲裁域; 控制域由6位组成, 它表示了后面数据域中的字节数目; 数据域由数据帧里发送的数据组成可为0~8个字节; 数据域后面是循环冗余码CRC (Cyclic Redundancy Checksum) 域, 它用于接收器检验所接受到的位序列; 两位的应答域ACK (acknowledgment) 用于发送器接收任意接收器所发出的应答; 最后是帧结尾EOF (End-Of -Frame) 它包括7个位。

1. 3 CAN 总线仲裁机制

CAN总线采用显性 (Dominant) 和隐性 (Recessive) 两个互补的逻辑值表示0和1。它采用非归零 (NRZ) 编码, 所有节点以“线与”方式连接至总线。如果存在一个节点向总线传输逻辑0, 则总线呈现逻辑0状态, 而不管有多少个节点在发送逻辑1。CAN网络的所有节点可能试图同时发送, 但其简单的仲裁规则确保仅有一个节点控制总线、并发送信息。

解决总线访问冲突的仲裁规则是通过仲裁每个标识位, 即每个节点都逐位监测总线电平。按照“线与”机制, 即显性状态 ( 逻辑0) 能够改写隐性状态 ( 逻辑1) , 当某个节点失去总线分配竞争时, 则表现为隐性发送和显性观测状态。所有退出竞争的节点成为那些最高优先级信息的接收器, 并且不再试图发送自己的信息, 直至总线再次空闲。

1. 4 CAN 错误检测机制

CAN拥有互补的错误检测机制, 错误漏检的概率几乎为零。它包含有位检查、位填充检查、格式检查、应答检查和循环冗余检查 ( CRC: Cycle Redundancy Check) 五种不同的错误检查方法。

位检查: 发送报文的站观测总线电平并探测发送位和接收位的差异, 在仲裁阶段不进行位检查; 位填充检查: 发送站在发送五个连续相等位后会自动插入一个与之互补的补码位, 接收时这个填充位被自动丢掉。如果在一帧报文中有6个相同位, CAN就知道发生了错误; 格式检查: 这种方法通过位场检查帧的格式和大小来确定报文的正确性, 用于检查格式上的错误; 应答检查: 被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答, 那么表明接收站发现帧中有错误; 循环冗余 检查 ( CRC) : 在一帧报文中加入冗余检查码, 接收站通过CRC可判断报文是否有错。

2 CAN 总线技术的特点

CAN总线是德国BOSCH公司从20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议, 它是一种多主总线, 通信介质可以是双绞线、同轴电缆或光导纤维。通信速率最高可达1Mbps。

CAN与其他现场总线相比, 具有突出的可靠性、实时性和灵活性, 其技术特点如下:

1CAN从本质上讲是一种多主或对等网络, 网络上任一节点均可主动发送报文。2废除了传统的站地址编码, 而代之以对通信数据进行编码; 通过报文过滤, 可实现点对点、多点播送 ( 传送) 、广播等几种数据传送方式。3采用短帧结构, 传输时间短, 受干扰概率低。4具有多种检错措施及相应的处理功能, 检错效果极好, 处理功能很强, 保证了通信的高可靠性。包括位错误和位填充错误检测、CRC校验、报文格式检查和应答错误检测及相应的错误处理。5通信介质 ( 媒体) 可为双绞线、同轴电缆或光纤, 选择灵活。6总线长度可达10km ( 速率为5kbps及其以下) ; 网络速度可达1Mbps ( 总线长度为40m及其以下) 。7网络上的节点数主要取决于总线驱动电路, 目前可达110个; 标准格式的报文标识符可达2032个, 而扩展格式的报文标识符的个数几乎不受限制。8通过报文标识符来定义节点报文的优先级。对于实时性要求不同的节点报文, 可定义不同级别的优先级, 从而保证高优先级的节点报文得到优先发送。9采用非破坏性逐位仲裁机制来解决总线访问冲突。通过采用这种机制, 即使在网络负载很重时, 也不会出现网络瘫痪现象。10发生严重错误的节点具有自动关闭输出的功能, 以使总线上其他节点的通信能够继续进行。

4 CAN 技术在汽车领域的应用

4. 1 CAN 总线技术的应用

国外知名汽车基本都已经采用了CAN总线技术, 例如林肯、奥迪、宝马等, 而国内汽车品牌, 例如奇瑞等公司也已经有几款车型应用了总线技术。CAN总线技术就是通过遍布车身的传感器, 将汽车的各种行驶数据发送到“总线”上, 在这个信息共享平台上, 凡是需要这些数据的接收端都可以从“总线”上读取需要的信息, 从而使汽车的各个系统协调运作、信息共享、保证车辆安全行驶、舒适和可靠。一般来说, 越高档的车配备的CAN总线数量越多, 价格也越高, 如途安、帕萨特等车型当中都配备了多个CAN总线。

4. 2 汽车 CAN 总线节点 ECU 的硬件设计

汽车CAN总线研发的核心技术就是对带有CAN接口的ECU进行设计, 其中ECU的CAN总线模块由CAN控制器和CAN收发器构成。CAN控制器执行完整的CAN协议, 完成通讯功能, 包括信息缓冲和接收滤波。CAN控制器与物理总线之间需CAN收发器作为接口, 它实现CAN控制器与总线之间逻辑电平信号的转换。

4. 3 CAN 总线在国内自主品牌汽车中的应用

由于受成本控制、技术实力等因素的限制, CAN总线技术一般都出现在国外高端汽车, 在A级及以下级别车型当中, 该项技术大多出现在合资品牌当中, 如POLO、新宝来等。在自主品牌中, 采用CAN总线技术的车型中很少, 风云2则是其中的代表车型。风云2CAN总线技术, 可以实现发动机、变速箱、ABS、车身、仪表及其他控制器的通讯, 做到全车信息及时共享。在风云2的组合仪表盘当中, 阶段里程、未关车门精确显示、安全带未系提醒等20多项信息全部可以显示, 比同级产品增加一倍, 这样增加了驾驶过程中的安全度。

另外, 在CAN总线技术的帮助下, 内部各种传感器实现信息共享后, 大大减少了车体内线束和控制器的接口数量, 避免了过多线束存在的互相干涉、磨损等隐患, 降低了汽车电气系统的故障发生率。打开发动机舱盖, 看到的是清晰简洁的舱内布局。维修方面, CAN总线技术的应用也使得故障排查得到最便利的保证。CAN总线智能管家系统符合欧美OBDII标准法规, 实现了在线诊断的功能。在车辆发生故障后, 各个控制器通过CAN总线智能管家系统存储故障代码, 由专业人员, 通过诊断仪为车辆诊断出各种故障状态, 快速准确地查找到故障点, 第一时间排除故障。利用CAN总线技术实现系统集成的信息传输, 大大提高了各部件的响应速度, 减少了配件磨损发生率, 也相应降低了维修成本; 而且, 先进集成技术的应用, 也大幅提高了车辆自身的科技含量, 增强了产品竞争力。

5 结 论

CAN总线的高性能和可靠性已被认同, 并被广泛应用于工业自动化, 船舶, 医疗设备等方面。该总线控制器和驱动器为硬件基础, 采用了开放式仲裁机制和“隐性”、“显性”位信号差分通信方式, 保证了报文传输的可靠性、准确性、快速性和实时性。因此国外知名汽车基本都已经采用了CAN总线技术。

摘要:CAN是国际上应用最广泛的现场总线之一。本文主要分析了CAN总线的技术特点及其应用趋势, 对CAN总线在汽车领域的应用进行了深入的分析。

关键词:CAN总线,汽车,应用

参考文献

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

[2]王箴.CAN总线在汽车中应用[N].中国汽车报, 2004.9.20 (28) .

[3]http://www.ca800.com/05/4-11/a5664.asp[EB/OL].

[4]http://wljjiwang.blog.163.com/blog/static/5476251220121110111542832/[EB/OL].

[5]http://www.21ic.com/app/auto/201106/86333.htm[EB/OL].

[6]http://www.docin.com/p-400426481.html[EB/OL].

关于CAN总线的检修 篇5

关键词:新福克斯C346,车载网络CAN总线,故障检修

一、引言

控制局域网CAN (Controller Area Network) 是德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而应用开发的一种通信协议。它可以让汽车上的各个模块之间实现资源和数据共享, 改变以前点对点的通讯方式从而降低汽车的制造成本, 降低汽车自身的重量提高了汽车的燃油经济系, 从而得到各系汽车制造厂家的广泛使用。

二、工作原理

CAN系统由节点 (存在于系统中的各个模块) 和链路 (系统中数据传递的载体常用双绞线, 也称总线) 以及终端电阻, 电阻值一般为120欧姆左右, 一般和节点集成一体) 组成。节点的作用:一是收集信息并把各种信号转变为数字信号。二是向总线上发送自己的信息。三是向总线上接收自己有用的信息。链路的作用。一是把各个节点联系起来。二是把节点发出的数字信号传送到其他节点。终端电阻的作用, 吸收总线上的能量, 阻止数据在传输终了被反射回来并产生反射波, 因为反射波会破坏数据。由于汽车功能的不断增加, 模块越来越多, 又因CAN的传输速率有限, 所以汽车上出现不同速率的CAN总线。但是各个CAN总线上的节点有的时候又要相互通信。在这种情况之下又出现了网关。网关也是一个节点。网关的作用是在不同速率的CAN总线之间起翻译作用。

三、故障检测

装有CAN-BUS多路信息传输系统的车辆出现故障, 维修人员应首先检测汽车多路信息传输系统是否正常。因为如果多路信息传输系统有故障, 则整个汽车多路信息传输系统中的有些信息将无法传输, 接收这些信息的电控模块将无法正常工作, 从而为故障诊断带来困难。对于汽车多路信息传输系统故障的维修, 应根据多路信息传输系统的具体结构和控制回路具体分析。一般说来, 引起汽车多路信息传输系统故障的原因有三种:一是汽车电源系统引起的故障;二是汽车多路信息传输系统的链路故障;三是汽车多路信息传输系统的节点故障。

(一) 汽车电源系统引起的故障。

汽车多路信息传输系统的核心部分是含有通讯IC芯片的电控模块ECM, 电控模块ECM的正常工作电压在10.5~15.0V的范围内。如果汽车电源系统提供的工作电压低于该值, 就会造成一些对工作电压要求高的电控模块ECM出现短暂的停止工作, 从而使整个汽车多路信息传输系统出现短暂的无法通讯。这种现象就如同用微机故障诊断仪在未起动发动机时就已经设定好要检测的传感器界面, 当发动机起动时, 往往微机故障诊断仪又回到初始界面。首先要测量蓄电池电压和所怀疑模块的工作电压都必须在10.5~15.0V的范围内。

1. 故障现象。

一辆新福克斯 (C346) 刚刚下线, 无法启动。做SYCN的时候显示与发动机模块无法连接。

2. 故障检测过程。

首先测量蓄电池电压为12.8V正常。拆下发动机ECU测量ECU的工作电源, 发现ECU插头的脚没有电压。根据电路图发现这根导线的电源要通过EJB的30号保险。于是测量这个保险发现已损坏。更换后故障消失。

(二) 汽车多路信息传输系统的链路故障。

当汽车多路信息传输系统的链路 (或通讯线路) 出现故障时, 如:通讯线路的短路、断路以及线路物理性质引起的通讯信号衰减或失真, 都会引起多个电控单元无法工作或电控系统错误动作。判断是否为链路故障时, 一般采用示波器或汽车专用光纤诊断仪来观察通讯数据信号是否与标准通讯数据信号相符。

1. 故障现象。

车型:CD345 2.3AT (免钥匙进入) , 行驶里程:670, 008KM。车辆启动没有反应, 仪表板上显示“发动机系统故障”、“被动防盗系统已启动”并且里程显示都为“——”。

2. 故障检测过程。

用IDS检测, 发现无法自动识别车辆。用先前对话进入, 进行网络测试发现与模块PCM ABS转向盘模块TCM都无法通讯, 其它模块通讯正常, 而这几个模块都在H-CAN网络上, 于是测量H-CAN网络电阻, 为124欧姆, 不正常, 正常阻值在60欧姆左右。此电阻为124欧姆说明H-CAN网络上有一端模块没有连接到H-CAN网络上来。由以上的检测可以得出引起此故障的原因有:一是H-CAN网络出现故障;二是PCM出现故障无法连接H-CAN网络。

3. 故障排除。

检查H-CAN网络, 测量PCM的插头C1E104-E的A4和B4号脚与诊断插头的6号和14号脚之间电阻为无穷大。线路之间有断路。GEM插头C1BP02-C的47号和48号脚到诊断插头的6号和14号脚之间导通, 正常。由此可以判断本故障是由于PCM与GEM之间的H-CAN网络出现断路引起的。从PCM到GEM之间的网络线经过了3个插头, 分别是C11-N/P C12-A/B C23-C/D才有分段的方法测量线路, 测量PCM插头C1E104-E的A4和B4号脚与插头C11-N/P的1号和2号脚导通正常。GEM插头C1BP02-C的47号和48号脚到插头C23-C/D的5号和6号脚导通正常。在测量到插头C23-C/D到插头C12-A/B时发现这段线路断路, 于是拆检这段线路, 在乘客侧座椅下面发现了断线的地方, 将线路修复后试车故障消失。但是为什么线路在这个地方会出现磨断呢?仔细检查发现线束下面的铁皮高出一块来, 正好磨线束, 将车辆支起后发现磨线束的地方发生过挂擦, 致使底部铁皮上移磨线束, 将变形地方重新整形, 彻底排除故障。

(三) 汽车多路信息传输系统的节点故障。

节点是汽车多路信息传输系统中的电控模块, 因此节点故障就是电控模块ECM的故障。它包括软件故障即传输协议或软件程序有缺陷或冲突, 从而使汽车多路信息传输系统通讯出现混乱或无法工作, 这种故障一般成批出现, 且无法维修。硬件故障一般由于通讯芯片或集成电路故障, 造成汽车多路信息传输系统无法正常工作。对于采用低版本信息传输协议回点到点信息传输协议的汽车多路信息传输系统, 如果有节点故障, 将出现整个汽车多路信息传输系统无法工作。

1. 故障现象。

车型:CD345 2.3 AT;行驶里程:45000KM, 仪表显示转向柱锁已锁, 点火开关打不开。

2. 故障检测过程。

分析原因:一是免钥匙系统故障。二是网络线束故障。三是相关模块故障。

3. 故障诊断。

用IDS手动识别, 调出故障码。显示为转向柱锁信息丢失, ABS PCM RCM GEM等重要模块通讯失败, 首先怀疑网络有问题。测试结果高速网络瘫痪, 现象是CAN+CAN-的电压在2~3V之间快速跳动, 电阻在100多欧姆之间快速跳动,

4. 故障维修。

首先检查KVM至转向锁模块之间线路发现KVM和SSCD之间的7#和3#脚这条K线断路。测量时发现驾驶座下的这条K线已腐蚀断开并且发现地毯下有水。将此线连接后, 再次测试, 故障依旧。于是怀疑线束进水短路有可能烧坏模块, 索性将高速网络上模块都断开测试, 结果网线正常, 说明问题还是出在某个模块上。根据此故障, 首先怀疑KVM和SSCD这两个模块, 将这两个模块断开, 其它模块恢复再进行测试, 结果网络正常了, 说明问题就在这两个模块上, 于是找来一个新的KVM换上, 启动模块, 结果还是不行, 再找来一个新的SSCD模块换上, 启动模块, 结果问题解决了。难道两个模块同时坏掉了?为了验证一下, 将这两个旧的模块一一换回去, 结果单独换回任何一个模块问题又出现了。原来这两个模块真的都坏掉了, 同时更换KVM和SSCD两个模块, 启动模块, 问题彻底解决。

四、结语

通过对以上三种汽车多路信息传输系统故障的分析, 可以总结出该系统一般诊断步骤为:一是了解该车型的汽车多路传输系统特点 (包括:传输介质、几种子网及汽车多路信息传输系统的结构形式等) 。二是汽车多路信息传输系统的功能, 如:有无唤醒功能和休眠功能等。在系统中哪些信号要经过CAN通讯传递。三是检查汽车电源系统是否存在故障, 如:交流发电机的输出波形是否正常 (若不正常将导致信号干扰等故障) 等。必须搞清楚系统中所有节点的电源的回路。四是检查汽车多路信息传输系统的链路是否存在故障, 采用替换法或采用跨线法进行检测。特别注意链路的虚接现象。不要用万用表的蜂鸣档去测量导线是否完好。应该是用欧姆档。以免检测结果不准确。五是如果是节点故障, 在条件允许的情况下在可以采用替换法进行检测, 也可以采用通过外部电路的完好无损, 来排除节点的好坏。一般不先考虑节点的问题, 一定要遵循先简单后复杂的维修思路。

参考文献

[1].黄鹏.汽车单片机应用技术[M].北京:机械工业出版社, 2009

[2].2010款蒙迪欧维修手册

[3].2010款福克斯维修手册

宝马汽车CAN总线故障检修分析 篇6

客户反映:1辆宝马335i轿车, 行驶里程2万km, 偶尔出现DSC灯、发动机灯、变速箱灯、气囊灯、胎压灯、驻车制动器灯等故障报警灯亮, 雨刮乱刮、挂不了挡的故障现象。要重起后才可以工作。

2.初步分析故障灯亮起的原因

DSC灯亮:总线通讯故障, 或DSC内部故障等。

变速器故障灯:总线通讯故障, 丢失DSC信号等。

发动机故障灯:总线通讯故障, 丢失DSC信号等。

主动转向故障灯:总线通讯故障, 丢失DSC信号等。

胎压监控警示灯:丢失DSC中轮速传感器信号等。

气囊灯亮:丢失DSC信号等。

驻车制动器灯亮:丢失DSC信号等。

雨刮乱刮:缺少DSC中轮速传感器信号等。

3.初步判断故障方向

(1) PT_CAN故障

(2) DSC控制单元内部故障

(3) F_CAN故障

4.故障诊断

使用解码仪, 得到部分故障码如图1所示。

找出有效的故障码:

(1) PT_CAN通讯故障。

(2) DSC、EGS、DME、AL、JBE、FRM、ACSM发射和接收故障。

5.制定初步维修方案

(1) 测量PT_CAN终端电阻。

(2) 测量PT_CAN波形。

(3) 测量F_CAN终端电阻。

(4) 测量F_CAN波形。

6.测量数据

(1) 根据显示故障码, 确定检测计划。

检测显示故障原因为:总线导线接地短路, 总线导线对供电电压短路, 总线导线之间短路, 断路 (导线断裂) , 触点接头损坏、腐蚀、脏污, 控制单元故障 (例如插头连接损坏) (极少数情况) , 加装不正确 (总线连接) 。

与故障相关的控制单元从可能性由高到低分别是:DKG (50%) , SMG (33%) , EGS (30%) , CAS (21%) , DSC (19%) 。

(2) 查询DSC供电电路图 (如图2所示) 。

(3) 测量PT_CAN终端电阻。

测量PT_CAN总线终端电阻情况如图3、图4所示。

通过测量PT_CAN总线上终端电阻出现3种情况:

①电阻正常 (60Ω 左右) 。

②94.9Ω (偏大) 。

③23.37kΩ (相当于断路) 。

测量单个控制单元 (DSC和EKPS) 终端电阻均为:120Ω (正常) 。

(4) 测量PT_CAN波形。

实际测量PT_CAN波形如图5所示。

测量值有4种情况:

①PT_CAN波形正常。

②一条2.5V直线。

③波形重合, 下滑趋势。

④ PT_CAN_H波形正常, PT_CAN_L波形异常。

电压值:PT_CAN_H:2.211 PT_CAN_L:1.859。

(5) 测量F_CAN波形。

实际测量F_CAN波形如图6所示。

F_CAN正常数据

传输率:500KBit/S

结构:线性拓扑结构 (双绞线)

终端电阻位置:2个, 总线最远的两个控制单元内部

终端电阻阻值:120Ω

数据传输方式:串行双向异步

唤醒方式:通过总线唤醒

控制逻辑: 从检测波形可以看出:F_CAN波形正常。

7.分析数据

(1) F_CAN波形正常, 先暂时排除F_CAN。

(2) PT_CAN终端电阻有时正常 (60Ω) , 有时不正常 (94.9Ω 或23.37kΩ) , 但单个控制单元终端电阻又正常, 说明控制单元内部有故障或插头、线路有虚接或有接触电阻。

(3) PT_CAN波形有时正常, 有时无信号, 有时重叠, 有时只有PT_CAN_H信号, 有时为杂波, 说明信号受干扰, 有时中断, 有时存在信号反射, 工作时防止信号反射的终端电阻有故障。

(4) PT_CAN电压为H:2.21V, L:1.79V, 与正常值相比, 集体偏低, 下降幅度相同, 差值与正常值相等, 说明线路中电阻过大, 存在分压的现象, 导致总线电流减小, 电压降低。

(5) 且因故障为偶发性, 所以故障为控制单元内部故障可能性小, 很可能是插头或线路虚接或接触电阻过大。

(6) 综上所述, 该故障就是PT_CAN总线通讯故障, 而且故障原因是PT_CAN总线网络上部分地方有虚接或存在极大的终端电阻。

8.确认故障类型

通过上述数据支持及与正常数据对比, 可以判定:

该车故障类型:PT_CAN总线通讯故障。

该车故障原因:总线网络 (线路或插头等) 上存在接触电阻或虚接现象。

9.再次测量及分析

( (11) ) 判判断断插插头头是是否否虚虚接接或或接接触触电电阻过大

方法一:摇晃插头线束, 模拟颠簸路况, 查看故障灯是否一会熄灭一会亮起;如果一会熄灭一会亮起, 说明插头存在故障。

方法二:拔开插头, 检查插头针孔和针脚是否接触不良、弯曲或有锈蚀等;如没有, 插好插头, 检查故障灯是否熄灭, 如果熄灭, 说明该插头存在故障。

(2) 判断针脚是否虚接或接触电阻过大

方法一:插好插头, 摆动PT_CAN的2根线, 检查故障灯是否熄灭, 如果熄灭, 或一会熄灭一会亮起, 说明该针脚存在故障。

方法二:挑开每个控制单元PT_CAN针脚, 将针脚直接插回去, 检查松紧;如果松, 调整好, 插回去, 检查故障灯是否熄灭, 如果熄灭, 则说明该针脚存在故障。

(3) 判断线路是否虚接或接触电阻过大

方法一:测量导线的电阻, 如果小于1Ω, 则暂时说明该导线导通且接接触触良良好好。。

方法二:用激励器激励一个信号, 在导线另外一端测量信号是否准确传输, 如果准确传输, 则说明线路正常。

(4) 判断节点是否虚接或接触电阻过大

判断方法:不断揉捏节点, 看PT_CAN波形是否变化, 如果波形在揉捏到某个特定位置时变为正常, 说明该节点存在故障。

10. 得出测量结果

(1) 从易到难开始测量, 先后顺序为:

排除插头故障———排除针脚故障———排除线路和节点故障———排除控制单元内部故障。

(2) 当拔开JBE插头并插回去后, 故障现象突然消失, 说明故障可能在JBE、插头、针脚或线路上。

(3) 当摇晃JBE插头上的线束时, 故障偶尔重现, 说明故障只在插头、针脚或线路上。

(4) 当只摇晃JBE上PT_CAN针脚线路时, 故障偶尔又重现, 说明故障在PT_CAN针脚或线路上。

(5) 当挑出PT_CAN针脚, 只将针脚重新插上去, 发现很松, 更换针脚, 插好插头, 摇晃插头, 故障不再重现, 说明故障点在JBE上的PT_CAN针脚上, 故障排除。

11.确认故障点

通过上述测量, 可以判定该车故障点:JBE上的PT_CAN针脚松动, 偶尔有接触电阻过大或虚接的现象, 从而导致PT_CAN信号失真。

CAN总线测试自动化研究 篇7

CAN是Controller Area Network的缩写 (以下称为CAN) , 是ISO国际标准化的串行通信协议。在汽车产业中, 出于对安全性、舒适性、方便性、低公害、低成本的要求, 各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同, 由多条总线构成的情况很多, 线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN, 进行大量数据的高速通信”的需要, 1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后, CAN通过ISO11898及ISO11519进行了标准化, 在欧洲已是汽车网络的标准协议。

CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议, 它是一种多主总线, 通信介质可以是双绞线、同轴电缆或光导纤维。通信速率最高可达1Mbps。

CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能, 可完成对通信数据的成帧处理, 包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。

CAN协议的一个最大特点是废除了传统的站地址编码, 而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制, 数据块的标识符可由11位或29位二进制数组成, 因此可以定义2或2个以上不同的数据块, 这种按数据块编码的方式, 还可使不同的节点同时接收到相同的数据, 这一点在分布式控制系统中非常有用。数据段长度最多为8个字节, 可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时, 8个字节不会占用总线时间过长, 从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能, 保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计, 特别适合工业过程监控设备的互连, 因此, 越来越受到工业界的重视, 并已公认为最有前途的现场总线之一。

1、CAN总线测试

1.1 CAN总线测试介绍

CAN总线信号实质上就是电平信号, 电平信号的好坏决定着CAN总线信号的稳定性和抗干扰能力。因此针对CAN总线的物理层即电平信号特性进行测试;需要测试电平信号的显隐性电平的电压、电平信号上升下降的斜率、电平信号的位时间等进行测试。作为CAN总线信号的发送和接收者电控单元也需要对其进行物理层的测试验证。因为电控单元的一些内部特性决定他发出的信号的电平特性和抗干扰能力;所以要测试电控单元的终端电阻、电控单元的耐高低压测试、CAN总线故障测试和抗发动机启动电压波动测试。

电控单元的功能实现, 需要CAN总线数据的交互;因此需要对CAN总线信号传输的通信层和数据链路层进行测试。在通信层和数据链路层测试中, 主要关注信号的采样点测试、报文长度、报文周期、总线负载率和非预期帧接收的测试。这些测试可以保证电控单元数据发送和接收准确性。

1.2 CAN总线物理层测试

CAN总线物理层测试项如表1所示。

CANoe:用来模拟除DUT外其它节点发送和接收报文;记录监测总线报文;对DUT进行ACK应答。

CAN示波器:具有CAN/LIN译码功能;CAN_H/CAN_L单通道输入或者CAN_H/CAN_L采用差分探头差分输入;KL15/IGN接入单通道输入。

注:本文所提到示波器推荐采用CANscope, 也可采用外置示波器。

Powersupply:程控电源, 通过PC可控模拟不同供电电压。

根据CAN总线物理层测试项的需求, 测试连接图如图1:

R1R2:选配型终端电阻120Ω。对于终端型DUT, 需选配R1或R2;对于非终端型DUT, 需同时配置R1与R2。

测试评判标准如表2所示:

1.3 CAN数据链路层和通信层测试

CAN数据链路层和通信层项如表3所示:

根据CAN总线物理层测试项的需求, 测试连接图如图2:

CANoe:用来模拟除DUT外其它节点发送和接收报文;记录监测总线报文;对DUT进行ACK应答。

CAN Stress (DR) :模拟总线物理干扰。

CAN示波器:具有CAN/LIN译码功能;CAN_H/CAN_L单通道输入或者CAN_H/CAN_L采用差分探头差分输入;KL15/IGN接入单通道输入。

Powersupply:程控电源, 通过PC可控模拟不同供电电压。

R1R2:选配型终端电阻120Ω。对于终端型DUT, 需选配R1或R2;对于非终端型DUT, 需同时配置R1与R2。

测试评判标准如表4所示:

2、CAN总线测试自动化实现

2.1 CAN总线测试硬件组成

CAN总线测试自动化的实现, 需要搭建自动化测试机柜;机柜设计包括机柜的结构布置设计和内部走线设计, 具体设计需求如下:

机柜具有空气开关, 紧急制动开关等安全操控按钮;

分层安装电源控制模块、显示器、程控电源、高精度网络示波器、CANstress DR、CAN-LIN外围电路模拟模块、抽屉、程控万用表、工控机;

电源管理模块

用于控制测试系统的整体供电, 可以控制电源的通断, 同时具备短路保护和紧急制动功能。PDU电源模块有防止突然断电或短路等而损坏设备的自我保护能力;有独立开关实现启动和关闭。

电源管理模块输入为220V标准电压, 内部集成了12V电压转换模块, 直接给CAN-LIN外围电路模拟模块供电, 另再分出一路电源, 给程控电源供电。

网络测试系统内部电源走线设计的示意图如如下:

程控电源

程控电源可以通过GPIB接口与测试主机相连, 由软件程序直接控制其输出, 给被测节点供电和给测试台架系统提供电源输入, 参数如下:

输出电压:0~80V;

输出电流:0~100A;

尺寸为标准19寸/1U上架形式, 无需设计面板和插箱;

电源输出电压可通过功能测试系统自动进行控制, 也可手动实现电压调节;

具备USB程控接口;

型号:Agilent6700B (基础模块) +N6752A (电压模块)

该型号程控电源的优势为多模块电源, 最多支持4模块输出, 且恒流源与电压源之间可以任意切换, 以实现11898-2中的测试项。程控电源示意如下图所示:

电源控制原理示意图如下图所示:

高精网络示波器

主要实现对CAN信号输出特性的精确捕捉、测量及分析, 控制主机可通过示波器程控接口支持CAN网络的物理层测试。功能要求:

差分探头, 具有常规示波器的功能;

频带宽度:100MHZ;

采样率:4GSa/S;

具备CAN/LIN信号采集分析能力;

可同时测量两路不同速率的CAN信号;

测量时自动获取波特率;

具备4个测量通道;

具备USB程控接口;

型号:Agilent MSO-X 3014A。

CANstress DR

CANstress DR主要实现对CAN网络的物理属性和逻辑电位进行干扰, 将其直接串连到CAN网络中, 通过CANoe编程实现各种触发条件与干扰逻辑控制, 包括:

线间短路, 线/电源 (地) 短路, 断路;

位错误的模拟;

通过破坏CAN报文特定的位域, 对节点有目的施加干扰;

VN1600产品系列是Vector公司最新CAN/LIN总线测试产品。其中本项目中使用的VN1640带有4路CAN/LIN接口, 且CAN/LIN接口可随意配置。CANoe软件具有以下实用测试功能:

支持dbc/ldf等文件格式的网络数据文件;

支持节点的仿真;

支持CAN、LIN各类数据格式 (如:.asc) 的回放功能, 在Configuration Setting界面中修改Animation Factor可以改变回放速度;

回放数据最大可达10G;

当存储数据量大于2G时, CANoe会将此log文件另存;

支持回放快、慢的自由设置功能;

测试用例运行过程中, 测试可暂停;在取消暂停功能后, 测试能继续运行;

接口面板

测试台架线束与功能测试系统机柜的接口端子, 覆盖各被测ECU的I/O、总线以及电源引脚, 不同ECU的线束通过不同的接口连接, 方便灵活测试。

工控机

工控机用于运行软件环境, 开发和管理整个测试项目。工控机相关参数如下:

4U高度, 能够安装于标准19寸机柜;

可锁前门, 防止未经许可的访问;

双核2.8G/内存2G/硬盘500G;

具备至少8个USB2.0接口, 1个COM接口以及TCP/IP接口、5个PIC接口;

针对以上技术要求, 选用研华 (Advantech) 4U上架式机箱, 如下图10所示:

走线设计

机柜内部走线指机柜各层之间信号交联。

对于机柜内部走线采用端子排和连接器配合导轨及线槽实现暗藏式走线, 其示意图如下:

自动测试板卡

测试插箱的内部为5块控制板卡及1块预留的16通道I/O板卡组成 (均为Hirain根据11898协议要求研发, 并已在其他项目中验证应用) , 各个板卡的功能是采用NI-6509来实现的。控制板卡提供如下功能:

控制:控制板整体控制整个机柜的电源及控制信号, 通过对继电器矩阵的控制实现对3路CAN通道, 2路LIN通道, 实现CANH (LIN) 、CANL、GND、Power Supply、Wake Up Line等的控制;

故障注入:可实现CAN_H/CAN_L对Vbat/GND的短路, CAN_H对CAN_L断路, CAN_H/CAN_L断路等网络故障注入功能;

预留IO输入输出控制端口:共12路可灵活配置的IO端口, 例如:可灵活配置3.3V、5V、12V、24 V输出;

数字万用表

数字万用表用于测试过程中测试电压、电阻及电流等值。万用表相关参数如下:

7.5位分辨率可进行高灵敏度的DCV和电阻测量:100p V和100 n

内置低噪声双通道扫描仪;

采用SPRT探头进行温度测量, 精度高达0.003℃;

数字万用表示意图如下所示:

2.2 CAN总线测试执行

根据硬件构成搭建的测试机柜如下图15所示:

根据CAN总线测试需求, 程控电源、CANoe、示波器、数字万用表、CAN外围板卡和CANStress有效的集成在测试机柜中。示波器用来测试监控电控单元电平信号的显隐性电压, 电平信号跳变的上升下降斜率和信号位时间。程控电源用来控制电控单元的供电, 可以实现高低压通信的测试, 并且配合CAN外围板卡, 实现CAN总线故障测试。数字万用表用来测试电控单元的终端电阻。CANStress是总线干扰仪, 实现对CAN总线的干扰busoff测试, 并测试CAN总线的采样点。CANoe是CAN总线的监测、仿真、测试工具;对总线报文时间周期、报文长度等测试;仿真总线报文对电控单元测试非预期帧和预期帧的反馈。

程控电源、示波器、数字万用表、CAN外围板卡和CANStress可以开放外围调用程序;CANoe具有调用其他端口和设备的功能, 在CANoe自带的编程软件CAPL中将这些设备的调用库函数进行声明;就可以进行调用。用CAPL编写测试评判标准, 然后采集这些设备测试数据, 进行测试验证。

将程控电源、示波器、数字万用表等设备的调用函数生成为CANoe识别的.cin文件, 在测试主程序当中对设备库函数进行声明。函数声明如图16:

先将采集标志位清零, 然后接收程控电源、示波器、数字万用表等设备的测试数据。上升斜率数据采集如图17:

将测试数据与评判标准进行对比, 如果符合就输出通过, 并上传通过数据;如果失败就输出错误, 上传错误数据;在测试报告中打印这些结果和测试数据;最后将测试数据和测试条件等标志位清空。上升斜率测试数据评判如图18:

3、CAN总线测试自动化结果

3.1 物理层测试结果

将CANoe CAPL软件上传的测试结果和测试数据添加到测试报告中, 形成物理层测试报告。其中的一部分测试数据如表五, 其中显性电压测试截图如图19:

3.2 数据链路层和通信层测试结果

数据链路层和通信层测试项主要通过CANoe测试完成的, CANoe直接把采集到得数据记录下来, 并填写到测试报告中。其中的一部分测试报告如表6。

4、结论

本论文通过对CAN总线的介绍, 引入对CAN总线测试方法和测试标准的介绍。结合测试方法和用到的测试工具;本文详细阐述了一种通过CANoe测试工具, 对其他CAN总线测试工具的调用和管理, 达到测试数据的采集和评判;实现CAN总线物理层、数据链路层和通信层自动化测试的方法。

本文介绍的这种CAN总线自动化测试方法, 实现了总线测试的平台化;大大节省了总线测试时间, 缩短了总线开发周期;有效的推进了整车项目进度。

参考文献

[1]王立萍.CAN网络在汽车控制方法的应用[J].工业仪表与自动化装置, 2009 (5) :77—79.

[2]梁锐.NI软硬件平台在汽车ECU开发和测试中的应用[J].世界电子元器件, 2007 (12) :61—63.

[3]ISO 11898-1, Road vehicles-Controller area network (CAN) -Part1:Data link layer and physical signaling.

[4]ISO 11898-2, Road vehicles-Controller area network (CAN) -Part2:High-speed medium access unit.

CAN总线系统的设计与实现 篇8

1 系统硬件设计

微处理器89C51负责初始化SJA1000及通过控制SJA1000实现数据的接收和发送等通信任务,系统电路原理图如图2所示。

CAN控制器SJA1000的数据线AD0~AD7连接到51单片机的P0口,连接到基址为0XFA00的外部存储器片选信号,当访问地址0XFA00~0XFA31时,CPU可对SJA1000执行相应的读写操作。SJA1000的、ALE分别与51对应的引脚相连,接51的使51可以通过中断方式访问SJA1000。

2 系统软件设计

系统由4个节点组成,一个节点由上位机通过并口转CAN总线的数据收发器构成,另外3个节点由上图所示的单片机CAN总线收发系统构成。单片机系统每秒发送一帧(8个字节)数据。连接上位机的CAN总线收发器由相应的上位机测试软件支持,图3是下位机软件的流程图。

SJA1000的初始化过程包括申请进入复位状态,设置总线波特率,设置输出方式,开放错误中断、接收和发送中断。在进行数据发送时数据包前两个字节0Xaa、0X08为描述符,包括11位长的ID(标志符)1位RTR4位描述数据长度的DLC共16位。BCAN_DATA_RECEIVE(rcv_data),为89C51对SJA1000的读数据函数其具体函数定义:

此函数将待发送的特定帧各式的数据,送入SJA1000发送缓存区中,然后启动,函数返回0表示将数据成功的送至发送缓冲区,返回1表示上一次的数据正在发送。

系统组网相对容易只需把各个节点挂在同一条双绞线上即可,启动上位机的CAN收发器,用来监视总线数据状态。每当启动一个下位机CAN收发器,上位机的测试软件就可以每隔一秒钟收到由同一CAN收发器发送的数据帧。实验结果显示当3台下位机CAN总线同时发送数据时数据接收端没有数据丢失和总线冲突现象。

3 结束语

现场总线有着巨大的发展潜力,将给自动控制领域的变革带来深远的影响。设计的CAN总线收发器具有通用性,在系统设计的基础上只需要相应修改数据传输协议即可应用于各个CAN总线的数传系统。

参考文献

[1]陈立元,主编.Visual Basic实现串并行通信技术.北京:清华大学出版社,2001.

[2]张学忠,王福成,主编.Visual Basic控件应用编程实例教程.北京:希望电子出版社,2002.

[3]马希荣,主编.Visual Basic6.0程序设计.北京:机械工业出版社,2004.

上一篇:制定对策下一篇:工作岗位需求