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/wltx/qtjs/200703/2804.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
以太网
数据
数据交换
交换

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved