摘 要:研究了以太网和CAN总线间的互联技术。通过分析以太网和CAN总线的网络模型,给出了实现以太网和CAN总线互联的核心设备——Ethernet/CAN网关的模型结构,并在此模型的基础上给出了基于ARM7微处理器的网关硬件设计方案和软件流程。
关键词:CAN 以太网 网关 设计
现场总线(Field Bus)在工业控制领域得到了广泛的应用。而以太网(Ethernet)以其廉价和开放的特点成为最普及的局域网技术,它是构筑互联网的基础。现场总线通信数据量小,可靠性高。而以太网通信数据量大,速度快。10M/100M的以太网目前已经非常成熟。将以太网作为信息传递的主干网,连接现场总线和其他高级设备的新型网络结构是工业控制网络的发展趋势。
在这种新的工业控制网络中,以太网不仅是主干网,而且可与现场总线相互交换数据。所以工业控制网络不仅可以深入到控制现场的各种设备,还可以借助互联网实现对现场设备的远程调试和故障诊断。要将现场总线接入以太网,关键是设计以太网和现场总线间的网关,从而实现2个网络间的数据传输。
不同的现场总线,因其通信协议不同,需要设计不同的网关。本文主要讨论目前在现场总线中应用较多的CAN(Control Area Network)总线和以太网间网关(Ethernet/CAN Gateway)的设计。其网络结构如图1所示。
1 网关的模型
Ethernet/CAN网关连接的是2个通信协议和结构完全不同的网络。对于Ethernet/CAN网关来说,它的工作实际上是对信息重新封装以使它们能够被Ethernet或CAN网所读取。为了完成这项任务,网关必须能运行在OSI模型的几个层次上。下面先讨论OSI和Ethernet以及 CAN的网络模型。
OSI是国际标准化组织(International Standardization Organization,ISO)为实现开放系统互连而建立的模型,其目的是为异种计算机间的互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考。OSI参考模型如图2所示。
OSI模型共有7层。每一层的功能都是独立的,而且利用下一层所提供的功能为上一层服务。物理层是第1层,应用层是第7层。每层的具体功能和定义可以参阅有关书籍。在OSI模型中,1~3层为底层,实现传输功能。网络和终端都具备此功能。4~7层为高层,实现通信处理,通常用网络终端来实现。Ethernet和CAN的网络模型都只支持OSI所定义的7层结构中的一部分,在某些层次上,其定义也有所不同。
Ethernet中没有与OSI模型中的会话层和表示层相对应的层次。Ethernet网络模型如图3所示。其中数据链路层的定义和OSI模型有所不同,它由逻辑链路控制(LLC)和介质访问控制(MAC)2个子层组成。LLC的主要功能是对数据报的封装和拆装。MAC的主要功能是控制对传输介质的访问。
严格说来,标准CAN总线只支持OSI模型中最低的2层。和Ethernet一样,在数据链路层也分为逻辑链路控制子层和介质访问控制子层2个部分。但具体定义和Ethernet中的定义有所不同。由于CAN总线并没有定义应用层,因此用户可以自己定义应用层的协议。
对于网关来说,它必须能够读取和发送Ethernet和CAN网上的数据。因此,它必须具备CAN以及Ethernet所定义的网络层次。通过对Ethernet和CAN网络模型与OSI模型的对比与分析,可以得到Ethernet/CAN网关的基本模型结构图如图4所示。
在网关模型中,与Ethernet和CAN网络连接部分的各层的定义与Ethernet和CAN网络模型中所定义的相同。不同的是在Ethernet应用层的位置,定义了一个管理协议层。Ethernet和CAN网络之间的信息传递就是在该层实现的。网关的管理协议层包含了Ethernet应用层和对CAN总线站点的管理。
2 网关的实现
通过前面的讨论,得到了网关的基本模型。对于它的实现,有2种较常用的方法:一种是采用设计专用集成电路的方法。这种设计方法的优点是网关的速度快,可靠性高,但设计复杂度高,开发周期长。另一种方法是采用通用型微处理器并配备一定的外围电路来构造硬件平台。通过在该平台上所运行的程序来实现网关的功能。本文采用后一种实现方式。
根据网关的功能,网关系统主要由3部分组成:CAN总线接口、协议处理单元和Ethernet接口。网关硬件结构如图5所示。很明显,协议处理单元是网关硬件的核心,它的主要部分是通用微处理器,主要完成CAN总线到以太网的协议转换。因此通用微处理器的性能决定了网关实时性的优劣。
协议处理单元中的通用微处理器在设计中采用ARM公司的ARM7TDMI 32位RISC处理器。它含有3级流水线,采用单一的32位数据总线传送指令和数据,因此有很优越的性能。Ethernet接口电路采用台湾Realtek公司生产的以太网控制芯片RTL8019AS来实现。RTL8019AS本身包含了Ethernet网络模型中最低2层。而CAN总线接口电路中采用的是应用比较广泛的CAN总线控制芯片SJA1000。网关硬件框图如图6所示。其中,为了提高抗干扰性,CAN接口电路中加入了光电隔离电路。网关运行的程序和相应的参数的设置通过RS232接口电路完成。
网关硬件框图中与网关模型中的CAN总线物理层和数据链路层相对应的是CAN物理接口电路和CAN控制器SJA1000。网关模型中Ethernet物理层和数据链路层与硬件框图中的以太网控制器相对应。网关模型中其他部分由ARM处理器件中所运行的软件来实现。
网关软件的工作流程图如图7所示。当连接在CAN总线上的现场设备向连接在Ethernet上的监控计算机发送数据时,数据首先通过网关上的CAN总线接口电路送到CAN总线控制芯片SJA1000。SJA1000向ARM处理器发出中断请求。如果此时ARM处理器正在执行其他优先级较高的任务,数据就暂时存储在SJA1000的缓存中。当ARM处理器执行完任务后,响应中断,从SJA1000中将数据取出。通过管理协议层中所对应的程序,提取需要传送的数据,然后再对该数据分别添加TCP和IP层所需要的信息。ARM处理器通过并行总线将经过封装的数据发送给以太网控制芯片RTL8019AS。RTL8019AS自动给这些数据添加以太网物理层和逻辑链路层所需要的相关信息,然后再通过物理接口传送到以太网上。这时监控计算机就可以通过机器的网卡接收到从CAN总线上的设备所传递的数据。反之,当监控计算机向CAN总线网中的现场设备发送数据时,它首先通过以太网将数据发送给网关上的以太网控制器RTL8019AS。同样也是采用中断的方式,ARM处理器响应中断后,通过读取RTL8019AS中的相关寄存器来判定是否收到数据。对于新收到的数据,将其从RTL8019AS的数据缓冲区中取出。在提取其中实际要传送的数据后,再将数据封装成CAN总线能够识别的数据格式,通过CAN总线控制器发送到CAN总线网中相应的现场设备。以上是对网关工作流程的基本描述。ARM处理器响应中断后,实际上是分别都调用了CAN和Ethernet通信子程序。以太网的TCP和IP层所包含的TCP/IP协议是一个非常大的协议族,因受到网关硬件资源的限制,设计中对TCP/IP协议族进行了简化。
3 结束语
Ethernet/CAN网关是以太网为主干网的新型工业控制网络的核心设备。本文对该网关的模型进行了讨论,并根据该模型给出了网关的硬件和软件框图。使用性能更高的处理器或采用专用集成电路设计技术将进一步提高网关的性能。
参考文献
1 郑建彬.以太网和CAN现场总线网间的嵌入式网关设计. 信息技术,2002;(1)
2 邓先成.LAN/Field Bus网关设计.西北工业大学硕士学位 论文,2001
3 邬宽明.CAN总线原理和应用系统设计.北京:北京航天航 空大学出版社,1996
4 周立功.单片机与TCP/IP综合应用技术.广州周立功单片机发展有限公司,2003
5 王田苗.嵌入式系统设计与实例开发——基于ARM微处理器与 μC/OS-Ⅱ实时操作系统.北京:清华大学出版社,2002