微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > CAN总线—PROFIBUS-DP总线网关的实现方法

CAN总线—PROFIBUS-DP总线网关的实现方法

时间:01-17 来源:21IC中国电子网 点击:

1 引言

在80年代中期,为了满足不同自动化领域的应用需求,出现了拥有不同技术特点的现场总线。每一种现场总线都有自己的应用领域,并且都力图拓展其应用领域,以扩张其技术垄断范围。但每种现场总线都以一个或几个大型跨国公司为背景,公司的利益与总线的发展息息相关。这些公司竞争的结果是多种总线协调共存。据不完全统计,目前国际上有200多种现场总线,而其中占据市场主流的现场总线有十几种[1]。现场总线的多样性,为总线设备用户提供了更多产品选择的同时,也为总线用户带了总线设备间兼容性问题。工厂在扩建,改建等过程中很可能会选用与原先现场设备总线标准不同的产品,这些设备由于使用不同的现场总线,彼此间不能实现数据共享,于是就降低了设备间功能互补的优点。因此针对多种总线共存的客观事实,探讨如何解决不同现场总线系统的互联有着重要的现实意义。本文主要研究PROFIBUS-DP[2]与CAN[3]两种总线的协议转换的原理,并设计出了一种网关实现了这两种总线的互联。

2 方案设计

对于两个异构的现场总线,其数据链路层和应用层协议是截然不同的,要实现它们的互联,需要采用网关进行协议转换。协议转换在网关内是按分层逐次进行的。网关将现场总线设备1发送来的数据在不同的协议层次进行解包,最终得到报文中的用户数据。然后再按照现场总线协议2逐层打包,然后发送到现场总线2中的设备。

网关(gateway)是用于实现数据链路层以上层的网络互联设备,它相当于一个协议转换器,可以是双向的,也可以是单向的,用来连接不同协议的网络。它不像网桥一样要求数据链路层和应用层的协议完全一致。

通常见到的现场总线网关是单CPU结构的,在这种结构里,CPU要完成两种总线信息的传输与控制,同时还要完成两种总线协议的转换工作,该方案CPU负担较重,控制复杂,软件采用多重嵌套。这里提出了一种基于双CPU结构的网关设计方法,系统中的两个CPU对两种总线协议的数据各自进行处理与控制,并将需要传递的信息放在双口RAM内,实现信息共享与传递,这种方案容易控制,软件简单,同时减轻了CPU的负担,增强了可靠性。

3 系统的硬件设计

系统的硬件根据功能可分为三大部分,一是CAN总线接口电路,完成CAN总线的数据收发与控制;二是PROFIBUS-DP总线接口电路,完成PROFIBUS总线数据的收发与控制;三是双口RAM接口电路,用来完成两种总线数据的交换。

3.1 CAN总线接口硬件结构

CAN总线接口的整体硬件结构如图1。电路主要由四部分所构成,微控制器89C52(1),独立CAN通信控制器SJA1000,CAN总线收发器82C250和高速光电耦合器6N137。

89C52(1)负责SJA1000 的初始化,通过控制SJA1000 实现数据的接收和发送等通信任务,同时还负责与PROFIBUS总线接口侧的的数据交换,选择89C52(1)作为CPU的主要是因为它不仅与CAN控制芯片SJA1000兼容,而且内部集成8k flash RAM,可以满足系统的存储要求,不需要再外扩程序存储器。

SJA1000为CAN总线控制器。它是一种独立CAN 控制器,是PHILIPS公司的CA82C200 CAN控制器的替代产品,它在软件和引脚上都保持了与PCA82C200的兼容。它具有BasicCAN和PeliCAN两种工作方式,其中 BasicCAN是与PCA82C200兼容的方式;PeliCAN是扩展特性方式,支持具有很多新特性的CAN 2.0B协议。SJA1000的主要新功能有:标准结构和扩展结构报文的接收和发送;64 字节的接收FIFO;标准和扩展帧格式都具有单/双接收滤波器含接收屏蔽和接收码寄存器;可进行读/写访问的错误计数器;可编程的错误报警限制;最近一次的错误代码寄存器;每一个CAN 总线错误都可以产生错误中断;具有丢失仲裁定位功能的丢失仲裁中断;单发方式当发生错误或丢失仲裁时不重发;只听方式监听CAN 总线无应答无错误标志;支持热插拔无干扰软件驱动位速率检测;硬件禁止CLKOUT输出。

SJA1000的AD0-AD7连接到89C52(1)的P0口,CS 连接到89C52(1)的P2.7, P2.7为0的CPU片外存贮器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读写操作SJA1000的RD,WR,ALE 分别与89C52的对应引脚相连。

为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与82C250的TXD和RXD相连,而是通过高速光耦6N137后与82C250相连,这样就很好的实现了总线上各CAN节点间的电气隔离,其中光耦部分电路所采用的两个电源VCC和VDD完全隔离。另外82C 250与 CAN总线的接口部分也采用了一定的安全和抗干扰措施。82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线相连电阻可起到一定的限流作用,保护82C250免受过流的冲击。CANH和CANL与地之间并联了2个30P的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力,另外在两根CAN总线接入端与地之间分别反接了一个保护二极管,当CAN总线有较高的负电压时通过二极管的短路可起到一定的过压保护作用, 82C250的Rs脚上接有一个斜率电阻。

3.2 PROFIBUS-DP总线接口电路

PROFIBUS-DP总线接口的硬件电路也由四部分所构成,微控制器89C52(2),PROFIBUS-DP通信控制器协议芯片SPC3,光耦 HCPL7101和6N137,RS485总线驱动电路。图2为PROFIBUS-DP通信控制器到RS485总线驱动器的硬件电路图。

89C52(2)主要负责控制SPC3,实现PROFIBUS-DP总线数据的转换与共享。

SPC3已集成了PROFIBUS-DP物理层的数据收发功能,可独立处理PROFIBUS DP协议,另外SPC3内部还集成有1.5k的双口RAM,作为SPC3与用户程序之间的接口,并且AT89C52(2)可对SPC3内部RAM访问。

尽管SPC3已经集成了物理层的数据传输功能,但它不具备RS-485的驱动接口,因此添加了RS-485的驱动电路。

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

网站地图

Top