闸门系统是水资源调度中重要的组成部分,国内目前多采用手动和部分电动的操作方式,真正实现闸门的智能控制还少有报道。文中采用的是基于Linux操作系统的嵌入式技术,实现水利工程闸门的集视频监控与水位、闸位、库容、流量等参数实时监控一体化的本地/远程自动监控。
Linux与嵌入式系统
嵌入式系统是一种以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应实际应用对功能、可靠性、成本、体积、功耗等要求严格的专用计算机系统。它面向特定应用,有较高的可靠性和较长的市场生命周期。由于嵌入式系统的功能越来越复杂,硬件条件越来越好,选择合适的嵌入式操作系统成为系统开发的关键问题。
目前嵌入式系统的开发方法主要有两种:一是依赖现有商业软件提供的开发平台和组件,如VxWorks,uC/OS,WindowsCE,QNX等等,其技术成熟,功能强大,提供大量可用函数调用接口,大大缩短了产品的开发周期,但是价格不菲;二是基于自由软件Linux做开发,根据自己系统的需求进行定制,并且不必为获得使用许可而支付额外的费用,可大大降低开发成本。
Linux是一个以Unix核心为基础的、多任务多进程的嵌入式操作系统,支持广泛的计算机硬件。开发人员可以根据自己的需要对操作系统进行自行修改和定制,它有大量的开放的应用代码可以使用,并且Linux有可支持多达11种操作平台的C++,C++,ObjectC编译器GCC,功能强大,执行效率高出一般编译器20%~30%。在基于Linux的嵌入式操作系统中,有许多改良品种迎合了嵌入式/实时市场,包括RTLinux(实时Linux)、μcLinux(用于非MMU内存管理单元处理器的Linux)、MontavistaLinux(用于ARM、MIPS、PPC的Linux分发版)、ARM2Linux(ARM上的Linux)等等。针对目前闸门智能监控系统对操作的实时性要求并不高的特点,我们在本次应用中选用Linux2.4.22内核基础上的RedHat9.0作为开发环境。
Linux定制内核配置
由于嵌入式系统的存储空间有限,因而要将Linux用于嵌入式系统就必须对其定制,即要对内核中不必要的模块诸如SCSI、Floppy之类的外设支持模块等进行裁减。
(1)清除设置环境makemrproper
(2)设置配置makeconfig
(3)编译内核及模块makedep;makeclean;makebzImage;makemodules
编译出的内核文件为/usr/src/linux/arch/i386/boot/bzImage及/usr/src/linux/System.map
制作系统电子盘
在标准Linux环境下,将电子盘Mount到/RamDisk上,在电子盘上制作引导和启动。
(1)修改lilo.conf文件,系统直接从电子盘启动。
(2)创建一个内核文件系统ext2:mke2fs-i8192-m0/dev/ram50,并在/RamDisk目录下,建立运行系统所必需的目录文件:bindevetclibmntprocsbintmpusrvar,以及各个目录下必要的文件,特别是应用程序所需要的库文件。
(3)将内核文件放入RamDisk:#ddif=bzImageof=/dev/rambs=1k.并加载根系统文件:#ddif=/tmp/ram-image.gzof=/dev/fd0bs=1kseek=内核数据块数。其中ram-image.gzJ是压缩后的根系统文件,内核数据块数就是内核的大小。
快速启动及开机画面
由于该系统是基于RadHat910基础之上开发的,因此启动过程较长,从系统加电直至系统控制台显示“login:”为止,需要三十多秒的时间。通过测试,内核启动时有大量的时间耗费在硬件初始化上。例如Linux一共要探测20个IDE接口(包括主、从盘),通过修改Linux源代码中MAX-HWIFS的定义值,由10改为1,以减少Linux探测IDE接口的时间来缩短系统启动的时间。真正加快启动时间,则是通过改写rc.sysinit,rc等启动脚本,让系统只做必要的硬件模块的初始化工作及服务来达到目的。
快速启动时只需显示用户定义的界面,可将256色640X480象素的1pcx或1tif格式的图片数据替换LinuxLOGO.h中原有的数据,并对driver/video/fbcon.c源代码做少量修改,将宏定义LOGO-H80改为640,LOGO-W80改为480,并修改相应的函数。
非正常关机
在系统使用过程中,为了方便用户使用,应该支持非正常关机,即在直接切断电源的情况下避免可能引发的问题。通常采用ext2文件系统是非日志型文件系统,系统在重新启动时会耗费大量的时间来检查文件系统,有时甚至产生致命错误(fatalerror),强迫用户手工使用命令fsck检查文件系统。
而使用通用日志型文件ext3系统,会通过日志记录来保证数据恢复的可靠性,系统在重新启动时不会要求检查文件系统,并且运行速度和稳定性等方面表现良好。升级原有的ext2文件系统到ext3:tune2fs-j/dev/hda6,并在/etc/fstab文件中将该分区的文件系统类型从ext2更改为ext3。由于使用了ext3日志文件系统之后,不需要再经常进行文件系统的检查(fsck),因此有必要使用tune2fs-i0-c0/dev/hda6命令关闭文件系统检查,同时也达到了减少系统启动时间的目的。
闸门智能监控系统组成
系统结构与功能
闸门智能监控系统由中心控制室控制柜、现场闸门启闭机、前端视频监控点、现场水位、闸位监测点以及相关辅助设备构成,系统结构如图1所示。监控系统以基于Linux的嵌入式系统为核心,实现功能为:
(1)闸门的升、降、停等运行的智能控制,以及报警、紧急泄洪智能控制;
(2)8路数字MPEG24压缩流媒体视频,通过视频图像对水情、闸门的状态及运行情况进行远程监视;
(3)实时水情数据监测,自动测报水位流量和水量,为防洪和水量调度提供依据;
(4)历史数据统计,生成相应过程线及报表。
硬件实现
中心控制室的控制柜要求有视频监控和数据曲线显示功能,采用CRT监视器,配合无源底板,半长CPU板采用PCI6870,CPU使用Intel公司的PIIICeleron1.2GHzMHz,内存为256MB,以太网接口为10MHz的RTL-8139A,四路视频采集卡为飞图DVS4816AVC。CPU板通过PC104总线与采样模块和输出模块相连,电子盘采用64MFlashDisk。
软件实现
系统的软件有两部分,即嵌入式操作系统和应用程序(结构如图2)。基本的嵌入式操作系统包括:
(1)引导程序bootloader(初始化处理器,初始化必需的设备,下载系统映像,初始化操作系统);
(2)嵌入式Linux内核(包括内存管理、进程管理,进程间通信等,以及其他可配置的硬件驱动,TCP/IP网络堆栈);
(3)根文件系统。
总结与展望
嵌入式Linux应用于闸门智能监控系统,对于降低成本,提高可靠性、稳定性,有着积极的意义。
在本系统中,采用的是ext3文件系统,为了进一步提高系统的可靠性,今后还可使用专门针对flash存储器设计的日志文件系统JFFS或JFFS2。由于JFFS2采用新的存储方式,支持损耗平衡,具有断电保护功能,使文件崩溃后能够迅速恢复。因此JFFS2文件系统更适合于以flash作为存储设备的嵌入式系统。
责任编辑:gt