您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 【期刊论文】基于QNX的嵌入式液位监控系统设计
基于QNX的嵌入式液位监控系统设计张寅许维胜(同济大学中德学院,上海200092)摘要:提出了一种基于QNX的嵌入式液位监控系统设计方案,详细分析了它的系统结构,给出了硬件方案,并结合QNX的特点,给出了相应的软件实现过程。关键词:QNX,嵌入式系统,实时操作系统,操作系统映像,进程中图分类号:TP277;TP316.2文献标识码:A嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其它设备的控制、监视或管理等功能。嵌入式操作系统是决定嵌入式系统性能的重要一环,它具有结构小巧,实时性强,稳定性高的特点。目前商用嵌入式操作系统比较多,如VxWorks,QNX,WinCE,PalmOS,OS-9等。QNX是加拿大QNX软件系统有限公司开发的建立在微内核和完全地址空间保护基础之上的实时操作系统,有实时、稳定、可靠、强壮,具有模块化程度高、剪裁自如、易于扩展的特点。QNX实时操作系统(QNXRTOS)广泛应用于自动化、控制、机器人科学、电信等领域,上世纪90年代后期以来,QNX系统在高速增长的因特网终端设备、信息家电及掌上电脑等领域也得到了广泛应用。QNX实时操作系统包括QNX2、QNX4和QNX6,QNX最新开发系统QNX6.2(QNXMomentics)在近日正式发布,为嵌入式开发提供了综合与集成式开发环境,加速了系统的开发过程。1.QNX操作系统的特点作为多任务的实时操作系统,QNX的内核只提供操作系统最基本服务,如进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX内核非常小巧(QNX4.x大约为12Kb)而且运行速度极快。这个灵活的结构可以使用户根据实际的需求,将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。实时系统是指在限定时间内对外来事件作出反应的系统。其实时性的关键在于:系统具有各种操作的不同优先级别,高优先级的操作先得到处理。系统还应具有抢占调度功能,即在正常工作情况下,如果高优先级任务的条件得到满足,系统将中断正常的运行而去执行高优先级的任务。作为一个实时监视和控制系统,这一功能显得尤其重要。作为实时性的两个主要指标的上下文切换和中断延时,QNX其时间指标都在微秒一级,在多种嵌入式实时操作系统中名列前茅。QNX实时操作系统还是一个开放的系统,其应用程序接口完全符合POSIX标准。使Linux/UNIX程序能够方便地移植到QNX系统上来,极大地扩展了QNX系统的可用资源。QNX开放性还表现在网络联结性上。QNX不仅有QNX机器之间专用网络,还支持与异型机器之间网络通信的协议,如TCP/IP族的各种协议。QNX是少数支持图形用户界面的实时操作系统之一。不同于一些实时操作系统,QNX对图形用户界面的支持不是通过用户可以使用的C/C++图形函数库的方式提供给用户自己编写图形界面,而是“立即”提供的。图形用户界面以一组运行模块的方式,用户只要运行这些模块,就“立即”获得了图形用户界面,本身不需编写一条程序。QNX的这些特点可以很好的在实时性要求较高的监控任务中得到发挥,因此选用QNX作为监控系统的系统平台。2.系统总体设计在笔者开发的监控系统中,主控装置为在现场的PC104工控机,由四个模块组成,分别是CPU板;数据采集板,有16路采集通道,可同时对16路数据进行采集并完成A/D转换;数据输出板,也有16路模拟数据输出;网络板,为100Mbps的网卡。远程监控计算机通过网络与PC104工控机连接。整个系统的硬件组成如图1所示。图1系统硬件组成示意图(1)被监控设备(2)PC104工控机(3)远程监控计算机PC104工控机以QNX为操作系统,在此系统上开发出的应用程序完成数据采集,算法控制,D/A转换输出以及网络连接等功能。PC104工控机和被监控设备构成了完整的闭环系统,对设备进行实时控制并将采集到的数据及时发送到远程监控计算机,同时随时接收远程监控计算机传过来的指令,对控制参数进行调整。远程监控计算机对收到的信号进行辨别,可以发出警报信号。由于PC104工控机有16路I/O通道,可同时监控多个对象参数。远程监控计算机同样以QNX为操作系统,利用QNX中的PhotonMicroGUI开发出图形监控界面,并通过TCP/IP协议和PC104工控机通信。在笔者开发的监控系统中,被监控设备是一套液位系统。通过PC104工控机内置的控制算法,可以将液位根据远程监控计算机的指示调节到给定值,也可以将实时的液位信号传到远程监控计算机。由于使用了嵌入式系统,在工业现场就可以对各种突发情况作出及时灵活的处理,特别是在一些受空间约束的场合,小巧的嵌入式系统的这种品质更加可贵。3.系统软件设计3.1QNX操作系统映像(OSImage)的配置所谓操作系统映像(OSImage)简单说来就是一个文件,它包含了操作系统(OS),可执行程序以及任何与程序有关的数据文件。通常一个嵌入式系统需要有一个可启动的操作系统映像(OSImage)要将QNX应用于小巧的嵌入式系统,应该根据实际的要求配置合适的微型嵌入式操作系统。具体说来就是根据自己所选择的CPU类型,还有应用程序所需要的操作系统模块支持来定制系统。我们可以在制作操作系统映像(OSImage)时完成这个任务。在QNX中通过命令mkifs(makeimagefilesystem)来制作操作系统映像,下面是此命令的一个例子:mkifsshell.bldshell.ifs意思是用构造文件(buildfile)shell.bld创造映像文件(imagefile)shell.ifs。在QNX中构造文件(buildfile)包含有三个部分:启动文件(bootfile),启动脚本(script)和一个映像中程序所需共享库与链接的列表(list)。启动文件(bootfile)的作用是配置和CPU相适应的微内核,对于带有标准基本输入输出系统(standardBIOS)的x86及其兼容的嵌入式计算机,通常格式如下:[virtual=x86,bios+compress].bootstrap={startup-biosPATH=/proc/boot:/binprocnto}对于其它类型的CPU,只需要根据参考手册对里面的参数作相应的置换就可以了。而启动脚本(script)则是在进程管理启动后一系列将要被执行命令的序列,通常格式如下:[+script].script={commandline……}一个启动普通应用程序的方法是将它添加在启动脚本(script)里。在列表(list)中则需要列出应用程序和系统程序所需要的共享库,并要通过[type=link]重新定位它们的位置。由于在监控系统设计时用C语言开发,所有的驱动至少需要一个标准C共享库:[type=link]/usr/lib/ldqnx.so.2=/proc/boot/libc.so#用一个新链接ldqnx.so.2重新定位libc.so#包含C共享库在监控系统中需要用到基于TCP/IP的网络功能和利用套接字(socket)进行网络通讯,还需添加TCP/IP协议共享库和套接字共享库。操作系统映像做好之后再将它嵌入到PC104工控机中,嵌入式系统便可以运行了。3.2应用程序设计3.2.1软件功能架构由于监控系统由几个同时进行的任务组成,唯有多个并发的进程才能完成监控任务。另一方面,将监控任务分成几个功能不同的进程,可以编写出模块化的程序,使应用程序更加灵活、高效且易维护。作为多任务的操作系统,QNX为程序的设计提供了很好的平台。构成监控系统的各个进程如图2所示,黑色箭头表示数据的流向。在PC104工控机端,核心进程为控制算法进程,主要任务是对采样数据进行处理,得到控制量。而基于套接字的client进程则将数据采集进程采集到的数据发送到远程监控计算机,而基于套接字的server进程则负责监听从远程控制计算机传来的控制信息。各个进程之间通过共享内存来进行通信。由于进程较多,用startup进程负责各进程以及共享内存的创建,它还要能使系统安全地退出并做好一系列收尾工作,包括中止各子进程,释放共享内存并且通知远程监控计算机PC104工控机系统已经停止工作了。在远程监控计算机端,核心进程为监控进程,它负责对收到的信息进行处理,并将相应的结果显示在监控界面上,同时还可以人工输入控制命令,通过client进程向PC104工控机发送。图2系统进程结构图3.2.2数据结构的考虑由于PC104工控机有16路I/O通道,有些I/O通道可能暂时用不上,但为了以后拓展的方便,并且各进程之间的数据传递应有统一的接口,设计有利于系统拓展的数据结构是必要的。这也为开发模块化的程序建立了基础。对于本监控系统,采样数据、IO板卡设置参数、算法设置参数,我们都规定了各自的数据结构。例如对于各通道采样数据,数据结构定义了输入输出通道号,输入信号的模拟量的上下限,模数转换后的数字量的上下限,实际控制对象的物理量的上下限,采样数据的大小等值。3.2.3进程间的通信机制(IPC)由于本系统中的进程间通信十分频繁,进程间通信的实现也是一个关键问题。QNX是一个类UNIX系统,它提供了几种进程间通信的机制,它们是管道、消息队列和共享内存。共享内存是其中最快的方法,同时也是最危险的。快是因为传输以内存的存取速度进行,危险是如果管理不当会导致出现竞争,甚至死锁。因此应使用一个信号量来控制访问。QNX提供了几个函数来操作共享内存。主要函数功能叙述如下:shm_open创建或使用共享内存段,确定内存段的读写类型及用户权限。shm_truncate确定共享内存段的大小。shm_map将共享内存段地址空间映射到自己的地址段。shm_unlink脱离与共享内存的连接。shm_close关闭共享内存,释放所有系统资源。根据图2所示的系统进程结构功能图,本监视系统需要开辟五块共享内存。3.2.4网络功能的实现监控系统的网络通讯需要保证数据的可靠传输,因此采用有连接的TCP/IP方式。QNX提供的套接字(socket)接口可以实现这种面向连接的通信模式。在QNX中使用的Socket源于Berkeley套接口。由于Socket在网络通信中表现出的简洁实用的特点,它被用于QNX及许多其它操作系统。Socket的实现是基于客户机/服务器模式:服务器创建一个句柄,并将其与网络上的物理位置相关(用bind),设置等待服务的请求的队列空间(用listen)。然后服务器监听客户机请求(用accept)。客户机也创建一个句柄,与此句柄相关的是网络服务器的网络位置(用connect)。服务器与客户机的句柄称为传输端点。客户机与服务器之间建立起连接后,它们就可以使用普通的read与write调用进行通信了,具体流程如图3所示。对于本监控系统,在PC104工控机端的client进程负责发送采样数据,而远程监控计算机端的server进程则负责监听,并在数据到达时接收数据。与此同时进行的是远程监控计算机端的client进程负责发送控制信号,而PC104工控机端的server进程则负责监听与接收。由于在同一个TCP/IP连接上有两个同时进行的通信进程,这时要用TCP的端口号来区分。3.2.5监控界面的设计监控界面是系统与我们之间信息交流的桥梁。我们需要通过它了解被监控设备以及嵌入式系统运行的状态,显示许多我们所关心的参量的值和各种警告信息。同时我们应该还能通过它设置各种系统运行所需的参数,并将它们传送到系统端,从而改变系统运行的状态。除此之外,还必须考虑日志文件的生成与存储、界面与Client/Server程序的整合、IP的动态输入与容错能力、动态图象的显示、帮助界面的设计等等一系列问题。我们可以利用QNX中PhotonMicroGUI来开发图形界面。在photon下编程主要是
本文标题:【期刊论文】基于QNX的嵌入式液位监控系统设计
链接地址:https://www.777doc.com/doc-351536 .html