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