基于ENC28J60分布式数据采集单元设计及扩展方法
2018-08-03黄安贻王爱华
黄安贻,王爱华
(武汉理工大学机电工程学院,湖北武汉 430070)
0 引言
在现代化生产中,为提高工厂生产效率及监控效率,通常需要为生产设备提供多个传感器以保证数据获取的准确性,其中以RS232、RS485、CAN总线为代表的串行通信在数据采集中应用较为广泛,但串行通信传输距离短(传输距离不超过15 m)、实时性不高(波特率为9 600 bit/s)、抗干扰能力差,为生产设备的实时监控及故障诊断带来极大不确定性。以太网(Ethernet)以其通信距离远、通信质量稳定、较强的自动纠错能力等优点逐步取代总线通信在数据获取中地位[1]。本文选用STM32F103C8T6及ENC28J60实现数据采集单元的设计[2],以百兆以太网交换机为平台提出数据采集单元的拓扑扩展方法,这对自动化产线海量数据的实时、同步、高效采集具有重要意义。
1 系统的总体设计
1.1 系统总体框架图
本系统的工作原理为:远程PC机通过网关单元与分布式数据采集单元进行数据通信,每个分布式数据采集单元有固定且唯一的MAC地址及IP地址,可将获取的传感器数据作为以太网协议的应用层数据,用网络协议封装传输至上位机;上位机发出的网络数据包经解析后通过串行通信的方式发出,从而实现传感器节点与上位机之间实时的数据通信。由图1可知,本系统由两个部分组成,分别如下。
图1 分布式数据采集网络结构示意图
(1)分布式数据采集单元:该单元由主控制器STM32F103C8T6、以太网芯片ENC28J60、RJ45及网络变压器构成的HR911105A以太网接口模块、AMS1117线性稳压模块组成。每个分布式数据采集单元引出三个独立的异步串行通讯接口USART作为传感器接入节点,数据采集单元获取传感器节点的数据[3],经以太网模块处理后通过网关单元上传至上位机。
(2)可扩展网关单元:该单元由多个百兆以太网交换机组成,形成可扩展的星型拓扑网络结构,将多个数据采集单元通过以太网连入网关,解决传感器节点受限等问题。
1.2 数据采集单元
1.2.1 MCU
本系统选用32位的STM32F103C8T6为数据采集单元的主控制器,该处理器采用Corte-M3架构,具有很多包括更高的代码速度、更强的操作性能、低成本、低功耗等优点。主控制器芯片采用贴片式48引脚的LQFP封装,最高工作频率可达72 MHz,工作温度为-45℃~+85℃。出色的性能及丰富的外设资源(包括UART、USART、RS232、SPI、IIC等)使得硬件设计大大简化,该处理器的执行速度及内存完全满足数据采集单元实时性、稳定性的要求。为减小数据采集单元的体积,文中仅引出最小系统、异步串行通讯USART接口、SWD下载接口及SPI接口等,STM32F103C8T6的引脚图如图2所示。
图3 ENC28J60与HR911105A连接原理图
1.2.2 网络模块
以太网网络芯片选用符合IEEE 802.3协议、28独立引脚的ENC28J60以太网控制器,该控制器可作为任何带有SPI控制器的以太网控制芯片,是目前市面上性价比最高、体积最小的嵌入式以太网解决方案。ENC28J60主要优点有:(1)支持全双工、半双工模式;(2)内部集成10BASE-T的MAC及PHY控制器;(3)数据冲突时支持自动重发;(4)SPI速度可达10 Mb/s;(5)支持DMA,实现快速的数据交换及IP校验[4]。
图3为ENC28J60与HR911105A连接示意图,根据ENC28J60工作性能要求,需在23引脚(OSC1)、24引脚(OSC2)两端连接25 MHz的平行切割晶振及20 pF的接地电容;为使ENC28J60工作稳定,在其内部集成了2.5 V稳压器并在VCAP与GND之间外接10μF电容,但内部稳压器无法带动外部负载,需外接3.3 V电源;ENC28J60的差分发送及差分接收引脚、LEDA/LEDB分别与集成以太网变压器RJ45的HR911105A对应引脚相连。其中,差分发送引脚外接一个带有中心抽头的1∶1变压器并接入51Ω电阻以防静电干扰[5]。
图4 数据采集单元结构示意框图
图4 为数据采集单元结构示意框图,从中可明显得知主控制器与以太网芯片的连接关系为:ENC28J60与主控制器STM32通过两个中断引脚、串行外设接口(SPI) 实现通信,由于ENC28J60的工作电压为3.14~3.45 V,TTL输入,因此两者可以直接连接;STM32的14、15、16、17引脚分别复用为SPI_CS(从设备选择)、SPI_SCK(串口时钟)、SPI_MISO(主入从出)、SPI_MOSI(主出从入),这四个引脚分别与ENC28J60的CS、SCK、SI、SO相连,其中CS为低电平时,允许数据传输,被置高时完成相应操作;SPI_SCK为ENC28J60提供所需工作时序,时钟引脚SPI_SCK为上升沿时,数据或命令通过SI引脚输入ENC28J60,为下降沿时,数据或命令从SO引脚输出至STM32,传输速率高达10 Mb/s。
1.2.3 电源电路设计
图5 系统电源电路原理图
数据采集单元接入5 V电源,经滤波稳压之后输出标准的3.3 V电压为STM32及ENC28J60以太网芯片供电。电路中选用AMS1117作为稳压芯片,对电路进行稳压,使其输出恒定的直流电压。AMS1117固定输出电压有3.0 V,3.3 V和5.0 V,具有1%的精度。为防止环境温度对硬件电路的破坏,稳压芯片内部集成了过热保护和限流电路。根据硬件电路要求,稳压芯片选择SOP-223封装的AMS1117-3.3。图5为系统电源电路原理图,1号引脚接地,2号引脚为输出电压(3.3 V),3号引脚为输入电压(5 V)。C1、C2为输入电容,有以下作用:(1)交流电压整流输入;(2)单向脉动电压转化成直流电压;(3)防止断电后电压倒置;(4)抑制干扰。C3、C4为输出电容,有滤波及抑制自激振荡等作用,若输出端不接滤波电容,则线性稳压器输出的是不稳定的振荡波形。
2 网关单元
可扩展网关单元采用百兆以太网交换机成星型拓扑结构连接,如图6所示,网关单元可扩展,管理方便,组网容易,单一节点出现故障不会干扰其他节点工作,便于故障排查。该网关单元的扩展性可保证分布式数据采集单元及传感器节点的无限接入,解决了多传感器接入节点受限的问题,方便多传感器海量数据采集。
图6 可扩展网关单元连接示意图
3 软件设计
构建分布式数据采集单元模块除了对以太网控制器及以太网变压器进行硬件设计之外,还需对数据采集单元进行软件程序设计。对以太网数据及指令传输过程可解释为以下过程:对即将发送的串口数据按以太网帧格式进行封装以传输至上位机;对以太网控制器接收到的以太网数据解包供串行设备使用。本文使用Keil μVision5对软件功能的实现进行程序编写(流程图见图7),具体流程如下。
(1)初始化:在使用ENC28J60收发数据或指令时,必须初始化以太网芯片ENC28J60及STM32F103C8T6定时器并设置TCP及ARP的超时时间。ENC28J60初始化主要对收发缓冲器、晶振起振时间、主要状态寄存器(包括EIE、EIR、ESTAT、ECON2、ECON1等)进行设置;关闭STM32中断输入并保持复位引脚处于低电平复位状态,若以太网时钟启动标志位置位,则开中断;设置上位机及分布式数据采集单元的IP地址、网关、子网掩码等。这里设置上位机的IP地址为169.254.226.30,网关为169.254.226.1、子网掩码为255.255.0.0;分布式数据采集单元的MAC地址为0x11,0x22,0x33,0x44,0x55,IP地址为169.254.226.123,分布式数据采集单元IP地址必须与上位机IP地址在同一个局域网下。
(2)主循环:查询ENC28J60网络芯片是否有数据包收到,若有IP数据包收到且为本机MAC地址,则对IP数据包解包处理,UDP连接成功之后调用应用程序接口函数UIP_APPCALL()发送数据;若检测到网络芯片接收到的数据为ARP包或当前有数据需要发送,则按照以太网帧格式打包数据并由物理网卡将包送出。
图7 程序流程图
4 实验验证与结果分析
将数据采集单元及上位机分别与百兆以太网交换机连接,在上位机的指令终端中输入指令ping 169.254.226.123,实验结果如图8所示,上位机向目标数据采集单元发送了四个数据包,数据采集单元也全部接收,说明所设计的数据采集单元与上位机互ping成功,数据可正常收发。
图8 上位机与单片机互ping实验
通过socket tool软件对分布式多传感器数据采集单元的稳定性及实时性进行实验验证,并对采集的实验数据进行分析。为验证分布式数据采集单元的稳定性及实用性,使用两组该模块单元对四个超声波传感器进行数据采集并在采样数据之前设置41 41、42 42标志位对多超声波传感器加以区分。超声波传感器通信波特率为9 600 bit/s,通信协议格式为0xFF、高八位(DATA_H)、低八位(DA⁃TA_L)、数据校验位(SUM),数据验证规则为SUM=(0xFF+DATA_H+DATA_L)&0x0F。TCP Server为TCP服务端,169.254.226.30即为上位机IP地址;TCP Client为TCP的客户端,169.254.226.123、169.254.226.163分别为两个传感器数据采集单元的IP地址。通过IP地址可分辨各个数据采集单元,保证数据传输的独立性;超声波传感器的数据准确无误,验证了该数据采集单元数据传输的稳定性及实时性。由此可看出,分布式数据采集单元强大的实时性及较低的丢包率是普通串行通信不能比拟的。因此,分布式数据采集单元具有采集数据稳定、丢包率低且实时性较好等优点,可用于多传感器海量数据的实时采集与故障监控。
5 结论
通过对本系统的研究表明:以ENC28J60以太网芯片设计的数据采集单元具有体积小、实时性强、稳定性好等优点,可保证数据高效、稳定透传;多数据采集单元的分布式分布,便于数据采集通道的扩充,同时也可解决串行设备数据采集系统布置分散、资源浪费、插接不便等问题;各个传感器节点数据可独立自主处理,数据信号不相互串扰,便于故障的排查及替换;多机并行的工作方式使得单个单片机仅完成有限工作即可,对底层硬件要求不高并能构建高性能的系统。另外,本文提供一种传感器节点可扩展的以太网网关解决方案,解决现阶段中数据采集通道受限的问题,为海量数据的多通道采集提供解决思路。