CAN总线仿真环境的构建及在教学中的应用 下载本文

内容发布更新时间 : 2024/5/4 8:11:13星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

CAN总线仿真环境的构建及在教学中的应用

作者:刘辉 谭延亮 焦铬

来源:《计算机时代》2014年第06期

摘 要: 首先对CAN总线通讯协议进行分析,然后对嵌入式硬件仿真环境SkyEye的结构进行详细的研究,利用SkyEye构建了CAN总线通讯仿真环境。为了评估所设计的CAN仿真节点的性能,对CAN节点进行了仿真实验。仿真实验表明,我们所设计的CAN节点不仅能正确实现节点间的数据通信,还能达到较高的CAN网络通信速率。最后阐述了在计算机实践课教学中的应用。

关键词: CAN总线; SkyEye; 仿真; 计算机实践课教学

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2014)06-44-03 0 引言

由于在汽车工业的快速发展过程中,需要安装在汽车上的电子设备不继增加,因此点对点连接这些汽车电子设备的专用电子线路迅速膨胀,连接起来更加复杂和繁琐。为进一步提高系统的可靠性和故障诊断能力,将连接线路进行简化,使数据资源在各电控单元之间进行共享更加方便,汽车网络总线技术就是有效解决这个问题的方法[1-2]。

在车载网络通信中,由于CAN总线具有布线简单、典型的总线型结构、能够有效地节约布线和维护成本、性能稳定可靠、实时性与抗干扰能力强、传输的距离远等一系列优点,因此在现代工业控制中应用广泛。由于CAN总线通信网络的设计有很多参数需要设置,而CAN总线工作性能直接受到这些参数设定的影响,但是在没有辅助工具帮助的情况下,参数的有效设定只能凭汽车工程师的经验和不断地尝试摸索。因此,需要有合适的工具和可行的方法对CAN总线网络进行有效的仿真和评估,从而提高汽车工程师设计CAN总线网络以及在评估CAN总线网络性能方面的效率[4]。 1 CAN总线协议分析

为了能实现对CAN总线网络的仿真,非常有必要对CAN总线通讯协议进行深入研究。须建立起任意两个或多个CAN设备之间的兼容性,这是CAN总线通讯协议定义的目的。 CAN总线具有以下特性[5]:①报文的优先权;②保证延迟时间;③设置灵活;④系统内数据的一致性(System Wide Data Consistency);⑤多主机(对等);⑥错误检测和错误标

龙源期刊网 http://www.qikan.com.cn

定;⑦当总线处于空闲时,能够自动将破坏的报文重新传输;⑧能够将网络节点的永久性错误和暂时性错误区分开,并且可以将CAN的错误节点自动关闭。 CAN的ISO/OSI参考模型的分层结构如图1所示[6]。

从其参考模型的分层结构可以看出,CAN通讯协议的结构划分为两层:数据链路层(Data Link Layer)与物理层(Physical Layer)。在CAN中,为了解决不同通信节点之间进行消息传输时的电气属性,物理层为所有通信节点共享使用。 2 嵌入式硬件仿真环境SkyEye的结构

利用仿真软件来对嵌入式系统的各种硬件进行模拟,开发人员不需要利用开发板,直接在仿真环境中运行嵌入式系统,实现嵌入式软件的开发、调试、运行,能够大大提高开发速度并降低开发成本。SkyEye是一个开源软件项目,中文名字为“天目”[7],能够在通用的Windows操作系统和Linux操作平台上对目前主流的嵌入式开发板及外部设备进行软件仿真,实现一个可扩展的硬件模拟框架,使系统软件能够在仿真平台上运行。SkyEye软件的核心在于目标模拟模块,操作系统与系统软件在SkyEye仿真环境中运行时可以使人根本意识不到是在一个计算机的虚拟系统上运行。SkyEye目前在教学、科研等众多领域都得到了广泛应用。 目前SkyEye的最新版本已经完全和原先的GDB/ARMulator分离,并对原先的

GDB/ARMulator进行了全面的扩充和改变[8]。总体上分为四个模块仓库:①体系结构模块仓库(Architecture Module Repository);②外设模块仓库(Device Module Repository);③接口模块仓库(Interface Module Repository);④功能模块仓库(Function Module Repository)。 SkyEye仿真环境结构如图2所示[9]。 3 软件仿真平台的构建和实现

为了实现对CAN总线通讯协议进行仿真,我们需要在不具备硬件环境的条件下来构建软件仿真平台。通过这个软件仿真平台,能够一目了然地观察到CAN总线的数据正常发送、接收、处理和总线的仲裁,以及错误节点的故障界定等运行过程。SkyEye仿真平台还可以运行自定义的CAN总线应用层协议[10]。

构建软件仿真实验平台的主要步骤为:第一步,在电脑的操作系统里安装虚拟计算机软件VMware Workstation;第二步,打开虚拟计算机软件VMware Workstation,将红帽子Ylmf Linux Y1.5系统直接安装在虚拟环境中;第三步,打开Linux操作系统,在Linux环境中将SkyEye仿真软件进行安装。程序采用Microsoft VC实现,采用的实验环境为Dell Inspiron 15R-5537笔记本,2.30GHz主频,内存4GB,100Mbps的网络带宽 [2]。 仿真CAN总线发送和接收数据的具体实验步骤如下。

龙源期刊网 http://www.qikan.com.cn

⑴ 用超级用户登录红帽子Linux系统。 ⑵ 打开一个终端。

⑶ 切换到/dev/shm/目录:cd /dev/shm/。 ⑷ 创建目录can_vbus:mkdir can_vbus。

⑸ 更改目录can_vbus的访问权限为0666:chmod 0666 can_vbus。 ⑹ 切换到用户根目录:cd /home/lh1111/。 ⑺ 进入CAN 目录:cd CAN/。

⑻ 进入Sja1000-vcan目录:cd Sja1000-vcan。 ⑼ 进入vcanbus目录:cd vcanbus。 ⑽ 运行vcanbus程序:./vcanbus。 ⑾ 打开另外一个终端。

⑿ 切换到用户根目录:cd /home/lh1111/。 ⒀ 进入asp目录:cd asp。

⒁ 因为SkyEye已经被安装在/bin目录下,所以运行SkyEye的命令为:skyeye -e asp -c skyeye.conf(-e选项表示要执行的目标文件,-c选项表示配置文件),这时可以在终端上看到显示信息(该窗口表示的是发送节点)如图3所示。

按上述步骤所设计的仿真方案,我们可以利用SkyEye软件仿真平台较为真实地模拟出汽车类CAN网络应用程序开发的环境和过程。 4 实验结果分析

四种传输速率下的测试平均时间如图5所示。从图5可以直观地看出:它是一个从高到低的平均传输时间,考虑系统负载方面,负载越大,则系统运行越慢。最左边的矩形表示:在200ms的传输速度下,相比其他三种传输速度下的延迟时间要高得多,系统的负载是最高的,也就是说系统的反应时间就越长。当传输速率达到500ms以后,传输延迟时间开始趋于平均,这说明系统的负载(即运行负荷)没有那么大了。从以上仿真实验可以看出,通过SkyEye硬件模拟平台对CAN通讯协议进行仿真,我们所设计的CAN节点不但在节点间的数据通信上是