时间:2024-05-23
于潇+巨同升+崔孝凤+宋吉和
摘要:设计了基于ARM-Linux的大型试验设备远程监测系统,实现了对大型试验设备状态信息的采集与监测。系统采用B/S结构,通过开发Linux设备驱动程序、移植BOA服务器、编写CGI程序等,将远程嵌入式终端采集到的试验设备信息保存在远程数据库中,用户可以简单地通过浏览器访问数据库中的信息。结果表明,该远程监测系统性能稳定可靠,具有很好的实时性,能够满足对大型试验设备(特别是位置偏僻或所处环境恶劣的设备)的监测要求。
关键词:远程监控;ARM;Linux;设备驱动程序;BOA服务器;CGI
中图分类号:TP273+.5 文献标识码:A 文章编号:0439-8114(2014)15-3639-04
Designing Large-scale Test Equipment Monitoring System based on ARM-Linux
YU Xiao1,2,JU TONG-sheng1,CUI Xiao-feng1,SONG Ji-he1
(1. School of Computer Science and Technology, Shandong University of Technology, Zibo 255049,Shandong China;2.School of Computer Science, Beijing Institute of Technology, Beijing 100081,China.)
Abstract: An embedded remote information collection and monitoring system based on ARM-Linux was developed. It which could collect the informations and monitor the conditions from the large-scale test equipments. By developing device drivers, transplanting BOA server and programming CGI, the system took the B/S mode. Informations of equipments collected by remote embedded terminal were stored in a remote database. The users could simply access the informations in database via browser. Results showed that the system was stable and reliable and could meet testing demands of large-scale test equipments (especially in remote locations or in bad environments).
Key words: remote monitoring; ARM;Linux; device drivers; BOA; CGI
收稿日期:2014-01-10
基金项目:国家自然科学基金项目(61370224);国家高技术研究发展计划(“863”计划)项目(2013AA01A212)
作者简介:于 潇(1982-),男,山东淄博人,讲师,在读博士研究生,研究方向为网络存储、嵌入式系统,(电话)13969377480(电子信箱)
yuxiao8907118@163.com。
高校的分析测试实验室拥有众多先进、精密的大型仪器设备,是高校实验室的重要组成部分。有别于基础教学实验室分析测试实验室主要面向科研,为科学研究提供可靠的测试数据和试验数据。长期以来,实验室的大型仪器大部分使用率都比较低,为提高投资效益,最大限度地利用现有实验室资源,更好地为科研教学服务,实验室加大了开放的力度。试验设备利用率提高以后,管理人员的工作大大增加。为此,迫切需要获得每台试验设备的详细使用数据,以用于设备的日常保养和检修。
随着网络技术和嵌入式技术的发展,基于TCP/IP协议和B/S(Browser/Server)架构的分布式监控技术已日趋成熟。借助以太网和Internet技术,把嵌入式监控设备[1,2]连接到Internet上,用户只需要使用普通的Web浏览器就可以对设备进行监视和控制,操作界面简洁,数据传输量也可以降到最低。实现远程监控后,技术人员无须亲临现场,就可以监视并控制生产系统和现场设备的运行状态和参数。特别是当现场地理位置比较偏僻或环境比较恶劣时,这一点的优势尤为突出。本研究设计了基于ARM-Linux的嵌入式远程监测系统,实现了观测站现场大型试验设备信息的采集与监测。
1 远程监测系统总体设计
远程监测系统采用B/S结构,分为前方监测终端和后方监视终端两部分。系统主要设计集中在前方监测终端,后方监视终端只需一台安装Web浏览器的PC即可。远程监控系统结构如图1所示。
前方监测终端由数据采集模块和数据处理模块构成。每个需要监测的大型试验设备需安装一个监测终端,每个终端分配一个独立的IP地址,所有的监测终端连接到路由器上。数据采集模块由传感器和嵌入式终端设备组成,主要负责采集试验设备工作时的光电信息,并转换为有效的模拟信号输入。数据处理模块与数据采集模块共用一个嵌入式终端设备,另外搭载了数据库服务器及应用程序。嵌入式终端设备本身是一个完整的嵌入式设备,包括CPU、存储器、GPIO(General Purpose Input /Output Ports)、网络接口等[1]。试验设备工作的信息和应用程序都放在数据处理模块上。后方监视终端(一般为PC或智能设备)需要安装Web浏览器,输入前方监测终端相应的IP地址便可直接访问它。在客户端,由HTML负责表示逻辑,根据特定终端的URL(统一资源定位符)提出的服务请求,前方监测终端上安装的网络服务器会把数据文件返回给客户端。endprint
2 前方监测终端的硬件设计
前方监测终端由数据采集模块和数据处理模块组成。由于试验设备价格昂贵,为避免破坏设备,数据采集模块使用电流互感器和光敏电阻两种传感器。传感器可根据试验设备的特征及检测终端的安装方便程度进行选择。数据处理模块采用Samsung公司基于ARM9核心的S3C2440处理器。前方监测终端的硬件结构如图2所示。
其中,SDRAM主要功能是存放运行代码、系统和用户数据、堆栈等;FLASH主要功能是存储嵌入式Linux镜像、根文件系统和应用程序等;GPIO主要功能是提供电流互感器和光敏电阻的模拟输入接口;RS232是系统的调试接口;USB接口用于外部扩展,例如连接外部存储器;以太网控制器中的接口芯片采用DM9000,它可自适应10 M/100 M网络。
3 前方监测终端的软件设计
系统采用B/S模式设计,主要软件设计集中在前方监测终端,前方监测终端的软件结构如图3所示。
当前方监测终端加电运行时,首先启动系统引导程序Bootloader,在Bootloader的引导下启动嵌入式Linux,Linux的内核版本为2.6.29[3]。然后Linux内核启动,依次加载各设备的驱动程序,最后运行监测应用程序[4]。其中Web服务器使用BOA服务器,其优点是不仅能够支持静态Web页面,还可以配合CGI支持动态页面,实现与用户的动态交互。图形界面采用QT,它具有优良的跨平台特性,同时还提供了丰富的API函数,使用非常方便。
3.1 A/D驱动开发
嵌入式Linux设备文件主要分为字符设备、块设备、网络设备和混合设备四种类型。其中,混合设备是在嵌入式系统中用得比较多的一种设备,特指不能严格划分的设备类型。系统中,A/D设备的主要用途是将电流互感器和光敏电阻采集到的模拟信号转换为数字信号,并输入嵌入式设备的GPIO接口,系统在实现时,将A/D设备作为一种混合设备来处理。
A/D设备驱动程序主要功能是提供设备的注册与注销,设备的打开与关闭,设备的读、写操作以及设备的控制操作,设备的中断服务响应等[5]。Linux内核通过file_operation数据结构提供文件系统的入口点函数,该函数是定义在
struct file_operations {
struct module* owner;
int(*open) (struct inode*,struct file*);
//打开I/O设备并初始化
int (*release)(struct inode*,struct file*);
//关闭I/O设备
ssize_t(*read)(struct file*,char_user*,size_t, loff_t *);
//读I/O设备
ssize_t(*write)(struct file*,const char__user *, size_t,loff_t*);
//写I/O设备
int(*ioctl)(struct inode*,struct file*,unsigned int, unsigned long);
//控制I/O设备
……
};
A/D设备驱动在初始化时通过misc_register()函数注册混合设备;在释放模块时通过misc_deregister()注销设备驱动。系统调用部分实际上是对设备的操作,如open、read、write、ioctl等操作。
系统采用动态加载设备驱动程序的方法。在编译2.6版本的驱动程序时需要把驱动程序的源代码加入内核代码树,并做相应的配置,然后在Linux源代码根目录位置执行make modules,就可以生成所需要的内核模块文件,通过nfs将编译出的内核模块文件下载至下位机,然后使用#insmod命令装载驱动程序。
3.2 BOA服务器的设计
由于嵌入式设备资源都非常有限,一般不会使用Linux下最普遍的服务器,如Apache等,而需要使用一些专门为嵌入式设备设计的Web服务器,比较典型的嵌入式Web服务器有HTTPD、BOA和THTTPD等。由于BOA支持认证、CGI等功能,同时占用系统资源较少,它最终被选择作为系统的Web服务器。
BOA服务器的基础是TCP/IP协议栈,需要实现HTTP、TCP和UDP等协议。监测系统设置了独立的IP地址,通过网络就可以将设备接入Internet。嵌入式BOA服务器的结构如图4所示。
在使用BOA服务器之前,首先需要对BOA服务器的源代码进行交叉编译和配置。编译可在Linux下用make命令完成,配置文件位于根目录下,名称为“BOA.conf”,“BOA.conf”配置如下:
Port 80 //监听端口号,默认为80
User 0
Group 0
ServerName yx //服务器名称
DocumentRoot /sdcard/www/pages/
//网页文件所在目录
UserDir public_html
DirectoryIndex index.html
//BOA服务器的默//认首页
KeepAliveMax 100//一个连接所允许的HTTP持续作用请求最大数目
KeepAliveTimeout 10//HTTP持续作用中服务器在两次请求之间等待的时间
MimeTypes/sdcard/www/web-conf/mime.types
//mimetype配置文件路径
ScriptAlias
/cgi-bin//sdcard/www/cgi-bin/
//CGI程序路径
3.3 CGI程序的设计
CGI(Common Gateway Interface)指公共网关接口,是Web服务器和网关应用程序之间信息传递的一个公共标准,是外部应用扩展应用程序与WWW服务器交互的一个标准接口[6]。CGI工作原理如图5所示。
当用户使用客户端与服务器进行动态交互时,Web浏览器先将用户数据传送给BOA服务器,BOA服务器把接收到的有关信息存入环境变量,然后启动指定的CGI进程;CGI进程从环境变量中获得相关信息后按指令执行,操作完成后通过BOA服务器以HTML格式将结果返回给Web浏览器。因为用户能通过浏览器传递不同的参数给CGI程序,所以CGI使得浏览器和服务器之间具有了可交互性。
3.4 主监测程序的设计
试验设备往往价格高昂,为保证测量精度并不破坏试验设备,传感器板支持两种类型的传感器:电流互感器和光敏电阻。GPIO上提供4个模拟量输入通道,监测程序将顺序扫描各个通道,检查是否存在有效的信号输入。主监测程序执行流程如图6所示。
3.5 试验结果
远程监测系统需要为每个监测终端(监测服务器)分配独立的IP地址。当在远程客户端浏览器中输入监测终端的IP时,BOA将返回监测系统的首页。监测系统主要提供仪器状态采集等功能。当监测系统处于运行状态时,若仪器启动,经监测程序确认后,检测系统将实时采集试验设备的状态信息,并定期在检测系统的数据库中做记录。记录括开关机时间、运行时间、运行状态等。
4 小结
基于S3C2440平台和Linux操作系统,设计实现了一个嵌入式远程信息采集与监测系统。通过因特网实现了对一组大型试验仪器使用信息的远程监测。试验结果表明,远程监测系统能采集并记录试验仪器的使用信息,为仪器的维护提供第一手资料,在一定程度上实现了实验室的信息化。该远程测控系统具有一定的通用性,根据需求在功能上作进一步完善后可应用于一系列领域,如机房监控、智能小区监控等。
参考文献:
[1] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.
[2] 周立功.ARM嵌入式系统软件开发实例[M].北京:北京航空航天大学出版社,2005.
[3] 赵 炯.Linuxn内核完全剖析[M].北京:机械工业出版社,2006.
[4] 刘 淼.嵌入式系统接口设计与Linux驱动程序开发[M].北京:北京航空航天大学出版社,2006.
[5] 刘 岚,尹 勇,李京蔚.基于ARM的嵌入式开发[M].北京:电子工业出版社,2008.
[6] 杨大千,梅大成,张 岩.基于ARM9和Linux的嵌入式动态Web技术设计与实现[J].工业控制计算机,2006(8):45-46.endprint
KeepAliveTimeout 10//HTTP持续作用中服务器在两次请求之间等待的时间
MimeTypes/sdcard/www/web-conf/mime.types
//mimetype配置文件路径
ScriptAlias
/cgi-bin//sdcard/www/cgi-bin/
//CGI程序路径
3.3 CGI程序的设计
CGI(Common Gateway Interface)指公共网关接口,是Web服务器和网关应用程序之间信息传递的一个公共标准,是外部应用扩展应用程序与WWW服务器交互的一个标准接口[6]。CGI工作原理如图5所示。
当用户使用客户端与服务器进行动态交互时,Web浏览器先将用户数据传送给BOA服务器,BOA服务器把接收到的有关信息存入环境变量,然后启动指定的CGI进程;CGI进程从环境变量中获得相关信息后按指令执行,操作完成后通过BOA服务器以HTML格式将结果返回给Web浏览器。因为用户能通过浏览器传递不同的参数给CGI程序,所以CGI使得浏览器和服务器之间具有了可交互性。
3.4 主监测程序的设计
试验设备往往价格高昂,为保证测量精度并不破坏试验设备,传感器板支持两种类型的传感器:电流互感器和光敏电阻。GPIO上提供4个模拟量输入通道,监测程序将顺序扫描各个通道,检查是否存在有效的信号输入。主监测程序执行流程如图6所示。
3.5 试验结果
远程监测系统需要为每个监测终端(监测服务器)分配独立的IP地址。当在远程客户端浏览器中输入监测终端的IP时,BOA将返回监测系统的首页。监测系统主要提供仪器状态采集等功能。当监测系统处于运行状态时,若仪器启动,经监测程序确认后,检测系统将实时采集试验设备的状态信息,并定期在检测系统的数据库中做记录。记录括开关机时间、运行时间、运行状态等。
4 小结
基于S3C2440平台和Linux操作系统,设计实现了一个嵌入式远程信息采集与监测系统。通过因特网实现了对一组大型试验仪器使用信息的远程监测。试验结果表明,远程监测系统能采集并记录试验仪器的使用信息,为仪器的维护提供第一手资料,在一定程度上实现了实验室的信息化。该远程测控系统具有一定的通用性,根据需求在功能上作进一步完善后可应用于一系列领域,如机房监控、智能小区监控等。
参考文献:
[1] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.
[2] 周立功.ARM嵌入式系统软件开发实例[M].北京:北京航空航天大学出版社,2005.
[3] 赵 炯.Linuxn内核完全剖析[M].北京:机械工业出版社,2006.
[4] 刘 淼.嵌入式系统接口设计与Linux驱动程序开发[M].北京:北京航空航天大学出版社,2006.
[5] 刘 岚,尹 勇,李京蔚.基于ARM的嵌入式开发[M].北京:电子工业出版社,2008.
[6] 杨大千,梅大成,张 岩.基于ARM9和Linux的嵌入式动态Web技术设计与实现[J].工业控制计算机,2006(8):45-46.endprint
KeepAliveTimeout 10//HTTP持续作用中服务器在两次请求之间等待的时间
MimeTypes/sdcard/www/web-conf/mime.types
//mimetype配置文件路径
ScriptAlias
/cgi-bin//sdcard/www/cgi-bin/
//CGI程序路径
3.3 CGI程序的设计
CGI(Common Gateway Interface)指公共网关接口,是Web服务器和网关应用程序之间信息传递的一个公共标准,是外部应用扩展应用程序与WWW服务器交互的一个标准接口[6]。CGI工作原理如图5所示。
当用户使用客户端与服务器进行动态交互时,Web浏览器先将用户数据传送给BOA服务器,BOA服务器把接收到的有关信息存入环境变量,然后启动指定的CGI进程;CGI进程从环境变量中获得相关信息后按指令执行,操作完成后通过BOA服务器以HTML格式将结果返回给Web浏览器。因为用户能通过浏览器传递不同的参数给CGI程序,所以CGI使得浏览器和服务器之间具有了可交互性。
3.4 主监测程序的设计
试验设备往往价格高昂,为保证测量精度并不破坏试验设备,传感器板支持两种类型的传感器:电流互感器和光敏电阻。GPIO上提供4个模拟量输入通道,监测程序将顺序扫描各个通道,检查是否存在有效的信号输入。主监测程序执行流程如图6所示。
3.5 试验结果
远程监测系统需要为每个监测终端(监测服务器)分配独立的IP地址。当在远程客户端浏览器中输入监测终端的IP时,BOA将返回监测系统的首页。监测系统主要提供仪器状态采集等功能。当监测系统处于运行状态时,若仪器启动,经监测程序确认后,检测系统将实时采集试验设备的状态信息,并定期在检测系统的数据库中做记录。记录括开关机时间、运行时间、运行状态等。
4 小结
基于S3C2440平台和Linux操作系统,设计实现了一个嵌入式远程信息采集与监测系统。通过因特网实现了对一组大型试验仪器使用信息的远程监测。试验结果表明,远程监测系统能采集并记录试验仪器的使用信息,为仪器的维护提供第一手资料,在一定程度上实现了实验室的信息化。该远程测控系统具有一定的通用性,根据需求在功能上作进一步完善后可应用于一系列领域,如机房监控、智能小区监控等。
参考文献:
[1] 周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.
[2] 周立功.ARM嵌入式系统软件开发实例[M].北京:北京航空航天大学出版社,2005.
[3] 赵 炯.Linuxn内核完全剖析[M].北京:机械工业出版社,2006.
[4] 刘 淼.嵌入式系统接口设计与Linux驱动程序开发[M].北京:北京航空航天大学出版社,2006.
[5] 刘 岚,尹 勇,李京蔚.基于ARM的嵌入式开发[M].北京:电子工业出版社,2008.
[6] 杨大千,梅大成,张 岩.基于ARM9和Linux的嵌入式动态Web技术设计与实现[J].工业控制计算机,2006(8):45-46.endprint
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!