《基于Labview的CAN总线通信仿真.doc》由会员分享,可在线阅读,更多相关《基于Labview的CAN总线通信仿真.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于Labview的CAN总线通信仿真基于虚拟仪器的CAN总线通信仿真控制器局部网(CANCONTROLLERAREANETWORK)是BOSCH公司为现代汽车监测和控制领先推出的一种多主机局部网,由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门.CAN是一种多主方式的串行通讯总线。一个由CAN总线构成的单一网络中理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN可提供高达1Mbit/s的数据传输速率这使实时控制变得非常容易。另外。硬件的错误检定特性也增强了CAN的抗电磁干扰能力。CAN总线有以下特点:1) CA
2、N可以是对等结构,即多主机工作方式,网络上任意一个节点可以在任意时刻主动地向网络上其它节点发送信息,不分主从,通讯方式灵活。2) CAN网络上的节点可以分为不同的优先级,满足不同的实时需要。3) CAN采用非破坏性仲裁技术,当两个节点同时向网络上传送信息时,优先级低的节点自动停止发送,在网络负载很重的情况下不会出现网络瘫痪。4) CAN可以点对点、点对多点、点对网络的方式发送和接收数据,通讯距离最远10km(5kb/s),节点数目可达110个。5) CAN采用的是短帧结构,每一帧的有效字节数为8个,具有CRC校验和其它检测措施,数据出错几率极小。CAN节点在错误严重的情况下,具有自动关闭功能,
3、不会影响总线上其它节点操作。6) 通讯介质采用廉价的双绞线,无特殊要求,用户接口简单,容易构成用户系统.1 CAN总线工作机理1。1 位仲裁要对数据进行实时处理。就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量.如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。CAN总线以报文为单位进行数据传送报文的优先级结合在11位标识符中具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改.总线读取中
4、的冲突可通过位仲裁解决。1。2 报文格式如图所示,在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位扩展格式为29位。在标准格式中,报文的起始位称为帧起始(SOF)然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场.RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位(ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC).数据场范围为08个字节其后有一个检测数据错误的循环冗余检查(CRC)。应答场(ACK)包括
5、应答位和应答分隔符发送站发送的这两位均为隐性电平(逻辑l)这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文报文的尾部由帧结束标出。在相邻的两条报文问有一很短的问隔位如果这时没有站进行总线存取,总线将处于空闲状态。图1标准数据帧1.3 数据错误检测不同于其它总线,CAN协议不能使用应答信息.事实上,它可以将发生的任何错误用信号发出。CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。1.3。1 循环冗余检查(CRC)在一帧报文中加入冗余检查位可保证报文正确。接收站通过CRC可判断报文是否有错。1.3。2 帧检查这种方
6、法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。1。3.3 应答错误如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位检查的方法探测错误.1。3。4 总线检测有时,CAN中的一个节点可监测自己发出的信号.因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。1.3。5 位填充一帧报文中的每一位都由不归零码表示可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位就有可能失去同步。为保证同步同步沿用位填充产生。在j个生。在五个连续相等位
7、后发送站自动插人一个与之互补的补码位接收时这个填充位被自动丢掉例如,五个连续的低电平位后,CAN自动插人一个高电平位CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。2 虚拟仪器技术2。1 虚拟仪器简介虚拟仪器技术目前已成为测试领域的主流技术,一个虚拟仪器系统主要由仪器硬件、计算机硬件和应用软件组成,应用软件又包括开发环境、应用程序和仪器驱动程序三部分。Labview(LaboratoryVirtualinstrumentEngineering)是NI公司推出的虚拟仪器开发平台,采用图形化的编程语言,具有强大的人机界面设计和数据分析处理功能,提供了丰富的仪器
8、驱动程序,便于快速创建灵活可靠的应用系统,主要用于仪器控制、数据采集、数据分析、数据显示等领域.虚拟仪器的硬件基础为个人计算机,它采用虚拟仪器技术来开发。虚拟仪器充分利用了PC机的资源(处理器、存储器、显示器等)及插件卡功能(定时器AD、DA变换器、高速缓存、数字I0电路等),通过支持软件来完成数据采集、过程通讯、数据分析处理及仪器界面设计等功能。由于虚拟仪器建立在PC机的基础上,所以它可方便地通过总线来挂接各类插件卡,从而实现了多种仪器功能的集成化.软件是虚拟仪器的关键,软件设计主要包括仪器面板软件设计和仪器功能软件设计。虚拟仪器的面板软件是利用计算机强大的图形处理能力,在屏幕上建立图形逼真
9、、主体感强的仪器面板来替代传统硬件化仪器面板.虚拟仪器面板上具有与实际仪器面板上相似的旋钮、开关、指示灯及其它控制部件,用户通过鼠标或键盘操作虚拟仪器.与传统的编程语言比较,Labview图形编程方式能够节省85以上的程序开发时间,其运行速度却几乎不受影响,体现出了极高的效率。2.2 Labview应用于仿真Labview是一种基于图形编程语言的开发环境G语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或流程图.它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,Labview是一个面向最终用户的工具.它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器
10、编程和数据采集系统的便捷途径。简言之,Labview功能强大、灵活方便。它与传统编程语言有着诸多相似之处,如相似的数据类型、数据流控制结构、程序调试工具等,但二者最大的区别在于:传统编程语言是用文本语言编程,而Labview用图形语言(即各种图标、图形符号、连线等)编程。用Labview编程无需太多编程经验,界面非常直观形象,都是工程师们熟悉的旋钮、开关、图形等,因此LabVlEW对于没有丰富编程经验的工程师们来说无疑是个极好的选择.再者,Labview也提供传统程序语言(如C语言)的接口,对于其自身不易或不擅长完成的任务(如数据处理)可通过利用其它编程语言来实现,从而最终增强了Labview
11、的整体功能。一个Labview程序分为三部分:前面板、框图程序、图标接线端口。前面板是用于模拟真实仪器的前面板;框图程序则是利用图形语言对前面板上的控件对象(分为控制量和指示量两种)进行控制;图标接线端口用于把Labview程序定义成一个子程序,从而实现模块化编程。与传统的编程语言比较,LabVIEW图形编程方式及其集成的丰富的函数模块使其在将仿真程序化时效率非常高,可以用它进行仿真、实时控制或者同时执行这两种工作。LabVlEW具有:(1)可以方便地将仿真任务译为程序语言;(2)出色的数据可视化能力;(3)有适合仿真计算的数据结构范围;(4)通过简单的操作即可变量计算和参数设定;(5)精心构
12、建于数学、信号理论上;(6)与现实世界有良好的互联性。3 Labview仿真CAN通信用Labview模拟CAN通讯,主要是对CAN总线的数据链路层的数据传输进行仿真,CAN总线的标准为CAN2。0A/B,数据格式为标准数据帧或扩展数据帧。3。1 仿真内容一个典型的CAN结构可以用下图表示。图2基于MCP2510的典型系统硬件实现结构由于时间有限,因此本人选择了用Labview实现CAN总线通信的基本的收发功能。具体的就是下面两个模块,数据发送模块和数据接收模块,发送模块包括了数据生成模块,CAN节点地址定义模块,数据分割模块和转化帧模块。本人对仿真信号通信格式做了简化,对帧传输格式重新进行了
13、定义,用Labview中的数组元素表示帧传输过程中的位,首位是帧开始位,1为开始,用一个数组元素表示,接着是RTR位,这代表了帧的类型,0表示是数据帧(远程帧),接着是地址位,实际上地址位和数据为并不止一位,但是为了简化起见,均将其作为一个元素处理,然后是数据,每帧的数据量最大是8个字节,用最多8个元素来表示,这8个元素每个为一个字节,最后还省略了数据校验部分,直接用了一个结束符元素来结束帧。3.2 程序结构使用Labview仿真CAN通信主要两大部分:接收数据模块和发送数据模块。数据生成模块仿真数据采集卡采集到后的数据,在本次仿真中,需发送的数据可以做一个数据发生器来模拟经采集到的的数据进行
14、通信;CAN节点地址定义模块主要是为了定义CAN节点的位置,处理后的数据能够识别CAN节点控制器的位置,这样才能在控制系统中进行控制;数据分割模块是为了将数据发生器中的数据进行分割成不超过8字节的单帧数据;转化帧模块主要功能是转载控制码和地址码在帧数据两端,在数据传输过程中,接收模块才能识别发送的数据并进行重组解码;地址识别模块是根据帧判断地址优先级来决定如何接收数据,接收的数据再经过帧转化模块转化成原来的数据格式。一般地,还应包括数据存储模块,数据存储完成数据的记录,以便在需要进行数据回放以进一步分析时,可以将程序保存的数据记录文件读出。在一个CAN工作周期,其工作流程图如图1所示。图3CA
15、N工作流程图3。3 程序及面板3。3。1 数据发生模块数据发生器是一个可以根据具体要求任意更改随机输入的程序,在本次仿真中,用了随机数发生器随机产生字符串作为输入数据处理后发送。图4数据发生器3。3。2 数据发送模块数据发送模块如图3.2所示。当CAN工作的时候,将输入字符串数据处理为数组再进行数组分割加载控制码和地址码,分割循环次数及加载控制码、地址码位置与数据长度有关。图5数据发送模块3.3。3 接收模块接收模块前端为地址识别程序,当寄存器存在数据时,地址识别模块不断重复判断每帧数据的地址码,并判断优先级,将优先级最高的数据转入帧转化程序模块,帧转化模块将帧数据提取出来并判断数据时候完整,若不完整将已提取的数据存入发送寄存器并继续转化接收寄存器中的数据。图6数据接收模块3。3.4 前面板前面板分为三个部分,每部分的空间完全相同,不过其后台程序略有不同,这是因为CAN1作为主控制模块不但可以接收CAN2发送过来的数据,也可以接收CAN3发送的数据。图7程序前面板