近年来,跟着以太网技能的进一步开展和完善,特别是通讯速率的进步和交互技能的运用,使得以太网技能运用于现场操控范畴成为可能,这对工业操控网络产生了新的影响。从现在的趋势来看,以太网己经进入了现场操控级,可是已有的现场总线仍将持续存在,工业以太网只能占据必定的商场。
从实践来看,以太网扩展了现有的体系,可是现场总线不可能彻底被工业以太网代替,后者的潜力巨大,其运用范畴必定会不断扩大。所以,将现场总线与以太网结合,然后完结底层出产与上层办理的严密集成,现已成为一种趋势。CAN总线作为国际上运用最广泛的现场总线之一,在我国也得到了很广泛的运用,该规划以 CAN总线作为工业现场总线,完结其与以太网的互联。
1 硬件结构
现在,关于CAN和以太网相连的嵌入式网关规划首要有两种办法:一种是等级低MCU加接口芯片的规划办法,另一种是高级MCU加EOS(实时多任务操作体系)再加接口芯片的规划办法。因CAN只选用了ISO/OSI参阅模型的一、二层,协议相对简略,比较合适用于低本钱、速率要求不高的离散操控体系。从合理的本钱和有用运用处理才干这两方面考虑,该规划选用等级低MCU加接口芯片的办法,其硬件框图见图 1。
1.1 主控芯片及以太网接口模块
依据要求,该体系挑选了功用价格比较高的Atmel公司出产的AT89C55单片机。它是面向测控目标和嵌入式运用的,所以它的体系结构以及CPU、指令体系、外围单元电路都是依照这种要求专门规划的。它内部带高达20 KB的FLASH程序存储器,AT89C55彻底兼容8051指令集,片上FLASH方便了运用者进行在线编程,作业速率最高可达33 MHz,256 B的内部RAM,32个可编程的I/O口,3个16位的守时/计数器,8个中止源,支撑低功耗的闲暇作业形式。以太网接口选用的是RTL8019AS芯片,它是由Realtek公司出产的一种高度集成的以太网操控器,能完结以太网前言拜访层(MAC)和物理层(PHY)的悉数功用。RTL8019AS内部有两个RAM区域:一是16 KB,地址为0x4000~0x7fff,要接纳和发送数据包有必要经过DMA读写RTL8019AS内部的16 KB的RAM,它实践上是双端口RAM,即有两条总线与其衔接,一条总线用于RTL8019AS读/写或写/读该RAM,即本地DMA;另一条总线用于单片机读或写该RAM,即长途DMA;二是32个字节,地址为0x0000~0x001F,用于存储以太网物理地址。主控芯片和以太网接口芯片的硬件接口原理图见图2。值得注意的是由于以太网的包最大可以超越1 500个字节,AT89C55的片内RAM只需256个字节,因而无法存储这么大的包,所以这儿扩展了一个32 KB的外部RAM,这样一起也能进步单片机的数据传输速度。
1.2 CAN接口模块
组成CAN体系的首要器材是CAN操控器和收发器。该规划中,CAN接口模块选用SJA1000芯片和PCA82C250芯片。SJA1000是一个独立的CAN操控器,它是Philips公司另一个CAN操控器PCA82C200的代替产品,且增加了一种新的作业形式(Peli CAN),这种形式支撑CAN 2.0B协议。SJA1000首要完结CAN的通讯协议,完结报文的安装和拆分、接纳信息的过滤和校验等。
PCA82C250是CAN操控器与物理总线之间的接口,首要用于增强体系的驱动才干。选用收发器的体系中,节点数至少可以到达110个,一起还具有下降射频搅扰(RFI)和很强的抗电磁搅扰 (EMI)才干。在处理这部分电路时,有几个当地要特别注意:
(1)晶振电路的问题。89C55和SJA1000都应该有各自独立的晶振电路,不可以用SJA1000的时钟输出信号CLKOUT来驱动单片机。
(2)复位引脚的问题。尽管SJA1000的复位是低电平,但不能经过一个非门直接衔接单片机的复位引脚。一般对处理复位引脚问题有两种方法:榜首种是运用单片机的I/O引脚操控SJA的复位引脚,其优点是单片机可以彻底操控SJA的复位进程;第二种是选用恰当的复位芯片,为了下降本钱,该规划采纳的是榜首种办法。
(3)RX1引脚的电位有必要维持在约0.5 VCC上,不然将不能构成CAN协议所要求的逻辑电平。
(4)必定要注意电缆的终端阻抗匹配,它直接影响CAN总线是否能正常作业和网络功用。CAN接口模块的硬件电路图见图3,在PCA82C250的RS脚上接有一个斜率电阻R,可依据总线通讯速度恰当调整电阻的巨细。
2 通讯模块软件规划
2.1 SJA1000驱动程序的完结
SJA1000驱动程序是由SJA的初始化函数、发送函数、接纳函数组成的,图4所示为其流程图。
(1)SJA1000的初始化。SJA1000在体系上电、硬件复位或主操控器宣布复位指令后需求进行初始化,以设定它的作业形式、通讯速率、输出操控方法和标识符屏蔽格局等重要参数。CAN操控器SJA1000的初始化只能在复位形式下才干完结。程序的流程图如图4所示。
首要程序检测CAN接口是否正常作业,即向SJA1000的测验寄存器写入并读出,校验其成果是否共同,假如成果共同则进入复位形式进行初始化设置。在初始化的进程中,假如对某个寄存器的设置超越规则的时刻还未完结,则以为初始化失利,初始化程序主动发送过错信号。
(2)数据的发送与接纳。SJA1000芯片有一个报文发送缓冲区和两个报文接纳缓冲区,用于CAN报文传送。数据从CAN操控器SJA1000发送到 CAN总线首要是由CAN操控器主动完结的,发送数据程序把数据存储区中待发送的数据取出,组成信息帧,并将主机的ID地址填人帧头;然后将信息帧发送到 CAN操控器的发送缓冲区;最终发动发送指令即可。信息从CAN总线到CAN接纳缓冲区也是由CAN操控器主动完结的。接纳程序只需从接纳缓冲区读取要接纳的信息,并将其存储在数据存储区即可。
2.2 RTL8019AS驱动程序的完结
RTL8019AS的驱动程序和SJA的驱动程序相同,有3种功用:芯片初始化、收包、发包。
(1)RTL8019AS的初始化。RTL8019AS的初始化进程比较复杂,但十分重要,它决议了通讯进程中的一些重要参数。如设置相关作业形式的寄存器,分配和初始化接纳及发送缓冲区,初始化网卡接纳地址等,其流程图见图5所示。
(2)数据的发送与接纳。由于在RTL8019AS的初始化程序中现已完结了以太网的物理地址设置,并指定了发送缓冲区开始页面地址寄存器TPSR。此外,RTL8019AS的CRC校验主动生成器也被使能,所以RTL8019AS的数据包发送程序相对要简略。在数据包的发送进程中,AT89C55只需经过长途DMA将待发送的数据包写至RTL8019AS片内SRAM的发送缓冲区,并发动发送进程即可。
在接纳数据包时,有查询和中止两种方法,鉴于AT89C55的处理才干有限,在该规划中选用查询方法,依据判别CURB==BNRY+1,可以判别是否收到新的数据包,假如有则经过DMA读操作从网卡芯片RAM读出数据。
2.3 网关协议转化流程
嵌入式网络接口完结两种网络的互连。当以太网运用层有数据要发送到CAN节点时,首要将数据发送到网关,由以太网操控器协议转化模块解析完好的CAN协议数据包,经过CAN操控器发送到CAN总线。反之,当CAN设备有数据要发送到用户层时,首要将数据发送到通明网关,由CAN操控器协议模块将完好的 CAN协议数据包存放在缓冲区,再告诉主控芯片,由它调用以太网操控协议转化模块,将完好的 CAN协议数据包作为运用层数据封装起来,再发送到以太网的运用层。
3 结 语
这儿介绍的是一种低本钱、高可靠性、方便的CAN以太网网关的硬件、软件规划方案,经过实践运用证明,该规划可以作为CAN总线节点的一个模块,可以与仪器仪表等设备相结合,使其具有网络通讯的才干,比较同类产品的规划,该规划能大大进步其性价比