朱 宇,冯明亮
(西安科技大学 计算机科学与技术学院,陕西 西安 710054)
近年来,随着计算机技术、自动控制技术、嵌入式技术以及Internet网络技术的高速发展,传统控制领域正经历着一场前所未有的变革。控制技术的发展一直受到计算机和计算机技术发展的制约。控制系统从最初的CCS(计算机集中控制系统),到第二代的DCS(分散控制系统),再发展到现在很流行的FCS(现场总线控制系统)。而由于对诸如图像、语音信号等大量数据、高速传输速率的要求又催生了信息网络与控制网络的结合。网路控制系统要求具有高性能、高实时性、低功耗、低成本,因此采用嵌入式系统来实现控制网络与信息网络的结合,是将来网络控制系统发展的重要方向之一。
目前最流行的控制系统是现场总线控制系统,它实际上是连接现场智能设备和自动化控制设备的双向串行、数字式、多节点通信网络,也被称为现场底层设备控制网络(INFRANET)。和 Internet、Intranet等类型的信息网络不同,控制网络直接面向生产过程,因此要求很高的实时性、可靠性、资料完整性和可用性。
为满足这些特性,现场总线对标准的网络协议作了简化,省略了一些中间层,只包括ISO/OSI7层模型中的3层:物理层、数据链路层和应用层。现场总线的突出特点在于它把集中与分散相结合的DCS集散控制结构,变成新型的全分布式结构,把控制功能彻底下放到现场,依靠现场智能设备实现基本控制功能。虽然现场总线技术发展非常迅速,但也存在许多问题,制约其应用范围的进一步扩大。
1)不支持当前主流网络协议TCP/IP
现在总线通信标准采用物理层、链路层、应用层、用户层的总线标准,而当前Internet网络均采用ISO模型7层体系结构。两种网络结构的不一致使得控制网络不能直接将信息传送到信息网络。
2)多种现场总线共存
目前世界上存在着大约40余种现场总线,如法国的FIP,英国的ERA,德国西门子公司Siemens的ProfiBus。如此众多的现场总线共存导致了现场总线技术标准难以得到统一,各种现场总线相互竞争,相互挤占市场。而各种现场总线技术相对保密,使得现场总线技术难以跨越式发展。
3)传输速率慢
目前最快的现场总线传输速率也不过500 kb/s,而普通家用Internet网络的传输速率已达到数Mb/s。最新研发的Internet网络速率又将是现有速率的10 000倍。
嵌入式网络控制系统是以计算机技术为核心,结合先进的网络技术、通信技术、自动控制技术的一种远程监控系统。嵌入式网络控制系统能将监控现场的监控信息通过计算机网络传输到网络中的其他计算机上,并与信息系统融合在一起,达到远程监控的目的。
随着Internet技术迅速发展,以太网和TCP协议已经成为世界范围内的事实标准。因此,针对传统现场总线技术的不足,希望工业控制设备具有Internet接入功能,能够支持TCP/IP及其他Internet协议,采集数据通过网络传送服务器的数据库中,使用户通过浏览器就可以查看设备状态、设置设备参数、发送控制命令,从而达到远程监控现场设备的目的。基于ARM&Linux的嵌入式网络控制系统能够实现这个目的,它采用嵌入式技术和工业以太网控制技术,是一种新型的远程监控解决方案。
在基于ARM&Linux的嵌入式网络控制系统中,由于硬件平台采用高性能、低功耗、低成本的ARM处理器,操作系统采用具有高实时的Linux系统,而以Boa服务器作为嵌入式WEB服务器。因此该系统性能稳定、成本合理。
与传统现场总线技术相比,在基于ARM&Linux的嵌入式网络控制系统实现了信息网络与控制网络的集成融合。具有以下几点显著优势:
1)采用ARM&Linux的开发平台,使得系统具有性能可靠、体积小、成本低等优点;
2)使用主流的TCP/IP协议,使得控制信息可以方便快捷地传送到信息网络,从而实现远程监测、远程控制的功能;
3)由于家用Internet网络的传输速率已达到数Mb/s,而最新研发的新Internet网络速率又将是现有速率的10 000倍。因此该系统的传输速率比传统现场总线技术快了很多,能够更好地适应控制系统实时性的要求。
硬件系统中以SamsungS3C2440为微处理器,这是一款采用RISC技术的ARM9工业级芯片,工作频率为400 MHz,扩展64 MB SDRAM为程序运行空间,扩展256 MB FLASH存储器用于程序和数据存储,提供3个RS-232串行接口完成不同工业数据的采集和控制设备的能力,提供了1个100 M以太网RJ-45接口(采用DM9000网络芯片)完成以太网传输,提供SD卡方便数据的移动存储。
嵌入式网络控制系统前端数据采集使用DB1820温度传感器完成温度数据的采集,通过RS-232串行接口传送到SamsungS3C2440微处理器上的WEB服务器,通过浏览器,用户可以方便地监测控制。硬件平台设计框图如图1所示。
图1 嵌入式网络控制系统硬件平台框图Fig.1 Block diagram of the Embedded network control system’s hardware plarform
系统的Bootloader(引导加载程序)是系统加电后运行的第一段代码,肩负着系统的引导任务,在嵌入式网络控制系统中有着至关重要的作用。Bootloader的运行时间非常短,但对于嵌入式系统来说,这是一个非常重要的系统组成部分,主要负责ARM硬件的初始化,设置Linux的启动参数,然后跳转到Linux内核代码的第一行语句引导Linux。本系统采用U-boot作为 Bootloader。
由于系统采用的硬件核心是SamsungS3C2440,所以在U-boot进行移植时,应以SamsungS3C2440的文件为基准进行修改。相关文件有/board/SamsungS3C2440,driver/nand,include/asm-arm/arch-SamsungS3C244等。
根据硬件系统修改完成相应文件后,再修改Makefile文件实现交叉编译。修改代码如下:
ieq ($ (ARCH),arm) CROSS_COMPILE=/usr/local/arm/3.4.3bin/arm-linux-
交叉编译完成后,通过JTAG下到开发板的Nor Flash中实现系统的引导。
内核是所有嵌入式系统的核心软件,内核移植是一个比较复杂的任务,也是嵌入式系统开发中非常重要的一个过程。内核移植一般包括内核配置,内核编译和内核下载3大部分。移植过程关键步骤如下:
1)备下载Linux源码 由于本系统采用的是linux2.6.32版本内核,因此首先到linux官网上下载内核,从http://www.kernel.org/pub/linux/kernel/v2.6/下载2.6.32版本内核。然后通过解压缩得到内核源码。同时在linux系统开发环境下安装arm-linux-gcc交叉编译器。
2)修改内核代码 修改内核代码主要是完成Linux内核对处理器的支持和修改以及与外部设备代码。首先在linux-2.6.32根目录下修改Makefile文件,主要应当修改如下:
ARCH?=arm;说明目标是ARM体系结构;
CROSS_COMPILE?=/usr/local/arm/3.4.3/bin/arm-linuxgcc;设置为宿主机上交叉编译工具的绝对路径。
还需在arch目录和include目录中对以asm开头的子目录中修改与处理器有关的代码。
3)配置和编译内核 配置内核选项是移植内核过程中至关重要的一步,主要是对内核功能模块进行选择及参数的设定。
在内核源代码目录下运行make menuconfig可对内核进行配置。配置完成后,可以保存,然后退出配置菜单界面,在内核源代码目录上输入make。编译完成后,就会生成zImage映像文件。在内核主目录下运行make zImage即可生成U-boot可以启动的内核映像。Linux内核映像制作成功后,下载到ARM开发板后。
根文件系统必须包含这些目录:/dev、/bin、/sbin、/lib、/etc、/proc、/sys。其中/bin和/sbin可以通过Busybox进行制作。
首 先 从 http://busybox.ner/down-load/busybox-1.13.2.tar.bz2,下载Busybox1.13.2版本源码包;然后解压源代码包:tar-jxvf busybox-1.13.2.tar.bz2。最后通过运行make menuconfig对Busybox配置。文件系统配置、编译完成后烧写到指定的Nor Flash分区中。然后就可以从ARM开发板上成功启动Linux。通过超级终端,可观察到系统启动界面如图2所示。
图2 超级终端显示的系统启动界面Fig.2 The system boot screen displayed of HyperTerminal
目前,能够在ARM-Linux平台下实现的嵌入式WEB服务器主要有3个:Httpd、Thttp和Boa。其中Boa是一个非常小巧的单线程的嵌入式WEB服务器,可执行代码只有约60 kB,且源代码开放,它的设计目标是速度和安全,性能优秀,特别适合嵌入式系统的应用。因此本系统采用基于Boa来实现嵌入式WEB服务器。Boa服务器主要移植过程如下所示:
首先,从http://www.boa.org下载Boa服务器源代码。本系统选用的版本是boa-0.94.13。其次是安装并编译Boa源代码,执行命令为:#tar xzvf boa.tar.gz。
生成Makefile文件#./configure后,即可修改Makefile文件。找到CC=gcc,将其改成CC=arm-linux-gcc;再找到CPP=gcc-E,将其改成CPP=arm-linux-gcc-E,最后保存退出。
运行make进行编译后,即可在boa/src目录下生成Boa文件,该文件即为Boa WEB服务器执行文件。Boa启动时将加载一个配置文件boa.conf。可以根据系统需要对其进行修改,然后将修改后的boa.conf存放于嵌入式系统纯根文件/etc/boa目录下。
CGI是公用网关接口,其主要功能是在WWW环境下,经过客户端传送一些信息给WWW服务器,再由WWW服务器去调用指定的程序代码来完成特定的工作,确切的说CGI是在WWW服务器上运行程序代码。当用户在网页中输入数据时,数据先传送给WWW服务器,再传递给CGI程序,WWW服务器在将用户输入的数据传递给CGI程序时,会先经过一个编码程序来完成数据的传递。
嵌入式网络控制系统前端数据采集使用DB1820温度传感器完成温度数据的采集,然后通过RS-232串行接口直接传送到SamsungS3C2440微处理器上的WEB服务器,之后通过浏览器,用户可以方便地监测控制。
因此系统软件部分主要由数据采集、数据传输、服务器数据处理和CGI程序访问等几大部分。系统工作流程如图3所示。
图3 嵌入式网络控制系统工作流程Fig.3 Workflow of Embedded network control system
笔者设计的基于ARM&Linux的嵌入式网络控制系统,运行良好。采用模拟多机访问嵌入式服务器的方式,经过检测系统完成了前端数据采集和提供远程服务器访问等功能。笔者设计的嵌入式网络控制系统具有很好的实用价值。
[1]王传启,邓文栋.工业系统中嵌入式web服务器的设计与实现[J].计算机工程与应用,2002,38(10):227-230.
WANG Chuan-qi,DENG Wen-dong.Embedded Web-server designandimplementationofindustrialsystem[J].TheComputer EngineeringandApplication,2002,38(10):227-230.
[2]李伯成.微型计算机嵌入式系统设计[M].西安:西安电子科技大学出版社,2004.
[3]Leung K,ZHANG Du.Animation of linux processor scheduling algorithm[C]//Seventh IEEE International Symposium on Multimedia, USA;[s.1],2006:205-243.
[4]顾咏枫,陈章龙.嵌入式Linux裁剪方法[J].小型微型计算机系统,2003,24(9):1697-1700.
GUYong-feng,CHEN Zhang-long.Cuttingmethodofembedded Linux[J].Micro Computer System, 2003,24(9):1697-1700.
[5]CPU:Samsung Electronics Co.Ltd USER'S MANUAL.S3C2440 32-Bit RISC Microprocessor Revision[Z].2002.
[6]Apache:fast,PD[EB/OL].http://www.boa.org.