计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法.pdf

上传人:a2 文档编号:1688897 上传时间:2018-07-04 格式:PDF 页数:23 大小:722.73KB
返回 下载 相关 举报
摘要
申请专利号:

CN201080026516.3

申请日:

2010.06.08

公开号:

CN102460396A

公开日:

2012.05.16

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/07申请日:20100608|||公开

IPC分类号:

G06F11/07; G05B23/02

主分类号:

G06F11/07

申请人:

宝马股份公司

发明人:

D·凯瑟尔; M·哈尼伯格; M·贝奇勒

地址:

德国慕尼黑

优先权:

2009.06.27 DE 102009030774.5

专利代理机构:

中国国际贸易促进委员会专利商标事务所 11038

代理人:

赵科

PDF下载: PDF下载
内容摘要

本发明涉及计算机辅助地检测尤其是机动车中的由部件(CU1,CU2,...,CU12)构成的系统中一个或多个基于软件的程序运行中的错误的方法,为各部件(CU1,CU2,...,CU12)分别分配一个标志(i),相应运行的程序由程序标识(a,b)指定,部件(CU1,CU2,...,CU12)在程序运行中执行分配给其(CU1,CU2,...,CU12)的程序块,部件(CU1,CU2,...,CU12)至少部分地相互调用。在根据本发明的方法中,在一部件(CUB)被另一部件(CUA)调用时,程序标识(a,b)及错误参数(f)被另一部件(CUA)传输到该部件(CUB),错误参数(f)说明先前在程序运行中是否已识别到错误。如果部件(CUA,CUB)在执行分配给其的程序块时识别到错误,则该部件(CUA,CUB)存储包含程序标识(a,b)、部件(CUA,CUB)的标志(i)和错误状态(e)的主动错误条目,错误状态说明所识别的错误是否是程序运行中的第一个错误。如果调用另一部件的部件(CUA)从该另一部件(CUB)接收到该另一部件(CUB)的标志(p),则该部件(CUA)存储包含程序标识(a,b)、该部件(CUA)的标志(i)和该另一部件(CUB)的标志(p)的被动错误条目。在程序运行中存储一个或多个主动或被动错误条目的部件(CUB)在程序运行中将程序标识(a,b)和该部件(CUB)的标志返回给调用该部件(CUB)的部件(CUA)至少一次

权利要求书

1: 一种用于计算机辅助地检测由部件 (CU1, CU2, ..., CU12) 构成的系统中一个或多 个基于软件的程序运行中的错误的方法, 该系统尤其是在机动车中, 其中为各部件 (CU1, CU2, ..., CU12) 分别分配一个标志 (i), 并且相应运行的程序通过程序标识 (a, b) 来指定, 部件 (CU1, CU2, ..., CU12) 在程序运行中执行分配给其 (CU1, CU2, ..., CU12) 的程序块, 并 且部件 (CU1, CU2, ..., CU12) 至少部分地相互调用, 其特征在于, 在一部件 (CUB) 被另一部件 (CUA) 调用时, 程序标识 (a, b) 以及错误参数 (f) 被所述 另一部件 (CUA) 传输到这一部件 (CUB), 其中错误参数 (f) 说明先前在程序运行中是否已经 识别到错误 ; 如果部件 (CUA, CUB) 在执行分配给其的程序块时识别到错误, 则该部件 (CUA, CUB) 存 储主动错误条目, 该主动错误条目包含程序标识 (a, b)、 该部件 (CUA, CUB) 的标志 (i) 和错 误状态 (e), 错误状态说明所识别到的错误是否是程序运行中的第一个错误 ; 如果调用另一部件的部件 (CUA) 从该另一部件 (CUB) 接收到该另一部件 (CUB) 的标 志 (p), 则该部件 (CUA) 存储被动错误条目, 该被动错误条目包含程序标识 (a, b)、 该部件 (CUA) 的标志 (i) 和该另一部件 (CUB) 的标志 (p) ; 在程序运行中存储一个或多个主动或被动错误条目的部件 (CUB) 在程序运行中将程 序标识 (a, b) 和该部件 (CUB) 的标志返回给调用该部件 (CUB) 的部件 (CUA) 至少一次。
2: 根据权利要求 1 所述的方法, 其特征在于, 部件 (CU1, CU2, ..., CU12) 包括经由相应 接口相互通信的控制器和 / 或控制器零件, 其中主动错误条目和被动错误条目被存储在控 制器的预定存储区中。
3: 根据前述权利要求之一所述的方法, 其特征在于, 程序标识 (a, b) 包括启动程序的 触发部件 (CU1) 的标志 (a) 以及启动时间 (b)。
4: 根据前述权利要求之一所述的方法, 其特征在于, 如果在部件 (CUA) 执行程序块之 后在随后执行的程序块中没有出现错误, 则程序标识 (a, b) 和参数 (r) 被从该部件 (CUA) 调用的部件 (CUB) 返回到该部件 (CUA), 其中参数 (r) 表明所述随后执行的程序块的无错误 性, 并且在该部件 (CUA) 接收到该参数 (r) 的情况下在该部件 (CUA) 中不存储被动错误条 目。
5: 根据前述权利要求之一所述的方法, 其特征在于, 至少有时候在程序运行中对于部 件 (CUA, CUB) 的每次调用在该部件 (CUA, CUB) 中存储调用条目。
6: 根据权利要求 5 所述的方法, 其特征在于, 在整个程序运行期间或只有在程序运行 中出现第一个错误后, 在相应部件 (CUA, CUB) 中存储调用条目。
7: 根据前述权利要求之一所述的方法, 其特征在于, 部件 (CUA, CUB) 中各自的主动或 被动错误条目通过包括多个值的字段来描述, 在该字段中指定程序标识 (a, b), 并且该字段 还包含指定存储该错误字段的部件 (CUA, CUB) 的标志 (i) 的第一值 (i) 以及指定出现该错 误的部件 (CUA, CUB) 的第二值 (p) 和说明该错误条目是被动错误条目还是主动错误条目的 第三值 (e), 其中对于主动错误条目, 第三值 (e) 还指定该错误是否是程序运行中的第一个 错误。
8: 根据权利要求 7 所述的方法, 其特征在于, 在该字段中包含用于指定程序标识的两 个值 (a, b), 其中一个值 (a) 表示触发部件的标志, 而另一个值 (b) 表示启动时间。
9: 一种用于处理由根据前述权利要求之一所述的方法检测到的错误的方法, 其特征在 2 于, 读出所存储的主动错误条目和被动错误条目, 并且对于每个程序标识 (a, b) 由相关的 主动错误条目和被动错误条目生成和输出错误树 (FB), 其中在该错误树中至少包含前后相 继地被调用的部件 (CU1, CU2, ..., CU12) 的调用链, 这些前后相继地被调用的部件 (CU1, CU2, ..., CU12) 包含至少一个具有主动错误条目部件 (CU1, CU2, ..., CU12), 在该错误树 (FB) 中部件 (CU1, CU2, ..., CU12) 被标明在相应部件 (CU1, CU2, ..., CU12) 中在程序运行 中是没有出现错误还是出现第一个错误还是出现后续的错误。
10: 根据权利要求 9 所述的方法, 其特征在于, 利用根据权利要求 7 所述的方法检测错 误, 其中错误树 (FB) 通过以下方式生成 : 从具有主动错误条目的每个部件 (CU1, CU2, ..., CU12) 出发分别逐步地通过错误条目的字段的第一值 (i) 和第二值 (p) 生成前后相继地被 调用的部件 (CU1, CU2, ..., CU12) 的调用链。
11: 一种由部件 (CU1, CU2, ..., CU12) 构成的系统, 该系统尤其是在机动车中, 其特征 在于, 所述系统被构造为使得以根据权利要求 1 至 8 之一所述的方法检测所述系统中一个 或多个基于软件的程序运行中的错误。
12: 一种机动车, 其特征在于, 所述机动车包括根据权利要求 11 所述的由部件 (CU1, CU2, ..., CU12) 构成的系统。
13: 一种用于处理由根据权利要求 1 至 8 之一所述的方法检测到的错误的诊断设备, 其 特征在于, 所述诊断设备被构造为利用该诊断设备执行根据权利要求 9 或 10 所述的方法。

说明书


计算机辅助地检测由部件构成的系统中一个或多个基于软 件的程序运行中的错误的方法

    技术领域 本发明涉及一种计算机辅助地检测 ( 尤其是机动车中 ) 由部件构成的系统中一个 或多个基于软件的程序运行中的错误的方法。
     背景技术 在很多技术领域中, 尤其是在汽车工程领域中, 相应技术设备或车辆的要执行的 功能中的软件成分变得越来越复杂。通常, 软件程序在由多个部件构成的分布式系统中被 执行, 其中在这里以及在下文中, 术语 “部件” 应作宽泛的理解并且可以包括每个具有程序 运行中一个或多个功能性的单元。尤其地, 部件是具有技术功能性的技术部件或具有相应 软件的技术装置 ( 如控制器 ) 或该装置的一部分。部件同样也可以涉及程序语言意义上的 在系统内执行程序块的函数或对象。部件尤其还可以是已知标准 AUTOSAR 意义上的软件组 件。
     软件错误在程序运行中总是在运行时大多零星地发生。此外, 这样的错误的原因 和影响经常不是依赖于时间的。 因此, 在出现软件错误时进行纠错很难, 因为软件错误不能 被再现, 其发生的条件不能被追溯并且通常不清楚应在那里寻找错误的原因。
     在 车 辆 诊 断 领 域 中, 目 前 认 识 的 错 误 以 所 谓 DTC( 诊 断 故 障 码 : Diagnostic Trouble Codes) 的形式存储在相应技术部件或控制器中。 但是在由此产生的错误条目之间 不存在功能联系, 并且错误只能通过出现的时间点来建立联系。
     发明内容
     因此, 本发明的任务在于以适当的方式检测软件程序运行中的错误, 以便随后能 够对所检测到的错误进行改进的诊断来找出错误原因。
     该任务通过按照权利要求 1 的方法或按照权利要求 9 的方法或按照权利要求 11 的系统或按照权利要求 13 的诊断设备来实现。从属权利要求中给出了本发明的扩展方案。
     在根据本发明的方法中, 为系统的部件分别分配一个标志, 并且通过程序标识来 指定相应运行的程序。 其中在相应程序运行中, 部件执行分配个其的程序块, 并且部件在程 序运行中还至少部分地相互调用。
     在根据本发明的方法中, 在一部件调用另一部件时, 程序标识以及错误参数从这 一部件传输到这另一部件, 其中错误参数说明在程序运行中已经识别到错误。如果一部件 在分配给其的程序块运行中识别到错误, 则该部件存储主动的错误条目, 该主动的错误条 目包含程序标识、 部件的标志以及错误状态, 错误状态说明所识别的错误是否是程序运行 中的第一个错误。 主动的错误条目因此涉及在该错误条目也存储在其中的部件中出现的错 误。
     如果在根据本发明的方法中一个已经调用另一部件的部件接收到该另一部件的 标志, 则这一个部件存储被动的错误条目, 该被动的错误条目包含程序标识、 这一个部件的标志以及该另一部件的标志。 通过被动的错误条目相应地指定按照该错误条目的错误是并 非该错误条目存储在其中的部件的另一部件中出现的错误。 被动的错误条目说明以前在程 序调用链中出现错误, 其中通过存储该另一部件的标志可以追踪其中出现错误的调用链。
     根据本发明, 存储程序运行中一个或多个主动的或被动的错误条目的部件在程序 运行中将程序标识和部件标志至少返回给调用该部件的那个部件一次。以该方式, 在程序 运行中确保错误条目的传播以对其追踪。
     根据本发明的方法的特征在于 : 通过相应生成的主动的和被动的错误条目以及在 部件相互调用中传输适当的信息, 软件错误可以被追踪, 并且还可以识别相应的软件错误 是程序运行中的第一个错误还是可能由第一个错误引起的潜在后续错误。
     在本发明的一优选方式中, 各个部件是经由相应接口相互通信的控制器或控制器 零件, 其中主动的和被动的错误条目被存储在控制器的预定存储区中。其中一个有利的应 用情形是在一机动车中联网的控制器中或多个相互通信的机动车中软件程序的运行。
     在本发明的另一优选方式中, 程序标识包括程序在其上被启动的触发部件的标志 以及程序的相应启动时间。
     在根据本发明的方法的另一实施方式中, 如果在部件执行程序块之后在随后执行 的程序块中没有出现错误, 则程序标识和参数从该部件调用过的部件返回给该部件, 其中 参数显示这个随后执行的程序块的无错误性, 并且在该部件中接收到该参数时, 在该部件 中不存储被动的错误条目。 以该方式进在相应的部件中适当地反馈在执行分配给其的程序 块之后没有出现错误并且因此不必在部件中存储被动的错误条目。 该参数因此代替被调用 的部件在出现错误时返回的标记。 在根据本发明的另一变形方案中, 至少部分地在程序运行中对于部件的每个调用 在该部件中存储调用条目。以该方式还可以检测程序运行中无错误地运行的调用链。优选 地, 部件中的调用条目包含调用过该部件的部件的标志。以该方式还可以重构正确运行的 程序块的调用链。 其中存在以下可能性 : 从程序运行中第一个错误的出现开始, 在相应部件 中存储调用条目。在可能的情况下, 甚至在程序整个运行期间存储调用条目。
     在根据本发明的方法的另一特别有利的实施方式中, 部件中各自的错误条目 ( 即 主动的或被动的错误条目 ) 通过包括多个值的字段来描述, 其中在该字段中指定程序标 识, 并且该字段还包含指定存储该错误条目的部件的标志的第一值以及指定其中出现错误 的部件 ( 对于主动的错误条目, 相当于存储错误条目的部件 ) 的第二值以及说明错误条目 是主动的错误条目还是被动的错误条目的第三值, 其中对于主动的错误条目, 第三值还指 定错误是否是程序运行中的第一个错误。其中表述 “第一值” 、 “第二值” 和 “第三值” 仅仅 指定值的相应类型, 而并不必然表明相应值在字段中所位于的位置。
     在根据本发明的方法的其中程序标识由触发部件的标志和启动时间来确定的变 形方案中, 用于描述错误条目的字段包含用于指定程序标识的两个值, 其中一个值表示触 发部件的标志, 另一个值表示启动时间。
     除了上述用于检测错误的方法之外, 本发明还涉及用于处理利用该方法检测到的 错误的方法。其中, 所存储的主动的和被动的错误条目被读出, 并且对于每个程序标识, 由 相应的主动的和被动的错误条目生成和输出错误树, 其中在该错误树中至少包含先后调用 的部件的调用链, 这些先后调用的部件含至少一个具有主动错误条目的部件。其中在错误
     树中部件被标明在程序运行中在相应部件中是没有出现错误还是出现第一个错误还是出 现潜在后续错误。由于该信息, 可以以适当的方式追踪错误树中各个错误如何关联。其中 在第一个错误后出现的后来的错误是潜在后续错误, 并且通过错误树尤其说明相应的后续 错误可能源自哪个初始错误或源自哪个其他潜在后续错误。 如果在错误检测中还应当包含 上述调用条目, 则错误树在可能的情况下还包含其中所有部件已经无错误地执行其程序块 的调用链。
     用于重构错误树的方法的另一变形方案基于通过由上述字段指定的错误条目检 测错误。其中错误树通过以下方式生成 : 从每个具有主动的错误条目的部件出发逐步地通 过错误条目的字段的第一值和第二值确定相应的前后调用部件的调用链。
     除了上述方法之外, 本发明还涉及由部件构成的系统, 该系统尤其是在机动车中, 其中该系统被构造为使得在一个或多个基于软件的程序运行中利用上述用于检测错误的 方法确定错误。
     此外, 本发明还涉及具有这样的系统的机动车。
     而且, 本发明还涉及用于处理利用上述方法检测到的错误的诊断设备, 其中诊断 设备被构造为使得利用该设备执行上述用于处理相应检测到的错误的方法。 附图说明 以下借助于附图详细介绍本发明的实施例。
     在附图中 :
     图 1 示出了按照根据本发明的方法的一实施方式在第一部件调用第二部件中信 息交换的示意图 ;
     图 2 示出了由部件构成的系统及其交互作用的示意图, 以其为基础介绍根据本发 明的方法的一实施方式 ;
     图 3 至 12 示出了示例性地示出图 2 所示系统中的程序运行及其中所使用的基于 根据本发明方法一实施方式的错误检测的示意图 ;
     图 13 示出的示意图表示了对在按照图 3 至 12 的程序运行中所检测的错误的读出 及基于此按照根据本发明的方法的一实施方式生成错误树。
     具体实施方式
     以下基于机动车中由多个控制器构成的分布式系统介绍根据本发明的方法的实 施方式, 其中由各个控制器执行的功能借助于软件来实现。 其中观察软件程序的运行, 在该 运行中, 各个控制器相互调用, 其中按照程序运行, 在一控制器中相应程序功能结束后, 另 一控制器被调用。控制器是指权利要求 1 中所述的部件, 并且在后面也被称为部件。
     各个控制器为了通信而具有特定的接口, 并且相互通过机动车的总线系统通信。 控制器可以是车辆中用于执行功能性的任意单元, 例如是电子发动机控制装置、 安全气囊 控制装置、 ( 例如用于座椅调节的 ) 伺服电动机的控制装置、 汽车中空调机的控制装置、 汽 车中显示单元的控制装置等。 该系统中部件上的程序运行例如是触发基于为汽车中个人所 存储的预先编程的座椅调节来调节座椅的各个自动座椅调节伺服电动机。
     在由部件构成的上述分布式系统中软件程序的运行中存在以下问题 : 不存在适当的机构来在程序运行时检测出现的软件错误, 使得可能追踪错误以确定各个错误的原因或 触发者。根据本发明的下面介绍的实施方式, 检测软件错误并将其存储在各个部件的错误 存储器中, 使得在以后读出错误时可以生成适当的错误树。本发明因此一方面包括以适当 的方式在车辆中检测软件错误的方法, 另一方面包括在车外将所检测的软件错误组合为错 误树的方法。
     图 1 一般性地示出了进行调用的控制器 CUA(CU =控制单元 : Control Unit) 和被 调用的控制器 CUB 之间的通信。在下面, 进行调用的控制器也被称为第一控制器或第一部 件, 被调用的控制器也被称为第二控制器或第二部件。 下面从以下情形出发 : 每个部件能由 一个独特的标志 ( 例如 UUID(UUID =通用唯一标识符 : Universal Unique Identity) 或软 件 ID) 来标识, 并且在程序运行中出现一部件对另一部件的调用。此外还存在适当的机构 来通过部件在程序运行中将所识别到的软件错误存储在部件的错误存储器中。而且, 在这 里所描述的实施方式中, 观察部件的同步调用, 但是本发明类似地也可以应用于非同步调 用。
     根据图 1, 在第一部件 CUA 调用第二部件 CUB 的情况下, 参数三元组 (a, b, f) 作为 附加参数被传输。其中参数 a 表示最初触发运行的程序的哪个部件的标志。如果程序在部 件 CUA 上开始, 则参数 a 与部件 CUA 的标志一致。参数 b 指示程序在触发部件中被启动的 时间, 即汽车中相应客户功能基于该程序被启动的时间。参数 a 和 b 的组合因此表征程序 的当前运行, 并且该组合对应于权利要求 1 中所述的程序标识。参数 f 是错误参数, 并且说 明先前在程序运行中是否已经在一部件中出现错误。如果先前没有识别到错误, 则错误参 数被设置为 0, 而如果出现了错误, 则参数在程序的后面运行中被设置为 1。 在被调用的部件 CUB 已经完成相应的程序功能之后, 将参数 r 以及上述参数 a 和 b 形式的回应返回到第一部件 CUA。其中只要在部件 CUB 中没有识别到错误并且其他后来 调用的部件也没有向该部件通知出现错误, 回应值 r 就始终设置为 0。在所有其他情形下, 参数 r 包含部件 CUB 的标志作为值。
     在程序运行中, 在各个部件的错误存储器中生成相应的错误条目, 其中主动的错 误条目和被动的错误条目都被存储在错误存储器中。 其中如果在相应的部件本身中出现错 误则产生主动的错误条目, 而如果一部件从另一部件接收到另一部件的标志作为回应值 r 则产生被动的错误条目。 因此, 被调用的部件的标志始终作为回应值被传输, 只要在该部件 本身中出现了错误或者只要被调用的部件从对其进行调用的部件接收到不等于 0 的回应 值的话。
     在以下进一步介绍的图 5 至 12 中, 部件的相应错误条目作为具有方括号中的五个 值的向量被给出, 其中一般地, 向量的第一个值用 a 表示, 第二个值用 b 表示, 第三个值用 i 表示, 第四个值用 p 表示, 第五个值用 e 表示, 如图 5 中相应示出的那样。一般地, 因此错误 条目可以被描述为向量 [a, b, i, p, e]。其中 a 又对应于最初触发程序运行的部件, b 对应 于程序在触发部件上启动的启动时间。而 i 表示正好存储相应错误条目的部件的标志。通 过参数 p 确定错误来源。如果部件本身识别到软件错误, 则在这里录入该部件自己的标志。 如果在所观察的部件从由其调用的部件所接收的回应值 r 中传输被调用的部件的标志, 则 该标志被用于参数 p。因此通过参数 p 说明是否存在在所观察的部件中本地出现的错误的 主动的错误条目。
     通过参数 e 说明错误类型。如果在前后相继的部件的调用链中第一次发现软件错 误 (“初始错误” ), 则 e 在相应的部件中被设置为 1。然后, 在调用下一部件时参数 f 被设 置为 1, 并且在所有后续的部件调用中保持为 1。如果部件已经以 f = 1 被调用, 则在被调 用的部件中识别到错误的情况下, e 被设置为 2。由此表示出现的错误是潜在的后续错误。 如果由被调用的部件将错误通知给进行调用的部件 ( 即被调用的部件的标志作为参数 r 被 返回 ), 则要进行被动的错误存储条目, 其中 e 被设置为 0。该错误条目因此表明已经由另 一部件发现了错误。在设置被动的错误条目的情况下, 相应的部件还在其先前还没有传输 回应值 r ≠ 0 的情况下将其自己的标志作为回应值 r 返回到在前的部件。被动的错误条目 的生成是必须的, 以便后来在生成错误树的情况下能生成部件的调用顺序。
     图 2 以由十二个控制器 CU1、 CU2、 ...、 CU12 构成的系统为例示出了基于功能调用 链的程序运行, 其中调用在触发部件 CU1 中同步进行。其中, 程序运行内的调用通过相应的 箭头表示, 为了简明清晰的目的仅仅以附图标记 P 指示了这些箭头中的一些。可以看出 : 程序运行在作为触发部件的部件 CU1 上启动。该部件调用四个部件 CU2、 CU3、 CU4 和 CU5。 然后, 部件 CU3 调用部件 CU7 至 CU8, 然后部件 CU8 调用部件 CU11。此外, 部件 CU5 调用部 件 CU9 和 CU10, 然后部件 CU10 调用部件 CU12。在图 2 中的程序运行中, 在部件 CU3、 CU7、 CU10、 CU11 和 CU12 中程序块工作中出现由相应的锯齿形箭头 Z 表示的错误。 借助于图 2 的部件的系统和所示的程序运行, 现在介绍用于基于相应错误条目以 及上述参数交换 ( 图 1) 检测软件错误的一个实施方式。在下文中, 数字 01、 02、 ...、 12 分 别表示相应部件 CU1、 CU2、 ...、 CU12 的标志。而字母 t 表示程序启动时刻, 即部件 CU1 触 发程序的时刻。
     根据图 3, 部件 CU1 以参数 a = 01、 b = t 和 f = 0 调用部件 CU2。根据图 4, 部件 CU2 响应于调用发送回应值 r = 0 以及触发部件的标志 01 和触发时间 t, 因为在部件 CU2 中 没有出现错误并且该部件不再调用后续的部件。根据图 5, 触发部件 CU1 调用部件 CU3。在 部件 CU3 中本地地出现错误。因此生成错误条目 [01, t, 03, 03, 1]。参数 p 被设置为 03, 因 为错误本地地在部件 CU3 中出现。 参数 e 被设置为 1, 因为其是在程序运行中出现的第一个 错误。在部件 CU1 调用部件 CU3 时, 触发部件 CU1 的标志 01 以及触发时间 t 被传输, 它们 然后作为错误条目中的前两个值, 如图 5 中通过箭头 P’ 所示的那样。因为现在在部件 CU5 中出现错误, 所以除了触发部件 CU1 的标志 01 和触发时间 t 之外, 现在参数 f = 1 也被传 送到部件 CU7。然后, 被调用的部件 CU7 执行其程序功能, 其中本地又出现错误。因此生成 错误条目 [01, t, 07, 07, 2], 其中通过值 p = 07 表明涉及的是本地错误。而通过 e = 2 表 明所出现的错误不是程序运行中的第一个错误, 这意味着其可能涉及可能源自另一部件的 错误的潜在后续错误。
     如在图 6 中所示, 部件 CU7 在执行其程序功能之后除了触发部件 CU1 的标志 01 和 触发时间 t 之外还反馈值 r = 07, 因为在部件 CU7 中出现错误。于是在部件 CU3 中生成错 误条目 [01, t, 03, 07, 0], 其中通过 p = 07 和 e = 0 表明涉及源自由部件 CU7 返回的错误 的被动的错误条目。然后, 部件 CU8 被部件 CU3 调用。其中, 除了触发部件的标志 01 和触 发时间 t 之外还传输参数 f = 1。在部件 CU8 中, 在程序执行时没有出现错误。然后, 部件 CU8 将触发部件的标志 01、 触发时间 t 以及参数 f = 1 在部件 CU11 的调用的情况下传输给 该部件。在部件 CU11 中又出现本地错误。因此在部件 CU11 中产生主动的错误条目 [01,
     t, 11, 11, 2]。其中 e = 2 表明在部件 CU12 中涉及潜在后续错误。
     如图 7 中所示, 由于 CU12 中出现的错误, 除了触发部件的标志 01 和触发时间 t 之 外, 部件 CU11 的标志 11 也被返回给部件 CU8。部件 CU8 又生成 [01, t, 08, 11, 0] 形式的被 动的错误条目。因此, 除了触发部件的标志 01 和触发时间 t 之外, 部件 CU8 的标志 08 也被 返回给部件 CU3。类似地, 于是在部件 CU3 中生成被动的错误条目 [01, t, 03, 08, 0] 之后将 部件 CU3 的标志 03 与触发部件的标志 01 和触发时间 t 一起返回给部件 CU1。因此在 CU1 中生成被动的错误条目 [01, t, 01, 03, 0]。
     根据图 8, 触发部件 CU1 调用部件 CU4, 并且传输其标志 01、 触发时间 t 和参数 f = 1。因为在部件 CU4 中没有出现错误并且程序从那里不会进一步继续, 所以根据图 9, 除了 触发部件的标志 01 和触发时间 t 之外, 从部件 CU4 还返回参数 r = 0 到 CU1。因此在部件 CU1 中不生成进一步的错误条目。
     根据图 10, 部件 CU1 调用部件 CU5, 部件 CU5 无错误地执行其程序功能性并且然后 调用部件 CU9, 部件 CU9 同样无错误地执行其程序功能。其中, 触发部件的标志 01、 触发时 间 t 和 f = 1 又被传输。因为在该程序链中没有出现错误, 所以在部件 CU1、 CU5 和 CU9 中 也不产生主动的错误条目。 在图 11 中表现了相应参数 r = 0 从部件 CU9 返回到部件 CU5。此外, 图 11 还示出 了部件 CU5 对部件 CU10 的调用, 其中触发部件的标志 01 和触发时间 t 以及参数 f = 1 被 传输。因为在部件 CU10 中出现本地错误, 所以在那里存储错误条目 [01, t, 10, 10, 2]。部件 CU10 然后调用部件 CU12, 并且又传输触发部件的标志 01、 触发时间 t 以及参数 f = 1。然 后在部件 CU12 中在程序执行时出现另一本地错误, 从而在那里存储主动的错误条目 [01, t, 12, 12, 2]。
     如图 12 中所示, 在执行部件 CU12 的程序功能之后, 由于在部件 CU12 中出现的错 误, 除了触发部件的标志 01 和触发时间 t 之外还返回部件 CU12 的标志 12 到部件 CU10。因 为参数 r 不等于 0, 所以现在在部件 CU10 中生成形式为 [01, t, 10, 12, 0] 的被动的错误条 目。由于 CU10 中的错误条目, 除了触发部件的标志 01 和触发时间 t 之外, 参数 r = 10 也 被传输到部件 CU5。因为参数 r 又不等于 0, 所以在部件 CU5 中也存储相应的被动的错误条 目 [01, t, 05, 10, 0]。因为这个被动的错误条目, 所以现在除了触发部件的标志 01 和触发 时间 t 之外, 参数 r = 05 也被返回到部件 CU1。然后由于 r ≠ 0, 所以在部件 CU1 中也生成 形式为 [01, t, 01, 05, 0] 的被动的错误条目。
     在图 12 中, 程序执行然后结束。 图 12 因此示出了在上述程序运行中存储在各个部 件中的所有错误条目。这些错误条目然后由相应的诊断设备从部件的错误存储器中读出。 然后生成相应的错误树, 如后面将借助于图 13 描述的那样。
     在读出错误条目之后, 首先得到以下用于各个部件的错误条目的列表 :
     CU1 : [01, t, 01, 03, 0][01, t, 01, 05, 0]
     CU2 :
     CU3 : [01, t, 03, 03, 1][01, t, 03, 07, 0][01, t, 03, 08, 0]
     CU4 :
     CU5 : [01, t, 05, 10, 0]
     CU6 :
     CU7 : [01, t, 07, 07, 2]
     CU8 : [01, t, 08, 11, 0]
     CU9 :
     CU10 : [01, t, 10, 10, 2][01, t, 10, 12, 0]
     CU11 : [01, t, 11, 11, 2]
     CU12 : [01, t, 12, 12, 2]
     在上面的列表中, 所有具有 e = 2 的错误条目 ( 表示潜在后续错误 ) 以斜体写出。 此外, 说明程序运行中第一个错误的错误条目 ( 即对于其, e = 1 成立 ) 以粗体印刷。该错 误条目被存储在部件 CU3 中。为了生成错误树, 首先确定包含本地错误条目 ( 即在程序运 行时在其自身中识别到错误 ) 的那些部件的相应调用链作为入口点 (Einstiegspunkt)。 这 按照上面的列表是所有包含参数 e 不等于 0 的至少一个错误条目的所有部件。根据上面的 列表是部件 CU3、 CU7、 CU10、 CU11 和 CU12。
     从具有至少一个 e ≠ 0 的错误条目的部件的标志出发, 然后通过以下方式构成相 应的调用链 : 对于各个部件寻找包含各自部件的标志作为错误条目中第四个值的那些部 件。也就是说, 从各个部件中错误条目的第三个值 i 出发寻找包含第四个值对应于相应条 目的第三个值的错误条目的部件。对于部件 CU12 于是得到 : 部件 CU10 包含这样的错误条 目, 即 [01, t, 10, 12, 0]。然后以找到的部件类似地进行, 即又寻找从刚找到的部件的错误 条目出发包含第四个值对应于刚找到的部件的错误条目的第三个值的错误条目的部件。 这 一直继续, 直到最后到达触发部件 CU1。根据上面的例子, 因此从所找到的部件 CU10 出发 然后寻找包含的条目具有标志 10 作为第四个值的部件。这根据上面的列表是部件 CU5 的 情形。从这个部件出发寻找包含的条目具有标志 05 作为第四个值的部件。这是触发部件 CU1。以该方式适当地追溯本地错误链。
     根据图 13, 因此对于各个部件 CU3、 CU7、 CU10、 CU11 和 CU12 的标志 03、 07、 10、 11 和 12 得到调用链 A1 至 A5。这些调用链然后在顺序上反转并且组合为错误树 FB, 如通过箭 头 P” 所示。通过存储在部件中的错误条目的序列得到调用序列。例如在部件 CU1 中首先 存储 CU3 的错误条目, 然后存储 CU5 的错误条目。由此得到 : CU1 首先调用部件 CU3, 然后调 用 CU5。在该错误树中, 从最上层级中的标志 01 出发构成到根据被反转的调用链在下面的 层级中存在的标志的连接。在图 13 的错误树中, 因此标志 03 和 05 在调用链 A1 到 A5 的反 转方向上连接到标志 01。错误树 FB 的第二层级因此包含标志 03 和 05。同样地, 然后寻找 下一层级中的标志。其中根据图 13 的调用链得到 : 标志 03 不仅与标志 07 连接, 还与标志 08 连接。而标志 05 只与标志 10 连接。也就是说, 错误树 FB 从标志 03 分支到标志 07 和 08。而错误树从标志 05 只分支到标志 10。对于后面的层级得到 : 标志 08 与标志 10 连接, 标志 10 与标志 12 连接。而标志 07 已经处于相应调用链 A2 的开头。因此错误树从标志 08 出发只分支到标志 11, 从标志 10 出发只分支到标志 12。
     因为对于各个部件已知在该部件中是否没有出现错误 (e = 0) 或第一次出现错误 (e = 1) 或出现潜在后续错误 (e = 2), 所以该信息在错误树 FB 中被适当地编码。这在图 13 的错误树中通过以下方式表明 : 加粗印刷的标志 03 指示在程序运行中第一次出现错误 的部件, 斜体印刷的标志 07、 10、 11 和 12 指示其中出现潜在后续错误的部件, 正常印刷的标 记 01、 05 和 08 指示其中没有出现错误的部件。如从上述实施例中可以看出的那样, 利用所述的以适当的方式在程序运行中对相 应错误条目的存储, 可以生成错误树, 从错误树可以读出潜在后续错误可能是由在前的哪 个错误产生的。其中在图 13 中尤其可以看出 : 部件 CU7 和 CU11 中的错误的原因可能在于 部件 CU3 中的错误, 部件 CU10 和 CU12 中的错误与部件 CU3、 CU7 和 CU11 中的错误无关。
     根据本发明的方法的上述实施方式可以以适当的方式改变。 尤其可以检测所有部 件调用。 在该情形下, 对于每个部件调用在部件中进行相应的条目, 该条目在该意义上不表 示错误条目, 而仅仅表明该部件被调用过。 根据前面所述的错误条目格式, 这样的条目例如 可以通过以下方式来指定 : 包含被调用部件的标志作为第三和第四个值并且包含值 e = 0 作为第五个值。其中第一个或第二个值又对应于触发部件的标志 01 或触发时间 t。为了确 保无错误地运行的调用链的完整重构, 对于每个调用还必须在被调用的部件中存储进行调 用的部件的标志。
     根据上述改变, 一方面存在以下可能性 : 所有调用总是从程序启动时就被记录。 但 是在一可替代的方案中也可以规定 : 所有调用链的记录只在第一个错误情形后才启动, 即 在参数 f 的值为 1 时。在该情形下, 不提供任何关于在出现第一个错误之前的调用链的信 息, 但是与从程序启动开始就检测调用的情况相比所需要的存储容量更少。
     上述用于检测错误和生成错误树的方法具有一系列优点。尤其地, 利用该方法提 供了有说服力的错误图像, 其中功能相关的软件错误可以被总结。除了功能关联之外还区 分软件错误的第一次出现以及可能由此产生的潜在后续错误。 因此确保偶尔的软件错误能 更好地被追溯和再现。该方法本身是简单和有效的。在部件中不必保存任何状态信息。只 需要为错误信息的存储提供存储容量。方法持续地工作, 并且因此不依赖于错误事故。因 此确保了在错误情形下车辆中的总线通信不提高并且因此总线负载和变动保持确定性。

计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法.pdf_第1页
第1页 / 共23页
计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法.pdf_第2页
第2页 / 共23页
计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法.pdf_第3页
第3页 / 共23页
点击查看更多>>
资源描述

《计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法.pdf》由会员分享,可在线阅读,更多相关《计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法.pdf(23页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102460396 A(43)申请公布日 2012.05.16CN102460396A*CN102460396A*(21)申请号 201080026516.3(22)申请日 2010.06.08102009030774.5 2009.06.27 DEG06F 11/07(2006.01)G05B 23/02(2006.01)(71)申请人宝马股份公司地址德国慕尼黑(72)发明人 D凯瑟尔 M哈尼伯格M贝奇勒(74)专利代理机构中国国际贸易促进委员会专利商标事务所 11038代理人赵科(54) 发明名称计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错。

2、误的方法(57) 摘要本发明涉及计算机辅助地检测尤其是机动车中的由部件(CU1,CU2,.,CU12)构成的系统中一个或多个基于软件的程序运行中的错误的方法,为各部件(CU1,CU2,.,CU12)分别分配一个标志(i),相应运行的程序由程序标识(a,b)指定,部件(CU1,CU2,.,CU12)在程序运行中执行分配给其(CU1,CU2,.,CU12)的程序块,部件(CU1,CU2,.,CU12)至少部分地相互调用。在根据本发明的方法中,在一部件(CUB)被另一部件(CUA)调用时,程序标识(a,b)及错误参数(f)被另一部件(CUA)传输到该部件(CUB),错误参数(f)说明先前在程序运行中。

3、是否已识别到错误。如果部件(CUA,CUB)在执行分配给其的程序块时识别到错误,则该部件(CUA,CUB)存储包含程序标识(a,b)、部件(CUA,CUB)的标志(i)和错误状态(e)的主动错误条目,错误状态说明所识别的错误是否是程序运行中的第一个错误。如果调用另一部件的部件(CUA)从该另一部件(CUB)接收到该另一部件(CUB)的标志(p),则该部件(CUA)存储包含程序标识(a,b)、该部件(CUA)的标志(i)和该另一部件(CUB)的标志(p)的被动错误条目。在程序运行中存储一个或多个主动或被动错误条目的部件(CUB)在程序运行中将程序标识(a,b)和该部件(CUB)的标志返回给调用该。

4、部件(CUB)的部件(CUA)至少一次。(30)优先权数据(85)PCT申请进入国家阶段日2011.12.15(86)PCT申请的申请数据PCT/EP2010/057977 2010.06.08(87)PCT申请的公布数据WO2010/149489 DE 2010.12.29(51)Int.Cl.权利要求书2页 说明书8页 附图12页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 2 页 说明书 8 页 附图 12 页1/2页21.一种用于计算机辅助地检测由部件(CU1,CU2,.,CU12)构成的系统中一个或多个基于软件的程序运行中的错误的方法,该系统尤其是在机动车中,其。

5、中为各部件(CU1,CU2,.,CU12)分别分配一个标志(i),并且相应运行的程序通过程序标识(a,b)来指定,部件(CU1,CU2,.,CU12)在程序运行中执行分配给其(CU1,CU2,.,CU12)的程序块,并且部件(CU1,CU2,.,CU12)至少部分地相互调用,其特征在于,在一部件(CUB)被另一部件(CUA)调用时,程序标识(a,b)以及错误参数(f)被所述另一部件(CUA)传输到这一部件(CUB),其中错误参数(f)说明先前在程序运行中是否已经识别到错误;如果部件(CUA,CUB)在执行分配给其的程序块时识别到错误,则该部件(CUA,CUB)存储主动错误条目,该主动错误条目包。

6、含程序标识(a,b)、该部件(CUA,CUB)的标志(i)和错误状态(e),错误状态说明所识别到的错误是否是程序运行中的第一个错误;如果调用另一部件的部件(CUA)从该另一部件(CUB)接收到该另一部件(CUB)的标志(p),则该部件(CUA)存储被动错误条目,该被动错误条目包含程序标识(a,b)、该部件(CUA)的标志(i)和该另一部件(CUB)的标志(p);在程序运行中存储一个或多个主动或被动错误条目的部件(CUB)在程序运行中将程序标识(a,b)和该部件(CUB)的标志返回给调用该部件(CUB)的部件(CUA)至少一次。2.根据权利要求1所述的方法,其特征在于,部件(CU1,CU2,.,。

7、CU12)包括经由相应接口相互通信的控制器和/或控制器零件,其中主动错误条目和被动错误条目被存储在控制器的预定存储区中。3.根据前述权利要求之一所述的方法,其特征在于,程序标识(a,b)包括启动程序的触发部件(CU1)的标志(a)以及启动时间(b)。4.根据前述权利要求之一所述的方法,其特征在于,如果在部件(CUA)执行程序块之后在随后执行的程序块中没有出现错误,则程序标识(a,b)和参数(r)被从该部件(CUA)调用的部件(CUB)返回到该部件(CUA),其中参数(r)表明所述随后执行的程序块的无错误性,并且在该部件(CUA)接收到该参数(r)的情况下在该部件(CUA)中不存储被动错误条目。。

8、5.根据前述权利要求之一所述的方法,其特征在于,至少有时候在程序运行中对于部件(CUA,CUB)的每次调用在该部件(CUA,CUB)中存储调用条目。6.根据权利要求5所述的方法,其特征在于,在整个程序运行期间或只有在程序运行中出现第一个错误后,在相应部件(CUA,CUB)中存储调用条目。7.根据前述权利要求之一所述的方法,其特征在于,部件(CUA,CUB)中各自的主动或被动错误条目通过包括多个值的字段来描述,在该字段中指定程序标识(a,b),并且该字段还包含指定存储该错误字段的部件(CUA,CUB)的标志(i)的第一值(i)以及指定出现该错误的部件(CUA,CUB)的第二值(p)和说明该错误条。

9、目是被动错误条目还是主动错误条目的第三值(e),其中对于主动错误条目,第三值(e)还指定该错误是否是程序运行中的第一个错误。8.根据权利要求7所述的方法,其特征在于,在该字段中包含用于指定程序标识的两个值(a,b),其中一个值(a)表示触发部件的标志,而另一个值(b)表示启动时间。9.一种用于处理由根据前述权利要求之一所述的方法检测到的错误的方法,其特征在权 利 要 求 书CN 102460396 A2/2页3于,读出所存储的主动错误条目和被动错误条目,并且对于每个程序标识(a,b)由相关的主动错误条目和被动错误条目生成和输出错误树(FB),其中在该错误树中至少包含前后相继地被调用的部件(CU。

10、1,CU2,.,CU12)的调用链,这些前后相继地被调用的部件(CU1,CU2,.,CU12)包含至少一个具有主动错误条目部件(CU1,CU2,.,CU12),在该错误树(FB)中部件(CU1,CU2,.,CU12)被标明在相应部件(CU1,CU2,.,CU12)中在程序运行中是没有出现错误还是出现第一个错误还是出现后续的错误。10.根据权利要求9所述的方法,其特征在于,利用根据权利要求7所述的方法检测错误,其中错误树(FB)通过以下方式生成:从具有主动错误条目的每个部件(CU1,CU2,.,CU12)出发分别逐步地通过错误条目的字段的第一值(i)和第二值(p)生成前后相继地被调用的部件(CU。

11、1,CU2,.,CU12)的调用链。11.一种由部件(CU1,CU2,.,CU12)构成的系统,该系统尤其是在机动车中,其特征在于,所述系统被构造为使得以根据权利要求1至8之一所述的方法检测所述系统中一个或多个基于软件的程序运行中的错误。12.一种机动车,其特征在于,所述机动车包括根据权利要求11所述的由部件(CU1,CU2,.,CU12)构成的系统。13.一种用于处理由根据权利要求1至8之一所述的方法检测到的错误的诊断设备,其特征在于,所述诊断设备被构造为利用该诊断设备执行根据权利要求9或10所述的方法。权 利 要 求 书CN 102460396 A1/8页4计算机辅助地检测由部件构成的系统。

12、中一个或多个基于软件的程序运行中的错误的方法技术领域0001 本发明涉及一种计算机辅助地检测(尤其是机动车中)由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法。背景技术0002 在很多技术领域中,尤其是在汽车工程领域中,相应技术设备或车辆的要执行的功能中的软件成分变得越来越复杂。通常,软件程序在由多个部件构成的分布式系统中被执行,其中在这里以及在下文中,术语“部件”应作宽泛的理解并且可以包括每个具有程序运行中一个或多个功能性的单元。尤其地,部件是具有技术功能性的技术部件或具有相应软件的技术装置(如控制器)或该装置的一部分。部件同样也可以涉及程序语言意义上的在系统内执行程序块的函数或。

13、对象。部件尤其还可以是已知标准AUTOSAR意义上的软件组件。0003 软件错误在程序运行中总是在运行时大多零星地发生。此外,这样的错误的原因和影响经常不是依赖于时间的。因此,在出现软件错误时进行纠错很难,因为软件错误不能被再现,其发生的条件不能被追溯并且通常不清楚应在那里寻找错误的原因。0004 在车辆诊断领域中,目前认识的错误以所谓DTC(诊断故障码:Diagnostic Trouble Codes)的形式存储在相应技术部件或控制器中。但是在由此产生的错误条目之间不存在功能联系,并且错误只能通过出现的时间点来建立联系。发明内容0005 因此,本发明的任务在于以适当的方式检测软件程序运行中的。

14、错误,以便随后能够对所检测到的错误进行改进的诊断来找出错误原因。0006 该任务通过按照权利要求1的方法或按照权利要求9的方法或按照权利要求11的系统或按照权利要求13的诊断设备来实现。从属权利要求中给出了本发明的扩展方案。0007 在根据本发明的方法中,为系统的部件分别分配一个标志,并且通过程序标识来指定相应运行的程序。其中在相应程序运行中,部件执行分配个其的程序块,并且部件在程序运行中还至少部分地相互调用。0008 在根据本发明的方法中,在一部件调用另一部件时,程序标识以及错误参数从这一部件传输到这另一部件,其中错误参数说明在程序运行中已经识别到错误。如果一部件在分配给其的程序块运行中识别。

15、到错误,则该部件存储主动的错误条目,该主动的错误条目包含程序标识、部件的标志以及错误状态,错误状态说明所识别的错误是否是程序运行中的第一个错误。主动的错误条目因此涉及在该错误条目也存储在其中的部件中出现的错误。0009 如果在根据本发明的方法中一个已经调用另一部件的部件接收到该另一部件的标志,则这一个部件存储被动的错误条目,该被动的错误条目包含程序标识、这一个部件的说 明 书CN 102460396 A2/8页5标志以及该另一部件的标志。通过被动的错误条目相应地指定按照该错误条目的错误是并非该错误条目存储在其中的部件的另一部件中出现的错误。被动的错误条目说明以前在程序调用链中出现错误,其中通过。

16、存储该另一部件的标志可以追踪其中出现错误的调用链。0010 根据本发明,存储程序运行中一个或多个主动的或被动的错误条目的部件在程序运行中将程序标识和部件标志至少返回给调用该部件的那个部件一次。以该方式,在程序运行中确保错误条目的传播以对其追踪。0011 根据本发明的方法的特征在于:通过相应生成的主动的和被动的错误条目以及在部件相互调用中传输适当的信息,软件错误可以被追踪,并且还可以识别相应的软件错误是程序运行中的第一个错误还是可能由第一个错误引起的潜在后续错误。0012 在本发明的一优选方式中,各个部件是经由相应接口相互通信的控制器或控制器零件,其中主动的和被动的错误条目被存储在控制器的预定存。

17、储区中。其中一个有利的应用情形是在一机动车中联网的控制器中或多个相互通信的机动车中软件程序的运行。0013 在本发明的另一优选方式中,程序标识包括程序在其上被启动的触发部件的标志以及程序的相应启动时间。0014 在根据本发明的方法的另一实施方式中,如果在部件执行程序块之后在随后执行的程序块中没有出现错误,则程序标识和参数从该部件调用过的部件返回给该部件,其中参数显示这个随后执行的程序块的无错误性,并且在该部件中接收到该参数时,在该部件中不存储被动的错误条目。以该方式进在相应的部件中适当地反馈在执行分配给其的程序块之后没有出现错误并且因此不必在部件中存储被动的错误条目。该参数因此代替被调用的部件。

18、在出现错误时返回的标记。0015 在根据本发明的另一变形方案中,至少部分地在程序运行中对于部件的每个调用在该部件中存储调用条目。以该方式还可以检测程序运行中无错误地运行的调用链。优选地,部件中的调用条目包含调用过该部件的部件的标志。以该方式还可以重构正确运行的程序块的调用链。其中存在以下可能性:从程序运行中第一个错误的出现开始,在相应部件中存储调用条目。在可能的情况下,甚至在程序整个运行期间存储调用条目。0016 在根据本发明的方法的另一特别有利的实施方式中,部件中各自的错误条目(即主动的或被动的错误条目)通过包括多个值的字段来描述,其中在该字段中指定程序标识,并且该字段还包含指定存储该错误条。

19、目的部件的标志的第一值以及指定其中出现错误的部件(对于主动的错误条目,相当于存储错误条目的部件)的第二值以及说明错误条目是主动的错误条目还是被动的错误条目的第三值,其中对于主动的错误条目,第三值还指定错误是否是程序运行中的第一个错误。其中表述“第一值”、“第二值”和“第三值”仅仅指定值的相应类型,而并不必然表明相应值在字段中所位于的位置。0017 在根据本发明的方法的其中程序标识由触发部件的标志和启动时间来确定的变形方案中,用于描述错误条目的字段包含用于指定程序标识的两个值,其中一个值表示触发部件的标志,另一个值表示启动时间。0018 除了上述用于检测错误的方法之外,本发明还涉及用于处理利用该。

20、方法检测到的错误的方法。其中,所存储的主动的和被动的错误条目被读出,并且对于每个程序标识,由相应的主动的和被动的错误条目生成和输出错误树,其中在该错误树中至少包含先后调用的部件的调用链,这些先后调用的部件含至少一个具有主动错误条目的部件。其中在错误说 明 书CN 102460396 A3/8页6树中部件被标明在程序运行中在相应部件中是没有出现错误还是出现第一个错误还是出现潜在后续错误。由于该信息,可以以适当的方式追踪错误树中各个错误如何关联。其中在第一个错误后出现的后来的错误是潜在后续错误,并且通过错误树尤其说明相应的后续错误可能源自哪个初始错误或源自哪个其他潜在后续错误。如果在错误检测中还应。

21、当包含上述调用条目,则错误树在可能的情况下还包含其中所有部件已经无错误地执行其程序块的调用链。0019 用于重构错误树的方法的另一变形方案基于通过由上述字段指定的错误条目检测错误。其中错误树通过以下方式生成:从每个具有主动的错误条目的部件出发逐步地通过错误条目的字段的第一值和第二值确定相应的前后调用部件的调用链。0020 除了上述方法之外,本发明还涉及由部件构成的系统,该系统尤其是在机动车中,其中该系统被构造为使得在一个或多个基于软件的程序运行中利用上述用于检测错误的方法确定错误。0021 此外,本发明还涉及具有这样的系统的机动车。0022 而且,本发明还涉及用于处理利用上述方法检测到的错误的。

22、诊断设备,其中诊断设备被构造为使得利用该设备执行上述用于处理相应检测到的错误的方法。附图说明0023 以下借助于附图详细介绍本发明的实施例。0024 在附图中:0025 图1示出了按照根据本发明的方法的一实施方式在第一部件调用第二部件中信息交换的示意图;0026 图2示出了由部件构成的系统及其交互作用的示意图,以其为基础介绍根据本发明的方法的一实施方式;0027 图3至12示出了示例性地示出图2所示系统中的程序运行及其中所使用的基于根据本发明方法一实施方式的错误检测的示意图;0028 图13示出的示意图表示了对在按照图3至12的程序运行中所检测的错误的读出及基于此按照根据本发明的方法的一实施方。

23、式生成错误树。具体实施方式0029 以下基于机动车中由多个控制器构成的分布式系统介绍根据本发明的方法的实施方式,其中由各个控制器执行的功能借助于软件来实现。其中观察软件程序的运行,在该运行中,各个控制器相互调用,其中按照程序运行,在一控制器中相应程序功能结束后,另一控制器被调用。控制器是指权利要求1中所述的部件,并且在后面也被称为部件。0030 各个控制器为了通信而具有特定的接口,并且相互通过机动车的总线系统通信。控制器可以是车辆中用于执行功能性的任意单元,例如是电子发动机控制装置、安全气囊控制装置、(例如用于座椅调节的)伺服电动机的控制装置、汽车中空调机的控制装置、汽车中显示单元的控制装置等。

24、。该系统中部件上的程序运行例如是触发基于为汽车中个人所存储的预先编程的座椅调节来调节座椅的各个自动座椅调节伺服电动机。0031 在由部件构成的上述分布式系统中软件程序的运行中存在以下问题:不存在适当说 明 书CN 102460396 A4/8页7的机构来在程序运行时检测出现的软件错误,使得可能追踪错误以确定各个错误的原因或触发者。根据本发明的下面介绍的实施方式,检测软件错误并将其存储在各个部件的错误存储器中,使得在以后读出错误时可以生成适当的错误树。本发明因此一方面包括以适当的方式在车辆中检测软件错误的方法,另一方面包括在车外将所检测的软件错误组合为错误树的方法。0032 图1一般性地示出了进。

25、行调用的控制器CUA(CU控制单元:Control Unit)和被调用的控制器CUB之间的通信。在下面,进行调用的控制器也被称为第一控制器或第一部件,被调用的控制器也被称为第二控制器或第二部件。下面从以下情形出发:每个部件能由一个独特的标志(例如UUID(UUID通用唯一标识符:Universal Unique Identity)或软件ID)来标识,并且在程序运行中出现一部件对另一部件的调用。此外还存在适当的机构来通过部件在程序运行中将所识别到的软件错误存储在部件的错误存储器中。而且,在这里所描述的实施方式中,观察部件的同步调用,但是本发明类似地也可以应用于非同步调用。0033 根据图1,在第。

26、一部件CUA调用第二部件CUB的情况下,参数三元组(a,b,f)作为附加参数被传输。其中参数a表示最初触发运行的程序的哪个部件的标志。如果程序在部件CUA上开始,则参数a与部件CUA的标志一致。参数b指示程序在触发部件中被启动的时间,即汽车中相应客户功能基于该程序被启动的时间。参数a和b的组合因此表征程序的当前运行,并且该组合对应于权利要求1中所述的程序标识。参数f是错误参数,并且说明先前在程序运行中是否已经在一部件中出现错误。如果先前没有识别到错误,则错误参数被设置为0,而如果出现了错误,则参数在程序的后面运行中被设置为1。0034 在被调用的部件CUB已经完成相应的程序功能之后,将参数r以。

27、及上述参数a和b形式的回应返回到第一部件CUA。其中只要在部件CUB中没有识别到错误并且其他后来调用的部件也没有向该部件通知出现错误,回应值r就始终设置为0。在所有其他情形下,参数r包含部件CUB的标志作为值。0035 在程序运行中,在各个部件的错误存储器中生成相应的错误条目,其中主动的错误条目和被动的错误条目都被存储在错误存储器中。其中如果在相应的部件本身中出现错误则产生主动的错误条目,而如果一部件从另一部件接收到另一部件的标志作为回应值r则产生被动的错误条目。因此,被调用的部件的标志始终作为回应值被传输,只要在该部件本身中出现了错误或者只要被调用的部件从对其进行调用的部件接收到不等于0的回。

28、应值的话。0036 在以下进一步介绍的图5至12中,部件的相应错误条目作为具有方括号中的五个值的向量被给出,其中一般地,向量的第一个值用a表示,第二个值用b表示,第三个值用i表示,第四个值用p表示,第五个值用e表示,如图5中相应示出的那样。一般地,因此错误条目可以被描述为向量a,b,i,p,e。其中a又对应于最初触发程序运行的部件,b对应于程序在触发部件上启动的启动时间。而i表示正好存储相应错误条目的部件的标志。通过参数p确定错误来源。如果部件本身识别到软件错误,则在这里录入该部件自己的标志。如果在所观察的部件从由其调用的部件所接收的回应值r中传输被调用的部件的标志,则该标志被用于参数p。因此。

29、通过参数p说明是否存在在所观察的部件中本地出现的错误的主动的错误条目。说 明 书CN 102460396 A5/8页80037 通过参数e说明错误类型。如果在前后相继的部件的调用链中第一次发现软件错误(“初始错误”),则e在相应的部件中被设置为1。然后,在调用下一部件时参数f被设置为1,并且在所有后续的部件调用中保持为1。如果部件已经以f1被调用,则在被调用的部件中识别到错误的情况下,e被设置为2。由此表示出现的错误是潜在的后续错误。如果由被调用的部件将错误通知给进行调用的部件(即被调用的部件的标志作为参数r被返回),则要进行被动的错误存储条目,其中e被设置为0。该错误条目因此表明已经由另一部。

30、件发现了错误。在设置被动的错误条目的情况下,相应的部件还在其先前还没有传输回应值r0的情况下将其自己的标志作为回应值r返回到在前的部件。被动的错误条目的生成是必须的,以便后来在生成错误树的情况下能生成部件的调用顺序。0038 图2以由十二个控制器CU1、CU2、.、CU12构成的系统为例示出了基于功能调用链的程序运行,其中调用在触发部件CU1中同步进行。其中,程序运行内的调用通过相应的箭头表示,为了简明清晰的目的仅仅以附图标记P指示了这些箭头中的一些。可以看出:程序运行在作为触发部件的部件CU1上启动。该部件调用四个部件CU2、CU3、CU4和CU5。然后,部件CU3调用部件CU7至CU8,然。

31、后部件CU8调用部件CU11。此外,部件CU5调用部件CU9和CU10,然后部件CU10调用部件CU12。在图2中的程序运行中,在部件CU3、CU7、CU10、CU11和CU12中程序块工作中出现由相应的锯齿形箭头Z表示的错误。0039 借助于图2的部件的系统和所示的程序运行,现在介绍用于基于相应错误条目以及上述参数交换(图1)检测软件错误的一个实施方式。在下文中,数字01、02、.、12分别表示相应部件CU1、CU2、.、CU12的标志。而字母t表示程序启动时刻,即部件CU1触发程序的时刻。0040 根据图3,部件CU1以参数a01、bt和f0调用部件CU2。根据图4,部件CU2响应于调用发。

32、送回应值r0以及触发部件的标志01和触发时间t,因为在部件CU2中没有出现错误并且该部件不再调用后续的部件。根据图5,触发部件CU1调用部件CU3。在部件CU3中本地地出现错误。因此生成错误条目01,t,03,03,1。参数p被设置为03,因为错误本地地在部件CU3中出现。参数e被设置为1,因为其是在程序运行中出现的第一个错误。在部件CU1调用部件CU3时,触发部件CU1的标志01以及触发时间t被传输,它们然后作为错误条目中的前两个值,如图5中通过箭头P所示的那样。因为现在在部件CU5中出现错误,所以除了触发部件CU1的标志01和触发时间t之外,现在参数f1也被传送到部件CU7。然后,被调用的。

33、部件CU7执行其程序功能,其中本地又出现错误。因此生成错误条目01,t,07,07,2,其中通过值p07表明涉及的是本地错误。而通过e2表明所出现的错误不是程序运行中的第一个错误,这意味着其可能涉及可能源自另一部件的错误的潜在后续错误。0041 如在图6中所示,部件CU7在执行其程序功能之后除了触发部件CU1的标志01和触发时间t之外还反馈值r07,因为在部件CU7中出现错误。于是在部件CU3中生成错误条目01,t,03,07,0,其中通过p07和e0表明涉及源自由部件CU7返回的错误的被动的错误条目。然后,部件CU8被部件CU3调用。其中,除了触发部件的标志01和触发时间t之外还传输参数f1。

34、。在部件CU8中,在程序执行时没有出现错误。然后,部件CU8将触发部件的标志01、触发时间t以及参数f1在部件CU11的调用的情况下传输给该部件。在部件CU11中又出现本地错误。因此在部件CU11中产生主动的错误条目01,说 明 书CN 102460396 A6/8页9t,11,11,2。其中e2表明在部件CU12中涉及潜在后续错误。0042 如图7中所示,由于CU12中出现的错误,除了触发部件的标志01和触发时间t之外,部件CU11的标志11也被返回给部件CU8。部件CU8又生成01,t,08,11,0形式的被动的错误条目。因此,除了触发部件的标志01和触发时间t之外,部件CU8的标志08也。

35、被返回给部件CU3。类似地,于是在部件CU3中生成被动的错误条目01,t,03,08,0之后将部件CU3的标志03与触发部件的标志01和触发时间t一起返回给部件CU1。因此在CU1中生成被动的错误条目01,t,01,03,0。0043 根据图8,触发部件CU1调用部件CU4,并且传输其标志01、触发时间t和参数f1。因为在部件CU4中没有出现错误并且程序从那里不会进一步继续,所以根据图9,除了触发部件的标志01和触发时间t之外,从部件CU4还返回参数r0到CU1。因此在部件CU1中不生成进一步的错误条目。0044 根据图10,部件CU1调用部件CU5,部件CU5无错误地执行其程序功能性并且然后。

36、调用部件CU9,部件CU9同样无错误地执行其程序功能。其中,触发部件的标志01、触发时间t和f1又被传输。因为在该程序链中没有出现错误,所以在部件CU1、CU5和CU9中也不产生主动的错误条目。0045 在图11中表现了相应参数r0从部件CU9返回到部件CU5。此外,图11还示出了部件CU5对部件CU10的调用,其中触发部件的标志01和触发时间t以及参数f1被传输。因为在部件CU10中出现本地错误,所以在那里存储错误条目01,t,10,10,2。部件CU10然后调用部件CU12,并且又传输触发部件的标志01、触发时间t以及参数f1。然后在部件CU12中在程序执行时出现另一本地错误,从而在那里存。

37、储主动的错误条目01,t,12,12,2。0046 如图12中所示,在执行部件CU12的程序功能之后,由于在部件CU12中出现的错误,除了触发部件的标志01和触发时间t之外还返回部件CU12的标志12到部件CU10。因为参数r不等于0,所以现在在部件CU10中生成形式为01,t,10,12,0的被动的错误条目。由于CU10中的错误条目,除了触发部件的标志01和触发时间t之外,参数r10也被传输到部件CU5。因为参数r又不等于0,所以在部件CU5中也存储相应的被动的错误条目01,t,05,10,0。因为这个被动的错误条目,所以现在除了触发部件的标志01和触发时间t之外,参数r05也被返回到部件C。

38、U1。然后由于r0,所以在部件CU1中也生成形式为01,t,01,05,0的被动的错误条目。0047 在图12中,程序执行然后结束。图12因此示出了在上述程序运行中存储在各个部件中的所有错误条目。这些错误条目然后由相应的诊断设备从部件的错误存储器中读出。然后生成相应的错误树,如后面将借助于图13描述的那样。0048 在读出错误条目之后,首先得到以下用于各个部件的错误条目的列表:0049 CU1:01,t,01,03,001,t,01,05,00050 CU2:-0051 CU3:01,t,03,03,101,t,03,07,001,t,03,08,00052 CU4:-0053 CU5:01,。

39、t,05,10,00054 CU6:-说 明 书CN 102460396 A7/8页100055 CU7:01,t,07,07,20056 CU8:01,t,08,11,00057 CU9:-0058 CU10:01,t,10,10,201,t,10,12,00059 CU11:01,t,11,11,20060 CU12:01,t,12,12,20061 在上面的列表中,所有具有e2的错误条目(表示潜在后续错误)以斜体写出。此外,说明程序运行中第一个错误的错误条目(即对于其,e1成立)以粗体印刷。该错误条目被存储在部件CU3中。为了生成错误树,首先确定包含本地错误条目(即在程序运行时在其自身中。

40、识别到错误)的那些部件的相应调用链作为入口点(Einstiegspunkt)。这按照上面的列表是所有包含参数e不等于0的至少一个错误条目的所有部件。根据上面的列表是部件CU3、CU7、CU10、CU11和CU12。0062 从具有至少一个e0的错误条目的部件的标志出发,然后通过以下方式构成相应的调用链:对于各个部件寻找包含各自部件的标志作为错误条目中第四个值的那些部件。也就是说,从各个部件中错误条目的第三个值i出发寻找包含第四个值对应于相应条目的第三个值的错误条目的部件。对于部件CU12于是得到:部件CU10包含这样的错误条目,即01,t,10,12,0。然后以找到的部件类似地进行,即又寻找从。

41、刚找到的部件的错误条目出发包含第四个值对应于刚找到的部件的错误条目的第三个值的错误条目的部件。这一直继续,直到最后到达触发部件CU1。根据上面的例子,因此从所找到的部件CU10出发然后寻找包含的条目具有标志10作为第四个值的部件。这根据上面的列表是部件CU5的情形。从这个部件出发寻找包含的条目具有标志05作为第四个值的部件。这是触发部件CU1。以该方式适当地追溯本地错误链。0063 根据图13,因此对于各个部件CU3、CU7、CU10、CU11和CU12的标志03、07、10、11和12得到调用链A1至A5。这些调用链然后在顺序上反转并且组合为错误树FB,如通过箭头P”所示。通过存储在部件中的。

42、错误条目的序列得到调用序列。例如在部件CU1中首先存储CU3的错误条目,然后存储CU5的错误条目。由此得到:CU1首先调用部件CU3,然后调用CU5。在该错误树中,从最上层级中的标志01出发构成到根据被反转的调用链在下面的层级中存在的标志的连接。在图13的错误树中,因此标志03和05在调用链A1到A5的反转方向上连接到标志01。错误树FB的第二层级因此包含标志03和05。同样地,然后寻找下一层级中的标志。其中根据图13的调用链得到:标志03不仅与标志07连接,还与标志08连接。而标志05只与标志10连接。也就是说,错误树FB从标志03分支到标志07和08。而错误树从标志05只分支到标志10。对于后面的层级得到:标志08与标志10连接,标志10与标志12连接。而标志07已经处于相应调用链A2的开头。因此错误树从标志08出发只分支到标志11,从标志10出发只分支到标志12。0064 因为对于各个部件已知在该部件中是否没有出现错误(e0)或第一次出现错误(e1)或出现潜在后续错误(e2),所以该信息在错误树FB中被适当地编码。这在图13的错误树中通过以下方式表明:加粗印刷的标志03指示在程序运行中第一次出现错误的部件,斜体印刷的标志07、10、11和12指示其中出现潜在后续错误的部件,正常印刷的标记01、05和08指示其中没有出现错误的部件。说 明 书CN 102460396 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1