1、CAN 总线通信系统上位机通信软件的设计毕 业 设 计 说 明 书 ( 论 文 ) 中 文 摘 要CAN 是控制器局域网络(Controller Area Network, CAN)的简称,是国际上应用最广泛的现场总线之一。本文对 CAN 总线的研究背景、发展现状及研究意义进行了论述,简单介绍了 CAN 总线相关技术规范,并且基于 VC+设计了 CAN 通信软件。软件实现的功能包括:正确识别 CAN 设备并打开 CAN 通道;可封装 CAN 报文进行发送;可接收 CAN 数据帧,并能对接收的数据帧进行解析;具有过滤功能,可不显示指定的协议帧。最后,对软件功能进行测试并发布。关键词 CAN 总线
2、 VC+ 通信软件毕 业 设 计 说 明 书 ( 论 文 ) 外 文 摘 要Title Design of PC Communication Software Based on CAN bus Communication System AbstractCAN is short for Controller Area Network, the worlds most widely used field bus.CAN-bus is mostly used in network formation of industrial control systems and vechile control
3、system. Background,development status and the research significance of CAN bus are discussed ,an outline of the CAN-bus relevant technical specifications is given,and the CAN communication software based on Visual C+ is designed.Functions implemented include:Correctly identify the CAN device and ope
4、n the CAN channels;CAN messages can be sent encapsulated; CAN data frames can be received,and is able to parse the received data frames;Has a filtering function,do not display the specified protocol frame. Test and release the software.Keywords CAN-bus VC+ Communication software本科毕业设计说明书(论文) 第 I 页 共
5、 I 页目 次1 绪论 .11.1 研究背景 .11.2 研究目的和意义 .11.3 国内外发展现状 .21.4 论文结构安排 .22 CAN 总线协议分析 .32.1 CANbus 规范 V2.0 版本 .32.2 CAN 控制器 SJA1000.62.3 本章小结 .63 开发环境介绍 .63.1 开发环境 .63.2 CANUSB/智能 CAN 接口卡 .73.3 本章小结 .84 CAN 通信软件设计 .84.1 驱动程序安装 .84.2 CAN 接口卡函数库说明 .84.3 界面设计 .114.4 软件功能实现 .164.5 本章小结 .225 测试及发布 .235.1 软件功能测试
6、 .235.2 程序发布 .245.3 本章小结 .27结论 .28致谢 .29参考文献 .30本科毕业设计说明书(论文) 第 1 页 共 32 页1 绪论现场总线,就是应用于工业现场,采用总线方式连接多个设备,用于传输工业现场各种数据的一类通信系统 1。CAN(Controller Area Network)总线是现场总线的一个分支,因其具有很高的可靠性和性能价格比,已经成为国际标准,在工业过程监控设备的互连方面得到广泛应用,受到工业界的广泛重视,并已被公认为几种最有前途的现场总线之一。1.1 研究背景随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最
7、具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将 5C 技术Computer(计算机技术)、Control(自动控制技术)、Communication(通信技术)、CRT(显示技术)和 Change(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。典型的分散式控制系统有现场设备、接口与计算设备以及通信设
8、备组成,现场总线(Field bus)就是在这种背景下产生的 2。1.2 研究目的和意义从 19 世纪发明汽车以来,人们就一直在乘坐的舒适性、安全性和操控性方面不停地对其进行改革和创新,车上的电子设备也越来越多。这些电子设备大多是需要协同工作的,这就要求各部件之间能互相通信 1。为了解决汽车通信问题,CANbus 应运而生,凭借可靠、实时、经济和灵活的特点,CAN 总线很快在其他行业得到广泛应用,特别是在工业控制领域更是如鱼得水。现在 CANbus 总线已经成为全球范围内最重要的现场总线之一,甚至引领着现场总线的发展。工业控制系统涉及众多软、硬件模块,给程序的设计和调试带来一定难度。尤其作为上
9、、下位机间联系纽带的 CAN 总线通信部分,一旦在整个系统运行期间发生问题,若没有良好的人机界面和测试手段,将很难及时准确地找到并排除故障。同本科毕业设计说明书(论文) 第 2 页 共 32 页样,在控制系统的研制过程中,为了尽可能地减少故障和缩小故障范围,也应设计相应的测试软件来具体负责 CAN 总线通信及接口部分的调试、运行任务。故此,本课题就如何利用 VC 设计 CAN 总线测试软件进行介绍。1.3 国内外发展现状自从 Bosch 与 Intel 公司于 1986 年正式发布 CANbus 通信方式,宝马(BMW)公司很快于 1989 年推出第一款使用 CANbus 通信的汽车,从此 C
10、ANbus 开始了其辉煌的历程:(1)1990 年,奔驰公司发布了第一辆使用 CANbus 的轿车,现在几乎每一辆新生产的汽车均装配有 CANbus 网络;(2)1993 年,CANbus 总线被制定成为国际标准 ISO11898(高速应用)和 ISO11519(低速应用);(3)1994 年,欧洲成立了 CiA 厂商协会,美洲成立了 ODVA 厂商协会,专门支持 CANbus 总线的两大应用层协议CANopen 协议与 DeviceNet 协议 3。在 CiA 的努力推广下,CAN 技术在汽车电子控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面均得到了广泛的应用。现已
11、有 400 多家公司加入了 CiA,CiA 已成为全球应用 CAN 技术的权威。国内在 CAN 总线方面的研究和应用于国外相比还存在明显的差距,体现在两个方面:(1)国内在自主研究和开发汽车电子 CAN 网络方面尚处于试验和起步阶段,国内绝大部分的汽车还没有采用汽车总线设计;(2)国内汽车合资企业不少已采用CAN 总线技术,但核心技术掌握在外商手中。为顺应世界汽车工业发展的趋势,我国也相应加强了对 CAN 总线的研究,并开发具有自主知识产权的 CAN 总线产品。CAN 技术已应用于家用电器和智能楼宇以及小区建设中。随着无线技术的完善和将无线技术应用到 CAN 总线系统中研究的不断深入,可以乐观
12、地预计,未来 CAN 总线技术的应用将无处不在,虚拟的 CAN 总线即将诞生 5。1.4 论文结构安排本文第一章介绍了 CAN 总线的研究背景和国内外发展现状,并介绍本课题研究的目的和意义。第二章简单介绍了 CAN 总线通信规范和 SJA1000 控制器。第三章简单介绍了开发环境和 CAN 接口卡。第四章详细介绍了软件的设计过程,包括驱动安装、接口卡函数库说明、界面设计、功能分析与设计。第五章介绍了软件的测试及程序的发布。本科毕业设计说明书(论文) 第 3 页 共 32 页2 CAN 总线协议分析2.1 CANbus 规范 V2.0 版本CAN 规范技术规范由两部分组成: A 部分:CAN 的
13、报文格式说明(按 CAN1.2 规范定义)。 B 部分:标准格式和扩展格式的说明。2.1.1 CAN 的分层结构在 CAN V2.0A 里,CAN 被细分为三个层次:对象层、传输层、物理层。而在 PartB 中,CAN 被细分为两个层次:数据链路层(逻辑链路控制子层 LLC、媒体访问控制子层 MAC)、物理层。2.1.2 报文传输(1)帧类型报文传输由 5 种类型的帧所表示和控制,它们分别是数据帧、远程帧、错误帧、过载帧和帧间隔,其用途如表 2.1 所列。表 2.1 帧的类型及用途帧类型 帧用途数据帧 用于发送节点向接受节点传送数据,是使用最多的帧类型远程帧 用于接受节点向某个发送节点请求数据
14、错误帧 用于检测出通信错误(如校验错误)时向其他节点发送通知过载帧 用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时帧间隔 用于将数据帧和远程帧与前面的帧分离开来1) 数据帧数据帧由 7 个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC 场、应答场、帧结尾。数据帧各段的功能如表 2.2 所列。表 2.2 数据帧各段的功能段名 段长度/位 说明帧起始 1 表示数据帧开始,由单个显性位构成,在总线空闲时才允许发送本科毕业设计说明书(论文) 第 4 页 共 32 页标准帧12 表示该帧的优先级,由 11 位 ID 码和 1 位远程帧标志位(RTR)组成仲裁场 扩展帧32 表示该帧的
15、优先级,由 29 位 ID 码、1 位替代远程帧请求位(SRR)、1 位标志位扩展位(IDE)和 1 位远程帧标志位(RTR)组成控制场 6 表示数据段数据长度的编码和保留位数据场 08 数据内容,每字节为 8 位,具体字节数在控制段中体现CRC 场 16 检查帧的传输错误,范围包括从帧起始到数据段的所有内容(不包括填充位)ACK 场 2 其他接受节点确认该帧被正常接收帧结束 7 表示数据帧结束2) 远程帧远程帧由 6 个不同的位场组成:帧起始、仲裁场、控制场、CRC 场、应答场、帧结尾。3) 错误帧错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志的叠加。第二个场是错误界定符。错误
16、标志有两种形式,主动错误标志和被动错误标志。错误界定符包括 8 个“隐性”的位。4) 过载帧过载帧包括两个位场:过载标志和过载界定符。5) 帧间空间数据帧(或远程帧)与其前面帧的隔离是通过帧间空间实现的,无论其前面的帧为何类型(数据帧、远程帧、错误帧、过载帧)。所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。(2)发送器/接收器的定义发送器:产生报文的单元被称之为报文的“发送器”。此单元保持作为报文发送器直到总线出现空闲或此单元失去仲裁为止。接收器:如果有一单元不作为报文的发送器并且总线也不空闲,则这一单元就被称之为报文的“接收器”。本科毕业设计说明书(论文)
17、 第 5 页 共 32 页2.1.3 报文检验校验报文是否有效的时间点,对于发送器与接收器是各不相同的。对于发送器:如果直到帧的末尾位均没有错误,则此报文对于发送器有效。如果报文破损,则报文会根据优先权自动重发。为了能够和其他信息竞争总线,重新传输必须在总线空闲时启动。对于接收器:如果直到一最后的位(除了帧末尾位)均没有错误,则报文对于接收器有效。2.1.4 编码位流编码:帧的部分,诸如帧起始、仲裁场、控制场、数据场以及 CRC 序列,均通过位填充的方法编码。数据帧或远程帧(CRC 界定符、应答场和帧末尾)的剩余位场形式相同,不填充。错误帧和过载帧的形式也相同,但并不通过位填充的方法进行编码。
18、报文里的位流采用不归零编码(NRZ),这就是说,在整个位时间里,位电平要么为“显性”,要么为“隐性”。2.1.5 错误处理错误检测:有 5 种不同的错误类型(这 5 种错误不会相互排斥):位错误、填充错误、CRC 错误、形式错误、应答错误错误标志:检测到错误条件的站通过发送错误标志指示错误。2.1.6 故障界定至于故障界定,单元的状态可能为以下三种之一:错误主动:可以正常地参与总线通讯并在错误被检测到时发出主动错误标志。错误被动:不允许发送主动错误标志。总线关闭:不允许在总线上有任何的影响(比如,关闭输出驱动器)。2.1.7 位定时要求标称位速率:标称位速率为一理想的发送器在没有重新同步的情况
19、下每秒发送的位数量。标称位时间:标称位时间=1标称位速率可以把标称位时间划分成几个不重叠的时间片段,它们是:同步段、传播时间段、相位缓冲段 1、相位缓冲段 2。本科毕业设计说明书(论文) 第 6 页 共 32 页2.1.8 报文滤波在 CAN20B 中,还增加了有关报文滤波的定义。报文滤波取决于整个识别符。允许在报文滤波中将任何的识别符位设置为“不考虑”的可选屏蔽寄存器,可以选择多组的识别符,使之被映射到隶属的接收缓冲器里。如果使用屏蔽寄存器,它的每一个位必须是可编程的,即,他们能够被允许或禁止报文滤波。屏蔽寄存器的长度可以包含整个识别符,也可以包含部分的识别符。2.1.9 振荡器容差由于给定
20、的最大的振荡器,其容差为 158,因此凭经验可将陶瓷谐振器使用在传输率高达 125kbits 的应用罩。为了满足 CAN 协议的整个总线速度范围,需要使用晶振。具有最高振荡准确度要求的芯片,决定了其他节点的振荡准确度。2.2 CAN 控制器 SJA1000下位机的 CAN 总线网络接口使用 Philips 公司的 SJA1000 芯片,SJA1000 是一个独立的 CAN 控制器,具有一系列先进的功能,适合于多种应用,特别在系统优化、诊断和维护方面非常重要。SJA1000 具有完成 CAN 总线通信协议所要求的全部特性,它与独立 CAN 总线控制的 PCA82C200 完全兼容,并有支持 CA
21、N2.0B 协议、扩展接收缓冲器、增强错误处理能力和增强验收滤波功能等新增功能。SJA1000 可以直接进行 CAN 总线互联,而 PC 机作为上位机,是通过 USB 电缆连接到 CAN 接口卡上的,这里我们使用的是普创电子的 CANUSB工业级双路智能接口卡。该接口卡中的 CAN 总线数据收发也是由 SJA1000CAN 控制器和 82C250CAN 收发器完成的,主机通过 USB 电缆来访问 CAN 控制器,从而实现数据通信。2.3 本章小结本章主要介绍了 CAN 总线通信系统上位机通信软件的设计所涉及的基本知识,包括 CANbus 规范和 CAN 控制器 SJA1000,有了这些知识,才能保证软件设计得以顺利开展。