SOIS中时间访问服务的Simulink仿真

时间:2022-07-01 05:19:29

SOIS中时间访问服务的Simulink仿真

摘要:SOIS(Spacecraft Onboard Interface Services)是关于星上互联协议和软件服务的一种标准,其最外层为用户定义了统一的服务调用接口。时间访问服务是其中最基本的一种。提出了一种对时间访问服务采用Simulink/Stateflow混合建模的方法。

关键词:SOIS; Simulink;时间访问服务;仿真

中图分类号: TP391

文献标识码:A

0引言

随着卫星应用的不断拓展,星载应用软件的快速开发和可重用显得越来越重要;同时,为了缩短卫星本身的研制周期,星上数据管理系统的研究也日益受到重视。但由于各种卫星系统接口的不一致,导致软件不能够重用,可移植性很差。所以,统一星载系统的接口、使接口趋于标准化是星上系统发展的必然趋势,鉴于此,欧空局提出了一种标准SOIS (Spacecraft Onboard Interface Services)[1],期待用这个标准来解决星上互联协议和数据管理问题。

SOIS将各项星载设备和服务接口协议标准化,为传感器访问、系统功能函数等提供标准服务,这使得星载应用软件能够独立发展,与卫星的实现细节无关。这样一来,只需要考虑很少的实现细节,软件就能在不同的卫星上重用。SOIS的目标就是促进软硬件装置在各种卫星通信总线上的协同能力。这种思想带来很多好处,比如,软硬件可以独立发展;卫星上核心软件的开发能依赖于一组基础服务;需求定义活动被大大简化;遵循单一的解决方案可以降低成本;等等。

SOIS服务存在两个服务接口:应用层服务接口和网络子层服务接口。

星上软件通过应用层服务接口使用服务,SOIS应用层提供普通服务,它们把应用软件与卫星的底层拓扑结构和通信体系结构隔离开。这些服务最终依赖于SOIS底层提供的服务来执行卫星通信体系结构中的服务协议。

SOIS应用服务包括:命令和数据获取服务(CDAS);时间访问服务(TAS);消息传输服务(MTS);文件服务(FS)等。

应用层的服务通过调用网络子层的服务来实现。以此确保应用层服务是独立于最底层的数据链接类型。

本文以时间访问服务为例,研究如何使用Matlab中的Simulink工具箱[2,3]对SOIS应用层的服务过程进行Simulink/Stateflow模拟。对软件进行模拟是为了尽早发现软件设计方案和控制逻辑中的问题,减少软件开发后期修改设计和再调试/测试带来的巨大花费。时间访问服务的一般过程包括对时间的测试,等待特定时间的到来,等等,可视为一些状态之间的转换,比如,从启动命令到成功控制,或者报错等等。如果用传统方法来模拟这些内容,则需要丰富的经验和高超的技巧。Simulink是MathWorks公司推出的基于Matlab平台的著名仿真环境。Stateflow是一个交互式的设计工具,它基于有限状态机的理论,可以用来对复杂的事件驱动系统进行建模和仿真。Stateflow与Simulink和MATLAB紧密集成,可以将Stateflow创建的复杂控制逻辑有效地结合到Simulink的模型中。我们用Matlab中的Simulink工具箱对时间访问服务进行模拟仿真,能很直观地看出时间访问服务所提供的功能,该工作能推广到其他服务的模拟仿真和实现。

1时间访问服务

时间访问服务(TAS)是SOIS应用层的一项基本服务[4],它提供星上时间的一个拷贝,它提供给使用者一个本地时间源的一致性访问接口,不用考虑硬件实现。这个服务提供的时间值可能被应用软件用来调度一些操作,如获取影像,或者记录本地生成遥感数据的时间。

相对于中央维持的主时间源,本地时间源是一个自由运行的硬件计数器,它们之间都是相互独立的。而主时钟源更加精确,它是本地时钟源的参考。一般情况下,在星载总线或者局域网上连接着多个处理节点,每个节点都提供一个本地时间源,典型的体系结构如图2。

应用软件使用时间访问服务从本地时间源获取时间,而不是直接从时间计数器的硬件寄存器读取,这样一来,使用时间访问服务使得应用软件更轻巧,易于发展,并独立于星上时间源的硬件实现。

时间访问服务共有三种:“挂钟”服务,实现时这是必选的,它使应用软件能读取所需的时间,该服务接口的原语命令为TAS_TIME_REQ。“闹钟”服务,使应用软件能请求特定时间发出的一个信号,该服务接口的原语命令为TAS_ALARM_REQ,还包括一个取消该服务的原语命令TAS_CANCEL_ALARM_REQ。“节拍器”服务,使应用软件能请求周期性信号,这个周期性信号从一个特定时间开始,使用一个指定的时间间隔,该服务接口的原语命令为TAS_METRONOME_REQ,同样也包括一个取消该服务的原语命令TAS_CANCEL_METRONOME_REQ。另外,原语命令TAS_TIME_IND作为对TAS_TIME_REQ,TAS_CANCEL_ALARM_REQ,TAS_METRONOME_REQ命令的响应,以此来发出当前时间,并说明这个命令请求是否执行成功。

2时间访问服务仿真

下面我们利用Matlab里的Simulink工具箱分别对三种时间访问服务进行仿真。

2.1对挂钟服务进行系统模拟

挂钟功能允许用户获得星上的本地时间。为了获得这个时间,用户发出一个原语命令,TAS_TIME_REQ,这个原语命令没有参数。服务通过使用原语命令TAS_TIME_IND作出响应,包括当前本地时间以及这个时间值的精确性和有效性。

用一个脉冲来实现用户命令,当这个脉冲置上时,表示调用了该服务。图中的控制信号control表明该服务是否成功,这是一个随机量,我们假设服务成功。模拟开始后,有一个时钟模块开始计时,同时,开关信号到达状态流图模块,状态流图模块实现该服务的状态转换过程及结果,当流图内部检测到脉冲信号时,输出一个控制信号给使能子系统的使能端,并利用逻辑控制显示出当前时间。由于Simulink工具箱中时间模块提供从零开始的计时,而且单位是ms,所以最终实现时的数字为从模拟开始到发出命令时的毫秒值,我们认为,从模拟的角度看,这个可以接受。系统仿真模块如图3所示。

2.2对闹钟服务进行系统模拟

闹钟功能允许用户设定一个闹铃,它会在特定的时间触发一个信号。为了获得闹钟,用户发出一个原语命令TAS_ALARM_REQ,该命令包含一个时间参数Alarm_at_time,即用户设定的闹铃时间。服务对这个原语命令做出响应,如果出错,则立即说明出错信息,否则就会在特定时间触发闹铃。用户也可以通过发出原语命令TAS_CANCEL_ALARM_REQ取消先前的闹铃请求,并撤销所有与之相关的状态。这个原语命令没有参数。

用一个脉冲实现用户命令,包括原语命令TAS_ALARM_REQ和TAS_CANCEL_ALARM_REQ。并提供一个对外数据输入,表示设定的闹铃时间。当脉冲置上时,表示调用了该服务。模拟开始后,有一个时钟模块开始计时,同时,设定的时间,控制等信号传到状态图模块,根据所接收的参数,通过状态转换和逻辑控制,在状态图中循环等待设定时间到来,如果在等待过程中又有一个TAS_CANCEL_ALARM_REQ命令脉冲,则状态图立即停止运行,在设定时间到来时也没有任何响应信号;否则,设定时间到来时,状态图输出一个触发信号,这个信号可以作为其他时间的触发器,以实现闹铃的具体操作功能。系统仿真模块如图4所示。

2.3对节拍器服务进行系统模拟

节拍器功能允许用户申请一个周期性的时间提示,它有自己特定的频率,而且从特定的时间开始。

为了获得一个从将来特定时刻开始的周期性时间提示,服务用户发出原语命令TAS_METRONOME_REQ,该命令包含两个参数,一个是用户希望收到周期性提示的开始时刻First_alarm_time,一个是连续时间提示的间隔时间Inter_alarm_interval。服务对这个原语命令做出响应,在特定时间发出一个时间提示,然后以特定频率发出时间提示。为了终止节拍的产生,节拍器服务也给用户提供了原语命令TAS_CANCEL_METRONOME_REQ。TAS_CANCEL_METRONOME_REQ由服务用户发出以取消先前的节拍器请求。这将取消预定或者已经开始的节拍器,并撤销所有与之相关的状态。这个原语命令没有参数。

用一个脉冲实现用户命令,包括原语命令TAS_

并提供两个数据输入接口,分别表示节拍器的开始时间和间隔时间。当脉冲置上时,表示调用了该服务。模拟开始后,有一个时钟模块开始计时,同时,节拍起始时间、间隔时间、控制等信号传到状态图模块,根据所接收的参数,通过状态转换和逻辑控制,在状态图中循环等待设定起始时间到来。设定时间到来时,状态图输出一个触发信号,节拍产生器根据这个信号开始输出特定频率的节拍,输出形式为特定频率的方波序列,以此实现节拍器的具体功能。如果在节拍产生过程中又有一个TAS_CANCEL_METRONOME_REQ命令脉冲,则状态图立即停止运行,节拍器服务停止。系统仿真模块如图5所示。

3结语オ

Simulink/Stateflow工具为系统的仿真模拟提供了强大的功能,并可以利用Simulink和Matlab的集成特点,通过编程的手段对仿真过程和结果进行控制,从而可以提高仿真的能力和灵活性。本文在研究SOIS时间访问服务的基础上,采用Matlab中的Simulink工具箱,对时间访问服务进行模拟,形象直观的显示了服务的流程和结果。本文所做的模拟在某种程度上还不够完善,我们将进一步使所做的模拟与实际情况更贴近,并最终对各种服务都建立良好的模型。

上一篇:农业专家系统的自动测试 下一篇:用于多峰函数优化的改进小生境微粒群算法