Document
拖动滑块完成拼图
首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

用于分布式软件组件之间的通信中错误处理的方法和设备 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

摘要:通信中错误处理的方法和设备,通过从用于临时数据存储的第一数据区中读取和将所读取数据存储在用于临时数据存储的第二数据区将待传达的数据在数据传输间隔中在第一任务和第二任务间传达,预给定用于执行第一任务的时间间隔和用于执行第二任务的通信间隔,a如果在时间上直接在通信间隔前的数据传输间隔在时间上直接在通信间隔前的通信间隔的时间间隔中的最后时间间隔已开始,且超过最后时间间隔终止时间点继续进行,则在通信间隔中省略第一任务时间上第一次的执行;或b)如果第二任务的在时间上直接在第二任务前的执行在时间上直接在通信间隔前的通信间隔已开始且超过之前的通信间隔终止时间点继续进行,则在通信间隔中省略第二任务的执行。

主权项:1.一种用于在通信中的错误处理的方法,其中在所述方法情况下,通过从用于临时的数据存储的第一数据区中读取并且通过将所读取的数据存储在用于临时的数据存储的第二数据区中来将待传达的数据在数据传输间隔K中在第一任务T1和第二任务T2之间传达,其特征在于,预给定用于所述第一任务T1的执行的时间间隔I1,并且预给定用于所述第二任务T2的执行的通信间隔I2,其中:a如果时间上直接在一个通信间隔I2之前的先前通信间隔I2的其中最后一个时间间隔I1中,在时间上直接在所述通信间隔I2之前的数据传输间隔K就已开始,并且超过所述最后的时间间隔I1的终止时间点t6地被继续进行,则在所述通信间隔I2中省略所述第一任务T1的时间上第一次的执行;或者b如果所述第二任务T2的在时间上直接在所述第二任务T2之前的执行在时间上直接在所述通信间隔I2之前的先前通信间隔I2中已开始,并且超过所述先前通信间隔I2的终止时间点t6地被继续进行,则在所述通信间隔I2中省略所述第二任务T2的执行。

全文数据:用于分布式软件组件之间的通信中错误处理的方法和设备技术领域本发明涉及一种用于在软件组件之间的通信中的错误处理(Fehlerbehandlung)的方法和设备,其中所述软件组件分布在两个或更多个任务上,其中所述任务尤其是在具有不同的预给定的周期时间的时间间隔中被执行。背景技术以由错误引起的方式,周期时间、也即时间间隔的终止可以在如下任务终止之前被实现,其中所述任务的结果在所述时间间隔的终止时应该被转交给其他任务。对于这样的错误,确定性的(deterministisch)错误处理是值得期望的。发明内容其通过根据独立权利要求的方法和设备被实现。同样地设置计算机程序和计算机程序产品。关于用于在通信中的错误处理的方法而言,预给定用于第一任务的执行的时间间隔,并且预给定用于第二任务的执行的通信间隔,其中在所述方法情况下,通过从用于临时的数据存储的第一数据区中读取并且通过将所读取的数据存储在用于临时的数据存储的第二数据区中来将待传达的(zukommunizierend)数据在数据传输间隔中在第一任务和第二任务之间传达,其中:a如果在时间上直接在通信间隔之前的数据传输间隔在时间上直接在所述通信间隔之前的通信间隔的时间间隔其中最后的时间间隔中已经开始,并且超过所述最后的时间间隔的终止时间点(Endzeitpunkt)地被继续进行,则在所述通信间隔中省略(auslassen)第一任务的时间上第一次的执行;或者b如果第二任务的在时间上直接在所述第二任务之前的执行在时间上直接在通信间隔之前的通信间隔中已经开始,并且超过所述之前的通信间隔的终止时间点地被继续进行,则在所述通信间隔中省略所述第二任务的执行。所述时间间隔和所述通信间隔是调度器(Scheduler)的逻辑间隔,所述逻辑间隔能够基于固定的时间片(Zeitscheibe)并且不能够被推移(verschieben)。然而,调度器的所说明的实施(Implementierung)并不强制遵守所述逻辑间隔,而是在调度器在实际间隔之后紧接着的新的间隔中也实际地实施(durchführen)任务执行的情况下,才将所述实际间隔视为结束的。由此,确定性的通信在负载峰值(Lastspitzen)的情况下也是可能的,其中所述负载峰值如此影响计算系统,使得任务不能够遵守为了执行所述任务而分配给所述任务的逻辑间隔的终止(Ende)。这以不同的特定细节、根据具有不同的、预给定的、统计学上的任务分布和任务调度的类别来实现有效的错误处理。这是用于任务执行的偶发失效(sporadischerAusfall)的有效的错误处理方案。优选地,如果第一任务的执行比第二任务的执行更晚地终止,则数据传输间隔的开始通过第一任务的执行的终止来被触发;或者如果第二任务的执行比第一任务的执行更晚地终止,则所述数据传输间隔的开始通过第二任务的执行的终止来被触发。优选地,如果第一任务的执行持续(andauern)超出如下通信间隔的终止:在所述通信间隔中所述第一任务的执行已开始,并且如果数据传输间隔的开始通过第一任务的执行的终止来被触发,则在所述第一任务的执行之后紧接着的所述第二任务的执行被延迟(verzögern)至所述数据传输间隔的终止。因此并不出现不一致的(inkonsistent)数据。优选地,如果第二任务的执行持续超出如下通信间隔的终止:在所述通信间隔中所述第二任务的执行已开始,并且如果所述数据传输间隔的开始通过所述第一任务的执行的终止来被触发,则在所述通信间隔中不发生(unterbleiben)所述数据传输间隔的触发。因此并不出现不一致的数据。优选地,在数据传输间隔中待传达的数据通过在用于执行第一任务和第二任务的硬件之外的一个或多个实体(Instanz)来被传达。通过将通信任务转移到(Auslagern)一个或多个实体,确定性的处理(Abarbeitung)例如通过直接存储器存取(DirectMemoryAccess)、即DMA或者中断服务例程(InterruptServiceRoutine)、即ISR来被保证。所提到的错误处理方案确保:随时保证数据一致性。只有在数据一致性在其他方面不再能够被保证的情况下,才取消用于通信的事务(Transaktion)或任务的执行。错误处理方案实现:通过各个任务执行的失效和通过用于提高总的系统的鲁棒性的各个事务的失效来减小系统负载。错误处理方案可以访问调度信息,以便识别运行时间错误,例如多次的进程激活(Prozessaktivierung)。优选地,通信间隔的持续时间是用于时间间隔的持续时间的整数倍,其中通信间隔包括多个时间间隔,其中多个时间间隔其中的最早的时间间隔与通信间隔同时地开始。因此,逻辑间隔是同步的。优选地,在通信间隔期间,至少一个时间间隔开始,其中时间间隔在时间上并不重叠,其中所述数据传输间隔要么在第一任务的第一次执行之前在所述多个时间间隔其中的最早的时间间隔中终止,要么在第一任务的最后一次执行的终止之后在所述多个时间间隔其中的最晚的时间间隔中开始。通过合作的调度(kooperativesScheduling)来保证:所述通信在第一任务执行在新的间隔中发生之前完全地结束。在抢先调度(präemptiveScheduling)中,通过调度器保证:并不通过所参与的进程而发生中断并且必要时排挤(verdrängen)具有更低优先级的进程。优选地,根据第一进程的执行的第一状态并且根据第二进程的执行的第二状态来确定状态变量,其中数据传输间隔根据状态变量的值来被开始。状态变量例如借助用于第一状态的第一状态计数器的第一计数器读数来确定并且借助用于第二状态的第二状态计数器的第二计数器读数来确定。有利地,如果因为应该在通信间隔期间运行(ablaufen)的第一进程之一在除了应该在所述通信间隔期间运行的第一进程其中的最后的进程例外的情况下并不在被分配给所述进程的第一时间间隔终止时被终止,使得第一进程之一在所述通信间隔中失效,并且使得第一任务的执行因此失效,则第一状态计数器被校正(korrigieren),其中第一状态计数器被校正为所述第一状态计数器在执行已经失效的第一任务的情况下可能具有的状态。有利地,状态变量根据如下优先级来被确定,其中所述优先级被分配给第一任务和第二任务,其中如果最低的优先级被分配给的任务作为最后的任务在通信间隔之一中被执行,则如下数据传输间隔的开始被推移到紧接着接下来的通信间隔,其中所述数据传输间隔紧接在具有最低的优先级的任务的终止之后。具有最高优先级的任务在所述时间间隔中最先地或者与其他任务同时地被激活。如果所述通信间隔已经结束(vorübersein),则具有最低优先级的任务也被继续进行。所述通信接下来在所述数据传输间隔中进行。关于用于在通信中的错误处理的设备而言,设置处理器和至少一个临时的数据存储器,其被构造用于,通过从至少一个临时的数据存储器的第一数据区读取并且通过将所读取的数据存储在至少一个临时的数据存储器的第二数据区中来在第一任务和第二任务之间根据所述方法之一在数据传输间隔中将待传达的数据传达。有利地,所述设备包括用于借助直接存储器存取、即DMA或者借助中断服务例程来传达待传达的数据的模块。附图说明其他有利的构型方案从以下描述和附图中得出。在附图中:图1示意性地示出任务的时间受控的第一行为;图2示意性地示出第一错误处理方案;图3示意性地示出第二错误处理方案;图4示意性地示出任务的时间受控的第二行为;图5示意性地示出第三错误处理方案;图6示意性地示出第四错误处理方案;图7示意性地示出任务的时间受控的第三行为;图8示意性地示出第五错误处理方案;图9示意性地示出第六错误处理方案;图10示意性地示出用于通信的设备。具体实施方式任务是在运行时间的计算机程序,其中由操作系统对所述计算机程序的执行(Ausführung)通过确定的活动来动态地监督(kontrollieren)。由操作系统的任务控制装置来管理任务,所述任务控制装置也被称为调度器。所述任务控制装置能够要么对任务一直进行计算,直到该任务终止;要么负责于,分别在短的持续时间之后使正在运行的任务被中断。任务控制装置可以因此在不同的激活的任务之间来回切换。任务可以是不同长的并且在不同的时间点开始。为了任务的时间上的执行,在任务控制装置中设置用于第一任务的周期性执行的反复的(wiederkehrend)时间间隔,并且设置用于第二任务的周期性执行的反复的时间间隔。在示例中,用于第二任务的时间间隔的持续时间比用于第一任务的时间间隔的持续时间更长。例如,用于第一任务的时间间隔具有5ms的长度。例如,用于第二任务的时间间隔具有10ms的长度。所述时间间隔是调度器的逻辑间隔,其中所述逻辑间隔能够基于固定的时间片并且并不能够被推移。在任务中的软件组件可以相互交换数据。为了在所述任务之间的通信,可以将数据中间存储在临时的数据存储器中、尤其是缓冲区(Buffer)中。为了通信,例如通过从第一缓冲区读取并且通过将所读取的数据存储在第二缓冲区中来将待传达的数据在数据传输间隔中在第一任务和第二任务之间传达。在示例中,给第一任务分配第一通道,其具有用于仅仅读的访问的第一个5ms的缓冲区和用于读和写的访问的第二个5ms的缓冲区。在示例中,给第二任务分配第二通道,其具有用于仅仅读的访问的第一个10ms的缓冲区和用于读和写的访问的第二个10ms的缓冲区。一般而言,可以针对数目为n个的任务来设置具有2n个这样的缓冲区的n个通道。根据接下来的示例所说明的调度器的实施方案并不强制遵守逻辑间隔,而是在调度器在实际间隔之后紧接着的新的间隔中也实际上实施任务执行的情况下才将所述实际间隔视为结束的。一般而言,在任务之间的通信中的错误处理中能够将下文中说明的错误情况分类。调度错误:a)调度是不完全的或者是非确定性的;b)任务并不被激活(已经被省略);c)任务是自发(spontan)激活的;d)通道的缓冲区在其被初始化之前被使用。与负载有关的错误:a)任务终止被超出(在多次任务激活的情况下);b)通信并非已经在最后的数据传输间隔中被终止;c)通信并非已经在最后的数据传输间隔中被执行。存储器错误:a)通道状态是被损坏的。调度错误a)至c)可以仅仅借助外部的时间参照(Zeitreferenz)、例如由时钟或计数器来识别。剩余的错误可以可靠地借助通道状态机来识别。以下示例基于所述通道状态机来描述通信方法和错误识别以及错误修复(Fehler-Heilung)的细节。在计算系统中基于调度信息来选择通信方法和或错误处理方案的算法使用任务到核心的分配、调度类型以及参与通信的任务的优先级和通过在系统中的激活模式(Aktivierungs-Muster)进行的可能的顺序执行,其中所述调度类型例如是抢先的或合作的。确定类别“并发级别”。给所述类别分配通信方法和或相应的错误处理方案。“并发级别(ConcurrencyLevel)”的可能类别是:CooperativeCoreLocal(合作核心本地):参与通信的任务具有仅合作的调度并且在相同的计算核心上被执行。PreemtiveCoreLocal(抢先核心本地):参与通信的任务具有抢先调度并且在相同的计算核心上被执行。ParallelCrossCore(并行交叉核心):任务在至少两个计算核心上被执行。SequentialCoreLocal顺序核心本地:任务顺序地在相同计算核心上被执行。SequentialCrossCore(顺序交叉核心):任务顺序地在至少两个计算核心上被执行。根据图1来描述针对在类别“CooperativeCoreLocal(合作核心本地)”中的通信的通信方法。所述通信方法实现:通信负载到所有参与的任务上的分布。通信行为实现:在实时系统中的有效的确定性的通信。在此,状态变量S被使用用于确定通信时间点。状态变量S可以表现(annehmen)以下状态之一:所述状态在下文中也被表示为所述状态变量的阶段(Phase)。PROC_ACTIVE:所参与的任务其中至少一个任务使用在缓冲区中所提供的数据。读缓冲区的改写出于一致性原因是不容许的。PROC_COMPLETE:所有任务已经将在逻辑间隔中需要的数目的激活(在考虑可能的错误情境(Fehlerszenarien)的情况下)结束并且所提供的数据在所述逻辑间隔中不再被需要。TRANS_ACTIVE:各个任务的读缓冲区被更新。利用所含的数据进行的计算出于一致性原因是不容许的。TRANS_COMPLETE:缓冲区的更新被结束。数据可以被使用用于计算。但是没有任务是激活的。在通信间隔中,状态变量S经历状态PROC_ACTIVE、PROC_COMPLETE、TRANS_ACTIVE、TRANS_COMPLETE,以所述顺序来经历。所述状态PROC_COMPLETE和TRANS_COMPLETE可以被跳过。在每个通信间隔中,应该执行数据传输间隔K。在数据传输间隔K期间,以写和或读的方式来访问所述缓冲区,以用于更新所述缓冲区。所述通信间隔如在接下来的示例中所描述的那样与调度器的逻辑间隔同步地被限定。在所描述的示例中,如果至少一个任务被执行,则状态变量S于是总是被置于状态PROC_ACTIVE。状态变量S在数据传输间隔K期间被置于状态TRANS_ACTIVE。在结束通信间隔的所有执行之后设置(setzten)状态PROC_COMPLETE。在数据传输间隔终止之后才设置状态TRANS_COMPLETE。对于周期性发生的通信,由应该相互通信的间隔T1,T2,…Tn来计算通信间隔I2,作为最小公倍数,KGV。Tn表示任务n的间隔。逻辑间隔在时间上与各个任务的周期(Periode)同步运行地被限定。任务由调度器来激活。直至通信间隔I2的终止,所有任务和数据传输间隔K应被运行。分别给任务分配最后期限,所述任务必须直至所述最后期限被终止。如果任务的计算在其激活之后并不能够及时地在分配给所述任务的最后期限之前被终止,则并不通过调度器来进行所述任务在其之后接着的激活。如果虽然所述任务的计算在其激活之后及时地在分配给所述任务的最后期限之前被终止,然而在所述通信间隔I2中设置的数据传输间隔K并不被终止,则需要用于所述通信的错误处理。针对来自图1中的示例适用于通信间隔:I2=KGV(10ms,5ms)=10ms。代替KGV也可以使用其他公倍数。在下文中,根据图1来描述:状态变量S的阶段如何顺序地被经历。状态变量S根据第一任务的执行的第一状态并且根据第二任务的执行的第二状态来确定。所述通信在数据传输间隔K中发生,其中所述数据传输间隔根据状态变量S的值来被开始。状态变量S例如借助用于第一状态的第一状态计数器Z1的第一计数器读数(Zählerstand)并且借助用于第二状态的第二状态计数器Z2的第二计数器读数来确定。第一状态计数器可以如在图1所示的那样表现状态2、1、0。第二状态计数器可以如在图1中所示的那样表现状态1、0。第一状态计数器Z1在图1中所示的时间上的变化过程中在左侧以第一计数器读数2开始。在与第一逻辑间隔I1同步开始的时间点t1,第一任务T1的第一次执行开始。在时间点t2、在第一任务T1的第一次执行终止时,第一计数器读数被置于1。在与第一逻辑间隔I1的第一次重复同步开始的时间点t3,第一任务T1的第二次执行开始。在时间点t4、在第一任务T1的第二次执行终止时,第一计数器读数被置于0。接着,在时间点t4,数据传输间隔K被开始。数据传输间隔K在时间点t5终止。在时间点t5,第一计数器读数被置于2。第一逻辑间隔I1的第二次和第三次重复在图1中同样地被示出。在第二次重复中,第一任务T1的第三次执行与第一逻辑间隔I1的第二次重复同步地在时间点t6开始并且在时间点t7终止。第一计数器读数在时间点t7被从2置于1。在第三次重复中,第一任务T1的第四次执行与第一逻辑间隔I1的第三次重复同步地在时间点t8开始并且在时间点t9终止。第一计数器读数在时间点t9被从1置于0。第二状态计数器Z2在图1中在左侧以第二计数器读数1开始。在时间点t1,第二逻辑间隔I2与第一逻辑间隔I1同步地开始。第二任务T2的第一次执行在第一任务T1的第一次执行的终止之后在时间点t2开始,也即,第一任务T1在时间点t1和时间点t2之间作为第二任务T2被处理。第二任务T2的第一次执行在时间点t10终止,在示例中在时间点t3之前终止。在时间点t10,第二计数器读数被从1置于0。在数据传输间隔K终止时,也即在时间点t5,第二计数器读数被从0置于1。第二逻辑间隔I2的重复在图1中同样地示出。在时间点t6,第二逻辑间隔I2的重复与第一逻辑间隔I1的第三次重复同步地开始。第二任务T2的第二次执行在第一任务T1的第三次执行终止之后在时间点t7开始。也即,第一任务T1在时间点t6和时间点t7之间被处理作为第二任务T2。在所述重复中,第二任务T2的第二次执行在时间点t8和t9之间为了第一任务T1的第四次执行而被中断,以便进行第一任务T1的第四次重复。在时间点t9,第二任务T2的重复被继续进行并且在时间点t11终止。在时间点t11,第二计数器读数被置于0并且数据传输间隔K被重复。数据传输间隔K的重复在时间点t12终止。第一计数器读数在时间点t12被置于2。第二计数器读数在时间点t12被置于1。在时间点t1和t4以及t6和t9之间,允许访问第一个5ms缓冲区B51和第二个5ms缓冲区B52。在时间点t1和t10以及t6和t11之间,允许访问第一个10ms缓冲区B101和第二个10ms缓冲区B102。来自5ms任务的访问在示例中在t1和t2、t3和t4、t6和t7以及t8和t9之间、也即在第一任务T1的执行期间进行。来自10ms任务的访问在示例中在t2和t10之间、也即在第二任务T2的第一次执行期间进行以及在t6和t7之间、也即抢先地在第二任务T2的重复的执行之前进行。在数据传输间隔K中,针对所述任务而言对所有缓冲区的访问被禁止。来自所述任务的对第一个5ms缓冲区B51和第一个10ms的缓冲区B101的访问在图1中以单方向箭头被示出。来自所述任务的对其他缓冲区的访问在图1中以双方向箭头被示出。在数据传输间隔K中,由第二个5ms缓冲区B52写到第二个10ms的缓冲区B102上并且由第一个10ms缓冲区B101写到第一个5ms缓冲区B51上。状态变量S在时间点t1和t4之间具有状态PROC_ACTIVE。状态变量S在时间点t4和t5之间具有状态TRANS_ACTIVE,其中在所述时间点t4和t5之间不仅第一状态计数器Z1具有第一状态值0而且第二状态计数器Z2具有第二状态值0。状态变量S在时间点t5和t6之间具有状态TRANS_COMPLETE。状态变量S在时间点t6和t11之间具有状态PROC_ACTIVE。状态变量S在时间点t11和t12之间具有状态TRANS_ACTIVE,其中在所述时间点t11和t12之间不仅第一状态计数器Z1具有第一状态值0而且第二状态计数器Z2具有第二状态值0。状态变量S在图1中自时间点t12起具有状态TRANS_COMPLETE。因为在所述任务的情况下(imKontext)发生通信,PROC_COMPLETE在所述情境中是纯逻辑上的状态,所述状态在从PROC_ACTIVE到TRANS_ACTIVE的直接过渡情况下取消。在任务的实际执行中,实际上对于任务和通信的完全执行必需的通信间隔可能基于所提到的错误而与通信间隔偏差。错误处理根据图2和图3被描述。对于已经根据图1所描述的元素,相同的附图标记被使用并且参照关于图1的描述。与图1中示出的状况不同,如在图2中示出的那样,在第一逻辑间隔I1的第一次重复期间在时间点t20进行第一任务T1的第二次执行的中断。所述第二次执行在时间点t21在时间点t6之前被继续进行并且在时间点t22在时间点t6之前终止。在时间点t6,数据传输间隔K被开始。数据传输间隔K在时间点t23终止,其中所述时间点t23在该示例中处在时间点t6之后。这意味着:数据传输间隔K在第一逻辑间隔I1的第二次重复的开始之后终止。第二任务T2的第二次执行在时间点T23开始。因此,第二任务T2的第二次执行从第一任务T1获得最新的数据。第一任务T1的第三次执行在第一间隔I1的第三次重复中被禁止。因此,第二任务T2的第二次执行在第一间隔I1的第三次重复的结束之前能够被结束。与图1中示出的状况不同,如图3中所示的那样在第一逻辑间隔I1的第一次重复期间在时间点t3进行第二任务T2的第一次执行的中断。第一任务T1的第二次执行在时间点t3之后的时间点t30开始并且在时间点t6之前的时间点31终止,也即在第一逻辑间隔I1的第一次重复期间。在时间点t31,第二任务T2的第一次执行被继续进行。在时间点t6,第二任务T2的第一次执行重新被中断,以便执行第一任务T1的第三次执行直至时间点T32。在时间点T32,第一任务T1的第一次执行被继续进行并且在时间点t8之前的时间点t33终止。在时间点t8,第一任务T1的第四次执行开始。在时间点t34,第一任务T1的第四次执行终止。在时间点t34,数据传输间隔K被开始。数据传输间隔K在时间点t35终止。第二任务T2的第二次执行在第二逻辑间隔I2的重复中被禁止。通过抑制、也即省略相应执行,计算系统确定性地被去负荷。通过处在执行中的任务对逻辑间隔极限的超出在下文中被称为违反任务最后期限(TaskDeadlineVerletzung)。作为对这样的违反任务最后期限的反应,通过通信基础设施来产生下一周期性的任务执行的失效。在此,原则性地应区分两种变型方案。变型方案1:违反最后期限在数据传输间隔中在任务的最后执行情况下发生。在变型方案1中区分为两种另外的变型方案:变型方案1A:所述违反最后期限已经在事务开始之前发生。所参与的任务之一已经利用所述计算在新的间隔中开始。从PROC_ACTIVE进行的状态过渡被过渡(übergehen)到新的数据传输间隔。所述缓冲区的更新取消。变型方案1B:在此,如在图2中所示的那样,已经发生缓冲区的更新。状态TRANS_ACTIVE被设置,而违反最后期限发生。通过合作的调度来保证:在第一任务执行在新的间隔中发生之前所述通信被完全结束。变型方案2:所述违反最后期限并不在任务的最后执行中在数据传输间隔中发生。在变型方案2中,只有通过任务执行的失效所歪曲的(verfälschen)计数器读数被校正。这不具有对所述通信的影响。在图4中,示出用于相应于类别“ParallelCrossCore”的通信的通信方法。关于具有一致的附图标记的元素,也参照关于图1的描述。与之前所描述的示例不同,任务也并行地被计算。此外,通过用于借助直接存储器存取、即DMA或者借助中断服务例程来传达待传达的数据的模块400来在数据传输间隔K中进行通信的实施。第一触发器301用于开始数据传输间隔K,并且第二触发器302用于开始数据传输间隔K的重复。通过将通信任务转移到一个或多个实体、例如DMA硬件或ISR,保证确定性的处理。所述实体可以符合所述要求地同样地被区分优先次序(priorisieren)并且实现:将通信负载分布到其他计算核心或专用的硬件资源。如在图4中示出的那样,所述任务中分别仅仅发生更新的激活。缓冲区的真正更新通过其他实体来实施。因为所有所参与的任务能够完全并行运行,必须在执行开始时检验所述状态。在TRANS_ACTIVE的情况下,所述执行一直被延迟,直至所述数据的更新结束(abgeschlossen)。在使用BasicTaskModell(基础任务模型)的情况下,这通过忙等待(BusyWait)来实现。仅仅在该情况下设置状态TRANS_COMPLETE,在所述状态下发生所述更新。在该情况下,针对相应于类别“ParallelCrossCore”的通信实现用于所述任务执行的偶发失效的错误处理方案。这根据图5和图6进一步被阐述。关于具有一致附图标记的元素,也参照关于图2的描述。与之前所描述的示例不同,第二任务的第一次执行在时间点t2之后的时间点t51被中断并且在时间点t3之前的时间点t52被继续进行。此外,第二任务T2的第一次执行在时间点t3之后和时间点t20之后在时间点t21之前在时间点t53终止。这意味着:第一任务和第二任务在所述示例中至少暂时地并行被计算。此外,通过用于借助直接存储器存取、即DMA或者借助中断服务例程来传达待传达的数据的模块400来在数据传输间隔K中进行通信的实施。第三触发器501用于开始数据传输间隔K,其中所述第三触发器在第一任务T1的第二次执行终止时被触发。在图6中示出如在图3中那样的通信。关于具有一致的附图标记的元素,就此而言参照关于图3的描述。与之前描述的示例不同,第二任务T2的第一次执行并不在时间点t31被继续进行,而是已经在时间点t61就继续进行,其中所述时间点t61处在时间点t31之前并且处在时间点t30之后。此外,第二任务T2的第一次执行并不在时间点t6被中断。这意味着:第一任务和第二任务在所述示例中至少暂时地并行被计算。与之前描述的示例不同,通过用于借助直接存储器存取、即DMA或者借助中断服务例程来传达待传达的数据的模块400来在数据传输间隔K中进行通信的实施。第四触发器601用于开始数据传输间隔K,其中所述第四触发器在第一任务T1的第四次执行终止时被触发。在图7中针对相应于类别“PreemtiveCoreLocal”的通信来示出用于任务执行的偶发失效的错误处理方案的通信。关于具有一致的附图标记的元素,也参照关于图1的描述。在下文中根据图7所描述的示例中,任务顺序地被计算。第一任务T1在此以比第二任务T2更高的优先级来被计算。这意味着:调度器一旦根据其调度而需要计算第一任务T1就中断第二任务T2的执行。在示例中,在图7中示出的时间上的流程中,在时间点t1不仅第一逻辑间隔I1而且第二逻辑间隔I2也同步地开始。第一计数器读数在开始时处在值2,第二计数器读数在开始时处在值1。状态变量S在时间点t1之前具有状态TRANS_COMPLETE并且自时间点t1起具有状态PROC_ACTIVE。基于区分优先次序,第一任务T1的第一次执行在时间点t1开始并且在时间点t2时终止。在时间点T1,第一计数器读数置于1。第二任务T2的执行在时间点t2开始并且在时间点t3被中断,其中在时间点t3,第一逻辑间隔I1的第一次重复与第一任务T1的第二次执行同时地开始。在时间点t4,第一任务T1的第二次执行终止并且第一计数器读数被置于0。第二任务T2的执行在时间点t4被继续进行并且在时间点t5终止,在所述时间点t5,第二计数器读数被置于0。状态变量S在时间点t5被置于值PROC_COMPLETE。因为第二任务T2的执行在第一任务T1的第二次执行之后已终止,所述数据传输间隔K在时间点t6才开始,其中第一逻辑间隔I1的第二次重复和第二逻辑间隔I2的重复同步地在所述时间点t6开始。状态变量S在时间点t6和t7之间被置于TRANS-ACTIVE。第一任务T1的第三次执行在时间点t7时在数据传输间隔K的终止时开始。在时间点t7,第一计数器读数被置于2,第二计数器读数被置于1并且状态变量S被置于PROC_ACTIVE。第一任务T1的第三次执行在时间点t8终止,其中在所述时间点t8,第一计数器读数被置于1。第二任务T2的执行的重复在时间点t8开始并且在时间点t9终止,其中在所述时间点t9,第二计数器读数被置于0。在时间点t9之后接着的时间点t10,第一逻辑间隔I1的第三次重复和第一任务T1的第四次执行开始。在时间点t11,第一任务T1的第四次执行终止。第一计数器读数被置于0。因为第二任务T2的重复在时间点t11已经结束,状态变量S被置于状态TRANS_ACTIVE。通信间隔的重复在时间点t11开始并且在时间点t12终止。在时间点t12,状态变量S被置于状态TRANS_COMPLETE。第一计数器读数被置于值2,第二计数器读数被置于值1。任务对缓冲区的访问如之前所描述的那样在所述任务的执行期间发生。在所述情况下,如下错误处理方案是可能的,其中所述错误处理方案根据图8和图9进一步阐述。关于具有一致的附图标记的元素,关于图8而言也参照关于图2的描述并且关于图9而言也参照关于图3的描述。在图8中所示的示例中,第一任务T1以比第二任务T2更高的优先级来执行。在时间点t22,第一任务T1的第二次执行终止。在时间点t22,数据传输间隔K开始。所述时间点t22在时间点t6不久前,其中在所述时间点t6,第一间隔I1的第二次重复应该开始。数据传输间隔K因此还在第二逻辑间隔I2期间就开始,然而持续还超出时间点t6直至到时间点t23。因此,第二任务T2的重复被延迟至所述数据传输间隔K的终止,也即延迟至时间点t23。尽管第一任务T1的更高的优先级,在该情况下第二任务T2以不被中断的方式被执行,因为第一任务T1在第一间隔I1的第二次重复中被省略。这意味着,第一任务T1虽然以更高优先级被执行,第一任务T1为了错误处理而被省略,如果这是必要的话。在图9中所示的示例中,第一任务T1以比第二任务T2更高的优先级来执行。第二任务T2的执行持续至时间点t33,所述时间点t33处在时间点t6之后、也即在第二逻辑间隔I2的重复之内。第二任务T2被执行至其终止。因为,数据传输间隔K到那时并没有已经被执行,第二任务T2的重复并不被执行,而是被取消,以无关于任务的优先级的方式。如果已识别出调度错误“d)通道的缓冲区在其被初始化之前被使用”、与负载有关的错误“a)任务终止被超出(在多次任务激活的情况下)”、“b)通信并非已经在最后的数据传输间隔中被终止”、c)“通信并非已经在最后的数据传输间隔中被执行”之一、或者存储器错误“a)通道状态被损坏”,则在所述示例中要么使任务失效,要么使所述数据传输间隔K被推移。任务在该示例中由此而失效:并不由调度器来激活所述任务的执行。数据传输间隔在该示例中由此被推移:调度器在适合的时间点激活所述任务的和数据传输间隔的执行。各个通信方法和错误处理方案的应用并不限于所提及的类别“并发级别”。它们也可以在其他情境中或者例如“SequentialCoreLocal”或“SequentialCrossCore”这样的类别中得以应用。所述通信方法和错误处理方案并不限于两个任务之间的通信。在图中,为了一目了然而放弃以多于两个任务进行的执行。用于通信的设备1000在图10中被示出。该设备1000包括处理器1001和至少一个临时的数据存储器1002,其被构造用于,通过从至少一个临时的数据存储器1002的第一数据区B51、B52读取并且通过将所读取的数据存储在至少一个临时的数据存储器1002的第二数据区B101、B102中来在第一任务T1和第二任务T2之间根据所描述的方法在数据传输间隔K中将待传达的数据传达。根据权利要求的所述设备在示例中包括模块1003,所述模块如针对模块400所描述的那样被构造用于,借助直接存储器存取、即DMA或者借助中断服务例程来传达待传达的数据。

权利要求:1.一种用于在通信中的错误处理的方法,其中在所述方法情况下,通过从用于临时的数据存储的第一数据区中读取并且通过将所读取的数据存储在用于临时的数据存储的第二数据区中来将待传达的数据在数据传输间隔(K)中在第一任务(T1)和第二任务(T2)之间传达,其特征在于,预给定用于所述第一任务(T1)的执行的时间间隔(I1),并且预给定用于所述第二任务(T2)的执行的通信间隔(I2),其中:a如果在时间上直接在所述通信间隔(I2)之前的数据传输间隔(K)在时间上直接在所述通信间隔(I2)之前的通信间隔(I2)的所述时间间隔(I1)其中最后的时间间隔中已开始,并且超过所述最后的时间间隔(I1)的终止时间点(t6)地被继续进行,则在所述通信间隔(I2)中省略所述第一任务(T1)的时间上第一次的执行;或者b如果所述第二任务(T2)的在时间上直接在所述第二任务(T2)之前的执行在时间上直接在所述通信间隔(I2)之前的通信间隔(I2)中已开始,并且超过所述之前的通信间隔(I2)的终止时间点(t6)地被继续进行,则在所述通信间隔(I2)中省略所述第二任务(T2)的执行。2.根据权利要求1所述的方法,其特征在于,如果所述第一任务(T1)的执行比所述第二任务(T2)的执行更晚地终止,则所述数据传输间隔(K)的开始通过所述第一任务(T1)的执行的终止来被触发(301、501);或者如果所述第二任务(T2)的执行比所述第一任务(T1)的执行更晚地终止,则所述数据传输间隔(K)的开始通过所述第二任务(T2)的执行的终止来被触发(302,601)。3.根据权利要求2所述的方法,其特征在于,如果所述第一任务(T1)的执行持续超出如下通信间隔(I2)的终止:在所述通信间隔(I2)中所述第一任务(T1)的执行已开始,并且如果所述数据传输间隔(K)的开始通过所述第一任务(T1)的执行的终止来被触发(501),则在所述第一任务(T1)的执行之后紧接着的所述第二任务(T2)的执行被延迟至所述数据传输间隔(K)的终止。4.根据权利要求2所述的方法,其特征在于,如果所述第二任务(T2)的执行持续超出如下通信间隔(I2)的终止:在所述通信间隔(I2)中所述第二任务(T2)的执行已开始,并且如果所述数据传输间隔(K)的开始通过所述第一任务(T1)的执行的终止来被触发(601),则在所述通信间隔中不发生所述数据传输间隔(K)的触发。5.根据权利要求2至4中任意一项所述的方法,其特征在于,在所述数据传输间隔(K)中待传达的数据通过在用于执行所述第一任务(T1)和所述第二任务(T2)的硬件之外的一个或多个实体来被传达。6.根据上述权利要求中任意一项所述的方法,其特征在于,所述通信间隔(I2)的持续时间是用于所述时间间隔(I1)的持续时间的整数倍,其中通信间隔(I2)包括一个或多个时间间隔(I1),其中所述多个时间间隔(I1)其中的最早的时间间隔与所述通信间隔(I2)同时地开始。7.根据上述权利要求中任意一项所述的方法,其特征在于,在通信间隔(I2)期间,至少一个时间间隔(I1)开始,其中时间间隔(I1)在时间上并不重叠,其中所述数据传输间隔(K)要么在所述第一任务(T1)的第一次执行之前在所述多个时间间隔(I1)其中的最早的时间间隔中终止,要么在所述第一任务(T1)的最后一次执行的终止之后在所述多个时间间隔(I1)其中的最晚的时间间隔中开始。8.根据上述权利要求中任意一项所述的方法,其特征在于,根据所述第一任务(T1)的执行的第一状态并且根据所述第二任务(T2)的执行的第二状态来确定状态变量(S),其中所述数据传输间隔(K)根据所述状态变量(S)的值来被开始。9.根据权利要求8所述的方法,其特征在于,如果因为应该在所述通信间隔(I2)期间运行的所述第一任务(T1)之一在除了应该在所述通信间隔(I2)期间运行的所述第一进程(T1)其中的最后的进程例外的情况下并不在被分配给其的第一时间间隔(I1)终止时被终止,使得所述第一任务(T1)之一在所述通信间隔(I2)中失效,并且使得第一任务(T1)的执行因此失效,则第一状态计数器(Z1)被校正,其中所述第一状态计数器(Z1)被校正为所述第一状态计数器(Z1)在执行已经失效的所述第一任务(T1)的情况下可能具有的状态。10.根据上述权利要求中任意一项所述的方法,其特征在于,状态变量(S)根据如下优先级来被确定,其中所述优先级被分配给所述第一任务(T1)和所述第二任务(T2),其中如果最低的优先级被分配给的任务作为最后的任务在所述通信间隔(I2)之一中被执行,则如下数据传输间隔(K)的开始被推移到紧接着接下来的通信间隔(I2),其中所述数据传输间隔(K)紧接在具有最低的优先级的所述任务的终止之后。11.用于在通信中的错误处理的设备(1000),其特征在于处理器(1001)和至少一个临时的数据存储器(1002),其被构造用于,通过从所述至少一个临时的数据存储器(1002)的第一数据区(B51、B52)读取并且通过将所读取的数据存储在所述至少一个临时的数据存储器(1002)的第二数据区(B101、B102)中来在第一任务(T1)和第二任务(T2)之间按照根据权利要求1至10中任意一项所述的方法在数据传输间隔(K)中将待传达的数据传达。12.根据权利要求11所述的设备,其特征在于,所述设备包括用于借助直接存储器存取、即DMA或者借助中断服务例程来传达待传达的数据的模块(1003)。

百度查询: 罗伯特·博世有限公司 用于分布式软件组件之间的通信中错误处理的方法和设备

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。