基于VxWorks的CAN与千兆以太网互联设计

2016-11-14 07:03张忠民王艳龙
电子科技 2016年10期
关键词:缓冲区网关以太网

张忠民,王艳龙

(哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 150001)



基于VxWorks的CAN与千兆以太网互联设计

张忠民,王艳龙

(哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 150001)

随着千兆网络的逐步全面积覆盖,现用的百兆网关工业设备将被淘汰。为改进现用的网关设备,文中提出了一种千兆网与现场总线的互联设计。在硬件设计中,分为CAN模块电路和千兆网模块电路两部分。AX88180和M88E1111为构成千兆网关模块的主体器件;在软件设计中,以VxWorks操作系统作为软件平台。利用Socket编程完成了网络协议和CAN总线协议的相互转化。通过测试证明,设计千兆网关的可实用性。

CAN;千兆以太网;协议转换;VxWoks

ZHANG Zhongmin, WANG Yanlong

(School of Information and Communication Engineering, Harbin Engineering University, Harbin 150001, China)

控制器局域网(Contrller Area Network,CAN)技术最早由德国BOSCH研发,最后形成了国际化标准ISO11898。国内引进CAN总线技术起始用于汽车领域。随着技术的研究不断加深,现在CAN总线已广泛应用于自动化领域。由于现场总线的传输受到距离的制约。而由于网络传输距离广、成本低等特点。将以太网和现场总线互联已是当今研究的热题。随着网络发展的大幅度迈进,40/100 G标准的成功确立,现在千兆网几乎全覆盖,千兆网的应用覆盖大多控制领域。百兆网会像十兆网一样将面临全面淘汰。现在的工业设备网关还停留在十兆网网关或百兆网网关,这将和上层服务器造成严重的不匹配。所以,现有的网关设备必然面临着淘汰的命运。本设计提出了CAN-千兆网网关的互联。实现了CAN协议和网络协议之间的转换。为将来工业网关设备和上层服务器实现对等通信奠定了基础[1]。

1 系统硬件设计

系统以模块化为设计思路,本文设计的千兆网关模块由嵌入式最小系统、CAN模块电路、千兆网模块电路组成,以VxWorks操作系统为平台,实现TCP/IP协议和CAN总线协议的转换。为了解析方便CAN和千兆网的传输方式采用透明的传输方式。系统的结构原理如图1所示。

图1 系统硬件原理图

S3C2440最小系统由电源电路、时钟电路、JTAG电路、存储电路、Flash电路和串口电路6部分组成。在此不做过多介绍。本设计只对CAN模块电路和千兆网模块电路做出说明。

1.1 CAN接口电路设计

由于S3C2440内部不具有CAN控制器,需外部总线扩展CAN控制器。设计采用SPI总线外扩CAN控制器,所用芯片MCP2510[2-3]。CAN收发器采用CTM8250T,主要用作CAN控制器的逻辑电平转换为CAN总线的差分电平,与常用的TJA1050T相比CTM8250T能将CAN总线的节点手法与高速光耦、电源隔离集成在一个电路模块中,隔离电压高达2 500 V,电路接口简单、操作简便[4]。具体接法是MCU SP1CS0和 /CS0 , SPICLK0接SCK,SPIMOSI接MCP2510的SI,SPIMISO接SO、RXCAN、TXCAN和CTM8250T的引脚对应相连,最为关键是对两个单端信号单独在末端并联接到GND,由于每一条传输线上的差分信号分量传输的奇模阻抗Zodd=60 Ω。进行阻抗传输匹配,吸收总线回波,保证最小的共模噪声,确保CAN通信网络的可靠性[5]。系统采用冗余CAN总线,增加的可靠性,用另一路SPI总线扩展CAN总线,与上述接法类似,不在赘述。

1.2 千兆网模块电路设计

本设计千兆网采用总线形式的接入方式,即微处理器的数据总线、地址总线、控制线与MAC对应相连接。MAC与PHY采用RGMII(Reduced Gigabit Media Independent Interface)接口以减少接口引脚数量进而减少电路成本。采用VxWorks操作系统为平台软件部分主要编写网络驱动和CAN驱动,进而实现互联。

S3C2440作为核心处理器,负责数据与控制处理,其与MAC层芯片AX88180(ASIX)采用16位总线形式连接。减少16根数据线,MAC层与PHY层芯片M88E1111采用RGMII接口[6],原理如图2所示。

系统由AX88180 non-pci 千兆以太网控制器,千兆PHY M88E1111和千兆网络变压器H5062以及RJ45接口,组成千兆网络电路,共有两路网口实现可靠冗余,其中一路是总网口,另一路是冗余网口。其中,MCU到MAC采用同步16位总线模式,即MAC 的主时钟HCLK由MCU 的clkout0提供,时钟频率100 MHz,片选CSN接MCU的/CS1,地址空间位0x08000000~0x10000000 。中断引脚INTN接MCU eint0。GPIO 0接4.7 kΩ上拉。

图2 千兆网接口原理图

GPIO 1接地配置成16 bit little-endidan mode。MAC 采用2.5 V自供电模式。AX88180的REG_EN引脚接4.7 kΩ电阻上拉。使V25OUT输出稳定2.5 V电压保持自供电。MCU 到MAC其他数据线、控制线的接法参照AX88180 datasheet 接法即可。MAC到Giga-PHY 采用RGMII接口,系统的125 MHz时钟由PHY提供 保证同步,主网卡的PHY 地址为0x1f;模式为千兆百兆自适应。其余数据线控制线参照Datasheet接法即可。PHY 到Gigabit Ethernet Magnate 的接法四对差分对接到对应的差分对,中间抽头总100 Ω的阻抗匹配,PHY到RJ45接口四对差分对。150 Ω的阻抗匹配,其余引脚的接法按照Datasheet 接法即可。冗余网卡的设计参照主网卡。

2 系统软件设计

2.1 CAN总线驱动的实现

设计采用Vxworks操作系统,CAN总线控制器MCP2510是SPI接口,SPI总线设备是以字节流的方式进行操作,可等效成字符设备进行驱动。对MCP2510寄存器的读写是通过SPI总线进行的。为防止发生报文竞争缓冲区的现象,编写时宏定义两个互斥信号量,一个作为接收缓冲区的接收信号量,另一个作为发送缓冲区的发送信号量,在每次读写之前必须先获得信号量才能进行读写,保证前一次数据帧能读写完成[7],这样做确保了帧数据的完整性和连续性。

2.1.1 CAN总线的数据接收

MCP2510有两个接收缓冲区,当获得接收信号量时,若数据帧的ID符合内部接收滤波器的要求,同时将数据写入接收缓冲区的数据,释放信号量,清除硬件中断,激活报文接收任务,并将接收到的数据拷贝到SDRAM中的循环缓冲区。当上层应用程序调用read()函数时,对接收缓冲区的数据进行读写[8-9]。

2.1.2 CAN报文发送流程

MCP2510 有3个发送缓冲区, MCP2510的发送过程是被动过程,当发送任务获取写信号量,启动MCP2510的发送过程,将数据发送到发送缓冲区。函数在返回前激活发送任务,通过SPI送入MCP2510内部的发送缓冲区,然后令其发送。当上层应用程序调用 write()函数,获取发送互斥信号量。对发送缓冲区的数据进行发送报文[8-9]。

2.2 AX88180驱动的实现

网络驱动的编写,按照Vxworks END驱动模型编写ax88180的驱动函数,包括以太网的数据发送流程函数、网络驱动装载函数、网络设备启动函数、网络中断处理函数和网络控制函数等。其中,中断处理函数是整个驱动函数的核心。首先检测是何触发中断,引起中断触发源有接收溢出、接收中断、PHY中断、发送不采用中断模式,在任务中就进行发送处理[10]。

2.2.1 网络报文的发送

数据帧的发送处理函数,发送过程从底层看是被动过程,当上册协议有要发送的数据时,立即进入发送函数,发送的数据帧作为传递参数,为增大发送效率在内部硬件建立发送缓冲区,使用netMblkToBufCopy获得发送的帧长度,完成blBlk等封装结构和Cluster底层缓冲区的释放工作,即将结构和Cluster重新放入“池”中[11],然后判断环形缓冲区中tx_dec和txbs是否相等,相等表示缓冲区可用,可向缓冲区中发送数据。完成发送数据后要更新tx_dec和txbs的值,便于下次发送,图3为发送函数的具体流程。

图3 网络报文的发送流程

2.2.2 网络报文的接收

图4 网络报文的接收流程

通过netJobAdd注册的函数ax88180_rx_handler完成数据帧的具体接收工作,当环形缓冲区有数据接收时,当数据有效,启动度接收缓冲区命令,得到接收缓冲区的数据长度,要对数据长度进行有效的判定。更新边界指针和接收指针的值,在递交上层程序之前要将数据帧以mBlk,clBlk,Cluster的形式,期间涉及到mBlk,clBlk,Cluster的结构分配,然后完成底层数据帧向Cluster的复制,使用netclblktoJoin 和netMblkClJoin 完成mBlk,clBlk,Cluster连接成串,以便于向MUX层进行数据帧的传递[12-13],如图4所示的接收流程显示了数据帧的处理和上传的详细过程。

2.3 主程序设计

主程序主要完成协议的转换,当上位机要检查现场设备时,将网络报文发送出去,对网络报文进行处理,发送到CAN总线的缓冲区,并发送至现场设备。当现场设备发送报文到上位机时。由CAN总线设备对报文进行发送,发送至主控制器,主控制器将CAN数据报文进行网络封包处理,然后调用网络发送程序,将报文发送至上位机,这样就完成了协议的转换[14],图5具体转换流程。

图5 主程序流程

3 系统实现及测试

使用ZLG CANtest软件,参数设置完成后,发送CAN报文,对CAN数据发送千兆网做测试。图6表示CAN报文发送数据。

图6 CAN发送的数据

对CAN数据接收到网络缓冲区,然后将CAN数据封装成网络包发送到服务器,图7显示了接收的网络报文。

图7 接收的网络报文

用TCP&UDP工具发送报文,图8表示报文。

图8 发送的网络报文

将网络报文解析通过CAN口发出,用软件抓到的数据如图9所示。

图9 CAN报文数据

图6~图9说明以太网和CAN协议转换成功,完成了千兆以太网和CAN网络的通信。

4 结束语

本设计是以经典的TCP/IP网络协议、CAN总线协议、嵌入式理论和VxWorks理论为基础,实现千兆网和CAN总线的互联。完成了协议之间的转换,并对工业设备网关进行了可靠地升级。

[1] 韦娟.工业以太网接入网关研究与应用[D].南京:南京理工大学,2010.

[2] 唐相龙,牛振波,刘振宇.在S3C2440AL扩展CAN总线接口电路的设计[J].中国新技术新产品,2010(21):34-34.

[3] 陶志东,周纯杰,宋明权,等.基于S3C2410的CAN总线通信设计与开发[J].可编程控制器与工厂自动化,2006(1):68-71.

[4] 张忠民,邬晓静.基于LPC2294的CAN与以太网网关互联的设计[J].电子科技,2013,26(6):140-144.

[5] 刘涛.CAN总线接口电路设计中的关键问题[J].工矿自动化,2007(1):100-101.

[6] 张磊,何昕,魏仲慧,等.基于千兆网接口的星敏感器图像显示与存储[J].液晶与显示,2015, 30(1):114-119.

[7] 李延伟,陈欠根,朱毅.嵌入式操作系统VxWorks下CAN驱动程序开发[J].Industrial Control Computer,2006(10):30-32.

[8] 江海峰,张剑英,孔明坤.基于VxWorks的CAN-Ethernet嵌入式网关的设计与实现[J].计算机工程与应用,2007,43(29):107-109.

[9] 杨君,孙汉旭,贾庆轩,等.Vxworks下的冗余CAN通讯模块设计[J].微计算机信息,2007,23(29):43-44.

[10] 吕佳彦,杨志义,於志文,等.VxWorks增强型网络驱动程序(END)的分析与实现[J].计算机应用研究,2005,22(4):200-202.

[11] 张晓华,李智涛,徐钊.VxWorks网络协议栈的MUX接口[J].单片机与嵌入式系统应用, 2002(5):22-24.

[12] 张宇坤,袁冬莉,黄鑫鑫,等.基于 VxWorks 的网卡驱动程序开发[J].计算机技术与发展,2013,23(1):18-20,24.

[13] 曹桂平. VxWorks设备驱动开发详解[M].北京:电子工业出版社,2011.

[14] 徐建宁,刘卫东,姬岩鹏,等.基于CAN总线与以太网的嵌入式网关设计[J].测控技术,2006, 25(10):49-52.

Design of the Interconnecting Gateway Between CAN and Gigabit Ethernet Based on VxWorks

A design of the interconnection between Gigabit ethernet and CAN bus is proposed to improve the performance of current industrial gateway equipment. The hardware consists of the CAN circuit module and the Gigabit gateway circuit module with ax88180 and m88e1111 as the major components. The software is based on the VxWorks RTOS platform. The socket programming is employed to realize the protocol conversion between Ethernet and CAN Bus. Tests verify that the design of Gigabit gateway is feasible.

CAN; gigabit ethernet; protocol conversion; VxWorks

2016- 01- 04

王艳龙(1989-),男,硕士研究生。研究方向:电路与系统。

10.16180/j.cnki.issn1007-7820.2016.10.019

TP393.11

A

1007-7820(2016)10-065-04

猜你喜欢
缓冲区网关以太网
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
信号系统网关设备的优化
谈实时以太网EtherCAT技术在变电站自动化中的应用
一类装配支线缓冲区配置的两阶段求解方法研究
LTE Small Cell网关及虚拟网关技术研究
浅谈EPON与工业以太网在贵遵高速公路中的应用
关键链技术缓冲区的确定方法研究
应对气候变化需要打通“网关”
初涉缓冲区
万兆以太网在连徐高速公路通信系统改造中的应用