CAN总线-PROFIBUS-DP在处理器上的实现方法

发布者:幸福约定123最新更新时间:2014-08-21 来源: eefocus关键字:CAN总线  总线网关  PROFIBUS-DP 手机看文章 扫描二维码
随时随地手机看文章

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的驱动电路。

       另外为了避免总线上的信号对电路的影响,在SPC3与RS485总线驱动电路之间采用光电隔离。TxD、RxD信号的隔离器件选用Hewlett Packard公司的12M高速光耦HCPL710,RTS信号的隔离器件选用了6N137。

3.3 双口RAM的接口电路 

       两种总线数据的共享与传递是通过双口RAM实现的,系统里选用了器件IDT7130。它是高速的1K双口静态RAM。该器件提供两个独立的端口,分别有独立的控制、地址和I/O引脚,并允许独立的异步读写访问内存的任何地址,自动的电源管理特性由CE控制,允许芯片上的每一个端口电路进入一个非常低的电源模式。IDT7130的片内总线仲裁电路具有BUSY和INT两种总线仲裁方式。基于所采用的单片机型号,在系统里采用了中断仲裁方案,这种方式的工作原理是一个内存地址(邮箱或者信息中心)被指派给每个端口。左端口的中断标志被宣称当右端口写到内存地址3FEH时,左端口通过访问3FE内存地址清除中断。相似的,当左端口写内存地址3FFH时右端口标志被宣称,为了清除这个中断标志,右端口必须访问内存地址3FFH,系统里3FE和3FF两个单元的内容赋予新的内涵,即定义两个码0FFH和00H。其中0FFH代表发送命令要求对方传送数据,而00H代表发送的是对方所要求的数据。系统里两个CPU与双口RAM的连接如图3。双口RAM的剩余的存储单元被分为四大部分,其中0000H-00FFH这256个单元用来存储CAN总线上传来的数据或地址,并且相邻的两个单元用于存储一个CAN子站的数据信息;0100H-01F9H这250个单元用来存储PROFIBUS总线上传来的数据或地址,相邻的两个单元用于存储一个PROFIBUS子站的信息,另外03FCH单元用于存放CAN总线设备所要读的PROFIBUS站点的ID号,03FDH单元用于存放PROFIBUS总线设备所要读的CAN站点的ID号。 [page]

       由图可知双口RAM在负责CAN总线通信的微处理器的映射地址为0x7C00H-0x7FFFH,在负责PROFIBUS总线通信的微处理器的映射地址为0x2C00H-0x2FFFH。

4 系统软件设计 

       网关的软件可分为两大部分,一部分用于负责CAN总线的数据通信,另一部分用于负责PROFIBUS总线的数据通信。 

       每侧的程序根据功能又可以分为三个子模块:协议芯片初始化程序,接受数据接受子程序,数据发送子程序。其中数据接受子程序考外部中断触发执行。下面以网关的CAN总线接口侧程序为例,列出程序流程图,PROFIBUS侧的接口程序与之相似,就不再赘述。 

       CAN总线侧的初始化与发送程序流程如图4:

       因为SJA1000的初始化只有在复位模式下才可以进行,因此程序首先将SJA1000的中断屏蔽,使它进入复位模式,然后对它进行初始化。初始化内容主要包括工作方式的设置、接受滤波方式的设置、接受屏蔽寄存器和接受代码寄存器的设置、波特率参数设置和中断允许寄存器的设置等。 SJA1000完成初始化设置后,再让它返回到工作状态,进行正常的通信任务。 

       在接受子程序里,系统以查询的方式接受CAN子站传送过来的数据,网关通过接受缓冲区数据区的第一个字节的内容判断接受的是真正的数据,还是发给 PROFIBUS-DP站点的发送数据请求。如果数据区第一个字节是00H,则传送的是数据信息,于是根据ID查表求得该站所对应的存储单元,并将数据区的第二、三字节的内容存在该单元内,同时把ID放在7FFCH中,告诉对方发送数据的站点号;如果该字节内容是FFH,则说明是发送数据请求,数据区第二个字节存放的是被要求发送数据的站点号,将他放入7FFCH内即可。 

       CAN总线接口发送数据子程序流程图如图5:

       上面的发送程序是由双口RAM的中断信号触发的,收到中断信号后,首先读取7FFEH单元的内容,将中断信号消除,然后根据该单元的内容,判断双口RAM内存放的是数据,还是被要求发送数据的CAN子站的ID号。如果7FFEH内容为00H,则说明所要发送到CAN子站的为正常的数据,于是将发送缓冲区的第一个字节设置为00H,告诉CAN子站发送的为数据,然后读取7FFDH单元内容,查表求得数据在双口RAM中的地址,并从该地址取两个字节存到SJA1000输出缓冲区数据区的第二、三个字节,同时把7FFDH作为发送的ID号。如果7FFDH是FFH,则说明PROFIBUS- DP发送过来得是被要求发送数据的CAN子站的站点号,于是只要把它放到SJA1000发送缓冲区数据区的第二个字节,并把第一个字节设为FFH,以通知 CAN站点,发送的数据为ID号。以上工作完成后,最后通过写命令字发送数据。

5 结束语 

       实践证明,双CPU结构的双向网关可以很好地完成CAN总线到PROFIBUS-DP总线协议转换的任务,并且解决了单CPU结构网关中存在的数据传输速率低,数据传输可靠性差等问题,满足了CAN总线与PROFIBUS-DP总线协议转换的要求。它将CAN总线设备与PROFIBUS总线设备的连接起来,使两种现场总线设备可以高效的通信,最终达到数据共享与功能互补的目的。并且工作人员在使用过程中不必关心两种总线物理层和数据链路层的全部内容,给总线产品的研究开发带来极大方便。另外这种双CPU结构的设计方案对其他现场总线之间的网关设计具有借鉴意义,是一种值得推广的方法。

参考文献

[1] 邬宽明. 现场总线应用选编. 北京:北京航空航天大学出版社,2004
[2] 邹益仁. 现场总线控制系统的设计和开发. 北京:国防工业出版社,2003
[3] 饶运涛. 现场总线CAN原理与应用技术. 北京:北京航空航天大学出版社,2003
[4] SIEMENS. SPC3 and DPS2 User Description Version2.0,2002
[5] PNO.Draft GSD Specification for PROFIBUS-DP GSD Revision2,1998
[6] PHILIPS.Semiconductor PCA82C250 CAN controlerinter-face,1997

关键字:CAN总线  总线网关  PROFIBUS-DP 引用地址:CAN总线-PROFIBUS-DP在处理器上的实现方法

上一篇:基于CAN总线的处理器设备远程通信
下一篇:基于单片机设计实现的总线转换电路

推荐阅读最新更新时间:2024-03-16 13:40

基于CAN总线汽车车身视觉检测站的研究
    摘要: 研究CAN总线和多主机控制在汽车白车身视觉监测站中的应用;提出以采用摩托罗拉MC68HC05X16和微机为主机的多主机分布式控制系统;介绍控制网络的物理层接口及有关硬件,并对通信部分进行较为详细的研究。     关键词: 视觉检测 三维测量 分布式控制 控制器局域网 数据通信 前言 汽车车身视觉检测站是用于测量车身关键点的三维空间坐标的大型的专用检测系统。它由机械及定位系统、三维视觉传感器系统、测量控制与接口系统、标定系统以及计算机软件五大部分组成。主要方法采用结构光传感器,经标定系统标定后,通过控制系统选取被测点,采集图像,结合视觉检测算法,求出被测点坐标参数。为进行测量,必须把计算机与
[测试测量]
基于CAN总线的伺服电机通信控制
1 引言 CAN(Controller Area Network)总线是一种有效支持分布式控制或实时控制的串行通信局域网络,由于其高性能、高可靠性、实时性好及其独特的设计,已广泛应用于控制系统中的各检测和执行机构之间的数据通信,在工控领域兴起应用热潮。 而伺服电机具有结构紧凑、控制容易、运行稳定、响应快等优异特性,已越来越成为现代工业自动化系统中的一个重要执行元件。在自动化程度高、需精确控制速度、位置、力矩等的场合,如印刷机械、造纸机械、纺织机械、工业机器人、高速电梯、数控机床等重要行业中,得到了普遍的应用。 德国伦茨公司生产的伺服电机由于提供了CAN总线接口,使其很容易挂接到CAN总线上,通过CAN总线进行数据传输与控制,拓
[嵌入式]
一文读懂CAN总线/LIN总线/FlexRay/以太网
20世纪80年代后, MCU和MPU开始在汽车中被广泛使用,汽车电子化进程开始逐年加快。近几年,智能化和网联化在汽车行业兴起,汽车电子化程度更上一层楼。据统计,当前汽车的创新70%来源于汽车电子产品,电子产品成本占整车比例已经从上世纪70年代的4%,成长到现在的30%左右。未来仍将进一步提升,预期到2030年,该比例将可达到50%。在电子零部件越来越多,信息传输量越来越大的需求促动下,汽车网络化势头已经不可挡。因此,传统的电气网络已无法适应现代汽车电子系统的发展,新型 汽车总线 技术应运而生。   图|汽车总线   目前汽车上普遍采用的汽车总线有局部互联协议 LIN 和控制器局域网 CAN ,正在发展中的汽车总线技术还有高速容
[嵌入式]
从新能源汽车CAN总线入手,学习兼容性更强大通讯系统
CAN总线通讯发展的过程中,为了兼容实时操作系统,是否也有与之对应的实时通讯网络协议? 今天我们就来学习兼容性更强大的通讯系统。 ISO11898前3部分的解读提高了对传统CAN网络的理解,无论是高速CAN还是低速CAN,亦或者是最基础的物理层定义都进行了详细的阐述。传统的CAN网络总线通讯基本都是事件触发的,当同时有许多信息需要传输时可能会造成总线过载,为了避免这种现象,传统CAN网络采用仲裁机制按信息优先级进行传输。 图1 新能源汽车CAN总线透视图 显然,传统分布式的CAN网络如果能用于实时操作系统(基于时间触发调度而非事件触发),对于系统的兼容性和综合集成性将大有提高,但问题是我们如何才能将并非同样遵从时间调度的两
[汽车电子]
基于CAN总线的分布式显示控制系统
  CAN(Controller Area Network) 即控制器局域网络,是一种全数字化、多主和双向的现场总线。CAN总线数据通信具有很高的可靠性、实时性和灵活性,越来越广泛地应用于各种工业现场。本分布式显示控制系统采用CAN控制器SJA1000实现各节点间远距离串行通信,得到了很好的效果。系统结构如图1所示。 主机负责监控各个从机,向从机发布指令,并接收处理从机传来的检测数据。从机执行主机的指令,显示运行信息,向主机传送检测数据。CAN接口电路负责各节点间的串行通信。两只125 电阻作为CAN线路的匹配电阻。本文着重介绍CAN总线的设计使用以及点阵显示电路的设计原理,其他功能电路的介绍从略。 CAN总线硬件设计 C
[单片机]
CAN总线通信系统的研究与设计
0 引 言 众所周知,虽然目前8位单片机正逐渐被速度高,性能强的16位或32位微处理器所取代,但8位单片机仍以其低廉的价格、丰富的外围芯片以及众多的多功能产品而在低端应用市场占据主流地位。数字信号处理器(Digital Signal Processor,DSP)作为一种具有高速数字信号处理能力的新型单片机,在通信、自动控制、航天航空、军事、医疗等领域广泛应用。在比较复杂的测控系统中,如微机电动机保护装置,要求在毫秒级的短时间内对电动机实现实时保护和测量,所以对装置硬件系统的实时数据处理能力要求较高,而传统的基于单 CPU微处理器的方案己经难以胜任。因此,这里采用数字信号处理器与单片机构成的双CPU结构。由数字信号处理器完成多通道A
[单片机]
<font color='red'>CAN总线</font>通信系统的研究与设计
Linux环境下实现基于ARM9的CAN总线通信
1. 引言 CAN(Controller Area Network)总线最早是由德国BOSCH公司提出,实现汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。由于其具有成本低,实时性好,容错性高,设计灵活等特点,目前已被广泛的应用于各种工业领域,被公认为是最有前途的现成总线之一。与此同时,随着ARM(Advanced RISC Machines)芯片及嵌入式Linux操作系统的成熟与完善,使得CAN通信的开发更为便利,应用更为广泛。本文就将从硬件,软件两方面介绍一种在Linux环境下实现基于EP9315的CAN总线通信方式。 2. 硬件介绍及其接口实现 本设计选用的是Cirrus Logic公
[单片机]
Linux环境下实现基于ARM9的<font color='red'>CAN总线</font>通信
基于CAN总线PC适配卡设计
引 言 分布式产业测控系统需要有现场总线来连接各现场设备及处理控制单元。CAN总线就是一种具有较高性能价格比、能满足分布式控制要求的现场总线,具有广泛的应用远景。它实际上是一种简化型网络结构,在构造单片处理器网络中极为有用。为了使上位机也能和CAN总线相连,使微机成为系统的上位机,增强控制系统的功能,从而进一步延伸CAN总线连通范围,就需要提供一个微机和CAN总线的接口。本文先容作者设计制作的一种CAN总线PCI适配器。 接口的硬件设计 PCI接口的实现 目前市面上有些CAN总线的适配器,但大多都是基于PC/104或者ISA总线,传输速度较慢,效率低下。作者在设计中使用高效的PCI总线,实现了数据的高速传输。与ISA总线相
[单片机]
基于<font color='red'>CAN总线</font>PC适配卡设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved