1 引 言
单片机和微控制器在工业现场控制领域已得到广泛的应用,但这些控制系统通常采用RS232或RS485组网,作用距离短。如今,Internet飞速发展,已成为信息交流的重要渠道。而且,基于Web的B/S远程监控模式技术也越来越成熟。如果将这种模式应用于工业现场控制领域,则用户只要在有Internet接入的地方,就可以对工业现场设备进行远程监控。将其应用于家庭,则可以朝家电信息化迈出关键的一步。
上述系统的实现离不开嵌入式操作系统。后PC时代,随着嵌入式系统的广泛应用,嵌入式操作系统也越来越受到重视。嵌入式操作系统具有结构小巧、实时性强、稳定性高等特点。目前,商用嵌入式操作系统比较多,如Vxworks,QNX,Nucleaus,WinCE等,但价格都很昂贵,并不适合广泛应用。
嵌入式Linux为这个问题提供了良好的解决方案,其开放的源代码、强大的技术支持、良好的可扩展性及对众多硬件的支持都是它嵌入化的优势。所以我们选择嵌入式linux为操作平台,结合成熟的Web技术来进行远程监控系统的设计。
2 系统结构
该远程控制系统利用Internet/Intranet网络资源,只需一台联网的PC客户机,就可实现对远程设备状态的监视和控制。这里,我们提出系统结构的两种设计方案,如图1、2所示。
两种方案都利用了Internet/Intranet网络资源。不同的是,在方案一中,使用了一台PC机作为代理服务器接入Internet网络,这样便可利用代理服务器提供强大的数据库功能。该方案适用于测量设备较多,相对集中的场合。嵌入式设备可通过以太网线直接与服务器相连,这样,嵌入式设备实际上只需要实现一个以太网到RS232的转换。但是,在某些嵌入式的应用环境中,并不适合单独使用一台PC机作服务器,因此,我们提出方案二,嵌入式设备作为Web Server直接接入Internet/Intranet。嵌入式设备运行一个操作系统并在此基础之上实现WebServer的功能,这对系统硬件要求比较高,再加上小型嵌入式数据库技术的不成熟,使得它在数据管理方面稍有欠缺。尽管如此,我们仍采用方案二,因为我们认为它代表着嵌入式系统的发展方向,其应用范围更为广泛,并且,随着软硬件水平的不断提高,上述的缺点都是可以克服的。
我们的方案中,硬件上采用32位Motorola微处理器,2M Flash,16M SDRAM,及必要的外围设备即可满足系统的要求。
3 系统软件设计
3.1 Linux的选择
由于Linux过于庞大,要将它应用于小巧的嵌入式系统,首先必须将其小型化。目前,出现了各种不同的嵌入式Linux版本,有一些还具有一定的实时性。我们首先依据自己所选择的CPU类型,以公开的嵌入式Linux源代码为基础,根据自己设计的主板情况编写相应的bootloader程序或BIOS,运行自己的系统。一旦加载上了嵌入式Linux,则对于上层应用软件的编程与在运行普通Linux的PC机上一样,所有的程序都可以先在Linux的PC机上调试通过,然后只需要修改MakeFile文件,就可以完全移植到嵌入式Linux设备上运行。如果编译嵌入式Linux时选择网络文件系统(NFS),则调试的时候可利用gdbserver,省去了无数次下载程序的麻烦。这种方法有很大的灵活性与自由度,但也要注意到,由于硬件的配置不同,或程序本身原因,网上下载的源代码未必都合适,这需要自己对照源码去调试与发现。
3.2 应用程序设计
3.2.1 C/S(Client/Server)模式与B/S(Browser/Server)模式传统的C/S模式采用两层设计,客户应用层负责提供交互界面,实现应用逻辑以发送数据、请求并处理返回数据;数据库服务器层负责处理客户数据请求并返回结果,有效管理系统资源。该模式需独立开发和安装每个应用,系统升级维护困难,客户机负担重。此外,与数据库的直接交互导致应用程序对数据结构有很强的依赖性,且浪费数据库连接资源。
基于二层结构的C/S模式无法适应Internet网络的特性,因此出现了一种新的体系结构——B/S模式。B/S是一种基于Hyperlink,HTML,Java的三级或多级C/S,客户端仅需要单一的浏览器软件,其它大量工作都由Web Sever完成。B/S模式使用简单、易于维护、扩展性好,已逐渐成为主流。
3.2.2 客户端工作过程
该系统使用的是B/S模式,对客户端几乎没有特别要求。客户端只要基于普通Windows视窗系统,安装IE或Netscape即可。换句话说,任何一台上网的计算机,都可能成为客户端。
客户端的工作过程如下:通过Internet/Intranet网络访问监控中心的主页,根据需要输入用户名和密码,检验成功则进入Web Server系统的监控界面,点击相应的设备按钮可以获得该设备的运行状态并可以对设备的参数进行设置。
3.2.3 服务器端程序的设计
(1)服务器模式
为了进行服务器端程序的设计,首先要确定服务器的工作模型。我们知道,Linux系统网络服务器主要分为两种:循环服务器(Iterative Server)和并发服务器(ConcurrentServer)。循环服务器在同一时刻只能处理一个客户机请求,而并发服务器在同一时刻可以处理多个客户机请求。TCP套接字大多采用并发服务器提供服务。TCP并发服务器有多种实现方法:
·服务器对每个接收到的客户连接都创建一个新的子进程来处理客户请求;
·服务器预先创建多个子进程,由这些子进程处理客户机的请求。这种方式称为“预创建(prefork)”服务器;
·服务器用函数select实现对多个客户机连接的多路复用;
·由超级服务器(Inetd)激活的服务器。
其中,一个子进程对应一个客户机的服务器模型很简单,父进程完成接收连接和创建子进程的任务,子进程处理客户机的具体请求,每个子进程的处理过程完全独立。
这种服务器可以同时处理的客户机数目受到系统所允许的最大子进程数目的限制。这种服务器的缺点是,为每一个客户创建一个子进程的开销比较大。但如果我们能考虑到实际情况,并加以适当的变化,就会发现,它很适合我们的系统。首先,该系统是一个监控系统,决定了不会有过多客户同时发出监控命令,所以无须担心出现系统资源被耗尽的情况;其次,客户一旦进行监控,一般会持续较长时间,这种创建子进程的开销对服务器效率影响不大;最后,如果系统在Internet上运行,可能会有许多外来的好奇者想进入,为了减少开销,在系统设计中,并不是一旦建立连接就创建子进程,而是当口令通过后并向系统发出ASP请求才建立子进程。
(2)程序设计
根据我们的方案,服务器所需做的工作是:通过串口对设备进行数据的收发;对数据进行处理;将处理的数据交给Web Server子进程;子进程将数据显示到Web页下传给客户,并接收客户的参数设置命令,将参数设置上传到远程设备。
服务器程序结构如图4所示,父进程首先创建一个子进程专门处理数据,然后再根据用户的请求创建相对应的子进程。用户子进程与串口数据处理子进程之间采用进程间通信来实现数据交换。
服务器启动之后的第一件事,就是创建专用子进程来收发数据。服务器任何时刻都在监听用户请求。若用户发出监控请求,而且通过了密码校验,服务器就会产生一个子进程来处理该用户的请求:发送数据,接收设置等。
4 结束语
身处信息社会,人们已经能够利用网络资源快捷方便地获得信息,并能利用网络资源进行各种设备的远程监控。本文提出的基于嵌入式Linux的远程监控系统的方案已在小型局域网中得到实现。该系统在工业现场、远程诊断、信息家电中有着很好的应用前景。