第一篇:基于A8的嵌入式Linux远程视频监控系统的设计与实现
基于A8的嵌入式Linux远程视频监控系统的设计与实现
摘 要:将网络技术和嵌入式技术相结合的远程视频监控系统是视频采集技术的发展趋势,文中提出了一种基于对等网络模型的嵌入式远程视频监控系统的设计方案。该方案将嵌入式系统和Web开发技术相结合,再利用USB摄像头作为视频监控系统的终端进行图像采集,并使用网络TCP协议将其远程发送给服务器终端。相较于传统的Client/Server网络模型,本系统实现采用对等网络模型,即确定发送命令的控制程序既可以是客户端,又可以是服务端。文中选择嵌入式开发平台ARM系列A8处理器进行研究和设计,并采用PC机下的Linux系统作为主机开发环境。
关键词:嵌入式;视频监控;网络远程控制;对等网络
中图分类号:TP39 文献标识码:A 文章编号:2095-1302(2016)05-00-03
0 引 言
网络远程控制(Network Remote Control,NRC)是利用计算机网络对远程计算机进行操作的一种控制方式。计算机技术和网络技术目前都在高速发展,现在监控系统已经发展到网络视频监控系统[1]。网络视频监控具有数字视频监控和网络传输技术的优点,其具有不受地理位置约束、扩展方便简单、信息处理较容易等特点,可以使远程的管理和维护变成现实,只要是网络覆盖的地方,就能实现网络监控[2]。嵌入式系统向网络发展已成必然趋势,目前嵌入式系统对网络协议如TCP/IP协议和HTTP协议的支持也越来越广泛。系统硬件设备选择与配置
系统硬件设备选择凌阳嵌入式A8教学实验系统进行设计与实现。该实验箱基于ARM CortexTM-A8内核的处理器S5PV210,该芯片又名“蜂鸟”(Hummingbird),是三星公司推出的一款适用于智能手机和平板电脑等多媒体设备的应用处理器[3]。本系统使用了人机交互模块的USB接口、多媒体模块摄像头接口及通信模块以太网接口。
1.1 USB摄像头
摄像头属于视频类设备。在目前的Linux核心中,视频部分的标准是Video for Linux(简称V4L)。这个标准其实定义了一套接口,内核、驱动、应用程序以这个接口为标准进行交流。目前的V4L涵盖了视、音频流捕捉及处理等内容,USB摄像头也属于它支持的范畴。
本系统所采用的嵌入式Linux操作系统如果需要使用USB摄像头则必须在内核配置时添加Video4Linux驱动和对USB摄像头驱动模块的支持。本系统的设计与实现采用静态加载以上驱动。首先进入Linux源代码所在的目录,在终端输入make menuconfig命令,在基于Ncurses内核配置图形界面进行内核选项的配置。选中多媒体设备选项“Multimedia device->”,进入多媒体设备配置界面,选中“Video For Linux”,加载Video4Linux模块,就可以使内核实现对Video4Linux驱动的支持,为视频采集设备提供编程接口。在内核配置主界面,选中USB支持选项“USB support―>”,选中“USB Multimedia device”选项下的“USB OV511 Camera support”,使内核中加入OV511接口芯片的USB数字摄像头的驱动支持。OV511 USB 摄像头驱动配置界面如图1所示。
图1 OV511 USB 摄像头驱动配置界面
1.2 开启帧缓冲设备
帧缓冲(Frame Buffer,FB)是Linux为显示设备提供的一个接口,是把显存抽象后的一种设备,它允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。由于FB设备驱动为受限驱动,因此必须进行设备开启。本系统开发环境采用发行版Linux操作系统Ubuntu10.10,Ubuntu下启用FB设备的一般步骤如下所示:
安装v86d和hwinfo两个包查看显卡是否支持,并设置本机支持模式。
修改启动文件/etc/default/grub,如图2所示。
图2 修改启动文件图
修改modules文件/etc/initramfs-tools/modules,如图3所示。
图3 修改modules文件
更新以上两个文件并重启系统,即可查看到FB设备,具体如图4所示。
图4 查看FB设备系统软件设计
本系统软件由摄像头驱动模块、图像采集模块、网络传输模块和网络服务器模块组成[4]。摄像头驱动模块使得摄像头为应用程序编写提供系统编程接口。功能主要包括摄像头设备信息的获取与设置、设备的打开和关闭、信号通道选择、窗口初始化等。图像采集模块的作用是使用编程接口获取摄像头采集来的图像信息并进行暂时存储。服务器通过网络传输模块与远程监控PC机端进行信息交流。
2.1 V4L图像信息采集流程
V4L图像信息采集流程分为如下几步:
(1)打开摄像头设备
int vd->fd = open(“/dev/video0”,O_RDWR);
(2)读video_capability 中的信息,成功后可读取vd->capability各分量ioctl(vd->fd,VIDIOCGCAP,&(vd->capability));
(3)读video_picture中的信息,成功后可读取图像的属性ioctl(vd->fd,VIDIOCGPICT,&(vd->picture));
(4)初始化channel
int i;
for(i = 0; i capability.channels; i++){
vd->channel[i].channel = i;
第二篇:嵌入式远程视频采集系统的设计与实现(基于S3C2410)
嵌入式远程视频采集系统的设计与实现(基于S3C2410)
发 布 时 间 : 2008-11-19 来 源 : 中电网 作 者 : 张永强,赵永勇,李崇德 浏 览 :
984
多媒体通信技术的发展为信息的获取和传输提供了丰富的手段,视频采集是其中不可缺少的重要组成部分,该系统基于S3C2410的ARM9芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPEG-4算法压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。硬件系统
系统硬件平台选用基于ARM9架构嵌入式芯片S3C2410,稳定工作在202MHz主频,板载64MB SDRAM 64MB FLASH,主板资源包括:主USB口、从USB口、10M/100M以太网口,触摸屏、彩色LCD、键盘、8个用户自定义LED数码管,A/D,RTC电路,2个串口、1个JTAG通用接口,音频模块,支持MPEG4,MP3编解码,3个168PIN的扩展插座,32位的数据总线,保留充分扩展空间。
其中标配模块包括:IC卡+PS2模块、IDE硬盘+CF卡模块、PCMCIA+SD/MMC模块。另外可选配模块有:GPS模块,GPRS模块,FPGA模块,CAN+AD+DA模块、红外模块、蓝牙模块、摄像头模块。软件系统
2.1 内核配置与USB摄像头驱动
假定已经搭建好嵌入式Linux的开发环境,下面第一步工作就是USB摄像头的安装与驱动。首先检查Linux Kernel中是否已经添加了USB模块的支持,并且加入Video4Linux支持。
Multimedia devices→Video For Linux
Video For Linux→[*]V4L information in proc filesystem
在主菜单的USB Support下还有各种摄像头的驱动,选中将要使用的摄像头芯片类型。
<>USB IBM(Xirlink)C-it Camera support<*>USB OV511 Camera support<>USB Philips Cameras <>USB SE401 Camera support<>USB STV680(Pencam)Camera support<>USB 3com HomeConnect(akavicam)support 在USB摄像头选购时,优先考虑Linux内核公开支持的摄像头芯片,不然要额外编写相应的USB摄像头驱动程序,然后进行编译、安装。在此选用网眼公司的V3000产品,他采用了OV511的芯片。
确定USB摄像头被正常驱动后,下一步就是使用Video4Linux提供的API函数集来编写视频采集程序。
2.2 基于V4L设计的视频采集模块
在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用是内核和应用程序之间的接口,而设备驱动程序则是内核和外设之间的接口。他完成设备的初始化和释放、对设备文件的各种操作和中断处理等功能,为应用程序屏蔽了外设硬件的细节,使得应用程序可以像普通文件一样对外设进行操作。
Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操作各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设备的访问。
Linux下与Video4Linux相关设备及用途如表1所示。
这里主要针对设备文件/dev/video进行视频捕捉方面的程序设计。
Linux下视频采集流程如图2所示。
其中用到的主要函数有:
Camera_open():用来开启视频设备文件,使用前需要首先声明一个video_device类型的设备文件。
Camera_get_capability():通过调用ioctl()函数取得设备文件的相关信息,并存放到video_capability结构里。
Camera_get_picture():通过调用ioctl()函数取得图像的相关信息,并且存放到video_picture结构里。
Camera_close():用来关闭设备文件。Camera_grab_image():用来抓取图像,采用mmap方式,直接将设备文件/dev/video0映射到内存,加速文件I/O操作,还可以使多个线程共享数据。
剩下的还有设备初始化、参数设备等相关函数,不再详述。
2.3 视频压缩编码模块
获取图像数据后,可以直接输出到FrameBuffer进行显示,由于本系统要将采集到的视频影响通过网络传输出去,所以在传输之前要对原始的图像数据进行压缩编码,在此选用MPEG-4视频编解码方案。和其他标准相比,MPEG-4压缩比更高,节省存储空间,图像质量更好,特别适合在低带宽条件下传输视频,并能保持图像的质量。
MPEG-4中基于对象的视频编码过程可以分为3步进行:
(1)从原始视频流中分割视频对象。
(2)对视频对象进行编码,对不同视频对象的运动信息、形状信息、纹理信息分配不同的码字。对输入的任意形状的VOP序列,用基于块的混合编码技术编码,处理顺序是先IVOP后PVOP,BVOP。在对VOP的形状信息编码后,取得任意形状VOP的采样,每个VOP划分为不相交的宏块,每个宏块含有4个8×8象素块进行运动补偿以及纹理编码,已编码的VOP帧保存在帧存中,在当前VOP帧和已编码VOP帧之间的计算运动矢量;对将编码的块和宏块,计算他们的运动补偿预测误差;运动补偿预测后的IVOP及误差用8×8块DCT变换,并进行DCT系数的量化,然后是游程编码和熵编码。
(3)对各个视频对象的码流进行复合,每个视频对象的形状、运动纹理信息复合成VOL比特流,各视频对象视频流复合成统一的码流输出。对视频流进行压缩编码以后,接下来就要实现网络传输部分的功能。
2.4 JRTPLIB网络传输模块
流媒体指的是在网络中使用流技术传输的连续时基媒体,RTP是目前解决流媒体实时传输问题的好办法,JRTPLIB是一个面向对象的RTP库,他完全遵循RFC1889设计,下面讲述如何在Linux平台上运用RTP协议进行实时流媒体编程。
2.4.1 初始化 在使用JRTPLIB进行实时流媒体数据传输之前,首先应该生成RTPSession类的一个实例来表示此次RTP会话,然后调用Create()方法来对其进行初始化操作。RTPSession类的Create()方法只有一个参数,用来指明此次RTP会话所采用的端口号。
2.4.2 数据发送
当RTP会话成功建立起来之后,接下来就可以开始进行流媒体数据的实时传输了。首先需要设置好数据发送的目标地址,RTP协议允许同一会话存在多个目标地址,这可以通过调用RTPSession类的AddDestination()、DeleteDestination()和ClearDestinations()方法来完成。目标地址全部指定之后,接着就可以调用RTPSession类的SendPacket()方法,向所有的目标地址发送流媒体数据。
2.4.3 数据接收
对于流媒体数据的接收端,首先需要调用PollData()方法来接收发送过来的RTP或者RTCP数据报。由于同一个RTP会话中允许有多个参与者(源),因此既可以通过调用GotoFirstSource()和GotoNextSource()方法来遍历所有的源,也可以通过调用GotoFisstSourceWithDat()和GotoNextSourceWithData()方法来遍历那些携带有数据的源。在从RTP会话中检测出有效的数据源之后,接下去就可以调用RTPSession类的GetNextPacket()方法从中抽取RTP数据报,当接收到的RTP数据报处理完之后,要及时释放。
JRTPLIB为RTP数据报定义了3种接收模块,通过调用RTPSession类的SetReceiveMode()方法可以设置下列这些接收模式:
RECEIVEMODE_ALL:缺省的接收模式,所有到达的RTP数据报都将被接受;RECEIVEMODE_IGNORESOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被接受,而被拒绝的发送者列表可以通过调用AddToIgnoreList(),DeleteFromIgnoreList()和ClearIgnoreList()方法来进行设置;RECEIVEMODE_ACCEPTSOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被拒绝,而被接受的发送者列表可以通过调用AddToAcceptList(),DeleteFromAcceptList和ClearAcceptList()方法来进行设置。
2.4.4 控制信息 JRTPLIB是一个高度封装后的RTP库,只要PollData()或者SendPacket()方法被成功调用,JRTPLIB就能够自动对达到的RTCP数据报进行处理,并且还会需在要的时候发送RTCP数据报,从而能够确保整个RTP会话过程的正确性。
在本系统中,使用RTPSession JRTPLIB类库提供的方法来实现底层的RTP/RTCP操作,并且把他封装在CrtpTransmitter类中,该类从Media Sink类继承而来,接收到相应的媒体帧数据,使用RTPSession类库的操作把数据发送到网络上。结语
本系统基于S3C2410平台和Linux操作系统,利用Video4Linux设计采集程序,使用MPEG-4压缩编码算法,通过实时流媒体传输技术实现了网络传输,整个系统具有稳定可靠、安装简便、成本低廉等特点,可扩展应用在工业控制、视频会议系统、可视电话、远程监控系统等诸多领域。
第三篇:基于ARM嵌入式的远程监控系统设计
基于ARM嵌入式的远程监控系统设计
摘要:基于ARM 内核的嵌入式系统在远程监控报警系统中的设计实现与应用。核心部分主要包 括 ARM 嵌入式平台设计及 μC-OS 嵌入式实时操作系统移植;人机交互界面 μCGUI 的设计与实现;远程通讯及自动报警等;系统的设计还考虑到了扩展性和通用性以及与其他监控设备无缝连接等问题。
关键词: ARM;μC/OS-II;μCGUI;远程监控 引言
监控系统现已成为现代化生产、生活中不可缺少的重要组成部分。目前,监控系列产品 种类繁多,大部分广泛应用于交通、医院、银行、家居、学校等安防领域。
随着嵌入式系统的出现,尤其是基于 ARM 内核芯片的嵌入式系统的出现,使得监控系统的应用领域更为广泛。本文设计的远程监控报警系统除了作为安防功能外,还可以应用于以下领域:通讯领域:远程通讯、视频会议和视频点播、证券、远程教育等。医疗领域:病房监护、远程诊断等。工业领域:远程设备诊断、维护、维修,远程生产监控等。家用领域:家用电器远程维护;电、气、火等重大事故自动报警等。
系统设计
2.1系统组成
本文设计的远程监控系统主要由中心控制器、数据终端、传感器模块、通讯模块、接口模块等几部分组成。系统组成图(如图 1)。
2.2中心控制器 系统核心负责数据采集判断处理。为了提高系统工作效率,这里使用的是三星公司的 S3C2410芯片作为处理器。S3C2410 芯片是一款高性价比的 ARM 芯片,非常适合作手机、PDA 等手持设备。主要特性包括: ARM920T 内核,最高工作频率 203MHz,LCD 控制器:可直接驱动真彩液晶屏,最高支持 2048×1024 真彩液晶屏,2 个 USB Host端口,1 个USB Device端口,支持 Nand flash 启动模式,SD 卡接口,UART、IIC、SPI、IIS 等多种类 型串行接口,4 通道DMA。
本文的监控系统的 CPU 核心部分使用的是标准的 SO-DIMM200 金手指接口,便于后期维护和升级。如果该监控系统的使用环境较为苛刻,可以将 CPU替换为S3C2440芯片。S3C2440完全兼容S3C2410全部特性(注意:芯片引脚不完全兼容)。与S3C2410芯片相比,S3C2440的性能更为优越:最高工作频率可达500MHz,内部集成CMOS摄像头接口,但价格较昂贵。
图1 监控系统组成框图
2.3数据终端 数据终端的主要功能是对监控数据进行分析、处理,及时将数据汇报给监控人员。同时,监控人员可以根据现场情况,使用数据终端对监控的设备进行远程控制。数据终端最大优势 就是安全、可靠、便于携带。一般情况下为了节约成本,可以将手机、PDA 等移动通讯设备作为数据终端使用。但是如果作为对高危环境或精密仪器的监控系统,数据终端需要专业定制。这里使用的是中心控制器的作为数据终端,即中心控制器既作为数据采集发送中心,也可数据接收处理中心使用。
2.4通讯模块
通讯模块主要负责远程数据通讯。带有 RS232/485、GPRS、CDMA 等一种或多种通讯 方式。需要根据现场环境和用户需要进行定制。通讯模块与控制器通过接口总线连接,连接 方式为 TTL/RS232/RS485 等。
2.5传感器模块
传感器模块的主要功能是感知外部环境,对外部环境进行实时监测。由人体红外传感器、振动传感器、超声波传感器、可燃气体传感器、温度传感器、湿度传感器等一种或多种传感 器组成。可根据现场监测环境不同进行定制。
2.6接口模块
接口模块主要作为系统扩展功能使用,将控制器的 A/D 转换、I2C、SPI 等多种接口进行 外部扩展。接口模块没有特定的功能,但可以根据需要与其他设备连接,例如可以与工业仪 器仪表或设备连接,实时对仪器或设备进行监控。
接口模块虽然不是监控系统的主要部分,但是对于整个系统来说却是不可缺少。因为本文的监控系统主要考虑到了系统的可扩展性和与其它系统无缝连接。通过接口模块可以很方 便的对监控系统进行升级,并且可以实现与其他系统或设备的无缝连接。这也是本系统区优 于其他监控系统的主要功能。软件设计
3.1工作软件
系统的软件设计较为复杂,这里只给出了整个工作软件流程(如图 2)。
图2 软件流程图
3.2操作系统移植
S3C2410 芯片支持多种嵌入式操作系统,如 WINCE、uCLinux 等。但考虑到监控系统 的实时性要求,这里使用的是 μC/OS-II 嵌入式实时操作系统。μC/OS-II 是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用 ANSI C 写的。整个嵌入式系统分为两大层:硬件层和软件层。这里主要研究软件层的架构。软件层主要分为四个部分:实时操作系统内核,与处理器相关部分,与应用程序相关部分,用户的应用程序。移植 μC/OS-II 系统需要修改的文件有:应用程序相关文件: OS_CFG.H INCLUDE.H; 处理器相关文件: OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。
3.2.1 与处理器相关的代码
这是移植中最关键的部分。内核将应用系统和底层硬件有机的结合成一个实时系统,要 使同一个内核能适用于不同的硬件体系,就需要在内核和硬件之间有一个中间层,这就是与 处理器相关的代码。处理器不同。这部分代码也不同。我们在移植时需要自己移植这部分代 码。
a)OS_CPU.H
包括了用#define 定义的与处理器相关的常量,宏和类型定义,有系统数据类型定义,栈 增长方向定义,关中断和开中断定义,系统软中断的定义等等。
b)OS_CPU_A.ASM
这部分需要对处理器的寄存器进行操作,所以必须用汇编语言来编写。包括四个子函数: OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。OSStartHighRdy()在多任务系统启动函数 OSStart()中调用。完成的功能是:设置系统运行标志位 OSRunning = TRUE;将就绪表中最高优先级任务的栈指针 Load 到 SP 中,并强制中断返回。这样就绪的最高优先级任务就如同从中断里返回到运行态一样,使得整个系统得以运转。OSCtxSw()在任务级任 务切换函数中调用的。任务级切换是通过 SWI 或者 TRAP 人为制造的中断来实现的。ISR 的向 量地址必须指向 OSCtxSw()。这一中断完成的功能:保存任务的环境变量(主要是寄存器的值, 通过入栈来实现),将当前 SP 存入任务 TCB 中,载入就绪最高优先级任务的 SP,恢复就绪最高优先级任务的环境变量,中断返回。这样就完成了任务级的切换。OSIntCtxSw()在退出中断 服务函数 OSIntExit()中调用,实现中断级任务切换.由于是在中断里调用,所以处理器的寄存器入栈工作已经做完,就不用作这部分工作了。具体完成的任务;调整栈指针(因为调用函数会使任务栈结构与系统任务切换时堆栈标准结构不一致),保存当前任务 SP,载入就绪 最高优先级任务的 SP,恢复就绪最高优先级任务的环境变量,中断返回。这样就完成了中断级任务切换。OSTickISR()系统时钟节拍中断服务函数,这是一个周期性中断,为内核提供
时钟节拍。频率越高系统负荷越重。其周期的大小决定了内核所能给应用系统提供的最小时 间间隔服务。一般只限于 ms 级(跟 MCU 有关),对于要求更加苛刻的任务需要用户自己建立中断来解决.该函数具体内容:保存寄存器(如果硬件自动完成就可以省略),调 OSIntEnter(),调用 OSTimeTick(),调用 OSIntExit(),恢复寄存器,中断返回。
c)OS_CPU_C.C
该文件中共定义了 6 个函数,但是最重要的是 OSTaskStkInit().其他都是对系统内核的扩展 时用的.OSTaskStkInit()是在用户建立任务时系统内部自己调用的,对用户任务的堆栈进行初始化。使建立好的进入就绪态任务的堆栈与系统发生中断并且将环境变量保存完毕时 的栈结构一致。这样就可以用中断返回指令使就绪的任务运行起来。
3.2.2与应用相关的代码
这部分包括两个文件:OS_CFG.H, INCLUDES.H。用户根据自己的应用系统来定制合适 的内核服务功能。OS_CFG.H 来配置内核,用户根据需要对内核进行定制,留下需要的部分,去掉不需要的部分,设置系统的基本情况。比如系统可提供的最大任务数量,是否定制邮箱服务,是否需要系统提供任务挂起功能,是否提供任务优先级动态改变功能等等。INCLUDES.H 系统头文件,整个实时系统程序所需要的文件,包括了内核和用户的头文件。
3.3用户图形接口
虽然 μC/OS-II 操作系统具有很高的实时性,但不像 WINCE、uCLinux 等操作系统那样 有良好的图形界面支持。所以,在使用液晶和触摸屏的情况下需要移植用户图形接口程序。这里使用的是 μC/GUI。μC/GUI 是一个软件模块集合,通过该模块可以在我们的嵌入式产品 中加入用户图形接口(GUI)。μC/GUI 具有很高的执行效率,并且与处理器和 LCD 控制器相 独立。该模块可以工作在单任务或者多任务环境,可以支持不同大小的显示方式。
通过 μC/GUI 我们可以很方便的在液晶屏绘制图形和界面。如果需要多种字体支持,必 须自己将相应的字体字库加入到 μC/GUI 中。为了避免出现乱码,尽量使用 GB2312 国标字库。
3.4关于字库的兼容性问题
我们国内通常使用的汉字字库是 GB 码,但国际上使用的是 UNICODE 码,所以如果数据终端使用的是手机、PDA 等移动通信设备,那么在数据发送前必须进行字码转换,即 GB 码 转换为 UNICODE 码或者 UNICODE 码转换为 GB 码。由于 GB 码与 UNICODE 码在排列组合上没有任何规律,所以通常字码转换的方法就是 查表法。
4结束语
基于 ARM9 嵌入式系统的远程监控系统与以往的监控系统不同,高性能的处理器芯片大大提高了系统的性能。使监控系统能够工作在比较恶劣的环境中。并且在设计上充分考虑到了系统的可扩展性和兼容性问题,实现了本系统与其他系统的无缝连接。以满足不同工作环 境的需要。
作者创新观点:本文设计的远程监控系统应用范围更广,更灵活、方便。通过各个功能模块 的不同组合,可以十分方便快速的应用于各个领系域,真正实现智能化、自动化且具有较高 的性价比。
第四篇:基于web的嵌入式远程监控系统
基于web的嵌入式远程监控系统
第1页
共33页
基于web的嵌入式远程监控系统
学生:刘 仁
指导老师:蔡 硕
摘要: 随针对当前国内国外嵌入式服务器技术研究和发展情况的分析,本报告提出了将 WEB 服务器、嵌入式系统以及当前的一些嵌入式实验板板载功能进行融合的设计思想。设计了结合 WEB 服务器技术的嵌入式监控系统。该系统具有浏览交互式网页,对嵌入式平台进行监视和控制等功能。通过本套嵌入式WEB 服务器系统,用户可以通过 HTTP 协议方便的访问相应的嵌入式平台进行有效监视的同时还可以进行实时的有效控制。该系统对硬件要求极低、响应速度快、安全性好、可扩展性强等优点,具有较高的实际应用价值。该系统在智能家居、嵌入式组网等方面的应用将有较广阔的发展前途。
关键词:ARM 嵌入式系统;嵌入式 web 监控;boa 服务器;CGI 编程;Linux 操作系统
关键词:自动化、奏乐器、VHDL、数字电路
基于web的嵌入式远程监控系统
第2页
共33页
Abstract: According to the analysis of the researches about the status of the mbeddedserver of the world.We rise a design of a embedded internet control system basedon the Web service which integrates the web server,embedded technology and thefunctions on the embedded experiment Board.This system has the function of browsing the web pages,monitoring theembedded Board and so on.With this embedded WEB server,the users can watchthe embedded system conveniently according the HTTP protocol.At the sametime the users can also monitor the ystem.This system have a lot of longtageslike a low request of the hardware,limited time of response and a stable status.Wewill see that this kind of system used in the application of intelligent familyelectronics,embedded neting and so on would have a good development.Keywords: ARM Embedded System;Embedded Web Server System;Boa Server;CGI Programing;Linux Operating System
基于web的嵌入式远程监控系统
第3页
共33页
引 言
嵌入式系统课程设计是本专业在学习完 C 语言、LINUX 操作系统、嵌入式系统原理与接口设计、嵌入式操作系统原理之后的专业课程设计,属于专业课内容。通过课程设计建立嵌入式系统主体环节,嵌入式系统的最小结构和系统应用设计基本技能,培养分析和解决一些简单的实际问题的能力,为今后毕业设计奠定基础。随着嵌入式技术的发展和高速宽带网络的普及, 利用网络实现远程监控已为人们广泛接受, 嵌入式网络监控技术正是在此条件下逐步发展成熟起来的。用户使用 Web 浏览器, 通过以太网远程访问内置 Web 服务器的监控摄像机, 不但可以实现对现场的远程视频监控, 而且可以向监控现场发送指令。在整个系统的实现过程中, 嵌入式 Web 服务器起着十分重要的作用。本课题就是基于该项技术,最终编程实现通过网络控制下位机嵌入式控制器的电机启动和停止。
1.1研究目的和意义
1、通过嵌入式课程设计,熟练掌握 C 语言的编程方法。基于 WEB 的远程监控的实现,CGI 的编写和使用,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过基于 WEB 的嵌入式远程监控系统的设计,掌握 S3C2410 实验箱,直流电机的工作原理,BOA 服务器的使用,CGI 的使用和简单程序的编写及调试方法,最终提高我们的动手实践能力。
3、本课题的研究目的是用 BOA 服务器、CGI、IE 浏览器设计一个通过 IE 浏览器监控电机的系统,能够通过两个简单的按键对电机进行启动和停止的控 3
基于web的嵌入式远程监控系统
第4页
共33页
制,并能够在 IE 浏览器上看到电机的当前状态。
4、由于基于 WEB 的嵌入式远程监控系统将成为今后远程监控技术发展的主流方向,所以需要设计出简单实用,让人们更满意的产品。
1.2 本设计任务和主要内容
1.基本要求
本课题主要设计和研究基于WEB的嵌入式远程监控系统,要求在保证可靠运行的前提下,电路设计尽量简洁紧凑,以减小成本、提高系统的效率和安全性。
2.应解决的问题 1)设计系统网络方案
2)分析网络程序结构和应用程序的使用方法 3)编程实现嵌入式系统服务器功能 4)编程实现嵌入式系统联网功能
5)编程实现通过网络控制下位机嵌入式控制器的电机启动和停止
3.扩展功能
演奏时可以通过按键选择是手动演奏还是自动演奏,手动演奏是通过按键进行简易乐曲的演奏。
基于web的嵌入式远程监控系统
第5页
共33页总体方案设计
2.1 整体方案设计
系统总体设计是基于嵌入式系统和 WEB 服务器结合的思想开发的,其网络拓扑结构如图 2.1 所示
图 2.1 系统网络拓扑图
针对本次课程设计提出的系统设计如图 2.2 所示
图 2.2 系统方案框图
基于web的嵌入式远程监控系统
第6页
共33页
2.2 硬件系统设计
2.3.1 核心处理器的选择
核心处理芯片需要完成处理和支持整个系统的功能需求,通过运行 BOA 服务器要实施的接收来自各个客户端的请求和信息,并根据获得的请求和信息进行相应的后台处理以及信息的反馈。为完成上述功能,实现服务器正常运行,对处理芯片进行选型,对比现有处理芯片的优缺点,选择 ARM9 S3C2410X 芯片作为设计开发嵌入式服务器系统的核心处理芯片。S3C2410X 微处理器是一款由 Samsung 公司为手持设备设计的低功耗、高集成度的基于ARM920T 核的微处理器,为了降低系统总成本和减少外围器件,这款芯片还集成了以下部件:16KB 指令 Cache、16KB 数据 Cache、MMU、外部存储器控制器、LCD 控制器、NAND FLASH 控制器、4 个 DMA 通道、3 个 UART 通道、1 个 IIC 总线控制器、1 个 IIS总线控制器、4 个 PWM 定时器、1 个内部定时器、通用 IO 口、实时时钟、8 通道 10 位ADC 和触摸屏接口、USB 主、USB 从、SD/MMC 卡接口等。
2.3 软件环境选择
2.3.1 操作系统的选择
当选定了硬件系统后,为了配合硬件达到系统的最优控制要求,对市面上常用的嵌入式系统进行分析比较。
(1)价格比较:Linux 是完全免费的操作系统,只需遵循 GPL 声明,不需支付任何费用;WinCE 是微软的商用嵌入式操作系统,使用它需要支付 WinCE 及其开发环境的费用,开发出来的每套产品也需交纳一定费用。uc/os—II 系统,可以免费用于学习或科研,但开发商使用产品或销售都是收费的。
(2)开放性比较:Linux 是源代码完全开放的操作系统,可以自由下载,并且
基于web的嵌入式远程监控系统
第7页
共33页
在遵循GPL 声明的前提下可以自由地修改、移植,为系统的开发和调试带来极大的便利;winCE是部分源码开放的商用操作系统,如果要修改其中的代码,需获得微软公司的授权;uc/os—II 也是开放的实时操作系统。
(3)文件系统的比较:Linux 支持绝大部分文件系统,只需选择相应的文件系统即可;
WinCE 仅支持 Windows 系列的 FAT16、有限文件系统;uc/os—II 本身没有包括文件系统,需购买或移植。Linux 与 ARM 处理器从以上可以看出,Linux 系统在诸多方面都存在优势,而且本身的 ARM 处理器与 Linux 也有着紧密的联系。因此采用 Linux 操作系统。2.3.2 服务器的选择
典型的嵌入式 Web 服务器有 Boa 和 thttpd 两种,它们和 Apache 等高性能的 Web 服务器主要的区别在于它们一般是单进程服务器,只有在完成一个用户请求后才能响应另一个用户的请求,而无法并发响应,但这在嵌入式设备的应用场合里已经足够了。Boa 是一个非常小巧的 Web 服务器,可执行代码只有约 60KB。它是一个单任务 Web服务器,只能依次完成用户的请求,而不会 fork 出新的进程来处理并发连接请求。但 Boa支持 CGI,能够为 CGI 程序 fork 出一个进程来执行。Boa 的设计目标是速度和安全,在其站点公布的性能测验中,Boa 的性能要好于 Apache 服务器。经过上述的对比和判断,选择Boa 作为系统的嵌 入式服务器。
综合以上的讨论以及选择,根据系统的实际需求,最终确定了采用 S3C2410X 为核心处理器,Linux 为嵌入式操作系统,boa 为服务器以及相应的 http 浏览器的系统设计方案。
基于web的嵌入式远程监控系统
第8页
共33页硬件设计
3.1 系统硬件平台介绍
我们所介绍的硬件平台是基于 ARM 体系结构,由北京博创兴业科技有限公司开发的UP-NetARM2410-S 实验仪器。UP-NetARM2410-S 的 CPU 为 ARM920T 内核的三星S3c2410 芯片,由于有 MMU(内存管理单元)可以运行标准的 ARM-LINUX 内核。通过这个平台,我们可以实现嵌入式 LINUX 中的针对无 MMU 的开发过程。
3.2 s3c2410 芯片介绍
图 3.1 芯片结构图
基于web的嵌入式远程监控系统
第9页
共33页
3.3 ARM 处理器的外围设备
3.3.1 电源电路
设备提供 12v 的电源,经 LM1085-3.3V 和 AS1117-1.8V 分别得到 3.3V 和 1.8V 的工作电压。开发板上的芯片多数使用了 3.3V 电压,而 1.8V 是供给 S3C2410 内核使用的。5V 电压供给 LCD、电机、总线等电路使用。
图 3.2 电源电路
3.3.2 硬件复位电路
硬件复位电路由IMP811T构成,实现对电源电压的监控和手动复位操作。2410-S主板复位电路设置专用逻辑:IMP811T 的复位电平可以使CPU JTAG(nTRST和板级系统(nRESET)全部复位;来自仿真器的ICE_nSRST 信号只能使板级复位;来自仿真器的ICE_nTRST 可以使JTAG(nTRST)复位,通过跳线选择是否使板级nRESET复位。nRESET反相后得到RESET 信号。硬件复位电路如图3.3所示
基于web的嵌入式远程监控系统
第10页
共33页
图3.3 硬件复位
基于web的嵌入式远程监控系统
第11页
共33页软件设计
4.1 设计思想
基于 web 的嵌入式监控系统设计主要的功能有简单的网页浏览,实现简单应用功能(客户端与服务器的交互)以及服务器端的控制功能。因此软件的设计分为三个部分:boa 服务器的搭建、应用程序设计和驱动程序的加载。
4.2 BOA 服务器的简介与搭建
4.2.1 嵌入式 Web 服务器 Boa 的特点
Boa 是一款单任务的 HTTP 服务器, 与其他传统的 Web 服务器不同的是当有连接请求到来时, 它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接, 而是通过建立 HTTP 请求列表来处理多路 HTTP 连接请求, 同时它只为 CGI 程序创建新的进程,这样就在最大程度上节省了系统资源, 这对嵌入式系统来说至关重要。同时它还具有自动生成目录、自动解压文件等功能, 因此 Boa 具有很高的 HTTP 请求处理速度和效率, 在嵌入式系统中具有很高的应用价值。4.2.2 Boa 的功能实现
嵌入式 Web 服务器 Boa 和普通 Web 服务器一样, 能够完成接收客户端请求、分析请求、响应请求、向客 户端返回请求结果等任务。它的工作过程主要包括:
(a)完成 Web 服务器的初始化工作, 如创建环境变量、创建 TCP 套接字、绑定端口、开始侦听、进入循环结构, 以及等待接收客户浏览器的连接请求;
(b)当有客户端连接请求时,Web 服务器负责接收客户端请求, 并保存相关请求信息;
(c)在接收到客户端的连接请求之后,分析客户端请求, 解析出请求的方法、基于web的嵌入式远程监控系统
第12页
共33页
URL 目标、可选的查询信息及表单信息, 同时根据请求做出相应的处理;
(d)Web 服务器完成相应处理后, 向客户端浏览器发送响应信息, 关闭与客户机的TCP 连接。嵌入式 Web 服务器 Boa 根据请求方法的不同,做出不同的响应。如果请求方法为HEAD,则直接向浏览器返回响应首部;如果请求方法为 GET,则在返回响应首部的同时,将客户端请求的 URL 目标文件从服务器上读出,并且发送给客户端浏览器;如果请求方法为 POST,则将客户发送过来的表单信息传送给相应的 CGI 程序,作为 CGI 的参数来执行 CGI 程序,并将执行结果发送给客户端浏览器。Boa 的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。4.2.3 BOA 的搭建与移植
(1)准备源代码、解压软件包,安装源代码到 boa 网站 http://www.xiexiebang.comTB0 = DCM_TCNTB0;/* less than 10ms */ TCMPB0 = DCM_TCNTB0/2;TCON &=~(0xf);TCON |=(0x2);TCON &=~(0xf);TCON |=(0x19);})在 s3c2410_dcm_ioctl 中提供调速功能接口: case DCM_IOCTRL_SETPWM: return dcm_setpwm((int)arg);应用程序 dcm_main.c 中调用:
ioctl(dcm_fd, DCM_IOCTRL_SETPWM,(setpwm * factor));实现直流电机速度的调整。a.编译直流电机模块 cd /arm2410s/kernel-2410s
基于web的嵌入式远程监控系统
第20页
共33页
make menuconfig 进入 Main Menu / Character devices 菜单,选择 DC MOTOR 为模块加载: b.编译内核模块: make dep make make modules 直流电机模块的编译结果为:
/arm2410s/kernel-2410s/drivers/char/s3c2410-dc-motor.o c.编译应用程序
cd /arm2410s/exp/basic/10_dcmotor/ make 生成 dcm_main d.挂载驱动模块
insmod /host/kernel-2410s/drivers/char/s3c2410-dc-motor.o e.运行程序
mount –t nfs 192.168.0.xxx:/arm2410s /host insmod /host/kernel-2410s/drivers/char/s3c2410-dc-motor.o cd /host/exp/basic/10_dcmotor/./dcm_main 程序运行结果:直流电机转动 1 秒,停转 1 秒。由于是根据原有变速程序稍做改动完成的程序,所以遇到的问题不是很多,经过几次尝试就得到了期望的结果。
基于web的嵌入式远程监控系统
第21页
共33页
5.3 调试结果分析
5.3.1 调试结果
1、静态网页
图 5.1 静态网页
2、乘法网页
图 5.2 乘法网页
基于web的嵌入式远程监控系统
第22页
共33页
3、电机控制网页
图 5.3 电机控制网页
图 5.4 返回结果
5.3.2 结果分析
经过 x86 下的调试和基于 ARM 的下载与调试后,系统能够实现静态网页浏览,简单人机交互以及电机控制的功能,系统工作稳定,响应速度快,组网方便快捷,如果与 DNS 服务器或者 WINS 服务器相结合即可实现用主机名就能登录相应平台的功能。
基于web的嵌入式远程监控系统
第23页
共33页设计总结
经过三个周的学习与努力,经过系统分析、方案论证、硬件和软件设计、调试 等阶段完成了基于 web 的嵌入式远程监控系统的设计制作。在这三个周的课程设计中,我得到了老师和同学很大的帮助,有时候觉得进行不下去了,老师或同学一句话就能让我茅塞顿开。即使听不懂,他们也会耐心的讲解。
在系统的设计制作过程中,确实遇到了各种各样的问题,如调试思路正确但是没有能够进行找到合适的方法进行进一步的实验,设计中对于程序的编写以及目录结构的认知上存在偏差,其主要原因还是基础功不扎实,把握系统的能力不足,这为我们以后的学习和工作提了一个醒。在问题的解决过程中,也提高了组员的动手动脑能力,学到了许多在书本上学不到的知识。在具体的设计当中解决了诸如 boa 服务器的搭建,C 程序的修改及 CGI编程的理解,程序的调试和系统的整体认识等问题,小组成员收获很大。
基于web的嵌入式远程监控系统
第24页
共33页
致谢
在这次课程设计中,学校和学院给予了大力的支持,提供了与设计有关的环境,方便了课程设计的顺利进行。在这其中我确实学到了很多知识,在此仅代表个人衷心的感谢学校和学院的大力支持。本论文是在指导老师蔡烁的悉心指导和严格要求下完成的。在整个课程设计过程中,蔡烁老师时时督促和引导,并在设计过程中进行了方向指导,在总体方向不出错的基础上,施展自己的所学,发挥个人的所长。他不仅在学习上和生活上给予了我们多方面的指导和无微不至的关怀,而且他渊博的学识、严谨的治学态度、孜孜不倦的工作作风和宽以待人的处事风格使我终身受益,并且还从中学会了分析问题和解决问题的方法此外,在本次设计过程中,还得到了其他老师和的热情关心和帮助,值此论文完成之际,谨向老师表示崇高的敬意和最诚挚的谢意。
基于web的嵌入式远程监控系统
第25页
共33页
参考文献
[1]郑灵翔编著 《嵌入式 LINUX 系统设计》 北京航空航天大学 2008 年 [2]孙纪坤、张小全编著 《嵌入式 LINUX 系统开发技术详解-基于 ARM》人民邮电出版社 2007.9、[3]王进德 编著 《嵌入式 LINUX 程序设计与应用案例》 中国电力出版社 2007.5 [4]郑慕德 编著 《嵌入式微型计算机系统实例教程-ARM 与 LINUX》 科学出版社2006.7 [5]刘淼 编著 《嵌入式系统接口设计与 LINUX 驱动程序开发》 北京航空航天大学出版社,2006.5 [6]魏洪兴等编著 《嵌入式系统设计与实例开发 II-基于 ARM9 微处理器与 LINUX 操作系统》 清华大学出版社 2005.12 [7]魏洪兴等编著 《嵌入式系统设计与实例开发实验教材 II-基于 ARM9 微处理器与LINUX 操作系统》清华大学出版社 2005.12 [8]金敏等编著 《嵌入式组成、原理与设计编程》 人民邮电出版社 2007.6
基于web的嵌入式远程监控系统
第26页
共33页
附录 1 主要程序清单
乘法网页的HTML表单:
测试
第五篇:基于嵌入式Web的远程监控系统设计
基于嵌入式Web的远程监控系统设计
摘 要:本文结合机房环境设备的管理需要,分析了远程监控系统的特点,提出基于嵌入式Web服务器的远程监控系统设计思路、体系架构方法,并对基于OPC技术的互联与基于嵌入式Web服务器的互联作了简要对比。文章结合CGI程序的设计,着重探讨了嵌入式Web服务器的实现方法。关键词:嵌入式平台,Web服务器,远程监控,CGI程序
⒈引言
随着计算机和网络技术的普及,计算机系统的数量与日俱增,计算机机房已成为各大型单位的信息枢纽。机房中的环境设备(如空调、UPS电源、配电柜、消防设备等)为网络系统的安全运行提供了环境保障。同时,环境设备自身的安全运行,也成为机房管理的重要内容之一。一旦机房的环境设备出现故障,就会直接影响计算机系统的正常运行,严重的还会造成机房内的相关设备损坏,甚至导致网络系统瘫痪[1]。因此,对机房环境设备的运行状态进行实时监控,是保证机房设备安全运行的关键措施。
⒉远程监控系统的需求分析
对机房环境设备的监控主要涉及以下几个方面的内容:对配电系统、UPS系统、空调系统工作状态的监视;对机房的温湿度、生活用水和供暖制冷系统漏水情况等进行监测、报警,以及对门禁系统、消防系统、保安系统等的管理。由于这些环境设备是连续工作的,因此要求监控系统也必须是长时间连续工作的。这样就对系统设计的可靠性、安全性、可维护性等方面提出了更高的要求[1],具体表现在以下几个方面:
⑴高可靠性。要求监控系统可长时间不间断运行,无故障运行时间要长,且系统的维护快速简便。
⑵高安全性。系统应能够提供多种安全保护措施,对异常状态进行分析、记录、及时报警,以便让管理人员能够尽快了解所发生的情况并及时处理。
⑶较强的实时性。监控系统对信息的传输要及时,不能有过大的延时,否则难以及时跟踪被监控对象的当前状况。
⑷易用性和易维护性。机房环境设备监控系统,应以GUI的方式提供良好的人机界面,便于人机交互。同时,监控系统要有通用性和灵活性,即可以在对系统进行少量修改或扩充就可增加新的监控项目,扩充监测点数,以满足新的监控要求。
⑸丰富的系统功能。要求监控系统不仅能够提供一般的报警功能,对采集的当前数据进行记录且保存
历史数据,并以图形方式对环境设备运行状态和参数进行直观显示。
实施监控的主要方法,即是在现场控制器的控制之下,实时地采集数据并与预设的值进行比较,如果超出相应的阀值则给出报警,以提示有关人员进行相应处理。根据对环境设备监控的位置不同,可把监控系统分为本地监控和远程监控两大类。本地监控方式往往需要派人长期现场值守,管理成本较高;而借助于公共的Internet或企业内部的Intranet网络实施远程监控则可做到无人值守,从而大幅度地节约管理成本、提高机房管理水平和效率,因此成为监控系统发展的主流方向。
⒊远程监控系统的设计
基于对远程监控系统的需求分析,进行系统设计时应重点考虑如下几种因素:首先,要考虑现场总线与数据网的互联问题。由于被监控对象的信号种类较多,所采用的现场总线标准各异,因此不同总线标准之间的转换以及现场总线与数据网之间的互联是系统设计时需要重点考虑的问题[2]。其次,实时性要求是远程监控网络系统区别于普通网络系统的基本特征。如果监控系统的实时性得不到保障,现场监控就失去了实用价值。第三,为满足监控系统的高可靠性要求,应分别对硬件系统和软件系统进行抗干扰设计。第四,根据远程连接方式不同,应采用不同的安全措施以保证信息的安全传输。3.1监控系统的功能设计
监控系统的基本功能主要包括:现场数据的实时采集、发送和显示;对采集到的数据进行处理和存储;对数据处理的结果进行分析、判断和报警;提供多种业务支持功能。3.1.1实时数据采集
实时数据采集是实施系统监控的基础。在环境设备的监控系统中,需要实时采集的数据主要包括高低压配电系统及UPS电源的电压、电流、电源开关状态等参数,空调机的冷热水温度、流量、送风量、送风温度、新风量等状态参数,以及机房内部的环境参数(如温度、湿度、水浸、烟感、门禁等)。不同的参数采用的总线标准不同(如RS232/485总线、Lonworks总线),只有把它们统一到TCP/IP协议上,才能实现真正意义上的远程监控。
3.1.2报警功能
报警是监控系统的基本功能之一。监控系统对采集到的数据进行分析、处理,如果发现相关数据超限、数据异常,则说明环境设备出现异常情况,此时应发出相应报警。设计报警功能时,需要考虑被监控对象的自身特性、优先级别等因素,对多个报警信号进行加权处理,以保证系统的所有重要报警都能被及时处理。
3.1.3多种业务支持功能
灵活的查询和丰富的报表功能是对监控系统基本功能的扩展。通过对设备运行状态的实时数据、历史数据进行对比分析,从不同角度向管理者提供设备运行和维护信息,为设备的维护、大修、更新、改造等质量管理提供可靠依据。3.2监控系统的结构设计
远程监控系统由现场数据采集设备(可以为多个设备)、本地Web服务器和远端监控主机三部分构成[3]。Web服务器通过现场总线与本地数据采集设备直接相连,并负责把本地传感器采集到的数据进行简单处理,通过网络发送到远端的监控主机上,从而为实现无人值守的管理方式创造条件。
远程监控系统在设计时需要解决的关键问题,就是将不同类型的现场总线或控制网络与以太网进行互联互通,从而实现监控信息的远程实时传输。目前,实施远程监控主要有如下几种方法:①基于PSTN的传统方法,即通过Modem连接异地的现场设备;②基于OPC技术。采用支持多种现场总线规范的OPC Server,通过OPC 接口实现现场总线到Internet或Intranet网络的无缝连接;③基于嵌入式平台实现远程监控。在嵌入式平台上完成对现场数据的实时采集,通过现场总线与数据网的互连,将Server端的数据通过TCP/IP协议提供给远端的监控主机(即Client端);④采用其它自定义方法实施远程监控。3.2.1基于OPC的监控系统
OPC 是以OLE/COM/DCOM机制作为应用程序级的通信标准,采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式向用户提供通用的接口,解决了软、硬件厂商之间的矛盾,提高了系统的开放性和互操作性[4]。基于OPC架构的监控系统结构如图1所示。其中,OPC DA Server为数据采集服务器,OPC AE Server为报警服务器。OPC Server 提供多种接口规范,应用程序和Web浏览器(即OPC Client)可以通过这些接口取得与OPC Server相连的硬件设备信息,从而实现OPC Client通过以太网对OPC Server的访问。同时OPC Server也可以将采集到的数据或报警信息通过网络发送到客户端或Web浏览器端。
在基于OPC的体系架构中,由于 COM/DCOM 已被视为网络功能的具体实现方法,使得Client对OPC Server的远程访问成为标准的网络访问方式。但是OPC技术的缺点也是非常明显的,由于LE/COM/DCOM机制是一个纯软件的架构,对系统资源配置的要求高。当系统规模较大或监控点数较多时,系统的实时性将会明显下降。
3.2.2基于嵌入式平台的监控系统
实时监控系统需要长时间不间断地工作,对系统的可靠性和实时性均有较高要求。为此必须从系统功能、体系架构、软硬件系统的稳定性、设备功耗等方面进行综合考虑(例如选用工控级的产品),设计小型化的智能型监控系统。而建立在RTOS之上的嵌入式系统为控制系统的网络化、小型化提供了有效途
径,嵌入式网络控制已成为监控系统未来发展的重点方向之一。
基于嵌入式平台的远程监控系统结构如图2所示。其中,嵌入式Web服务器既是远程监控系统的中心节点,也是控制网络与数据网络进行互联的网关,通过TCP/IP协议将其连接到以太网上,监控主机则通过以太网(或Internet)在远程实时地监视现场信号的动态变化,从而实现远程监控的目标。对于能够直接支持TCP/IP协议的现场检测设备,则可以将其直接连接到以太网上,图中的液体泄漏检测仪即是如此;对于采用其他总线标准的现场设备,则需要通过嵌入式Web服务器进行信号转换之后把现场总线连接到以太网上。
图2 远程监控系统结构图
⒋嵌入式Web服务器的设计
在基于嵌入式平台的远程监控系统中,监控系统的中心节点主要承担两方面的任务:一方面负责对现场数据的采集,即Web服务器以定时巡检的方式通过现场总线对传感器的信号进行采集;另一方面负责协议转换,把现场总线来的数据转换成TCP/IP协议的格式,通过以太网将其发送到远端的监控主机上。在本设计中实现了从RS232、RS485到TCP/IP协议之间的相互转换。4.1开发环境简介
考虑到系统开发的简便性,本方案选用uCLinux操作系统平台作为系统的OS环境,辅助开发工具选用MiceTek公司的HiTool。嵌入式Web服务器的硬件环境选用MiceTek公司的Samsung44B0X开发板,利用其丰富的接口功能,可实现嵌入式Web服务器与传感器的直接连接。4.2 嵌入式Web服务器的硬件设计
嵌入式Web服务器硬件环境的自定义,是根据监控系统的需要,重新制作嵌入式系统的主板。该主板的CPU仍选用Samsung的S3C44B0X,1M的BootFlash,8M的SDRAM,并提供10M/100M的以太网端口,2个RS232接口和6个RS485接口。如果待检测的参数较少,则选用一块嵌入式Web服务器主板即可;如果待检测的参数较多,则可选用多个同样的Web服务器主板,并对每个Web服务器进行参数配置(设置不同的IP地址),构成分布式的Web服务器。如果监控系统要求存储的数据量很大,则可以采取以下两种方法加以解决:一是嵌入式Web服务器外接硬盘;另一种方法是外加一台由工业控制级的服务器,对多台嵌入式Web服务器进行统一管理。4.3 嵌入式Web服务器的软件实现
嵌入式Web服务器的软件开发主要包括以下几项内容:首先,完成嵌入式操作系统的移植和TCP/IP协议的剪裁;第二,编写数据采集、数据处理应用子程序;第三,编写远程通信子程序;第四,报警处理子程序;第五,数据查询和报表生成子程序。这些功能应先在上述的开发环境中进行初步实现之后,再移植到自定义的环境中。
由于嵌入式系统的资源有限,因此对上述功能的实现应尽量简洁,例如对HTTP协议的移植,只需要保留基本的Get和Post方法即可,而Options、Head、Put、Delete和Trace方法在此可不考虑实现,因为对RAM(或EEPROM)中的数据存储可以采用循环覆盖的方式。
在此方案中,嵌入式Web服务器与Web浏览器及其他应用程序之间的交互,可以通过调用CGI(Common Gateway Interface)程序来实现。CGI规定了Web服务器与浏览器及其他可执行程序的接口协议标准。当Web浏览器将请求信息发送给Web服务器时,Web服务器触发一个可执行的CGI程序,该程序根据用户请求的内容做出相应的处理,并将处理结果以Web服务器可识别的方式输出,Web服务器再将该结果回送给Web浏览器[5]。
CGI程序中的信息传递是通过标准输入设备stdin和标准输出设备stdout来完成的。Web服务器在调用CGI程序之前,需要预先设置好所有的环境变量,以便把客户的请求转化为参数后存入环境变量,然后就可以调用CGI程序了。CGI程序根据不同的请求方法确定如何获取客户的请求内容,而Web服务器则通过标准输入设备stdin获得客户请求;对于CGI程序的输出结果,Web服务器则是通过标准输出设备stdout来获得,Web服务器对其进行语法分析之后,再传送给客户浏览器。至于CGI程序的实现,本方案选用C语言,以保证CGI程序的快速、高效和安全。
⒌结语
基于嵌入式平台的监控系统,以其体积小、可连续工作时间长、性能稳定等特点,得到人们的广泛认可,成为网络化远程监控系统的主流方向。在本设计中,借助于相对稳定和成熟的软硬件开发环境,设计了一套较为完整和实用化的远程监控方案并加以实现。经使用证明,该设计方案是成功的并取得了较为理想的效果。
参考文献
[1]关光富,计算机机房环境设备监控系统与设计分析,电工技术杂志,2004.2 [2]周祖德编著,基于网络环境的智能控制,国防工业出版社,2004.1,第1版 [3]宋广军,张敬,王睿,基于web的温湿度远程监控系统,微计算机信息,2004.1 [4]孙敏,顾德英,汪晋宽,基于OPC技术的监控组态程序的开发,仪器仪表学报(增刊),2003.8 [5]汤碧玉,曾楠,郑灵翔等,嵌入式系统中基于Web的远程监控设计与实现,厦门大学学报(自然科学版),vol.43(5),2004.9