一种星载时钟冗余系统及方法与流程

文档序号:11826792阅读:397来源:国知局
一种星载时钟冗余系统及方法与流程

本发明涉及航天器控制技术,特别涉及一种星载时钟冗余系统,以及实现星载时钟冗余的方法。



背景技术:

航天器的控制系统负责导航制导姿态控制计算和任务规划管理等关键功能,这些功能的实现对实时性要求极高,计算周期达到毫秒的量级,因此飞行软件必须要由高精度的时钟来驱动运行。

由于航天器的运行环境特别恶劣,强辐射、极端温度使部件容易老化失效,单粒子翻转更可能会使状态瞬间发生不可预期的变化,一旦时钟发生故障,轻则导致控制系统时序发生漂移或紊乱,重则使得飞行软件跑飞或停止运行,后果严重。为了避免上述后果,一般通过多余度控制系统来解决。但是,对于微小卫星这类航天器,由于受空间、经费等因素影响,不适于采用多余度控制系统来避免时钟故障造成的问题。因此,需要针对无冗余控制系统的航天器,研究其时钟失效问题。

在航天控制系统中,飞行控制计算机和惯性测量单元(IMU)是基本配置。其中,惯性测量单元用于测量航天器在惯性空间的加速度、角加速度信息,并发送给飞行控制计算机进行导航计算;为了确保惯性导航精度,一般惯性测量单元的时钟精度都会比较高。飞行控制计算机内标配有两个定时器Timer0和Timer1,可作为计时用。由于惯性测量单元和飞行控制计算机的时钟不同源,且晶振精度不一致,存在相对漂移的现象,如果设计硬件表决电路来实现惯性测量单元时钟、Timer0和Timer1的“三取二”冗余,难度大,效果不好,因此现有单余度控制系统中,均无时钟冗余,实现方案概括起来有两种:

1、飞行控制计算机采用惯性测量单元时钟作为整个控制系统时钟;

2、飞行控制计算机采用内部时钟(Timer0或Timer1)作为控制系统时钟。

方案1能保证控制系统各单机同步运行,时统性更好,但一旦惯性测量单元时钟发生故障,将使得整个控制系统瘫痪,“一损俱损”;方案2实现简单,但会使得飞行控制计算机与惯性测量单元产生时钟差,影响控制精度;另外,上述两个方案都有一个共同的缺点:飞行控制计算机所使用的时钟一旦出现故障,飞行控制系统将崩溃,影响航天器任务的顺利完成。



技术实现要素:

本发明需要解决的技术问题是:针对单余度控制系统的特点,提供了一种星载时钟冗余及其实现方法,充分利用航天器现有的资源,实现了飞行控制计算机的时钟冗余功能,提高了控制系统的可靠性和安全性,而且具有实现成本低、易于工程实现的特点。

本发明的上述目的通过以下方案实现:

一种星载时钟冗余系统,用于为航天控制系统提供系统时钟,所述航天控制系统包括惯性测量单元和飞行控制计算机,且所述飞行控制计算机的CPU自带有两个定时器,分别为第一定时器和第二定时器;

上述星载时钟冗余系统包括主时钟单元、备用时钟单元、第三方时钟单元和时钟冗余控制单元,其中:主时钟单元利用惯性测量单元的惯导时钟为CPU提供外部定时中断;备用时钟单元采用第一定时器为CPU提供内部定时中断,且设置第一定时器的周期Tbackup=T+ΔTth,T为惯导时钟周期,ΔTth为设定的时钟误差门限;第三方时钟单元利用第二定时器进行计时,且第二定时器的周期Tthird满足条件:Tthird>T+ΔTth;时钟冗余控制单元包括主时钟误触发检测模块、主时钟失效检测模块和时钟切换模块;

在CPU产生外部定时中断时,启用主时钟误触发检测模块;所述主时钟误触发检测模块利用备用时钟单元和第三方时钟单元对外部定时中断发生时刻进行计时,并对外部定时中断发生次数进行计数,然后检测惯导时钟是否发生故障而误触发了外部定时中断,并将检测结果发送给时钟切换模块;时钟切换模块接收主时钟误触发检测模块发送的检测结果,并根据所述检测结果选择主时钟单元或备用时钟单元输出系统时钟;

在CPU产生内部定时中断时,启用主时钟失效检测模块;所述主时钟失效检测模块利用第三方时钟单元对内部定时中断发生时刻进行计时,并获取外部定时中断发生次数,然后检测第二定时器是否发生故障而误触发了内部定时中断,并将检测结果发送给时钟切换模块;时钟切换模块接收主时钟失效检测模块发送的检测结果,并根据所述检测结果选择主时钟单元或备用时钟单元输出系统时钟。

上述的星载时钟冗余系统,在CPU产生外部定时中断时,启用主时钟误触发检测模块,检测惯导时钟是否发生故障而误触发了外部定时中断,并发送检测结果给时钟切换模块,然后由时钟切换模选择主时钟单元或备用时钟单元输出系统时钟,具体实现过程如下:

(aa)、在外部定时中断产生时,记录外部定时中断次数n,以及第一定时器的时间tbackup(n)和第二定时器的时间tthird(n);如果第一次产生外部定时中断,即n=1,则时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(ad);如果n>1,则进入步骤(ab);

(ab)、根据步骤(aa)记录的第一定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTbackup,并进行如下判断:

如果ΔTbackup≥T-ΔTth,则判断惯导时钟正常,时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(ad);如果ΔTbackup<T-ΔTth,则进入步骤(ac);

(ac)、根据步骤(aa)记录的第二定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTthird_ex,并进行如下判断:

如果ΔTthird_ex≥T-ΔTth,则对第二定时器进行初始化且设置周期Tbackup=T+ΔTth,时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(ad);

如果ΔTthird_ex<T-ΔTth,则将第二定时器的周期Tbackup设置为T,即Tbackup=T;时钟切换模块选择备用时钟单元为航天控制系统提供系统时钟,然后进入步骤(ad);

(ad)、结束。

上述的星载时钟冗余系统,在CPU产生内部定时中断时,启用主时钟失效检测模块,检测第二定时器是否发生故障而误触发了内部定时中断,并将检测结果发送给时钟切换模块,然后由时钟切换模确定选择主时钟单元或备用时钟单元输出系统时钟,具体实现过程如下:

(ba)、在内部定时中断产生时,获取发生外部定时中断的次数n,并记录第二定时器的时间tthird(m),其中,m为产生内部定时中断的次数;如果第一次产生内部定时中断,即m=1,则时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(bd);如果m>1,则进入步骤(bb);

(bb)、将上一次产生内部定时中断时获取的外部定时中断次数,与当前获取的外部定时中断次数进行比较,并进行如下判断:

如果两次获取的外部定时中断次数不相等,则判断惯导时钟正常,时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(bd);如果两次获取的外部定时中断次数相等,则进入步骤(bc);

(bc)、根据步骤(ba)记录的第二定时器时间,计算上一次内部定时中断与当前内部定时中断之间的时间间隔ΔTthird_in,并进行如下判断:

如果ΔTthird_in≤T,则对第二定时器进行初始化且设置周期Tbackup=T+ΔTth,然后时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(bd);

如果ΔTthird_in>T,则设置第二定时器的周期Tbackup=T;时钟切换模块选择备用时钟单元为航天控制系统提供系统时钟,然后进入步骤(bd);

(bd)、结束。

一种星载时钟冗余方法,用于为航天控制系统提供系统时钟,所述航天控制系统包括惯性测量单元和飞行控制计算机,且所述飞行控制计算机的CPU自带有两个定时器,分别为第一定时器和第二定时器;

上述星载时钟冗余方法包括以下步骤:

(1)、将惯性测量单元的惯导时钟引入到飞行控制计算机,作为CPU的外部定时中断时钟;并采用第一定时器为CPU提供内部定时中断时钟,且设置第一定时器周期Tbackup=T+ΔTth,其中,T为惯导时钟周期,ΔTth为设定的时钟误差门限;另外,设置第二定时器的周期Tthird满足条件:Tthird>T+ΔTth

(2)、检测是否产生外部定时中断或内部定时中断:如果产生外部定时中断,则进入步骤(3);如果产生内部定时中断,则进入步骤(4);

(3)、进行惯导时钟误触发检测,具体检测过程如下:

(3a)、在外部定时中断产生时,记录第一定时器的时间tbackup(n),以及第二定时器的时间tthird(n),其中,n为产生外部定时中断的次数;如果第一次产生外部定时中断,即n=1,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果n>1,则进入步骤(3b);

(3b)、根据步骤(3a)记录的第一定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTbackup,并进行如下判断:

如果ΔTbackup≥T-ΔTth,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果ΔTbackup<T-ΔTth,则进入步骤(3c);

(3c)、根据步骤(3a)记录的第二定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTthird_ex,并进行如下判断:

如果ΔTthird_ex≥T-ΔTth,则对第二定时器进行初始化且设置周期Tbackup=T+ΔTth,然后选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);

如果ΔTthird_ex<T-ΔTth,则将第二定时器的周期Tbackup设置为T,即Tbackup=T;然后选择第二定时器为航天控制系统提供系统时钟,并返回步骤(2);

(4)、进行第一定时器误触发检测,具体检测过程如下:

(4a)、在内部定时中断产生时,获取发生外部定时中断的次数n,并记录第二定时器的时间tthird(m),其中,m为产生内部定时中断的次数;如果第一次产生内部定时中断,即m=1,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果m>1,则进入步骤(4b);

(4b)、将上一次产生内部定时中断时获取的外部定时中断次数,与当前获取的外部定时中断次数进行比较,并进行如下判断:

如果两次获取的外部定时中断次数不相等,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果两次获取的外部定时中断次数相等,则进入步骤(4c);

(4c)、根据步骤(4a)记录的第二定时器时间,计算上一次内部定时中断与当前内部定时中断之间的时间间隔ΔTthird_in,并进行如下判断:

如果ΔTthird_in≤T,则对第二定时器进行初始化且设置周期Tbackup=T+ΔTth,然后选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);

如果ΔTthird_in>T,则设置第二定时器的周期Tbackup=T;然后选择第二定时器为航天控制系统提供系统时钟,并返回步骤(2)。

上述的星载时钟冗余方法,在步骤(3b)中,根据步骤(3a)记录的第一定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTbackup,具体计算公式如下:

ΔTbackup=[tbackup(n)-tbackup(n-1)+Tbackup]%Tbackup

其中,%为求余计算符号。

上述的星载时钟冗余方法,在步骤(3c)中,根据步骤(3a)记录的第二定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTthird_ex,具体计算公式如下:

ΔTthird_ex=[tthird(n)-tthird(n-1)+Tthird]%Tthird

其中,%为求余计算符号。

上述的星载时钟冗余方法,在步骤(4c)中,根据步骤(4a)记录的第二定时器时间,计算上一次内部定时中断与当前内部定时中断之间的时间间隔ΔTthird_in,具体计算公式如下:

ΔTthird_in=[tthird(m)-tthird(m-1)+Tthird]%Tthird

其中,%为求余计算符号。

上述的星载时钟冗余方法,设定时钟误差门限ΔTth=0.1T。

本发明与现有技术相比,具有以下优点:

(1)、本发明在单余度控制系统中,利用惯性单元高精度时钟以及飞行控制计算机内配置的两个时钟,实现了控制系统的时钟冗余功能,即充分利用了惯性单元的高精度时钟,又避免了该时钟故障对控制系统运行的影响,有助于提高控制系统的可靠性和安全性,而且具有实现成本低、易于工程实现的特点;

(2)、本发明把非同源的外部高精度时钟和两个内部时钟分别作为主时钟、备份时钟和第三方时钟,只有当主备时钟不一致时才采用第三方时钟仲裁,能容忍时钟发生单余度故障,达到了“三冗余”的目的,实现简单且代价小;

(3)、本发明把惯性测量单元的高精度时钟作为正常情况下冗余输出时钟,给飞行控制软件使用,相比现有技术,可以统一惯性测量单元与飞行控制计算机之间的时标,提高控制系统的计算精度;

(4)、本发明的时钟冗余系统中各时钟间的误差可控,相比现有技术,既能满足故障判别的要求,又不会因误差范围过于苛刻导致误判,还使得在非同源时钟之间实现冗余成为可能;

(5)、本发明在时钟故障检测过程中,只使用到了当前拍和上一拍的时钟信息,相比现有技术,可以过滤掉不同源时钟之间频标缓慢漂移的问题;

(6)、本发明采用主时钟误触发检测和主时钟失效检测方法,解决了惯性测量单元的时钟产生的外部定时中断被误触发(提前发生)的故障,以及惯性测量单元的时钟失效(未在规定的时间内产生)的故障。

附图说明

图1为飞行器控制系统基本组成框图;

图2为本发明的星载时钟冗余系统的组成框图。

具体实施方式

下面结合附图和具体实例对本发明作进一步详细的描述:

如图1所示,航天控制系统一般均会配置惯性测量单元(IMU)和飞行控制计算机。其中,惯性测量单元具有较高精度的惯导时钟,而飞行控制计算机内含嵌入式CPU,并标配有两个定时器Timer0和Timer1。

本发明提供的星载时钟冗余系统可以为上述的航天控制系统提供系统时钟。如图2所示的系统框图,本发明的星载时钟冗余系统主时钟单元、备用时钟单元、第三方时钟单元和时钟冗余控制单元。其中,时钟冗余控制单元包括主时钟误触发检测模块、主时钟失效检测模块和时钟切换模块。

在主时钟模块中,将惯性测量单元的高精度惯导时钟引入飞行控制计算机,并将其设为飞行控制计算机CPU的外部定时中断。

备用时钟单元在飞行控制计算机的两个定时器Timer0和Timer1中选择一个作为第一定时器,并采用该定时器为CPU提供内部定时中断。为了便于对主时钟单元和备用时钟单元的时钟进行比较,本发明设置第一定时器的周期Tbackup=T+ΔTth,其中,T为惯导时钟周期,ΔTth为设定的时钟误差门限。为了满足时钟故障判别的要求,又不会因误差范围过于苛刻导致误判,可以将该时钟误差门限ΔTth设为惯导时钟周期的10%,例如:在惯导周期T=10ms,设定时钟误差门限ΔTth=1ms,可以确保主时钟单元和备用时钟单元之间的时标误差在±1ms之间。

第三方时钟单元采用另一个飞行控制计算机定时器作为第二定时器,在故障判断中进行计时。为了确保在计时过程中主时钟单元和备用时钟单元的时钟不发生翻转,应该设置第二定时器的周期Tthird尽量大,必须满足条件:Tthird>T+ΔTth;在本实施例中,设定Tthird为1s。

时钟冗余控制单元用于对主时钟单元和备用时钟进行误差判断,主要包括主时钟误触发检测模块、主时钟失效检测模块和时钟切换模块。

在CPU产生外部定时中断时,时钟误差判断和时钟切换的流程如下:

(aa)、在外部定时中断产生时,启用主时钟误触发检测模块,记录外部定时中断次数n,以及第一定时器的时间tbackup(n)和第二定时器的时间tthird(n);如果第一次产生外部定时中断,即n=1,则时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(ad);如果n>1,则进入步骤(ab);

(ab)、根据步骤(aa)记录的第一定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTbackup,并进行如下判断:

如果ΔTbackup≥T-ΔTth,则判断惯导时钟正常,时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(ad);如果ΔTbackup<T-ΔTth,则表示主时钟单元和备用时钟单元之间的时钟误差超出了允许误差范围(ΔTth),此时需根据第三方时钟单元作进一步判断,即则进入步骤(ac);其中,时间间隔ΔTbackup的具体计算公式如下:

ΔTbackup=[tbackup(n)-tbackup(n-1)+Tbackup]%Tbackup

其中,%为求余计算符号。

(ac)、根据步骤(aa)记录的第二定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTthird_ex,并进行如下判断:

如果ΔTthird_ex≥T-ΔTth,则判断备用时钟单元出现故障,需要对第二定时器进行初始化,将其周期仍然设置为Tbackup=T+ΔTth,时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(ad);

如果ΔTthird_ex<T-ΔTth,则判断主时钟单元出现故障,应该将第二定时器的周期Tbackup设置为T,即Tbackup=T;时钟切换模块选择备用时钟单元为航天控制系统提供系统时钟,然后进入步骤(ad);其中,时间间隔ΔTthird_ex的具体计算公式如下:ΔTthird_ex=[tthird(n)-tthird(n-1)+Tthird]%Tthird

(ad)、结束。

在CPU产生内部定时中断时,时钟误差判断和时钟切换的流程如下:

(ba)、在内部定时中断产生时,启用主时钟失效检测模块,获取发生外部定时中断的次数n,并记录第二定时器的时间tthird(m),其中,m为产生内部定时中断的次数;如果第一次产生内部定时中断,即m=1,则时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(bd);如果m>1,则进入步骤(bb);

(bb)、将上一次产生内部定时中断时获取的外部定时中断次数,与当前获取的外部定时中断次数进行比较,并进行如下判断:

如果两次获取的外部定时中断次数不相等,则表示在两次内部定时中断之间正常产生了外部定时中断,因此判断主时钟单元工作正常,即惯导时钟正常,因此时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(bd);

如果两次获取的外部定时中断次数相等,则表示主时钟单元和备用时钟单元的时钟误差超出了允许误差范围(ΔTth),此时需根据第三方时钟单元作进一步判断,因此进入步骤(bc);

(bc)、根据步骤(ba)记录的第二定时器时间,计算上一次内部定时中断与当前内部定时中断之间的时间间隔ΔTthird_in,并进行如下判断:

如果ΔTthird_in≤T,则判断备用时钟单元误触发而提前产生中断,因此对第二定时器进行初始化且设置周期Tbackup=T+ΔTth,然后时钟切换模块选择主时钟单元输出惯导时钟作为航天控制系统的系统时钟,然后进入步骤(bd);

如果ΔTthird_in>T,则表示外部定时中断未在规定的时间内产生,判断是主时钟单元失效,设置第二定时器的周期Tbackup=T;时钟切换模块选择备用时钟单元为航天控制系统提供系统时钟,然后进入步骤(bd);其中,时间间隔ΔTthird_in的计算公式如下:ΔTthird_in=[tthird(m)-tthird(m-1)+Tthird]%Tthird

(bd)、结束。

根据上述的星载时钟冗余系统的处理流程,本发明提供了一种星载时钟冗余方法,具体包括以下步骤:

(1)、将惯性测量单元的惯导时钟引入到飞行控制计算机,作为CPU的外部定时中断时钟;并采用第一定时器为CPU提供内部定时中断时钟,且设置第一定时器周期Tbackup=T+ΔTth,其中,T为惯导时钟周期,ΔTth为设定的时钟误差门限;另外,设置第二定时器的周期Tthird满足如下条件:Tthird>T+ΔTth

(2)、检测是否产生外部定时中断或内部定时中断:如果产生外部定时中断,则进入步骤(3);如果产生内部定时中断,则进入步骤(4);

(3)、进行惯导时钟误触发检测,具体检测过程如下:

(3a)、在外部定时中断产生时,记录第一定时器的时间tbackup(n),以及第二定时器的时间tthird(n),其中,n为产生外部定时中断的次数;如果第一次产生外部定时中断,即n=1,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果n>1,则进入步骤(3b);

(3b)、根据步骤(3a)记录的第一定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTbackup,并进行如下判断:如果ΔTbackup≥T-ΔTth,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果ΔTbackup<T-ΔTth,则进入步骤(3c)。

其中,时间间隔ΔTbackup的具体计算公式如下:

ΔTbackup=[tbackup(n)-tbackup(n-1)+Tbackup]%Tbackup

其中,%为求余计算符号。

(3c)、根据步骤(3a)记录的第二定时器的时间,计算当前外部定时中断和前一次外部定时中断之间的时间间隔ΔTthird_ex,并进行如下判断:

如果ΔTthird_ex≥T-ΔTth,则对第二定时器进行初始化且设置周期Tbackup=T+ΔTth,然后选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);

如果ΔTthird_ex<T-ΔTth,则将第二定时器的周期Tbackup设置为T,即Tbackup=T;然后选择第二定时器为航天控制系统提供系统时钟,并返回步骤(2).

其中,时间间隔ΔTthird_ex的具体计算公式如下:

ΔTthird_ex=[tthird(n)-tthird(n-1)+Tthird]%Tthird

(4)、进行第一定时器误触发检测,具体检测过程如下:

(4a)、在内部定时中断产生时,获取发生外部定时中断的次数n,并记录第二定时器的时间tthird(m),其中,m为产生内部定时中断的次数;如果第一次产生内部定时中断,即m=1,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果m>1,则进入步骤(4b);

(4b)、将上一次产生内部定时中断时获取的外部定时中断次数,与当前获取的外部定时中断次数进行比较,并进行如下判断:

如果两次获取的外部定时中断次数不相等,则选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);如果两次获取的外部定时中断次数相等,则进入步骤(4c);

(4c)、根据步骤(4a)记录的第二定时器时间,计算上一次内部定时中断与当前内部定时中断之间的时间间隔ΔTthird_in,并进行如下判断:

如果ΔTthird_in≤T,则对第二定时器进行初始化且设置周期Tbackup=T+ΔTth,然后选择惯导时钟作为航天控制系统的系统时钟输出,并返回步骤(2);

如果ΔTthird_in>T,则设置第二定时器的周期Tbackup=T;然后选择第二定时器为航天控制系统提供系统时钟,并返回步骤(2)。

其中,时间间隔ΔTthird_in的计算公式如下:

ΔTthird_in=[tthird(m)-tthird(m-1)+Tthird]%Tthird

以上所述,仅为本发明一个具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1