CAN与以太网数据交换的研究与分析

2007-03-09 19:03:27来源: 互联网
摘要:主要介绍将CAN现场总线以协议中的标准模式接入以太网的方法,实现CAN网络中的数据和以太网中的数据进行简单交换;给出相应的硬件和软件原理以及重点难点说明。 关键词:CAN总线 以太网 数据交换 TCP/IP协议 BasicCAN模式 1 技术背景 CAN(Controller Area Network——控制器局域网)是一种由带CAN控制器组成高性能串行数据局域通信网络,是国际上应用最广泛的现场总线之一。它最早由德国Bosch公司推出,用于汽车内部测量与执行部件之间的数据通信。其总线规范已被ISO估计标准组织制定为国际标准。由于其具有多主机、传输距离远(最远为10km)、传输速度快(最快为1Mbps)、抗干扰能力强等诸多优点,所以被认为是最有发展前途的现场总线之一。 CAN协议是建立在国际标准组织的开放系统互连模型基础上的。1991年9月,Philips Semiconductors制定并发布的CAN技术规范Version2.0为现行最高版本。其中规定了两种模式:标准模式和扩展模式。本文主要对标准模式进行介绍。 TCP/IP(Transmission Control Protocol/Internet Protocol——传输控制协议/网络协议)是一个工业标准的协议集,包括IP、TCP、UDP等子协议,保证数据在网络上的正确传输。TCP/IP协议是现代因特网的基础。 TCP/IP协议为四层模型:应用层、传输层、网络层和数据链路层。每层都有不同的功能,而且层和层之间在逻辑上是相互独立的。每层都对应一些子协议,如图1所示。本文用到的协议包括ARP、IP和TCP等。 2 应用背景 CAN总线在很多行业被广泛应用。由其组成的局域网可以将很多底层测控设备连接起来,最远距离可达10km(在不接中继器的条件下)。相对其它现场总线,该距离已经是很远了。但随着以太网的发展,人们希望对底层设备也能进行真正意义上的远程控制。工控机加接口卡已经被用来实现这一目的,但价格和接口卡带来的瓶颈等问题也随之暴露出来。本文是以单片机、CAN器件和网络芯片为核心的模块来完成该功能进行叙述的。这种方案降低了成本,避免了瓶颈。 3 硬件部分 硬件的实现方案有多种,可以采用集成TCP/IP协议的单片机外加CAN收发器和控制器;也可采用集成CAN控制器的单片机外加CAN收发器和网络芯片。本文的实例采用不带任何集成的单片机Philips P89C668,外加CAN控制器SJA1000、CAN收发器TJA1050以及网络芯片RTL8019AS,组成一个转换模块,功能模块如图2所示。 P89C668:微控制器,主要的控制部分,实现对网络芯片以及CAN器件的控制,并进行两者之间的协议转换。 SJA1000:CAN控制器,两种工作模式(BasicCAN和PeliCAN)。BasicCAN仅支持标准模式,PeliCAN支持CAN2.0B的标准模式和扩展模式(本文仅介绍BasicCAN模式)。支持错误分析功能,对CAN收发器进行控制,为微控制器提供了控制CAN总线的简单接口。 TJA1050:CAN收发器,微控制器对CAN控制器进行相应配置后,收发器自动过完成相应的CAN总线动作。 RTL8019:网络芯片,提供给微控制器控制以太网的简单接口,使微控制器只需要对其进行相应读写即可完成对以太网的操作。 实验中另外用到一个CAN模块作为一个CAN节点,和转换模块一起组成一个简单的CAN网。 4 软件部分 4.1 CAN编程 BasicCAN模式中的CAN编程相对简单,只需要对SJA1000相应的寄存器进行读写操作即可。在该模式下,报文识别码为11位,在经过验收滤波器的筛选后,符合条件的报文才能被接收,并存入SJA1000接收缓冲区。识别码值越小,优先级越高。如果总线上出现报文冲突,优先级高的报文选占据总线。CAN节点间每次最多传送的数据为10个字节。发送缓冲区寄存器的描述如表1所列,它与接收缓冲区寄存器结构大体相同,只是地址不同。 表1 发送缓冲区寄存器 名 称 位7 位6 位5 位4 位3 位2 位1 位0 识别码字节1 ID.10 ID.9 ID.8 ID.7 ID.6 ID.5 ID.4 ID.3 识别码字节2 ID.2 ID.1 ID.0 RTR DLC.3 DLC.2 DLC.1 DLC.0 TX数据1~8 发送数据字节1~8 本实验中用到P89C668的外部中断1。该中断由SJA1000引发,设置为当SJA1000收到来自另一节点的数据时,向P89C668发出中断信号。在中断处理程序中,P89C668读取并保存SJA1000中断寄存器的值,作为在相应程序中进行处理的依据。 4.2 TCP/IP协议 由于TCP/IP协议很复杂,涉及的内容很多。下面仅就几点作简要介绍。 (1)封装和分层的概念 发送数据时要对数据进行逐层封装,既加上相应的首部,作为所经过每层的标识。具体原理如图3所示。接收到的数据是按一定结构封装好的, 我们要根据前面的首部信息,判断数据应交付给下面哪一层,并将相应首部信息去除,这样依次向下传,到最后可以得到所传送的真正数据。具体原理如图4所示。 (2)以太网驱动程序 以太网驱动程序是提供链路层物理接口与网络层交互的软件接口。网络层数据必须先交付给以太网驱动程序,由它将网络层数据打包交付给物理接口,完成数据发送。反之,以太网驱动程序在接收到数据时,要按照应用层可以接收的形式进行处理并交付给网络层。 (3)ARP协议 即地址解析协议,提供逻辑地址到物理地址的动态映射。发送站必须知道接收站的物理地址才能对数据进行封装,才能在以太网中进行传输,因此只知道接收站的逻辑地址是不够的,必须事先通过ARP协议得到接收站的物理地址。 (4)IP协议 即网络协议,提供一种不可靠的、无连接的服务,完成的功能有将运输层待发送数据封装成IP数据报,调用以太网驱动程序发送数据,从数据链路层接收数据,以及数据校验等。 (5)TCP协议 即传输控制协议,是一种面向连接的、可靠的运输协议。UDP协议实现相同功能,但它只把数据报分组从一台主机发送到另一台主机,不保证可靠性。本文主要使用TCP协议进行数据交换,而没有采用UDP协议。实验中用到P89C668的定时器0中断,10ms中断一次,主要为了进行ARP老化处理,设置TCP超时标志。 4.3 CAN与以太网的数据交换 数据交换原理简单说就是对从以太网中收到的数据进行分层。如果是TCP数据报,取出真正的数据,并将其存入一个开辟的数据区,对数据进行相应分析后 ,按照BasicCAN模式进行发送。反过来,将接收到的CAN数据存入另一数据区,除去地址和个数信息,将其余数据按照TCP/IP协议进行封装发送。具体流程图如图5所示。 由CAN接收引起外部中断后,保存SJA1000中断寄存器和状态寄存器的值,在CAN处理子程序中根据其值进行处理。当上到来自另一节点的数据,则将该数据存入相应缓冲区,并置位一标志位,在主程序中的TCP超时处理子程序中判断该标志位,如果为高则将该缓冲区中的数据拷贝到以太网发送缓部眍中,并将数据封装发送。当P89C668接收到来自以太网的TCP数据报,同样将一标志位置1,在CAN处理子程序(见图6)中,根据该标志位判断是否有数据要发送给另一节点。 在具体调试时,使一个CAN节点每隔一段时间向转换模块发送一些数据。该节点接收后,通过以太网转发给上位机,上位机通过超级终端显示接收的数据。同样,可以通过超级终端发送一些键入的数据,经过转换模块传给另一个CAN节点,从而改变它的一些内部数据。 5 小结 该实验只是实现了以太网与BasicCAN模式下CAN的简单数据交换,没有涉及CAN的高层协议和复杂错误处理。不过有了该实验的成功尝试,使实现PeliCAN模式下的转换以及加载完善的协议成为可能,可以说该实验为CAN和以太网的融合打下了坚实的基础。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/network/200703/11688.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved