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

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

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

另外为了避免总线上的信号对电路的影响,在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号。

由图可知双口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结构的设计方案对其他现场总线之间的网关设计具有借鉴意义,是一种值得推广的方法。

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

网站地图

Top