《BCM通信协议栈设计.pdf》由会员分享,可在线阅读,更多相关《BCM通信协议栈设计.pdf(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学校代号10532学号S1002W218分 类 号U469.7密级公 开工程硕士学位论文BCM 通信协议栈设计学位申请人姓名袁科培养单位机械与运载工程学院导师姓名及职称黄智 副教授卜晓宇 高工学科专业车辆工程研究方向汽车电子论 文 提 交 日 期2012 年 07 月 09 日学校代号:10532学号:S1002W218密级:公 开湖南大学硕士学位论文BCM 通信协议栈设计学位申请人姓名:袁科导师姓名及职称:黄智 副教授 卜晓宇 高工培养单位:机械与运载工程学院专业名称:车辆工程论 文 提交日期:2012 年 07 月 09 日论 文 答辩日期:2012 年 07 月 11日答辩委员会主席:张
2、桂香 教授Design of Body Control ModulesCommunication Protocol StackbyYUAN KeB.E.(Changsha University)2009A thesis submitted in partial satisfaction of theRequirements for the degree ofMaster of EngineeringinMechanical Engineeringin theGraduate SchoolofHunan UniversitySupervisorAssociate Researcher Huang
3、 ZhiSenior Engineer Pu Xiao Yu07 11,2012I湖 南 大 学学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权湖南大学可以将本学位论文
4、的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密,在_ _年解密后适用本授权书。2、不保密。(请在以上相应方框内打“”)作者签名:日期:年月日导师签名:日期:年月日BCM 通信协议栈设计II摘要由于电子技术的快速发展和人们对汽车安全性、舒适性要求的日益提高,使得汽车上的电子设备日趋增多和复杂。车载总线网络技术为汽车内部各种复杂的电子设备和控制单元提供了统一的数据交换通道,有效的利用了资源并实现数据共享。本文针对汽车领域的总线,在对 AUTOSAR 通讯系统协议进行深入研究之后,参照 AUTOSAR 的软件架构标准设计了基于
5、CAN 总线和 LIN 总线的通讯协议栈。该协议为汽车电控单元之间的数据传输和处理提供了方法,实现了总线网络节点间的通讯。本文设计的 BCM 通信协议栈采用层次化、模块化结构,分为通信服务层、通信硬件抽象层、通信驱动层。通信服务层位于通信抽象层和 RTE 层之间,它除了为上一层提供统一的软件接口,同时还支持底层数据的发送,接收与确认;通信硬件抽象层旨在为通信网络提供可配置的统一接口,使软件组件间建立简单可靠的通信机制;通信驱动层的主要作用是实现软件与硬件之间的链接,为上层提供统一的接口,使上层软件独立于微控制器。本文的研究重点在于,参照 AUTOSAR 软件架构标准的 BCM 通信协议栈各层和
6、各模块的设计与实现。关键词:总线网络;通信协议栈;AUTOSAR工程硕士学位论文IIIA A A AbstractbstractbstractbstractDue to the rapid development of electronic technology and peoples highrequirements of vehicle safety and comfort,it makes the electronic equipment on thecar gradually become numerous and complex.Car-bus network technology
7、foravariety of complex electronic devices and control units which exists in automotiveinterior to provide unified data exchange channel to achieve efficient use of resourcesand data sharing.For the automotive sector bus,after in-depth study on the AUTOSAR agreementsof communication system,referencin
8、g to the AUTOSAR software architecturestandard,this designed a communication protocol which based on the CAN bus andLIN bus.The stack for automotive electronic control unit to provide a standard datatransfer and process method,mades the communication of network node to achieve.This BCM communication
9、 protocol stack adopt hierarchical modular structurewhichdividedintocommunicationserviceslayer,communicationhardwareabstraction layer and the communication driver layer.Communication services layerlocated in the communication abstraction layer and RTE layer.Except for upper layerto provide a unified
10、 software interface but also supports the lower data to send,receive and confirm;Communication hardware abstraction layer provides configurableuniform interface for communication network and establishs a simple and reliablecommunication mechanism between software components;The main role of thecommu
11、nication driver layer is the link between software and hardware.It provides aunified interface for the upper layer and makes upper layer software independent ofthe microcontroller.This study focuses on the design and implementation of each module BCMcommunicationprotocolstacklayer,referencingtotheAU
12、TOSARsoftwarearchitecture standard.Keywords:Keywords:Keywords:Keywords:Bus network;Communication protocol stack;AUTOSARBCM 通信协议栈设计IV目 录学位论文原创性声明和学位论文版权使用授权书I摘要IIAbstractAbstractAbstractAbstract III第 1 章 绪论 11.1 课题背景 11.2 国内外研究现状 11.3 课题来源及意义 31.4 主要研究内容41.5 本文结构 4第 2 章 BCM 通信协议栈的架构和层次52.1 BCM 通信协议栈的
13、技术基础52.2 BCM 通信协议栈的整体架构和层次92.3 通信服务层的结构和功能92.3.1 COM 和 PDU Router 模块 92.3.2 网络管理模块 102.3.3 CAN 传输层模块102.4 通信硬件抽象层的结构和功能 102.4.1 CAN 接口层模块102.4.2 LIN 接口层模块 112.5 通信驱动层的结构和功能112.5.1 CAN 驱动层模块112.5.2 LIN 驱动层模块 112.6 本章小结11第 3 章 通信服务层的设计和实现123.1 COM 模块123.1.1 初始化123.1.2 信号交互 133.1.3 可靠性保障 153.2 网络管理模块16
14、3.2.1 网络初始化 163.2.2 网络运行监控163.2.3 网络状态管理17工程硕士学位论文V3.2.4 LIN 网络管理 183.3 CAN 传输层模块213.3.1 CAN 传输层数据收发简介213.3.2 初始化223.3.3 数据发送233.3.4 数据接收243.3.5 流量控制 243.4 本章小结 25第 4 章 通信硬件抽象层的设计和实现 264.1 CAN 接口层模块264.1.1 初始化264.1.2 发送缓冲264.1.3 数据发送274.1.4 数据接收284.1.5 数据的接收过程示例 294.1.6 网络模式控制 304.2 LIN 接口层模块304.2.1
15、 数据配置 314.2.2 任务状态机 314.2.3 应用程序接口(API)334.2.4 调度表344.3 本章小结 35第 5 章 通信驱动层的设计和实现365.1 CAN 驱动层模块365.1.1 初始化365.1.2 CAN 控制器模式设置 365.1.3 数据发送375.1.4 数据接收375.2 LIN 驱动层模块385.3 本章小结 40第 6 章 通讯系统测试416.1 测试环境简介416.1.1 硬件平台介绍 416.1.2 软件平台介绍 426.2 测试方案 42BCM 通信协议栈设计VI6.2.1 CANoe 实验与仿真426.2.2 BCM 测试436.2.3 车身电
16、器台架测试446.3 测试结果分析476.4 本章小结 47结论48总结48展望48参考文献49致谢51工程硕士学位论文1第 1 章 绪论1.1 课题背景近年来,随着电子、信息技术的迅猛发展,汽车电子化程度越来越高,汽车上电子装置成本将占汽车整车成本的 25%以上,汽车电子化是现代汽车发展的重要标志1。当前先进的汽车技术都得益于汽车电子技术的发展,如电喷发动机、电动车窗、电动座椅、电子显示屏、电控悬架等2。汽车已由单纯的机械产品向高级的机电一体化产品方向发展3。现代汽车电子技术的应用,不仅提高了汽车的经济性、动力性和安全性,同时改善了汽车行驶的稳定性和舒适性,推动了汽车产业的发展;而且还为电子
17、产品开拓了更加广阔的市场,推动了电子产业的发展4。然而日趋复杂的电路降低了汽车的可靠性,增加了维修汽车的难度,也造成电子设备间的连线越来越多5。按照传统的点对点布线方式,会造成庞大的布线系统,需要大把的线束,这不仅大大的增加了成本,也使得电路变得繁琐复杂和不易管理6。汽车总线作为一种连接智能电子设备和自动化系统的数字式、双向式传输式、分支结构的通信网络标准,为汽车内部各种复杂的电子设备和控制单元提供了统一的数据交换通道7。1.2 国内外研究现状1.2.1 总线的研究现状上世纪 90 年代初,总线技术开始在汽车中应用。如今该项技术已经成为现代汽车的标准技术,几乎所有的车都开始采用总线技术,汽车的
18、总线零部件也成为发展的主流8。CAN、LIN、Flex Ray、MOST 等为汽车上现在常用的几种总线9。1.CAN 总线CAN 即控制器局域网络,属于工业现场总线的范畴。CAN 总线与一般的总线相比,其数据通讯具有突出的实时性、可靠性和灵活性。它良好的性能和设计受到人们的广泛关注。CAN 总线的应用领域非常广泛,包括汽车行业、自动控制、过程工业、航空航天、纺织机械、机械工业、农用机械等,而在汽车领域上的应用是最为广泛的。世界上一些著名的汽车生产商如 BENZ(奔驰)、BMW(宝马)、ROLLS-ROYCE(劳斯莱斯)、PORSCHE(保时捷)等都使用 CAN 总线来实现各执行和检测机构与汽车
19、内部控制系统间的数据通信。现在 CAN 被公认为几种最有前途的现场总线之一,并已经形成国际标准。其典型的应用协议有:SAEBCM 通信协议栈设计2J1939/ISO11783、CAN Open 等10。SAE J1939 是由美国汽车工程协会 SAE 规定的一种基于 CAN 总线的高速通信网络协议,其固定速率为 250Kbps,主要用于商用车,也用于轨道车辆、农用机械和舰船等。它包括物理层、数据链路层、网络层和应用层协议11。物理层给出了屏蔽双绞线和非屏蔽双绞线时的网络物理描述、功能描述、电气规范、总线错误讨论、兼容性测试等。数据链路层定义发送 CAN 数据帧时所必需的同步、顺序控制、错误控制
20、和流控制等功能,保证了网络数据传输的可靠性。网络层不仅定义网络中各 ECU 的需求和服务,同时也定义网络中各种类型 ECU 所能提供的功能。SAEJ1939 应用层协议定义所需要用到的参数组(PNG)和可疑参数编号(SPN)。它包含了支持应用的机制和管理功能,对参数范围、报文格式、发动机参数的命名规则、传输重复率等方面做出了具体的规定和描述12。CAN Open 是一种在 CAL 基础上开发并使用 CAL 通讯和服务协议子集的高层通讯协议,包括通讯子协议和设备子协议,常用于嵌入式系统和工业控制中。它提供分布式控制系统的实现方案,实现了 OSI 模型中网络层及以上的协议,在保证网络节点互用性的同
21、时允许节点的功能随意扩展。CAN Open 支持设备监控、网络管理、及节点间的通讯等,其中包括一个简易的传输层,可处理资料的分段传送及其组合13。一般而言物理层和数据链路层会用 CAN 来实现。CAN Open是 CAN-in-Automation(CIA)定义的标准之一,被认为是在基于 CAN 的工业系统中占领导地位的标准。由于该协议的支持,可以对不同厂商的设备通过总线进行配置14。2.LIN 总线LIN 是一种相对比较新的总线系统,于 20 世纪 90 年代末被开发出来,其目的是为简单的传感器和执行器应用系统(如天窗、车门、座椅等)提供一种价格低廉的,可代替低速 CAN 的总线系统。它由一
22、些汽车制造商(如 Audi、BMW 等)和半导体制造商 Motorola 公司联合提出。LIN 也是现代汽车上使用比较普遍的一种总线,采用简单面向字符的协议,用每个 UART(通用异步接收器和传输器)来执行。它作为 CAN 总线的补充,可被自由使用。LIN 拥有更好的 EMC(电磁兼容)特性,主要用于汽车外围设备的网络连接,其应用最多的是车窗座椅、灯光照明、电动天窗等的控制传输。它提升了系统结构的灵活性,有效地降低了汽车制造成本15。3.Flex Ray 总线Flex Ray 是以未来线控系统为背景而研发出来的一种总线系统。Flex Ray 联盟(Flex Ray Consortium)推进了
23、 Flex Ray 的标准化,使之成为了新一代汽车内部网络的通讯总线。尽管它的许多要求和 CAN 一样,许多专业人士还是认为有继续研发的必要性和意义。Flex Ray 可以是星形结构也可以是线性结构,允许两工程硕士学位论文3个信道的通讯系统,这相对 CAN 的单信道通讯系统可以提高系统的安全性和可靠性。它为下一代汽车的车内控制系统提供所需的速度,目前所允许的最大比特率为 10Mbit/s,而 CAN 所允许的最大比特率为 1Mbit/s,这在车载通讯系统中对数据传输速率要求较高的场合有很好的应用前景16。经过多年的改进,FlexRay网络标准已经成熟,并成功应用在 BMWX5 中的 5 个 E
24、CU(主控悬吊系统、电控减震等)上,预计将在 BMW 下一代产品的更多 ECU 上得到应用。1.2.2 AUTOSAR 的研究现状AUTOSAR 是 Automotive Open System Architecture(汽车开放系统架构)的简称,是一个致力于制定汽车电子软件标准的联盟。该联盟首先发起并活跃于欧洲,2006 年年底发布了 2.1 版规范,并对第一阶段的发展规划作了总结。2007 年到 2009 年是 AUTOSAR 的第二阶段,这一阶段制定的规范添加了新的性能(如安全性能等)17。AUTOSAR 架构为高效管理愈来愈复杂的车辆电子、软件系统提供了一个基础,有利于车辆电子系统软件
25、的交换与更新。此外,AUTOSAR 在确保产品及服务质量的同时,提高了成本效率18。宝马集团从 2001 年开始在 BMW Standard Core 的架构下,将 AUTOSAR 标准的基础软件运用在 ECU 模块中。该基础软件基本上覆盖了车辆管理系统各个层面的功能,包括停车准备功能、系统编码功能、设定特殊条件的服务定制功能等。国内的各大汽车厂商和科研院校也越来越关注 AUTOSAR 带来的标准化的设计和开发,并进行了大量的实验和验证,这大幅提高了汽车电子的研发效率和研发质量19。浙江大学 ESE 实验中心从 2004 年开始关注 AUTOSAR,并率先加入了AUTOSAR组织。目前浙江大学
26、 ESE实验中心已经成功开发出一套符合 AUTOSAR标准的集成的 ECU 开发工具链(简称为 Smart SAR Studio)。它支持以软件为中心、从上到下的快速迭代开发模式,可用于 ECU 软件架构设计、网络系统配置、基础软件核配置、诊断、标定和仿真测试20。1.3 课题来源及意义车身电器系统涉及车辆上大量的传感器、执行器及人机操作机构,是车辆电控系统中最为庞大和复杂的部分。车身控制模块(BCM)作为车身电器系统控制中心在汽车上的广泛使用,增加系统功能和性能的同时提高了系统可靠性、降低了成本21。随着各电子设备之间的信息共享越来越多,一个信息可同时供许多部件使用,要求 BCM 的数据通信
27、功能越来越强,单一集中式 BCM 很难完成越来越庞大的功能,这不仅使得总线式、网络化的 BCM 成为发展趋势,也使得基于各种总线的 BCM 通讯系统开发变得尤为重要22。课题来自深圳市航盛公司的“车身控制模块(BCM)”项目和广东省产学研项目“面向国际标准的车身网络控制平台关键技术及产品的研发与产业化”,以BCM 通信协议栈设计4BCM 通信协议栈为设计对象,参照 AUTOSAR 标准,实现以 BCM 作为车身系统信息交互和数据处理中心的 CAN/LIN 网络节点间的信息共享和交互。1.4 主要研究内容本文基于 CAN/LIN 总线协议,参照 AUTOSAR 软件架构的标准,对 BCM 通信协
28、议栈进行模块化、层次化设计,并详细介绍通信服务子层、通信硬件抽象子层、通信驱动子层的具体设计和实现。通信服务层位于通信抽象层和 RTE 层之间,它除了为上一层提供统一的软件接口,同时还支持底层数据的发送,接收与确认;通信硬件抽象层旨在为通信网络提供可配置的统一接口,使软件组件间建立简单可靠的通信机制;通信驱动层的主要作用是实现软件与硬件之间的链接,为上层提供统一的接口,使上层软件独立于微控制器。最后在实验平台上进行测试。1.5 本文结构第一章介绍论文的背景、课题来源和主要研究内容。第二章介绍通信协议栈设计的技术基础(CAN/LIN 协议和 AUTOSAR 标准),设计 BCM 通信协议栈的整体
29、架构,并分别介绍其子层的结构和功能。第三章通信协议栈中通信服务层的具体设计和实现。第四章通信协议栈中通信硬件抽象层的具体设计和实现。第五章通信协议栈中通信驱动层的具体设计和实现。第六章通信协议栈的测试,描述测试方案和测试环境,并进行测试。工程硕士学位论文5第 2 章 BCM 通信协议栈的架构和层次2.1 BCM 通信协议栈的技术基础本文开发的 BCM 通信协议栈,基于 CAN 总线协议和 LIN 总线协议,参照了AUTOSAR 软件架构标准。1.CAN 简介CAN 是控制器局域网络(Controller Area Network)的简称,是由研发和生产汽车电子产品著称的德国 BOSCH 公司开
30、发的,并最终成为国际标准。它是国际上应用最广泛的现场总线之一。CAN 系统分为高速和低速系统,高速 CAN 系统采用硬线是动力型,速度为 500kbps,控制 ECU、ABS 等;低速 CAN 是舒适型,速度为 125Kbps,主要控制仪表、防盗等。CAN 总线的通信介质为双绞线、同轴电缆等,其通信距离与传输波特率反相关,在波特率为 5kbps 时,最大通信距离可达 10km,最大波特率可达 1Mbps,此时通信距离为 40m23。图 2.1 CAN 的 ISO/OSI 参考模型的层结构CAN 以通信数据块编码方式代替传统的站地址编码方式,可工作于多主网络模式。为了避免数据发送冲突,总线采用非
31、破坏性仲裁技术:当优先级低的节点和优先级高的节点同时向网络发送数据时,低优先级的节点主动停止数据发送,故障界定数据链路层逻辑链路控制子层 LLC验收滤波过载通知恢复管理媒体访问控制子层 MAC数据封装/拆装帧编码媒体访问管理错误检测错误标定应签并行转换为串行/串行转换为并行物理层位编码/解码位定时同步驱动器/接收器特征总线故障管理监督器BCM 通信协议栈设计6高优先级的节点可继续发送数据。当 CAN 网络中某个节点发生比较严重的错误时,为了不使总线上其余节点的操作受到影响,该节点自动切断本身与总线的联系。CAN 遵循 ISO/OSI 标准模型。CAN 协议定义了 OSI 模型的数据链路层(数据
32、链路层包括逻辑链路控制子层及媒体访问子层)和物理层。物理层由一种检测并管理物理介质故障的实体来实现监控。CAN 的 ISO/OSI 参考模型的层结构如图2.1 所示。CAN 协议支持 11 位(CAN2.0A)和 29 位(CAN2.0B)的报文格式。它的数据帧由远程帧、出错帧和超载帧组成,CAN 协议的数据错误检测包括循环冗余检查、帧检查、应答错误、总线检测和位填充,大大提高了数据传输的可靠性24。在 CAN 总线的开发测试阶段,需要虚拟、半虚拟、全实物仿真测试平台,对其拓扑结构,节点功能,网路整合,是否符合 ISO11898 中规定的错误响应机制等进行测试。因此,CAN 总线的开发需要专业
33、的开发测试工具。它常用的开发测试工具如 Auto CAN、CAN spider,其主要供应商有 IHR、Vector 等。2.LIN 总线协议简介LIN(Local Interconnect Network)是一种低成本和充当辅助功能的总线系统。它通讯的物理介质为一根 12V 信号总线和一根无固定时间基准的节点同步时钟线。LIN 的目标是为汽车上 CAN 总线提供辅助功能和实现汽车中分布式电子系统的控制。制动装置和智能传感器之间的通讯可使用 LIN 总线,因为它不需要CAN 的多功能和带宽,这可有效的降低成本。LIN 总线网络采用单个主控制器与多个从控制器的网络模式,主控制器负责传输报头,从控
34、制器负责对报头做出响应,由于网络节点没有仲裁的过程,当多个从控制器同时响应主控制器时就会发生错误。在 LIN 网络中,可直接添加节点而不用改变任何其它节点的硬件或软件,总线的物理特征和标识符数量限制了网络节点的最大数值,它的节点数量不应超过 12 个。LIN 网络通讯时需要进行基于SCI 的串行通讯协议到 LIN 协议的转换。LIN 这种低成本的串行通讯模式和相应的开发环境已经由 LIN 协会制定成标准25。LIN 遵循 ISO/OSI 标准模型的最低两层,包括数据链路层(数据链路层包括链路控制层和媒体访问控制层)和物理层。LIN 分层结构如表 2.1 所示。表表 2.12.1 LINLIN
35、层结构层结构序号LIN 层结构层次应用范围备注1应用层用户定义(节点配置、标识符分配)2数据链路层链路控制层接收滤波、网络恢复、网络管理、时基同步信息有效性验证、状态管理和汇报媒体访问控制层数据封装/解封装、错误侦测、错误标定故障界定、串行发送和解串接收3物理层位定时、位同步、总线驱动和接收工程硕士学位论文7LIN 总线上主机节点的命名使用系统中的配置信息,而其余从机节点均不使用。LIN 网络中发送的每个报文帧都包括 2,4 或 8 个字节的数据及 3 个字节的安全和控制信息,其内容由标识符命名。总线启动通讯时,首先主机节点向网络发送帧头,然后从机节点发送回数据场和校验和场对其进行响应。主机节
36、点可将数据发送到任何从机节点。3.AUTOSAR 软件架构如图 2.2 所示,AUTOSAR 体系采用层次化、模块化的软件架构,从下至上分别为 MCU 抽象层、ECU 抽象层、系统服务层、复杂驱动模块、运行时环境层(RTE)和应用层26。图 2.2 AUTOSAR 软件架构MCU 抽象层包括微控制器驱动、内存驱动、通信驱动和 I/O 驱动模块,它主要为上层抽象微控制器,使得上层操作独立于微控制器;ECU 抽象层包括板级设备抽象、内存硬件抽象、通信硬件抽象和 I/O 抽象模块,其作用是为上层对 ECU布局进行抽象;系统服务层包括系统服务、内存服务和通信服务模块,它为应用程序和基本软件模块提供基本
37、服务;复杂驱动模块处理复杂传感器和执行单元,实现特殊功能和时间需求;RTE 层的作用是使应用层的软件实现与具体硬件无关;应用层包括所有 AUTOSAR 的软件组件、应用程序软件组件以及传感器/执行单元软件组件,该层的软件组件通过运行时环境(RTE)层访问下层的资源。一般情况下,AUTOSAR 各层只能使用下层的接口,并为上层提供接口27。AUTOSAR 通信系统位于运行时环境(RTE)层之下,微控制器抽象层之上,其主要作用是为汽车控制单元应用软件提供一个统一的通讯环境,为内外部通讯系统服务内 存 服务应用层运行时环境(RTE)层复杂驱动微控制器抽象层内存硬件抽象内存驱动板 级 设备抽象微 控
38、制驱动通 信 服务通 信 硬件抽象通信驱动I/O 抽象I/O 驱动BCM 通信协议栈设计8提供公共的软件接口28。AUTOSAR 通信系统的具体架构如图 2.3 所示,其分为通信服务层、通信硬件抽象层和通信驱动层29。图 2.3 AUTOSAR 通信系统架构(1)通信服务层通信服务层包括 AUTOSAR COM、故障诊断通讯管理、IPDU 多路选择器、PDU 路由器、网络管理、Flex Ray 传输层和 CAN 传输层模块,它为上层提供统一软件接口的同时还支持底层数据的发送,接收与确认30。(2)通信硬件抽象层通信硬件抽象层包括 Flex Ray 接口层、CAN 接口层和 LIN 接口层模块,
39、其作用是为上层对 ECU 通信硬件进行抽象。(3)通信驱动层通信驱动层包括 Flex Ray 驱动层、CAN 驱动层和 LIN 驱动层模块,其作用是实现软件与硬件之间的链接,为上层提供统一的接口,使上层软件独立于微控制器。AUTOSAR 通信系统包括 Flex Ray(高速总线)、CAN(中速总线)和 LIN(低速总线),这三种总线结合在一起基本能够满足汽车内部各电控单元间的通讯需求。AUTOSARCOM故障诊断通讯管理PDU 路由器网络管理IPD 多路选择器CAN传输层FlexRay传输层FlexRay接口层CAN接口层LIN接口层FlexRay驱动层CAN驱动层LIN驱动层通 信服务层通
40、信 硬 件抽象层通 信驱动层工程硕士学位论文92.2 BCM 通信协议栈的整体架构和层次BCM 通信协议栈参照 AUTOSAR 体系架构标准分为通信服务层、通信硬件抽象层和通信驱动层,通信协议栈的整体架构如图 2.4 所示。图 2.4 BCM 通信协议栈的整体架构通信信服务层包括 COM、PDU Router、网络管理、DCM 和 CAN 传输层模块。通信硬件抽象层包括 CAN 接口层和 LIN 接口层模块。通信驱动层包括 CAN 驱动层和 LIN 驱动层模块。2.3 通信服务层的结构和功能参照 AUTOSAR 模块化标准将通信服务层分为 COM、DCM、PDU Router、CAN 传输层和
41、网络管理模块。2.3.1 COM 和 PDU Router 模块COM 模块的主要功能包括初始化配置、信号交互服务、可靠性保障等。其中初始化配置主要是初始化 IPDU、信号、通信端口等;信号交互服务可以分为信号(组)发送、信号(组)接收等功能;可靠性保障包括报文监控和错误通知机制。在使用通信服务之前首先要进行初始化配置。PDU Router 层的功能主要包括初始化配置、PDU 接收、PDU 发送和 PDU 网CAN 接口层模块LIN 接口层模块CAN 驱动层模块LIN 驱动层模块通 信 硬 件抽象层通 信 驱动层COMDCM(诊断通讯管理)PDU Router网 络 管理模块通 信 服务层信号
42、I-PDUI-PDUCAN 传输层模块I-PDURTE 层BCM 通信协议栈设计10关。PDU 接收是指从 CAN 传输层或者 LIN 接口层接收 I-PDU 并转发到上层模块。PDU 发送是指根据 COM 模块或者 DCM 模块的请求发送 I-PDU 到 CAN 网络或LIN 网络。PDU 网关是指从 LIN 或者 CAN 接口层模块接收 I-PDU 并立即通过同一个或者另一个接口层模块发送出去,从 CAN 传输层模块接收 I-PDU 并立即通过同一个或另一个传输层模块发送出去。根据实际需求,将 PDU Router 层的规模缩小到零,COM 层可通过类似函数的宏直接调用通信传输层或通信接口
43、层提供的 API。2.3.2 网络管理模块网络管理层的功能包括网络初始化配置、监控网络运行配置、网络状态管理等。网络初始化时,定义节点在网络管理中的角色与任务,以及规定节点是否具有唤醒、休眠网络和服务配置等权限。监控网络运行配置是为保证通讯正常而对网络通讯进行监控,并在通讯出现异常时采用适当的方式恢复正常通讯。网络状态管理提供等待唤醒、重新唤醒、等待休眠等服务。2.3.3 CAN 传输层模块CAN 传输层的功能包括初始化、拆分发送数据、组装接收数据、交换通信参数、接收和发送数据流的控制、错误检测(报文丢失、报文重复、报文乱序)等。传输层的初始化主要是初始化全局变量,设置传输层的工作状态等。拆分
44、发送数据是将上层不能通过单一报文发送的应用数据分解成多个数据报文进行发送。组装接收数据是将下层接收的多个相关的单一报文组装成一个完整的报文。接收和发送数据流的控制是在分组多报文的传输过程中,发送端发送首帧后等待来至接收端的流量控制帧 FC,从而确定是否继续发送报文。错误检测是在超时或者接收到带错误号码的报文时,错误通知就通知本身的应用层。2.4 通信硬件抽象层的结构和功能通信硬件抽象层包括 CAN 接口模块和 LIN 接口模块。2.4.1 CAN 接口层模块CAN 接口层的功能包括:初始化所有的全局变量、各种结构类型的数据和标志;初始化 CAN 网络中所有 CAN 控制器,使它们能顺利的启动并
45、完成各种操作;设置 CAN 控制器的滤波方式;检测是否有可用的硬件缓冲,若有则将上层传下来的已打包数据由驱动层发送给总线,否则将数据放入软件缓冲;将驱动层传递的数据处理后传递给上一层;管理下层 CAN 网络通讯模式,设置 CAN 控制器工作状态。CAN 接口层的初始化会调用 CAN 驱动层的相关初始化函数。工程硕士学位论文112.4.2 LIN 接口层模块LIN 接口层的主要功能是完成调度表的管理和启动,其他的接口函数负责控制各种硬件协调工作,完成初始化、休眠、唤醒、信号更新以及读写数据等功能。2.5 通信驱动层的结构和功能通信驱动层包括 CAN 驱动模块和 LIN 驱动模块。2.5.1 CA
46、N 驱动层模块CAN 驱动层模块的功能分为初始化 CAN 控制器、发送接收 CAN 数据帧和工作模式设置。初始化 CAN 控制器主要是对控制器进行硬件相关的设置,例如对相应寄存器的设置。发送 CAN 数据帧是将数据帧转化成与控制器硬件匹配的格式,启动相关的硬件将数据发送出去。接收数据帧是当驱动层接收到数据时将其转换成标准格式放入缓冲区,并调用接收指示函数通知上层。2.5.2 LIN 驱动层模块LIN 驱动层模块的功能包括初始化 SCI 接口,根据通信协议和 LIN 调度表的设置启动 LIN 通信,监控数据的发送和接收并进行并反馈等。2.6 本章小结本章简要介绍了 CAN/LIN 总线协议的基本
47、规范,对 AUTOSAR 的整体软件架构、各层结构和功能进行了简要分析,对 BCM 通信协议栈进行了模块化的设计,并阐述了各层及模块的功能。BCM 通信协议栈设计12第 3 章 通信服务层的设计和实现3.1 COM 模块COM 层的主要功能包括初始化配置、信号交互和可靠性保障。COM 层的初始化配置包括 COM 模块初始化、IPDU 的配置服务、通讯端口配置等。信号交互分为信号的发送和接收。可靠性保障机制包括报文监控和错误通知,其主要是为了减少通讯过程中的错误率,提高通讯的可靠性。3.1.1 初始化在使用通讯服务之前,必须进行初始化配置服务。COM 层的初始化包括 COM模块的初始化、IPDU
48、 的配置、通信端口的配置等,初始化函数的 API 如表 3.1所示。表表 3.1 COM 层的初始化配置层的初始化配置 APIAPIAPIAPIAPI 名称描述Com_Init()COM 模块初始化Com_StartCycleIPDU()周期型 IPDU 启动Com_StartIPdu()事件型 IPDU 启动Com_Open()通讯端口启动1.COM 模块初始化COM 模块的初始化是通过函数 Com_Init()实现的,该函数主要是对 IPDU、信号、定时器、底层网络等进行初始化。初始化完成后,COM 层还不能对 IPDU进行发送,需要 IPDU 发送启动函数来启动发送。2.IPDU 的配置
49、服务交互层协议数据单元(IPDU)是 COM 层与下层网络进行信息交互的基本单元。IPDU 由一个或者多个信号组成,其结构中保存着信号的首地址和信号在网络中发送所需的一些信息。IPDU 的配置服务包括 IPDU 的启动和停止。由于信号分为周期型信号和事件型信号,因此 IPDU 的启动和停止又包括周期型 IPDU 的启动与停止和事件型IPDU 的启动与停止。COM 层提供函数 Com_StartCycleIPDU()和 Com_StartIPdu()分别进行周期型 IPDU 和事件型 IPDU 的启动。启动一个 IPDU 发送时,首先设置其启动标志为 1,然后根据其属性设置发送周期、延时时间、允
50、许发送和接收等。相 反 的,如 果 禁 止 一 个 IPDU 发 送,则 将 其 发 送 使 能 标 志 设 为 0,函 数Com_StopCycleIPdu()和 Com_StopIPdu()分别是禁止周期型 IPDU 和事件型 IPDU工程硕士学位论文13发送的函数。3.通讯端口配置本文设计的 BCM 通信协议栈为一路 CAN 总线和两路 LIN 总线网络通讯提供服务,故其通讯端口配置包括 MSCAN、LIN0 和 LIN1 三种类型通讯端口的启动和停止设置。ECU 启动某一总线网路进行通讯时,COM 层调用函数 Com_Open()设置相应端口,使其处于准备工作状态;ECU 停止某一总线