1 引 言
随着计算机技术和网络技术的迅速发展,应用多传感器的控制系统实现多参数的远程测量和多象的远程控制成为计算机控制领域的研究热点之一。它能大幅缩小生产周期,节约劳动力成本,提高企业效益,对于市场竞争日益激烈的今天来说具有重要意义。本文结合快速发展的嵌入式技术,给出了一种基于嵌入式网络化远程监控系统的实现方案。它采用uClinux操作系统,内嵌嵌入式Web服务器,通过CAN总线连接多个传感器控制单元实现了对多对象的远程测量和控制。
2 网络化监控系统系统概述
嵌入式系统是嵌入到对象体系中,以应用为中心,软硬件可裁减,对体积、功耗、成本都有严格要求的计算机系统。与传统的单片机相比,它重要的突破之一就是解决了设备和internet的互连问题,使得人们可以通过现有的网络设施对网络中各个节点的设备进行远程实时监控。近年来,嵌入式技术飞速发展,种类繁多、功能强大的CPU和片外连接, 为网络应用提供了稳定、可靠的硬件环境;嵌入式操作系统对这些硬件和以太网也又很好的支持,操作系统的移植大为化简,这些就为嵌入式webserver的实现提供了方便。嵌入式webserver将监控系统中的各种协议的数据转换成统一的TCP/IP协议格式,以便用户通过以太网远程访问 webserver,实现对设备的监控。
本文介绍的嵌入式远程监控系统采用客户端/服务器结构模式,它由客户端主机、现场嵌入WebServer和底层传感控制单元三层的体系结构组成。最底层为传感控制单元,负责从现场采集数据并执行控制指令。第二层为现场WebServer构成,WebServer 具有Internet功能,可通过网络通信线缆直接与Internet连接。它的主要功能是将传感控制单元上传来的数据以网络服务形式实时发布,发布的信息可以被第三层的客户端主机接收。客户端主机为普通的PC机,用户在客户端主机上通过Web浏览器远程访问嵌入式WebServer主页并向底层的传感控制单元发出各种控制指令,进而实现采集数据、监视和控制等功能。在这三层的结构中,
嵌入式webServer是系统的核心。系统的总体框图如图1所示:
图 1
3 系统的硬件设计
嵌入式Webserver以高性能微处理器为核心,其上可以运行uClinux操作系统。根据网络服务的要求,选择 Samsung公司ARM7TDMI内核的微处理器S3C44BOX。S3C44BOX是一款具有丰富的片上外设的高性价比嵌入式处理器,如:扩展内存控制器;带专用DMA通道的LCD控制器;2个DMA通道,1个带外部请求引脚的DMA通道;I2C总线控制器;5个PWM定时器及1个内部定时器; 8个外部中断源;5个PWM定时器及1个内部定时器;带PLL的时钟发生器等等。其高集成度极大地简化了其应用系统硬件设计,软件设计过程也大为缩短,并提高了系统的可靠性。为运行uClinux提供硬件上的支持,存储系统采用了2MB Flash(AM29LV160DB,AMD)和2片8MB SDRAM(57V651620B,HYUNDAI)。Flash用来存储启动代码和压缩的linux内核;SDRAM作为系统内存使用。系统采用 SJA1000T和TJA1040T为S3C44BOX扩展一个CAN总线接口,使之可以通过CAN总线与各传感控制单元连接起来。以太网控制器芯片选用是RTL8019AS。RTL8019AS是Realtek公司生产的一款具有高性价比的、即插即用的全双工以太网控制器。它内部集成有RAM,用作收发缓冲,降低了对处理器速度的要求。整个硬件系统如图2所示。
4 系统软件的设计
4.1 uClinux操作系统的移植
由于嵌入式websever硬件资源有限,在此平台上只能运行一个小型的操作系统。考虑到硬件的特点和对系统的功能要求等因素,我们选择了一款目前比较成熟的uClinux操作系统,并在此基础上实现了嵌入式webserver。uClinux从标准的Linux 内核派生而来,通过对内存管理和进程管理等相关方面进行改写,满足无MMU处理器的开发要求。它继承了Linux稳定而优良的性能,同时通过个性化的内核定制,能够更好的满足嵌入式应用的多样化需要,提供丰富的应用软件支持。
为了使uClinux能运行于硬件平台,必须对uClinux进行移植。uClinux的移植可以修改内核中相关文件来实现。要修改的文件很多,不能一一介绍,主要有以下几处: (1)linux/arch/mach-S3C44B0X目录下处理器结构的,如:arch.c、irq.c等。arch.c指定了系统启动时用到的地址,按照硬件设计的不同,地址将有所不同;irq.c是与中断处理相关的程序。由于linux所支持体系结构的种类繁多,所以对一个新型的体系,其低级例程可以模仿与其相似的体系例程编写,在这里可以从mach-S3C4510目录下的文件修改得到。(2)include/asm-armnommu /arch-S3C44B0X下相关文件,如:dma.h、hardware.h、irq.h、system.h、time.h等。dma.h这条文件定义了DMA通道,以及DMA可以使用的内存空间。hardware.h件定义了内存地址和10地址,根据设计的硬件电路不同而不同。irq.h中定义了 fixup_irq()、irq_init_irq()等函数。system.h在该文件中需要定义两个函数:arch-idle()和arch- reset()。time.h实现了定时器中断处理s3c44b0x_timer_interrupt()和相关函数。(3)各级相关makefile。在交叉编译环境下编译内核,当编译结束时会生成内核的镜像文件image.rom,将其和bootloader一起烧写在板子的Flash中,重新加电通过串口可以观测到内核的启动信息,证明系统移植成功。
4.2 守护进程的实现
uClinux移植完成后就可以在此平台上进行应用程序开发了。系统开发的主要功能要求是使系统响应远程客户机的请求,完成特定的操作,同时能够自动的将本地的监测数据传送到远程客户机上。根据这一要求,必须对在服务器上实现一个守护进程。该程序在uClinux下用C语言编写,当uClinux操作系统启动后会自动运行,流程图如图3所示。
图 3
4.3 嵌入式Webserver的实现
考虑到硬件资源的限制,这里我们选择uClinux下的boa服务器。Boa是一款单任务的HTTP服务器,它通过建立HTTP请求列表来处理多路连接请求,而且它只为CGI程序创建新的进程,这样就节省了大量的系统资源, 因此,Boa具有很高的HTTP请求处理速度和效率,在嵌入式系统中具有很高的应用价值。要在uClinux上运行boa需要对uClinux进行修改, 在user/Makefile,加入dir_$(CONFIG_USER_BOA_SRC_BOA) += boa;在config/config.in中加入
comment "Network Applications"
bool "boa" CONFIG_USER_BOA_SRC_BOA
在uClinux-dist/vendors/Samsung/44b0/rc中加入一行ifconfig eth0 202.117.0.2 up,再增加一行脚本命令boa &,把Default.html定义为远程客户浏览的控制页面,放在/uClinux-dist/romfs下面[3]。最后,在进行内核配置时make Menuconfig时选中boa ,重新编译内核,将最终生成的文件烧写进Flash中即可
4.4 客户端软件实现
用户端使用了Java语言编写的应用程序浏览该嵌入式Webserver上的html信息,并完成数据处理和相应的控制功能。主要包括:产生发送至Webserver的指令流,显示从Webserver返回的数据;当命令执行过程中所要执行的信息的提示;对返回数据的简单处理等等。
5 结束语
本文作者创新点:本文克服单片机在组建大型网络方面的局限,提出了基于uClinux的网络化远程监控系统。该系统充分利用以太网网络的诸多优点以及CAN总线网络在工业控制方面的广泛应用, 实现了两种网络的无缝互连, 并在这种连接的基础上实现对机电设备的远程集中监测和控制。该监控系统具体积小、性能可靠、组网方便灵活等优点, 它能够大幅提高企业的自动化和信息化水平,有着广阔的应用前景。