驱动CAN总线

2024-07-24

驱动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

Linux操作系统因有着源代码公开、便于裁减、广泛的处理器支持等优点, 成为当前嵌入式系统的一大热门选择。

CAN总线 (Controller Area Network) 即控制器局域网总线, 它是当今应用最广泛的现场总线之一, 已成为一种国际标准。由于CAN功能突出, 已被应用于很多领域, 本文仅针对Samsung公司的S3C2410微处理器在数字调音台 (Digital Mixing Console) 中的应用, 深入讨论如何在嵌入式操作系统ARM Linux下实现CAN总线的驱动。

1 数字调音台系统整体功能介绍

数字调音台是用来对音频信号进行调节、处理、分配和控制的电声设备, 它既能创作立体声, 又可抑制噪声、控制音量, 是对声音进行艺术处理必不可少的一种设备。整个调音台系统可分成3个部分:音频处理模块、主控制模块及通道模块。

由于一般调音台通道众多, 为此将一些音频输入通道集成在一起作为一个通道子模块, 其各种数据的处理通过一个微控制器来完成。各通道子模块及主控模块均挂到CAN总线上, 利用CAN总线的特性组成一个主从式网络结构, 使得整个通道模块具有很好的扩展性。这里将CAN总线硬件电路置于主控模块之中, 接收来自各个通道模块的控制信息, 并将其传递给音频处理模块, 实现通道模块对主控模块的控制。

2 CAN总线硬件设计

CAN总线接口电路如图1所示, 该电路图主要由4部分构成:独立的控制器 (SJA1000) 、总线收发器 (74LVC245) 、CAN总线收发器 (TJA1050) 和高速光耦合器 (6N137) 。因为独立的控制器其总线逻辑电平是+5 V, 但AT91RM9200总线的逻辑是+3.3 V, 所以在这个电路中, 必须加入一个74LVC245, 以此来实现逻辑电平之间的转换;独立的控制器负责CAN总线的数据链路层中各种数据的处理, 其输出端以光耦作信号的隔离处理;CAN总线收发器负责接口电平之间的转换以及接口的电气特性处理。

对独立控制器中11脚的芯片的工作模式选择端来说, 当接入高电平的时候, 芯片的工作处于Intel模式;当接入低电平的时候, 芯片的工作处于Motorola的总线方式。这里选择接入高电平, 所以选择Intel模式。独立控制器的16脚为中断的信号输出端, 当中断允许, 并且有中断发生的时候, 16脚就会出现高电平跳变到低电平的现象, 所以16脚可直接与处理器外部的中断输入脚相连接。

3 驱动程序基础

在Linux的驱动程序下, 设备一般被看成文件, 并且操作系统的内核与机器的硬件之间接口是设备驱动程序。硬件相对于应用程序是透明的, 从应用程序方面来说, 硬件设备仅仅是一个设备文件而已, 应用程序可以直接对硬件设备进行操作, 就好像是在操作一般的普通文件一样。设备的驱动程序则是嵌入式Linux内核的一部分, 在电路中, 它可以完成下面的功能: (1) 初始化和释放硬件设备; (2) 把数据从内核传送到硬件, 或从硬件读取数据; (3) 读取应用程序传送给设备文件的数据和回送应用程序请求的数据; (4) 检测和处理设备出现的错误、异常。

4 CAN总线的驱动分析

驱动程序主要包括几个模块:设备的初始化和卸载、CAN总线的设置。

4.1 设备的初始化

CAN总线在通信时将数据分别打包成报文, 每个报文包括:数据长度、11位的帧ID号、8字节的数据和是否为远程帧。其函数结构体具体如下:

typedef struct{

unsigned int id;//CAN的总线ID

unsigned char is_RTR;//判断是不是为远程帧

unsigned char dlc;//数据的长度

unsigned char data[8];//CAN的总线数据

}can_data, *pCanData;

在此过程中, CAN的总线接口使用中断接收方式, 当有数据到达的时候, CAN控制器就会产生低电平的中断信号, 从而在中断响应过程中驱动程序开始接收数据。为了防止数据的丢失, 我们在这定义一个数据的缓存区, 即通过定义独立的控制器设备结构体 (SJA1000_DEV) 来实现, 具体如下:

typedef struct{

can_data SJA1000_CanData

[MAX_CanRev-Buf];//接收数

据的缓冲区

int n CanRevpos;//接收数据的指针

int n CanReadpos;//读取数据的指针

wait_queue_head_t wq;

}SJA1000_DEV;

通过结构体我们不难看出, 针对该缓冲区有2种操作方式:第一种是当有数据来到总线上的时候, 到达的数据就被中断程序写入了缓冲区;第二种是当用户进程开始对CAN总线进行读取的时候, 缓冲区上的数据就会被复制到用户的空间。所以, 我们在这定义2个变量以指定接收和读取时它们在缓冲区的位置。同时, 该结构体还为CAN总线的接口定义了一个等待队列wq。

4.2 用户访问接口

CAN设备的用户访问在结构fftcan_fops中定义, 其具体内容如下:

在上面的接口函数中, 首先要对独立控制器的上一次发送指令是否完成进行检查, 要是还没有完成, 就继续等待, 直至完成的时候。然后查看独立控制器的发送缓冲区是不是被释放了, 当确认释放之后, 把用户区中需要发送的数据全部复制到内核区, 接着调用发送函数进行操作。在发送数据的时候, 先通过ioctl用应用程序来设置帧数据的ID。

5 结语

设备驱动程序是操作系统内核和机器硬件之间的桥梁, 通过它可以使得设备文件化。本文给出了数字调音台主控模块的接口设计。接口设计是将嵌入式的系统和数字调音台2种技术相结合的产物, 是一新型的、更具有智能化的第三代产品。在数字调音台的设计中, 应用了当今最高新的嵌入式系统技术, 从而使调音台更加模块化和智能化, 在当今社会中, 拥有很大的实用价值和巨大的社会意义。

参考文献

[1]郭辛元.浅谈数字调音台.科技情报开发与经济, 2004, 14 (3)

[2]蒋三新.基于AR91RM9200的数字调音台主控模块的设计与实现.电子科技大学, 2007

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

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

关键词:嵌入式Linux,CAN线,S3C2440,设备驱动程序,MCP2515

一、引言

CAN总线是国际上应用最广泛的现场总线之一。CAN总线的应用范围遍及高速网络和低成本的多线路网络,广泛应用于控制系统中的各检测和执行机构之间的数据通信。现场总线领域中,CAN总线得到了计算机芯片商的广泛支持,他们纷纷推出直接带有CAN接口的微处理器(MCU)芯片。CAN是一种多主方式的串行通信总线,基本设计规范要求有高的位速率,高的抗电磁干扰性,而且能够检测出产生的任何错误。与此同时,利用ARM处理器具有高性能、低耗能等优点和嵌入式linux的多任务处理的能力,在ARM和嵌入式Linux平台下开发CAN总线系统已经得到广泛应用。本文主要介绍如何在基于ARM和嵌入式Linux平台下开发CAN总线控制器的驱动程序。

二、CAN控制器与S3C2440硬件接口设计

CAN节点主要由微控制器、CAN控制器、CAN收发器组成,在本设计中采用三星S3C2440作为微控制器,CAN控制器和收发器采用的是Microchip公司的MCP2515和CTM1050。S3C2440是一款ARM9TDMI内核的RISC处理器,CPU主频最高可达500 M,处理速度快,可满足CAN节点实、时性高的需求,但由于其片内不带CAN控制器,所以硬件上需要外扩。CAN控制器MCP2515, MCP2515完全支持CAN1.2, CAN2.0A, CAN2.0B等版本的协议,它与微控制器的通信是采用SPI口实现的,其SPI口数据传输速率高达5 Mb/s,同时高速CAN收发器CTM1050把CAN控制器生成的数字信号转化成为适合总线传输的差分信号,它也为CAN控制器和CAN总线之间加入了缓冲器,可以有效抑制高压尖峰信号,具有很强的抗噪特性。在本设计中S3C2440被设置为SPI的主设备,MCP2515作为从设备,MCP2515与S3C2440硬件接口电路如图1所示。

三、MCP2515的读写与状态控制操作

MCP2515是Microchip公司推出的具有SPI接口的独立CAN控制器。它完全支持CAN V2.0B技术规范,通信速率最高可达1 Mbps;它的SPI接口时钟频率最高可达10 MHz,可满足一个SPI主机接口扩展多路CAN总线接口的需要。其主要功能是在MCU的控制下实现CAN规范,其内部的所有寄存器都映射在一个地址表上,MCU通过SPI口发送相应的命令和数据来完成对MCP2515的初始化、工作状态的控制以及数据的读写。在实现驱动程序之前需要完成对MCP2515进行读写或控制的底层函数,而这些函数主要是根据SPI口的通信时序完成MCP2515的读写操作或状态控制,比如MCP2515的SPI口写时序如图2所示,可以按照此时序实现对MCP2515进行写操作的的底层函数。其他的操作以此类推。

四、CAN控制器驱动程序的接口

由于对MCP2515的控制是以字节为单位逐个进行I/O操作的设备,所以一般把其当做字符设备,但是CAN总线属于现场总线的一种,属于控制器局部网,因此把其归并到网络设备更合理,MCP2515驱动程序是网络设备程序与MCP2515硬件的接口,需要屏蔽设备的工作细节提供给用户程序一系列的标准调用,其主要就是通过调用操作MCP2515的底层函数实现open, stop等系统调用函数来完成与内核的通信,为了方便网络设备程序与驱动的交互,可以根据CAN控制器的工作特点定义

MCP2515的设备结构体。

MCP2515平台结构体的定义:

(一)open函数的实现

open函数实现对S3C2440的SPI口的初始化,以及通过SPI口对MCP2515的寄存器进行相应的初始化。包括CAN总线波特率的设置,设置报文滤波以及屏蔽寄存器,开启中断使能等。

(二)stop函数的实现

关闭设备,以及释放申请的中断号和分配的内存空间。

(三)中断函数的实现

Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断;这里使用的就是函数request_threaded_irq (spi->irq, NULL, mcp251x_can_ist IRQF_TRIGGER_FALLING, DEVICE_NAME, priv) 来注册一个中断处理程序。spi->irq为IRQ_EINT3是所要申请的中断号,can_interrupt是中断处理函数的指针,IRQT_FALLING是中断触发的方式,这里选择的是下降沿触发。DEVICE_NAME是产生中断的设备名称,dev_id主要用于共享中断线,当一个中断处理程序需要释放时,内核可以根据该参数找到中断处理函数链表中的需要删除的中断处理程序, 由于MCP2515的中断比较多,所以在中断处理程序需要处理各缓冲器的接收和发送中断以及唤醒和错误处理。中断函数代码片段如下:

上述代码中intf保存的是从MCP2515的CANINTF寄存器中读取的中断信息,根据将intf分别进行读、写和其他操作,在读时调用netif_rx进行网络数据读操作,在写时调用netif_wake_queue唤醒发送内部线程进行发送。

五、驱动程序的编译

在编写完嵌入式Linux驱动程序后,需要将驱动程序添加到内核中,然后编译内核,具体步骤如下:

首先,将驱动程序mcp251x.c文件拷贝到内核的driversnetcan目录下。

然后,修改drivers/net目录下的Kconfig文件,添加如下

脚本:

添加这段脚本意味着在配置内核时,在字符设备驱动的配置菜单中就会有相应的MCP251X这个选项,这个驱动模块可以配置为编译进内核,编译为模块,要么不编译,在这里默认的是编译为模块,“help”后面的内容为帮助信息。在内核顶层目录下运行make menuconfig后会生成.config文件,该文件决定文件是否编译进内核或模块。

再有,修改drivers/net目录下的Makefile文件,在其中添加obj-$ (CONFIG_MCP251X) =MCP251X.o,在这里CONFIG_MCP251X的变量值为m,表示该文件要作为模块编译,可以在第二步生成的.config文件中找到该变量的赋值。

最后,在内核源代码顶层目录下运行make modules命令,就会在drivers/net目录下生成MCP251X.ko文件。

六、驱动程序模块的加载与测试

现在将驱动程序MCP251X.ko和用户测试程序从PC交叉编译平台拷贝到arm+linux平台下,也可以通过NFS服务挂载宿主机下的目录,这样更易于调试运行insmod MCP251X.ko。这时查看/proc/devices文件,可以看到加载的设备信息;查看/proc/interrupts文件,可以看到申请的中断号信息。通过ip-details-statistics link show can0可查看网络设备can0的具体情况。然后通过ip link set can0 type can bitrate 125000,可进行CAN网络设备的配置。配置完后,就可以把CAN设备当做网络设备一样进行SOCKET操作。

首先,打开SOCKET:

s=socket (PF_CAN, SOCK_RAW, CAN_RAW) ;

然后,绑定SOCKET:

addr.can_family=AF_CAN;

addr.can_ifindex=ifr.ifr_ifindex;

bind (s, (struct sockaddr*) &addr, sizeof (addr) ) ;

再有,读SOCKET:

struct can_frame frame;

nbytes=read (s, &frame, sizeof (struct can_frame) ) ;

if (nbytes<0) {……}

接着,写SOCKET:

nbytes=write (s, &frame, sizeof (struct can_frame) ) ;

最后,关闭SOCKET:

close (s) ;

用户可以进行读写测试程序的测试。

参考文献

[1]王保和.嵌入式Linux下CAN总线驱动程序设计[J].广西:大众科技.2011, 6.

[2]王黎明, 夏立, 邵英等.CAN现场总线系统的设计与应用[M].北京:电子工业出版社, 2008.

[3]宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社, 2008.

驱动CAN总线 篇5

当前,步进电机已经在工业应用,如自动剥线机、工业机器人、雕刻机、植毛机工作台等涉及到精确定位的场合,得到广泛的应用。常用的步进电机控制系统由驱动模块和控制器模块组成。驱动模块实现功率放大,控制器模块用于产生电机转动的控制信号,上述控制方法将会大量占用控制核心的资源,影响控制系统的实时性及灵活性。本文设计的步进电机驱动器,将控制电路和驱动模电路集成在同一个模块上,减少系统中主控核心的负担,提高系统的实时性、可靠性,可以使系统设计变得更加灵活、方便。

1 CAN中继器硬件的设计

1.1 系统的硬件结构

本文设计的基于CAN总线的一体化两相步进电机驱动器系统框图如图1所示,包括CAN收发器L9616、MCU STM32F103C6、光耦隔离、驱动芯片SLA7033M、温度传感器和D/A转换。CAN收发器L9616接收主控核心发送过来的帧数据包后,再把数据包发送给MCU。STM32F103C6是一体化步进电机驱动器的核心,负责对CAN收发器L9616传送过来的数据包进行解析,同时做出相应的操作,生成对应的驱动信号和转动方向;另一面MCU控制高精度D/A转换器,经D/A转换输出的电压送给驱动芯片SLA7033M,使SLA7033M输出电流恒定,同时在SLA7033M的输出端加入采样电阻,MCU实时监控SLA7033M的输出电流,当输出电流大于阈值时,关闭驱动信号,保护芯片SLA7033M;另外MCU还对加在芯片SLA7033M上面的散热器进行温度实时监控,当散热片上的温度超过预设值时关闭驱动信号,起保护SLA7033M的作用。MCU对SLA7033M的输出电流进行采样以及对温度实时监控,有效地保护了SLA7033M,使SLA7033M工作的寿命更加长,工作更加稳定。由于MCU输出的信号属于弱的信号,而SLA7033M输出的信号是大电压大电流信号,为了确保MCU正常工作,采用光耦隔离,使控制信号与驱动信号分离,同时控制和驱动两部分的电路采用独立的电源供电,它们之间互不干扰,信号通过光耦传输。

1.2 STM32F105微控制器

STM32F105是基于最新ARM V7.0内核CortexM3的32位闪存微控制器,这是一款专为嵌入式应用而开发的内核,带有用于电机控制的PWM输出,特别适合在电机控制场合的应用。STM32F10内置CAN收发FIFO,可以降低采用外置CAN控制器的成本以及提高系统的稳定性[5]。STM32F103具有较大容量的FLASH和RAM,以及丰富的外设,因此采用STM32F103作为主控芯片可以方便地实现CAN数据收发、A/D转换、D/A转换、PWM输出等。

1.3 CAN收发电路

CAN收发器采用ST公司的L9616。终端匹配电阻采用跳线的方式供用户安装时自行选择。在差分信号线上并上瞬态抑制二极管,可以起到对L9616的I/O的保护作用。光电隔离部分采用最高转换速率可达10Mbit/s的高速光耦6N137,电阻R2、R5起到限流作用。VCC5_1是由DC/DC隔离电源单独产生的5V电压。

1.4 电源电路

步进电机采用5V供电。用开关稳压集成芯片LM2596代替传统的三段稳压器,仅需要极少的外围器件即可构成高效的稳压电路且不需加散热片。LM2576产生的5V电压供给电机驱动芯片,主控CPU工作所需的3.3V电压由LDO芯片LM1117-3.3产生。CAN收发电路单独供电的DC/DC电路采用隔离电源模块,使驱动器和和CAN总线接口实现完全的电气隔离。

1.5 光电隔离电路

连接在控制芯片与驱动芯片之间的光耦隔离电路,主芯片负责产生驱动芯片需要的控制信号。当输入端为高电平时光耦中的光敏二极管导通,同时光敏三极管也导通,使对应的输出端也为高电平。使用了光耦隔离,使得驱动电路的高压电路与控制电路的低压电路完全隔离,互不干扰,提高了系统的抗干扰能力和稳定性。

1.6 SLA7033M驱动电路

SLA7033M是高性能步进电机集成功率放大器,该芯片由参考电压电路、触发脉冲产生电路、电压比较放大电路、电流控制电路、激励信号放大电路、电动势补偿电路等组成。INA、Ina、INB、INb为四个驱动信号输入端,OUT/a、OUTa、OUT/b、OUTb为四个驱动信号输出端,在输出端接二相步进电机作为负载。VREF为经过D/A转换后的基准电压输入端,通过调整D/A的输出基准电压,即可调整驱动器的输出电流的大小。电阻R11、R12为电流检测电阻,当主控芯片检测到该电阻上的电压超过阈值时,重新调整输出的电流大小,使输出电流不能超过最大值,以保护驱动芯片SLA7033M。

2 CAN中继器软件的设计

程序开始时先初始化各个输出端口以及各个相关的外设模块。程序以模块化进行设计,主程序只需循环检测相应的状态,当对应的状态满足要求时执行相应的操作,使得程序简洁以及实时性更强。当程序出现异常情况时,异常处理程序检查相应的异常情况,判断是哪些情况出现异常,记录相应的情况,同时可以把异常情况打包成数据发送到CAN总线,方便主控核心进行异常情况的分析及处理。无异常情况则检查是否有数据包的标志位,假如有数据包,则数据包处理程序对数据包进行分析,并进行相应的操作。数据包处理程序具有识别是发送数据包还是接收到的数据包,如果是发送数据包,则把相应的数据包经过处理生成标准报文帧格式,随后经过CAN收发器发送帧数据给主控核心;如果接收到的数据包则要对该数据包进行解析,按照标准报文帧格式进行提取相应的数据,以及对相应的数据进行处理,假如收到的数据里的ID和该设备号ID一致,表明是该设备的数据,即对该设备进行操作;反之,表明不是该设备的数据,则对收到的数据不处理,同时推出数据包处理程序。主程序假如没有数据包处理或者数据包处理程序完成则检查温度是否超过预设值,假如已经超过预设的值,则执行超温处理程序;假如没有超温则往下执行。当没有超温或者超温处理程序完成后查询电流是否超过预设值,假如已经超过了输出电流的预设值则执行调整输出电流程序,对输出电流输出调整,即对D/A的输出值进行调整,使输出电流减少;若没有超过输出电流的预设值则返回检查异常情况,程序进行循环检测。

3 结束语

本文采用了以高性能的ARM处理器STMF103为一体化步进电机主控CPU,SLA7033M作为驱动芯片,将控制电路和驱动模电路集成在同一个模块上,减少系统中主控核心的负担,提高系统的实时性、可靠性,有一定的社会效益和广泛的推广价值。

参考文献

[1]周立功.ARM微控制器基础与实战[M].北京:北京航空航天大学出版社,2005:218-256.

[2]刘加峰,芦勤,郁苏娟,等.步进电机控制电路一种基于FPGA的实现[J].微计算机应用,2007,28(8):863-865.

[3]熊远生,吴伟雄.基于DSP的步进电机细分控制系统的设计[J].自动化技术与应用,2007(4):93,115-117.

[4]李晓静,张侃谕.基于CAN总线的温室群控系统设计与实现[J].计算机工程,2010(36):245-247.

关于CAN总线的检修 篇6

关键词:新福克斯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总线调速系统 篇7

采煤机CAN总线能将采煤机设备各个单独的功能模块连接起来,进行统一调配,并控制采煤机实际操作情况的速度,避免模块独立运作时不受制约,影响采煤机正常运行。随着我国煤炭等产量的减少,为了满足当下对煤矿产品较大的需要量,在采煤过程中提升开采效率尤为重要,目前对煤炭开采技术的革新与设备结构的优化已成了重要研究的任务之一。采煤机通过采用CAN总线调速系统能实现采煤机设备的智能调速,其能给采煤机带来以下几方面的优势:

1.1 操作简单,使用可靠

CAN总线调速实现采煤机的无线调控操作,采煤机运行环境通常较恶劣,工作人员长期处在这样的条件下会对个人健康不利,但对采煤机的控制又必须执行。利用CAN总线调速将采煤机设备内各结构结合在一起,进行统一的速度控制,使得实际操作采煤机方法更简单,不用考虑或者另外投入过多的人力物力,通过采煤机设备内管理系统智能控制使用也较可靠。

1.2 维修成本低,容易维护

CAN总线调速系统能够保证在采煤机各设备内功能模块单独运行时能正常进行,使每个模块工作效率以及工作速度与实际进程相当,避免有的快有的慢造成整个机器内运作不良。利用统一调速系统,避免模块运行时发生不良状况,也保障了采煤机设备的顺利运行,使得维修过程变得更加简便,只需要对系统调速进行设置即可,有针对性的问题处理与分析也减少了维修成本浪费,具有维修成本低、容易维修的优势。

1.3 牵引功率大,采煤效率高

CAN总线调速系统能给采煤机设备内各功能模块提供较大的牵引功率,通过平均分配与整体控制,将各模块运行功率平均,使采煤机实际运行能充分发挥所被利用的功率,提升工作效率。CAN总线调速根据具体的设备运行情况,结合每个功能模块的工作需求,提供适应的功率,将总的牵引功率按照每个功能模块的结构与要求分成一个个单独的功率,使得采煤机整体在实际操作时具备强有力的大功率,提升采煤效率。

2 传统采煤机调速系统存在的问题

2.1 成本高

目前,采煤机调速系统还存在有成本高、误差大等问题,成本高主要是因为采煤机调速系统所需的结构元件费用较高。我国当下还未开发出来技术层次较高的调速系统设备,大多数都是从国外引进,使得采煤机的制作成本提高。另外,对调速系统也要进行定期维护,防止系统紊乱,在出现意外情况时,要及时进行编程,在这方面也存在一些人力物力的成本费用。

2.2 误差大

传统的采煤机系统由于设备老旧,精准度不高,使得在实际操作中对设备的调速做得不够,容易出现误差较大的情况。另外,误差大的原因还有采煤机设备内各结构制作较为粗糙,也未采用最新型的分功能模块的形式开展运行,导致采煤机本身在操作上就很容易产生问题,只要一处结构有怠慢,那么整个设备运行就会受到影响,对设备的调速也难以做到高度精准。

2.3 测量烦琐

老式的采煤机调速系统未能智能化,为了保证设备正常运行,需要隔一段时间就去检测一次,这会导致测量较烦琐,不仅给人工操作带来麻烦,系统以及设备内各配件使用的太频繁也会影响到采煤机的使用寿命。另外,多次测量会进行多次调速操作,调速过程太多容易损坏设备,设备速度若变动频率较大,很难在今后的实际工作中保持正常的速度运行,速度不正常就需要重复调速,这样恶性循环,会对采煤机造成很大影响。

2.4 不能实时监控

传统的采煤机不能进行实时监控,需要相关技术人员定期去操作,实地去检查,然而采煤机工作环境恶劣,高温、多尘、多灰,长期停留在这种环境内会给工作人员的身体健康带来严重危害。但是这种环境对采煤机运行也会产生不良影响,为了保证设备能够正常运行,避免出现运行障碍,采煤机的实时监控这个部分不能少,因此,现代的采煤机设备内增添了智能化系统,实现了对采煤机的实时监控管理,还节省了一定的人力物力成本,是采煤机设备的一大进步。

3 采煤机CAN总线调速系统

3.1 主控模块

主控模块是采煤机管理系统的主体,连接CAN总线调速口,能对设备中各个功能模块进行管理与控制,是整个CAN总线调速系统的核心部位。对主控模块设计需要注意的地方就是能够提供足够的控制动力实现对其他各个功能模块的管理,以及能够将其他模块的实际操作情况结合起来,进行针对的控制处理,并不影响各个功能模块的正常使用。将主控模块编入进人工操作的系统显示上,让相关工作人员能及时了解设备运行的实时情况及主控模块对其他模块的调速进度。

3.2 数据采集模块

数据采集模块通过通信接口单位连接主控模块,这部分的工作内容主要是将采煤机设备的实际操作情况转化成数据,再将这些数据整理起来,通过系统控制,将数据反映至主控模块中心,供模块分析,再决定是否模块运行状态不佳是否需要调速等。设计数据采集模块这部分结构时需要注意保证其具备较大的数据储存空间,并能够进行自行数据整理。通过把工作情况数据化,为设备智能控制创建一个平台。

3.3 指令执行模块

指令执行模块也是通过通信接口与主控模块相连,此模块的功能主要是传达主控模块的指令,主控模块根据对数据采集信息的分析,针对不同功能模块制定合适的调速方案,再由指令模块执行下去,指令将调速控制传达至每个独立模块,并确保其按照指令进行调速操作。在设计指令模块这部分中需要注意信息传送与接收的敏捷性,要让高敏捷性的结构元件构成此模块,这样才能确保信息发布及时。

3.4 数据显示模块

数据显示模块既与主控模块相连,也与人工控制界面相连,能够通过远程通信将采集到的数据传送至计算机控制中心并显示出来,供相关工作人员参考与管理。数据显示提供给主控模块中心,主控模块根据其进行调速操作,实现CAN总线调速功能。另外,数据显示模块设计时,需注意采用新型的数据整理的结构元件,能智能地对采集到的数据进行处理,再将处理后的数据反映至主控模块,增强主控模块的运行效率。

4 小结

采煤机CAN总线调速系统能实现对设备的实时监控,能够智能地针对实际情况进行相应的调速操作,保证采煤机设备能始终保持在正常的运行速度范围内,不仅有利于延长采煤机设备的使用寿命,还能提升设备仪器的实际操作效率。另外,利用CAN总线模块化的系统控制方式,将整个设备结构分为一个个独立的功能模块,方便了对设备维修与检查,也能使维护的成本降低。在今后的工作研究中,还要深入探究该如何优化采煤机结构的问题,进一步增强采煤机的技术层次,推进我国煤矿产业发展。

参考文献

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

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.

上一篇:武汉女装品牌下一篇:临床检验专业