基于Web远控的ARM数据采集系统研究与设计

2016-01-18 03:52李建奇王文虎贺翠娴
自动化与仪表 2016年12期
关键词:网卡内核以太网

师 凯 ,李建奇 ,2,王文虎 ,2,潘 越 ,贺翠娴

(1.湖南文理学院 电气与信息工程学院,常德 415000;2.洞庭湖生态经济区建设与发展协同创新中心,常德 415000)

随着网络技术和信息技术的日趋成熟,以太网在数据采集与传输、数据通信等众多领域得到了广泛的应用[1]。工业以太网是一种比较合适的数据采集与处理系统的联网传输方式,其数据传输速率能够满足大多数的数据采集与处理系统的要求,传输距离远,建网简单方便,网络协议很成熟,而且比较廉价[2]。目前,对工业数据的数据采集与处理多采用RS232或RS485等串行总线来实现其网络化,这些方式都存在传输速率有限和联网能力不足等缺陷,而采用工业以太网的数据传输方式研究和应用很少[3]。在此,结合工业以太网和嵌入式技术,提出了一种基于工业以太网的ARM数据采集系统的设计,提高了数据传输的实时性、稳定性和可靠性[4]。

1 系统总体设计

基于工业以太网的ARM数据采集系统的总体设计如图1所示。该系统以STM32F103作为主控芯片,利用定时器定时采集3路传感器的数据[5],并通过工业以太网将采集的数据一方面发送到STM32F103服务器上并通过液晶屏实时显示出来,另一方面采用远程客户端的Web浏览器输入微处理器相对应的IP地址来访问这些数据,进而实现组网达到多点采集的功能。

图1 系统总体方案Fig.1 Overall solution architecture

2 系统硬件设计

数据采集传输系统包含以下模块:基本应用系统电路,网卡模块电路,人机接口电路,Flash存储电路,电源模块电路。

2.1 基本应用系统

主控芯片STM32F103ZET6具有64 kB SRAM,512kB FLASH[6]。基本应用系统由晶振电路和复位电路组成(如图2所示),分别采用8 MHz和32.768 kHz的晶振为系统提供不同的动力。为确保系统中电路稳定可靠工作,复位电路必不可少,其第一功能是上电复位。一般控制系统电路正常工作需要供电电源为3.3×(1±5%)V。本电路采用上电复位和低电平复位。

图2 基本应用系统电路Fig.2 Basic application system circuit diagram

2.2 网卡模块电路

工业中应用比较广泛的以太网收发芯片种类较多,如SPI接口的ENC28J60,并口的 PTL8019S,CS8900A等。综合考虑,本设计采用10 M ENC28J60网卡,ENC28J60与STM32F103网络接口原理如图3所示。

图3 网卡驱动原理Fig.3 Network card driver schematic

以太网控制器ENC28J60内部集成了MAC层和PHY层功能,支持10 Mb/s的全双工以太网通信,在封装上,该芯片只有28引脚,非常适合嵌入式设备的组网设计。ENC28J60在主机之间通过使用SPI串行接口与主控芯片通信,集成度高,简单的访问方式使得ENC28J60非常适合用于小型嵌入式设备。此外,ENC28J60内核还集成了8 kB的SRAM用于网络数据的缓冲与接收,可大大提高与控制器之间交互效率。

STM32F103 具有 2 个 SPI串行接口,SO,SI,SCK为SPI接口的3条信号线[7],分别连接STM32的 PB14-SPI2-MISO,PB15-SPI2-MOSI,PB13-SPI2-SCK引脚上;CS是网卡芯片片选信号与STM32的PB12-SPI2-NSS连接;INT是中断信号,连接到主控器STM32的PA1-EINT0-INT1上,网卡和主控器可以通过中断的方式进行通信,从而完成数据的快速接收和发送。网卡ENC28J60的2条差分接收引脚TPIN+,TPIN-和 2条差分发送引脚 TPOUT+,TPOUT-外接在集成有以太网隔离变压器和RJ45插座的HR911105A上。

2.3 显示模块电路

LCD12864作为整个系统的显示部分,完整地展示了通过工业以太网服务器采集到的数据快速准确地到达客户端并实时显示出来。液晶显示器与STM32主控器的连接方式为串行方式,减少了I/O口的使用。具体连接方式为主控器的PE3口连接液晶显示器的片选信号、PE4口连接显示器的数据端口、PE5口连接显示器的时钟信号线,显示电路如图4所示。

2.4 Flash存储电路

采用W25Q64BV (6 Mb)串行Flash存储器芯片。该芯片属于E2PROM的升级版,支持标准的串行外设SPI接口的设备,在2.7~3.6 V单电源工作电流消耗低至4 mA时主动关机。该W25Q64BV阵列是由256 B组成可编程32768页,最多256 B可以同一时间编程,在本系统中被用作存储Boot loader以及操作系统和程序代码,具体电路如图5所示。

图4 液晶显示电路Fig.4 Liquid crystaldisplay circuit

图5 FLASH存储电路Fig.5 FLASH storage circuit

2.5 电源模块电路

采用的电源幅值是5 V和3.3 V。电源原理如图6所示,首先由电源变压器将交流220 V电压降为交流18 V电压,然后由整流、滤波电路得到稳定输出的直流电压,最后通过三端稳压管7812和7912得到±12 V电压,再由SPX29300得到3.3 V和5 V电压。

图6 电源模块电路Fig.6 Power module

3 系统软件设计

软件设计部分包括嵌入式操作系统移植、网络协议栈的移植和软件功能开发三部分。为提高系统运行性能和便于扩展功能,本系统采用嵌入式操作系统μC/OS-III作为运行平台。μC/OS-III是一个可升级的、可固化的、基于优先级的实时内核,属于第3代系统内核;对于任务个数无限制,支持现代实时内核所必须的大部分功能,如资源管理、同步和任务间的通信等;还拥有其它实时内核没有的功能,如完备的运行时间测量性能,直接发送信号或者消息到任务,任务可同时等待多个内核对象,等。

为实现以太网通信移植了LwIP协议栈。LwIP是一种轻型IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,只需十几kB的RAM和40 kB左右的ROM就可以运行,因此该协议栈适合在低端的嵌入式系统中使用,适合工业控制领域使用。

系统软件功能设计部分主要包括:主控程序设计,协议栈初始化程序设计,数据采集子程序设计,终端显示子程序设计和远程控制子程序设计[8]。数据采集装置利用配置的传感器采集相应数据,通过工业以太网传输给Web客户端实时显示。

3.1 系统主控程序设计

主控程序负责控制整个系统的运行。①定义任务控制块和任务堆栈的大小,设计多任务之间的优先级;②运行板载初始化程序完成设备初始化,包括系统时钟初始化、I/O端口初始化、SPI初始化;③初始化μC/OS-III实时操作系统的内核,内核初始化完成后,系统创建主任务,包括任务控制指针、控制名、代码指针、优先级、任务堆栈基地址、堆大小等;④在主任务中创建3个数据采集子任务和2个数据传输任务并启动操作系统。系统主控程序流程如图7所示。

图7 系统主控程序流程Fig.7 Flow chart of the main control program of the system

3.2 LwIP协议栈初始化

使用LwIP协议栈前,首先应完成协议栈内核初始化,与网卡相关的网络接口应被注册到内核中,然后才可以利用网卡进行以太网通信。系统利用一个Lwip_init()函数来完成议栈的初始化和网卡信息的注册等,操作流程如图8所示。

图8 协议栈初始化流程Fig.8 Protocol stack initialization flow chart

初始化函数包括内存初始化函数、数据包结构初始化函数、网络接口结构初始化函数、IP层初始化函数、TCP层初始化函数等。注册网络接口,需要用到最少3个IP地址参数,包括网关IP地址、终端IP地址以及对应的子网掩码。接口结构注册通过调用函数netif_add()完成,该函数除使用上述3个IP网络参数外,还将 ethernetif_init(),ethernet_input()等2个函数地址作为参数。这2个函数地址会被赋予给netif结构的相关字段,内核通过这些字段指向的函数来完成网卡的初始化以及向上层递交数据。经过初始化后,程序可以使用网卡完成数据传输。主控程序可以让子任务通过2种方式与网卡之间实现数据的交互,即查询方式和中断方式。本系统软件中主要通过轮询查询方式的完成数据操作。

3.3 数据采集程序设计

数据采集一般分为模拟量参数采集与数字开关量采集2种。本系统中,模拟量参数的采集采用数字信号输出的温湿度传感器(DHT11),以单总线的方式与处理器的GPIO口连接,定时把采集的温度、湿度数字量传输到STM32F103微处理器上进行处理。一次完整的数据传输过程为首先将DHT11设置为输出模式,处理器设置为输入模式,判断从机是否有低电平响应信号,然后进入循环直到从机发出80 μs的高电平,处理器开始接收数据,最后通过和校验检测读取的数据是否正确。对连续5次采集的数据会进行一个平均值滤波处理,将平均值作为检测值。数字开关量采集相对比较简单,不再详述。

3.4 终端显示程序设计

LCD12864作为系统终端的显示设备,具有操作简单、人机界面友好等特点。STM32F103微处理器与液晶显示器有串行和并行两种通信方式。本设计采用串行通信方式,减少了GPIO口的使用。液晶显示器与处理器通信时,首先拉高显示器的片选信号,时钟信号每产生一个下降沿数据线传输1 b数据信号给显示器,当其接收到24 b数据就完成一次通信。液晶屏显示的内容包括数据采集的通道号,采集的温度、湿度值,以及端口的控制显示,极大地方便了现场工作人员查看信息与控制操作。

3.5 Web远程控制程序设计

BSD socket是通信双方的一种约定,用套接字中的相关函数来完成通信的过程。应用层通过传输层进行数据通信时,TCP会遇到同时多个应用程序进程提供并发的问题。多个TCP连接或者多个应用程序需要通过同一个TCP协议端口传输数据[9]。本系统的终端显示采用Web浏览器,通过IP地址即可访问STM32F103微处理器采集的数据。远程终端控制不受地理天气等外界因素的影响,一方面可以实时准确地获取温湿度传感器采集的数据并动态地显示在Web浏览器页面上,另一方面可以通过浏览器页面上的控制按钮来选择采集数据的通道。

Web浏览器在TCP/IP协议的基础上使用HTTP应用层协议,按照HTML超文本传输协议和CGI,SSI等编写的服务页面。整个数据交互过程中首先HTTP发出请求,TCP监听到数据并对数据进行HTTP协议解析,记住URL标识在网页中寻找各种name段的关键字并处理成一张数据表格,接着循环搜索已注册的CGI处理程序,搜索完成后把参数表和参数总数提供给URI对应的CGI处理函数处理,接着在网页中搜索已注册的SSI标签,找到后添加相应的SSI消息重新组成一张新的网页数据并发送给浏览页面,从而实现数据的动态刷新。

当在Web浏览器中输入STM32F103微处理器对应的IP地址时,浏览器会向STM32F103发出数据请求,此时处理器就作为一个服务器与客户端实现三次握手,信号通过后开始发送相应的数据。服务器调用 socket(),bind(),listen()完成初始化后,调用accept()阻塞等待,监听80端口的状态,客户端调用 socket()初始化后,调用 connect()发出 SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回,数据传输过程如图9所示。连接建立后,TCP协议提供全双工的通信服务,客户端主动发起请求,服务器被动处理请求,采用应答方式工作。

图9 数据传输流程Fig.9 Data transmission flow chart

4 系统试验与测试

通过对硬件和软件的仔细设计和调试,ARM数据采集系统取得了预期目标。系统通过了连续72 h稳定工作测试,当出现传感器脱落等故障时可自动报警,当程序跑飞后会通过软件看门狗自动重启系统。工作现场实时温度、湿度等参数采集后,通过ARM采集系统可将数据直接通过液晶屏幕显示出来,另一方面,远程客户端通过IP地址,利用Web浏览器可远程对ARM数据采集系统进行监控操作,实际测试效果如图10所示。

图10 系统的实际显示效果Fig.10 Test display effect chart

5 结语

分析了以太网技术在工业数据采集系统中的应用情况,系统围绕着提高系统性价比和稳定性的需要,采用了高性价比的STM32F103ZET6芯片作为主控制器,设计了数据采集板。移植μC/OS-III实时操作系统和LwIP协议栈,采用以太网来实现了远程数据多点采集,设计了Web远程监控模块。通过对硬件和软件的优化设计,使该系统的功能和性能达到了预期设计要求,具有一定的应用参考价值。

[1]鲁力,张波.嵌入式TCP/IP协议的高速电网络数据采集系统[J].仪器仪表学报,2009,30(2):405-409.

[2]徐晓光,李永胜,孙驷洲.基于以太网的远程数据采集系统[J].自动化与仪器仪表,2008,28(2):65-68.

[3]罗智佳,狄峥,毛宗源.基于以太网的分布式数据采集监控系统的应用[J].微计算机信息,2006,22(1):22-24.

[4]曹亚丽,宋爱娟,李晓明.基于工业以太网的数据采集及检测系统[J].机电产品开发与创新,2009,22(6):168-169.

[5]曹圆圆.基于STM32芯片的电参数测量与数据传输[J].自动化与仪器仪表,2010,30(3):137-139.

[6]王永虹,徐炜,郝立平.STM32系列ARM Cortex-M3微处理器原理及实践[M].北京:北京航空航天大学出版社,2008:318-338.

[7]张蕉蕉,曹森,郭坚毅.基于STM32装备数据采集系统的设计[J].装备制造技术,2012,40(7):307-311.

[8]刘明贵,梁吴.基于STM32的岩石工程无线采集系统[J].仪表技术与传感,2010,47(5):95-97.

[9]辛光,伍川辉.基于STM32的列车噪声数据采集系统[J].四川兵工学报,2012,33(1):90-92.

猜你喜欢
网卡内核以太网
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
部署Linux虚拟机出现的网络故障
微软发布新Edge浏览器预览版下载换装Chrome内核
Server 2016网卡组合模式
谈实时以太网EtherCAT技术在变电站自动化中的应用
挑战Killer网卡Realtek网游专用Dragon网卡
浅谈EPON与工业以太网在贵遵高速公路中的应用