资源目录
压缩包内文档预览:(预览前20页/共43页)
编号:514342
类型:共享资源
大小:808.53KB
格式:ZIP
上传时间:2015-11-12
上传人:小***
认证信息
个人认证
林**(实名认证)
福建
IP属地:福建
30
积分
- 关 键 词:
-
汽车
can
总线
技术研究
毕业设计
- 资源描述:
-
汽车CAN总线技术研究毕业设计,汽车,can,总线,技术研究,毕业设计
- 内容简介:
-
汽车 CAN 总线技术研究摘要徐照平 学号:0101140132 1 概论本文针对正在迅速发展之中的汽车 CAN 总线技术进行了研究,对包括 CAN 总线的汽车电控系统研发的步骤、方法以及规律性等进行探索。自行设计、研制了一个典型的能实际运行的 CAN 总线汽车电控系统,包括 CAN 总线、电控单元以及控制元件(电机)等。本典型汽车 CAN 总线通信网络在实验室阶段工作稳定,控制准确,数据传输可靠。证明用单片机 P89C668,CAN 控制器 SJA1000 和 CAN 驱动器TJA1050 构成的 CAN 节点具有足够的实时性,稳定性和抗干扰能力,完全满足车上网络应用的需求。针对实际应用,提出了一个在摩托车中应用 CAN 技术的解决方案,分析了方案的特点及工作原理,定义了摩托车 CAN 总线应用层协议。解决了摩托车如何在电子装置不断增加的情况下,减少线束,降低电路开发成本成的问题 为我校本科教学中开设相关实验进行了准备,提出了具体的设想与方案。2 典型 CAN 系统设计本 CAN 总线汽车电控系统由三个节点组成,并通过控制器局域网(CAN-bus)连接起来,形成一个基于 CAN 总线的通信网络。图 1 系统方框图第一个 CAN 节点(node_1)是由计算机构成的控制平台,通过 CAN 总线设定电机的运行参数,并实时显示反馈的电机运行情况。制作 CAN 到 LPT 的转接卡,实现 CAN 总线接入计算机,编写总线驱动程序和低层的接口函数库,完成控制平台的应用程序。第二个 CAN 节点(node_1)和第三个 CAN 节点(node_3) 分别由 89C51 系列的单片机构成,保持与 node_1 的通信,根据 node_1 的要求实时监控一个直流电机,并反馈电机的运行情况,单片机通过 CAN 控制器和 CAN 驱动器接入 CAN 总线。完成 CAN 节点接口的硬件设计,制作了 PCB 板,焊接并完成调试,为 CAN 控制器编写正确的初始化程序,数据发送子程序和数据接收子程序。MCUNode_2ID:0202PCNode_1ID:0101MCUNode_3ID:0303CAN 总线驱动程序接口函数控制平台驱动器传感器电机2驱动器传感器电机3CAN-PCI转接卡CAN控制器驱动器CAN控制器驱动器对小型直流电机的速度控制采用 PWM 调速,控制平台接收操作人员给出的 PWM 的占空比,然后把含有占空比的控制信息发送给指定的节点。节点 MCU 接收到控制信息后,首先分析该控制信息的性质,然后根据控制信息做出相应的操作。当接收到含有占空比的控制信息,MCU 就改变输出的 PWM 信号的占空比,该 PWM 信号经放大后用来驱动电机,达到调速的目的。对 PWM 调速进行研究,完成 PWM 控制的硬件电路设计,制作了 PCB 板,焊接并完成调试,编写 PWM 控制程序。速度的测量使用霍尔效应传感器。霍尔效应传感器感应的电机的转动产生脉冲信号,经放大后送 MCU 计数,MCU 计数一秒得到电机的转速, MCU 把数据打包上传到 CAN 总线。node_1 从总线上接收到数据,控制平台实时显示。对传感器数据采集进行分析研究,编写测速单片机程序。 完成 CAN 网络应用层理论分析,并制定相应的应用层。本汽车 CAN 总线系统主要实现了四个数据通道:node_2 测量电机 2 的实时速度上传到 node_1;node_1 对电机 2 控制指令下传到 node_2; node_3 测量电机 3 的实时速度上传到 node_1;node_1 对电机 3 控制指令下传到 node_3。四个通道都是建立在 CAN 总线上。程序设计方法,基于 MCU 的 CAN 节点的程序设计采用前/后台系统,模块化设计方法。每一个功能让一个子程序完成,所以功能通过子程序调用。设计软件 Keil C51,使用C 语言完成。基于 PC 的 CAN 节点程序设计成 Windows 程序。驱动程序和接口函数库的编写使用C+语言编写,其中接口函数库生成动态链接库,供编写的 Windows 应用程序调用。应用程序使用 MFC 编程生成 Windows 应用程序。对本汽车 CAN 总线系统进行性能检测,通过系统性能检测发现潜在的缺陷,掌握系统性能参数。其测试网络如图 2,左边是本汽车 CAN 总线系统,右边增加一个测试节点,该节点上运行 ZLGCANTest 软件,监视整个网络。图 2 系统检测图3 摩托车 CAN 总线解决方案探讨了摩托车上 CAN 节点的数量,位置,和功能,定义了摩托车 CAN 总线应用层协议。整个系统四个 CAN 节点组成,每个 CAN 节点控制摩托车上的一个区域,并通过控制器局域网(CAN-bus)连接起来,形成一个基于 CAN 总线的通信网络。摩托车上的四个区域是这样划分的:仪表板区域,车头区域,车尾区域,座下区域。四个 CAN 节点物理上是对等,通过一个 CAN 总线连接起来。仪表板节点在车头节点Node_1Node_2Node_3CAN-BUS测试节点的上面,它在四个节点中具有特殊性,因为它是整个系统的人机界面,要负责接收和发送指令,控制仪表,显示系统信息,所以把仪表板节点用作控制中心,尽量让所有的信息都由他来发布和接收,简化系统的通信结构,提高系统的稳定性和再扩展能力。图 3 摩托车节点安排车头节点负责控制大灯,前转向灯,启动锁,发声轮,已及额外的温度传感器,冷却风扇,电喇叭等。座下节点安排在摩托车的中部,用来管理发动机的一些传感器(如:油量传感器,发动机温度传感器,油压传感器)和电子挡的循环等。最后,车尾节点负责控制车尾灯,传感器,转向灯等。对摩托车 CAN 总线应用层协议进行定义。摩托车 CAN 总线屏蔽码都设定为0000FFFF,即把后两个字节屏蔽掉另做它用。前两个字节用于识别,用节点的节点号的重复作为识别可以大大提高系统的稳定性。倒数第二个字节用作发送节点的节点号。最后一个字节只有高五位有效,用作指令。这样,当一帧的标识符为 01010210 时,说明:该帧是由 2 号节点发给 1 号节点的,指令信息为 10。还对摩托车 CAN 总线的系统参数进行了设定。4 总结本课题主要对包括 CAN 总线的汽车电控系统研发的步骤、方法以及规律性等进行深入探索。研制了一个典型的三节点 CAN 总线汽车电控网络,并对其进行了性能实验。主要解决了以下几个问题: 1 CAN 通信网络的结构设计,节点的安排,主要参数的选择和汽车通信网络的应用层协议制定的方法和步骤。2 基于 MCU 的 CAN 节点接口硬件电路设计方法, CAN 控制器的初始化程序设计,报文发送子程序的设计和报文接收子程序的设计。3 基于 PC 的 CAN 节点硬件电路设计方法,CAN 驱动程序设计,CAN 接口库函数设计和应用程序设计。4 探索了 CAN 总线系统检测方法,得出了 CAN 总线的重要性能参数。5 提出了 CAN 总线在摩托车上使用的方案和关于了 CAN 总线教学的建议。车尾节点车头节点仪表板节座下节点车尾节点坐下节点南 京 理 工 大 学学生毕业设计(论文)中期检查表学生姓名 徐照平 学 号 0101140132 指导教师 常思勤课题名称 汽车 CAN 总线技术研究难易程度 偏难 适中 偏易选题情况工作量 较大 合理 较小任务书 有 无开题报告 有 无符合规范化 的要求外文翻译质量 优 良 中 差学习态度、出勤情况 好 一般 差工作进度 快 按计划进行 慢中期工作汇报及解答问题情况优 良 中 差中期成绩评定: 优所在专业意见:负责人: 年 月 日毕 业 设 计(论 文)任 务 书1本毕业设计(论文)课题应达到的目的:毕业设计的基本教学目的是培养学生综合运用所学的基础理论、专业知识和基本技能,提高分析与解决工程实际问题的能力和初步科学研究的能力。CAN 总线技术是汽车产业中近年来发展十分迅速的一个技术领域,迫切需要对此开展研究。课题将通过学习与实践,对包括 CAN 总线的汽车电控系统研发的步骤、方法以及规律性等进行探索,并为我校本科教学中开设相关实验进行准备。2本毕业设计(论文)课题任务的内容和要求(包括原始数据、技术要求、工作要求等):要求自行设计、研制一个典型的汽车电控系统,包括 CAN 总线、电控单元以及控制元件(电机)等,最终应能实际运行。进一步应总结包括 CAN 总线的汽车电控系统研发的步骤、方法以及规律性等,并提出我校本科教学中开设相关实验的建议与设想。毕 业 设 计(论 文)任 务 书3对本毕业设计(论文)课题成果的要求包括图表、实物等硬件要求:完成符合要求的开题报告、外文文献翻译、毕业论文。完成能实际运行的电控系统。完成我校本科教学中开设相关实验的试验指导书初稿。4主要参考文献:1汽车工程手册 编辑委员会.汽车工程手册.北京:人民交通出版社,2001 2 庄继德.汽车电子控制系统工程.北京:北京理工大学出版社,19983 Mohsin M. Jamali, etc. A CAN Based Real-Time Embedded System for DC Motor Control. SAE Paper 2002-01-04444 F. Baronti, etc. Low-Cost CAN-Based Communication System for High-End Motor-Scooter. SAE Paper 2002-01-2154 毕 业 设 计(论 文)任 务 书5本毕业设计(论文)课题工作进度计划:起 迄 日 期 工 作 内 容第 4 周 第 5 周第 6 周 第 8 周第 9 周 第 13 周第 14 周 第 15 周第 16 周复习、补充有关基础知识,查阅资料,外文资料翻译,完成开题报告(包括文献综述) 。完成电控系统的方案设计,软件开发及硬件购置等工作。完成电控系统的调试、完善,以及编写有关技术文档。撰写毕业论文。准备及参加毕业论文答辩。所在专业审查意见:负责人: 年 月 日学院(系)意见:院(系)领导: 年 月 日 南 京 理 工 大 学毕业设计(论文)开题报告学 生 姓 名: 徐照平学 号:0101140132专 业 : 机械设计制造及其自动化设计 (论文 )题目 : 汽车 CAN 总线技术研究指 导 教 师 : 常思勤2005 年 3 月 18 日开题报告填写要求1开题报告(含“文献综述” )作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在专业审查后生效;2开题报告内容必须用黑墨水笔工整书写或按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见;3 “文献综述”应按论文的格式成文,并直接书写(或打印)在本开题报告第一栏目内,学生写文献综述的参考文献应不少于15 篇(不包括辞典、手册) ;4有关年月日等日期的填写,应当按照国标 GB/T 740894数据元和交换格式、信息交换、日期和时间表示法规定的要求,一律用阿拉伯数字书写。如“2004 年 3 月 15 日”或“2004-03-15”。毕 业 设 计(论 文)开 题 报 告1结合毕业设计(论文)课题情况,根据所查阅的文献资料,每人撰写2000 字左右的文献综述:文 献 综 述1 汽车上使用网络系统的必要性随着汽车电子技术的不断发展,汽车上的电子装置越来越多。较高档的汽车中,电子系统的成本已经超过总成本的 20%1,并且增长很快。汽车上新的技术增长点几乎无一不与电子技术和信息技术的相关。车上电子装置不断增加,使得连接这些装置的电子线路迅速膨胀,线束越来越复杂,布线就越来越困难,在汽车设计,装配,维修中的负担甚至到了无法忍受的程度;而且线路以及接头的增加是引起安全问题的巨大隐患。另外,线的质量和占用的空间也都成为值得考虑的问题。质量的增加意味着降低汽车的效率;线路直径太大,在相当运动部分过线非常的困难,如车窗的线束等。因此,在电子装置不断增加的情况下,减少线束成为一个必须要解决的问题。使用传统的点对点并行连接方法,显然无法摆脱这种困境,基于串行信息传输的网络结构成为一种必然的选择2 车上网络的发展现状汽车工程师协会(SAE)按照汽车上网络系统的发展,性能从底到高划分 A 级,B级,C 级,D 级网络1 。A 级网络主要应用于要求价格底,数据传输速度,实时性,可靠性要求较底的情况。如车身系统的门窗和后备箱网络系统,也可以作为一些传感器和执行器级别的底层局部连接总线使用。UART 就是典型的 A 级网络。现在,UART 在国外的汽车上已经很少使用。B 级网络用于对数据传输速度要求较高的系统,包括一些车身控制系统,仪表盘,底档的实时控制系统以及故障诊断系统等。典型的 B 级网络是 J1850;C 级网络主要用于可靠性和实时性要求较高的系统,如高档的发动机和动力传动系统的实时控制系统,线控系统等。CAN 就是典型的 C 级网络,也是国外现在被最广泛使用的一种车上网络,国内也有了少量的发展。D 级网络要求传输速度 1M 以上,现在还没有发展起来。3 车上 CAN 协议的发展现状3.1 CAN 网络基础协议当提到“CAN 标准”或“CAN 协议”时,我们需要理解 ISO 11898 标准中的功能性7 。这个标准包括由 ISO 参考模型的物理层(第一层)和数据链路层(第二层) ,没有规定应用层。现在,数据链路层有两种形式现在都被广泛使用,一种是具有 11 位ID 标识符的 BasicCAN,另一种是带有扩展成 29 位 ID 标识符的高级形式 PeliCAN,各使用者根据不同的要求有不同的选择。汽车上一般使用 BasicCAN,也有使用PeliCAN 的。3.2 CAN 网络高层协议(应用层)由于 CAN 也在非汽车自动化中被广泛使用,几乎同时产生了几个较高层协议和开放式系统方法。今天,DeviceNet15, CANopen10 和 SDS15 这三种基于 CAN 的开放式系统已经成熟其标准已经形成。这三个标准给人留下一个印象,那就是它们具有相同的功能性,虽然这三个标准采用的方法不尽相同,最明显的不同是信息标示符的使用。信息标示符的使用在 SDS 里是基于完整的预定义方式,而在 CANopen 里信息标示符的使用是向系统设计者或综合者保持开放,DeviceNet 的信息标示符的使用也自由但相对有些限制。现在,汽车上使用 DeviceNet 较多。4 CAN系统的组建方法4.1 CAN节点的组成CAN 节点主要由 CAN 控制器16,CAN 驱动器,单片机(或其它智能装置)组成。在使用 CAN 总线时,首先就要考虑使用什么样的 CAN 控制器。CAN 控制器有集成的和独立的两种形式,集成的 CAN 控制器成本底,速度快,可靠性高;独立的 CAN 控制器兼容性好,软件可以实用于其它系统,适应性强16。如:Bosch 公司就广泛使用集成的 CAN 控制器。4.2 常见的CAN网络结构网络结构对系统的特性有很大的影响,CAN 网络一般使用总线结构,所以 CAN 网络又称作 CAN 总线,CAN 总线又有多种连接方法。CAN 网络结构选择的原则是:在同样的硬件参数下,尽量提高网络的电磁兼容性。另外,为实现一些特定的要求,有时需要采用一些特殊结构,如无线连接,多终端的星形结构等1。5 CAN总线的应用现状CAN总线在国外已经被广泛的研究和接收,在国内也有一些的研究,主要集中在汽车行业和高等院校。1995年,北京航空航天大学的教授邬宽明指导他的研究生完成了一个CAN网络系统2,用于食堂刷卡机的连网,并且投入使用后获得了好评。在这之前类似的系统都是使用RS232进行通信的,其稳定性,传输速度和传送距离都不及CAN总线。2000年,浙江大学的葛林等三人写了一篇论文,关于CAN总线在汽车中的应用研究。研究了CAN总线的速度17,抗干扰性和通用性等问题。最后得出结论:CAN总线能够满足汽车的需要。2001年,吉林大学的程芳提出了一个车上控制系统CAN总线通信的实现方法18。采用SAEJ1939通信协议在载货车上实现了CAN通信,设计了ABS控制器和变速器控制器的各个数据的高层通信协议。2002年,江苏大学的刘惠等设计了一个基于CAN总线的客车后置发动机数据采集显示系统19 。该系统是汽车局域网CAN总线在现代客车上的具体应用,采用89C52单片机+SJA1000CAN控制节点为核心设计了基于CAN总线的客车后置发动机数据采集显示系统,系统利用单片机通过传感器对发动机的冷却水温、机油压力、转速、车速等信号进行采集,再用CAN总线传输所有信号,简化了汽车线束。文中还给出了数据采集通讯软件。同一年,中国人民解放军军事交通学院的赵慧敏,朱先民,王明国,赵方庚,姜丁,吴晓等,提出了一种评价CAN总线系统EMC的一种新方法20。介绍了评价汽车控制器局域网络CAN总线系统电磁兼容性EMC的基本标准,给出了单线CAN容错CAN和高速CAN等不同CAN总线系统的测试装置、评价标准及评价方法。同一年, Pisa 大学的F. Baronti, D. Lunardini, R. Roncella and R. Saletti等,写了一篇关于CAN总线在摩托车上应用的文章:Low-Cost CAN-Based Communication system for High-End Motor-Scooter6. 研究了廉价的CAN总线在摩托车上使用的可能性。6 CAN前景展望尽管 CAN 协议已经有 15 年的历史,但它仍处在改进之中。现在,CAN 在全球市场上仍然处于起始点,当得到重视时谁也无法预料 CAN 总线系统在下一个 10-15 年内的发展趋势。这里需要强调一个现实,近几年美国和远东的汽车厂商将会在他们所生产汽车的串行部件上使用 CAN 。另外大量潜在的新应用,例如娱乐,正在呈现。CAN不仅可用于客车,也可用于家庭消费。同时,结合高层协议应用的特殊保安系统对CAN 的需求也正在稳健增长。德国专业委员会 BIA 和德国安全标准权威 TV 已经对一些基于 CAN 的保安系统进行了认证,CANopen-Safety10 是第一个获得 BIA 许可的 CAN 解决方案。DeviceNet-Safety 也会马上跟进,全球分级协会的领导者之一Germanischer Lloyd 正在准备提议将 CANopen 固件应用于海事运输8 。参考文献:1 秦贵和.车上网络技术北京:机械工业出版社,20032 邬宽明.CAN 总线原理与应用系统设计.北京,北京航空航天大学出版社,19963 王练.CAN 在大众汽车中的应用.上海大众,20004 周立功.单片机与 TCP/IP 综合应用技术.广州周立功单片机发展有限公司,20035 Mohsin M. Jamali, etc. A CAN Based Real-time Embedded System for DC MotorControl. SAE Paper 2002-01-04446 F. Baronti, etc. Low-cost CAN-Based Communication System for High-End Motor-Scooter. SAE Paper 2002-01-21547 ISO-IS 11898, Road vehicles - Interchange of digital information - Controller Area Network (CAN) for high speed communication, 19938 Bosch, CAN specification, Version 2.0, 1991, Robert Bosch GmbH9 PHILIPS SJA1000 stand-alone CAN controller product specification 2000 Jan 0410 周立功. CANstarter-I 开发套件应用指南 V1.1,200311 饶运涛.现场总线 CAN 原理与应用技术.北京航空航天大学出版社,2003.6 12 广州周立功单片机发展有限公司.SJA1000 独立的 CAN 控制器,200313 周立功.单片机原理与应用设计.北京航空航天大学出版社,200114 黄维通.Visual C+面向对象与可视化程序设计.清化大学出版社,200315 CiA DS 201-207,CAN Application Layer for Industrial Applications, 199616 PHILIPS. SJA1000 stand-alone CAN controller product specification, 200017 葛林.CAN 通信网络在汽车中的应用研究.汽车技术,200018 程芳.车辆控制系统 CAN 总线通信的实施方法.汽车工程,2001.519 刘惠.基于 CAN 总线的客车后置发动机数据采集显示系统,车辆与动力技术,200220 赵慧敏,朱先民,王明国,赵方庚,姜丁,吴晓等,评价 CAN 总线系统 EMC 的一种新方法汽车电器,2001,第 7 期 毕 业 设 计(论 文)开 题 报 告本课题要研究或解决的问题和拟采用的研究手段(途径):1本课题要解决的问题:对汽车 CAN 总线技术进行研究。自行设计,研制一个典型的汽车电控系统,组建一个由三个 CAN 节点组成的 CAN 网络。第一个 CAN 节点作为控制中心,它检测所有的输入;接收第二个 CAN 节点的反馈信息并进行处理,系统有三个方面的输入: 速度控制,正转/反转, 转动/停止。第二个 CAN 节点根据第一个节点的指令控制一个马达,产生各种不同的控制信号;并且监听传感器的反馈信号,通过 CAN 总线反馈给第一个节点。第三个节点是以 PC 作为节点的控制器,用于监控整个 CAN 网络。主要要解决以下几个问题:1 熟悉 CAN 总线的传输协议。2 制作 CAN 节点电路板。3 选用合适的电机和传感器。4 编写 CAN 控制器的初始化程序。5 制定本网络的应用层协议。6 编写两个 MCU 节点的控制程序。7 编写 PC 节点的 Windows 应用程序。8 系统调试,并进行相关数据的测试。2本课题所拟采用的研究手段:学习,实验和创新相结合,首先学习相关的知识,可以获取广东周立功单片机有限公司的技术支持。使用 Keil 软件进行软件仿真,在实验板 CANstarter-1 上做演示,进行硬件仿真。最后完成所以程序,制作电路板完成整个系统。3通过本课题要完成的目的:1 综合运用本科四年所学的基础知识。2 提高自己分析与解决问题的能力,初步形成科学研究的能力。3 探索基于 CAN 总线的汽车电控系统的研发步骤,方法以及规律性。4 学习并掌握 CANstarter-1 实验仪和多种实验仪器的使用。5 学会使用 Protel 软件绘制电路图,完成电路图的设计和布线。6 学习并掌握 CAN 网络的组建,编写 MCU 控制程序。7 学习利用 MFC 编写 Windows 应用程序。毕 业 设 计(论 文)开 题 报 告指导教师意见:1对“文献综述”的评语:2对本课题的深度、广度及工作量的意见和对设计(论文)结果的预测:指导教师: 年 月 日所在专业审查意见:负责人: 年 月 日 目 次 1 绪论 41.1 汽车 CAN 总线技术的研究意义 41.2 汽车 CAN 总线技术的发展现状 41.3 本课题的主要研究内容和方法 62 CAN 总线系统总体方案设计 82.1 系统方框图 82.2 CAN 总线主要参数的选择 92.3 CAN 总线应用层的定义122.4 程序设计方法选择 123 基于单片机的 CAN 节点的 CAN 接口设计133.1 接口硬件设计 143.1.1 接口元器件选择153.1.2 接口电路图设计153.2 接口软件设计 153.2.1 初始化子程序的设计153.2.2 发送子程序的设计163.2.3 接收子程序的设计164 基于单片机的 CAN 节点的功能部分设计184.1 功能部分硬件设计 184.1.1 元器件的选择 184.1.2 电路图的设计 184.2 功能部分软件设计 194.2.1 PWM 调速软件设计194.2.2 计数测速软件设计 195 基于 PC 机的 CAN 节点的设计215.1 LPT-CAN 接口卡 215.2 接口函数库215.3 应用软件的 MFC 设计 216 系统构建与性能检测236.1 系统构建和调试 236.2 系统性能检测247 汽车车身 CAN 解决的方案268 摩托车 CAN 总线解决方案289 CAN 总线本科教学建议30结论 31致谢 32参考文献34附录 A 节点电路图 36附录 B 部分源码 37附录 C 系统调试 411 绪论1.1 汽车 CAN 总线技术研究的意义随着汽车电子技术的不断发展,汽车上的电子装置越来越多。较高档的汽车中,电子系统的成本已经超过总成本的 20%,并且增长很快。汽车上新的技术增长点几乎无一不与电子技术和信息技术的相关。车上电子装置不断增加,使得连接这些装置的电子线路迅速膨胀,线束越来越复杂,布线就越来越困难,在汽车设计,装配,维修中的负担甚至到了无法忍受的程度;而且线路以及接头的增加是引起安全问题的巨大隐患。另外,线的质量和占用的空间也都成为值得考虑的问题。质量的增加意味着降低汽车的效率;线路直径太大,在相当运动部分过线非常的困难,如车窗的线束等。因此,在电子装置不断增加的情况下,减少线束成为一个必须要解决的问题。使用传统的点对点并行连接方法,显然无法摆脱这种困境,基于串行信息传输的网络结构成为一种必然的选择。众多国际知名汽车公司早在 80 年代就积极致力于汽车网络技术的研究以及应用。而我国目前对汽车网络技术的应用研究还处于起步阶段。为缩短同国外汽车技术水平的差距,提高自身的竞争力,单靠技术引进不利于长期发展。消化,吸收,研究,开发自己的汽车网络技术势在必行。本课题正是对汽车 CAN 总线技术进行深入的研究,通过设计一个典型的基于 CAN总线的车上通信网络, 对包括 CAN 总线的汽车电控系统研发的步骤、方法以及规律性等进行探索。1.2 汽车 CAN 总线技术的发展现状汽车 CAN 总线技术又称为汽车 CAN 网络技术。汽车网络已经经历了大约二十年的发展,汽车工程师协会(SAE)按照汽车网络系统的性能,从底到高划分 A 级,B 级, C 级, D 级网络。A 级网络产生最早,主要应用于要求价格底,数据传输速度,实时性,可靠性要求较低的情况。如车身系统的门窗和后备箱网络系统,也可以作为一些传感器和执行器级别的底层局部连接总线使用。UART 就是典型的 A 级网络。B 级网络用于对数据传输速度要求较高的系统,包括一些车身控制系统,仪表盘,低档的实时控制系统以及故障诊断系统等。典型的 B 级网络是 J1850。C 级网络主要用于可靠性和实时性要求较高的系统,如高档的发动机和动力传动系统的实时控制系统,线控系统等。CAN2.0 就是典型的 C 级网络。CAN 全称为 Controller Area Network, 即控制器局域网,是国际上应用最广泛的现场总线之一,最初 CAN 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置 ECU 之间交换信息形成汽车电子控制网络。比如:发动机管理系统,变速箱控制器,仪表装备,电子主干系统中,均嵌入 CAN 控制装置。汽车要求安全、使用方便、操作不能太复杂、对价格敏感、性能可靠;汽车又是应用环境最差的设备,所以可能的道路、电磁以及气候环境几乎都可以遇到。专门为汽车设计的 CAN 总线当然是最理想的汽车总线选择,CAN 总线主要具有以下的优点:1)高速串行数据接口功能。CAN 支持从几千到 1Mbps 的数据传输速度。2)使用廉价物理介质,CAN 可以使用屏蔽或非屏蔽的双胶线,同轴电缆以及光纤作为网线。3)数据帧短,短的数据帧利于减小延时,提高实时性;但降低可有效数据传输速度。4)反应速度快,发送时不需要等待令牌,对请求反应迅速。5)多站同时发送,优先数据获取总线。6)错误检测和校正能力强,保证系统的可靠性。7)无破坏基于优先权的仲裁。8)通过接收过滤的方式实现多地址帧传送。9)具有远程数据请求功能。10)具有全系统数据兼容性。11)具有丢失仲裁或出错的帧自动重发的功能。当提到 CAN 时,我们需要理解 ISO 11898 标准中的功能性7。这个标准包括由 ISO 参考模型的物理层(第一层)和数据链路层(第二层) ,没有规定应用层。现在,数据链路层有两种形式现在都被广泛使用,一种是具有 11 位 ID 标识符的BasicCAN,另一种是带有扩展成 29 位 ID 标识符的高级形式 PeliCAN,各使用者根据不同的要求有不同的选择。由于 CAN 也在非汽车自动化中被广泛使用,几乎同时产生了几个较高层协议和开放式系统方法。今天,DeviceNet15, CANopen10 和 SDS15 这三种基于CAN 的开放式系统已经成熟其标准已经形成。这三个标准给人留下一个印象,那就是它们具有相同的功能性,虽然这三个标准采用的方法不尽相同,最明显的不同是信息标示符的使用。信息标示符的使用在 SDS 里是基于完整的预定义方式,而在CANopen 里信息标示符的使用是向系统设计者或综合者保持开放,DeviceNet 的信息标示符的使用也自由但相对有些限制。尽管 CAN 协议已经有 15 年的历史,但它仍处在改进之中。现在,CAN 在全球市场上仍然处于起始点,当得到重视时谁也无法预料 CAN 总线系统在下一个 10-15 年内的发展趋势。需要强调的一个现实,近几年美国和欧洲的汽车厂商将会在他们所生产汽车的串行部件上使用 CAN 。1.3 本课题的主要研究内容和方法本课题要对汽车 CAN 总线技术进行研究。自行设计,研制一个典型的汽车电控系统,组建一个由三个 CAN 节点组成的 CAN 网络。第一个 CAN 节点是由计算机构成的控制平台,通过 CAN 总线设定电机的运行参数,并实时显示反馈的电机运行情况。第二个 CAN 节点和第三个 CAN 节点分别由 89C51 系列的单片机构成,保持与 node_1的通信,根据 node_1 的要求实时监控一个直流电机,并反馈电机的运行情况。 完成系统的详细设计,各个节点的电气图,程序的流程图和所有源代码(所有硬件和软件都需采用模块化的设计思想,提高其可移植性,为后续研究做好准备)。完成系统的搭建且调试通过,并进行系统性能检测。针对实际应用,提出一个在摩托车中应用 CAN 技术的解决方案,分析方案的特点及工作原理,并完成初步设计。最后提出关于 CAN 总线本科教学的建议。本课题按照下列步骤进行研究:复习有关基础知识,主要包括:数电、模电、数控、PC 原理、MCU 原理、C 语言、DDK/WDM、MFC 等。补充学习未掌握的知识,主要是学习车上网络和 CAN 总线协议。通过查找并整理资料,进一步了解车上电控系统和 CAN 总线网络的构建,主要包括电控系统的组建,CAN 总线的组建,CAN 总线的初始化,电机的 PWM 调速和转速测量,设备驱动程序的编写,UI 的设计等等。在对相关知识全面掌握的基础上,借鉴现有的相关应用,并结合新的技术水平,完成系统的总体方案设计,绘制系统方框图。通过查相关资料确定出所需要的硬件,通过调研确定硬件的购置(包括购买地址和价格的确定),以此为依据完成硬件电路的设计,绘制出系统电路图。在硬件的基础上,完成软件和用户界面的设计。然后完成系统的调试和改进,并进行系统性能检测。最后编写出相关文档,完成毕业设计说明书的撰写,总结汽车 CAN 总线网络的开发方法,步骤和规则性。2 总体方案设计2.1 系统方框图虽然汽车电控系统是一个相当复杂的系统,但主要是用来进行通信和参数共享的,所以对一个三节点典型系统的研究可以说明问题。本汽车 CAN 总线系统由三个节点(至少三个节点才能说明通信网络的正确性)组成,并通过控制器局域网(CAN-bus)连接起来,形成一个基于 CAN 总线的通信网络。第一个 CAN 节点(node_1)是由计算机构成的控制平台,通过 CAN 总线设定电机的运行参数,并实时显示反馈的电机运行情况。首先制作一块 CAN 到 LPT 的转接卡,实现CAN 总线接入计算机,然后编写总线驱动程序和低层的接口函数库,最后完成控制平台的应用程序。第二个 CAN 节点(node_1)和第三个 CAN 节点(node_3) 分别由 89C51 系列的单片机构成,保持与 node_1 的通信,根据 node_1 的要求实时监控一个直流电机,并反馈电机的运行情况。单片机通过 CAN 控制器和 CAN 驱动器接入 CAN 总线,要为 CAN 控制器编写正确的初始化程序。图 2-1 系统方框图对小型直流电机的速度控制采用 PWM 调速,控制平台接收操作人员给出的 PWM 的占空比,然后把含有占空比的控制信息发送给指定的节点。节点 MCU 接收到控制信MCUNode_2ID:0202PCNode_1ID:0101MCUNode_3ID:0303CAN 总线驱动程序接口函数控制平台驱动器传感器电机2驱动器传感器电机3CAN-PCI转接卡CAN控制器驱动器CAN控制器驱动器息后,首先分析该控制信息的性质,然后根据控制信息做出相应的操作。当接收到含有占空比的控制信息,MCU 就改变输出的 PWM 信号的占空比,该 PWM 信号经放大后用来驱动电机,达到调速的目的。速度的测量使用霍尔效应传感器。霍尔效应传感器感应的电机的转动产生脉冲信号,经放大后送 MCU 计数,MCU 计数一秒得到电机的转速, MCU 把数据打包上传到CAN 总线。node_1 从总线上接收到数据,控制平台实时显示,系统方框如图 2-1 所示。2.2 CAN 总线主要参数的选择对 CAN 总线的参数进行选择,首先要了解 CAN 总线的网络协议。当提到“CAN 标准”或“CAN 协议”,我们需要理解 ISO 11898 标准中1和2各自的功能性。这个标准包括由 ISO 参考模型的物理层(第一层)和数据链路层(第二层)。其中,第一层负责譬如物理信号传输,译码,位时序和位同步等的功能,而第二层负责像总线仲裁,信息分段以及数据安全,数据确认,错误检测,信号传输和错误控制的功能。CAN 标准没有规定媒体的连接单元以及其驻留媒体,也没有规定应用层。图 2-2 CAN 节点的构成物理层定义了物理数据在总线上各节点间的传输过程.设计一个 CAN 网络,物理层有很大的选择余地,但必须保证 CAN 总线的非破坏性仲裁,即出现竞争时有高优先权标识符的数据获取仲裁的原则;所以要求物理层必须支持 CAN 总线中隐性位(高控制线 地址线 数据线TX RX CAN-H CAN-L 节点微控制器CAN 控制器CAN 驱动器电平 1)和显性位(底电平 0)的状态特征,显性位的发送会覆盖隐性位的状态。当两个节点同时发送信息的时候先出现底电平的数据获得仲裁。从物理结构上看,一个 CAN 接点的构成如图 2-2。CAN 总线的数据链路层是 CAN 协议的核心内容,它定义了四种不同的信息帧:数据帧,远程帧,错误帧,超载帧。其中数据帧是最重要的,如图 3 所示。起始域为一个显性位(0),当总线空闲时,一个隐性到显性的变化表示一个帧的开始,进行硬同步。标识符有 29 位和 11 位两种,11 位的是标准 CAN 格式,19 位的是扩展 CAN格式。我们选择 29 位的是扩展 CAN 格式。RTR 为远程传送请求位。控制域给出要传送的数据的长度,最多 8 个字节。数据域给出要传送的数据。接收数据的节点在应答域给出应答(一个显性位 0),表示正确接收到了数据。如果没有节点在应答域给出应答,就表示数据发送错误,发送数据的节点会重发该帧。7 个连续的隐性位表示帧结束。表 2-1 数据帧格式CAN 总线的传输层是由物理层和数据链路层共同决定的。CAN 总线上的信息以一定的格式发送,当总线空闲时,任何网上节点都可以发送信息,要发送的信息有特征标识符,信息以广播的方式发送,所有的节点都可以接收。节点接收到一帧数据后通过标识符判定是否接收这个信息。不同的 CAN 系统可以有不同的数据传送速率,但同一网络的节点传输速度必须一致。我们选择最高的波特率 1Mbps。理论上 CAN 总线上的节点没有数量的限制,而实际应用中受限于总线上的数据延时和电气负载能力。CAN 使用广播信息发送,各节点采用验收码和屏蔽码组合的方法来决定是否接收某一个数据帧。除去屏蔽码屏蔽掉的位外,当某个帧的发送标识符和验收码一致时,该数据被接收。本设计屏蔽码都设定为 0000FFFF,即把后两个字节屏蔽掉另做它用。前两个字节用于识别,用节点的节点号的重复作为识别可以大大提高系统的稳定性。倒数第二个字节用作发送节点的节点号。最后一个字节只有高五位有效,用作指令。这样,当一帧的标识符为 01010210 时,说明:该帧是由 2 号节点发给 1 号节点的,指令信息为 01。帧起始 标识符 RTR 控制域 数据域 CRC 校验 应答域 帧结束根据分析,结合本汽车 CAN 总线系统设计的内容和目的, CAN 总线的重要参数,标识符和数据域的选择和分配如表 2-2。表 2-2 系统参数项目 Node_1 Node_2 Node_3帧格式 扩展帧 扩展帧 扩展帧发送格式 正常发送 正常发送 正常发送滤波方式 单滤波 单滤波 单滤波波特率 1Mbps 1Mbps 1Mbps验收码 01010000 02020000 03030000屏蔽码 0000FFFF 0000FFFF 0000FFFF发送帧类型 数据帧 数据帧 数据帧发送标识符 020201XX 010102XX 010103XX发送数据 0 PWM 占空比 速度 L 速度 L发送数据 1 未用 速度 H 速度 H2.3 CAN 总线应用层的定义Node_2Node_1 Node_3总线实时速度显示 2电机速度控制 2实时速度显示 3电机速度控制 3速度测量PWM调速速度测量PWM调速通道 1 node_2测量的实时速度数据上传到node_1;node_1 对电机二的控制指令下传到node_2;通道 2通道 3通道 4 图 2-3 系统功能图 从应用层的角度来看,本汽车 CAN 总线系统主要实现如图 2-3 所示的四个数据通道:node_2 测量电机 2 的实时速度上传到 node_1;node_1 对电机 2 控制指令下传到 node_2; node_3 测量电机 3 的实时速度上传到 node_1;node_1 对电机 3 控制指令下传到 node_3。四个通道都是建立在 CAN 总线上,因为 CAN 总线是一种对等总线(不像 RS-232 或者 USB2.0 是主从总线),上传和下传只是相对的。在通道 1 上,每一秒钟 node_2 上传一次测量的电机 2 的实时速度到 node_1,发送标识符 01010200(表示由 node_2 发送到 node_1,指令为 00),含有两个字节的数据,data0 是电机 2 的实时速度的底字节,data1 是电机 2 的实时速度的高字节。Node_1 采用查询方式(使用一个进程)接收数据并显示电机 2 的实时速度。在通道 2 上,控制指令的传输是事件触发的,当操作人员有指令的时候,node_1 就会实时的把它下传到 node_2,发送标识符 02020100(表示由 node_1 发送到 node_2,指令为 00),含有一个字节的数据 data0。data0 是 PWM 的占空比,范围 1 到 255。node_2 采用中断方式(外部中断 1,interrupt0)接收数据,并改变电机的占空比,从而改变电机 2 的速度。在通道 3 上,每一秒钟 node_3 上传一次测量的电机 3 的实时速度到 node_1,发送标识符 01010300(表示由 node_3 发送到 node_1,指令为 00),含有两个字节的数据,data0 是电机 3 的实时速度的底字节,data1 是电机 3 的实时速度的高字节。Node_1 采用查询方式(使用一个进程)接收数据并显示电机 3 的实时速度。在通道 4 上,控制指令的传输是事件触发的,当操作人员有指令的时候,node_1 就会实时的把它下传到 node_3,发送标识符 03030100(表示由 node_1 发送到 node_2,指令为 00),含有一个字节的数据 data0。data0 是 PWM 的占空比,范围 1 到 255。node_3 采用中断方式(外部中断 1,interrupt0)接收数据,并改变电机的占空比,从而改变电机 3 的速度。2.4 程序设计方法选择基于 MCU 的 CAN 节点的程序设计采用前/后台系统,模块化设计方法。每一个功能让一个子程序完成,所以功能通过子程序调用。设计软件 Keil C51,使用 C 语言完成。基于 PC 的 CAN 节点程序设计成 Windows 程序。驱动程序和接口函数库的编写使用 C+语言编写,其中接口函数库生成动态链接库,供编写的 Windows 应用程序调用。应用程序使用 MFC 编程生成 Windows 应用程序。3 基于单片机的 CAN 节点的接口设计3.1 接口硬件设计3.1.1 接口元器件选择基于 MCU 的 CAN 总线智能节点由四部分组成:单片机,CAN 控制器,CAN 驱动器和高速光电耦合器。主要考虑到 CAN 总线是车载的,其抗干扰和稳定性要求都很高。所以在 CAN 总线通信接口中采用 PHILIPS 公司的 SJA1000 和 TJA1050 芯片。SJA1000 是独立 CAN 控制器,TJA1050 为高性能 CAN 总线收发器(总线驱动器)。基于 MCU 的 CAN 总线智能节点采用 P89C668 作为节点的微处理器,高速光电耦合器选用 6N137。P89C668 是增强型 80C51 系列的单片机。P89C668 单片机内带 64KB Flash 存储器,该存储器既可并行编程也可以串行在系统编程(ISP)。在 Boot ROM 程序中可通过一个默认的串行下载器 UART 对 Flash 存储器作 ISP 编程,而在 Flash 代码区中并不需要有调用下载器的代码。用户程序可通过调用在 Boot ROM 中的标准子程序对 Flash 存储器擦写和再编程即 IAP。该器件在 6 个时钟周期内执行一条指令,是传统的 80C51 的两倍。该器件用 advanced CMOS 工艺制造是 80C51 单片机家族的衍生品其指令集和 80C51 相同。该器件有四个 8 位 I/O 口,三个 16 位定时器/计数器,多中断源,四个优选级,可嵌套中断结构,一个增强型 UART 和片内振荡器以及时序电路。P89C668 新增特性使其成为一个功能强大的单片机,为某些应用提供 PWM ,高速的 I/O 和加/减计数,如汽车控制。此外,选择 P89C668 主要基于以下几个原因:它使用 Flash 存储器,ISP 编程和 IAP 编程,开发方便快捷;其 64KB 的程序存储器和 8KB 的数据存储器足够我们的需求,无须外部扩展;其功能强大,提供 PWM,符合系统的要求。SJA1000 是一个独立的 CAN 控制器,它在汽车和普通的工业应用上有先进的特征。特别适合于轿车内的电子模块传感器,制动器的连接和通用工业应用中。特别是系统优化,系统诊断和系统维护时特别重要。SJA1000 它是 PHILIPS 半导体PCA82C200 CAN 控制器 BasicCAN 的替代产品而且它增加了一种新的工作模式PeliCAN ,这种模式支持具有很多新特性的 CAN 2.0B 协议。总之,SJA1000 是车上专用的 CAN 控制器,起稳定性和抗干扰能力很好。TJA1050 高速 CAN 收发器是控制器局域网 CAN 控制器和物理总线之间的接口。它主要有以下特征:与“ISO 11898”标准完全兼容;速度高(最高可达 1M 波特);低电磁辐射(EME);可抗电磁干扰(EMI);没有上电的节点不会对总线造成干扰;热保护;可以连接至少 110 个节点。3.1.1 接口总体设计综上所述,接口电路主要由四部分所构成,微控制器 89C668, 独立 CAN 控制器SJA1000,CAN 总线收发器 TJA1050 和高速光电耦合器 6N137。微处理器 89C668 负责 SJA1000 的初始化通过控制 SJA1000 实现数据的接收和发送等通信任务。SJA1000 的 AD0-AD7 连接到 89C668 的 P0 口,CS 连接到 89C668 的 P2.0。P2.0 为 0 时, CPU 片外存贮器地址可选中 SJA1000,CPU 通过这些地址可对 SJA1000 执行相应的读写操作。SJA1000 的 RD,WR,ALE 分别与 89C668 的对应引脚相连。INT 接 89C668 的 0INT。 89C668 也可通过中断方式访问 SJA1000,本汽车 CAN 总线系统所使用的就是这种方式。为了增强 CAN 总线节点的抗干扰能力,SJA1000 的 TX0 和 RXO 并不是直接与SJA1000 的 TXD 和 RXD 相连,而是通过高速光耦 6N137 后与 SJA1000 相连。这样就很好的实现了总线上各 CAN 节点间的电气隔离。不过应该特别说明的一点是光耦部分电路所采用的两个电源 VCC 和 VDD 必须完全隔离否则采用光耦也就失去了意义。电源的完全隔离采用小功率电源隔离模块实现。这些部分虽然增加了节点的复杂但是却提高了节点的稳定性和安全性。TJA1000 与 CAN 总线的接口部分也采用了一定的安全和抗干扰措施,TJA1000 的 CANH 和 CANL 引脚各自通过一个阻值为 5 的电阻与 CAN 总线相连。电阻可起到一定的限流作用,保护 TJA1000 免受过流的冲击。CANH 和 CANL 与地之间并联了两个30P 的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。另外在两根 CAN 总线接入端与地之间分别反接了一个保护二极管,当 CAN 总线有较高的负电压时通过二极管的短路可起到一定的过压保护作用。图3-1 CAN接口电路图3.1.2 接口电路图根据总体设计思想和选择的芯片,使用绘图软件 Protel 绘制基于 MCU 的 CAN节点 CAN 总线接电路原理图,如图 3-1。3.2 接口软件设计CAN 总线节点的软件设计包括三大部分:CAN 节点初始化,报文发送和报文接收。有了这三个部分程序的设计就能编写出利用 CAN 总线进行通信的一般应用程序。要将 CAN 总线应用于通信任务比较复杂的系统中,需详细了解有关 CAN 总线错误处理,总线脱离处理,接收滤波处理,波特率参数设置和自动检测,以及CAN 总线通信距离和节点数的计算等方面的内容。3.2.1 初始化子程序设计图 3-2 初始化子程序流程图SJA1000 的初始化只有在复位模式下才可以进行,初始化主要包括:工作方式的设置,接收滤波方式的设置,接收屏蔽寄存器 AMR 和接收代码寄存器 ACR 的设置,波特率参数设置,中断允许寄存器 IER 的设置,等等。在完成 SJA1000 的初始化设置以后 SJA1000 就可以回到工作状态,进行正常的通信任务。图 3-2 提供了SJA1000 初始化的流程图。在已经具有基本流程图的前提下,整个初始化程序就可以轻松编写源代码了,其具体程序见附录 B。3.2.2 报文发送子程序设计进行完初始化程序后,CAN 器件便能进行正常的 CAN 报文发送和接收了。发送子程序负责节点报文的发送。发送时,用户将待发送的数据按 CAN 报文的格式组合成一帧报文送入 SJA1000 发送缓存区中,然后启动 SJA1000 相应的发送命令。在往 SJA1000 发送缓存区送报文之前,必须先作判断。发送程序可以发送 CAN 报文的远程帧和数据帧。远程帧与数据帧相比无数据场,掌握数据帧的发送就能掌握远程帧的发送。下面就以发送数据帧为例进行分析。图 3-3 提供了报文发送子程序的流程分析,具体的程序实现见附录 B。图 3-3 报文发送子程序流程图3.2.3 报文接收子程序设计CAN 控制器收到的报文是存放在接收缓冲区。接收子程序负责读取接收缓冲区的值以及其它情况处理。报文的接收可以使用查询方式和中断方式。两者在思路上相似,不过采用中断方式进行接收,在实时性方面要大大优于查询方式。本汽车CAN 总线系统使用的是中断方式接收报文。图 3-4 提供了报文接收子程序的流程分析,具体的程序实现见附录 B。图 3-4:报文接受子程序流程图从流程图可以看出,在确定 CAN 节点的接收缓冲区有接收数据后,读取接收缓冲区的数据并保存,然后释放接收缓冲区。4 基于单片机的 CAN 节点的功能部分设计4.1 功能部分硬件电路的设计4.1.1 元器件的选择基于单片机的功能部分包括两块,PWM 调速和霍尔效应传感器测量转速。MCU 根据要求输出 PWM 信号,MCU 输出的 PWM 信号大约只有 200uA,该 PWM信号经放大后用来驱动一个 5 伏,200mA 的电机。选择 ULN200A 作为放大器件。霍尔效应接近开关感应到的电机的转动,产生脉冲信号,该脉冲信号经过经光电耦合后无须放大直接送给 MCU 计数,MCU 计数一秒得到电机的转速。霍尔接近开关选用 HKK5002C,光电耦合器使用 TLP512。ULN2003A 是耐高压,高集成度的达林顿管(Darlington)阵列,每片由七个 NPN 型的 Darlington 组成,并且共用一个续流二极管。 工作电压 5 伏时,一个Darlington 的集电级额定电流是 500mA,并且 Darlington 可以进行并联。HKK5002C 是 HK 系列的霍尔接近开关,它是一种用磁场讯号来驱动的新型自动开关。其工作电压 5 伏,负载电流 20mA,工作距离 5mm,最高响应频率50KHZ,足够用来测量直流电机转速。4.1.2 电路图的设计单片机使用 P1.3 口产生 PWM 信号,PWM 出来后接到 ULN2003A 的 7B 口(使用第七个达林顿管)进行放大,经过放大后从 7C 口输出驱动电机,ULA2003A的 COM 口接 9 伏电源。霍尔接近开关使用 5 伏电源 VCC,输出的信号经过一个 390欧的限流电阻后,接到 TLP512 的 9 端,经过光电耦合后,经过一个 390 欧的上拉电阻接到 MCU 的 P3.5 进行计数。390 欧的上拉电阻的电源使用信号源(VCC 电源必须先经过一个电源转换器 B0505),以达到完全的隔离。电路图见附录 A,图 4-1 只给出框图:P1.3图4-1 功能电路方框图MCUULA2003A 电机HKK5002CTLP512 390 欧B0505390 欧 4.2 功能部分软件的设计CAN 节点 node_2 和 node_3 功能部分的软件设计完全相同,包括两大部分:PWM 调速软件设计和计数测速的软件设计。4.2.1 PWM调速软件设计PWM 调速的软件设计,主要利用中断方式接收 CAN 总线上的调速指令,根据指令设置 P89C668 的可编程计数器阵列 PCA。程序源码见附录 B,图 4-2 为 PWM调速软件设计流程图。图4-2 PWM调速软件设计4.2.2 计数测速软件设计计数测速的软件设计,首先让定时/计数器 T1 工作于 16 位计数,计数 P3.5 口的霍尔接近开关的方波信号。定时/计数器 T2 工作于 16 位常数自动再装入方式,产生 25ms 的计时。每 25ms 会产生一次中断(interrupt 7) ,中断服务子程序中的一个全局变量会加 1,计数 40 个 25ms 就是 1s,每 1s 读出 T1 计数器的值(即转速) ,并清零。程序源码见附录 B,图 4-3 为 PWM 调速软件设计流程图。 NY图4-3 计数测速的软件流程 T1 初试化设定工作方式16 位计数清零完成初始化T2 初始化设定工作方式16 位计时设定计数初值设定中断禁止 设定中断允许启动 启动完成初始化中断服务入口清中断标志计数值 time 加 11ST2 停止计数读计数值到发送缓冲区Data=0,重新开始中断出口 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 页 共 42 页5 基于 PC 机的 CAN 节点的设计基于 PC 机的 CAN 节点(node_1)的设计,首先制作一块 CAN 到 LPT 的转接卡,实现 CAN 总线接入计算机。然后编写总线驱动程序和低层的接口函数库,最后完成控制平台应用程序。为了缩短项目的开发周期,选用广州周立功单片机发展有限公司的 CANmini 微型 CAN 接口卡,驱动和接口函数库,此基础上设计本系统的 UI应用程序。5.1 LPT-CAN接口卡CANmini 微型 CAN 接口卡是一款便携式 CAN 总线通讯适配卡,通过计算机并行接口,使 PC 机方便地连接到 CAN 总线,实现 CAN2.0B(A )协议的数据通讯。CANmini 微型 CAN 接口卡能自动检测系统中可用的并口资源,采用 EPP 传输模式及中断机制实现接收/发送,更快的传输速率、更低的计算机 CPU 资源占用。CANmini 硬件小巧,直接插在计算机的 LPT 上即可使用,软件使用通用的 ZLGVCI 驱动程序接口。 5.2 接口函数库在接口函数库里,定义了 4 个数据结构,14 个接口函数,应用程序通过调用他们来对 CAN 总线进行操作。接口库函数使用,首先,把库函数文件都放在工作目录下。总共有三个文件 ControlCAN.h ,ControlCAN.lib ,ControlCAN.dll 和一个文件夹 kerneldlls。然后,VC+ 调用动态库,在.CPP 中包含 ControlCAN.h 头文件;在工程文件中加入 ControlCAN.lib 文件。这 14 个函数分别是:打开设备函数;关闭设备函数;初始化 CAN 函数;读取设备信息函数;获取错误信息函数;读取 CAN 状态函数;读取设备参数函数;设置设备参数函数;返回缓冲区未读取的帧数函数;清空指定缓冲区函数;启动 CAN 函数;复位 CAN 函数;发送数据函数和接收数据函数。5.3 应用软件的MFC设计根据 2.3 节对本 CAN 总线系统应用层的定义,在接口函数库的基础上编写Windows 应用程序。在 VC+中使用 MFC 应用程序向导建立一个工程项目名为node-1 的基本对话框项目,并把库函数文件都放在工作目录下。总共有三个文件ControlCAN.h ,ControlCAN.lib,ControlCAN.dll 和一个文件夹 kerneldlls。在.CPP 中包含 ControlCAN.h 头文件;在工程文件中加入 ControlCAN.lib 文件。制作如图 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 页 共 42 页5-2 的应用程序主窗口。图5-1 接口函数使用流程 读取设备信息函数获取错误信息函数数读取CAN 状态函数数读取设备参数函数数读取设备信息函数打开设备函数初始化CAN函数启动 CAN 函数设置设备参数函数数返回未读取数函数关闭设备函数复位CAN 函数接收数据函数发送数据函数 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 页 共 42 页6 系统构建与性能检测6.1 系统构建和调试在本 CAN 总线系统设计完成后,进行构建调试和性能检测。通常情况下,设计一个系统,应该先开发硬件再进行软件设计。在有仿真实验仪的前提下,可以先开发软件,确保软件可以实现,再做硬件,这样可以降低开发风险和成本,提高开发速度,减小开发周期。用 Keil C51 编写 node_2 的软件,并进行软件仿真(Keil C51 具有软件仿真的功能)。再进行硬件仿真,使用 DP-668 仿真实验仪,上位机使用 CAN 测试软件模拟应用层协议。功能部分硬件暂时没有,使用示波器观察 P1.3 口的 PWM 信号,它是不是根据指令调整了 PWM 的占空比。使用函数信号发生器产生方波信号输入到P3.5 口,模拟霍尔接近开关产生的转速信号,不断改变方波信号的频率, node_2 采集的转速是不是和方波信号的频率一致。图5-2 应用程序主窗口Node_2 的程序调通后,改变一下 ID 得到 node_3 的软件程序。下位机的程序调 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 页 共 42 页通后,再通过下位机来调试上位机的程序,node_1 的界面如图 5-2。在软件全部完成后,开始制作硬件。制作 PCB 板,然后焊接电路。硬件完成后,让标准程序在电路板上运行,硬件没有问题后,把系统软件和硬件结合,完成整个系统。6.2 系统性能检测本汽车 CAN 总线系统完成后要对其进行性能检测,通过系统性能检测发现潜在的缺陷,掌握系统性能参数。系统性能测试可以细分到单元测试、集成测试、系统测试。单元测试、集成测试都应该在开发阶段完成。系统测试应该由专门的测试部门进行,开发者完成集成测试后,即可启动系统测试;当产品完全达到设计指标时,即可完成测试。图 6-1 系统检测单元测试在系统搭建的时候已经完成了,要做的是系统的集成测试。其测试网络如图 6-1,左边是本汽车 CAN 总线系统,右边增加一个测试节点,该节点上运行ZLGCANTest 软件,监视整个网络。系统正常运行,并反复使用设计要求中所规定的功能,看看他们能否准确完成项目所要求的各个功能,这个过程至少需要 24 个小时,在整个过程中测试节点记录下总线上所有的通信数据,测试过程见附录。对监控数据进行分析,得出如下结论:在 24 个小时的不间断数据传输中,总线上没有出现错误数据,系统稳定运行,没有死机,非法操作等现象。可以说明本汽车 CAN 总线系统的正确性,和稳定性。此外,测试得到了表 6-2 中的重要的系统性能参数。Node_1Node_2Node_3CAN-BUS测试节点 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 页 共 42 页表6-2 系统重要参数项目 最大值无网桥最长节点距离 40m无网桥最多节点数目 110最高位传输速率 1Mbps每帧基本用时 0.322ms 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 页 共 42 页7 汽车车身 CAN 解决方案CAN 总线优越的性能完全满足汽车对的实时性,安全性和稳定性的要求,几乎可以把它应用中在汽车网络系统的不同领域,不同层次(除车上媒体系统要求更高的传输速率)。基于上面对 CAN 总线的研究,提出如下的车身 CAN 解决方案。该 CAN 网络用来连接中央门锁以及车门控制单元。网络采用星型结构,以保证在一个单元出现故障时,其他的单元仍可以发送接收信息。使用网络连接的方法实现这些电控单元间的通信,减少线路,提高通信线路的可靠性和容错能力,提高自诊断能力。该 CAN 网络是用于车身的其对实时性要求不高,选择如下参数:传输介质使用双绞线。数据传输速度使用低速:62.5Kbps。每个网络节点的发送信息的时间间隔为 10ms该网络由 5 个节点组成,其优先级的顺序定义如下:1)中央控制单元,node1。2)驾驶员侧前门控制单元,node2。3)乘客侧前门控制单元,node3。4)驾驶员侧后门控制单元,node4。5)乘客侧后面控制单元,node5。CAN 电源图7-1 车身CAN网络中央控制器左前单元左后单元右后单元右前单元门锁车窗 车窗车窗 车窗门锁门锁门锁 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 页 共 42 页图 7-2 给出驾驶员侧前门控制单元中央控制器的应用层的定义,其它的单元传输的信息定义类似。表 7-1 车身 CAN 应用层定义功能 状态 Data0 标识符基本状态 00000001B 01010210安全状态 00000010B 01010210上锁 00000100B 01010210中央门锁验收码:02020110屏蔽码:000000FF 开锁 00001000B 01010210打开 00000001B 01010220关上 00000010B 01010220开大一些 00000100B 01010220电动窗验收码:02020120屏蔽码:000000FF 关小一些 00001000B 01010220中央控制器: 验收码:01010000 屏蔽码:0000FFFF例如:当中央控制器发送一个数据帧,标识符 02020110,数据 00000011B,驾驶员侧前门控制单元就会接收到该信息,表示:中央控制器让驾驶员侧前门中央门锁上锁,并处于安全状态。当驾驶员侧前门控制单元处理完该信息后,就会反馈一个帧,标识符 01010210,数据 00000011B, 中央控制器就会接收到该信息,表示:驾驶员侧前门中央门锁已经上锁,并处于安全状态。如果 1s 后中央控制器还没有接收到驾驶员
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。