×
接口总线驱动 > 总线 > 详情

CAN总线与以太网互连的嵌入式网关设计

发布时间:2020-05-27 发布时间:
|

    由于以太网技术的发展和完善,尤其是传输速率的提高和交互技术的发展,以太网以其在传输速度、可靠性、使用灵活、软硬件资源丰富等方面的优势在现场控制领域得到广泛的应用。CAN总线技术是目前自动化控制领域中最具有前景的技术之一,它在分散控制效果、开放性、纠错能力、价格等方面具有很强的优势,将CAN总线与以太网互连可实现现场控制从设备到管理层的一体化,能够提高生产效率、降低生产成本。

1 硬件结构

    本设计采用了MCU+接口芯片的方法,其硬件框图见图1,系统工作原理为:以太网中发送数据和请求到以太网接口芯片RTL8019AS,RTL8019AS将处理后的以太网帧送入控制器P89V51RC2内部的TCP/IP协议栈,由单片机内部的协议栈对数据报进行解析后得到原始的请求和控制信息,然后送到CAN控制器进行CAN协议格式和数据封装,经过封转后的数据便可以喝现场的CAN总线设备进行通信。回复信息的过程与上面相反。


图1 系统硬件框图

    1.1 主控芯片及以太网接口模块

    本系统选择性能价格比较高的NXP公司的P89V51RC2单片机,操作频率为0~40MHz,包含32kB Flash,1024字节的内部存储器和64kB的外部数据存储器,同时具有低功耗、在系统编程,多时钟模式等特点,值得一提的是它的X2方式选项。利用该特性可在相同时钟频率下获得2倍的吞吐量,或者时钟频率减半而保持特性不变,这样可以极大地降低电磁干扰(EMI)。P89V51RC2丰富的片上资源非常适合于通信网关、协议转换器的应用。

    以太网接口选用的是Realtek公司生产的全双工即插即用型RTL8019AS芯片,RTL8019AS接口符合Ethernet2和IEEE802.3标准,兼容RTL8019软件和NE2000的传输,芯片是RTL8019内核,内部集成了一个16KB双端口RAM。支持UTP、AUI、BNC、和PNP自动检测模式,主控芯片和以太网接口芯片的硬件接口原理图见图2,系统扩展了一个32K的外部RAM。


图2 以太网接口电路原理图

    1.2 CAN 接口模块

    CAN模块的由CAN控制器SJA1000和收发器CTM1050组成,CAN总线控制器是CAN总线网络的层次结构中数据链路层和物理层的执行者,主要完成CAN的通讯协议,实现报文的装配和拆分、接收信息的过滤和校验等工作。SJA1000是Philips 公司生产的一款高速CAN控制器,其速率最高可达1Mbips,内部扩展有64BitFlF0结构的接收缓冲器,工作温度范围为-40℃~-125 ℃,非常适合工业现场使用。SJA1000有两种工作模式:BasicCAN模式和PeLi CAN模式,其Peli CAN工作模式支持CAN2. 0B协议。CTM1050是一款带隔离的高速CAN收发器模块,具有CAN-bus总线过电压保护作用,该模块内部集成了所有必需的CAN隔离及CAN收、发器件,模块的主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平,并且具有DC 2500V的隔离功能。采用CTM1050模块可以大大减少CAN-Bus硬件线路的难度,SJA1000的TXO与RXO直接与CTM1050的TXD、RXD相连。[page]

2 通信模块软件设计

    2.1 SJA1000(图3)



图3 RTL8019AS 的初始化流程图

    SJA1000驱动程序是由初始化、发送接收部分组成。

    2.1.1 初始化

    SJA1000在系统上电、硬件复位或主控制器发出复位命令后需要进行初始化,CAN初始化子程序通过对CAN控制器中相应的寄存器写入配置控制字来确定CAN控制器的波特率、发送通道、接收通道、标识符码和标识符屏蔽码等相关信息。进入初始化程序时必须初始化的寄存器有:通用控制寄存器CANGCON、位定时寄存器CANBT 143、以及15个报文对象邮箱中的报文对象控制寄存器CANc0NCH、报文对象状态寄存器CANST CH、标识符寄存器

    CANIDT1~4、标识符屏蔽寄存器CANIDMl~4和报文数据寄存器CANMSG等。要注意的是,位定时寄存器CANBTI~3仅能在复位期间访问,因此,在对这些寄存器初始化前,必须确保系统进入复位状态。

    2.1.2 发送与接收

    本设计采用中断方式发送和接收数据,SJA1000芯片有一个报文发送缓冲区和两个报文接收缓冲区用于CAN报文传送,接收子程序负责节点报文的接收,在接收中断处理程序中,先从接收缓冲区读取要接收的报文,然后发送一个请求信号以启动协议转换和发送。发送子程序负责将以太网传输过来的CAN 协议格式的数据发送到CAN 总线上,发送数据程序把数据存储区中待发送的数据取出,组成信息帧送入发送缓冲区,然后启动发送命令。

    2.2 RTL8019AS 驱动

    RTL8019AS的驱动程序包含三部分:初始化、接收数据、发送数据。

    RTL8019AS的初始化主要包括设置网卡的物理地址、设置相关工作模式的寄存器、接收缓冲区和发送缓冲区的各自起始地址以及大小、是否开中断等参数等,其流程图见图3所示。

    在本设计中RTL8019AS采用查询方式接收和发送数据包,通过判断对应的标志位来确定是否发送和接收新的数据包。在数据包的发送过程中,单片机只要通过远程DMA写操作,将待发送的数据包写至发送缓冲区,并启动发送过程。在数据包的接收过程中,单片机只要通过远程DMA读操作,从接收缓冲区读取数据即可。

3 结语

    本文提出了一种低成本、高可靠性、适用于工业控制现场的的CAN总线与以太网互连网关的实现方案,该网关可以与工业现场的仪器、仪表等设备相连接在一起,使工业现场的设备具有网络通讯的能力,大大提高了设备的性价比,从而提供生产效率。 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
RS232与RS485谁才是UART中的高速公路