目次1 绪论 (1)1.1 研究背景 (1)1.2 研究目的和意义 (1)1.3 国内外发展现状 (2)1.4 论文结构安排 (2)2 CAN总线协议分析 (3)2.1 CAN-bus 规范V2.0 版本 (3)2.2 CAN控制器SJA1000 (6)2.3 本章小结 (6)3 开发环境介绍 (6)3.1 开发环境 (6)3.2 CANUSB—Ⅰ/Ⅱ智能CAN接口卡 (7)3.3 本章小结 (8)4 CAN通信软件设计 (8)4.1 驱动程序安装 (8)4.2 CAN接口卡函数库说明 (8)4.3 界面设计 (11)4.4 软件功能实现 (16)4.5 本章小结 (22)5 测试及发布 (23)5.1 软件功能测试 (23)5.2 程序发布 (24)5.3 本章小结 (27)结论 (28)致谢 (29)参考文献 (30)1绪论现场总线,就是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统[1]。
CAN(Controller Area Network)总线是现场总线的一个分支,因其具有很高的可靠性和性能价格比,已经成为国际标准,在工业过程监控设备的互连方面得到广泛应用,受到工业界的广泛重视,并已被公认为几种最有前途的现场总线之一。
1.1 研究背景随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。
由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。
分散式工业控制系统就是为适应这种需要而发展起来的。
这类系统是以微型机为核心,将5C技术——Computer(计算机技术)、Control(自动控制技术)、Communication(通信技术)、CRT(显示技术)和Change(转换技术)紧密结合的产物。
它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。
典型的分散式控制系统有现场设备、接口与计算设备以及通信设备组成,现场总线(Field bus)就是在这种背景下产生的[2]。
1.2 研究目的和意义从19世纪发明汽车以来,人们就一直在乘坐的舒适性、安全性和操控性方面不停地对其进行改革和创新,车上的电子设备也越来越多。
这些电子设备大多是需要协同工作的,这就要求各部件之间能互相通信[1]。
为了解决汽车通信问题,CAN—bus应运而生,凭借可靠、实时、经济和灵活的特点,CAN总线很快在其他行业得到广泛应用,特别是在工业控制领域更是如鱼得水。
现在CAN—bus总线已经成为全球范围内最重要的现场总线之一,甚至引领着现场总线的发展。
工业控制系统涉及众多软、硬件模块,给程序的设计和调试带来一定难度。
尤其作为上、下位机间联系纽带的CAN总线通信部分,一旦在整个系统运行期间发生问题,若没有良好的人机界面和测试手段,将很难及时准确地找到并排除故障。
同样,在控制系统的研制过程中,为了尽可能地减少故障和缩小故障范围,也应设计相应的测试软件来具体负责CAN总线通信及接口部分的调试、运行任务。
故此,本课题就如何利用VC设计CAN总线测试软件进行介绍。
1.3 国内外发展现状自从Bosch与Intel公司于1986年正式发布CAN—bus通信方式,宝马(BMW)公司很快于1989年推出第一款使用CAN—bus通信的汽车,从此 CAN—bus开始了其辉煌的历程:(1)1990年,奔驰公司发布了第一辆使用CAN—bus的轿车,现在几乎每一辆新生产的汽车均装配有CAN—bus网络;(2)1993年,CAN—bus总线被制定成为国际标准ISO11898(高速应用)和ISO11519(低速应用);(3)1994年,欧洲成立了CiA厂商协会,美洲成立了ODVA厂商协会,专门支持CAN—bus总线的两大应用层协议——CANopen协议与DeviceNet协议[3]。
在CiA的努力推广下,CAN技术在汽车电子控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面均得到了广泛的应用。
现已有400多家公司加入了CiA,CiA已成为全球应用CAN技术的权威。
国内在CAN总线方面的研究和应用于国外相比还存在明显的差距,体现在两个方面:(1)国内在自主研究和开发汽车电子CAN网络方面尚处于试验和起步阶段,国内绝大部分的汽车还没有采用汽车总线设计;(2)国内汽车合资企业不少已采用CAN 总线技术,但核心技术掌握在外商手中。
为顺应世界汽车工业发展的趋势,我国也相应加强了对CAN总线的研究,并开发具有自主知识产权的CAN总线产品。
CAN技术已应用于家用电器和智能楼宇以及小区建设中。
随着无线技术的完善和将无线技术应用到CAN总线系统中研究的不断深入,可以乐观地预计,未来CAN总线技术的应用将无处不在,虚拟的CAN总线即将诞生[5]。
1.4 论文结构安排本文第一章介绍了CAN总线的研究背景和国内外发展现状,并介绍本课题研究的目的和意义。
第二章简单介绍了CAN总线通信规范和SJA1000控制器。
第三章简单介绍了开发环境和CAN接口卡。
第四章详细介绍了软件的设计过程,包括驱动安装、接口卡函数库说明、界面设计、功能分析与设计。
第五章介绍了软件的测试及程序的发布。
2CAN总线协议分析2.1 CAN-bus 规范V2.0 版本CAN 规范技术规范由两部分组成:• A 部分:CAN 的报文格式说明(按CAN1.2 规范定义)。
• B 部分:标准格式和扩展格式的说明。
2.1.1 CAN的分层结构在CAN V2.0A里,CAN被细分为三个层次:对象层、传输层、物理层。
而在PartB中,CAN被细分为两个层次:数据链路层(逻辑链路控制子层LLC、媒体访问控制子层MAC)、物理层。
2.1.2 报文传输(1)帧类型报文传输由5种类型的帧所表示和控制,它们分别是数据帧、远程帧、错误帧、过载帧和帧间隔,其用途如表2.1所列。
表2.1 帧的类型及用途1)数据帧数据帧由7 个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC 场、应答场、帧结尾。
数据帧各段的功能如表2.2所列。
表2.2 数据帧各段的功能2)远程帧远程帧由6 个不同的位场组成:帧起始、仲裁场、控制场、CRC 场、应答场、帧结尾。
3)错误帧错误帧由两个不同的场组成。
第一个场用作为不同站提供的错误标志的叠加。
第二个场是错误界定符。
错误标志有两种形式,主动错误标志和被动错误标志。
错误界定符包括8 个“隐性”的位。
4)过载帧过载帧包括两个位场:过载标志和过载界定符。
5)帧间空间数据帧(或远程帧)与其前面帧的隔离是通过帧间空间实现的,无论其前面的帧为何类型(数据帧、远程帧、错误帧、过载帧)。
所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。
(2)发送器/接收器的定义发送器:产生报文的单元被称之为报文的“发送器”。
此单元保持作为报文发送器直到总线出现空闲或此单元失去仲裁为止。
接收器:如果有一单元不作为报文的发送器并且总线也不空闲,则这一单元就被称之为报文的“接收器”。
2.1.3 报文检验校验报文是否有效的时间点,对于发送器与接收器是各不相同的。
对于发送器:如果直到帧的末尾位均没有错误,则此报文对于发送器有效。
如果报文破损,则报文会根据优先权自动重发。
为了能够和其他信息竞争总线,重新传输必须在总线空闲时启动。
对于接收器:如果直到一最后的位(除了帧末尾位)均没有错误,则报文对于接收器有效。
2.1.4 编码位流编码:帧的部分,诸如帧起始、仲裁场、控制场、数据场以及CRC序列,均通过位填充的方法编码。
数据帧或远程帧(CRC界定符、应答场和帧末尾)的剩余位场形式相同,不填充。
错误帧和过载帧的形式也相同,但并不通过位填充的方法进行编码。
报文里的位流采用不归零编码(NRZ),这就是说,在整个位时间里,位电平要么为“显性”,要么为“隐性”。
2.1.5 错误处理错误检测:有5种不同的错误类型(这5种错误不会相互排斥):位错误、填充错误、CRC错误、形式错误、应答错误错误标志:检测到错误条件的站通过发送错误标志指示错误。
2.1.6 故障界定至于故障界定,单元的状态可能为以下三种之一:错误主动:可以正常地参与总线通讯并在错误被检测到时发出主动错误标志。
错误被动:不允许发送主动错误标志。
总线关闭:不允许在总线上有任何的影响(比如,关闭输出驱动器)。
2.1.7 位定时要求标称位速率:标称位速率为一理想的发送器在没有重新同步的情况下每秒发送的位数量。
标称位时间:标称位时间=1/标称位速率可以把标称位时间划分成几个不重叠的时间片段,它们是:同步段、传播时间段、相位缓冲段1、相位缓冲段2。
2.1.8 报文滤波在CAN2.0B中,还增加了有关报文滤波的定义。
报文滤波取决于整个识别符。
允许在报文滤波中将任何的识别符位设置为“不考虑”的可选屏蔽寄存器,可以选择多组的识别符,使之被映射到隶属的接收缓冲器里。
如果使用屏蔽寄存器,它的每一个位必须是可编程的,即,他们能够被允许或禁止报文滤波。
屏蔽寄存器的长度可以包含整个识别符,也可以包含部分的识别符。
2.1.9 振荡器容差由于给定的最大的振荡器,其容差为1.58%,因此凭经验可将陶瓷谐振器使用在传输率高达125kbit/s的应用罩。
为了满足CAN协议的整个总线速度范围,需要使用晶振。
具有最高振荡准确度要求的芯片,决定了其他节点的振荡准确度。
2.2 CAN控制器SJA1000下位机的CAN总线网络接口使用Philips公司的SJA1000芯片,SJA1000是一个独立的CAN控制器,具有一系列先进的功能,适合于多种应用,特别在系统优化、诊断和维护方面非常重要。
SJA1000具有完成CAN总线通信协议所要求的全部特性,它与独立CAN总线控制的PCA82C200完全兼容,并有支持CAN2.0B协议、扩展接收缓冲器、增强错误处理能力和增强验收滤波功能等新增功能。
SJA1000可以直接进行CAN总线互联,而PC机作为上位机,是通过USB电缆连接到CAN接口卡上的,这里我们使用的是普创电子的CANUSB—Ⅱ工业级双路智能接口卡。
该接口卡中的CAN总线数据收发也是由SJA1000CAN控制器和82C250CAN收发器完成的,主机通过USB电缆来访问CAN控制器,从而实现数据通信。
2.3 本章小结本章主要介绍了CAN总线通信系统上位机通信软件的设计所涉及的基本知识,包括CAN—bus规范和CAN控制器SJA1000,有了这些知识,才能保证软件设计得以顺利开展。
3开发环境介绍3.1 开发环境CAN总线通信系统上位机通信软件的设计应具有直观的窗口外观,丰富、人性化的友好界面,便于操作和维护。