CAN网络论文

2024-10-04

CAN网络论文(共11篇)

CAN网络论文 篇1

CAN总线网络即控制器局域网络(Controller Area Network,CAN),是由德国BOSCH公司在20世纪80年代为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,可实现点对点、一点对多点及全网广播3种方式的发送和接收数据。传输的数据采用CRC校验,能够有效地降低误码率。CAN总线的通信介质可以是双绞线、同轴电缆或者光导纤维,通信速率可达1 MB/s。由于具有通信速度快、可靠性高、价格便宜等特点,使CAN总线成为应用广泛的现场总线之一[1,2]。

当前,市面上已有多种CAN总线的分析测试工具[3],如广州周立功公司的CANalyst,德国Vector公司的CANoe等。这些软件工具具有较强的功能,但对于一些小型CAN网络开发组件来说,其附加费用较大。基于此考虑,本文提出了一种功能完善、操作简洁的CAN网络监控系统设计方案,可达到对CAN总线运行情况监测分析的目的。

1 设计需求

通过对一些通用CAN总线监控软件的分析,并结合设计提出的实现一个较为通用的CAN总线监控软件的要求,可以将此软件的设计需求总结如下:

(1)具有适应CAN控制器各种工作模式的功能,用户只用稍加配置,便可以将此软件用于具体的CAN总线网络的监控中。

(2)具有用户自定义数据帧格式及其解析方式的功能,以使此软件可以满足不同环境下的使用要求,对用户所需要的数据内容进行解析。

(3)具有数据可视化显示功能,如数据表展示数据,图形绘制数据曲线等方式。使用户可以较为直观地对网络数据和状态进行监控。

(4)具有将通信中的数据信息进行分类的功能,方便用户对数据的分析。

(5)具有查看历史数据的功能,将历史数据记录下来,并提供一种方式实现对历史网络状态的重现,方便用户调试。

2 方案设计

2.1 功能

CAN总线监控软件需具备的功能包括:CAN总线通信(数据接收与发送)、数据处理(数据解析与存储)和数据应用(将数据展示为图表,数据回放等)。功能结构如图1所示。

2.2 功能模块关系

CAN总线的监控过程即是对通信数据的处理过程。软件首先通过与CAN总线上的节点通信来接收和发送数据,然后将这些数据记录在文件中,同时对数据进行分析处理,软件根据由用户所设定的数据格式对数据解析,最后是对数据信息的应用,根据用户的设定,可以对数据进行表展示,曲线绘制或者历史回放。各功能模块关系如图2所示。

2.2.1 通信

通信是监控软件获取数据信息的方式,也是软件的基础。它的主要功能是接收和发送CAN总线中节点的数据,是数据解析和应用的来源。监控节点需要连接到CAN总线网络中,如图3所示。

2.2.2 数据记录

数据记录模块是将接收或者发送的数据以一定的形式记录在文件中,用以对数据进行后期分析,或者通过回放功能复现CAN总线状态。为能达到复现的目的,此记录文件需记录的信息包括原始数据包和收发时间,时间信息具体内容为通信数据的时间间隔,基于此回放功能更加真实模拟网络中的状态。记录内容如图4所示。

2.2.3 数据分析

数据分析模块是整个监控软件的核心,它负责按照用户设定的解析模式将收发数据报解析为可以理解的信息值。每一帧数据的解析过程可以分为以下3步:(1)定位。通过数据帧格式来定位每个信息在数据包中的起始位置,将数据包分组。(2)截取。通过起始位置和数据长度,可以截取到所需的数据。(3)转换。由于截取所得到的数据为原始数据,所以需要将其转换为可以理解的信息。数据的分析过程如图5所示。

2.2.4 数据应用

数据应用是指软件对用户所提供的数据服务。本软件实现了以下几个功能来应用数据:(1)数据表。用于向用户提供所需要的信息,展示总线数据。(2)绘图。 根据用户需要对某些需要显示数据变化的内容进行曲线绘制。(3)回放。将存储于文件中的历史数据按照收发时间顺序重新播放,以重现网络状态,它为用户提供了一种调试网络的简单方式。

2.3 关键技术

2.3.1 数据解析

鉴于CAN总线的应用广泛,从汽车到工业现场的应用[4,5],所需要监测的信息不同,故软件对数据的解析方式也不相同。数据的解析过程需要用到用户所定义的数据格式,这里使用XML文件来描述数据帧的内容。如图6所示,帧ID为0x01的数据内容包:一个16位数据表示的温度值,信息类型为整数;一个16位数据表示的压力值,信息类型为正整数[6,7]。

2.3.2 数据回放

回放功能是将历史数据及当时的网络状态按照原过程如实演示,使用的数据源是从历史记录文件中获取的。记录文件由记录模块将总线数据按照时间顺序写入文件中生成,使用回放功能是将所记录数据按顺序读入,按照记录时间模拟当时的顺序实现回放功能,用户可通过应用功能再次使用数据表、绘图来呈现数据。

3 测试

在实际应用中,将监控节点接入CAN总线网络中,完成软件设定后,便可开启对总线的监控。使用数据表显示所测得信息的正确性,并验证通信是否正常。所生成的数据表如图7所示,显示信息来自节点1和节点3,以及发自它们的温度和压力值。使用绘图功能将此温度变化绘制为曲线图形,如图8所示。

图7 测试中收到的部分数据信息表

4 结束语

本文提出了一个CAN总线网络监控软件的方案,并描述了此软件的设计方法和所使用到的关键技术。依据此方案,实现了一个较为通用的CAN总线监控软件,它可通过分析由用户设定传输数据格式的方式,自动对数据进行解析,可满足大多数CAN总线的监控需求。在应用中,它可帮助用户调试和测试网络,有效提高工作效率。通过实际测试,验证了此方案的可行性。

但是,本文提出的设计方案也有局限性和进一步提升的空间。在后续研究和设计中,可以将数据融合[6,7]技术逐步加入到软件对数据的分析中,并可将此工具演化为一种通用的软件中间件,以便进行更多的应用。

参考文献

[1]铙云涛,邹继军,郑勇芸.现场CAN总线原理与应用技术[M].北京:北京航空航天大学出版,2003.

[2]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1996.

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

[4]李刚炎,于翔鹏.CAN总线技术及其在汽车中的应用[EB/OL].(2012-12-16)[2013-02-11]http://www.docin.com/p-3064788.html.

[5]李正军.现场总线及其应用技术[M].北京:机械工业出版社,2009.

[6]康耀红.数据融合理论与应用[M].西安:西安电子科技大学出版社,1997.

[7]韩崇昭,朱洪艳,段战胜.多源信息融合[M].2版.北京:清华大学出版社,2010.

CAN网络论文 篇2

一、内部结构及引脚 模拟外设

-SAR ADC 位(C8051F040/1)位(C8051F042/3/4/5/6/7)

±1LSB INL,保证无失码

可编程转换速率,最大 100ksps 个外部输入;单端或差分输入方式

软件可编程高电压差分放大器

可编程放大器增益:16、8、4、2、1、0.5

数据相关窗口中断发生器

内建温度传感器

-8 位 ADC(仅限于 C8051F040/1/2/3)

可编程转换速率,最大 500ksps

个外部输入(单端或差分)

可编程放大器增益:4、2、1、0.5 外部振荡器:晶体、RC、C 或外部时钟

-实时时钟方式(使用定时器 2、3、4 或 PCA)

供电电压:2.7 ~ 3.6V

-多种节电休眠和停机方式

脚 TQFP 和 64 脚 TQFP 封装

-温度范围:-40°CID0 29-bit 标识符(“Extended Frame”).ID28-ID18 11-bit标识符(“Standard Frame”).Msk28-0:Identifier Mask 1:对应的标识符位参与验收滤波。0:对应的标识符位不参与验收滤波。Xtd: Extended Identifier 1: 29-bit(“扩展”)标识符用于消息对象。0: 11-bit(“标准”)标识符用于消息对象。MXtd:Mask Extended Identifier 1:扩展帧标识位(IDE)参与验收滤波。0:扩展帧标识位(IDE)不参与验收滤波。Dir:Message Direction 1:发送方向。0:接收方向

MDir:Mask Message Direction 1:(Dir)位用于验收滤波。0:(Dir)位不用于验收滤波。EoB:End of Buffer 1:在FIFO中唯一一个或者最后一个消息对象。0:在FIFO中不是唯一一个或者最后一个消息对象。NewDat:New Data 1:消息对象中有新数据。0:消息对象中没有新数据。

MsgLst:essage Lost(only valid for Message Objects with direction = receive)1:CPU丢失数据。0:CPU未丢失数据。

RxIE :Receive Interrupt Enable 1:接收中断允许位。0:接收中断禁止位。

TxIE:Transmit Interrupt Enable 1:发送中断允许位。0:发送中断禁止位。IntPnd:Interrupt Pending 1:消息对象作为中断源。0:消息对象不作为中断源。RmtEn:Remote Enable 1:允许远程帧接收。0:禁止远程帧接收。TxRqst:Transmit Request 1:消息对象中的数据申请发送。0:消息对象中没有待发送的数据。DLC3-0:Data Length Code 0-8 Data Frame has 0-8 data bytes.9-15 Data Frame has 8 data bytes

(9)消息处理寄存器

①中断寄存器:按优先级处理。

IntId15-0 :中断标识号 0x0000 没有中断申请。

0x0001-0x0020 引起中断的消息对象的索引号。0x0021-0x7FFF 未用。0x8000 状态中断。0x8001-0xFFFF 未用。②发送请求寄存器

6、CAN应用(1)初始化

初始化CAN 控制器的一般步骤如下:

1)将SFRPAGE 寄存器设置为CAN0_PAGE。2)将CAN0CN 寄存器中的INIT 和CCE 位设置为1。3)设置位定时寄存器和BRP 扩展寄存器中的时序参数。

4)初始化每个消息对象或将其MsgVal 位设置为NOT VALID(无效)。5)将INIT 位清„0‟。

(2)数据在IFx与消息对象间的传输流程:

接收程序:

例程:

消息对象清0程序: void clear_msg_objects(void){ SFRPAGE = CAN0_PAGE;

//SFR设置为CAN寄存器页 CAN0ADR = IF1CMDMSK;

// 指向命令掩码寄存器1 CAN0DATL = 0xFF;

// 对IF消息对象设为写入 for(i=1;i<33;i++){ CAN0ADR = IF1CMDRQST;

// 消息对象清0 CAN0DATL = i;} }

消息对象初始化为接收对象: void init_msg_object_RX(char MsgNum){ SFRPAGE = CAN0_PAGE;CAN0ADR = IF1CMDMSK;CAN0DAT = 0x00B8;

// 写入方式, 除ID MASK和数据位外 CAN0ADR = IF1ARB1;

// IF1ARB1=0 CAN0DAT = 0x0000;CAN0DAT = 0x8004;

// Arb2 设置:标准帧,接收 CAN0DAT = 0x0480;

// 禁止远程帧 CAN0ADR = IF1CMDRQST;

// 命令请求寄存器

CAN0DATL = MsgNum;

// 选择消息对象,初始化为写入 // 3-6 CAN时钟周期后 IF的内容移入消息对象 } 初始化消息对象为发送对象: void init_msg_object_TX(char MsgNum){ SFRPAGE = CAN0_PAGE;CAN0ADR = IF1CMDMSK;CAN0DAT = 0x00B2;

//写入方式, 除ID MASK外 CAN0ADR = IF1ARB1;CAN0DAT = 0x0000;

// 仲裁段1的标识符设为最高优先级 CAN0DAT = 0xA000;

// Arb2 设置:标准帧,写入 CAN0DAT = 0x0081;

// 消息控制: DLC = 1,禁止远程帧 CAN0ADR = IF1CMDRQST;CAN0DAT = MsgNum;

//选择消息对象,初始化为写入 //3-6 CAN时钟周期后 IF的内容移入消息对象 } CAN通信初始化 void start_CAN(void){ SFRPAGE = CAN0_PAGE;CAN0CN |= 0x41;

// CCE和INIT设置 CAN0ADR = BITREG;

// 位定时寄存器设置 CAN0DAT = 0x2640;CAN0ADR = IF1CMDMSK;CAN0DAT = 0x0087;

// TX配置:数据写入CAN RAM // RX-IF2 的操作可以中断TX-IF1的操作 CAN0ADR = IF2CMDMSK;CAN0DATL = 0x1F;

// RX配置:从CAN RAM读取数据 // 清除NewDat和IntPnd CAN0CN |= 0x06;

// 允许IE、SIE CAN0CN &= ~0x41;

// 清除CCE 和INIT,准备CAN通信 } 发送程序:把数据55H发给消息“MsgNum”。void transmit_turn(char MsgNum){ SFRPAGE = CAN0_PAGE;

// IF1 已经准备好发送 CAN0ADR = IF1CMDMSK;CAN0DAT = 0x0087;

// TX配置:数据写入CAN RAM // 置位TXrqst/NewDat,清除IntPnd CAN0ADR = IF1DATA1;

// 指向第一个数据字节 CAN0DATL = 0x55;CAN0ADR = IF1CMDRQST;CAN0DATL = MsgNum;

// 新数据发送给消息“MsgNum” } 接收程序:

void receive_data(char MsgNum){ char recive;SFRPAGE = CAN0_PAGE;

// IF2已经设置为接收 CAN0ADR = IF2CMDRQST;CAN0DATL = MsgNum;

// 新数据从消息 “MsgNum” 接收 CAN0ADR = IF2DATA1;

// 数据存储 recive = CAN0DATL;} 中断服务程序:

void ISRname(void)interrupt 19 { status = CAN0STA;if((status&0x10)!= 0){

// RxOk =1,接收中断

CAN0STA =(CAN0STA&0xEF)|0x07;

// 复位RxOk,LEC设为未变 /*读取消息*/ receive_data(0x01);

// 只接收到一条消息 } if((status&0x08)!= 0){

// TxOk =1,发送中断 CAN0STA =(CAN0STA&0xF7)|0x07;

// 复位TxOk,LEC设为未变 } if(((status&0x07)!= 0)&&((status&0x07)!= 7)){

// 错误中断, LEC的值有变化 /* 错误处理 */ CAN0STA = CAN0STA|0x07;

CAN网络论文 篇3

关键词 CAN/LIN网络 ;车门控制系统 ;主控单元

中图分类号 U46

Abstract The article by adopting CAN and LIN bus technology, optimized design on the door of the main control unit of the control system, simplify the structure of the system and control circuit, reduces the manufacturing cost of the system, improve the working reliability of the vehicle and the operation of the system are comfortable. Verified, comply with the design requirements.

Key words CAN/LIN network ;door control system ;MCU

隨着电子技术的高速发展,车门作为汽车车身中操作最为频繁的部件,汽车的门控控制功能模块在不断地增加,同时简化了系统的结构及控制电路,降低了系统的制造成本,提高整车的工作可靠性及系统的操作舒适性,实现了车门控制系统之间的联系[1]。笔者结合CAN和LIN总线网络技术,对车门控制系统的主控单元进行了优化设计。

1 设计思路

该系统能够实现汽车车窗升降且防夹功能、记忆定位功能、车灯驱动功能、自检功能和界面显示功能。为了控制的简便和优化,笔者选择将BCM和4个车门采用CAN总线进行连接控制,而各个车门和车灯的控制则采用LIN总线进行连接控制,这样有利于提高整个系统的硬件利用率。系统整体设计思路见图1。

由图1可知,该系统主要对汽车的车窗、车灯以及汽车的后视镜进行控制,而要实现以上的部件控制,则系统的主控单元为设计的重点。

2 系统硬件的设计

根据设计的思路以及该系统的功能要求,构建出了车门控制系统的整体结构,如图2。主控ECU包括主控芯片、CAN、LIN和PC通讯接口单元、组合开关检测控制单元、故障指示及警示控制单元、电源管理控制单元以及调试接口模块等组成。

2.1 主控单元系统硬件选用

主控单元系统硬件的选择,不仅影响该系统是否能够正常工作,也影响了系统的控制精度,所以主控单元系统的硬件选用显得尤为重要。

主控芯片:根据系统的功能要求,系统选用了Freescale中的68HC08芯片作为主控芯片。它具有响应速度快、整体性能好和价格便宜等特点。

LIN通讯接口单元:系统选用了专为汽车LIN总线设计的Motord公司生产的MC33689芯片作为LIN通讯接口单元。

组合开关检测控制单元:由于MC33972芯片具有采用4各CPU接口即能控制22路开关量的检测,且只需要一根数据总线就能完成数据的传导和控制作用[2],所以选用MC33972芯片作为组合开关检测控制单元。

故障指示及警示控制单元:选择专为驱动汽车负载而设计的Freescale公司生产的MC33888芯片作为故障指示及警示控制单元[3]。

系统的CAN通讯接口单元和电源管理控制单元则分别选取TCA82C250和MC33689芯片作为该系统控制单元。

2.2 主控单元系统硬件设计

通过对硬件功能的叙述及选取,构建整个主控单元系统所需的硬件已经选用齐全。图3为主控单元的控制原理[4]。

3 系统软件设计

主控单元控制系统的软件设计采用C语言编程进行设计,通过主控单元对程序的控制执行,即能实现整个车门控制系统的控制。

通过拓扑结构分析后,该主控单元控制系统在优化设计过程中,分别使用了2、4、8个字节对系统的1个主节点和3个子节点进行了标志,具体的系统协议及标志分配见表1。

根据上述的节点分配和定义,构建出了如图4所示的系统软件设计思路流程。

4 系统验证

通过输入上述编写的软件程序进行系统的验证,不同字节输入后,主控单元控制的对应部件执行了相应的指令,见表2。

通过表2输入的命令进行调试后可以看出,汽车的车门控制系统主控单元所对应的相关控制部件执行状况正常,所以基于CAN 和LIN数据总线设计出来的车门控制系统的主控单元优化设计成功。

5 小结

基于CAN和LIN网络的车门控制系统主控单元的成功设计,为后续汽车在简化系统的结构及控制电路、降低系统的制造成本、提高整车的工作可靠性和系统的操作舒适性以及系统集成模块化控制提供了一条可行之路。

参考文献

[1] 马春红,王旭东,吕宝良. 基于CAN/LIN总线的汽车车灯控制系统的设计[J]. 哈尔滨理工大学学报,2006,11(1):116-119.

[2] MC33972 Data Sheet, Freescale Semiconductor[EB/OL]. [2016-09-14]. http://cn.alldatasheet.com/datasheet-pdf/pdf/181922/FREESCALE/MC33972.html.

[3] MC33888 Data Sheet, Freescale Semiconductor,2006.2[EB/OL]. [2016-09-14]. http://www.alldatasheetcn.com/datasheet-pdf/pdf/90679/MOTOROLA/MC33888.html.

[4] 国辛纯. 基于CAN/LIN网络的车门控制系统主控单元的设计[D]. 天津:天津大学,2007.

CAN网络论文 篇4

CAN的技术规范只定义了物理层和数据链路层协议,没有定义应用层协议。CAN的技术特点允许各厂家在CAN协议的基础上自行开发自己的高层应用协议,给用户提供一个面向应用的清晰接口。为了将CAN协议的应用推向更深的层次,同时满足产品的兼容和互操作性,国际上已经形成了诸多基于CAN的应用层协议:CANOpen、Device Net、SAEJ1939、CAL、SDS、CAN Kingdom等,这些高层协议都对CAN应用层做了完整而详尽的定义[1]。Device Net最初由Rock Well旗下Allen-Bradly公司研制开发,凭借该公司在可编程控制器和变频器等方面的优势,在PLC与现场设备之间的通信网络中得到广泛应用。CANOpen是基于CAN总线系统的网络,它是由Ci A进行开发的,CANOpen甚至可以在具有低计算性能和存储能力的设备中使用[2]。

由于目前国内还没有CAN通讯的应用层协议标准,而国外的应用层协议又较为昂贵,并且在一些利用简单的通信协议就可以满足要求的情况下,采用复杂的协议有时会造成资源浪费,用户在应用时也会觉得诸多不便,反而限制了CAN的灵活性,在实际应用中,可以根据需要自定义一个简单有效的协议实现所要求的功能。该协议制订的合理与否,直接关系到总线的传输效率、通用性和将来的可扩展性。

1 系统总体架构设计

考察汽车电气控制部分,可以发现仪表显示、车灯控制和传感器信号采集部分的连线是最复杂的,所以从这几方面入手来解决系统设计所面临的问题。系统分为高速CAN和低速CAN两部分,由高速数据采集模块、低速数据采集模块、仪表显示模块、车灯控制模块、上位机监控模块组成。对于发动机的转速和车速,采用500Kbps的高速速率,以保证良好的通信带宽,从而满足高实时性要求;对于仪表信息显示和车灯系统等普通实时性要求的设备,可工作在125Kbps的低带通信波特率上,通过CAN网桥对两CAN网络数据处理[3]。数据采集模块接收传感器输出的模拟信号、数字信号和开关信号,经ECU进行处理,转换为可在CAN总线上通讯的数据报文格式,分别送到仪表显示模块和灯光控制模块。仪表显示模块分别输出显示油量、水温、转速、车速、本次里程和总里程,用来实时反映汽车各部件当前的工作状态。灯光控制模块完成对灯光控制命令的接收及驱动控制车灯亮灭。同时,将数据采集模块处理后的信号通过RS232-CAN转换卡送入PC机处理及显示,并对CAN总线的发送和接收情况进行监控。

2 系统应用层协议的制定

在本系统中我们采用的是扩展帧,这种模式支持具有很多特性的CAN2.0B协议,具有增强的验收滤波器、强有力的错误处理能力以及自我测试功能。其数据格式[4]如表1所示。

其中:字节0的第7位FF表示帧格式,在扩展帧中FF=1,在标准帧中FF=0;第6位RTR表示帧类型,RTR=0表示为数据帧,RTR=1表示为远程帧。

2.1 标识符ID的定义

CAN总线上每条信息都有一个独一无二的标识符ID,在接收端只有与自己标识符相同的信息才被接收。在CAN系统中,标识符ID决定了信息的优先权和等待时间,一般ID的二进制值越小则优行权越高,所以将重要数据规定为帧号较小。

在CAN扩展格式里,标识符位由ID.28-ID.0组成,其中高7位ID.28-ID.22不能全为隐性1。标识符的分配要满足节点及报文对优先级的要求,同时尽可能地利用标识符加载有关信息,以减少在数据域占用的空间,此外标识符的格式还要为消息滤波提供便利。本文根据CAN仲裁的特点和一般汽车结构特点对CAN的29位标识符作以下设计,这里设定都留有一定的余量,以备将来扩展所需[5]。具体分配如表2所示。

信息采集节点分为模拟量(油量、温度)采集,脉冲量(转速、车速)采集,开关量(左转向、右转向、近光灯、远光灯、制动灯、超车灯、倒车灯、雾灯)采集,分别由ID28~ID24这5位的二进制数组合来定义。仪表显示节点主要包括油量、水温、转速、车速、本次里程、总里程6个仪表,以及4个报警灯:油量低于10L报警、水温高于110℃报警、转速高于8000R/M报警、车速超过120Km/H报警,分别由ID23~ID20这4位的二进制数组合来定义。灯控节点主要控制8个车灯的亮灭,分别由ID19~ID16这4位的二进制数组合来定义。系统主要有5类信息类别:紧急信息、广播信息、命令信息、状态信息、数据信息,分别由ID15~ID13这3位的二进制数组合来定义。

2.2 数据域格式的定义

对CAN报文进行数据域编码是本规范进行数据格式编码的主体,如何对数据域的功能进行详细的划分,这里采用分级编码的方式来进行。本规范中数据域编码的大小只有1个字节,而数据域的实际大小可为8个字节的容量,所以具有很大的扩充性,将来如果车身器件或电子元件增多后,可适量进行功能拓展。表3显示了数据域编码的分配方式。

器件类型编码是指对具体器件进行类型划分,主要包括传感器、仪表、开关、车灯4类,由D7~D5这3位的二进制数组合来定义。具体器件编码是按器件类型为汽车总线的每个控制器件进行编码,从而制定相关的报文格式,由D4~D1这4位的二进制数组合来定义。状态编码一是为说明传感器和仪表的控制流方向是输入还是输出,二是为说明开关和车灯的状态。

3 实验调试软件的设计应用

3.1 监控调试软件的设计

由于本系统的运行都是基于硬件的,功能程序加载在各种微控制器上,系统运行的结果表现为汽车仪表上的各种显示数据,以及汽车上的各种灯类开启,这样对于系统运行的调试和监控就显得比较困难,尤其是对系统的调试和故障排查,如果不设计一套监控调试软件,就无法方便有效的对整个系统的运行情况进行全面掌握。系统监控软件设计的目标是建立一套较为完整的系统调试和测试平台,能够观察本系统汽车仪表所显示的各种数据,能够显示车灯的亮灭情况;此外,还要通过手动输入各种不同的数据,测试系统在不同条件下的运行情况和异常情况。

本系统采用VB设计人机界面,包括汽车控制模块和通讯测试模块两部分。控制模块执行情况如图1所示,数字化显示车辆在行驶过程中的关键数据,以及四个报警灯的亮灭情况。在界面中还包括8个车灯的亮灭显示,通过设定车灯开关的状态,一方面可以监控车灯的启灭情况,另一方面也方便车灯系统的故障检测。当点击车灯的“开关”按钮后,将向总线上发出信号,车灯成功控制后会反馈一个信号给监控软件,监控软件上的模拟灯会相应亮灭。通讯测试模块执行情况如图2所示。数据发送栏中可以选择要发送的CAN帧结构类型(数据帧或远程帧),之后输入待发送的报文ID及数据,点击“发送”后被网络上其他节点接收,将标识符改动再把数据原样返回,返回的报文显示在报文接收栏中,以便测试CAN通信是否成功。

3.2 测试软件的应用

CAN总线的扩展模式支持“自收自发”测试功能,可以检测节点本身的CAN硬件电路功能,但不能测试与CAN总线密切相关的通讯参数。本系统借助于一套有ZLGCANtest通用测试软件支持的接口卡,来监听CAN总线网络通讯数据,向网络发送CAN总线帧报文,以提供给其它节点接收信息,从而检测CAN通路的正确与否。操作此软件,由于CAN节点正在向CAN总线上连续发送报文,因此,在CAN分析测试软件界面可以看到报文接收情况,如图3所示。从图中可以看出接收到的报文是数据长度为8的扩展数据帧,这是CAN节点发出的报文,可以在程序中设置发送CAN报文的格式和数据。

4 结束语

CAN的技术规范只定义了物理层和数据链路层协议,而没有定义应用层协议。因此,本系统针对汽车CAN网络控制系统,制定了一个简单有效的协议实现所要求的功能。系统采用29位标识符的扩展模式,定义了2个字节的标识符ID的和1个字节的数据域编码,并通过自行设计的上位机监测软件和CAN分析测试软件ZLGCANtest对CAN总线上的数据进行实验测试,在PC机上观察节点报文的发送和接收情况。经试验调试表明,报文的接收和发送没有异常,此协议的制定能够实现硬件系统所要求的功能。但这种简单协议的制定也表现出了它的弊端,就是不具有通用性,难以和其他系统兼容。

摘要:针对汽车CAN网络控制系统,依据CAN协议技术规范,重点制定了仪表显示、车灯控制和传感器信号采集部分的应用层协议。CAN总线系统是信息地址定位,而不是设备地址定位,系统采用29位标识符的扩展模式,定义了2个字节的标识符ID的和1个字节的数据域编码。采用自行设计的上位机监测软件和CAN分析测试软件ZLGCANtest对CAN总线上的数据进行实验测试,在PC机上观察节点报文的发送和接收情况。经试验调试表明,报文接收和发送正常,此协议的制定能够实现硬件系统所要求的功能。

关键词:CAN总线,应用层协议,标识符,数据域编码,ZLGCANtest

参考文献

[1]李银河.CAN总线和基于CAN总线的高层协议[J].可编程控制器与工厂自动化,2005,(11):65-68.

[2]SAE.SAE International Surface Vehicle Standard series.2003

[3]刘立峰,廖力清.高低速CAN总线在汽车控制系统中的研究[J].自动化与仪表.2006,(1):36-39.

[4]N.Navet,Y.-Q.Song and F.Simonot,Worst-case deadline fail-ure probability in real-time applications distributed overcontroller area network,ARTICLE Journal of Systems Architecture,2000,46(7).

概述整车CAN总线测试 篇5

[关键词]整车;CAN总线;测试

近年来汽车电子技术发展迅速,CAN总线技术广泛运用于我国汽车行业。车辆CAN总线面对电磁环境相对恶劣,特别是那些具有多功率、大电流、高电压的车辆,这严重的增加了车辆CAN总线设计难度。将来的设计中应当有效评估车辆通信品质进而保证车辆的稳定性和安全性。

一、测试工具

测试运用的工具包括:CANoe+CANcaseXL、CANstressDR和数字示波器。CANoe是ECU和网络分析、测试、开发的专用工具,支持需求分析到系统实现的整体系统开发过程。检测中CANcaseXL和CANoe硬件配套用于观察ECU发送接收、估算总线负载率、记录总线数据功能。

CANstressDR作为独立运行硬件,能够与CAN网络直接串连,将各种干扰逻辑施加在CAN总线上,进而验证CAN和ECU总线抗干扰能力。测试中CANstressDR的作用在于通过模拟施加故障干扰总线。

数字示波器作用在于观察记录总线电平状态,并对总线电平进行初步解析。数字示波器的主要参数为:1亿次/秒采样速率;分辨率+10ns。

二、测试方法

将车辆CAN网络系统的集成测试平台和测试设备串连到一起,只针对车辆CAN网络系统集成测试平台各个ECU外部接口进行测试,不改变ECU。根据图1

进行测试设备连接。

三、测试内容和评价标准

(一)物理层测试

如图2进行CAN总线物理连接,将负载电阻R串连在总线梁端,电阻作用在于抑制总线内部信号的反射。不应当在ECU内部设置R,防止内部设置R的ECU同总线连接断开时,总线失去终端电阻。

当总线所有ECU总线发送器为关闭状态,也就是ECU内三极管都介质,总线处于隐性状态。在该状态所有ECU带高内阻电压电源生成总线平均电压。接受操作可参考图2显示的电阻网络。

当ECU接通的总线驱动电路大于一个时,也就是成对三极管里接通的对数大于一个,总线就会产生一个显性位。这样终端电阻就会通过电流,这样总线两根线间就会产生差动电压。总线上的差动电压能够通过电阻网络转换成接收电路的比较器输入处相应的显性或隐性电平,进而检测出隐性和显性状态[1]。

第一,隐性输出电压测试,用于判断总线中断开的ECU的CAN_L和CAN_H隐性输出電压符不符合ISO11898-2定义。评价标准:①2.0≤UCAN-H≤3.0V;②2.0V≤UCAN-L≤3.0V;③-500mV≤Udiff≤500mV。

第二,显性输出电压测试,用作判断总线上断开的ECU的CAN_L与CAN_H显性输出电压符不符合ISO0011989-2定义。评价标准:①2.75V≤UCAN-H≤4.6V;②0.5V≤UCAN-L≤2.26V;③1.6V≤Udiff≤3.0V。某乘用车动力CAN开发项目中,CAN总线显示的输出电压测试结果如表1,测试波形图如3、4.

第三,位下降/上升时间测试,用于判断ECU发送CAN总线信号的显性转隐性和隐性转显性的时间,判断位下降/上升时间符不符合测试规范要求。图5为位下降/上升的时间。评价标准:①20ns≤trise≤200ns;②20nstfall≤400ns。

第四,位时间精度测试,用于判断ECU发送CAN报文时间的精确度符不符合物理层规范定义。评价标准:位时间精确度为±0.5%。

第五,信号对称性测试,用于判断CAN_L和CAN_H信号对称性服不服和物理层规范定义。评价标准包括①位时间的前部,信号电压应当处于82%位结束电压值至165%位结束电压值之间;②位时间后部,信号电压处于96%位结束电压值至106%位结束电压值之间[2]。

(二)数据链路层测试

根据CAN2.0B定义,控制器能够识别的ID数据帧包括11位、29位,即标准帧、扩展帧。如图6、7为帧格式。

第一,扩展报文帧和标准报文帧兼容性测试,用于判断ECU能够兼容11位ID标准帧的CAN报文、29位ID扩展帧的CAN报文。评价标准:测试中ECU能够兼容29位ID扩展帧和11位ID标准帧,不可发送任何错误帧。

第二,100%总线负载下报文接受能力的测试,用于判断CAN总线负载率为100%时,ECU能够处理接受到的CAN总线信息,并在CAN总线负载率达到正常水平后恢复。评价标准:①在运用低优先级ID增加总线负载率的检测过程中,ECU应当处理接收到的所有CAN总线信息,同时连续发送总线信息;②在运用高优先级ID增加总线负载率至100%时,ECU可以出现CAN总线报文的发送失败情况,总线负载率重回正常水平后,ECU恢复CAN总线报文发送;③在全部测试过程中,ECU不应发送任何错误帧。

(三)网络错误处理测试

第一,单个节点脱开测试,用于检测单个节点断开后ECU中CAN总线通信状态,并检测修复该故障后ECU能够正常进行CAN总线通信。评价标准:①单个节点断开后,该节点ECU可以不具有CAN总线报文接收和发送功能,不可引起该节点ECU出现任何形式损坏。其余节点应当可以继续数据通信;②恢复断开的节点后,该节点ECU应重新实现CAN总线报文的接收和发送功能。

第二,接地或节点电源断开测试,用于检测某节点同电源脱开后或同搭铁脱开后ECU的CAN总线通信状态,进而检测该故障修复后ECU弄否重新实现CAN总线通信。评价标准:①节点与电源脱开或者在低电压状态时,CAN总线网络不能被拉低,剩余节点能够继续数据通信,故障节点ECU可以不具备CAN总线报文接受和发送功能;②节点与搭铁点脱开,CAN总线网络不能被拉高,剩余节点可以继续数据通信,故障节点ECU可以不具有CAN总线报文接受和发送的功能;③故障节点故障恢复后,该节点ECU应重新实现CAN总线报文接受和发送功能。

第三,CAN_H断路测试或CAN_L断路测试,CAN_H断路测试用于检测CAN_H断路时ECU中CAN总线的通信状态,并检测修复该故障后ECU中CAN总线的通信状态。评价标准:①CAN_H断路时,在不同于断开点一侧节点间,数据通信无法进行。在CAN_H断开点的同侧节点间,能以实现数据通信;②修复CAN_H断路故障后,节点ECU能够重新实现数据通信。CAN_L断路测试用于检测CAN_L断路后ECU中CAN总线的通信状态,并检测修复该故障后ECU的CAN总线通信状态。评价标准:①CAN_L断路后,在不同于CAN_L断开点的一侧的节点间,数据通信无法实现。在CAN_L断开点的同一侧节点间能够恢复数据通信;②修复CAN_L断路故障后,各节点ECU能够实现数据通信。

第四,CAN_L和CAN_H同时断路检测,用于測试CAN_L和CAN_H同时断路时ECU中CAN总线通信情况,并检测修复该故障后各ECU种CAN总线的通信状态。评价标准:①CAN_L和CAN_H于同一位置断开,在不同于断开点的一侧节点间,数据通信无法实现。在和断开点同侧的节点间,能够恢复数据通信;②修复CAN_L和CAN_H同时故障后,ECU能够重新进行数据通信。

第五,CAN_H与电源短路测试或CAN_L与电源短路测试。CAN_H评价标准:①电源电压不小于总线正常电压,ECU可以不具有CAN总线报文的接收和发送功能。②修复CAN_H与电源断路故障后,各节点可以恢复CAN总线报文的接收和发送功能。CAN_L评价标准:①短路后,ECU可不具有总线报文接收和发送功能,不可以任何形式损坏ECU.②修复故障后,各节点能够实现总线报文的接收和发送功能。

第六CAN_L与搭铁短路测试和CAN_H与搭铁短路测试。CAN_L评价标准:短路后,总线电压没有超过正常范围,总线可以进行数据通信。CAN_H评价标准:①短路后,不要求ECU具有总线报文接收和发送的功能,不可损坏ECU.②修复故障后,各节点能够重新实现总线报文接收和发送的功能。

第七,CAN_H对CAN_L短路测试。①短路后,ECU不需要具有总线报文接收和发送功能,不能损坏ECU.②修复故障后,各节点能够再次进行总线报文的接收和发送功能。

结语

本文详尽的分析了CAN总线开发设计中故障测试、数据链路层、物理层等内容,希望本文测试结果能够为主机厂设计开发整车CAN通信提供参考依据。

参考文献

[1]王欢,杜全辉,尹华军.纯电动轿车CAN总线系统开发[J].汽车工程学报,2011,(05):147-152.

CAN网络论文 篇6

CAN总线最初是由德国Bosch公司提出的,是一种多主方式的串行通讯协议。随着汽车上的控制装置的增加,功能越来越复杂,传统的点对点通信方式带来汽车车身线束质量剧增、线路繁冗复杂等问题,CAN总线作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,被广泛应用于车身控制系统中。LIN是专门为汽车开发的低成本串行通信网络。通常采用LIN总线作为CAN总线网络的扩充。在低速的车身控制条件下,与CAN总线相比,LIN总线控制方案成本较低,因为LIN硬件的实现是基于普通的串行通信接口,甚至在子节点中可以用普通的I/O口加上定时器进行模拟。另外,在LIN网络中只需要为主节点设置较高精度的时钟,从节点只需通过主节点发送的同步段就能获得位速率信息,这样一方面减少了高精度时钟数量,降低了成本[1];另一方面不需要仲裁,降低了软硬件设计的复杂度。采用 CAN/LIN混合网络,汽车结构设计可以更加灵活。

1 系统概述

系统的拓扑结构如图1所示,系统采用CAN总线和LIN总线相结合的混合网络,形成层次式和并列式混合的网络结构[2]。左前门、右前门、左后门、右后门四个车门节点组成并列式的CAN通讯网络,CAN总线可靠性好,实时性强,应用在控制功能比较复杂的场合,车门控制系统的主要功能是接收来自中控锁、玻璃升降器开关、车门锁等控制开关的信号,控制车窗、车灯、车门锁等执行器并记录其状态。由于左前门上的开关可以控制四个车门的车窗和车锁,功能比较复杂,将其作为控制节点,负责接收其他节点的状态信号并根据相应的状态给出控制信号。其他节点功能较简单,主要用来接收左前门发送的命令,对节点上的执行器进行驱动和状态反馈。LIN总线用于速度和可靠性要求不高的场合,连接后视镜、车内阅读灯、雨刷等从节点。LIN主节点由左前门节点来完成,与从节点进行数据传输,同时充当CAN和LIN网络连接的网关。

2 系统硬件设计

2.1 CAN节点和LIN节点设计

CAN节点采用飞思卡尔MC9S08DZ60单片机作为主控芯片,该芯片是基于HCS08内核的高度集成的高性能8位单片机,具有很强大电磁兼容性。其主要功能模块包括24路12bitA/D采样口;1路MSCAN模块兼容CAN协议2.0A/B;2路串行通信接口模块(SCI),支持LIN2.0协议;1路串行外围接口模块(SPI);2个定时器模块等,能完全满足系统的功能需求,且片上资源能够得到充分利用。以左前门为例,图2为主控芯片的硬件原理图。

对于LIN节点,由于左前门节点使用的MC9S08DZ60芯片的串行通信SCI模块支持LIN2.0协议,可以直接使用MC9S08DZ60作为LIN主节点控制器。从节点采用微芯的PIC16F886芯片作为控制器,PIC16F886带有增强型UART模块,支持LIN2.0协议,并能实现自动波特率检测和校准、接收到间隔字符时唤醒、13 位间隔字符发送等附加功能,简化了LIN总线系统的实现。

汽车的电池一般提供的电压为12V直流,而控制芯片的供电电压一般为5V直流,同时输入信号调理电路也需要5V的电压,因此需要进行电平转换[3]。采用LP2985-50稳压芯片提供稳定的5V电压。

2.2 CAN&LIN收发电路设计

CAN收发器集成了CAN协议中物理层的部分功能。采用TJA1040收发器,每个节点通过收发器物理连接到CAN总线线路,收发器能够驱动CAN总线所需的大电流,并具有对故障CAN或故障节点的电流保护。MC9S08DZ60单片机有一个MSCAN模块,用于控制CAN报文的收发处理,该模块用单片机外部的两个引脚,包括一个CANRX和一个CANTX引脚。在CAN总线上,CANTX输出的电平0表示显性,电平1表示隐性。

在每个LIN节点都采用TJA1020收发器作为LIN协议控制器与LIN物理总线之间的接口。TJA1020能支持最好至20 Kbps的波特率,具有很好的EMI特性,为LIN总线的从节点集成了终端电阻,具有睡眠模式,能有效减少功耗[4]。TJA1020与TJA1040收发电路如图2所示。主节点中MC9S08DZ60的SCI2模块中的TxD2和RxD2与从节点中PIC16F886的Tx与Rx分别连接到相应的TJA1020的TxD和RxD端,LIN总线的输出引脚通过一个内部的终端电阻被拉高。收发器在LIN总线的输入引脚检测数据流并通过引脚RXD发送到微处理器。

2.3 信号调理电路设计

车窗升降开关和后视镜控制开关的输出信号是模拟量,在开关内部不同档位对应不同大小的电阻,通过开关进行切换。在开关内部没有分压电阻,需要在输出信号端加入上拉电阻,将输出信号连接到的MCU管脚上拉。当开关没有动作时,A/D管脚采集到上拉电平;当开关有动作时,电阻分压得到相应的模拟电平。在A/D管脚处连接一个4.7 V的稳压管,减小电压波动,避免对MCU造成破坏。

车门锁接触开关信号是开关量信号,高电平为12 V,低电平为0 V,需要采用一个电平转换电路对开关量信号进行调理,否则电压值会超过I/O口能承受的最高电压。当开关没有按下时,输入为高电平,二极管和三极管都截止, I/O口的电平被拉低为低电平。当开关被按下时,输入为低电平,二极管和三极管导通,输出电平为高电平(5 V)。这样的转换电路减少了外部开关信号对内部微处理器系统的干扰。输入信号调理电路如图4所示。

2.4 系统执行器的驱动

系统所用的玻璃升降器电机的正常工作电流在10 A一下,约为3~5 A,考虑到其带动的玻璃重量、运动过程中遇到的阻力,峰值电流在15 A左右。由于单片机的输出功率不能直接驱动电机,因此需要采用专用的电动玻璃升降器驱动芯片VNH3ASP30-E[5]。使用VNH3ASP30-E的驱动电路如图5所示。

图5中来自MCU的控制信号有INA/INB、ENA/ENB以及PWM。两路输出分别用于控制车窗的上升和下降。VNH3ASP30-E内部集成了电流反馈电路,能够在CS管脚输出一个与输出电流成正比的反馈电流,反馈给MCU的信号为CS经低通滤波后的信号。MCU根据采样到的MCU值判断玻璃升降器的工作状态:正常运行、遇到阻力或堵转,可以进行防夹设计。

与车窗类似,车锁和后视镜的驱动采用L9949驱动芯片,该芯片通过SPI与MCU连接,获得控制字。LIN节点控制的车内阅读灯的功率为5 W,其驱动也选择高侧开关集成芯片VND5E050AK-E来完成。VNH3ASP30-E能提供的驱动电流可达30 A,驱动电压可达41 V;L9949的直流供电电源电压可达28 V,片内有一个最大输出电流为6A的全桥驱动电路;VND5E050AK-E最大瞬态供电电压为41 V,正常操作电压在4.5 V-28 V,最大输出电流为27 A,驱动电压、电流、功率完全能够满足系统需求。

3 系统软件设计

在CAN节点的程序中,首先对系统的时钟模块、A/D模块、TPM模块、MSCAN模块、SPI模块等进行初始化。程序进入循环主体检测各自节点的状态量、等待其他节点发送的CAN报文。对于检测到的开关输入信号,按照主节点的功能要求进行相关报文的逻辑组合,进行CAN报文的发送,如果有对LIN节点的控制,则进行LIN报文的发送[6]。对于其他节点发送的CAN报文采用中断接收方式,在中断程序中先根据相关报文的意义对标志位进行设置,退出中断后再根据标志位对节点的执行器进行驱动。

在LIN主节点和从节点的程序中,首先进行SCI端口一些标志位等参数的初始化。主节点在检测到开关状态变化时,向从节点发送报文头,依次发送间隔场、同步场和ID场,之后等待从节点响应数据的状态,接收到数据后相应地修改状态标志位。

从节点负责发布或者接听帧的应答,包括两个部分:检测同步间隔和同步场、帧处理。帧处理包括接收并分析帧ID,按照事先的设计,选择是发送应答、接收应答(为数据提供缓冲区)或者既不接收也不发送应答。这里采用主节点发送报文头并接收从节点的应答,从节点发送相应的状态信息的方式。从节点采用中断的方式来接收LIN报文并响应,PIC16F886有间隔场自动唤醒功能,只要检测到间隔场就会进入中断服务程序,因此将控制程序放入中断服务程序。根据接收到的帧ID判断是否接收报文,对室内灯、雨刷或后视镜进行控制,并将执行器的状态反馈到数据场中,发送给主节点[7]。程序流程图如图6所示。

4 结束语

本系统采用CAN/LIN混合网络,实现了以左前门为主的汽车车门控制系统,表明利用多种现场总线可以代替传统的控制方法,并且可以改善控制效果,提高控制系统的性能,同时也能有效地减少成本。本系统已经在实验台架上调试完成,可以可靠地完成控制功能。

参考文献

[1]汪淼,吴云,常安云.基于LIN总线的车身控制系统的应用研究[J].计算机工程与设计.2009,30(13):3094-3096.

[2]龚进峰,吴正,曹健,等.CAN/LIN混合网络在轿车车门控制系统中的应用[J].汽车工程,?2006,28(06):578-581

[3]张虹.基于LIN总线的车身电控系统设计[J].仪表技术与传感器,2009,46(7):57-59.

[4]车勇,李百川,彭贤武.LIN总线技术在汽车中央集控门锁上的应用[J].山西电子技术,2006,34(3):43-44,53.

[5]沈会,徐青菁,叶子晟,等.基于CAN总线的电动车窗控制系统设计[J].电力电子技术.2011,45(12):84-86.

[6]华韬,阳宪惠,宋明浩.基于CAN/LIN网络的汽车门锁控制系统[J].电子技术应用,2005,31(11):29-32.

CAN网络论文 篇7

1 系统工作原理

基于CAN网络的车载多媒体播放系统由播放器、显示设备、车载多媒体、内存设备、CAN、DSP处理器五部分组成,处理器通过CAN总线处理车载多媒体传输过来的音频数据,并起到音频文件的解码和对播放的控制。该系统的内存设备是用来存储音频文件的,多媒体通过识别处理后将音频文件通过CAN总线传输给DSP处理器进行音频解码,然后再传输给播放器来执行音频文件的播放,并由显示屏显示出来。而CAN总线是本系统开发的核心和关键,CAN总线模块是由CAN控制器和CAN收发器构成,完成通讯功能。

2 硬件电路设计

2.1 CAN总线接口电路

在CAN总线的接口电路端,用接口芯片82C25与总线相连。在82C25与MPC2515之间用光藕进行隔离,从而避免了内部数字电路受CAN总线电器信号的干扰,为内部数字电路的工作提供了良好的电器环境。

2.2 MCP2515控制器

MCP2515控制器是构成车载多媒体单元的主要部分,完成接受过滤、管理信息的功能。MCP2515通过SPI总线与DSP相连接。中断线连接DSP的PF口主要用于产生接收数据中断。它的TXCAN和RXCAN是用来与CAN总线的端口芯片相连接,从而完成物理层的构建。

3 系统软件设计

软件部分分为音频文件的播放操作和显示部分的编程。通过对这两部分软件的设计完成播放器的主要功能,对音频文件进行音频解码处理,然后在屏幕上显示我们需要的操作界面,只需通过操作界面就可以完成对播放器的播放控制。

3.1 播放部分

该部分主要是读取存储设备中的音频文件并进行音频解码和播放设置。首先通过读取内存设备的音频文件,然后解码并将数据传送到播放器进行播放。播放设置包括音量调节和播放调整。音量调节是通过AD芯片采集到音量的调节变化,做出相应音量的调整。而播放调整是通过对命令信号的扑捉来实现的,当在播放音乐时遇到暂停或者是上一首、下一首命令时播放系统就要做出相应的调整。

3.2 显示部分

显示部分主要是实现基本菜单的显示和相应控制命令的功能。借助显示屏将我们需要显示的数据和信息显示在屏幕上,通过触点检测来识别控制命令的信号,并作出相应的处理完成操作。

4 结束语

当今社会在飞速发展无疑能源、健康、空间的利用,成了人们着重关注的对象。在当今时代汽车成为人们生活中不可缺少的一部分。汽车舒适安逸使得人们身心愉悦,然而其高档汽车传统电子线路设计走线极为复杂占据空间之大,与汽车体积之小形成鲜明对比之比,抑制其发展。而CAN总线使其克服这一缺点,不仅节约大量电气导线与空间,而且还能高效传输预处理信息。既节约成本,又提高信息传输效率。是一个跨时代的转变,其标志着电子技术克服传统电气导线多而复杂的束缚、以及传输效率极低的特点。本项目采用DSP和CAN总线配合处理。DSP负责多媒体信息处理和音频解码。DSP专项处理信号数字系统实验使得处理信号精密度得以提高。

摘要:随着嵌入式技术和汽车产业的快速发展,人们希望在乘车的时候能有更好的体验:既能够与外界进行信息沟通,又能够体验到娱乐功能。这两者促使了车载多媒体播放系统的诞生和发展。根据需要利用DSP为处理器完成该系统的控制,并采用CAN总线通讯方式,通过车载多媒体读取存储设备内部的音频文件,并通过显示屏显示基本界面,用户只需对多媒体进行操作便可以将音频文件通过播放器播放出来,操作简单方便,充分满足了人们的消费需求。

关键词:CAN,车载多媒体,DSP,播放器

参考文献

[1]康华光.电子技术基础数字部分(第五版)[M].北京:高等教育出版社,2006.

[2]康华光.电子技术基础模拟部分(第五号)[M].北京:高等教育出版社,2006.

[3]张迎新.单片机原理及应用[M].北京:电子工业出版社,2009.

CAN网络论文 篇8

电动汽车能源利用率高和低污染等特点作为交通工具而被广泛关注。但电动汽车采用大量的电子器件,整车的控制难度和数据的时实性要求很高,随着车辆电子器件的增加,需要一种先进的总线技术来减少电线的数量,提高系统的稳定性[1]。CAN总线与一般的总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。但CAN协议只规定了物理层和数据链路层,要用户自己定义应用层,国内对CAN总线的研究大多基于CAN2.0B规范开发,很少能在应用层的水平上进一步的深入。本文以MCGS组态软件开发监控界面,利用i CAN和CANOPEN协议设计了电动汽车车载网络实验平台,为进一步的应用层的研究做准备。

2 系统介绍

整个车载网络分为高速网络和低速网络两大网络,彼此独立,这样可以保证两个网络数据传输不受影响。其中高速CAN的波特率是500kbit/s,低速网络波特率是125kbit/s。高速网络基于CANOPEN协议,低速网络基于ICAN协议。其中在高速网络中有电机控制,电池管理节点,制动控制节点,安全气囊节点,变速器节点共5个节点。低速网络中有显示节点,左前节点,右前节点,空调温度系统节点,车顶节点,左后节点,右后节点,雨刮器节点共8个节点。每个网络的都有一对阻值为120欧姆的终端电阻。由于车的种类很多,本文只是标准配置,含盖了常用的模块,根据具体情况还可以扩展。网关可以对两条独立的总线进行数据交换和资源共享。中央控制器是整车管理系统的控制核心,对各种信息进行分析处理,并发出指令,协调汽车每个控制单元及电器设备的工作。图1是整个系统结构拓扑图。选用带两路CAN总线接口的USBCAN-II,支持USB通信,有OPC客户端接口。在本文中,用PC机作为两个总线的主节点,PC机数据处理功能强大,可以充分利用各种软件,能实现网关和中央控制器功能,并用MCGS组态软件开发监控界面,对整个系统进行监视和控制。

3 网络设计

3.1 低速网络

iCAN协议使用扩展帧格式CAN报文(CAN2.0B),对29位帧标识符和数据部分进行了重定义,建立了一个统一的设备模型,定义了设备的I/O资源和访问规则,可以最多支持64个节点,能满足低速网络的节点要求[2]。

低速网络根据输入的各种开关控制量,控制车灯的通断,实现车窗的升降和门锁的开/关和雨刮的控制;采集汽车各种状态信息如温度、车速、车灯状态等,显示相关信息出来,并对系统故障发出警告信息。PC机的主要功能为:采集开关量,根据开关状态处理数据,发送控制命令;接受网络数据报文,处理数据。发送状态信息;在必要时起到网关的作用,将相关数据传输到高速CAN网络上。

右后节点、左后节点、右前节点、左前节点功能为:接收网络数据,控制汽车车灯和车窗电机、门锁电机;采集它们的状态信号并发送电器状态数据,通报电器是否正常工作;车顶节点用于控制天窗和车顶内部的灯以及控制雨挂器;仪表节点用于显示车身各状态信息,如车速指示、CAN故障指示、远光指示、倒车指示等;温度系统节点用于向CAN网络交换汽车内部温度数据;一共8个节点,由ICAN协议来实现。

以左前节点为例,这里选用广州致远电子开发的iCAN 2404功能模块作为节点,iCAN2404有4路自保持功能的继电器输出通道,控制汽车车灯和车窗电机、左转弯灯、门锁电机,需要4个开关量输出。输出部分与控制部分采用了光电隔离措施,隔离电压达到1000V,能在复杂环境下正常工作。在硬件建立好后,首先通过拨码开关SW1设置模块的波特率以及模块的MACID地址,节点地址设定为000010,CAN波特率设定为100kbit/s。然后在电脑上根据iCAN通信协议,在MCGS里面编写相应的报文帧发送和接收脚本函数,控制模块的输出。控制流程如图2所示。

iCAN协议支持主从通信模式和事件触发通信模式,在这里用主从通信模式,即命令/响应通信方式,主节点发出命令帧,从节点响应。主节点要和从节点通信,首先要和从节点建立连接,主节点发出建立连接命令帧报文,在命令帧里源节点地址是0x00,目标节点地址是000010,功能码是0x04,资源节点地址是0xf7,数据帧部分是0x0000FF。如果返回正常功能码就发送控制报文帧,iCAN协议规范中,继电器输出单元数据空间映射为0x20~0x3f的资源节点地址,主节点通过访问资源节点即可实现对继电器单元的操作,如果从站响应不正常,则分析返回功能码,显示错误原因。

3.2 高速网络

CANOPEN协议的核心在于对象字典(OD),每一个节点都有自己的对象字典。对象字典包含了描述这个设备和其它网络行为的所有参数。11位的COB-ID有8个优先级,每个优先级有220个COB-ID。在预定义连续集ID里,高四位是功能ID,低七位是节点ID。功能码ID定义了4个发送PDO,4个接收PDO,1个SDO,1个紧急对象和1个节点错误控制ID对等对象,也有NMT服务对象、SYNC和Time Stamp广播对象[3]。

图3是基于CANOPEN协议的设备模型图。

3.2.1 高速网络的实现

在高速网络中,共有电机节点、电池管理、制动控制、安全气囊、变速器控制和车速等6个子节点,上位机作为主节点,接收每个节点的通讯对象,在分析之后,把相应的信息通过组态软件显示出来,当主节点要向一个节点的对象字典(OD)写入数据的时候,上位机发送相应的SDO通讯对象,节点返回一段数据,表明成功写入。表1是各子节点交换的信息,其中电动机节点中,转速、力矩等使用优先级较低的SDO通讯对象,如果要改变速度则用优先级较高的PDO;电池管理节点中,电池电量和电压数据使用一个SDO传送,当温度高于一个阀值的时候用一个PDO传送各主节点,都用周期传送;制动控制节点和安全气囊节点各自一个紧急通讯对象;变速器节点把档位信息和变速信息等通过PDO发送到网络上;车速节点周期发送速度数据到主节点。每个节点应该有一个NMT通讯对象来保护节点和BOOT-UP,安全气囊接收紧急通讯对象,优先级最高。上位机控制命令指节点初始化过程中主节点对子节点OD的访问。

3.2.2 典型节点设计

以电动机节点为例介绍节点的通讯设计,CAN接口卡接收来自网络上的CANOPEN通讯对象,并在分析之后把相应的数据写入驱动器或者读出并发送到网络上,驱动器控制电动机的转速和传递电动机的运行参数,在本实验平台上选用一台三相异步电动机和MODROL公司的IMS-GF3-47P5型号的驱动器,再配上MDOROL公司的CAN通讯卡,就能自由的控制电动机,CAN通讯接口卡支持1个SDO和2个PDO,每个PDO能发送8个数据对象,并且可支持一个SDO和一个PDO的自动重发功能,最高通讯速率达到1M,完全可以满足在这个实验平台上的需要。

在CANOPEN网络中,各种通信对象的标识符可采用默认值,也可利用DBT(标识符分配)服务进行动态配置,DBT服务需要大量的软件编程来实现,在本设计中采用标识符的默认模式。电动机节点需要传送的信息有转速、力矩、应急事件信号(紧急停止等),因此需要使用的通讯对象有一个SDO,2个PDO,一个应急对象,上位机设为主节点,电机节点ID为1,图4为CANOPEN协议的通讯流程,各报文的通讯对象设置如表2。其中发送SDO一定要有来自主节点的请求,这时主节点作为客户端,电机节点作为服务器,客户发送转速和力矩查询信息,服务器响应并发送数据。在本系统中,可在上位机上设置周期为100ms的SDO数据发送。当需要提高电机的速度或者增加力矩时,主节点(上位机)即发送一个接收PDO,驱动器接收到数据后把相应的数据存入对象字典,再由应用程序处理数据。PDO2的发送可以使用事件触发异步传送方式,当电机电流过大时发送一个PDO给主节点,由组态软件给出相应的提示。当有来自制动信号的紧急停止信号的时候,启动紧急对象通信,此通讯对象优先级最高,能迅速反应。节点保护可以检查节点的当前状态,当没有数据传送时尤其有意义。

4 编写组态环境

MCGS工控组态软件是一套32位工控组态软件,可稳定运行于Windows95/98/NT操作系统,集动画显示、流程控制、数据采集、设备控制与输出、网络数据传输、工程报表、数据与曲线等诸多功能于一身,并支持国内外众多数据采集与输出设备[2]。

4.1 图形组态

在MCGS组态软件里,常用库里提供了大量的图形,还可以编辑这些图形,能够很方便的开发出监控界面。本文开发了一个主显示窗口,可以显示主要的信息,如电机转速、温湿度数据、电池剩余电量、车速和转弯灯等常用的信息和报警提示信号。电机控制窗口可以显示转速和力矩等的实时曲线和历史曲线。车身窗口可以显示所有车灯和车门锁等的状态并且可以控制车灯和车门锁的开关;电池主窗口用于显示所有电池的参数,如电压和温度等,并且利用MCGS的报警显示功能,显示报警信息和存储报警数据以备以后查看。此外还开发了变速器控制、车身安全、故障记录等一系列窗口,能实时的显示数据和存储数据,还有动画显示功能。图5是主显示窗口。

4.2 定义数据对象

实时数据库是MCGS工程的数据交换和数据处理中心。数据对象是构成实施数据库的基本单元,建立实时数据库的过程也就是定义数据对象的过程。在MCGS里,数据对象设置最主要的是数据类型和存盘相关参数以及报警属性设置。例如对于电机转速数据对象可以设置为数值型,定时存盘,不允许报警处理。本文所建立的工程比较大,相关的数据对象很多,每一个窗口都要好几个数据对象,可以在组态的时候再添加需要的数据对象。

4.3 编写控制流程

对于简单的系统,MCGS的简单组态就可完成。但对于本系统,需要使用脚本程序,正确的编写脚本程序可以简化组态过程,优化控制过程。例如对于温湿系统的数据,上位机接收到的是一串iCAN报文帧,利用字符串处理函数分析里面的帧ID,找出数据,并转换为10进制的数,发送到显示窗口。

4.4 连接设备

MCGS提供了OPC服务器的数据接口,周立功公司的ZOPC-SERVE是一个OPC服务器软件,可以把MCGS连接到此服务器,再通过此服务器来和CAN网络进行数据传输。在服务器中,对于每路CAN,都固定有两个通道,它们的名称分别为In_CANData和Out_CANData。对于输入通道In_CANData,服务器把从CAN网络接收到的数据存放到此数据项中,客户端只能读取它的数据;而对于输出通道Out_CANData,客户端把要发送的数据写入到此数据项中,服务器再把此数据项中的数据提取出来发送到CAN网络,客户端不能读取此数据项的数据。它们的存储格式都为字符串形式[2]。

5 结论

本文以PC作为监控系统的网关和主节点,用iCAN和CANOPEN协议分别组建低速网络和高速网络,利用MCGS组态软件开发了监控界面,实现了整个网络控制的自动化,具有较好的稳定性和精确度,在此基础上可以进一步的扩展,加深电动汽车CAN网络通信的研究。

摘要:为了解决电动汽车各部分之间的通信问题,基于iCAN和CANOPEN应用层协议设计了电动汽车车载网络平台,以MCGS组态软件开发了监控界面和以一台PC机作为数据处理中心。实验表明整个系统工作稳定可靠。

关键词:iCAN协议,CANOPEN协议,电动汽车,MCGS

参考文献

[1]卢珞先,陈元.基于CANOPEN协议的电动车车载网络设计[J].武汉理工大学学报(信息与管理工程版),2007,29(12):126-128.

[2]周立功.iCAN现场总线原理与应用[M].北京:北京航空航天大学出版社,2007.

CAN网络论文 篇9

汽车技术发展到今天, 很多新型电气设备得到了大量应用, 尤其是电动汽车的电气系统已经变成了一个复杂的大系统。为了满足电动汽车各子系统的实时性要求, 需要对公共数据实行共享, CAN总线车载网络技术正是为满足这些要求而设计的。

本文研究的平台是一辆四轮独立电机转向四轮独立轮毂驱动的纯电动汽车, 其研究的对象是动力系统CAN总线车载网络技术。

2 研究平台

四轮独立电机转向四轮独立轮毂驱动的纯电动汽车采用四轮轮毂电机独立驱动技术, 通过四个高性能轮毂电机驱动控制器分别控制四个轮毂电机, 实现转矩控制、无极变速控制、电子差速控制等功能, 同时取消了传统汽车的变速箱、传动轴、驱动桥等复杂的机械传动部件, 汽车结构大大简化;在四轮独立驱动的基础上导入四轮独立转向技术, 通过四个高性能转向驱动控制器分别控制四个转向伺服电机, 实现转向角度控制, 除了实现传统四轮转向汽车的正向偏转和逆向偏转外, 还可以进行车辆的原地转向 (即零转弯半径) 和横向移动。

该纯电动汽车在机械结构和整车控制等方面都与传统汽车有着很大的区别, 这些都对相关的研究、设计、生产和服务环节提出了更高的要求。

为了满足该纯电动汽车庞大的电气系统, 本文专门针对电动汽车车载网络相关行业的应用规划, 研究设计了动力系统CAN总线车载网络, 使其满足整车动力各子系统的实时性、资源共享、协调控制等要求。

3 动力系统CAN总线车载网络

3.1 设计方案

动力系统作为整车动力性、驾驶操纵性能和行车安全性的控制单元, 是整车控制的核心部分。由于之前汽车总线技术还不够完善, 动力系统的控制一般采用集中控制方式, 也就是使用一个电子控制单元 (ECU) 控制动力驱动、转向控制和安全制动等方面, 这往往会导致传感器信号和执行器控制信号干扰过大、单点故障会导致整个系统崩溃等方面的问题。

本文研究的动力系统采用的是全模块化控制, 整个动力系统有17个模块ECU, 实现四轮独立转向、四轮独立驱动、四轮自动防抱死制动 (ABS) 和动力电池管理四大功能。动力系统CAN总线车载网络结构如图1所示。

图1中, 动力系统总控制及网络网关ECU、制动系统总控制ECU、驱动系统总控制ECU、转向系统总控制ECU和动力电源管理系统ECU这5个ECU节点组成动力系统总的总线网络。另外, 该网络拓扑结构还包含制动分系统、驱动分系统和转向分系统这3个总线局域网络。制动系统总控制ECU、左前轮制动控制模块ECU、右前轮制动控制模块ECU、左后轮制动控制模块ECU和右后轮制动控制模块ECU组成了制动分系统的总线局域网络;驱动系统总控制ECU、左前轮驱动控制模块ECU、右前轮驱动控制模块ECU、左后轮驱动控制模块ECU和右后轮驱动控制模块ECU组成了驱动分系统的总线局域网络;转向系统总控制ECU、左前轮转向控制模块ECU、右前轮转向控制模块ECU、左后轮转向控制模块ECU和右后轮转向控制模块ECU组成了转向分系统的总线局域网络。

这种网络拓扑结构将动力系统的三大分系统分成了三个分系统总线局域网络, 这样就形成了全模块化控制方式, 其优点是: (1) 各模块独立控制, 减小开发难度, 增强模块可靠性; (2) 各模块间采用总线技术, 达到数据资源共享, 数据传输抗干扰能力强; (3) 使整车控制策略采用高级算法成为可能等。

3.2 设计实现

本文研究设计的动力系统CAN总线车载网络的数据传输速率为1Mb/s, 17个节点ECU都采用MC9S12DG128作为主控芯片。MC9S12DG128 微控制器是Motorola 公司HC12系列16位单片机, 在汽车电子中应用很广。芯片集成了两个兼容CAN2.0A/B协议msCAN12模块, 能够实现高低速CAN 网络的网关节点功能。

CAN报文发送时, CPU将数据送入发送缓冲区, 然后经过外部收发器送到总线。报文接收时, 外部收发器将总线上的数据位流引入, 经过解码、错误检查、校验和报文过滤后送到接收缓冲区, 并通过中断或标志通知CPU。网络数据传输线是双绞线, 能进行双向的数据传输, 抗干扰能力很强。

4 结论

本文基于四轮独立电机转向四轮独立轮毂驱动的纯电动汽车, 设计了其动力系统CAN总线车载网络系统。实验结果表明该系统的硬件部分和软件部分都能满足该车动力系统的实际性能要求。

动力系统CAN总线车载网络的扩展性很强, 它可以根据实际需求增加更多的模块, 同时本文的网络架构便于动力系统控制算法和全车控制策略的实现, 这是本文下一步的重点工作。

摘要:以一辆四轮独立电机转向四轮独立轮毂驱动的纯电动汽车作为研究平台, 着重分析其动力系统CAN总线车载网络技术。

关键词:车载网络,电动汽车,CAN

参考文献

[1]戴西槐, 杨林, 张毅等.EV电控系统的CAN总线通信研究与开发[J].计算机工程与应用, 2005, (5) :200-203.

[2]周立功.ICAN现场总线原理与应用[M].北京:航空航天大学出版社, 2007.

[3]胡思德.汽车车载网络 (VAN/CAN/LIN) 技术详解[M].北京:机械工业出版社, 2006.

[4]张毅, 杨林, 朱建新等.电动汽车能量回馈的整车控制[J].汽车工程, 2005, 27 (1) :24-27.

[5]X.C.Zhu, Y.C.Zhang, “An IOT based Car-bus for the4WIDIS EV, ”International Conference on Electrical and Control Engi-neering[M].Yichang:2011, in press.

can和could的用法扫描 篇10

情态动词can有一定的词义,但不能独立存在,它必须与动词原形一起构成谓语。情态动词can没有人称和数的变化。其具体用法如下:

1. 表示“能、会”,指脑力或体力方面的“能力”。例如:

I can speak English.我会讲英语。

Jim can swim but I can’t.吉姆会游泳,但我不会。

2. 表示“可能”,常用于否定句或疑问句中,指某种可能性。例如:

Han Mei can’t be in the classroom.韩梅不可能在教室里。

Can he come here today, please? 请问他今天能到这里来吗?

3. 表示“可以”,常用于口语中,指许可或请求做某事。例如:

Can I have a cup of tea, please? 请问我可以喝一杯茶吗?

You can go out.你可以出去了。

[提示板] ①can在口语中可以代替may,表示许可或可以。

②can’t在口语中代替mustn’t时,表示禁止或不准。例如:

You can’t play football in the street.不准在马路上踢足球。

③情态动词can的过去式could,用于现在时,可使语气更委婉、更客气。例如:

Could you help me with my English? 你能帮助我学习英语吗?

下面有几条单项选择题,同学们做做看:

1. —Can you play with a yo-yo, Jim?

—Yes, I _____. It’s easy.

A. mustB. canC. needD. may

2. You _____ go and ask Meimei. Sheknow the answer.

A. must, can B. must, mayC. need, canD. can, may

3. —_____ I take the magazine out of the reading room?

—No, you can’t.

A. MustB. CanC. NeedD. Do

4. —May I change the film here?

—No, you _____ do that in the sunshine.

A. needn’tB. wouldn’tC. don’t have toD. can’t

(Keys: 1~4:BDBD)

[扫描之二] could的用法

1. (表示有礼貌的请求)可以,行

Could I use your bike?我能用你的自行车吗?

Could you tell me the way to the school?你能告诉我去学校的路吗?

2. (表示过去)能,会(can的过去式)

My son could read and write when he was four. 我儿子四岁时就能读会写了。

[典型考题1]

—_____ you get a few pears for me, please?

—Sure.

A. DoB. CouldC. MustD. Did

答案B。句意:你能为我买些梨吗?当然可以。

Could you…? 是表示有礼貌的请求的日常交际用语。A、C、D选项均不能表达此意。

[典型考题2]

Could you buy _____meat for Mr Li?

A. someB. anyC. aD. a few

答案A。句意:你能为李先生买些肉吗?在表请求的问句中,通常用some而不用any,故选A。

[典型考题3]

He _____ swim four years ago.

A. canB. couldC. isD. does

CAN网络论文 篇11

三菱FX系列PLC提供的计算机链接通信方式通过FX-485PC-IF,FX-485BD等设备可实现多台PLC与计算机的通信,从而组成一个网络,可通过计算机实现对PLC的监控。这种网络最多可以包括16台PLC,但在实际应用中,往往没有如此多的数量,而是和其它设备一起组成一个更为复杂的网络,为了能够好地对整个网络进行管理,有必要将PLC组成的网络与其他系统组成的网络进行区分,并通过某种方式实现各部分的通信。通过PLC的计算机链接方式,将PLC网络作为CAN总线的一个节点,可以很好地解决这一问题。

2 系统总体方案设计

FX系列PLC的计算机链接图如图1所示,由于计算机与FX-485PC-IF之间的通信协议为RS232;FX-485PC-IF通过FX-485BD与各PLC进行通信,FX-485PC-IF与FX-485BD之间采用RS-485协议[1]。

系统对这个拓扑进行了改动,通过Philips公司的P8xC591单片机与MAX485组成一个RS485通信接口,通过MAX485与FX-485BD进行相连接,实现PLC与单片机的通信。如图2,由P8xC591单片机取代PC,成为PLC计算机链接中的主控制器。无论是计算机还是单片机作为主控制器,这种拓扑都是采用主从式结构系统,通信方式都是以主站轮询的方式进行。但从实际应用看,单片机既可以作为主控制器对PLC数据的读写外,还可以作为数据采集的主控制器,对该部分控制所需要的数据进行采集。

P8xC591单片机集成了CAN总线控制器,只需要接上收发器就可以接到CAN总线上作为CAN总线的一个节点[2],如图3,P8xC591的CAN接口与收发器82C250相接,通过82C250实现与CAN总线的通信[3];另一方面,P8xC591的串行通信口RXD与TXD分别与MAX485的RO与DI相连接,通过MAX485与FX-485BD通信。MAX485与FX-485BD之间采用二线制方式,实际上,P8x C591与PLC之间的通信就采用半双工的工作方式。MAX485的引脚A与B分别与FX-485BD的RDA与RDB相连,在RDA与SDA之间接330Ω的电阻,RDB与SDB直接相连[5]。

3 单片机与PLC的通信数据格式

P8xC591与PLC之间通信采用异步半双工模式,在任何时候只能有一点处于发送状态,任何一次数据的传输都是由P8xC591单片机发起的。P8xC591访问PLC有读和写两种情况,其控制协议(格式1)如图4。所有数据均与ASCII码的形式传输。其中,ENQ、ACK与NAK分别为发送请求、信息确认应答与信息36H(D0096)+30H32H(两个单元)+34H31H和错误应答,各自的ASCII码分别为:05H、06H与15H。站号为当前要读取或写入的PLC中D8121的值,PC号固定为FFH(ASCII码46H,46H),对PLC的操作命令与ASCII码如下所示[1]:

批读:BR(42H,52H)、WR(57H,52H),

批写:BW(42H,57H)、WW(57H,57H),

测试:BT(42H,54H)、WT(57H,54H),

远程运行:RR(52H,52H),

远程停止:RS(52H,53H),

读PLC类型:PC(50H,43H),

接地:GW(47H,57H),

环路回送测试:TT(54H,54H)。

消息等待时间以10ms为单位,最小为0,最大为150ms,依次分别用0~F的ASCII码来表示。字符区域即为所要读取或写入的PLC元件地址与数据。读操作中由PLC返回的数据中,ETX(ASCII码为03H)为信息帧结束标志。和校验区域如图4所示,将这个区域中的所有ASCII码相加后取最低两位十六进制数并用ASCII码表示。

例:(1)读取PLC中D0096和D0097中的数据,(2)将02H和05H分别写入D0096和D0097中;消息等待时间均为10ms,PLC站号为01H,则单片机所发送的数据内容如下:

PLC接收到来自单片机的发送请求后,便将接收后面的数据,并进行解析,当接收完下划线部分的所有内容后,会将该部分数据进行累加得到和校验码,并与来自单片机的和校验码比较,以此来判断数据是否正确接收。接收完数据后,PLC的应答如下。

单片机收到后,返回确认信息给PLC:

(2)正确接收并执行

4 CAN数据与RS485数据的转发流程设计[4,5,6]

由于P8xC591与PLC的数据采用ASCII码的方式传输,而与CAN总线的数据则是直接的,没有经过任何编码的数据,只有根据不同的CAN协议来确定具体的意义,因此,要实现CAN的数据与RS485的数据转发,必须先对数据进行转换。具体算法如下。

(1)CAN数据转换为RS485的数据

以两个十六进制位为单位,将每个字节分成高位和低位,则每位均可以在0H~FH之间取得。若该位在0H觸9H之间,则将该位加上30H;在AH~FH之间,则将该位加上37H,得到该位的ASCII码,则一个字节的CAN总线数据要用两个ASCII码表示。

(2)RS485数据转换为CAN数据

每两个字节的RS485数据(ASCII码)表示一个CAN总线数据,因为0H~9H的ASCII码分别为30H~39H,AH觸FH的ASCII码分别为41H~46H,所以30H~39H之间的数据减去30H,41H~46H之间的数据减去37H,然后将两位合并成一个字节就完成了向CAN总线数据的转换。

图5为系统上电后的流程图,P8xC591对CAN控制器与串口初始化完成后,便对CAN控制器数据缓冲区进行查询,若有数据,则将数据进行编码转换并保存在数据RAM1中;若无数据,则读取RAM1中的指令与数据发到RS485网络,并等待RS485网络返回的数据。同样,若RS485有数据返回,则读取数据并编码,保存到数据RAM2中;若无数据返回,则将数据RAM2中的数据发送到CAN总线[4]。需要注意的是,P8xC591的片内数据RAM只有512个字节,为保证数据不丢失,数据量应小于数据RAM所能存储的最大值;而由于这些数据一旦发送到目标地址,数据RAM资源便得到释放,对于数据的传输影响很小。

5 总结

系统通过对三菱FX系列PLC计算机链接的简化,以P8xC591为核心将CAN总线与RS485总线连接在一起,使基于RS485总线的PLC网络成为CAN总线的一个节点,使得对PLC网络的远程监控更灵活,对组建包含PLC网络的CAN总线变得简单易行,此外,系统的与CAN总线接口部分引入光耦器件后,抗干扰能力将得到加强,在工业应用中有很好的应用前景。

参考文献

[1]Mitsubishi Electric Co.,Ltd.USER'S MANUAL FX COM-MUNICATION(RS-232C,RS485)[Z].Mitsubishi Elec-tric Co.,Ltd.2000.3,JY992D69901.

[2]PHILIPS Semiconductors.P8xC591Single-chip8-bit micro-controller with CANcontroller[Z].2000.

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

[4]邓检华.现场总线CANbus与RS-485之间透明转换的实现[J].电子技术应用,2001(5):51-52,57.

上一篇:APP运营商风险评估下一篇:情感教育在教学中