首页| 新闻|市场|专题|产品|日经电子|访谈|技术文章|解决方案|技术热点|新手园地|黄页|下载|展会|人才|博客
    
  首页 >> 论坛 » 总线与网络 » [专题]CAN总线讨论专栏!
版主: majianhui
 发表新贴 
 发表回复 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 16:24:13 [您是本帖的第 3833 位阅读者]     [1楼] 
呢称:小黑
助理工程师

积 分 117
注册2007-05-18
加我为好友
发 短 消 息
[CAN总线应用与讨论
其实我对CAN总线了解的并不多,早在两年前,师兄就对我说,学习一下CAN,ARM,FLexray等可是我一直都没有完成师兄教给我的对我自身提高的任务,一方面可以说是借口吧是自己的课题没有涉及到,更大的原因是由于自己的懒惰吧,废话不多言,

希望这个专栏能给大家的学习提供一个好的平台,希望大家多支持,共同学习吧,欢迎高手加入!



[该帖子由xiaoyi于2007年6月13日 21:23:40最后编辑]
 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 16:40:45 [2楼] 
呢称:小黑
助理工程师

积 分 117
注册2007-05-18
加我为好友
发 短 消 息
CAN基本知识
什么是CAN ?
CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力.
CAN 是怎样发展起来的?
CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。1993年,CAN 已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。
CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。
由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用
 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 17:08:57 [3楼] 
呢称:zhangfanzhai
新手

积 分 0
注册2007-05-18
加我为好友
发 短 消 息
基于CAN总线的汽车内部网络系统研究



随着车用电气设备越来越多,从发动机控制到传动系统控制,从行驶、制动、转向系统控制到安全保证系统及仪表报警系统,从电源管理到为提高舒适性而作的各种努力,使汽车电气系统形成一个复杂的大系统,而且这一系统都集中在驾驶室控制。另外,随着近年来ITS的发展,以3G(GPS、GIS和GSM)为代表的新型电子通信产品的出现,对汽车的综合布线和信息的共享交互提出了更高的要求。

从布线角度分析,传统的电气系统大多采用点对点的单一通信方式,相互之间少有联系,这样必然需要庞大的布线系统。据统计,一辆采用传统布线方法的高档汽车中,其导线长度可达2 000 m,电气节点达1 500个,而且根据统计,该数字大约每10年增长1倍,从而加剧了粗大的线束与汽车有限的可用空间之间的矛盾。无论从材料成本还是工作效率看,传统布线方法都将不能适应汽车的发展。

从信息共享角度分析,现代典型的控制单元有电控燃油喷射系统、电控传动系统、防抱死制动系统(ABS)、防滑控制系统(ASR)、废气再循环控制、巡航系统和空调系统。为了满足各子系统的实时性要求,有必要对汽车公共数据实行共享,如发动机转速、车轮转速、油门踏板位置等,但每个控制单元对实时性的要求是因数据的更新速率和控制周期不同而不同的。这就要求其数据交换网是基于优先权竞争的模式,且本身具有较高的通信速率。CAN总线正是为满足这些要求而设计的。

1 CAN简介

德国Bosch 公司为解决现代车辆中众多的控制和数据交换问题,开发出一种CAN(Controller Area Network)现场总线通信结构。CAN总线硬件连接简单,有良好的可靠性、实时性和性能价格比。CAN总线能够满足现代自动化通信的需要,已成为工业数据总线通信领域中最为活跃的一支。其主要特点是:

① CAN总线为多主站总线,各节点均可在任意时刻主动向网络上的其他节点发送信息,不分主
从,通信灵活;
② CAN总线采用独特的非破坏性总线仲裁技术,优先级高的节点优先传送数据,能满足实时性要求;
③ CAN总线具有点对点、一点对多点及全局广播传送数据的功能;
④ CAN总线上每帧有效字节数最多为8个,并有CRC及其他校验措施,数据出错率极低,万一某一节点出现严重错误,可自动脱离总线,总线上的其他操作不受影响;
⑤ CAN总线只有两根导线,系统扩充时,可直接将新节点挂在总线上即可,因此走线少,系统扩充容易,改型灵活;
⑥ CAN总线传输速度快,在传输距离小于40 m时,最大传输速率可达1 Mb/s;
⑦ CAN总线上的节点数主要取决于总线驱动电路,在CAN2.0B标准中,其报文标识符几乎不受限
制。

总之,CAN总线具有实时性强、可靠性高、通信速率快、结构简单、互操作性好、总线协议具有完善的错误处理机制、灵活性高和价格低廉等特点。

2 总体方案设计

2.1 汽车内部CAN网络设计

正是由于CAN总线具有这些其他通信方式无法比拟的优点,使之成为电动汽车控制系统的理想
总线。

现代汽车典型的电控单元主要有主控制器、发动机控制系统、悬架控制系统、制动防抱死控制系统(ABS)、牵引力控制系统、ASR控制系统、仪表管理系统、故障诊断系统、中央门锁系统、座椅调节系统、车灯控制系统等。所有这些子控制系统连接起来构成一个实时控制系统——指令发出去之后,必须保证在一定时间内得到响应,否则,就有可能发生重大事故。这就要求汽车上的CAN通信网络有较高的波特率设置。另外,汽车在实际运行过程中,众多节点之间需要进行大量的实时数据交换。若整个汽车的所有节点都挂在一个CAN网络上,众多节点通过一条CAN总线进行通信,信息管理配置稍有不当,就很容易出现总线负荷过大,导致系统实时响应速度下降的情况。这在实时系统中是不允许的,因此在对汽车上各节点的实时性进行了分析之后,根据各节点对实时性的要求,设计了高、中、低速三个速率不同的CAN通信网络,将实时性要求严格的节点组成高速CAN通信网络,将其他实时性要求相对较低的节点组成中速CAN通信网络,将剩下实时性要求不是很严格的节点组成低速CAN通信网络。并架设网关将这三个速率不同的三个通信网络连接起来,实现全部节点之间的数据共享。整个汽车的CAN通信网络拓扑结构如图1所示。

图1 汽车CAN总线网0络拓扑图

发动机控制系统、悬架控制系统、制动防抱死控制系统(ABS)、牵引力控制系统、ASR控制系统这五个节点是汽车运行的核心部件,对时间响应要求严格,因此将这五个节点组成高速CAN通信网络,通信波特率设为500 bps。仪表管理系统、故障诊断系统等相对来说对实时性的要求较低,因此这些节点构成中速CAN通信网络、通信波特率设为128 bps。中央门锁系统、座椅调节系统、车灯控制系统对实时性要求不是很严格,它们构成低速通信网络,通信波特率设为30 bps。两个网关跨接高、中、低速三条总线,与各节点进行数据交换。网关通过对CAN总线间待传数据信息的智能化处理,可以确保只有某类特定的信息才能够在网络间传输。

2.2 器件选择

汽车内部CAN网络主要由两部分组成:面向底层ECU的CAN节点和实现高低速网络数据共享及网络管理的网关。为了减少开发周期,选择Motorola公司一款带CAN模块的中档微处理器MC9S12DP256;CAN收发器以及电源系统是用MC33989来实现的。

微控制器MC9S12DP256是基于16位HCS12 CPU及0.25 μm微电子技术的高速、高性能5.0 V Flash存储器产品中的中档芯片。其较高的性能价格比使其非常适合用于一些中高档汽车电子控制系统;同时其较简单的背景开发模式(BDM)也使开发成本进一步降低,使现场开发与系统升级变得更加方便。

MC9S12DP256的主频高达25 MHz;片上集成了许多标准模块,包括2个异步串行通信口SCI、3个同步串行通信口SPI、8通道输入捕捉/输出比较定时器、2个10位8通道A/D转换模块、1个8通道脉宽调制模块、49个独立数字I/O口(其中20个具有外部中断及唤醒功能)、兼容CAN2.0A/B协议的5个CAN模块以及1个内部IC总线模块;片内拥有256 KB的Flash EEPROM?12 KB的RAM、4 KB的EEPROM。这些丰富的内部资源和外部接口资源可以满足各种ECU数据的处理以及发送和接收。由于有多个CAN模块,所以非常适合做高低速网络之间的网关。

Motorola公司的系统级芯片(SBC)MC33989具有二个电源整流器,专为MCU和外围器件提供电源。这个智能化的半导体器件可以提供所有必需的系统电压,内部有一个低噪声的200 mA整流器用来给MCU子系统供电。另外,还有一个控制外部导通晶体管的装置用来给外围设备供电。这个外部导通晶体管允许调整二次电源,使之满足每种特殊应用所需的功耗极限要求。二次供电电源还能根据要求切断所选外围设备的供电,并以此达到降低功耗的目的。

除了提供系统电源外,SBC内部还集成了一个1 Mb的CAN收发器。该收发器具有主控状态超时检测、内部热保护以及CAN-H和CAN-L输入端短路保护等功能。收发器内部还对CAN-H和CAN-L输入端进行了跳启、电池反接以及短接至电源或地的保护。

4个高压唤醒输入端使器件具备了强大的唤醒功能。这些唤醒输入端的最大耐压能达40 V。输入端的上拉源能在芯片上产生。由于只需用上拉源就能随时检测开关输入的变化,因此能较好地降低功耗。该器件还具有周期性唤醒功能。另外,SBC还提供了针对MCU的复位调节与低压检测功能。

2.3 CAN节点的硬件电路设计

为了便于调试和演示,节点模块都包括CAN接口、RS232接口和液晶显示器。在调试过程中,液晶显示器用来将本地数据和通过CAN总线接收的数据直观地显示出来,RS232接口在需要的情况下可用来与PC机建立通信。

节点的核心芯片是微处理器MC9S12DP256,主要负责CAN的初始化,完成数据的处理及监控数据的传送。

图2中MC33989是CAN控制器与物理层总线之间的接口。该器件可以提供对总线的差分发送能力和差分接收能力,具有抗汽车环境下的瞬间干扰、保护总线的功能。除此之外,它还为MCU和外围器件提供电源。CAN节点原理框图如图2所示。

图2 CAN节点原理框图

2.4 CAN网关的硬件电路设计

网关的主要作用是协调各个网络之间数据的共享,负责各节点之间的通信,其硬件结构与CAN节点非常相似。由于它负责高速与低速网络之间的数据共享,所以,必须同时跨接在两个网络之间。CAN总线网关硬件框图如图3所示。

图3 CAN总线网关硬件框图

微处理器MC9S12DP256具有5个CAN模块,这里使用其中的两个:一个通过MC33989与低速网相连,实现与低速网的通信;另一个通过MC33989与高速网相连,实现高、低速网之间的通信以及对网络的管理。

2.5 CAN网络通信系统软件设计

本设计所需实现的功能是各节点发送接收数据,网关能实现数据的转换,实现高、低速网络之间的通信。在实验过程中,假设速率不同的两个网络,数据刷新周期分别为10 ms的低速网和5 ms的高速网。软件设计由KEIL C编写,主程序完成数据的处理和收发,中断程序负责数据的采集,主程序由CAN总线数据的收发、液晶显示控制、数据帧解析三部分构成。通过中断判断数据的接收或发送,根据高、低速的不同,每隔一段时间(5 ms或10 ms)发送一组新数据。通信程序流程如图4所示。

图4 通信程序流程结语

结语

为了充分发挥ECU在汽车控制中的作用,CAN通信网络为全局优化提供了条件。通过实验证明,CAN总线具有以下优点:① 组网自由,扩展性强;② 自动错误界定,简化了电控单元对通信的操作;③ 可根据数据内容确定优先权,解决通信的实时性问题。

此外,CAN网络还被众多工业控制系统采用,尤其是传输速率较高而且对实时性及可靠性要求高的场合,所以CAN总线将有广阔的应用前景。

 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 17:11:40 [4楼] 
呢称:zhangfanzhai
新手

积 分 0
注册2007-05-18
加我为好友
发 短 消 息
基于CAN总线的汽车仪表软件实现方案




目前存在多种汽车网络协议,CAN总线技术属于现场总线范畴,CAN是控制局域网络(Control Area Network)的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信,其纵向规范现已被ISO国际标准组织制订为国际标准,由于得到了Philip、Siemence、Motorola、Intel、Fusitu等公司的支持,它已成为国际上应用最广泛的现场总线。它有效支持分布式控制及实时控制,并采用了带优先级的CSMA/CD协议对总线进行仲裁。因此,CAN总线允许多站点同时发送,这样,既保证了信息处理的实时性,又使得CAN总线网络可以构成多主结构的系统,保证了系统的可靠性。另外,CAN采用短帧结构,且每帧信息都有校验及其他检错措施,保证了数据的实时性、低传输出错率。其传输介质可以使用双绞线、同轴电缆或光纤。

2、汽车仪表的发展及趋势

按汽车仪表在工作原理上取得的重大技术创新来分,可以划分为4个阶段,或称为经过4代。第1代汽车仪表是基于机械作用力而工作的机械式仪表,人们习惯称这类仪表为机械机心表;第2代汽车仪表的工作原理基于电测原理,即通过各类传感器将被测的非电量变换成电信号加以测量,通常称这类仪表为电气式仪表;第3代为模拟电路电子式;第4代为步进电动机式全数字汽车仪表。

随着计算机技术、电子技术、网络技术以及液晶现实技术的发展,汽车仪表的发展趋势将更加体现这些高新技术的结合。如仪表的功能由软件和硬件共同来完成仪表的功能由软件和硬件共同实现,而且主要是通过软件实现。这对于量大且对成本极为敏感的汽车仪表有特殊意义,因为软件的开发费用分摊到每个仪表上是非常少的。与仅由电子线路硬件组成的汽车仪表相比,带有ECU的汽车仪表,其功能的实现手段更加灵活多样。产品的“柔性”更好,即在推出新款产品时,能最大限度地利用以前产品的硬、软件设计成果仅做少量修改便可,这在产品更新换代很快的今天和未来特别重要。

3、基于CAN总线的汽车仪表设计方案

3.1 设计思想

本文利用车辆网络的优势,从CAN总线上采集汽车仪表面板所需要的数据,如车速、水温、燃油、里程等,经处理器处理后进行各种实时控制和显示。不是像传统的仪表面板那样,本设计用液晶显示屏动态显示所采集并用软件处理的数据。这样可以随时根据需要,由软件实现仪表面板的扩充。整体网络具有自诊断功能,降低系统的故障率,同时使用CAN总线方式使得整体系统工作更加及时、准确,提高了安全性、可靠性,更具有智能化和人性化。

由于本设计只是实验性研究以及各汽车总线数据编码的多样性,本设计自行开发了简单的ECU,用于采集车速、燃油、水温、里程等数据。然后由CAN总线通过CAN-PC接口卡接入PC机,再由软件编程来完成从CAN总线采集到的数据动态显示。这里用Visual Basic编程。系统共享娱乐系统、导航系统所用的计算机。作为实验性研究,可由笔记本电脑代替PC机。然后进行各项实验验证,如抗干扰、准确度、工作稳定性、振动的影响、温度的影响等。

3.2 系统硬件结构及所用器件

该测试系统由液晶显示器、PC-CAN接口卡、单片机、CAN控制器(SJA1000)、CAN总线发送/接收驱动器(PCA82C250)、和各数据采集系统组成。

专用液晶显示屏用来显示转速、机油压力、水温、燃油消耗等;PC机用来处理CAN总线上的数据并通过软件显示于显示屏上;PC-CAN接口卡完成PC机与CAN之间的通信;自行设计的ECU完成从各传感器采集数据,通过CAN收发器连于CAN总线上。其中的PC-CAN接口卡通过RS232接口或UAB与PC机相连,PC-CAN接口卡再通过总线与自行设计的ECU相连。在实际中PC-CAN接口卡与车辆CAN总线相连,可采集大量数据信息,从而随时可通过软件编程把这些信息在显示屏上动态显示出来。

3.3 系统的硬件设计

PC-CAN接口卡选用CAN232智能CAN接口卡,它适合CAN-bus的小流量数据传输应用,最高可达500帧/秒的数据传输速率,提供广泛和强大的软件支持。支持在VC++、C++Builder、Delphi和VB等开发环境下进行设计。该接口卡为用户提供了编程需要的三个文件:CAN232dll.DLL,CAN232dll.LIB,ExportHead.H。

CAN协议控制器选用SJA1000,它是Philips公司生产的适合汽车环境的独立CAN控制器,支持CAN2.0B协议。CAN发送/接收驱动器选用Philip公司的PCA82C250,它是CAN控制器和物理传输线路之间的接口,它可以用高达1Mbits/s的位速率在两条有差动电压的总线电缆上传输数据。

3.4 系统软件设计

CAN2.0的分层结构是按ISO/OSI模型对CAN结构的描述。数据链路层又分为逻辑链路层(LLC,Logical Link Control)和媒体访问控制(MAC,Medium Access Control)两个层。LLC层完成下列功能:为数据发送以及以及远层数据请求传送服务;判断是否接受接收到的数据;提供恢复管理和超载处理。

MAC层主要定义了传输协议,包括信息帧格式、仲裁方式、应答信号、错误检测、错误信令和故障限制等。

物理层实现节点间的物理信号的传送,主要定义网络的电气特性。CAN网络中可以采用多种不同的物理层协议。

本研究用VC编程语言实现汽车仪表数据的显示。PC—CAN接口卡自带三个文件CAN232dll.DLL,CAN232dll.LIB,ExportHead.H,其中ExportHead.H描述了动态链接库CAN232dll.DLL所定义的外部函数。如下所示,

void OpenSerialPort(int nPort,unsigned int Baud);
void CAN232Send(unsigned char*sdata,size_t Len);
void CAN232Setting(unsigned char*sdata,size_t Len);
char CAN232Receive(unsigned char*CANReceive);

将接口卡所带的三个文件拷贝在VC目录下,在VC菜单的PROJECT->SETTING中的LINK项下,填入CAN232dll.LIB。然后在程序的头文件中加入“#include ExportHead.H”。

4、结论

本研究只有一个CAN节点,所以显示器所显示的数据只有转速、机油压力、水温、燃油消耗,但是在实际的汽车网络中,通过编程我们可以动态获得CAN总线上的所有信息,并能够以友好的人机界面显示,使车辆信息对驾驶员或乘客透明化。所以基于CAN总线的汽车仪表软件实现是汽车仪表设计的一个新的尝试。


 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 20:25:10 [5楼] 
呢称:victor
新手

积 分 0
注册2007-05-18
加我为好友
发 短 消 息
学习学习
 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 22:05:56 [6楼] 
呢称:wlecust06
新手

积 分 0
注册2007-05-07
加我为好友
发 短 消 息
这些其实不用怎么介绍了 可以拿一些芯片来具体 介绍 下 连接电路什么的p82c250 p82c200寄存器设置的 p82c150编程工具什么 具体深入 不要像一些老师那样 夸夸而谈 其实他们不懂!
 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 22:08:11 [7楼] 
呢称:wlecust06
新手

积 分 0
注册2007-05-07
加我为好友
发 短 消 息
我有不了解 p82c200是 那些寄存器 值 是怎么设置 的
 
 [专题]CAN总线讨论专栏!  发表于 2007-06-01 22:11:59 [8楼] 
呢称:wlecust06
新手

积 分 0
注册2007-05-07
加我为好友
发 短 消 息
没说清楚 就是51我们都是用TOP2004把程序烧到 flash里面去 那个P82C200和sja1000兼容 那些寄存器值 又是怎么样写进去呢
我没进行过CAN开发 爱好学习者
 
 [专题]CAN总线讨论专栏!  发表于 2007-06-03 17:17:46 [9楼] 
呢称:小黑
助理工程师

积 分 117
注册2007-05-18
加我为好友
发 短 消 息
P82C200现在基本已经没人用了,初学的话学sja1000就好了.写的时候按照你的硬件设计确定好地址,然后就把它当作外括的存储器一样使用就可以了

 
 [专题]CAN总线讨论专栏!  发表于 2007-06-06 15:28:38 [10楼] 
呢称:lionpeak
新手

积 分 0
注册2007-06-06
加我为好友
发 短 消 息
现在SJA1000用得也不多了。很多公司都是把CAN控制哭和MCU集成在一个IC上。本人曾经设计过福特,大众一些车型的用CAN总线通讯的一些汽车电子零部件,大家可以相互讨论一下。
 
共63条 1/7 1 2 3 4 5 6 7 »   
   快速回复主题
  用户名: 匿名不能发帖!请先 [ 登陆 ]
  标 题:
  内 容:
 
  Copyright(C)2008 Electronic Design & Application World All rights reserved.  《电子设计应用》杂志社 版权所有
联系电话:(86)10-66421136 66421836 66423836   传真:(86)10-66423936   京ICP备05012822号