一种基于自监控架构的任务间通讯装置与方法与流程

文档序号:12271239阅读:161来源:国知局
一种基于自监控架构的任务间通讯装置与方法与流程

本发明属于嵌入式计算机的使用技术,具体涉及一种基于自监控架构的任务间通讯装置与方法。



背景技术:

ARINC 659背板数据总线(以后简称:ARINC 659总线)是基于时间触发架构的双-双余度配置的容错串行总线,其设定了发送节点的两个BIU只有在同周期发送同样数据的情况下,才能将数据传送到目标节点。这种情况下,可以将此总线用于安全关键领域的自监控对处理器中的比较监控传输功能。

在安全关键领域,经常使用比较自监控的方式,以判断并隔离计算机系统中的故障,此设计的思路在于,正常情况下,位于自监控对内部的两个处理器,收到同样的输入的情况下,进行解算后,应该得到相同的输出。如果得到不同的输出结果,证明这两个处理器中的一个或者全部存在故障,此时要禁止其自监控处理器对的结果输出到系统外部。

因此在系统设计上,可以将两个处理器作为一条ARINC659总线的输入源,当两个处理器的输出结果完全一致时,才能输出并作用于ARINC659总线的接收单元,并对外进行系统的控制。当两个处理器输出的数据不同,接收端将收不到相应数据,同时起到了自监控对的比较和故障隔离的功能,达到任务级自监控的效果。

为更好发挥计算机性能,通常将运行于其上的软件分解为多个任务,在不同时段共享使用计算机资源,以共同完成特定的系统级功能。由于多个任务是用于实现同一个功能,因此任务之间必然会存在运行的协同,以及信息的交互,即任务间的通讯。

基于任务级自监控的架构,在极大提升了可靠性的同时,对系统的可用性施加了一定的限制。由于要求自监控的不同支路处理器必须在同一时刻给出同样的输出,因此各支路处理器上,任务间通讯的结果也必须保持一致,才能保证不同支路上各任务的输入一致,进而保证在运行正确的情况,两个支路的输出一致。如果两个支路处理器上的任务间通讯不能保持一致,会导致即使两个支路的处理器均工作正常,仍旧会引发系统自监控输出报故的情况,即系统使用中出现了不应该的误报,影响了系统的可用性。

为此,需要提出一种自监控架构下的任务间通讯方法与装置,保证多个自监控支路上,任务间通讯的一致性,从而最终保证自监控系统的可用性。



技术实现要素:

本发明的目的是:在基于自监控架构的支路处理器中,提出一种基于自监控架构的任务间通讯装置与方法。

本发明的技术方案:

提供一种基于自监控架构的任务间通讯装置,其特征在于,包括:

支路间的任务周期同步源模块,以保证支路计算机A和支路计算机B上执行的任务周期性的同步;

任务通讯的发送模块,用来生成通讯消息包中的包序号,并将待发送通讯消息包传递给接收任务;

任务通讯的接收模块,用来接收发送任务传递过来的通讯消息包;

支路间交叉通讯比较模块,用于比较接收到的包序号与本支路内部通讯消息包的包序号是否一致;

支路间交叉通讯通道模块,用于完成支路间的消息交叉通讯,内部具有多个通道。

进一步的,支路间交叉通讯通道模块所拥有的支路间交叉通讯通道,彼此之间是完全独立的,即在使用过程中,彼此不会产生冲突。

提供一种基于自监控架构的任务间通讯方法,其特征在于,包括步骤:

步骤一:支路计算机A支路计算机B上的任务,周期性的进行支路间同步;

步骤二:支路计算机内部进行任务间通讯的过程中,每一个通讯发送任务会在通讯消息包中带一个唯一的包序号,要求至少十个连续的任务间通讯消息包,使用的包序号不会重复;

步骤三:当各支路计算机内部的通讯接收任务接收到通讯消息包后,接收任务会取到一个新的包序号,以这个新的包序号替换掉接收任务内部保存的旧的包序号;

步骤四:支路计算机A内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机B的接收任务,同时支路计算机B内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机A的接收任务;

步骤五:支路计算机A接收任务通过支路间交叉通讯通道,接收支路计算机B发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较,同时,支路计算机B接收任务通过支路间交叉通讯通道,接收支路计算机A发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较;

步骤六:如果支路计算机A和支路计算机B的比较结果均为一致,则本次任务间通讯成功,系统继续正常运行;

步骤七:如果支路计算机A和支路计算机B任意一方的比较结果不一致,则进行通讯发送任务和通讯接收任务间的优先级判断,如果通讯接收任务的优先级低于通讯发送任务的优先级,则进入步骤十三,否则进入步骤十三;

步骤八:各支路计算机内部的通讯接收任务立刻重新接收通讯消息包,接收任务会取到一个新的包序号,以这个新的包序号替换掉接收任务内部保存的旧的包序号;

步骤九:支路计算机A内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机B的接收任务,同时支路计算机B内部的接收任务将记录的任务间通讯消息包序号,通 过支路间交叉通讯通道,发送到支路计算机A的接收任务;

步骤十:支路计算机A接收任务通过支路间交叉通讯通道,接收支路计算机B发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较,同时,支路计算机B接收任务通过支路间交叉通讯通道,接收支路计算机A发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较;

步骤十一:如果支路计算机A和支路计算机B的比较结果均为一致,则本次任务间通讯成功,系统继续正常运行;

步骤十二:如果支路计算机A和支路计算机B的比较结果不一致,则认为自监控系统出现错误,系统报自监控故障;

步骤十三:支路计算机A和支路计算机B内部接收任务的下一个执行周期到来后,各支路计算机内部的通讯接收任务接收通讯消息包,接收任务会取到一个新的包序号,以这个新的包序号替换掉接收任务内部保存的旧的包序号;

步骤十四:支路计算机A内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机B的接收任务,同时支路计算机B内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机A的接收任务;

步骤十五:支路计算机A接收任务通过支路间交叉通讯通道,接收支路计算机B发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较,同时,支路计算机B接收任务通过支路间交叉通讯通道,接收支路计算机A发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较;

步骤十六:如果支路计算机A和支路计算机B的比较结果均为一致,则本次任务间通讯成功,系统继续正常运行;

步骤十七:如果支路计算机A和支路计算机B的比较结果不一致,则认为自监控系统出现错误,系统报自监控故障。

进一步的,每个任务间通讯的接收任务,仅能够与同优先级任务共享使用支路间交叉通讯通道。

本发明的有益效果:通过本发明中提出的方法与装置,对于自监控架构的计算机系统,能够保证不同支路计算机之间,任务间的通讯过程保持一致性,从而保证最终自监控输出的结果,不会因为不同支路计算机上任务间通讯的时序差别,而造成故障的误报。

附图说明

图1为一种基于自监控架构的任务间通讯装置的结构图

图2为一种基于自监控架构的任务间通讯方法流程图

图3为支路间交叉通讯通道模块的原理图

图4为两个支路内进行任务间通讯与支路间交叉通讯的时序图

图5为使用本方法解决低优先级任务向高优先级任务通讯的实例图

具体实施方式

参见图1,为本发明实施例提供的一种基于自监控架构的任务间通讯装置,可以用于基于自监控架构的系统中,本发明实施例的所述装置具体包括:

支路间的任务周期同步源模块1,用于保证两个支路上任务的执行周期的启动于一致时刻,从而使得两个支路的异步度不会太大。在本实施例中,该模块使用ARINC659总线时钟来实现,同时作用于系统两个支路的计算机当中。

任务通讯的发送模块2,被通讯发送任务所使用,用来生成变化的通讯消息包序号,并将待发送消息传递给接收任务。在本实施例中,该模块通过两个支路计算机内部的应用层软件模块实现,其功能按照软件黑板方式,也可以按照软件的队列方式。

任务通讯的接收模块3,被通讯接收任务所使用,用来接收发送任务传递过来的信息包,以及通讯消息包序号。在本实施例中,该模块通过两个支路计算机内部的应用层软件模块实现,其功能与任务通讯的发送模块相对应。

支路间交叉通讯比较模块4,被通讯接收任务所使用,使用支路间交叉通讯通道模块,进行通讯消息包序号的交叉比较,并将比较的结果返回给接收任务。在本实施例中,该模块通过两个支路计算机内部的应用层软件模块实现。

支路间交叉通讯通道模块5,用于完成支路间的消息交叉通讯,内部具有多个通道,每个通道从属于特定的任务。在本实施例中,本模块使用两个支路间的专用通讯FPGA逻辑实现,也可以使用两个支路间的双口RAM来实现。

参见图2,为本发明实施例提供的一种基于自监控架构的任务间通讯方法,可以用于基于自监控架构的系统中。

提供一种本发明实施例的所述方法具体包括:

步骤一:支路计算机A支路计算机B上的任务,周期性的进行支路间同步。在本实施例中,这种同步使用同源ARINC659总线中断来完成。

步骤二:支路计算机内部进行任务间通讯的过程中,每一个通讯发送任务会在通讯消息包中带一个唯一的包序号,要求至少十个连续的任务间通讯消息包,使用的包序号不会重复。在本实施例中,该包序 号可以为一个32位无符号整型数,该包序号要求每次发送结束后都按照某种特定规律进行变化,这种变化可以为每次自加1。

步骤三:当各支路计算机内部的通讯接收任务接收到通讯消息包后,接收任务会取到一个新的包序号,以这个新的包序号替换掉接收任务内部保存的旧的包序号。在本实施例中,如果收到的通讯消息包序号等于上一次收到的通讯消息包序号加1,则认为接收任务收到一包新的消息;若不变,则认为接收任务未收到新的消息;若为其它情况,可认为发送任务发出的一些消息被覆盖。

步骤四:支路计算机A内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机B的接收任务,同时支路计算机B内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机A的接收任务。由于同一优先级的任务彼此不可能互相抢占,因此在本实施例中,具体的,可以让同一优先级任务共享使用同一条支路间交叉通讯通道,即支路间交叉通道与任务的优先级一一对应,任务判断自身的优先级,就可以选择相应的支路间交叉通讯通道进行传输。

步骤五:支路计算机A接收任务通过支路间交叉通讯通道,接收支路计算机B发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较,同时,支路计算机B接收任务通过支路间交叉通讯通道,接收支路计算机A发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较。在本实施例中,在将通讯消息包序号发送给对方支路后,等待对方支路的通讯消息包序号的方式为死等,即如果通讯接收任务一直收不到对方支路发送过来的通讯消息包序号,接收任务将不再进行后续执行,直到该任务触发任务死限超时,引发系统故障停机。

步骤六:如果支路计算机A和支路计算机B的比较结果均为一致,则本次任务间通讯成功,系统继续正常运行;

步骤七:如果支路计算机A和支路计算机B任意一方的比较结果不一致,则进行通讯发送任务和通讯接收任务间的优先级判断,如果通讯接收任务的优先级低于通讯发送任务的优先级,则进入步骤八,否则进入步骤十三。

步骤八各支路计算机内部的通讯接收任务立刻重新接收通讯消息包,接收任务会取到一个新的包序号,以这个新的包序号替换掉接收任务内部保存的旧的包序号;

步骤九:支路计算机A内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机B的接收任务,同时支路计算机B内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机A的接收任务;

步骤十:支路计算机A接收任务通过支路间交叉通讯通道,接收支路计算机B发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比 较,同时,支路计算机B接收任务通过支路间交叉通讯通道,接收支路计算机A发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较;

步骤十一:如果支路计算机A和支路计算机B的比较结果均为一致,则本次任务间通讯成功,系统继续正常运行;

步骤十二:如果支路计算机A和支路计算机B的比较结果不一致,则认为自监控系统出现错误,系统报自监控故障,在本实施例中,自监控系统在故障后进入停机状态;

步骤十三:支路计算机A和支路计算机B内部接收任务的下一个执行周期到来后,各支路计算机内部的通讯接收任务接收通讯消息包,接收任务会取到一个新的包序号,以这个新的包序号替换掉接收任务内部保存的旧的包序号;

步骤十四:支路计算机A内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机B的接收任务,同时支路计算机B内部的接收任务将记录的任务间通讯消息包序号,通过支路间交叉通讯通道,发送到支路计算机A的接收任务;

步骤十五:支路计算机A接收任务通过支路间交叉通讯通道,接收支路计算机B发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较,同时,支路计算机B接收任务通过支路间交叉通讯通道,接收支路计算机A发送过来的任务间通讯消息包序号,并通过支路间交叉通讯比较模块与本支路刚发送出去的任务间通讯消息包的包序号进行比较;

步骤十六:如果支路计算机A和支路计算机B的比较结果均为一致,则本次任务间通讯成功,系统继续正常运行;

步骤十七:如果支路计算机A和支路计算机B的比较结果不一致,则认为自监控系统出现错误,系统报自监控故障。在本实施例中,自监控系统在故障后进入停机状态。

进一步的,每个任务间通讯的接收任务,仅能够与同优先级任务共享使用支路间交叉通讯通道。

支路间交叉通讯通道模块5的独立性原理,在本实例中的表现如图3所示。

一种需要使用本方法和装置的场景如下:对于一个使用ARINC659总线进行任务级自监控的控制计算机系统,其两个支路的处理器,运行完全一致的程序代码。当两个支路处理器最终完成的解算结果完全一致,才能够通过ARINC659总线,向受控系统发送控制命令。

两个支路上运行的功能被分解为多个任务,其中10ms周期任务,其周期与ARINC659的总线周期一致,负责完成ARINC659总线上的数据获取,以及向ARINC659总线输出数据。50ms周期任务则用来完成控制率的解算工作。在这种架构下,要求10ms周期任务在由ARINC659总线上读取了当前被控系统的状态数据后,通过任务间通讯机制,将此数据传递给50ms周期任务,由50ms周期任务进行被控系统的控 制率解算。解算完成后,50ms周期任务再通过任务间通讯机制,将控制命令传递给10ms周期任务,在10ms周期任务中最终将解算出来的控制命令通过ARINC659总线传递出去,最终送到受控系统。

在这种架构下,要求在50ms周期任务中的解算过程,两个支路使用同一拍10ms周期任务取来的ARINC659接收数据作为控制率解算的输入源;在控制率解算结束后,将控制命令传递到同一拍10ms周期任务中对外输出。在这两个约束均能够保证的条件下,才能保证对外输出的一致性。

如图4所示,对于10ms周期任务向50ms周期任务发起的任务间通讯,两个支路的实施效果可能出现差异。对于支路A,50ms任务在时刻401A处,进行了接收来自10ms任务发送数据的通讯事件,而在时刻402A处,10ms任务又发送了一包新数。由于401A时刻早于402A时刻,因此支路A上的50ms任务此时收到一包旧数。但是对于支路B,由于处理器与支路A处理器的细微差异,导致50ms任务中,接收10ms任务数据的事件,发生在时刻402B处,而在时刻401B处,10ms任务发送了一包新数。由于402B时刻晚于401B时刻,因此支路B上的50ms任务此时收到一包新数。两个包的包序号不一致,因此在403时刻,两个支路的支路间交叉比较失败,两个支路会立刻分别于404A时刻与404B时刻,再次接收来自10ms任务发送的数据。由于404A时刻晚于402A时刻,404B时刻晚于401B时刻,此时两个支路将收到同一拍10ms任务发送的数据,因此在405时刻,两个支路对包序号的交叉比较成功,10ms周期任务向50ms周期任务发起的任务间通讯成功。

如图5所示,对于50ms周期任务向10ms周期任务发起的任务间通讯,两个支路的实施效果同样可能出现差异。对于支路A,50ms任务在时刻501A处,向10ms任务发送了一包数据,而在时刻503A处,10ms任务接收来自50ms任务的数据。由于501A时刻早于503A时刻,因此支路A上的10ms任务此时收到一包新数。但是对于支路B,由于处理器与支路A处理器的细微差异,导致50ms任务中,向10ms任务发送一包新数的事件,发生在时刻503B处,而在时刻501B处,10ms任务接收来自50ms任务的通讯数据。由于503B时刻晚于501B时刻,因此支路B上的10ms任务此时收到一包旧数。两个包的包序号不一致,因此在502时刻,两个支路的支路间交叉比较失败。由于10ms接收任务的优先级高于50ms发送任务的优先级,因此在10ms任务的下一个执行周期再次进行来自50ms的任务间通讯接收,两个支路会立刻分别于504A时刻与504B时刻,再次接收来自50ms任务发送的数据。由于504A时刻晚于503A时刻,504B时刻晚于501B时刻,此时两个支路将收到同一拍50ms任务发送的数据,因此在505时刻,两个支路对包序号的交叉比较成功,50ms周期任务向10ms周期任务发起的任务间通讯成功。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

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