近年来,随着以太网技术的进一步发展和完善,特别是通信速率的提高和交互技术的应用,使得以太网技术应用于现场控制领域成为可能,这对工业控制网络产生了新的影响。从目前的趋势来看,以太网己经进入了现场控制级,但是已有的现场总线仍将继续存在,工业以太网只能占领一定的市场。
从现实来看,以太网扩展了现有的系统,但是现场总线不可能完全被工业以太网替代,后者的潜力巨大,其应用领域一定会不断扩大。所以,将现场总线与以太网结合,从而实现底层生产与上层管理的紧密集成,已经成为一种趋势。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总线节点的一个模块,能够与仪器仪表等设备相结合,使其具有网络通信的能力,比较同类产品的设计,该设计能大大提高其性价比
关于5G技术持续演进和高通技术公司无线研究重点
一文看懂频率合成原理与特点
以PPP模式来建设新型平安项目如何?
利元亨远程运维机器人给企业带来了极大便利
2019第一届机器人+智慧养老产业论坛重磅来袭!不可错过!
一种基于CAN总线与以太网的嵌入式网关经典设计
SW399组成的精密恒流源电路图
AI会是防治肥胖症的最好方法吗
大陆工业和信息化部:四方面推动人工智能产业发展
废气vocs在线监测仪正宗生产厂家
埃森哲申请“硬件区块链加速”新专利,意在提高区块链的交易速度和安全性
中芯国际获2.8亿美元投资 将加快12英寸凸块生产线的建设进度
CAEL-S16传感器应用于博物馆的温湿度检测
贫液电池与富液电池的内阻是否相同,它们的内阻范围是多少
低功耗PFM DC-DC升压芯片AP8105
基于PWM技术的直流电机控制系统
低功耗RF设备通信的FCC规范要求简介
比特币有没有可能成为法定的数字货币
网络丢包时常用的排错思路
电阻器的基本介绍和作用