微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > CAN总线到Ethernet网的网关研究实现

CAN总线到Ethernet网的网关研究实现

时间:08-22 来源:电子设计应用 点击:
引言

CAN总线是一种开放式、数字化、多点通信的控制系统局域网络,是当今自动化领域中最具有应用前景的技术之一。由于CAN总线具有通信速率高、开放性好、报文短、纠错能力强以及控制简单、扩展能力强、系统成本低等特点,越来越受到人们的关注。以太网具有快速、灵活、方便、可靠的特长,如果把现场总线与以太网互联的话,可实现过程控制中从设备层到管理层的一体化,使得企业可以广泛地应用如互联网、无线通信、智能设备和决策支持系统等新技术,以达到提高效率和降低成本的目的。

硬件设计

硬件选择

要实现现场总线设备接入Internet,关键就是要实现TCP/IP 协议、以及传输信息介质的选择。笔者用SX52微控制器作为处理器, 以太网驱动芯片RTL8019AS经耦合隔离滤波器HR61101G和RJ45接口接入以太网,配有RS232和CAN总线两个扩展接口,可以将具有RS232接口的设备或采用CAN总线协议通信的设备连到以太网上。RS232接口采用MAX232CPE芯片,CAN总线控制器采用Philips公司的SJA1000芯片,CAN收发器采用PCA82C250芯片。硬件结构框图见图1。


图1  硬件结构框图

工作原理为:当以太网中发送数据和请求,通过RJ45送到RTL8019AS,RTL8019AS 负责将处理后的以太网帧送入SX52的TCP/IP协议栈,由协议栈对数据报进行解析,得到原始的请求和控制信息。请求和控制信息再经过SJA1000进行CAN协议格式的数据封装,然后和现场的CAN总线设备进行通信。请求和控制的回复信息到局域网的过程与上面正好相反。

硬件电路图

在CAN到Ethernet网关的硬件设计中,在确保通信功能顺利实现的同时,充分利用了SX52芯片I/O口灵活配置的特点,最大程度地节约了微控制器SX52的硬件资源。其电路简图见图2。

图2  电路简图

SX52有5个I/O口共40个引脚,在设计中利用SX52的C口的RC0~RC7连接RTL8019AS的数据口SD0~SD7,SX52的B口兼顾选址和读写控制功能,在开发中用它与RTL8019AS 的地址及读写控制引脚连接。RTL8019AS 基地址选择引脚IOS0~ IOS3接地,此时I/O基地址为300H,即001100000000,所以地址线SA9、SA8接+ 5V。又因为寄存器地址偏移量为00H~1FH 共32个,对应地址从300H到31FH,所以只需将地址线SA0~SA4接SX52 的RB0~RB4,其余地址线接地即可。芯片IORB、IOWB引脚为读写信号线,接SX52的RB6、RB5读写控制引脚。RTL8019AS 可以兼容8位和16位操作。图2中IOCS16是16位I/O的选择脚,当RTL8019AS上电复位的时候,如果这个脚为低电平,选择8位模式,为高电平选择16位模式。由于SX52是8位的数据总线,因此要用8位总线模式,所以将这个脚接地。RTL8019AS有3种工作方式,笔者采用第一种工作方式,此时JP 引脚接高电平。AUI引脚决定使用AUI还是BNC接口。高电平时使用AUI 接口,低电平时使用BNC接口,支持8线双绞线或同轴电缆。设计中采用双绞线为通信介质,将该引脚接地。RTL8019AS 使用引脚TPIN+ 、TPIN- 、TPOUT+和TPOUT-连接耦合隔离滤波器HR61101G,通过RJ45插头实现与以太网的连接。SJA1000是独立的CAN 通信控制器, 支持CAN2.0B协议。它的AD0~AD7为地址数据复用线,与SX52的D口RD0~RD7相连。当远程用户通过Web服务器查询现场的CAN总线数据时,SJA1000将现场控制单元的CAN 总线数据解析,发送到SX52,再传到Internet。PCA82C250对总线提供发送能力并对CAN控制器提供接收能力,它支持1Mbps的速度。为保证SX52与SJA1000协同工作,在硬件设计中将两个芯片共用一个硬件复位线,以确保SX52与SJA1000硬件同步复位。MAX232CPE完成232电平与TTL电平转换。用于提供一个本地接口,为调试和维护提供方便。TXD接SX52的RA2脚,RXD接SX52的RA3脚,RS-RXD和RS-TXD是RS232电平,为标准串口电平。数据可以从串口输入到单片机SX52,SX52再把数据送到RTL8019AS。

网关的软件设计

整个互联系统的软件设计可以分为3个部分:CAN总线设备接口通信程序、网关协议转换程序和基于以太网的TCP/IP协议的程序实现。

网关协议转换程序

网关协议转换程序的整体设计思路为:当以太网应用层有数据要发送到CAN节点时,首先,数据发送到网关,由以太网控制器协议转换模块从UDP数据报文中解析出完整的CAN 协议数据包,存放在数据缓冲区A,再调用CAN 控制器协议模块将它发送到CAN 总线上。反过来,当CAN 设备有数据要发送到用户层时,首先数据发送到网关,由CAN控制器协议模块将完整的CAN 协议数据包存放在数据缓冲区B,再调用以太网控制器协议转换模块将完整的CAN协议数据包作为应用层数据封装发送到以太网应用层。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top