APP下载

基于嵌入式Linux Web服务器的机械设备状态监测系统设计

2019-08-23练俊君饶晓红

自动化仪表 2019年7期
关键词:以太网嵌入式客户端

练俊君,魏 琳,饶晓红

(重庆川仪软件有限公司,重庆 401121)

0 引言

当今工业行业,随着机械设备系统化、精密化程度的不断提高,企业的生产效率和生产规模都发生明显的改善。但是在实际工作中,如果设备出现问题,会导致生产难以正常进行,造成重大经济损失。因此,对设备的监测与维护显得越来越重要[1]。企业通过对重要设备的在线监测,可以提高生产的保障性,使设备维修从传统的事后维修、定期性维修改变为主动维修,从而提高企业备品备件的主动性,具有一定的经济价值。

本文聚焦设备监测系统,通过嵌入式和物联网技术,设计了一种基于Linux Web服务器的监测系统。相对于工控领域常见的客户机/服务器(client/server,C/S)架构,浏览器/服务器模式 (browser/server,B/S)架构更加方便。客户端可以通过内部局域网用浏览器进行监测数据的访问,也可以使用虚拟私有网络(virtual private network,VPN)技术进行远程数据监控。这样大大提高了数据监控的便利性。该系统采用Linux、shttpd、sqlite 等开源软件,具有一定的参考价值。

1 整体方案

由传感器驱动模块获取传感器数据,然后将数据传入数据处理模块进行处理。其中,数据库模块能有效管理整个系统的传感器数据,并且通过Web服务器实现人机交互功能。在人机交互方面:客户端通过http 访问内置的HTML文件和通用相关接口(common gateway interface,CGI)程序,实现单表提交和数据图形化显示。通过JavaScript技术提高网页的交互性,并且通过CGI程序实现网页和后台数据交互。利用JavaScript技术完成客户端的验证,省去了数据传输所需要的大量时间和资源[2]。在传感器数据驱动模块,采用在工业行业常用的RS-232、A/D方式。在操作系统层面,Linux较好地支持了UART、SPI等驱动,即使在Linux的应用层,也有该驱动模块的应用程序编程(application programming interface,API)接口。这样为整个系统实现带来了可行性和便利性。系统整体方案如图1所示。

图1 系统整体方案图

①硬件选取。该方案采用TI AM335x作为主要MCU。该芯片具有ARM Cortex-A8内核,且价格和性能有优势。通过对其外围电路的设计,能满足整个方案的硬件要求。

②软件选取。该方案采用Linux系统。Linux是一种开发成本低、可应用于多种硬件平台、可定制内核、性能优异、良好的网络支持等优势的系统[3]。本方案将Linux移植入ARM Cortex-A8 核心模块,然后在Linux系统上搭建Web服务器。该方案选用shttpd作为Web服务器。其原因是:shttpd是一款小型的、轻量级的Web 服务器,但是该软件功能特别丰富,支持CGI、SSL、MD5等。此外,该软件采用C语言编写,通过编译成库文件,很容易在嵌入式设备移植;同时,通过嵌入式Web服务器和CGI的结合,可以实现客户端与Web服务器之间的动态数据交互[4]。本方案选用sqlite作为数据库。sqlite是一款轻量级、C语言编写的开源软件,容易在嵌入式设备中移植。

2 硬件设计

系统硬件设计主要是基于ARM Cortex-A8核心模块进行外围接口电路的设计。硬件框架如图2所示。

图2 硬件框架图

该硬件框架包括:基于ARM Cortex-A8的核心处理芯片、数据接口模块、电源模块和基本模块。其中,基本模块包括JATG、RTC、FLASH、SDRAM等电路,其与电源模块一起,能使芯片正常工作。数据接口模块主要提供外界与系统的数据交互,包括客户端与系统的数据交互和传感器的数据收集。目前,工业大多使用RS-232/RS-485、CAN总线接口或者以太网接口的传感器。本方案的数据接口采用以太网、RS-232和A/D转换模块。一方面,通过以太网接口实现客户端浏览器对系统软件的访问;另一方面,通过RS-232和A/D转换模块可以分别对数字传感器和模拟传感器进行数据采集。

MCU采用TI AM335X作为该系统的核心处理芯片。该芯片基于ARMCortex-A8内核,其主频最高能达到1 GHz,并且能支持512 MB的NAND FLASH和256/512 MB的DDR3,具有丰富的外围接口。

以太网PHY采用TI公司的DP83848J作为该系统的以太网收发芯片。该芯片支持MII/RMII接口,是单端10/100 MB以太网收发器。方案采用RMII接口,使用MCU提供该芯片的参考时钟50 MHz。以太网PHY的TXD_P、TXD_N、RXD_P、RXD_N差分信号经过网络变压器后,可与RJ45连接。

串口电路采用SP3232EEN作为电平驱动芯片,直接通过该芯片将MCU的TTL电平转换至RS-232电平。

A/D模块采用ADC124S021芯片。该芯片具有4通道,12位的采样芯片,且采样率的范围可达到50~200 KS/s。该芯片可以通过SPI总线与MCU进行数据通信。ADC124S021典型电路如图3所示。在电源脚附近有低差压线性稳压器(LP2950)和旁路电容。

图3 ADC124S021典型电路图

3 软件设计

软件采用模块化思想进行设计。软件框架如图4所示。该软件框架主要包括:传感器驱动、数据处理、数据库、CGI与前端HTML等模块。其中,传感器驱动模块负责传感器的数据收集;数据处理模块负责传感器的数据算法;数据库模块负责数据的管理;CGI与前端HTML模块负责人机交互功能。

图4 软件框架图

①传感器驱动模块。本方案采用RS-232和A/D两种方式。对于RS-232方式,Linux应用层具有相应的API接口,通过“打开串口→设置参数→读/写串口→关闭串口”的流程,实现一次数据的读写。程序中可设置串口通信参数:波特率、数据位、校验位、停止位等,并且在对多个端口进行采集时,采用select函数可以更加有效。

对于A/D模块的驱动编写,本方案主要采用外置A/D芯片的模式,即软件部分为MCU与A/D芯片的通信,该方案为SPI通信。同样可以在Linux应用层通过“打开设备文件→设置模式→传输数据→关闭设备文件”实现。根据Linux源码文档,通过ioctl函数可以进行模式、数据位、传输速率等参数的选择,并且通过struct spi_ioc_transfer结构体进行数据交互。当然,通过基于内核模块的方式对特定的驱动开发同样可行,Linux SPI 子系统提供相应的开发接口,并且至Linux 2.6以后内核添加了udev机制。udev机制根据sysfs 提供的设备信息进行动态管理,解决了静态设备管理中手动添加设备节点的问题。

②数据处理模块。一方面,对于数字信号的仪表,将接收的数据包按照一定协议进行分析,然后写入数据库;另一方面,对于模拟信号的传感器,将A/D转换后的数据进行误差修正处理或者频谱分析等算法处理。

③数据库模块。在数据库的选择中,本方案采用sqlite。在sqlite移植方面,通过宿主机中的Linux环境(如Debian、Ubuntu等),构建交叉编译环境。将源码解压至宿主机,然后配置该源码的configure文件,在表明编译器为arm-linux-gcc及安装路径后,生成Makefile,直接编译和安装(make 和make install) 即可。将生成的文件移植目标机,并且通过命令生成需求表格,这里包括:传感器的数据、传感器类别信息、时间戳等信息。sqlite 具有良好的C/C++ API接口,可以实现与传感器驱动模块的数据对接。

④CGI与前端HTML模块。嵌入式Web服务器监听客户端的服务请求,并根据客户请求的类型来提供相应的服务,返回相应的处理结果[5]。本方案的Web服务器采用shttpd。它是一款适合嵌入式的Web服务器,并支持CGI。在shttpd的移植中,首先将官网下载的源码进行解压,然后在Makefile中修改变量。具体为:在确定建立好交叉编译环境下,进行交叉编译器的变量定义,如:AR,CC。然后进行编译(make unix),将编译成功的可执行文件及其需要的动态库拷贝至目标机文件夹下。最后文件在目标机中运行。由于shttp支持CGI,通过CGI程序实现前端客户端与后台服务器的通信。CGI是一种协议接口,可以用多种编程语言实现,本方案使用嵌入式开发的主流语言——C语言进行开发。

CGI和HTML框架如图5所示。HTML与CGI通信主要有GET和POST两种方法[6],前端网页可以通过GET或者POST方法请求CGI程序,并且使用XMLHttpRequest对象进行页面更新和后台数据的获取。在CGI程序中,主要进行用户参数获取,即解析GET方式传来的数据参数,然后进行传感器数据处理,例如:获取数据处理模块中FFT计算后的结果,最后返回分析后的传感器数据。在HTML文件中,通过单表实现用户的信息交互,然后请求CGI程序,最后将CGI程序中的数据进行图像呈现。在图形化呈现方面,本方案采用echarts JavaScript的图形库实现,减少开发周期。

图5 CGI和HTML框架图

4 实例

为验证方案的可行性,将应力波传感器接入整个系统。应力波为压电传感器,其特定的频响范围对机械早期故障尤为敏感。将其模拟信号接入系统,进行A/D转换,然后在数据处理模块进行快速傅里叶变换(fast Fourier transform,FFT),得到的传感器频谱图如图6所示。

图6 传感器频谱图

5 结束语

本文阐述了一种基于Linux Web服务器的设备监测系统。该系统采用B/S构架,相比与工业领域运行较多的C/S构架,更加方便:在同局域网内可以多人访问;通过VPN可以实现远程访问。

本方案提供一种设计框架,包括传感器模块、数据处理模块,人机交互模块等。其中:传感器模块采用常用的RS-232和A/D两种方式;数据处理模块采用sqlite作为数据库进行数据管理;人机交互模块采用Web服务器,由shttpd 作为Web服务器,并且使用CGI程序进行前端和后台的数据通信。值得一提的是,该方案中采用的Linux、shttpd和sqlite 都是开源软件,对同类系统设计具有一定的借鉴价值。

猜你喜欢

以太网嵌入式客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
TS系列红外传感器在嵌入式控制系统中的应用
嵌入式PLC的设计与研究
嵌入式单片机在电机控制系统中的应用探讨
三大因素驱动创新提速以太网快步迈入“灵活”时代
谈实时以太网EtherCAT技术在变电站自动化中的应用