当前位置:首页 >> 机械/仪表 >>

[硕士论文] 基于CANopen的混合动力汽车车载故障诊断系统的研究与实现


北京工业大学 硕士学位论文 基于CANopen的混合动力汽车车载故障诊断系统的研究与实现 姓名:张明杰 申请学位级别:硕士 专业:控制理论与控制工程 指导教师:余春暄 20080501

摘要





汽车工业的迅速发展推动了人类文明的发展,同时造成了严重的环境污染和

源匮乏,使汽车成为世界能源和环境双重危机的罪魁祸首。随着世界各国对节 约能源和改善环境的呼声日益高涨,研究开发电动汽车成为当今社会的一大热
点,尤其是混合动力汽车。另外,汽车总线在汽车技术领域变得日益重要,尤其

是CAN总线已成为绝大多数汽车车载网络的标准。作为CAN总线的高层协议 CANopen协议在欧洲和美国获得了广泛的认可和大量的应用,已经从工业控制 领域的应用发展到汽车电子等领域。本文提出了一种针对混合动力汽车的车载故 障诊断系统的设计方案,实现了传统的故障诊断仪与在板故障诊断系统的结合,
并且在汽车通信网络中引入了CANopen高层协议。

本文首先概要介绍了混合电动汽车的发展背景、汽车故障诊断以及CAN总
线的发展,详细介绍了CAN的高层协议CANopen,提出了以CANopen为通信 网络的车载故障诊断系统的总体设计方案。 其次,根据第二代车载故障诊断系统标准OBD—II,确定本故障诊断系统所 要实现的功能。通过分析CANopen高层协议,制定了针对混合动力汽车的

CANopen故障诊断通信规范——基于服务数据对象SDO的故障诊断通信规范。
在本故障诊断系统中引入了MySQL数据库,作为CANopen协议栈与故障 诊断应用程序之间的桥梁。在数据库中建立了当前故障表、历史故障表等多个故
障信息表,方便了故障信息的存储与管理,并且利用数据表的外键实现了各个数 据表之间的相互检索。 论文还详细介绍了本故障诊断系统的整体软件设计包括CANopen主站协议 栈的应用,故障诊断管理功能的实现,以及人机交互界面的设计。 最后,利用TI公司的32位定点DSP芯片TMS320F2812仿发动机控制器, 作为CANopen网络一个从节点,故障诊断系统作为CANopen主站,搭建了 CANopen故障诊断网络,验证本故障诊断系统的功能。经测试,本故障诊断系

统达到了设计要求,证明了设计方案的可行性。尽管本诊断系统有待进一步完善,
但是为后续的研究与开发奠定了良好的基础。

关键词混合电动汽车;故障诊断:CANopen;CAN

北京=r业大学丁学硕十学位论文

AB STRACT
Rapid development o.f automobile industry promotes human civilization,at
one

time,it has become the chief criminal of the energy
world.In order to decrease air pollution and energy

sources

and air pollution of the

sources

consumption,researching
and more

and developing electric vehicle becomes more and more popular,especialy Hybrid Electric

Vehicle(HEV).In

addition,the vehicle bus has become more

important in the field of vehicle technology,especially,CAN bus has become the standard bus in most vehicle communication networks.As the higher layer protocol of CAN network,CANopen protocol United is widely recognized

and

used

in

Europe and

States,and has

developed from industry control filed to automobile electric


filed.This paper intorduces

design

proposal of

on

board diagnostic system towards
on

HEV,and combines the traditional fault diagnosis tools and the

board diagnostic

system,CAN’S higher layer protocol CANopen is adopted
layer protoc01.

as

the vehicle application

Firstly,this paper introduces the developing background of HEV,vehicle fault
diagnosis and the development of CAN bus in shortly.Then introduces detaily of
on

CANopen protocol,and puts forward the whole scheme

board

diagnositie

system based

on

CANopen communicatin
on

network.

Secondly,according to

board diagnostic system critical OBD—II,function of the analyzing CANopen protocol,CANopen

diagnostic system is confirmed.Through diagnosis communication

standard

towards HEV are constituted,which is used in this

system.

MySQL

database is used in this diagnostic stack

system,and

designed

as

the bridge

between

CANopen protocol

and

application program

of diagnostic system.

Several different data sheets are built in the database,which facilitates information storage and management.Using the foreign key,searching among each data sheet is achieved. This paper also introduces the whole software frame,fault diagnosis management function

and

fault diagnosis interface in detail.
on as

At last,to test the function of this

board diagnostic system,we
the slave in CANopen

use a

type of

32 bits DSP controller TMS320F28 1 2

network,which
test,

comprised of the whole CANopen network埘tll the diagnostic system.Through
the conclusion is that this system satisfys design requirement

and has more

actual

application value.Although it needs promotion,this system provides better basis for researching

and development in future.

KEY

WORDS

Hybrid Electric Vehicle,fault

diagnosis,CANopen,CAN

—lI—

独创性声明
本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均
已在论文中作了明确的说明并表示了谢意。

签名:趁翻垂,

日期:

丝!星!笸!墨

关于论文使用授权的说明
本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 (保密的论文在解密后应遵守此规定)

签名:拯囡盈!

导师签名:

第1章绪论

第1章
1.1课题相关背景与发展趋势
1.1.1混合动力汽车的发展





内燃机汽车经过120多年的发展,在安全、舒适和价格等方面取得了重大进 展。但是内燃机机车的发展正在面临能源匮乏、大气污染和地球温室效应等多方 面的挑战。石油资源的开采每年达到十几亿吨,经过长时间大规模的开采,石油 资源日渐枯竭。内燃机汽车在产生动力的同时,会产生很多燃烧废气,包括二氧 化碳、~氧化碳、氮氧化物和碳氢化合物等有害气体,对大气环境造成污染,对 人体造成了伤害。20世纪90年代以来,世界各国对节约能源和改善环境的呼声

日益高涨,研究开发电动汽车成为当今社会的一大热剧¨,各种各样的电动汽车
脱颖丽出【2J【3J。

电动汽车一般包括蓄电池电动汽车或纯电动汽车(EV-Electric Vehicle)、混 合动力电动汽车(HEV-Hybrid Electric Vehicle,简称混合动力汽车)和燃料电池 电动汽车(FCEV-Fuel
Cell Electric

Vehicle)。由于电池技术的瓶颈,纯电动和燃

料电池电动汽车技术发展相对缓慢。混合动力汽车是采用适当的燃料转换装置 (如内燃机)、储能装置和电动机作为混合动力源,让一部分动力由电池一电动机 系统承担。这种混合动力装置既发挥了发动机持续工作时间长、动力好的优势, 又可以发挥电动机无污染、低噪声的好处。混合动力汽车作为最具有实用性价值 的电动汽车,发展速度惊人141。 1、国外混合电动汽车发展 作为一项新技术,90年代以来,混合动力汽车的开发得到了美、日、欧等 发达国家的高度重视,并取得的一些重大的成果和进展15J。 日本由于石油资源匮乏,石油几乎全部依靠进口,早在20世纪70年代就开 始了电动汽车的研究和开发,其电动汽车技术在世界上处于领先地位16J。日本丰田 公司率先于1997年12月将混合动力汽车prius轿车投放本国市场,2000年初又 投放北美市场,在HEV的研发方面已经进入了商业化的规模生产。 美国三大汽车公司的合作,先后推出了以燃料电池汽车,高性能发动机,混 合动力汽车和车辆轻型化等新能源、新技术和新材料为主要开发、创新方向的多 种新概念车【7】【8】。通用汽车公司投入1.48亿美元,克莱斯勒投入8480完美元, 进行为期5年的研制开发工作。

北京T业大学T学硕一1:学佗论文

在欧洲,有由“欧盟”提出的能源和电动汽车研究计划,同时各国还有本国的

研究计划。各大汽车厂商都推出了本公司研制的混合动力汽车。戴姆勒。奔驰公 司的燃料电池汽车和燃料电池大客车在世界上居领先地位,宝马公司还研究和开 发了氢燃料发动机的汽车等清洁汽车19J。 2、我国混合动力汽车发展状况 我国混合动力汽车的研制与西方发达国家相比起步较晚一些Il0。,但是近几年
混合动力汽车的研制受到了足够的重视,国家投入了大量的资金。目前,我国的 混合动力汽车的研制已经取得了一定的进展…】I坨l。在国家科技部、国家高技术 研究发展计划("863”计划)中,设立了电动汽车重大专项,并选择新一代电动 汽车技术作为我国汽车工业自主创新和科技创新的主攻方向,组织汽车企业、高

等院校和科研机构等进行联合攻关,计划在“十五”期间,以电动汽车的产业化技
术平台为工作重点【l引,力争在电动汽车关键技术、系统集成技术等方面取得重大

突破。 一汽集团、东风集团、上汽集团、奇瑞汽车公司等汽车企业,天津清源电动、 大连新源动力、株洲时代集团等一批电动汽车零部件高新技术企业,以及中科院、 清华大学、北京理工大学、中国汽车技术研究中心等相关院校、科研院所200多 家单位参与了电动汽车的研发。目前已经成功研制出了多种混合动力汽车,包括 混合动力电动轿车和混合动力电动大客车【14l【15l,系统地掌握了关键技术。一汽 研发的红旗牌混合动力电动轿车是“863”计划电动汽车中HEV的重大专项课题。 在研制的过程中采用了自主创新的AMT(Automatic
Manual

Transmission)混合

动力系统,AMT混合动力系统为国际首创,已经获得国家专利,结构简单,系

统效率耐16J。东风EQ7200HEV混合动力电动轿车采用了当今先进水平的内燃
机、电动机双驱动的混合动力技术,按照国家标准的工况道路试验方法测试的燃 油消耗比原型车降低30%,排放达到欧III标准

1.1.2汽车故障诊断
随着现代汽车工业的发展,汽车电子化程度日益提高,汽车电子控制系统(燃 油喷射系统、制动防爆死系统、安全气囊等)不断增多。这些复杂的系统,使得 汽车的维修变得很困难。为了便于维修与监测,在汽车控制系统的控制器中,一 般都设计有自诊断功能即车载诊断功能。车载诊断也可以叫做随车诊断,指的是 利用车上的诊断设备进行的实时诊断,诊断信息可以实时的存储。车载诊断系统 就是我们所说的OBD(On
Board

Diagnostic)系统ll 71。非车载诊断(Off

Borad

Diagnostic)指的是利用独立于车辆之外的诊断装置进行的诊断,诊断装置主要 是故障诊断仪。随着电子技术的发展,汽车车载诊断的功能与故障诊断仪的功能 越来越强大1181。如图1—1所示是汽车的诊断网络示意图。

一2一

第1章绪论

图卜1汽车诊断网络
Figure 1-1 Automobile’S diagnostic system

现在的OBD系统的特点就是可实时的自动诊断系统故障,当故障发生时将 故障码存入存储器中,可以通过通讯口进行输出,并且通过故障指示灯或声音提
醒司机出现故障。 OBD的功能主要是: (1)信息采集及其故障辨别。OBD系统实时的采集数据,并且判断数据是否 在正常值范围之内。例如,当获得的信号量值处于正常范围内时,则认为信号正 常:当信号超出正常范围时,ECU将自动诊断为系统处于异常。

(2)故障分类。通过诊断程序检测输出输入信号的异常情况将故障分类为: 不影响正常行驶的轻微故障、引起功能下降的较严重故障以及影响安全的严重故
障。

(3)故障报警。一般是通过报警灯闪亮或声音,向用户报警。 (4)故障存储。将故障以故障代码的形式存储在ECU的RAM中。 (5)故障处理。当发生轻微故障时,为不妨碍车辆正常行驶,由ECU进行 相应的调控。当发生重大的故障时,为了确保必要的最低功能,车载保险系统及 时生效。例如,当进气温度传感器状态异常时,ECU将用标准值进行控制,以 保证通常的行驶功能;当判断出点火系统状态异常时,如果继续运转则可能使催 化剂过热,这时将直接使发动机停止运转。 利用OBD系统能判断出一般用户难以发现的故障,对主动安全起到了重要
的作用。

故障诊断仪是维修人员用于读取存储在自诊断系统内的故障代码以及测试 数据流等的一种离线诊断装置。利用故障诊断仪可以方便的读出电子控制系统的 工作状态和发生故障的部位和故障信息。 汽车故障诊断仪是和OBD系统配套使用的,从本质上看,它相当于OBD 系统的终端设备,起到人机交互的作用。随着微机技术的发展,故障诊断仪能完

北京工业大学工学硕。lj学佗论文

成的功能愈来愈丰富㈣【20I,现归纳如下:
(1)显示故障代码,同时显示发生故障的部位、检查的方法、检测的标准数
据等,并打印上述信息;

(2)清除故障代码; (3)汽车运行时的状态数据的显示,维修人员可对照标准数据,通过分析数
据偏离标准数据的方向和大小找出故障的原因;

(4)存储汽车运行的状态数据和故障信息,向个人计算机或故障诊断专家系
统输出。

1.1.3第二代车载故障诊断系统(OBD.II)介绍
初级阶段的OBD没有统一的标准,这些通讯接口的规格以及通讯的协议都 是不一样的。这样在汽车维修人员进行汽车维修时就要针对各种不同的汽车采用 不同的诊断设备,配上行状各异的诊断插头,对照不同的维修资料,在不同的位 置寻找诊断接口,读取故障信息以排除故障。基于以上考虑,美国汽车工程师协 会(SAE)公布了SAEJl930、SAEJ2012、SAEJl962、SAEJl978、SAEJl979等

系列标准,即OBD.I卜第二代车载诊断系统【2’1。SAEJl930标准定义了标准的电
子系统术语。SAEJ2012标准定义了标准的故障码,SAEJl978标准定义标准的扫 描工具,SAEJl979标准定义了标准的诊断测试模式,SAEJl962标准定义了安装

在仪表板下的标准的16针诊断插头。OBD.II旨在让车载自诊断模块起到监控排 放的作用,即从发动机的运行状况随时监控汽车是否尾气超标,一旦超标,会马 上发出警示,得到了绝大多数汽车故障诊断系统的支持【22I。 标准规定了故障采用5位标准代码表示即故障码DTC(Diagniostic
Trouble

Code)睇引,第1位是字母,后面4位是数字,并且规定如下:首位字母表示设置

故障码的系统,当前分配的字母有4个,“P”代表动力系统,“B”代表车身,“C” 代表底盘,“u”代表通信网络;

第2位字符是0、l、2或3,其中旺sAE(美国

汽车工程师协会)定义的通用故障码,l一汽车厂家定义的扩展故障码,2或3一
随系统字符俾、B、C或U)的不同而不同;第3位字符表示出故障的系统,如 表1.1所示。故障诊断码的举例如表1.2所示。 OBD.II随车诊断的优越性:
(1)统一了汽车内部网络的通信协议 (2)统一了故障诊断接口

(3)统一了故障代码的设置
(4)扩充了随车诊断系统的检测项目

一4一

表1-1故障码第3位字符含义
Table 1.1 The third bit ofDTC

代码
1 2 3 4

SAE定义故障范围 燃料或空气测定系统不良 燃料或空气测定系统不良 点火系统不良或引擎间歇熄火 废气控制辅助装置系统不良

代码
5 6 7—9 A

SAE定义故障范围

汽车或怠速控制系统不良
电脑或输出控制元件不良

变速箱控制系统不良
混合动力

表1-2

SAE标准J1 979故障诊断码的举例

Table 1-2 Example ofDTC in SAE J1979

oBD.1I码
P0010 P0011 P0100 P0200 P0300 P0400 P0500 P0600 P0700 P0801 P0803 P0804 P0900 POAOO





凸轮轴A位簧驱动电路故障(第一列) 凸轮轴A位置正时超前或系统性能故障(第一列)

空气流鬣计信号故障 喷油器电路故障一气缸
个别或多气缸失火 废气再循环流量故障 车速传感器信号输入过低

控制模块程序出错 换档控制系统故障
倒档控制电路故障 升档阀控制电路故障

升档指示灯控制电路故障
离合器执行机构电路开 电机电子冷却液温度传感器故障

OBD—II系统主要监测的部件或系统: (1)催化转化器效率 (2)颗粒捕集器效率 (3)氧传感器劣化 (4)发动机失火 (5)蒸发排放控制系统 (6)燃油系统
(7)EGR等

北京T业大学T学硕十学位论文

1.1.4

CAN总线及高层协议CANopen的发展

1、控制器局域网总线CAN

随着汽车电子线束的不断增加,汽车电子装置之间的通讯越来越复杂。20 世纪80年代初,德国的BOSCH公司提出了用CAN(ControllerArea
Network)

即控制器局域网来解决汽车内部的复杂信号接线,它是目前国际上应用最广泛的

现场总线之一【241。在国外,尤其是欧洲,CAN网络已经被广泛的应用在汽车上,
如BENZ、BMW等。各个车载电子控制装置ECU之间通过CAN总线来交换信

息,汽车公共数据实现了共享,满足了实时性的要求。一个由CAN总线构成的 单一网络中,理论上可以挂接无数个节点,实际应用中,节点数目受网络硬件的
电气特性所限制。 CAN是一种有效支持分布式控制系统或实时控制的串行通信网络,成本低、

可靠性高、抗干扰能力和实时性强等特点使其应用扩大。CAN可以提供高达 1Mbit/s的数据传输速率,当信号传输距离达到lOkm时,CAN仍可以提供高达
50Kbit/s的速率。

目前,CAN的应用范围已经不再局限于汽车工业,而向工业

控制、安全防护、机器人、医疗器械及传感器等领域发展【251。ISO颁布的国际标 准IS011898为CAN规范化、标准化和应月j系统设计铺平了道路。随着研究混 合动力汽车HEV和纯电动汽车EV步伐的加快,混合动力汽车内部结构更加复 杂,CAN总线技术将得到更广泛的应用。 2、CAN高层协议CANopen

CAN通信协议主要揣述设备之问的信息传递方式。CAN层的定义与开放系
统互连模型(OSI)一致。CAN规范只定义了模型的最下面两层:物理层和数据 链路层,这样不同厂商的CAN设备之问可能会由于应用层的不同不能进行有效 的通信,因此要进行高效率的通讯还需要进一步开发高层协议。应用层协议可以 由用户根据需求自己编写或者直接采用国际组织制定的标准协议。当前应用最为

广泛的为DeviceNet和CANopen。CANopen协议是CAN.in—Automation(CiA)协
会定义的标准之一,并且在发布不久就获得了厂“泛的承认。尤其是在欧洲, CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准【26】。

CANopen协议支持各种CAN厂商设备的互用性、互换性,能够实现在CAN
网路中提供标准的、统一的系统通讯模式,并且提供设备功能的描述方式,执行 网络管理功能。CANopen在保证网络节点互用性的同时允许节点的功能随意扩 展,所以在应用中具有很高的灵活性。CANopen协议集包括“通信子集”和“设备 子集”,“通信子集”规定了基本的通信机制及其特性。大多数重要的设备类型都 在“设备子集”的协议中进行描述。设备子集定义了不同类型的标准设备及其相应

的功能。依靠CANopen协议集的支持,可以对不同厂商的设备通过总线进行配
置【271。
一6一

第1章绪论

CANopen在欧洲和美国获得了广泛的认可和大量的应用。从1995年博世公 开CANopen到现在,经过23年的发展,CANopen已经从工业控制领域的应用 发展到装载机械、医疗电子、发电、汽车电子等多个领域。德国CiA协会会员 开发出一系列CANopen产品,在机械制造、铁路、船舶、制药、食品加工、车 辆等领域获得了广泛应用。在美国,CANopen协议已经成为装载机械和公共运 输设备的协议标准,同时也应用于嵌入式系统的控制。CANopen面向对象的功 能设计,以及它的模块化特性和很好的适应性,加快了它成为新一代汽车网络的 标准的进程。

1.2课题来源、意义与内容
1.2.1课题的来源
本课题属于北京工业大学的电动汽车项目,项目来源于:北京市教委重点项 目和北京市自然科学基金共同资助项目(编号:KZ20041000501)。北京工业大学电 动汽车项目的研究目标为:建立以中央监控系统为核心,基于CANopen总线通
信网络的电动汽车能量管理系统。电动汽车项目的控制部分主要分为五大块,即

蓄电池管理部分、电机控制部分、发动机控制部分、制动回馈部分和中央监控系 统。本课题研究的基于CANopen的混合动力汽车车载故障诊系统是中央监控 系统的一部分。混合动力汽车结构复杂,为了便于维修,人们纷纷开始研究混合 动力汽车的车载故障诊断系统。在汽车网络中,引入CANopen高层协议, CANopen面向对象韵功能设计,以及它的模块化特性和很好的适应性,促进了
它的快速发展。

1.2.2课题的意义
现在的OBD系统主要是监测发动机电子控制系统,其实质就是监测汽车排

放。随着汽车内部电子控制系统的不断增加,整车故障也越来越复杂,有必要使 OBD系统增加其它电控系统的监测模块,监测整车的故障。 车载诊断功能是将故障以故障代码的形式存储在存储器中,以及通过点亮故 障指示灯通知驾驶员出现故障。如果驾驶员想详细知道哪个部分发生故障以及发 生故障的原因,必须到维修站由维修人员用故障诊断仪读出故障码,然后对照相 应车型维修手册或诊断手册上的故障码表得到该故障码的具体解释,以及检测故 障的步骤和排除故障的方法。混合动力汽车在传统汽车的基础上增加了蓄电池、 电机等设备,技术科技含量比较高,结构更加复杂,发生故障的可能性也随之增 大。为了能有效的保障汽车驾驶员的安全,必须做到在使用时少出故障,以及出

一7一

北京T业大学T学硕十学位论文

了故障能及时的提示和排除。虽然有些混合动力汽车已经上市,但是针对它的车 载故障诊断系统主要还处于研究阶段。
为了适应上述需要,有必要开发一种基于混合动力汽车的车载故障诊断系

统,既能够进行整车的监测,又能够使传统的车载故障诊断系统与故障诊断仪的 功能相结合。当故障发生时,在车载诊断系统的主电脑中实时的存储和显示故障 信息。对于轻微的故障,驾驶员根据故障信息有可能可以自己解决,做到故障的 及时排除。对于严重故障,维修人员可以通过本故障诊断系统获得更详细的故障 信息,以及时的确定故障发生部位,减少了维修的复杂程度。 在电动汽车领域,很多已经将CAN作为标准的车内通信协议确定下来,但 是CANopen作为CAN的i苛层协议在国内的研究还较少。通过本课题的研究, 以CANopen高层协议为混合动力汽车总线协议,制定针对混合动力汽车的 CANopen故障诊断通信规范,一方面探索CANopen在故障诊断系统中的应 用,填补国内空白;另一方面利用CANopen协议的模块化特点,增强系统的 灵活性、适应性。CANopen秉承了CAN总线的抗干扰性强、高速、实时的优 点,其应用于本故障诊断系统中,确保故障诊断信息的实时传输。

1.2.3课题的内容
本课题所要研究的主要内容就是开发基于CANopen的混合动力汽车车载故 障诊断系统。该系统使传统车载故障诊断系统与故障诊断仪相结合,将故障诊断 仪完善的数据通信功能、友好的界面显示与在板故障诊断的实时性相结合,完成 故障信息如故障诊断码、故障描述等的实时采集与显示,以及故障信息的有效管 理。该系统不仅有故障诊断的功能,还有在线临测的功能。 本论文将从如下几个方面展开: (1)制定针对混合动力汽车的CANopen故障诊断通信规范。通过分析 CANopen协议,制定本车载故障诊断系统以及汽车CANopen网络上其他节点的
整体诊断通信规范。

(2)建立故障信息管理数据库。选择一种合适的数据库,用来存储整车(汽 车上的各个电控系统)的故障信息。通过分析故障诊断系统所要实现的功能以及 故障信息的类型,建立不同的故障信息表。
(3)开发故障诊断管理单元。通过CAN总线接收各个子系统的故障信息代

码以及故障发生前后的所属传感器和执行器的工况参数。分析CANopen报文得 到具体的故障信息,并把这些信息存储到数据库中进行管理,同时点亮故障指示 灯。通过一定的诊断模式,获得更加详细的故障信息。 (4)建立故障诊断人机交互界面,实现故障码、故障描述、实时参数等的数 字化、图形化显示。驾驶员或维修人员依据不同的准入权限,可以通过人机交互

一8一

第1章绪论

界面方便的获得更加详细的历史故障或当前故障信息。

北京Tqk大学丁学硕士学位论文

第2章

系统总体方案设计

2.1混合动力汽车的通信网络设计
混合动力汽车需要电机、发动机、中央仪表监控、整车控制器和电池等部件
的协同工作,这些部件将会在一定的控制策略下经常地切换工作模式12引,这就需

要一个可靠实时的控制网络。CAN总线具有优越的容错性和可靠性能够很好地满 足这种实时控制网络的要求。但CAN本身并非是一个完整的协议,它只包括物理 层和数据链路层,要进行高效率的通讯还要进一步开发高层协议。CANopen是在 CAN2.0基础上发展起来的应用层通讯协议,广泛应用于工业控制、装载机械、

楼宇自动化等多种领域。在欧洲,CANopen被认为是在基于CAN的工业领域中
占领导地位的标准。CANopen是一种公共开放通用的协议,而且精练透明、容易 开发,并且具有可配置性,很容易扩展以构成特定的网络应用。基于这些特点该 混合动力汽车采用CANopen作为控制网络。

混合动力汽车内的各个控制系统作为CANopen网络的节点,通过CAN总
线进行数据交换。网络中最多节点数是127个。车载故障诊断系统作为其中的一

个节点,通过CANopen网络和各个节点之间实现通讯,获得总线上的故障信息 报文,实现对汽车上的各个电控系统的监测和故障诊断。混合动力汽车的整个网
络结构如图2.1所示。

自动变速器ECU
LAN
I I

车载故障诊断系统



l|

发动)0tECU

蓄电池ECU

ABS的ECU

电机ECU

图2.1混合动力汽车网络结构图
Figure 2-1 Network structure of HEV

2.2混合动力汽车的车载故障诊断系统的平台介绍
混合动力汽车与传统汽车相比具有发动机和电机两套动力系统。为了使该混 合动力汽车的故障诊断系统将来方便与OBD.II结合,所以该诊断系统的故障码 采用OBD.II标准的定义方式。它的故障码分为两类,一类是与传统汽车相同的

第2章系统总体方案设计

电控系统采用的OBD.II标准故障码,另一类是自定义的电机、蓄电池、发电机 等部分的专用故障码。故障码能帮助维修人员在及时排除故障中起到很大的作 用,节省大量的时间。该混合动力汽车故障诊断系统所要完成的功能就是当汽车 故障发生时根据CANopen故障诊断通信规范分析故障信息,得到故障码、故障 码中英文描述、故障系统等信息,并把它们显示在故障诊断界面中,点亮相应故 障灯;通过数据库实现对故障信息的有效管理。

2.2.1故障诊断系统的硬件结构
本系统的硬件平台是采用研华公司的UNO.2170工控机,并外扩有10.4寸 触摸液晶显示模块和PC/104双口CAN接口模块。UNO.2170是一款高性能的
Celeron M

1GHZ控制器,256M的内存,具体硬件设置如表2.1,硬件结构图如

图2—2。该工控机体积小巧,而且抗震性高、稳定、可靠,这些特点满足车载电
脑的需要。
表2.1 UNO.2170工控机硬件设置
Table 2—1 Hardware setting of UNO一2 1 70

硬件名称
CPU

硬件特征
Celeron M 256 MB DDRDRAM

内存 串口RS.232
串口RS.422/485 网口

两个9针接口速度50~1

15.2Kps

两个9针接口C.--I配置为RS/232)
速度50-921.6Kps 两个
1 0/1 00 Base.T ILl一45 Ports

USB接口

两个 PCL一841(含两个独立工作的CAN网络)

CAN口

可设置中断3,4,5,6,7,9,10,11,12-,-15
双DB一9针型接口
DB一15

VGA/键盘/鼠标 电源 用 户 界 面 显 ‘一 不 模 块

VGA接口,PS/2键盘、鼠标接口
9—06V

亟圃匝亘至围
CANopen通讯模块 图2—2车载诊断系统的硬件结构图

—蕊磊]兀蕊磊丽

北京T.qk大学T学硕:}:学{市论文

2.2.2故障诊断系统的软件结构
该故障诊断系统硬件支持的操作系统是Windows 入式设备。其优势主要表现在以下几点【291:
(1)灵活性
XP

Embedded。该操作系统

可供设备开发人员利用熟悉的Windows环境构建全功能软件,支持各种高级嵌

仅选择实际所需的驱动器、服务和应用组件,保持操作系统的精巧规格,缩
短整个开发周期。 (2)提高速度

利削熟悉的Windows平台进行构建和测试,包括Microsoft 2005,有助于您的团队提高开发速度,提前完成任务。
(3)经济高效

Visual Studio@

仅安装设备实际所需的组件,简化操作,从而有助于减少维护工作量,显老 提高安全性, 并且便于系统在低成本硬件环境下运行。
(4)提高安全性功能

Windows

XP

Embedded含有Windows

XP Professional高级安全功

能,包括内黄防火墙。大部分安全功能便于内置到设备中,保证客户敏感信息的 安全。 系统软件采用模块化的设计。开发环境使用Visual C++6.0。主要包括 CANopen通信模块、故障诊断管理模块、数据库管理模块、监测报警模块和人 机交互模块。整个软件系统的结构图如图2—3所示



图2-3系统软件结构图
Figure2—’3 Software frame of on——borad diagnostic system

(1)CANopen通信模块
制定混合动力汽车的CANopen故障诊断通信规范,根据诊断通信规范接收

汽车CANopen网络中其他节点(发动机节点、电机节点、蓄电池节点等)的故 障信息,以及汽车运行过程中的重要参数(发动机转速、电池温度、电机转速等)。 (2)故障信息管理数据库 为了方便整车故障信息的管理和检索,建立多个故障表,存储整车的各种故

第2章系统总体方案设计

障信息、标准的故障码以及故障码的具体描述。
(3)故障诊断管理模块

分析故障信息报文,获得故障诊断信息。根据故障发生的时间和部位的不同, 把它们存储在故障信息管理数据库中不同的故障表中。接收的故障码与数据库中 标准的故障码相比较,获得故障码的具体描述。故障码、故障描述等信息可以显
示在故障诊断界面中。

.(4)监测报警模块 如果监测到有故障发生,点亮故障指示灯。根据工况恶劣程度的不同将报警
分为3级。l级报警是绿灯亮,只提醒司机注意,在这种情况下机器还能工作一

段时间。2级报警是黄灯亮,要求司机密切注意故障的发展,但不需要立即检查, 这类故障多属于高温问题。3级报警是红灯亮,故障程度非常严重,对于这种故 障,司机应该立即检查并且维修。
(5)故障诊断界面

故障发生时,实时的显示故障码、故障发生时间、故障级别等故障信息;提 供查询历史故障信息的功能、清除故障码的功能;提供实时监测的功能,对一些 重要的工况参数进行实时的图形显示,并且根据这些图形显示进行故障预测。用 户可以通过液晶触摸屏很方便的操作界面。根据驾驶员和维修人员身份的不同, 对于一些功能设置了功能权限。

北京T业大学T学硕十学位论文

第3章

基于CANopen的故障诊断通信规范

本章对CANopen协议进行了详细分析,并根据本故障诊断系统的诊断功能,

制定了两种基于CANopen的故障诊断通信规范。

3.1

CAN协议
CAN总线的特点

3.1.1

CAN总线的设计采用了许多新技术,具有可靠的错误处理和检错机制,与 一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。现总
结其特点如下【30】:
·

(1)CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上 其他节点发送信息,而不分主从。 (2)在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时 要求,优先级高的数据最多可在1349s内得到传输。 (3)CAN节点只需通过对报文的标识符滤波即可实现点对点、一点对多点及 全局广播等几种方式传送接收数据。 (4)CAN采用非破坏总线仲裁技术。当多个节点同时向总线发送信息出现冲 突时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地 继续传输数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情 况下,也不会出现网络瘫痪情况(以太网可能)。
(5)CAN的直接通信距离最远可达10 km(速率5 kbps以下);通信速率最高 可达1 Mbps(此时通信距离最长为40 m)。

(6)CAN上的节点数主要取决于总线驱动电路,目前可达110个。在标准帧 报文标识符有11位,而在扩展帧的报文标识符(29位)的个数几乎不受限制。 (7)报文采用短帧结构,传输时间短,受干扰概率低,保证了数据出错率极 低。 (8)CAN的每帧信息都有CRC校验及其他检错措施,具有极好的检错效果。. (9)CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他
节点的操作不受影响。

(10)CAN总线具有较高的性能价格比。它结构简单,器件容易购置,每个 节点的价格较低,而且开发技术容易掌握。

第3章基于CANopen的故障诊断通信规范

从以上这些特点我们看出,CAN总线应用在汽车网络上有其他总线无可比 拟的优势。混合动力汽车在传统汽车的基础上增加了蓄电池、电机等设备,结构、 布线更加复杂,对故障、汽车的运行状态、汽车重要参数等信息传递的准确性和 实时性要求也更高。把CAN总线应用在混合动力汽车上不仅能简化线束、实现 整车信息共享,同时保障了信息传递的准确性和实时性,使汽车驾驶员及时的了 解汽车运行状态或发生的故障,以及时采取处理措施。
3.1.2

CAN协议的分层结构
Link

CAN遵从ISO/0SI模型,CAN的结构划分为两层:数据链路层(Data

Layer)和物理层(Physical Layer)。数据链路层又分为逻辑链路控制子层(LLC,
Logical Link

Contr01)和介质访问控制子层(MAC,Medium Access Contr01)。逻辑

链路控制子层(LLC)的作用如下:

·为远程数据请求以及数据传输提供服务;
·确定LLC子层接收的报文中哪些报文实际上被验收; ●为恢复管理和过载通知提供手段。

介质访问控制子层(MAC)是CAN协议的核心,它的作用主要是传送的规则, 即把接收到的报文提供给LLC子层,并接收来自LLC子层的报文,也就是控制 帧的结构、执行仲裁、错误检测、错误的标定、故障的界定。总线上什么时候开 始发送新报文及什么时候开始接收报文,均在MAC子层里确定。位定时的一般 功能也可以看做是MAC子层的一部分。自然,对于MAC子层是不允许修改的。 物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输,因 此涉及到位定时、位编码/解码、同步的描述。同一网络的物理层对于所有节点
都是相同的。CAN协议的层结构见图3—1。

3.2

CANopen协议分析
现场总线通常只包括一个网段,所以现场总线网络一般只实现了OSI网络模

型的第l层(物理层)、第2层(数据链路层)、第7层(描述层)。CAN现场总 线仅仅定义了第1层、第2层,这两层完全由硬件实现。CANopen作为CAN的 标准化的应用层协议,由一系列通讯子协议(Communication Profile)和设备子
协议(Device Profile)构成【311132J。CANopen不仅定义了CAN报文中的1 1/29位标

识符、8字节数据的使用,更重要的是在CAN网络中提供了标准统一的系统通

讯模式、设备功能描述和网络管理的功能。在OSI模型中,CAN和CANopen 之间的关系如图3—2所示。CANopen设备的组织结构如图3—3所示。

北京工业大学丁学硕:匕学位论文

应用层

应用层 表示层 会话层 传输层 网络层 数据链路层

.}




数据链路层 逻辑链路控制子层LLC 验收滤波 过载通知 恢复处理 介质访问控制子层MAC 数据包装/解包 帧编码(填充,消除填充) 介质访问管理 错误检测 错误标定 应答 并行转换为串行/串行转换为并行 物理层 位编码/解码 位定时 同步 驱动器,接收器特征

监督器


\.



/\’

爿故障界定





7‘ 总线故障管理

物理层

图3-1
Fi gure3—1

CAN协议的层结构
Layer
structure

of

CAN

Device Profi le CiADSP一40 1

Device Profile CiA DSP.404

Device Profile CiADSP—XXX




Comm unication

岛是盯7ICANopen

Pro舭ct栅删

_


I●I_-__●__-●
CAN Controller OSI Layer2 Chip CAN2.OA

粒椐锦鼢层 ”。。“9“7“

●_●_●●一_____

OSI La,,erlLaye

‘黼“
图3—2



/\


‘一




/:\ ‘、/ V

ISo 11898

刃Q夕&夕N久 蟛
Figure3——2 Position frame of

埝∥懈∥淤.
ChNopen in 0SI
—16一

able

CAN、ChNopen标准在0SI网络模型中的位置框图
CAN and network model

第3章基于CANopen的故障诊断通信规范

CANopen设备

C kN
‘L

通讯接口:
PD0, S00,

对象字典: 索引1 索引2 索引n

应用: 应用程序, 设备子协议实现

l/



特殊功能对象, NMT对象

图3-3 CANopen设备的组织结构
Figure3—3 Organizational structure of CANopen equipment

图3—3中,对象字典是CANopen的核心,各种通讯模式和相关的网络管理 及配置都通过访问对象字典来实现。通讯接口提供了所有通讯对象和功能函数, 用于在下层传输数据。应用部分实现设备的功能描述。
3.2.1

CANopen协议的对象字典

对象字典(OD—Object Dictionary)133]是一个有序的对象组,每个对象采用一

个16位的索引值来寻址,同时定义了一个8位的子索引访问数据结构中的单个 元素。对象字典描述了CANopen设备的所有数据类型、通讯参数和应用对象, 并存储应用中输入输出的数据。结构参数表如表3.1所示。
表3.1对象字典整体数据分布表
Table 3—1 Overal l data distribution table of

object

dictionary 0
…?,

..索引区域
0001H ̄009FH 00AOH~0FFFH 1 000H~1 FFFH 2000H-5FFFH 6000H.-9FFFH A000H-FFFFH

7~



参数功能

,l二1

定义数据类型 保 留

与通讯相关的参数

用户自己定义的特定参数
与特定设备相关的参数,用于存储相关数据 保 留

对象字典最大能占64K的存储空间,但不是以上所有的参数定义都要实现。 一个CANopen节点只需要提供对象字典中规定的必须对象,以及设备要完成特 定功能所需要的对象。CANopen对象字典中描述通讯参数部分对所有CANopen 设备都是适用的,而设备相关部分存储与特定设备相关的参数,所以对于不同类
的设备是不同的。

CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设
备和它的网络行为的所有参数,常用参数如表3.2所示。

北京T业大学T学硕十学位论文

表3—2对象字典常用参数
Table 3-2 Common parameters of object dictionary

索引
1000 1001 1003

子索引
0H 0H 0H 1H 0H

1004

1H 2H

1005 1006 1007 1008 1009 100A 100B 100C 100D 100E 1012 1014 1015 1200. 127F

OH 0H 0H 0H OH OH 0H 0H 0H 0H 0H 01-1 0H 0H 1 H 2H 3H OH lH 2H 3H 0H

参数名称 设备类型 错误寄存器 预定义错误域 错误历史 支持PDO数目 同步PDO数目 异步PDO数日 SYNC的标识符 通讯循环周期 同步时间窗宽度 设备名称 硬件版本号 软什版本号 节点地址 节点保护时间 保护时问闪数 :1y点保护标识符 时间标记帧标识符 应急对象标识符 应急对象禁J}二时问 入口数目 Ser剑Cli的标识符 Cli到Ser的标识符 SDO客户节点ID 入口数目 Ser到Cli的标识符 Cli到Set的标识符 SDO』j&务器的ID 入f_j数日 接收到PDO的标 识 传输类啦

类型特征
U32, U8, U8, U32, U32, U32, U32,
ro ro ro

范围
NO No 1 NO 0—1FFH

默认值
N0 NO NO No No NO NO 80H 00000000H 00000000H NO No No NO OH 0H 7001-1+node 100H 80h+node No NO 1 200:600h+node 1 200:580h+node
·

Mo
M M M M
o o o O o O O 0 o o o o o o o O O o o o o o o o O’ o

rw
ro ro ro

同上 同上
No No NO No NO NO 1.127 NO NO NO N0 No No 3 NO NO NO 3 No NO No 2—4

U32,nⅣ U32, rw

U32,nv Vstr, Vstr, Vstr, Vstr, U16, U8, U32, U32,
ro ro ro ro

rw rw
nⅣ

rw

U32,nv U16,n^, U8,
ro

1200.7F nv 1200.7F rw U8, U8, rw
ro

(Ser. Sdo)
1280— 12FF

可变
3 NO NO

U32,nv U32, U8, U8,
nv

(cu. SDO)
1400. 15FF

rw
ro

町变
No 1 400:200H+node l 40 1:300H+node

1H 2H 3H 4H 0H

U32,n^, U8,n^, U16,
nv

No
No NO 0—7 1—64 No 2-4 No


Ib巾Do

依设备协议而定
N0 N0

o o o o o o o


1600— 17FF

禁㈦时间
CAN协议优先级 PDO映射的数日 第n个PDO信息 映射的格式 入口数目 放送到PDO的标 识 传输类型 禁【Ⅻ寸问 CAN协议优先级 发送PDO信息的 映射格式

U8,n^, U32,n^, U32,nⅣ U8, U32, U8, U16, U8,
ro

依没备协议而定 依设备协议而定
NO 1 800:1 80H+node

1.40 0H

1800. 19FF 1H 2H 3H 4H 1— 64

nⅣ

1 80 l:280H+node rw rw rw No No O.7 N0


TxPDO

依设备协议而定
NO NO

O o o 。


lA00— 1BFF

U32,九^,

依设备协议而定

注:①U32,U16,U8:表示数据为无符号的32、16、8位数据;②nv:读写型数:ro: 只读型数据:③默认值:系统上电初始化时即设定此值:④M/O:该参数是CANOpen 规定的必选值M还是可选O。⑤索引(16bits)和子索引(8b砖)为十六进制形式。
一18一

第3章基于CANopen的故障诊断通信规范

如图3.3中所示,对象字典位于通讯程序与应用程序之间,向应用程序提供 接口,应用程序对对象字典操作就可以实现CANopen通讯。对象字典中对不同 的参数规定不同的访问方式:只读方式(RO)、只写方式(WO)、读写方式(WR)
和必选/可选方式(M/O)。

3.2.2

CANopen协议的通讯对象

为了实现CANopen设备的通讯、网络管理、紧急报文处理等功能,定义了 4类标准的通信对象,分别为:网络管理对象烈MT:Network ManagemenT)、服
务数据对象(SDO:Service Data Object)、过程数据对象(PDO:Process
Data

Objeet)

和特殊功能对象【3411351。一个CANopen设备通过这些通讯对象提供的相关服务与 另一个远程的CANopen节点进行数据交换。接下来对这些通讯对象进行详细的
介绍。 1、网络管理NMT’

NMT用来传递主节点对整个CANopen网络系统的管理和配置信息。NMT 服务是基于主从通讯模式,即只允许主节点主动发起通讯,从节点永远等待主节 点的要求。在CANopen网络中,只能有一个NMT主节点以及一个或多个从节
点。

网络管理服务对象包括模块控制服务、错误控制服务等。NMT模块控制服
务控制CANopen节点的初始化、预操作以及操作状态的转换。如图3.4所示,

各个状态在CANopen主站的控制下进行转换。每个CANopen从节点上电初始化 以后自动进入预运行状态,NMT主节点可以使从节点进入运行状态。NMT错误 控制服务包括节点保护(Node Guarding)、心跳报文(Heartbeat)和Boot.up报 文,用来对网络中主从节点的状态进行监视。
初始化 通讯对缘标识符号的初始化,应用数据初始化


J自动进入
预操作状态 只能进行SDO通讯
I ●

N^,IT

丈:启动远程节点



I NMT报文:进入预爿

操作状态

操作状态 ’PDO通讯SDO通讯

图3-4节点的操作状态及相互转换
Figure3—4 CANopen node’s operating state and conversion

北京T业大学T学硕十学位论文

2、服务数据对象SDO

在CANopen设备中,所有可通过CAN总线访问的参数和变量都配置在其 对象字典中。通过SDO可以对对象字典中的所有对象进行读写操作。SDO服务
是客户/服务器类型,即为每一个消息生成一个应答。用SDO建立两个节点之间

的通讯时,访问者是客户,对象字典被访问且提供所请求服务的CANopen设备
是服务器。客户要通过申请命令从服务器的对象字典中读取或写入数据。SDO

报文有两种传送机制:加速传送和分段传送。加速传送最多传输4字节数据,分
段传输可以传输大于4字节的数据。SDO报文结构如图3.5所示。

SDO通讯有较多的协议规定。报文的第一个字节带有协议信息,即命令字。
SDO命令字包含的信息如下:
·

下载/上传(Download/Upload) 分段/加速传送(Segmented/Expedited
transfer)

·请求/应答(Request/Response)
·

·CAN帧数据字节长度

·用于后续每个分段的交替清零和置位的触发位(toggle

bit)

SDO传输性质根据命令字的不同来区分。其中下载是指主节点对从节点对象 字典写数据,上传是指从对象字典中读出数据。命令字语法和细节可以参考CiA
关于CANopen的基础协议DSP301。
Client--..Server/Server—.-Client B-yte 1—2

Byte 0

Byte 3

Byte4-7

SDO命令字

对象索引

对象子索引

最大4字:1了数据(加速传输)

Client—Server/SerVer—Client
Byte0

B”e1·7

SDO命令字

最火7字。霄数据(分段传输)

图3—5 SD0报文结构
Fi rowe3-5 The
strllctllre

of

SDO

message

3、过程数据对象PDO PDO用来传输实时数据,优先级较高,一次最多传送8个字节的数据。PDO 通讯模式是生产者/消费者模式,每个PDO可以被多个节点接收。PDO通讯没有 协议规定,报文数据内容只通过CAN ID定义。所以PDO消息的内容是预定义
的,或者在CANopen网络启动的时候通过SDO配置。每个PDO在对象字典中

用2个对象描述:PDO通讯参数和PDO映射参数。PDO通讯参数包含被PDO
使用的COB—ID(Communication Object Identifier)、传输类型、禁止时间和定时

器周期。PDO映射参数包含一个对象字典中对象的列表,这些对象映射到PDO

第3章幕于CANopen的故障诊断通信规范

里,包含它们的数据长度。创建者和接收者都必须知道这个映射,以解释PDO 内容。接收PDO的映射参数定义在对象字典的索引1600H一17FF之间,发送PDO
的映射参数在1AOOH.1BFF之间。

PDO有三种触发模式,即:1)事件触发。PDO的传输由某一事件触发,例 如数字I/O口状态改变,超过预先设定的值,或定时器中断等。这种模式可以使 总线负载达到最小,在相对低波特率下获得比较高的通讯效率。2)同步触发。 通过传送每l到240个SYNC消息后触发。同步PDO通过接收SYNC对象实现
同步。3)异步触发。由远程帧触发传送。当某节点收到远程帧时,就会向总线

发送相应的PDO数据。PDO通讯参数中定义了PDO的传输类型,传输类型定 义了不同的PDO传输模式。如表3—3所示 一个PDO可以指定一个禁止时间,即定义两个连续PDO传输的最小间隔时 间,避免由于高优先级信息的数据量太大,始终占据总线,而使其它优先级较低 的数据无力竞争总线的问题。禁止时间由16位无符号整数定义,单位100us。
表3.3 PDO传输类型
Table 3-3 Transmission type of PDO message

触发PDO的条件 传输类型
SYNC 0 1—240 252 253 254 255 B o B B o O o O o RTR Event B

PDO传输

同步,非循环
同步,循环 同步,在RTR之后 异步,在RTR之后

异步,制造商特定事件
异步,设备子协议特定事件

说明:B=both needed,O=one or both;SYNC:接收到SYNC object。 RTR:接收到远科帧。Event:例如数值改变或者定时器中断。传输类型为: 1到240时,该数字代表两个PDO之间的SYNC对象的数目)。

4、预定义报文或者特殊功能对象 CANopen还定义了三个特定用于同步、应急指示和时问标记的对象,用于配 合各种数据的通讯和网络管理。
(1)同步对象(SYNC)


同步对象生产者为同步对象消费者发送同步报文,同步对象消费者接收到后 同步执行任务。在SYNC报文传送后,可以在给定的时间窗口内传送一个PDO报 文,同步PDO}艮文的固定传输时间保证了传感器设备正常的采集过程信号,也保 证了驱动设备按照固定的方式发出驱动信号。SYNC报文可以不传送数据以使报
文尽可能的短。 (2)时间标记对象(Time—Stamp)

北京下qk大学下学硕j:学何论文

为应用设备提供一个微秒级的网络时钟。有时,在一些大型网络里,网络的
传输速度比较慢,那些对时间要求苛刻的设备要求非常精确的时间同步。 (3)应急对象(Emergency Object)

应急指示报文由设备内部出现的致命错误触发,由相关应用设备已最高优先
级发送到其它设备。适用于中断类型的错误报警信号。一个应急报文由8字节组

成,格式如图3.6所示。
sender-}receiver(s)
CoB.ID Byte0—1 Byte 2 Byte 3-7

错误寄存器
0x080+Node——ID

应急错误代码 (对象0x1001) 图3-6应急报文结构

制造商特定的错误区域

Figure3‘—6 The

structure

of Emergency

message

其中,第l、2-7-节代表16进制的应急错误代码,含义如表3.4所示。应急错

误代码中’XX’部分由相应的设备子协议定义。错误代号FFxx,表示与设备相关的错
误,制造商可以根据相应的设备制定特定的错误信息。 错误寄存器(Error Register)在设备的对象字典(索引Oxl001)中,表3.5说

明了错误寄存器的位定义。设备可以将内部错误映射到这个状态字:肖中,并可以
快速查看当前错误。 应急报文的第3—7字节是制造商特定错误区域,可以包含与设备相关的其它 的错误信息。 一个CANopen设备必须支持一定数量的网络管理服务,需要至少一个SDO,

每个生产或消费过程数据的设备需要至少一个PDO,所有其它的通讯对象根据
具体应用是可选的。

3.2.3

CANopen协议的通讯模式

在CANopen网络中所有通讯对象采用唯一的标识符,为了减少简单网络的 组态工作量,CANopen定义了强制性的缺省标识符分配表。这些标识符在预操 作状态下可用,通过动态分配还可以修改136】。缺省ID分配表是基于11位CAN.ID,
包含一个4位的功能码和一个7位的节点ID(Node.ID),如图3—7所示。Node.ID

由系统集成商定义,例如设备上的拨码开关设置,变化范围是1.127。 预定义的连接集定义了4个接收PDO(Receive--PDO),4个发送PDO

(Transmit--PDO),1个SDO(占用2个CAN—ID),1个紧急对象和1个节点
错误控制(Node.Error-Contr01)。支持不需确认的NMT—Module—Control服务,
SYNC和Time Stamp对象的广播。缺省ID分配表如表3-6所示。

第3章基于CANopen的故障诊断通信规范

表3-4应急错误代码
Table3-4 Emergency
error

code

应急错误代码
OOxx 10xx 20xx 2lxx 22xx 23xx 30xx 3lxx 32xx 33xx 40xx 41xx 42xx 50xx 60xx 6lxx 62xx 63xx 70xx 80xx 8lxx 81 10 81 20 8130

Error

代码功能描述 Reset或No Error
Generic Error Current

Current,device input side Current,inside the device Current,device output side Voltage

Mains Voltage
Voltage inside the device Output voltage Temperature Ambient temperature Device temperature Device hardware Device software Internal software User software Data set Additional modules

Monitoring
communication CAN overrun Error Passive Life Guard Error

或Heartbeat
8140 82xx 82lO

Error’

Recovered from BUS—Off Protocol Error
no processed Due to length error

PDO

8220

Length exceeded

90秘
F0xx FFXX

External error
Additional functions Device specific

表3-5错误寄存器位定义
Figure3—。5 Error regi ster Bit O l 2 3 4 5 6 7 bit definition

错误类型
Generic Current Voltage Temperature Communication Device profile specific

Reserved(=O) Manufacturer specific
一23—

北京T业大学-T学硕十学位论文

10





















Function Code

Nodr—lD

图3.7预定义连接集ID
Figure3-·7 Default CAN·-ID chart

表3-6 CANopen设务缺省ID分配表
Table 3-6 Assignment of identifiers in CANopen predefined connection set

CoB.ID
00h 80h 80h+Node———ID 100h l 80h+Node lD


NMT
SYNC



CAN.ID
000H 080H 08lH—OFFH 1001一l 18111—1FFtI 20lH一27FH 28 ll{一2FFH 301l{.37FH 38 ll_I.3FFH 401 H.47FH 481H一4FFH 501H一57FH 581H一5FFH 601I l一67FIt 70 lI-l一77FH

字典索引

1 0051一I,1 006H,1 007H 1024H.1015H 1012tl,1013H 1800II 1400tI 180lI{ 140lH 180211 14021-1 1803H 1403H 1 200H/1 280tt 1200H门280H 1016H.1017H

Emcrgency Time stamp

PDOi(发送) PDOI(接收) PD02(发送) PD02(接收) PD03(发送) PD03(接收) PD04(发送) PD04(接收) SDO(发送朋艮器) sDO(接收/客户)
NMT Error Control

200h+Node ID 280h+Node ID 300h+Node ID

380h+Node ID 400h+Node—ID 480h+Node——I D 500h+Node lD 580h+Node——ID 600h+Node—I D 701 h.77Fh

注意:

l、PDO/SDO发送/接收足由(slave)CAN:1,点方观察的。2、NMT错误控

制包括节点保护(Node Guarding),,凸,106报文(Heartbeat)和Boot—up协议。

3.3故障诊断系统的CANopen诊断通信规范制定
CANopen设备的应用层协议包含两部分:基本通讯协议和设备协议。在混 合动力汽车CANopen通信网络中,故障诊断系统节点的通讯架构如图3.8所示。 CANopen协议中没有专门的子协议详细的描述有关设备故障诊断的规范,

虽然有紧急报文的机制来实现故障诊断,但是比较简单,而且优先级比较蒯明。
随着汽车电子化程度的不断提高,汽车内部线束不断增加,信号也越来越复杂, 特别是对于具有两套不同动力系统的混合动力汽车,简单的紧急报文机制远远不 能满足它的需要。这就需要用户根据特定应用制定相关的CANopen故障诊断通

第3章基于CANopen的故障诊断通信规范

图3-8节点通讯结构图
Figure3——8 Strcture of node communication

信规范。本文针对混合动力汽车的故障诊断系统提出了一种基于服务数据对象 SDO的故障诊断通信规范。接下来对这种规范进行详细的介绍。 CANopen协议定义了四种通信对象来实现CANopen设备之间的通信,其中 过程数据对象PDO用来传输实时数据,优先级比较高,可以事件触发,并且可 以被一个节点发送网络中的多个节点进行接收,尤其是在汽车网络中有利于实现 汽车内部重要参数的共享,这样看来用PDO来传输故障诊断数据理论上是可行 的。但是CANopen预定义的连接集只定义了4个发送PDO,4个接收PDO,也 就是说整个CANopen网络中每个节点最多使用4个PDO。发动机控制系统是汽 车CANopen网络中的一个子节点,对于汽车动力系统,仅仅标准的OBD.II故 障码就有约2700个,4个PDO远远不能满足故障诊断的需要,所以用PDO来 传输故障诊断数据的方法是不可取的。 CANopen通讯对象SDO用来访问CANopen设备的对象字典,可以在设备 之间传输较大的低优先级数据。此故障诊断系统的大量故障诊断信息,包括故障 码、故障级别、冻结帧等数据是存储在相应设备的对象字典中的,所以可以使用 SDO来传输故障信息。但是SDO报文是请求/应答类型,只有来自客户的请求才 会有服务器的应答,所以仅仅使用SDO不能完成故障信息的发送。CANopen本 身有应急指示对象可以实现故障诊断,应急报文由设备内部出现的错误触发,适 用于中断类型的错误报警信号。CANopen应急报文(详见3.2.2节CANopen协
议的通讯对象)的第4到第8个字节是制造商特定的错误区域,可以包含与特定

设备相关的错误信息。所以可以把SDO传输大块数据的特点和应急对象的这些 特点相结合,使用SDO和应急对象这两种通讯对象共同实现故障信息的传送。


故障诊断系统中CANopen设备的故障信息存储在对象字典中,每一个标准

的故障码都对应一个对象字典项。当故障发生时,可以利用应急报文去触发一个 SDO来读取此故障所对应对象字典项的故障诊断信息,应急报文中包含当前发 生故障的故障信息所存放的对象字典的索引和子索引,以汽车中发动机节点发生

北京T业大学T学硕十学位论文

故障为例,具体通讯示意图如图3-9所示。

图3-9故障信息通讯示意图
Figure3—。9 Communication show map of trouble information

根据应急报文各部分的定义,应急错误代码和错误寄存器中都有与设备相关 的错误的规定。利用报文中制造商特定错误区域来传送与设备相关的错误信息。 应急报文如表3.7所示。 SDO加速传送最多传输4字节数据,故障码和故障级别要使用3个字节表 示,有些冻结帧数据的长度大于1个字节,所以SDO采用加速传送和分段传送 两种传送方式。SDO报文结构如图3.10所示。
故障码是采用OBD—II标准的故障码格式,故障码和故障级别在报文中的结

构如表3-8所示。冻结帧数据是指当故障发生时截取的相应电控系统的一些重要 运行参数,以供汽车维修时参考。不同的电控系统,冻结帧数据所代表的参数类 型是不同的,由故障码的第一和第三位来区分,具体对应关系如表3-9。 在对象字典中故障信息存放区位于索引9000.9FFF处,如表3—10所示,故 障信息的具体分配见附录。故障信息包括故障码、故障级别、冻结帧三部分。 利用CANopen应急报文和通讯对象SDO的通信规范利用了CANopen标准的通 信模式,并且可以传输大的数据,有利于大量诊断数据的传输。本故障诊断系统 中采用了基于服务数据对象SDO的故障诊断通信规范。

第3章基于CANopen的故障诊断通信规范

表3.7与故障相关应急报文
Table3—7 Emergency message about trouble CoB.ID

B”e0—1

Byte2

Byte3

Byte4

Byte5

B”e6

B舛e7

0x080+node——id

应急错误

代码
FF00

错误寄 存器 主索 引高 2位

制造商特定的错误区域 主索 引低 2位 子索 引

0x080+node——id

20

。备用

备用

Client->Server(节点号node_id)



COB.1D 0x682+node—id

B”e0

B”el一2

B”e3

Byte4-7

SDO命令字

故障信息主索引

故障信息子索引

Client<-Server CoB.ID

B”e0

Bytel-2

B”e3

Byte4-5

Byte6

Byte7

0x682+node.—id

SDO命 令字

故障信息 主索引

故障信息 子索引

故障码

故障级别

Client<-Server

B”e0

B”e1-7

SDO命令字

冻结帧数据

图3.10故障信息SDO报文结构
Figure3——10 SDO message structure about troubl e

表3—8故障诊断码和故障级别结构
Table3.8 Structure of DTC and trouble decree

B”e6

B”e5

B”e4

故障级别
B 7 G D1 B 6

故障码第1-3位
B 5 D2 B 4 B 3 B 2 D3 B 1 B O B 7 B 6 D4

故障码第4-5位
B 5 B 4 B 3 B 2 ‘D5 B 1 B 0

D1:表示故障码的第一个字母的代码,动力系统P为00,车身系统B为0l,底盘系统 C为10,网络通信系统U为11; D2、D3、D4、D5:分别表示故障码的第二、第三、第四、第五个数字;G:表示故障

级别,00H表示最严重的故障,红色故障指示灯闪烁;01H表示次严重的故障,黄色故
障指示灯闪烁;10H表示轻微故障,绿色故障指示灯闪烁。

-27-

北京T业大学T学硕十学位论文

表3-9汽车电控系统与冻结帧数据的对应关系
Table3—9

Relationship of automobile’s electronic

system

and

freezed data

故障码 第1位

故障码 第3位
O一6 7.9

电控系统
发动机控制系统 自动变述器控制系统

冻结帧参数 发动机转速、冷却液温度、进气温度 变速器油温、节气门传感器、变速器转速 电机转速、电机温度、蓄电池电压 驾驶员安全气囊触发器、前座乘客安全气囊 触发器 外部温度传感器、冷却液温度 钥匙状态、发动机控制状态回答、钥匙实数 制动踏板位置、车速 高度控制阀、压力传感器 前左轮、前右轮、后左轮、后右轮述度,制 动灯开关 无



电机控制系统


蓄l乜池控制系统
0 B

安全气囊系统 空调系统 防盗系统 巡航控制系统 悬架电二r控制系统
ABS

1 2 0 l

C 2



网络通信

表3-10对致字典中的故障信息分配
Teble3’’10 Assignment of trouble information in

object

dictionary

索引
9000H.93 FFH

予索引
00

数据 用到的予索引个数 动力系统故障信息 川到的予索引个数 车身控制系统故障信息 用到的。r索引个数 底盘控制系统故障信息 用到的子索引个数 网络通信系统故障信息

其他
9400H.97FFH 00

其他
9800H一9BFFH 00

其他
00 9COOH一9FFFH

=l£他

一28—

第4章MySOL数据库的应用

第4章MySQL数据库的应用

4.1

MySQL数据库介绍
MySQL是瑞典的T.c.X公司负责开发和维护的,它是一个真正的多用户、多

线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的
数据库语言,它使得存储、更新和存取信息更加容易。MySQL是一个客户机/服

务器结构的实现,它由一个服务器守护程序mysqld和许多不同的客户程序以及 库组成的【3羽。它的主要目标是快速、健壮和易用,为了实现这个目的,MySQL必 须牺牲一部分灵活而强大的功能,如子查询、存储过程和触发器等。因而,MySQL 在某些应用中缺乏灵活性,但这也使它对数据的处理速度较其它数据库服务器至 少快2"--.-3倍。MySQL的主要特点总结!zn-Ft39】:
(1)开源性

由于其开源性,所以用户在使用的过程中可以除去不需要的功能,简化 MySQL,以提高速度。如果是为了自行开发一个应用软件而不是进行商业销售,
就可以免费使用MySQL,并H MySQL AB提供方便的技术支持。 (2)可移植性

MySQL可以在各种主流的操作系统上运行(Windows、Linux、Mac
多种语言。 何困难。 (3)性能高

OS

X和

各种UNIX版本),支持C、C++、C撑、Java、Perl、PHP、Python、Visual Basic等

在大多数情况下,数据可以从一个系统传送到另一个系统,没有任

MySQL的体积小、速度快,它的速度快于大多数的数据库。MySQL支持多 种数据表类型,包括MylSAM类型。MylSAM数据库与磁盘非常地兼容而不占用 过多的CPU和内存。还可以通过使用64位处理器来获取额外的一些性能,因为 MySQL在内部很多时候都使用64位的整数处理。
(4)功能

MySQL提供了开发人员所需要的大多数功能,如完全的ACID兼容、支持大
多数ANSI SQL、联机备份、复制、安全套接层支持、与几乎所有编程环境的集

成。 (5)易于学习



MySQL易于使用和管理,有多种方便的用户操作界面可以用来管理MySQL

北京工业大学T学硕十学位论文

服务器。

MySQL的这些优点推动了它的快速发展,MySQL用户的数量一直在增加。
经过多年的发展,MySQL已经是使用最广泛的丌源数据库系统。

4.2故障信息管理数据库的建立
4.2.1

MySQL数据库的选择

本文中故障诊断系统的故障码采用OBD—II标准的定义方式,每一个故障码
代表着一个唯一的故障。随着汽车电子化程度的不断提高,汽车电子控制系统不 断增加,尤其混合动力汽车的结构更加复杂,出现了很多各种不同的故障,故障

码也越来越复杂。为了方便存储以及管理这些标准的故障码以及当前的、历史的
故障诊断信息,在故障诊断系统中使用了数据库。

近20年来,数据库技术不断发展,至今已经有很多成熟的商品化的数据库管
理系统(DBMS),例!t11:SQL Server、Oracle、Access等,它们的应用越来越广泛,但对

用户来说还存在不足之处:
(1)SQL Server:只能在Windows上运行,没有丝毫的开放性,移植性较差:

SQL验证的登录只对特定的服务器有效,也就是说,在一个多服务器的环境中管理 比较网难;对于每一个数据库,必须分别地为其设定管理权限;价格也不便宜。 (2)Oracle:价格昂贵,服务费用也比较高;对硬件要求也比较高,使得整体投
入非常高:

(3)Access:主要用于单机桌面小型数据库管理系统,属于Local DBMS,难以
支持大型应用;速度比较慢,功能还不够完善;

在众多的数据库管理系统中,MySQL数据库是许多小型、中型或大型网站数
据库服务器的首选。在混合动力汽车的车载故障诊断系统的开发中使用MySQL

数据库,主要是由于MySQL的下述优势: (1)是目前运行速度最快的SQL语言数掘库,可满足车载故障诊断系统的实
时性要求: (2)多样的数据存储类型和超大的容量,可以方便完整地保存整车故障诊断

信息,以及反映汽车运行状态的各种数据: (3)支持多平台,可以在不同的操作系统下进行数据的准确移植; (4)它的开源性,有效地降低了开发成本。

第4章MySQL数据库的应用

4.2.2故障信息管理数据库的结构与功能
MySQL是一种关系数据库系统,关系数据库系统里的数据只能被存放在结 构化的数据表里。数据表里的每一行被称为一条数据记录,每条记录可以包含多 个字段,每个字段对自己所能存储的信息类型又有着一定的要求【40】。 首先建立故障信息管理数据库OBD,在该数据库中建立了四个故障信息表,
分别是当前故障表pre 表sys 速度快。 当前故障表pre Dte用来存储汽车当前正在发生的或最近发生的还未被排除 的故障的信息,pre Dtc表的属性如表4—1所示。表中的四个字段preDtc、preDate、 、历史故障表 his Dtc 、故障码总表 main Dte ctD.统系子、

。数据表采用 MyISAM 类型, MylSAM ctD_行执,少源资统系用占库据数

preDegree、preData分别存储汽车当前故障所产生的故障码、当前故障发生时间、
当前故障的级别、当前故障发生时的冻结帧数据。
表4-1 pre_Dtc数据表的属性
Table4-1 Attribute Property of pre_Dtc datasheet
?雾

羹,字段
prelD preDtc preDate preDegree preData

数据类型



属性
NOTNULL

索引、外键约束条件
主键 外键main
Dtc.mainDtc

.鬟

mT
CHAR(5)
DATETlM吧

AUTO——INCREMENT
NoTNULL NoTNULL

CHAR(2)

VARCHAR(50)

历史故障表his Dtc用来存储过去发生的故障所产生的还未被清除的故障信 息,his Dtc表的属性如表4.2所示。表中的五个字段hisDtc、hisDate、hisDegree、

hisDteChi、hisDteEng、hisData,分别表示历史故障产生的故障码、历史故障发
生时间、历史故障级别、该历史故障码的中文解释、该历史故障码的英文解释、

以及该故障曾经发生时的冻结帧数据。该数据表中的数据按照它们被录入或修改 时的先后顺序排列的。
故障码总表main Dtc用来存储该故障诊断系统的所有故障码以及这些故障

码的中英文描述,包括所有OBD.II标准的故障码以及自定义的一些故障码。 OBD—II标准的故障码由五位组成,每一位代表着不同的含义。Main Dtc表包含 上千条记录,部分数据如表4.3所示。表的属性如表4.4所示。
子系统表sys Dtc如表4—5所示,用来存储故障所属汽车的子控制系统。表 4—6所示为sys Dtc表的属性。

通过当前故障表、故障码总表、子系统表之间的相互检索,获得故障码的具 体描述以及发生故障的电控系统。OBD数据库的数据表之间的引用关系如图4.1

北京T业大学T学硕十学位论文

所示。
表4-2
his

Dtc数据表的属性

Table4-2 Attribute Property of his—Dtc datasheet

字段
hislD hisDtc hisDate hisDegree hisDtcChi hisDtcEng hisData

数据类型
INT

属性
NOTNULL

索引、外键约束条件 主键 外键main
Dtc.mainDtc



AUTO——INCREMENT

CHAR(5)
DATETIM『E

NOTNULL NOTNULL

CHAR(2) VARCHAR(200) VARCHAR(200) VARCHAR(50) 表4-3
main

Dtc数据表

Table4—3 Attribute Property of main—Dtc datasheet mainDtc

systemID


,,

.dtcChi



。dtcEng

j.jj

一一

P0010

凸轮轴A位置驱动电路故 障(第一列) 凸轮轴B位置正时滞后 (第一列) 空气流量计信号故障 喷油器电路故障(气缸) 个别或多气缸失火

A Camshaft Position Actuator Circuit

(Bank 1)
B Camshaft Position-Timing

P0015



Over-Retarded(Bank 1)
Mass
or

P0100

l 2

Volume Air Flow Circuit

Mal function

P0200 P0300

Injector

Circuit

Malfunction—Cylinder



Random/Multiple Cylinder Misfire
Derected Exhaust Gas Recirculation Flow

P0400



废气再循环流量故障
车速传感器故障 连续交流连接故障 换档控制系统故障 倒档控制电路故障 表4-4

Malfunction
Vehicle Speed Sensor ‘SeriaI Communication Link Transmission Control

P0500 P0600

5 6 7

P0700

System(MIL

Request)
Reverse Inhibit Control Circuit

P0801



main

Dte数据表的属性

Table4-4 Attribute Property of main—Dtc datasheet

i。

字段
mainDtc systemlD dtcChi dtcEng

数据类型
CHAR(5) CHAR(I)
DATETlME

‘一

属性|、7、,
NoTNULL



索引、外键约束条件,
主键 外键sys_Dtc.systemID

。j

NoTNU嘎,L

CHAR(2)

NoTMⅡL

一32—

第4章MySQL数据库的应用

表4-5 sys_Dtc数据表
Table4-5 sys_Dtc datasheet
。 ‘ 。



’.








systemlD
0 1 2 3 4 5 6 7 8 9 A

system

燃油和空气计量及辅助排放控制系统

燃油/空气控制系统 燃油/空气控制系统
点火系统 排放控制系统 发动机转速/怠速系统 ECU和ECU输…信号 变速器 变速器 变速器 混合动力

表4-6 sys—Dtc数据表的属性
Table4—6 Attribute Property of ?

sys』tc datasheet
索引、外键约束条件’i


字段
systemlD system

数据类型
CHAR(1) VARCIJAR(200)

属性
NOTNULL

一:

主键

NoTNULL

图4.1 OBD数据库的数据表关联/引用关系图
Figure4-l Relationship of datasheets in OBD database

一33—

北京T,Ik大学T学硕十学位论文

4.3

MySQL的C函数API的应用
为了提高对数据库的访问效率,增强系统的性能。MySQL系统在提供ODBC

驱动程序的基础上,还为客户端提供了许多应用程序接口,如C、C++、Perl、 JAVA(JDBC)、Python、PHP署ITCL的API接El,极大的方便了各种用户对数

据库的访划4¨。ODBC(Open Database Connectivity)即开放式数据库互联,它的
工作依赖于数据库制造商提供的驱动程序,女IIMySQL数据库使用MySQL
ODBC

驱动程序。使用ODBC API的时候,Windows的ODBC管理程序把访问数据库

的请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS(数据库管 理系统)完成数据库访问工作1421。由于不同的数据库管理系统之间的差异,它们 所提供的数据库功能也就各有不同。这样,通过ODBC API就不可能完全拥有 所有的数据库功能,因而影响了程序对数据库的控制功能,也就不能充分发挥数 据库的能力。这种统一的接口方法简单直接但是效率不高,不适合大型复杂的系 统使用。故障诊断系统的实时性:要求很高,因此数据库的访问效率非常重要。由 于C语言的高效率,使用C API访问数据库可以提高数据库的访问效率,所以采
用基于C API访问数据库的方法。 MySQL C客户程序开发库的调用接口是在mysql.h头文件中定义,文件 mysql.h定义了基本的MySQL常量和数据结构。另外头文件my.global.h负责

把其他几个常用的头文件女flstdio.h包含到源文件中,如果正在Windows上编译 这些程序,系统还会根据兼容性的要求把头文件windows.h也包含进来【4引。
MySQL


API由一组函数以及一组用于函数的数据类型组成,这些函数与

MySQL服务器进行通信并访问数据库,可以直接操控数据库。C API数据类型包 括:MYSQL(数据库连接句柄)、MYSQL
FIELD(字段信息)、my SER.、)集果结回返询查(

MYSQL--Row(行集)、MYSQL_-FIELD—OFFSET(字段表的偏移量)、MYSQL (自定义的无符号整型数)等。 C API gnolgnolu.的供提

比较重要的函数包括:.mysql—init()、mysql_real_connect()、mysql_query()、

mysql_close()、mysql_store_result()、mysql_fetch_row()等,以下对这些函数功
能进行简单的介绍。 (1)MYSQL+mysql—init(MYSQL幸mysql)

该函数用于初始化连接。MYSQL数据类型是一个包括连接信息的结构。
初始化一个类型为MYSQL的数据结构,为执行mysql
connect laer_。备准做)(

参数mysql为指向该结构的指针。若初始化成功,返回初始化的MYSQL数据结
构的指针,否则返回NULL。 (2)MYSQL半Mysqlreal_connect(MySQL枣mysql,
Const char*host,

第4章MySQL数据席的应用

Const char謇user, Const char木password, Const char}db, Unit port, Const char母unix_socket, Unit

client_flag)

该函数创建与服务器的连接。参数host可以使一个主机名或一个IP地址,user
参数是用户的MySQL登录账号,password参数是user的登录口令,db参数定义了 连接的数据库,port是供TCP/IP连接使用的端口,unix socket参数定义了到一个 套接字的路径,以改写默认端口,client flag参数是标志值。 (3)int mysql_query(MYSQL拳mysql,const char宰query)

该函数执行query字符串中的SQL语句,不要在查询结尾处添加分号。如
果成功,返回0。 (4)MYSQL_RES宰mysql—store_result(MYSQL幸mysql)

该函数返回SQL命令等执行的结果。函数新建一个MYSQL_RES的数据结 构,把结果存储在该结构中。如果查询没有匹配的结果,则返回空数据集。如果 出错,返回NULL,否则返回MYSQL RES结构的指针。
(5)MYSQL.I己OW mysql_fetch_row(MYSQL_RES幸resul0

该函数取回结果集中的下一条记录,如果没有记录或出错,返回NULL。一 条记录中的字段数可以用mysql—num_fields(result)获得,各字段的值可以用
row[0】至lJrow[mysql_num fields(result)一l】的数组来访问。 (6)void Mysql_free_result(MYSQL_RES幸result)

该函数释放结果集所占用的内存。用此函数释放客户端程序所生成的每一个
结果集。

一个简单的访Ih-JMySQL数据库的应用程序一般包括以下几步骤:
(1)初始化MySQL库 (2)初始化数据库连接句柄 (3)连接数据库

(4)通过SQL语句操作数据库并处理相应数据 (5)关闭数据库连接


(6)结束MySQL库 具体代码结构如下:

拌include<my_global.h>//负责包含几个常用的头文件,如stdio.h 撑include“mysql.h’'//包含定义基本的MySQL常数和数据结构的头文件
im main 0



北京T业大学T学砀!十学位论文

//定义访问数据库所需的变量 MYSQL MYSQL_FIELD MYSQL_.ROW
char

myData;

MYSQL_RES·res;
·fd;

row;‘

query[200];

//初始化一个数据库连接
if(!mysql_init(&myData)) {

);

。‘

//连接数据库
if(!(mysqlreal_connect(&myData,”localhost”,”root”,”password”, ”database—name”,0,NULL,0))) { //如果连接不成功,相应的操作 );

∥对指定的连接执行查询
If(!mysql_query(&myData,"SQL”)) {

∥如果查询成功,执行相应SQL命令
);

//关闭数据库连接
mysql__close(&myData); >;

第5章故障诊断系统软件设计

第5章故障诊断系统软件设计

整个车载故障诊断系统的软件系统主要包括CANopen主站协议栈的应用、 故障诊断管理及报警单元、故障诊断界面设计及功能实现三个方面。软件流程图
如图5一l所示。

图5-1系统软件流程图
Figure5-1 System software flow chart

北京丁业大学丁学硕士学位论文

5.1

CANopen主站协议栈的应用
混合电动汽车各个模块都有许多微处理器在控制运行和管理,它们都通过

CAN总线相互进行数据交换,诸多控制器在CANopen网络中都是通讯节点,网 络中最多节点数是127个,同时必须用一个节点充当主站。CANopen主站除需 具备CANopen设备的基本功能外,还需要具备NMT Master的功能,即对

CANopen网络进行管理。在整个汽车网络中,把车载故障诊断系统作为CANopen
主站,其他都为从节点。

-利用CANopen主站协议栈提供的接口函数和API函数来开发故障诊断系统
CANopen主节点,以完成设备具体的应用。该CANopen主站协议栈由我们智能

测控技术研究室自主研发,被封装成静态库CANopenMaster.1ib,函数声明的头文 件为openapi.h。故障诊断系统CANopen主节点的整个软件层次图如图5—2所示。
5.1.1

CANopen主站的功能实现

MFC应用程序 CANopen配置 |SDO}

PDO|lSYNC{

EMCY
。L

APl




I I I
interface接口函数 CANopen主站协议栈 图5-2系统软件层次图

M!





Figure5—-2 System software layer chart

CANopen主站实现的功能如表5.1所示。该CANopen主站协议栈实现了 CANopen通信协议所规定的大部分功能,可以完全自主的处理CANopen的通信 流程,包括带实时监控的发送/接收SDO、发送/接收PDO、同步报文SYNC、应 急报文EYCN、网络管理、心跳报文机制、节点保护等,并且用户可以通过 CANopen主站提供的配置界面对PDO、同步报文等进行手动配置。

5.1.2操作系统消息机制的应用



Windows操作系统为每一个正在运行的应用程序提供了一个消息队列。当有 事件发生后,windows并不是将这个激发事件直接送给应用程序,而是先将其翻 译成一个消息,然后把这个消息加入到这个应用程序的消息队列中去,应用程序

第5章故障诊断系统软件设计

表5—1
Table5一l

CANopen主站实现功能
ChNopen master function

功能名称
Ds30l

必要性

完成情况

SYNC的生成 SIX)客户端 SDO服务器端 PDO发送 PDO接收 心跳报文机制 :1了点保护机制 从:协点状态控制 紧急报文 时间戳
DsP302

必要 必要 必要 必要 必要 必要 必要 必要 必要 可选

完成,最小l毫秒 部分,仅支持加速方式 完成,可支持多个 完成,所有方式 完成,所有方式 完成 完成 完成 部分,通知上层,未解析,可禁止 不支持

节点启动检奄 配置及软件下载 钨_=7『NMT命令 SDO通道建立 主站竞争机制

可选 可选 可选 可选 可选

部分完成,除配置检查的所有部分 不支持 完成 不支持 不支持

其他
PDO和SDO最大支持数量 对象字典的类型 对象字典的修改 对象字典项的新建与删除 直接对从:1了点对象字典操作 可移植性 支持CANopen规定的最人数量,受系统 运行速度制约 支持1,2,4字二1了类型 完成 完成 完成 部分修改,可运仃十所有支持C编详器的 操作系统和无操作系统平台

需要通过消息循环来接收这些消息。消息统一的由MSG结构来描述,这个结构
定义如下:
typedef struct

tagMsg

{ HWND
hwnd;

∥接受该消息的窗口旬柄 //消息常量标识符,也就是我们通常所说的消息号

UINT message;

WPARAM wParam;//32位消息的特定附加信息,确切含义依赖于消息值
LPARAM

1Param;//32位消息的特定附加信息,确切含义依赖于消息值

DWORD time;//消息创建时的时间

北京工业大学T学硕十学位论文 POINT pt;

//消息创建时的鼠标/光标在屏幕坐标系中的位置

)MSG;

一般情况,应用程序只需要对结构中的消息窗口句柄hwnd、消息标识符 message、附加参数wParam和1Param4个字段进行判断就可以区别一个消息。系统 保留消息标识符message的值在0x0000在0x03ff(WM USER一1)范围,这些值被系 统定义消息使用,应用程序不能使用这些值给自己的消息。系统允许用户把自定
义窗口消息映射为范围在WM USER+1到0x7册之问的值。

CANopen主站上传给MFC应用程序的消息类型和附带数据类型如表5.2所
示。 表5.2消息类型和附带数据类型
1、able5—2 message types and incidentaldata types

消息类型
CAN——INIT—.FAIL

意义 CAN控制器初始化失败 CAN控制器错误的触发


l 2 3 4 5 6

附带数据
NULL NULL

WRONG——EVENT——FROM——CAN
EMERG ENCY——MSG

报文中断
收到紧急报文 收到来分类报文 发送报文失败

CM_CANMsg CM_CANMsg
NULL

UNKOWN——MSG SEND——MSG——ERROR
ODINDEX——CHANGE

对象字典项改变

CM——ODIndex

在MFC应用程序中,自定义窗口消息CANOPEN MSG,消息标识符分配为
WM—USER+0x6 1 7。通过消息处理函数OnCANOPENMsg(WPARAM wParam, LPARAM IParam),处理CANopen主站发送的这些消息。程序框架如下:
void

CCanopen_config::OnCANOPENMsg(WPARAM wParam,LPARAM IParam) switch(wParam)

{ {
case



1:

//处理消息CAN


INIT FAIL

case

2:

∥处理消息WRONG
case

EVENT FROM CAN

3:

//处理消息EMERGENCY MSG

第5章故障诊断系统软件设计

5.1.3

CANopen主站API函数

CANopen主站API函数的数据结构和类型定义如下:
MSG—WPARAM CM—ODIndex CM_CANMsg 消息类型定义

随消息发送的对象字典项信息 随消息发送的报文信息

.基本API函数分类如下: 1)控制CANopen主站
CM
StartCANopen

启动CANopen主站 停止CANopen主站 读取主站对象字典项

CM—StopCANopen

CM

ReadODEntry

CM WriteODEntry CM Del0DEmry
CM CreateODEntry

修改主站对象字典项
删除主站对象字典项

新建主站对象字典项

2)SDO相关 CM WriteSDO CM
ReadSDO

修改从节点的对象字典项 读取从节点的对象字典项

3)配置RPDO/TPD0 CM CM CM
CreateRecvPDO CreateTranPD0 ConfigRecvPDO

在主站的对象字典中初始化一个接收PDO 在主站的对象字典中初始化一个发送PDO 在从站的对象字典中初始化一个接收PDO (对主站而言) 在从站的对象字典中初始化一个发送PDO
(对从站而言)

CM_ConfigTranPDO

CM SendRTR

向某一个节点发送PDO远程请求

4)网络监控 CM CloseMonitorCAN CM OpenMonitorCAN 5)控制CANopen网络中的节点 CM CM CM
StartNode EnterFreOperation ResetNode

关闭监视线程 开启监视线程

发送NMT命令使节点进入运行状态 发送NMT命令使节点进入预运行状态 发送NMT命令使节点重启 动态添加一个节点的相应对象字典设置 执行对节点的启动检查

CM AddNodelnNetwork CM
BootUpNodes

北京-E,lk大学T学硕十学位论文

6)操作系统消息 CM_DeleteMsgData

释放随消息的数据结构空间

5.2故障诊断管理及程序实现
故障诊断管理单元处于整个车载故障诊断系统的核心位置,负责整车(混合 动力汽车的所有子系统)故障信息以及重要运行参数的分析处理。数据流动过程 如图5.3所示。要完成的功能主要可以分为以下几个方面:
(1)分析CANopen报文,获得故障诊断信息、汽车实时运行参数等。

(2)根据CANopen故障诊断通信规范,分析故障信息,把它们存储在故障
信息管理数据库中的当前故障表中。 (3)根据故障级别的不同,点亮相应的故障指示灯。

(4)通过一定的诊断模式,获得故障码的具体描述。故障码、故障所属系统、
故障描述等信息显示在故障诊断界面中。

/一一——、、
\、
一/

数据

·●——+

MySQL
C API

—●——+

\/

故 障 诊 断 管 理

./。

故障信息、 实时数据显示

、删搬警

图5-3平台数据流图
Figure5—3 Terminal Data Flow

根据基于SDO的CANopen故障诊断通信规范,由应急报文和SDO报文共同实

现故障信息的传送。应急报文中有发生故障产生的放障信息所在对象字典的索引 和子索引值,然后使用SDO读相应对象字典项的诊断数据。故障诊断管理程序流
程图如图5—4所示。 诊断信息中包括故障码、故障级别、故障发生时的冻结帧数据三部分。故障

码中包含汽车电控系统代号、故障所在子系统代号、故障代码等信息。根据故障 诊断码与冻结帧数据意义的对应关系表3-9,可以得到具体的汽车参数。把这些 诊断信息存入当前故障表中,数据库处理流程如图5—5所示。 存储在数据表里的数据通常没有特定的顺序或者不是我们所想要的结果,要 想有效率的利用这些数据并且从中获取对自己有用的数据,必须构造并执行相应 的查询(query)。通过对当前故障表、故障码总表、系统表执行某种查询命令, 可以得到故障的详细信息并且显示在故障诊断界面中,如故障码的具体描述、故 障发生系统、故障发生时问等。程序中通过函数QueryDataBase()实现,代码如
下所示:

第5章故障诊断系统软件设计

分析CANopen 紧急报文

汽车内部故障?

二工[
触发RSDO
解析SDO报文

否 相应处理

获取故障信息 存入数据库

根据故障级

别报警

获取故障码 具体描述

故障信息显示

图5_4故障诊断管理流程图
Figure5-4 Diagnostic

management

flow chart

各种消息
CANOPE N

处理应急报文,根据不同的 消息处理函数 OnCANOPENM sg() { switch(wParam) {
Case 1:

/户‘

信息填入数据库的不同字段
'L—,

MSG

故障码i I故障时间II故障级别 冻结帧数据l
当 前故障j K
preDtc preDate
1r 1r

按钮消息

Case 2: Case 3:

preDgree

preData

其他消息 ) >

图5-5数据库处理流程
Figure5—5 Database process flow

QueryDataBase() {
CString rowDTC; int i; int rowIndex=0;

/宰查询命令,获取故障码的中英文描述、故障系统等信息枣/
-43。。

北京T业大学工学硕jI:学位论文

sprintf(query,"select preDtc,preDate,preDgree,dtcEng,dtcChi,system from pre_Dtc,main_Dtc,system_Dtc WHERE main—Dtc.mainDtc=preDtc.preDtc
AND main_Dtc.systemlD=system_Dtc.systemlD”);

if(mysql_query(&myData,query)) { fprintf(fb,"%d,%s、n”,mysql_errno(&myData),mysql_error(&myData)); )
else

{ res=mysql—store_result(&myData); num—fields=mysql_num_fields(res); while(row=mysql_fetchrow(res)) {

//向列表控件插入一行,并插入第O列的数据
m~listdtc.Insertltem(rowlndex,row【O】); for(i=1;i<num_fields;i++) { m—listdtc.SetltemText(rowlndex,i,rowIi]);//设置其他列的数据 }
rowlndex++;


rowlndex=O;

mysql__free_result(res); > )


在本故障诊断系统中,故障被分为三个级别A、B、C类。A类故障是最严 重的一类,只要发生一次就触发红色指示灯闪烁;B类故障是次严重的一类故障, 只有在连续的两次行驶过程中发生才使黄色指示灯闪烁,并存储故障码;C类故 障表示发生一个瞬时轻微故障,绿色指示灯闪烁。程序中使用了三个定时器分别 控制三介故障指示灯。程序实现如下:
if(!CM_ReadSDO(2,index,subindex,&value,&type)) { switch(value&OxOOOOOOff) {
case

0x00:

trouDgree=’S’;//发生轻微故障
temp一>m_dtcshow.SetTimerFun(1);//定时器1控制绿色指示灯
break;

第5章故障诊断系统软件设计
case

Ox0000000 1:

trouDgree=’M’;//较严重的故障发生
temp.>m
break;
case

dtcshow.SetTimerFun(2);//定时器2控制黄色指示灯

Ox0000001 0:

trouDgree=~L∥严重故障发生
temp->m_dtcshow.SetTimerFun(3);//定时器3控制红色指示灯
break;

> }

5.3故障诊断界面设计及功能实现
故障诊断人机交互部分是整个诊断系统不可或缺的一部分。为了方便驾驶员 和维修人员使用,设计时应该尽可能的使它易于操作。当故障发生时诊断界面上 故障指示灯闪烁,这时驾驶员可以很直观的获得所发生故障的故障码,以及该故 障所在的系统和发生部位等信息。一些重要的工况参数也可以在界丽中实时的图 形显示,维修人员可以根据这些图形显示进行故障预测。 由于不同的汽车生产厂商或同一生产厂商不同汽车型号的汽车采用的通信 协议可能不一样,为了使该软件可以应用在不同的汽车上,在进入诊断界面之前 首先要进行车型选择和通信协议的选择。主诊断界面主要包括故障信息显示、实 时数据监测显示、数据流波形显示、专业术语解释四个窗体,分别通过Tab控件 四个属性页来实现,用户可以点击不同的标签进入到相应的页面中。各个界面之 间的层次关系如图5-6所示。故障信息显示界面如图5.7所示。
车型选择


通信协议选择


诊断界面选择


故障诊断码

,,


数据流波形

实时数据监测

故障指示灯、 当前故障码、 历史故障码等

发动机转速、

电动机温度、
电池电压等

电机电流波形、 氧传感器波形
1】‘

图5-6界面之间的层次关系
Figure5.6 Relationshio of the interfaces

圈5.7故障信患罹d;羿面
Figure5 7 Display interface oftrouble information

i;虽界面显示的详细信息及f℃码实现如下: (1)当前故障码信息:n-在发g一的敞障或近如发乍的还朱被排除的故障所J” 牛的故障码,以及放障发生时间、故障级别、该故障所属予系统、故障发生部位 等信息。通过放障诊断管妇!单元将这些信息键示在当前做障码医域。 (2)历史故障码信息:过去发牛的故障所产牛的还未被消除的故障码,以及 该故障曾纤发生的tl,ff.J—fn发生次数等。选中当f前故障码缸示医域t{·的一项,,!.L击

查询按钮.会显不萄牧障曾经发生的时叫眦及次数。实现代码立¨下:
,丰获取列表控件巾所选项的文本+/
curScl


m_iistdtc


GetNcxtItem(一llLVNI^LLiLv N1 SELECTED); GctliemText(curSel,O);

queryDtc

m_listdtc

/+查渤历史故障信息+/
sprintf(query,”select group concat(dtcdate separator’,。)a3 dtcdate,counl(dtceount)
from his

Diewheredtc=’%s+groupbydtc",queryDte);

if(mysql_query(&myData,query)) {

∥输山错误信息
fprintf(Po,"%d,%s、n”,mysql_errno(&myData),mysql_error(&myData)); )
else



第5章&烯诊断系统轼件设计
res 5

mysql—store_result(&myData),

//界血中挂示 while(row2

mysql—fetch—row(re@
InsertItem(rowlndex,row【0]),



mtistdtc2
m listdtc2

SetltemText(rowlndex,】,row[1】),

rowIndex++;

) mysql—free_result(res); )

(3)故障指目i灯区域:设直r红色、黄色、绿色3个故障指示灯。根据故障 }Z度的不同,不同的指不灯闪烁。战障灯的闪烁由战障诊断管理单元控制。 (4)建议操作:对维修人员及驾驶员的维修建议。这一部分是故障渗断々家 系统的输出.为以后增加争家系统提供界向支持。 (5)故障码表的查询:用J、可以通过这个功能访问故障信息管理数据库中的 做障码袭。维修人员可以获得更洋尽的历史故障和当前故障倍息。操作界面及显 示结果如罔5-8所示。故障信息有两种排序方式,按故障发生时问排序和按故障 ,…重程度排序,用户rf以根据着重点的不同选择不同的排序方式。在程序r|1'通
过ORDER BY予旬对结果集中的行进行排序实现,默认足按于|序排序,口J以添

加DESC(降序)对列名进行限制。

;。







讨一瞳:,。

素瓣 静赫 ~一 。,。 。

髀默 谶蒸;li

图5-8故障信息表的选抨卉询
Figure5—8 Trouble information table’s query interface

北京T业大学I学硎±学忙论文

f6)清除故障码;当故障排除后需要清除当前故障码,咀减少存储空间的浪 赞。历史故障码也需要进行定期清除。为了防止驾驶员由于误操作清除了宵价值 的故障码,所以对这一功能设置了功能权限,驾驶员不能随便的消除故障码,以 免影响维修人员对故障的正确判断。要清除故障码的话,首先进行身份验证如图 5-9,并清除当前故障,则在当前故障码显示区域内选择耍清除的一项或儿项, 然后会出现“是甭确定清除"的消息框,点-咿确定”完成当前故障的清除。若选 择清除协史故障,则在故障已经完全排除后,由维修人员报槲点火开关丌闭循环 次数、救障发牛时问等条什手动清除相应的历史战障。只有当确定发现而且修理 好了发现的所有故障源的uJ候,卅能清除战障码。当维修人员完成r故障信息的 清除T作,点击按钮“退{|j登录”退出。
本车载撒障诊断系统除了有诊断的功能还有兜时监测的功能。与汽车仪表f『J

常规显示1i吼鹾系统的监测功能真实的反应了汽午内部他感器和执行器的T作
l扎压和状态,为渗断故障提供很好的依据,驾驶员可以随时了解汽车的工作状况。 宴时数据脏测界面如图5—10所示。在该羿而的设订斗l,采用了控件组合框。组 台框由个列表框和一个静态文本控件组成,当用,一在列表框巾选巾一个项目 时,该项13将显示在静态文本巾。这样,可以确一一个大小打限的界而中昆示卫多 的参岔。为了使驾驶员或维修人员能^脱的看到一唑重要参量的变化.更快的削 断做障,所以对一些参量采用图形化的砸示方法,如斟5.11所示。这些实时数 据的传输通过CANopen的通讯刘缘PDO来实现。

刳5-9清除故障码身份验证界而
Figures-9 Idgntiiy validate interface

镕5审&障谚断系统#柑&计

筐釜鲞兰竖塑匣婴壁卿
婺。
Ⅲ●_Ⅲ■_


手。
K,’1

手。
二。

6^

攀。

÷。

■÷。

釜,
(=)o@

闰5.10实时数掘监测界面
Figum5一10 Real-time data interface

陲蒜』装!
图5-lI图形化显示界面
Figure5-11 Graphicinterface ofsystem

l藿耋蒌萋i

北京f业★学T学坝二学位论史

第6章故障诊断系统的测试

6.I测试平台的搭建
为了测试臣故障渗断系统的功能,利用TI公司的32位定J。.L DSP芯片

rMS320F2812仿发动机控制器构成CANopen网络一个从节点,与作为CANopen 主站的故障诊断系统构成个CANopen网络,如图6-1所示。乍载跨断系统和 仿发动机控制系统构成了CANopen网络卜的蹦个节点,没冒节点号分别是#1、
#2。

幽6-I

CANopen网络

Figure6—1 CANopen network net

利用TMS320F2812的eCAN模块作为CAN控制器,智能测拄技术研究室 自主开发实现r从节点n句CANopen协议栈。eCAN模块是Tj公司新一代产品 DSP芯片TM320F28x的32位高级CAN控制器,完全兼容CAN2 0B协议,能 在有干扰的环境早使川上述卧议,而且还能+j其它控制器串行通信【4…。该 CANopen从站实现丁节点『fJ通讯初始化、定义和访问对象字典、PDO通讯、SDO 加速传输方式通讯、应急机制、节点保护等功能,协议栈原理图如图6—2所示。 此图中的上层主要是关于协议栈与对象宁典进行交互处理,对象字典OD在 CANopen协议中起着类似数据库的功能,涉及整个协议的运转参数以及标准的

第6章故障诊断系统的测试

故障码都存放在里面,在代码中通过一个读写功能模块进行读写。整个协议栈通 过Mainframe模块与上层应用层进行数据交换。

图6.2

CANopen从站协议栈原理框图

Figure6—2 CANopen slave protocol Stack Frame

6.2从节点故障诊断应用程序的开发
ICETEK—F2812一A评估板提供了四位可读入数字量的开关
USER

SW(SW0..SW3),这些接口不使用TMS320F2812的芯片管脚实现。可

以用作DSP的输入信号,软件可以读取它的状态。开关的寄存器定义和说明如 表6一l所示。利用开发板上的这四个拨码开关触发紧急报文事件,来传输故障发 生时产生的故障信息。四个拨码开关事件对应着四个故障发生,在对象字典故障
码区的对应关系如表6—2所示。
表6.1 SWR寄存器:地址是0xC0001 SWR register:address is 0xC000 1
……0

Table6-1 7

……4 3

无效位

SWR3
R.x

SⅥ吓匕
R—x

SWRl
R.x

S、m
R—x

R:读允许,w:写允许,R/W:读写允许,.0:复位值,.x:没有固定值 SWR0、SWRl、SWR2、SWR3:四位开关。当开关连通(处于ON一侧)时,寄存器

读入…0’,当开关断开(不处于ON一侧)时,寄存器读入“1”。寄存器可读,在使用时
可以通过读操作得到四个开关的当前状态。



北京Tqp大学T学硕十学位论文

表6.2拨码开关事件故障码分配表
Table6-2 Assignment table of switch event DTC

拨码 开关

主索 引
9000H

子索 引
OH lH

对应故 障码

数据 类型
U8

默认诊断数据

权 限

04H Faultlnfor.faultCode=0x000000 1 O

l'w rw

SWR0

P0010

Faultlnfor

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,O) SWRl
2H P001l

Faultlnfor

Faultlnfor.faultCOde=0x000000 11

l'W

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)

S、凇
SⅥR3

3H

P0012

FaultIntbr

Faultlnfor.faultCode=0x000000 1 2

rw

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,O)
4H P0013 Fauitlnfor

Faultlnfor.faultCode=0x000000 1 3

rw

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)

在代码中大量利用C语言中的结构体,联合体数据类型,以及数据、列表、
队列等常用的数据结构。为了简化明了,如下定义常用数据类型:
typedef char typedef typedef U8; U 1 6; U32;

unsigned int unsigned long

故障信息定义为如下结构体:
typedef struct—.Faultlnfor


U32 faultCode; U8

//故障码和故障级别信息

freezeData[8];//冻结帧数据

>Faultlnfor;

整个CANopen网络软件流程图如图6.3。

6.3测试结果显示
依次拨动四个拨码开关,有四个故障码产生。这时,报文监控窗口显示报文 如图6—4。驾驶人员此时所看到的故障诊断界面的运行结果如图6—5所示,通过
诊断界面,用户可以方面的查询历史故障和当前故障的各种信息,根据显示的故

障信息采取相应的措施。

薹!耋些璧兰垩圣篁墼型塞

罔6-3 CANopen网络软r}流程目 Figure6-3 SoftwareflowchartCANopen network

5 5 5 5 5 5 4 4 4 4 4 d 3

TSD0

COB 587

Fi



0 dala

d3目9口41 3 0l u 0 ff D ZⅡ90 o 4 o D 0 9D 3 0 0 0 0 H 0 2D 90 0 3 0 n

RSD0.COB 6Ⅱ2

nr

u data月0 0 90 4 0 0 0 0 4 3 0 90 31 2 0l 0 40 43

Fn旧n帅“COB
TSD0:COB

8Z rt r U data 0 data

5蛇rt r

RSDO:CO日G02tlr 0 data

Emerg…CO日日2
TSDO:c08 nsn0:c0B 6Dz

rtt 0 data

582ttr口d8h
rlr

0帅211

01 n

Fmclg…COR TsD0:COR诣7fit
RSDO Elne COB 602

n data
rtr

40 0 q0 7 0 OⅡ口 43口gullu U 0Ⅱ 40 0 901 H O 0 0 0 0 0 20 9D 0l 0 0

87

n data”u 2D 9目0 2Ⅱ0

n dala 0 dala

nr

rnt¨w

CO日82 nf 0 data
rt r

N¨T Er r:C0口70z

0 data

幽6-4故障报文显示
Figure6-4Troublemessages display

北京I。业大学工学坝I学位论文

报文监控窗口L}】,每三个报文代表着个故障发生,即Emergency、RSDO、
TSDO。报文解释如r:
】4:42TSDO:COB 582 rtr 0 data 43 0 901 10 0 0 0

表示主节点接收到从节点索引0x9000H,了索引00H处的敞障信息0x0000001 0,
即发生故障的敞障码是P0010.故障级别:S.轻微做障
14:49TSDO:COB 582nr 0 data43 0 90 2】1 01 O

袁示{节点接收到从节点索引0x9000H,,索引021I处的故障信息0x0001001l, 即发生^盘障的故障码足P0011.敞障绒刖:M.较严币故障
14:52TSDo COB 582nr 0 43 0 90 3 12 0 l O

表示上仃-L接收jⅢ从节点索引0x900011.r索引03H处的救障信息0x000100】2, 即发生敞障的敞障码是P0012,故障级别:M,较严重敞障
14:54TSDO COB 582 rtr0 43 090 413 010 0

衷不主节点接收到从节止l索引0x9000H,r索引00H处『向敞}事情息0x0010001 3, un发生故障的敞障码是P001 3,赦障级别:L,严巫敞障

Figure6-5

圈6-5故障{j息显示界面 Display interface oftrouble info唧atlon

结论





本文首先介绍了混合动力汽车以及CANopen协议在国内外的发展现状,阐明 了开发适合混合动力汽车的车载故障诊断系统的必要性。根据第二代车载故障诊 断系统OBD—II以及CANopen在汽车各电控单元之间通信的优越性,提出了以 CANopen为通信网络的混合动力汽车车载故障诊断系统的总体设计方案。通过对 CANopen协议、故障诊断系统的实现功能、系统软件设计等方面进行了深入的研
究分析的基础上,完成了本系统的设计开发。 论文完成的工作主要有:

(1)通过对CANopen协议进行全面分析,提出了针对混合动力汽车CANopen 故障诊断通信规范,并把它成功的应用在车载故障诊断系统的设计中。 (2)采用MySQL数据库,建立了故障信息管理数据库OBD,用来存储整车(汽 车上的各个电控系统)的故障信息。通过分析故障诊断系统所要实现的功能以及 故障信息的类型,建立了不同的故障信息表。介绍了利用MySQLCAPI对数据库
访问的方法。

(3)开发了故障诊断管理单元。通过CAN总线接收各个子系统的故障信息代 码以及故障发生前后的所属传感器和执行器的工况参数。分析CANopen报.文得到 具体的故障信息,并把这些信息存储到数据库中进行管理,同时点亮故障指示灯。 通过一定的诊断模式,得到更加详细的故障信息,在人机交互界面中显示。 (4)开发了友好的故障诊断人机交互界面,实现了故障码、故障描述、实时 参数等的数字化、图形化显示。根据驾驶员和维修人员身份的不同,对一些功能 进行了限制。用户还可以通过界面方便的获得更加详细的历史故障或当前故障信


笔者在硕士论文研究期间建立了此系统平台,但由于课题时间、本人能力和 实验条件的限制,本系统在以下几个方面还需要进一步的改善:。
(1)增加故障诊断专家系统

高科技的发展,信息化的网络,使得汽车故障诊断技术必将向着智能化、集 成化方向发展。维修手册和诊断手册等被有效的组织成智能化的电子文档,存储 于诊断系统内,维修人员在专家系统上可以方便的查询所需的资料,得到检测故 障的步骤和排放故障的方法。 (2)扩展故障诊断模式 随着汽车电子化程度的不断提高,汽车内部信号非常复杂。为了增强汽车行 驶过程中的安全性,可以增加更多的故障诊断模式,使故障诊断系统的诊断功能

北京-T业大学工学硕二卜学何论文

更强大。

(3)CANopen协议代码完善 CANopen协议是欧洲标准的CAN总线高层协议,在汽车领域没有美国的 J1939那样完善,在国内混合电动汽车行业应用中尤其是故障诊断方面的应用还 处于探索阶段,具有很大的研发性和开创性,所以,为了实时性和可靠性还需要
进一步的探索。

参考文献

参考文献



陈清泉,孙立清.电动汽车的现状及发展趋势.陈清泉院士论文选集:现代电动汽车.电机
驱动及电力电子技术.|匕京:机械工业出版社,2005

r 阿布里提.阿布都拉,清水健一.电动汽车的发展现状和开发动向.电工电能新技术.
2000,(1):49.53
3 4 5 6 7

白木,周艳琼.世界电动车发展现状.世界汽车.2001,(3):1~5

段岩波,张武高,黄震.混合动力电动汽车技术分析.柴油机.Diesel Engine,2002,(6):43-46 王志新,韩秀芹.解析混合动力汽车.公路与汽运.2007,(1):8-10 宋慧.电动汽车的现状与发展.汽车电器,2000,(1):10-14
Qi
Guoguang,Li Jianming,Jia Hang.A New Battery State of Charge Indicator for Electric

Vehicle.In:Proc.of the 1 3t”International Electric Vehicle Symposium,Tokyo,1 996 8 C.C.CHAN,Heliang ZHOU,Liqing SUN.Recent Progress of EV in China Along

With

the

Worldwide


Trends.EVS2 1,2005

曹秉刚,张传伟,白志峰等.电动汽车技术进展和发展趋势.西安交通大学学报.2004,38
(1):l-5




汤秀红,刘伟涛.电动汽车技术发展综述.城市车辆.2002,(5):21—24



吴卫.我国混合动力电动汽车标准的研究和制定.交通标准化.2005,(07):8-9.




曹乘刚.中国电动汽车技术新进展.西安交通大学学报.2007,41(1):114~117
万钢.中国“十五”电动汽车重大科技专项进展综述.中国科技产业,2006,(2):110-113




曹正策,胡琴.混合动力电动公交车产业化构想.汽车工业研究,2005,(12):38—40.
徐杨.串联混合动力城市客车问题研究.合肥工业大学硕士学位论文.2006:6-14
Heliang Zhou,Liqing Sun,Feng



Wei.Hybrid

Electric Vehicle—A Kind ofNecessary Green

and Economic Transportation Tool for China.EVS2 1,2005



CtQin,H.Zhao,Y.Lei,A.Ge.A

Strategy

of On—board

Fault Diagnosis

of Automated

Mechanical Transmission.SAE 2000—01—1 160:100-120

悸 侈

刘英.汽车故障诊断仪.汽车维护与修理.2004,(4):20"-一21
R.Szcaesny,EKurzynski,H.Pijquet,K.1wan.KNOWLEDGE—BASE
APPROACH TO

SYSTEM

POWER

ELECTRONIC

SYSTEMS

AFUTL

DAIGNOSlS[J].

1EEEl996:1005-1010



侯军兴,卢士亮,赵大旭,赵东辉.汽车故障诊断技术的现状与发展趋势.公路与汽运.
2006,(2):1 9~2 1
——57-

北京Tq址大学下学硕十学位论文

2l郑霞君.新一代故障诊断系统(OBD.II).内燃机.2003,(3):34--。36

22刘庆华.OBD.I卜第二代车载故障诊断系统.汽车维修与保养.2006,(7):62~63
23

P.M.Frank.Analytical and qualitative model-based fault diagnosis—a survey and some
new

results[J].European

of Contr01.1

996,2(1):6--25

24吴新忠.现场总线技术综述.工矿自动化.2004,(2):23 25阳宪惠.现场总线技术及其应用.北京:清华大学出版社,2001 26王桂荣,钱剑敏.CAN总线和基于CAN总线的高层协议.计算机测量与控制.2003,


1(5):391-394

27刘冬梅,王清阳,胥布工.CANopen在工业流水线控制系统仿真的研究.计算机测婊与
控制.2007,15(2):195-197

28浦金欢.混合动力汽车能量优化管理与控制策略研究.上海交通大学博士学位论文.
2004:10~139 29

Z.Rahman,M.Ehsani,K.L.Butle.Effect
Systems,SAE2000—01-3063

of

Motor

Short Circuit

on

Ev and Hev Traction

30 3l

BOSCH.CAN Specification,.1 99 1:1-30 H.Boterenbrood.CANopen High-level Protocol for CAN—bus.NIKHEF,Amsterdam March 20,2000 Ver.3.O:1-23

32

CAN in

Automation(CiA).CANopen

Application Layer and Communication Profile.CiA

Draft Standard 30 1.Version 4.02,February 1 2,2002:1 9 ̄2 1 33 Farsi

M.,Ratcliff

K.,Barbosa

M—An

Introduction to

CANopen.Computing&Control

Engineering Journal Volume 1 0,Issue 4,Aug.1 999 34

Page(s):l 6 1—1 68.

Farsi,M.,Ratcli置K..An
CANopen

Introduction to CANopen and CANopen Communication Issues Colloquium On 6 Oct.1997:1--6

Implementation(Digest No.1997/384),lEE

35

Mohammad

Farsi,Karl Ratcliff.An Introduction to CANopen and CANopen communication

issues.The Institution of electrical engine.s.Printed and Published by the IEEE.UK. 1997:1.-6 36 Ratcliff,K.CANopen

implementation
on

Issues.CANopen

Implementation(Digest

No.

1997/384),IEE
37

Colloquium

6 Oct.1997

Page(s):4/1-4/3
Keydel.Embedded Networking with CAN

Olaf Pfeiffer,Andrew

Andrew,Christian

and

CANopen.American:RTC Books,Copyright◎2003:246-305
38

L.AtMnson.MySQL核心编程一高级开发者指南【M】.周靖,许青松.清华大学出版社,
2003:1~10

39 40

M.Kofler.MySQL 5权威指南.扬晓云,王建桥,杨涛等.人民邮电出版社,2006:3-20
G IAN.MySQL4从入门到精通.王军等.电子工业出版社,2003:5-7

41赵洪明.MySQL中访问数据库的程序设计.黄石高等专科学校学报.2002,18(1):10"--12
—58—

参考文献

42兰旭辉,熊家军,张海燕.基于MysQL的应用程序开发.空军雷达学院学报. 2003,17(2):59~61

43黄德启,严新平,初秀民,张黎光.基于标准C++的MySQL数据库访问新引擎剖析及
应用.交通与计算机.2005,23(5):80~82
44 Texas Instruments

Incorporated.TMS320F28x

Enhanced Controller Area

Network(eCAN)

Peripheral Reference Guide.2002

45苏奎峰,吕强,耿庆锋,陈圣俭.TM3320F2812原理与开发.北京:电子工业出版社.
2005:262-275

—59—

北京工业大学工学硕七学位论文





“故障诊断系统CANopen协议对象字典中部分故障信息分配”示例
索引
9000H


0H

名称
子索引数目 故障码P0010

类型
U8

默认值
OxFFH Faultlnfor.faultCode=Ox000000 1 O

权 限
rw

01H

Faultlnfor

nV

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
02H

故障码P0011

Faultlnfor

Faultlnfor.faultCode=0x000000 11
rw

Faultlnfor.freezeData[8]2{O,0,0,0,0,0,0,0)
03H

故障码POOl2

Faultlnfor

Faultlnfor.faultCOde=0x000000 1 2
rw

Faultlnfor.freezeData[8]={O,0,0,0,0,0,0,O)
04H

故障码P0013

Faultlnfor

Faultlnfor.faultCode=0x000000 1 3
nV

Faultlnfor.freezeData[8]={O,0,0,0,0,0,0,0)
05H

故障码P0014 Faultlnfor

Faultlnfor.faultCode=OxO00000 1 4
n^,

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
06H

故障码P0015

Faultlnfor

Faultlnfor.faultCode=0xOO0000 1 5
nV

Faultlnfor.freezeData[8]2{0,0,0,0,0,0,0,O)
07I-I

故障码P0016 FaultInfor

Faultlnfor.faultCOde=0x000000 1 6

rw

Faultlnfor.freezeData[8]={O,0,0,0,0,0,0,0)
08H

故障码P0017

Faultlnfor

Faultlnfor.faultCode=0x000000 1 7
n^,

Faultinfor.freezeData[8]={0,0,0,0,0,0,0,0)
09H

故障码POOl8

Faultlnfor

Faultlnfor.faultCode=Ox000000 1 8



Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)



9400H

0H

子索引数目

U8

0xFFH Faultlnfor.faultCode=0x0000400 1

rw

01 H

故障码B0001 Faultlnfor

rw

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
02H

故障码B0002

Faultlnfor

Faultlnfor.faultCode=0x00004002
九V

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,O)
03H

故障码B0003

Faultlnfor

Faultlnfor.faultCode=Ox00004003
九V

FaultInfor.freezeData[8]={0,0,0,0,0,0,0,0)
04H

故障码B0004

Faultlnfor

Faultlnfor.faultCode=0x00004004 rw

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
05H

故障码B0005

Faultlnfor

Faultlnfor.faultCode=Ox00004005
nⅣ

FaultInfor.freezeData[8]={0,0,0,0,0,0,0,0)

一60—

附录

06H

故障码B0006

Faultlnfor

Faultlnfor.faultCode=0x00004006
nlV

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
07H

故障码B0007

FaultInfor

Faultlnfor.faultCode=0x00004007
nV

Faultlnfor.freezeData[8]2{0,0,0,0,0,0,0,0)


08H

故障码B0008

Faultlnfor.faultCode=0x00004008 Fauitlnfor
nv

Faultlnfor.freezeData[8]={O,0,0,0,0,0,0,O}

9800H

OH

子索引数目 故障码C0001

U8

0xFFH Faultlnfor.faultCode=0x00008001

n^,

0lH

Faultlnfor

rw

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
Faultlnfor.faultCode=Ox00008002 Faultlnfor
n^,

02H

故障码C0002

Faultlnfor.freezeData[8]={O,0,0,0,0,0,0,O>
03H

故障码C0003

Faultlnfor

Faultlnfor.faultCode=0x00008003
nV

Faultlnfor.freezeData[8]2{0,0,0,0,0,0,0,0)
04H

故障码C0004 Faultlnfor

Faultlnfor.faultCode=Ox00008004
n^,

Faultlnfor.ffeezeData[8]2{O,0,0,0,0,0,0,O)
Faultlnfor.faultCode=Ox00008005 rw

05H

故障码C0005

Faultlnfor

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,O)
Faultlnfor.faultCode=0x00008006
nⅣ

06H

故障码C0006 Faultlnfor

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,O)
Faultlnfor.faultCode=0x00008007 07H

故障码C0007

Faultlnfor

rw

Faultlnfor.freezeData[8]2{0,0,0,0,0,0,0,O)

9C00H

0H

子索引数目 故障码U0001

U8

OxFFH Faultlnfor.faultCode=0x0000C001

nⅣ

01H

Faultlnfor

r、Ⅳ

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
Faultlnfor.faultCode=0x0000C002 rw

02H

故障码U0002 Faultlnfor

Faultlnfor.freezeData[8]2{O,0,0,0,0,0,0,O’
Faultlnfor.faultCode=Ox0000C003
nV

03H

故障码U0003 Faultlnfor

Faultlnfor.freezeData[8]2{O,0,0,0,0,0,0,0)
Faultlnfor.faultCode=0x0000C004 04H

故障码U0004

Faultlnfor

rw

Faultlnfor.freezeData[8]2{0,0,0,0,0,0,0,0)
Faultlnfor.faultCode=0x0000C005
九V

05H

故障码U0005 Faultlnfor

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)
Faultlnfor.faultCode=Ox0000C006
n^,

06H

故障码U0006 Faultlnfor

Faultlnfor.freezeData[8]={0,0,0,0,0,0,0,0)

9FFFii

FFH

-61。‘

北京丁业大学工学硕二l:学位论文

攻读硕士学位期间所发表的学术论文
发表的论文:


Jianmin Duan,Jinjun Xiao
Protocol for


and

Mingjie

Zhang.Framework IEEE

of

CANopen Vehicles

Hybrid

Electric

Vehicle.2007

Intelligent

Symposium(IV’07,Turkey).2007:906-9 1 1


宋威,方穗明,张明杰,徐哲.任务调度在CANopen主站设计中的应用.计算 机测量与控制.2008,1 6(4) 张明杰,余春暄,宋威.CANopen协议栈的实现与MySQL数据库的结合.计 算机应用研究.2008,25(z) 余春暄,张明杰,段建民.混合动力汽车的在板故障诊断系统研究.机械与电





子.2008年5“月
所获软件著作权:


余春暄,张明杰,彭婧璇,付晓光.北京工业大学GIS系统软件v1.0.2007 年9月30日,中华人民共和国国家版权局

攻读硕十学位期问所发表的学术论文





本论文的工作是在我的导师余春暄教授的悉心指导下完成的,她严谨的治学 态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢三年来导师对我
的关心和指导。

从我的硕士课题开题以来,徐哲教授对我的课题给予了很大的关心和帮助。 她认真负责的工作态度为我树立了良好的学习榜样。在此向徐哲老师表示衷心的 谢意。 特别感谢师兄肖进军。在科研上,他一直认真的启发、指导我:当课题遇到 困难的时候,他无私的帮助我,和我一起共同寻找解决问题的方法。师兄认真的 科研态度深深的感染了我。 感谢实验室的李展鹏、彭婧璇、王蕾、付晓光、姜列为等同学。他们在课题 上一直无私的帮助我,在我撰写论文的期间给予了我很大的支持与鼓励。大家在 科研方面团结协作、取长补短,才使我取得了现在的成绩。 另外也感谢我的父母、家人以及朋友,他们的理解和支持使我能够在学校专
心完成我的学业。他们是我不断进去的动力!


相关文章:
汽车故障诊断分析系统的开发
智能汽车故障诊断系统开... 4页 1下载券 混合动力汽车CAN 网络信... 4页 ...车载诊断系统 OBD 50页 免费 [硕士论文] 基于CANopen... 67页 免费 基于AUTOSAR...
混合动力电动汽车电池管理系统的分析开题报告 2
混合动力电动汽车电池管理系统的分析开题报告 2_经济...芜湖职业技术学院 毕业设计(论文)开题报告 题 目 ...可以根据电池状态进行故障诊断和 报警, 同时具有热...
混合动力汽车的检测与维修
混合动力汽车的检测与维修_机械/仪表_工程科技_专业...17 5.2 canopen 主站的实现功能 ......第五章故障诊断系统软件调整整个车载故障诊断系统的软件系统主要包括...
智能型电动汽车车载充电机的开题报告
江苏大学 硕士学位论文开题报告 课题名称 年专级业 ...电动汽车车载充电机的研究 二 xxxxxxxxxx 研究方向 ...日本丰田公司开发出的混合动力汽车 Prius 拉开了电动...
汽车学位论文题目参考
汽车减振器 CAPP 系统的开发与研制 基于 MEGA128 ...汽车故障诊断数据挖掘模型的研究 汽车电动助力转向系统...车载系统 CAN 通讯实现及上位监控系统设计 混合动力...
新能源汽车技术作业
新能源汽车包括混合动力汽车(HEV) 、纯电动汽 车(...提高汽车工业竞争力、实现我国汽车工业 的跨越式发展...(车载终端)及运行数据分析系统故障诊断及安全管理...
混合动力汽车
南京理工大学 毕业设计(论文)外文资料翻译 学 院: ...除了这些电气化组件或子 系统,传统内燃机(ICE)...混合动力汽车采用车载 ICE 转换器从车载汽油或柴油中...
导科论文
便于故障诊断,并可以实现汽车控制信息传输的 网络化...(四)多媒体娱乐、通讯系统 主要包括车载多媒体系统...其二就是电动动力系统混合动力汽车(HEVs) 。...
混合动力汽车
混合动力汽车(HEV) 1.1 概述复合动力电动汽车(亦称混合动力电动汽车)是指车上装有两个以上动力源,包括有电 机驱动,符合汽车道路交通、安全法规的汽车,车载动力源...
PLugin HEV插入式混合动力汽车系统简介
混合动力(电动) 混合动力(电动)汽车 hybrid electric vehicle HEV 能够至少从下述两类车载储存的能量中获得动力的汽车: 1.可消耗的燃料;2.可再充电能/能量储存...
更多相关标签:
混合动力汽车 | 油电混合动力汽车 | 混合动力 | 卡罗拉混合动力版 | 荣威erx5混合动力价格 | 凯美瑞混合动力版 | 混合动力自行车 | 混合动力轿车排行榜 |