自动水下航行器测量子系统实时多任务软件设计
2010-01-09吕九红路亚娟
吕九红,梁 捷,刘 颉,姜 民,杨 逍,路亚娟
(国家海洋技术中心,天津 300112)
自动水下航行器测量子系统实时多任务软件设计
吕九红,梁 捷,刘 颉,姜 民,杨 逍,路亚娟
(国家海洋技术中心,天津 300112)
针对多传感器测量系统中存在的单任务软件系统很难实现同步、实时测量的问题,引入了实时多任务操作系统。基于开放式、面向任务、模块化设计思想,研究了自动水下航行观测平台测量子系统的多任务软件系统。描述了多任务软件的静态结构和动态模型,实现了多传感器测量任务并发执行,保证了各个传感器测量数据的实时性和有效性。
自动水下航行器;多传感器采集;实时;多任务;CMX-RTOS
引言
多传感器测量系统设计的核心问题是要按照既定的时序策略采集各个传感器的数据,并完成数据的处理,存储和传输。在软件设计方面,传统的单任务方式采用轮询式采集,也就是控制软件按照一定顺序对多个传感器依次采集数据,这种方式的弊端是不能满足多个传感器并发的测量,对硬件控制系统性能的要求较高,而且在传感器通讯等待期间,处理器不能进行其他操作,存在严重的资源浪费现象。解决这些问题的方法就是引入多任务操作系统,多任务操作系统可以很好地解决测量系统中出现的逻辑并发性和物理并行性的问题,改善数据采集系统实时性,提高系统的执行效率和资源的利用率,同时提高系统的准确性、可靠性和稳定性,同时多任务操作系统使得软件结构具有开放性特征。小型水下自航行观测平台携带了多台水下测量设备,在航行过程中要求多台设备能够并发测量。观测平台采用了分布式体系结构,测量子系统与其他子系统之间的通讯要求实时性较高,此外,作为观测设备平台,要能够做到测量设备和传感器的更改、增减相对容易,这就要求测量软件的设计要具有开放性结构。如前所述,水下自航行观测平台测量子系统采用实时多任务操作系统是应用的必然要求。
在众多的嵌入式操作系统中,CMX-RTOS具有更加完备的任务协调机制,使得系统设计有更多的可选择性,完全优先级调度策略使得系统的实时性很强,可选的协作服务和时间片调度策略可以满足更多的应用设计需求。此外由于本系统所拥有的资源有限,因此需要选择紧凑型的嵌入式多任务操作系统,该系统还具有中断延迟小、系统资源占用少等优点,是嵌入式软件的理想开发平台。
1 测量子系统硬件结构及配置
水下自航行观测平台采用了分布式体系结构,按照功能将系统分为总体控制单元、导航控制单元、推进控制单元、监控单元和测量单元(即测量子系统)。总体控制单元负责系统整体协调,导航控制单元负责自主航行决策,推进控制单元负责管理推进系统,监控单元负责系统状态信息的记录,测量单元负责测量数据获取和传输。不同的功能单元之间采用分布式系统现场总线(CAN)连接。
水下自航行观测平台的测量子系统要求能够在空间和时间上并发测量,还要求具有一定的可扩展性,方便以后测量设备增加或更换,这就要求在硬件结构上能够满足这样的要求。自航行观测平台测量子系统采用的控制方案为主从式的一对多控制模式,一个主控制器负责整体测量控制,多个控制模块单独控制单个传感器或其他采集量的控制与采集。主控制器和控制模块集成到一块电路板上,之间选择一种通用总线I2C总线连接。I2C总线具有连接简单、数据传输速率适中、可靠性高、扩展性强等优点。这样的硬件结构下各个控制模块可以并行工作,并具有很好的可扩展性。I2C总线同时被应用于控制器与外围芯片的集成,例如本系统中有EEPROM、RTC(Real-Time-Clock)等。另外测量单元主控制器直接与卫星通讯、GPS定位系统和大容量存储器相连,实现数据的传输和存储功能。硬件连接结构如图1所示。
配置的测量设备有两台,SBE49 FastCAT是一款一体化CTD传感器 (Conductivity,Temperature,and Depth Sensor),适用于拖曳体、ROV(Remotely operated vehicles)、AUV或其他自动平台,通过RS232串口获取数据。ADCP(Acoustic Doppler Current Profiler)选用由LinQuest公司制造的高性能声学水流剖面仪FlowQuest300,其工作频率是300 kHz,最大单元层厚度8 m。采用外凸4波束换能器,波束角22°,通讯方式为RS232。
图1 测量子系统硬件结构图
2 软件模块及任务划分
与开放式、模块化硬件结构相结合,软件结构也应该具有开放性、模块化的特征,并且要有很好的实时性,可以有效充分地利用硬件资源。在分析软件结构之前应该首先明确软件要实现的功能。测量子系统软件包括主控制器软件和传感器控制模块软件,后者相对简单,不详述。主控制器软件主要任务是在航行观测的不同阶段,接收通过CAN总线传来的其它单元的命令,解释执行命令,实时回复命令。根据命令要求以不同的频率和方式完成CTD、ADCP的测量,将采集到的温度、盐度、深度数据和海流数据分块存储到大容量Flash。在水面航行阶段,完成GPS定位,通过卫星通讯设备发送特征数据。在测量、存储、发送过程中要访问EEPROM存取系统参数,通过读RTC获取系统时间。
通过上面的描述,可以看出测量主控制器软件必然包括以下模块,用来接收、发送CAN总线信息的CAN收发模块,符合I2C总线规范的读写模块,EEPROM读写模块和RTC读写模块,Flash读写模块,GPS定位模块和卫通发送模块,还有CTD、ADCP采集模块。这些软件模块之间并非完全独立,例如EEPROM读写模块和RTC读写模块操作的基础是I2C总线读写模块,CTD、ADCP采集模块也会调用I2C总线读写模块,而采集模块执行过程中也可能调用EEPROM和RTC读写操作。这些错综复杂的软件模块如何运行在CMX-RTOS上,要通过合理的任务划分和任务调度来实现。
任务的划分基本遵循以下原则:
(1)根据高内聚、低耦合的原则,逻辑上相对独立和功能联系密切的操作可划为一个任务。
(2)尽可能将使用相同资源的模块合并,这样可以减少任务之间的通信,也减少了不同任务之间因为使用同一互斥资源而频繁进行任务切换,降低了系统的运行负担。例如,在测量子系统中,可以将对同一设备的不同操作合并在同一任务中。
(3)有周期行为的过程也可以作为定义任务的基础,不同周期行为可以分别组织在不同的任务中。使用操作系统的定时调度机制可方便实现调度。
(4)大计算量功能也作为单独的任务。
另外,为了能让任务协调运行以及实现测量子系统与其它子系统的连接,可能需要引入其它任务。
根据前面给出的任务划分原则,自航行观测平台测量子系统主控制器软件大致可分为以下任务:
(1)轮询任务,定义为tPoll。在其他任务不运行时执行查询操作,接收来自CAN总线的命令,接收并处理来自串口的调试命令。执行调试命令时可以根据不同的命令访问到不同的软件模块,例如既可以访问CTD采集模块也可以访问到GPS定位模块。该任务是常职守任务,定义为低优先级50。
(2)CAN命令处理任务,定义为tCAN_Code_Pro。对轮询任务接收到的CAN命令分析处理,根据控制码不同执行不同的操作,可以访问到多个软件模块,必要时唤醒其他相关任务,具有调度任务的功能。被轮询任务唤醒,优先级高于轮询任务,设定为45。
(3)CTD连续测量任务,定义为tCTD_Samp_Ctns。以指定的频率向CTD采集控制器发送采集命令,获取数据并存储。采集数据时访问到的软件模块是I2C总线读写模块、存储数据时需要访问EEPROM读写模块、RTC读写模块和Flash读写模块。该任务由CAN命令处理命令唤醒。优先级设定为30,任务周期由采集频率决定,不同航行阶段采集频率不同。
(4)ADCP连续测量任务,定义为tADCP_Samp_Ctns。以指定的频率向ADCP采集控制器发送采集命令,获取数据并存储。访问到的软件模块和优先级与CTD连续测量任务相同。任务周期由采集频率决定。
(5)GPS连续定位及卫通发送任务,定义为tGPS_Samp_Ctns。在水面航行阶段获取GPS位置信息,并向卫星发送特征数据。访问到的软件模块有EEPROM读写模块、RTC读写模块、Flash读写模块、GPS定位模块和卫通发送模块。在航行观测过程中属于相对关键的任务,优先级设定最高20。
任务、软件模块和操作系统之间的关系如图2所示。箭头指向为调用关系。
3 软件动态模型及实现
3.1 动态模型
在对测量子系统主控制器软件静态模型分析的基础上,应该描述该系统的动态模型。实时多任务操作系统的引入,在提高系统并发性、实时性和硬件资源利用率的同时,增加了软件系统的复杂性,不仅代码设计复杂,对软件动态行为的描述也变得困难。多任务系统动态模型描述主要有以下需求:
(1)能够较完备地描述出系统的状态和状态转换条件。
(2)能够描述多个任务之间的同步关系和系统的并发特性。
(3)由于某一时刻可能有多个任务竞争处理器,使得系统运行状态具有不确定性,动态模型应该可以表示这种不确定性。
图2 多任务软件静态模型
简单的流程图和状态图很难描述出多任务软件系统的并发性和随机性。要准确描述多任务测量系统的运行过程,需要采用形式化语言,Petri网是研究并发系统的重要建模工具,适合描述具有并行行为的系统,能够直观地反映并行、同步和资源共享等系统特性.Petri网由库所集、变迁集和有向弧组成。 其中库所集:P={P1,P2,… ,Pn}表示并发任务的状态,变迁集T={T1,T2,…,Tn}表示引发任务状态改变的动作和事件,有向弧A:P×T∪T×P表示库所和变迁之间的连接弧,代表系统的流关系。使用Petri网描述的测量子系统运行状态如图3所示,库所集与变迁集含义见表1、表2。
图3 多任务测量软件动态模型
表1 测量子系统软件动态模型库所含义
表2 测量子系统软件动态模型变迁含义
3.2 多任务系统实现
动态模型给出了多任务软件运行过程中任务同步与调度策略,在CMX-RTOS平台上实现这些策略需要选择合适的操作系统任务调度机制。合适的调度机制可以使有依赖关系的任务按照确定的次序运行,合适的调度机制可以避免任务因为访问互斥资源而发生死锁。CMX-RTOS提供了事件管理、队列管理、消息管理等多种任务同步机制。结合本系统设计的特点,采用了事件管理函数作为任务同步的主要调度方式,用资源管理函数实现对临界资源的互斥访问,用任务调度函数实现任务的唤醒和结束。
需要指出的是在CTD,ADCP测量任务实现过程中,要通过I2C总线传输命令和数据,受传感器采样频率的限制,测量任务可能长时间占有I2C总线,而I2C总线是多个任务都要访问的互斥资源,长时间独占会严重降低系统的实时性。为此,测量任务将发送命令和读取数据分成两个阶段,采用非阻塞通信方式,向传感器模块发送命令结束后释放I2C总线资源,等待系统采样间隔到再重新获取I2C总线资源,读取采样数据。这样可以大大提高多任务系统的运行效率。
另外,多任务系统中多个中断的协调处理也是必须要考虑的,一般来说,对系统功能和性能影响较大的关键中断要是高优先级,其他中断优先级可以相对较低,但如果中断优先级设定太多,出现频繁的中断嵌套也会降低系统的稳定性。在本系统中,决定系统节拍的Timer0中断和CAN总线中断设定为高优先级,且分配不同的中断寄存器组,I2C总线中断和串口中断等设定为低优先级中断。
4 实验及验证
在小型自主航行观测技术课题工程实践中采用了Philips半导体的P87C591作为主控制器,选择Cygnal公司的C8051F310°作为传感器控制器,两个处理器同时兼容主从式I2C总线且性能稳定。在主控制器端,接有IMCT GPS卫星通信系统和大容量Flash芯片,保证了数据的存储和传输。
图4 多任务测量系统实验数据
小型自主航行观测平台进行了宽水域水面航行实验,期间测量子系统进行了同步测量实验,获取了小型自主航行观测平台在航行过程中的GPS信息和CTD数据如图4所示。数据完整、可靠,系统运行稳定,验证了测量单元实时多任务软件系统设计的正确性和实用性。
5 结束语
现场试验证明,基于CMX-RTOS的测量子系统实时多任务软件设计满足应用需求,可以实现多个任务的同步、并发运行,且运行稳定。相对单任务软件系统,显著地提高了系统的并发性和实时性,提高了对系统硬件资源的利用率。基于多任务的软件设计才采用了开放式的结构,后续开发相对容易,具有很好的可扩展性和通用性。在相关系统应用领域具有重要实用意义。
[1]蒋新松,封锡盛,王棣棠.水下机器人[M].沈阳:辽宁科学技术出版社,2000.
[2] 张宏伟,王树新,梁捷,等.基于 CAN 总线的自治水下机器人控制系统[J].机器人,2006,28(4):448-452.
[3]曹宁.组合导航系统中实时多任务的软件设计[J].导航,2007(2):35-40.
[4]CMX system user manual.CMX Systems,Inc.2000.
[5]phyCORE-P8xC591 Hardware Manual.PHYTEC Technology Holding Company.2001.
Real-time Multitask Software Design for the Measurement Subsystem of Autonomous Underwater Vehicle
LV Jiu-hong,LIANG Jie,LIU Jie,JIANG Min,YANG Xiao,LU Ya-juan
(National Ocean Technology Center,Tianjin 300112,China)
To solve the problem of synchronization and real-time sampling in multi-sensor measure system which use a single task software,a real-time multitask operating system is introduced.Using the idea of open,task-oriented and modularization,the multitask software of measurement subsystem of an autonomous underwater vehicle (AUV)is researched,whose static structure and dynamic model is described.Parallel sampling of multi-sensor is achieved and the validity of real-time data is improved.
AUV;multi-sensor sampling;real-time;multitask;CMX-RTOS
P715.5
B
1003-2029(2010)04-0015-05
2010-04-28
国家高技术研究发展(863)计划资助项目(2006AA09A312)
吕九红(1981-),男,硕士,主要研究方向为水下机器人