嵌入式安全回路的软件测试

作者:Alexandru Forrai 和 Takaharu Ueda 安全 11月1,2013

阅读时间:13分钟

人工智能概述

电梯可编程电子安全系统结合了硬件和软件,必须满足安全完整性等级 (SIL) 要求;软件开发侧重于通过 V 模型流程、静态代码检查和动态测试(包括黑盒和白盒测试)来减少系统性故障,并建议采用自动化回归测试。硬件在环 (HIL) 用实时模型取代物理设备,从而能够在接近塔台测试时进行早期、可重复的功能测试。当源代码不可用时,状态转换路径覆盖率指标可以衡量 HIL 测试的完整性。HIL 允许开发人员注入故障、测试完整的应用范围并缩短验证时间,从而提高软件质量并降低开发和创新成本。

作者:Alexandru Forrai 和 Takaharu Ueda

本文介绍了应用于乘客电梯中使用的可编程电子安全系统 (PESS) 的硬件在环 (HIL) 软件测试。 应用于电梯和自动扶梯的 PESS 的开发始于 2000 年代初。 电子限速器、检测不受控制的轿厢运动和一个井道中的两个电梯轿厢是 PESS 已经在使用或可用于商业解决方案的应用示例。 虽然它们不会在不久的将来取代现有的机械安全系统,但它们可能会提高乘客安全并降低成本。

PESS 也称为“嵌入式安全系统”,有两个主要部分:硬件和软件。 这些是不可分割的,同样重要。 硬件的开发应满足所需的安全完整性等级 (SIL)。 从这个意义上说,计算每小时由于随机硬件故障而导致的安全回路故障概率,并评估 SIL 级别。

由于嵌入式安全回路也依赖于软件,我们将主要讨论系统软件开发,重点是 HIL 软件测试。 该软件的主要目标之一是通过使用适当的软件开发周期来减少系统故障。 软件故障属于系统故障的范畴,尽管它们可能是随机出现的。

仅使用几个简单的硬件组件(例如热敏电阻、继电器或限位开关),安全回路就可以在工业中有许多应用。 但是,有些应用程序在紧急情况下无法立即关闭,因此需要智能安全回路。 此类安全回路可使用嵌入式硬件/软件实现,并应根据 IEC 61508 等行业相关安全标准进行开发。

一个简单的嵌入式安全回路的结构如图 1 所示。它具有三个主要组件:传感器、嵌入式安全系统和执行器。 当安全功能被触发时,设备会切换到安全状态或关闭。 可能需要安全回路的双通道架构才能实现更高的 SIL。

在许多工业应用中,需要能够区分故障严重程度和紧急程度的智能安全回路。[1] 例如:

  • 如果发生小故障,则发出警告,该过程仍可以运行有限的时间。[2]
  • 如果发生重大故障,则会发出警告,并且进程会切换到安全模式并运行有限的时间。[3&4]
  • 如果触发安全功能或按下紧急按钮,过程将切换到安全状态或立即关闭。[5&6]

这种智能安全系统可以使用嵌入式软件来实现。 因此,安全系统的正常运行取决于软件的正常(无错误)运行。

在大多数情况下,软件开发过程遵循所谓的“V 模型”(图 2)。 对于每个设计阶段,都有一个相应的验证(测试)阶段。

测试与验证

如今,软件存在于所有主要行业领域,并在我们的日常生活中发挥着重要作用。 在某些应用中,该软件不是安全关键的,因此其故障不会危及生命。 在应用程序中,如果软件是安全关键的,则应根据行业标准进行开发。 尽管它经过了广泛的测试,但仍有可能失败。 因此,测试在软件开发中扮演着重要的角色。 及早发现软件错误可以节省成本并显着缩短开发时间。

由于软件开发通常是一个迭代过程(需求可能会改变或可能定义新的需求),因此强烈建议应用测试自动化。 对于每个新的软件版本,必须重新运行之前的测试(回归测试)以确保新更改没有引入错误。 测试自动化有几个优点,例如:

  • 可以在更短的时间内完成更多的测试。
  • 许多测试用例无需人工干预即可执行。
  • 测试用例很有价值; 一旦它们被创建,它们就可以被重用。

软件测试方法根据不同的标准分为不同的类别。 测试方法——取决于被测软件是否被执行——可以分为两类:静态和动态。

静态测试

静态测试是一种检查软件代码但不运行代码的方法。 它主要是代码的语法检查和/或代码或文档的人工审查以发现错误。[7]

代码审查、代码检查和演练属于静态测试的范畴。 正式的代码检查可能是快速减少软件错误的最重要工具。 代码检查基于“两个头优于一个”的成语。 例如:

  • IBM 发现检查使工作效率提高了 23%,单元测试后检测到的错误减少了 38%。[7]
  • Hewlett-Packard 发现在检查过程中检测到的错误中有 80% 不太可能通过测试发现。[7]

尽管代码检查可能需要多花 20% 的时间,但调试可以减少一个数量级。 没有比通过代码检查更好的发现错误的方法了。[7]

动态测试

动态测试是编译和运行被测软件的一种软件测试方法。 该术语指的是使用软件:提供输入值并检查输出是否符合预期。 单元测试、集成测试、系统测试和验收测试是它的一些方法。 此外,根据软件代码的内部结构是否可访问,测试方法分为黑盒测试和白盒测试。

黑盒测试

黑盒测试是一种软件测试方法,不需要对软件代码的内部结构有特定的了解。 测试用例是基于定义的需求和规范得出的。 这些测试可以在所有软件测试级别进行:单元、集成、系统和验收。 在大多数情况下,它是一个功能测试,所以它主要用于更高的测试级别,但也用于单元测试级别。

白盒测试

白盒测试是一种软件测试方法,需要访问和了解软件代码的内部结构。 代码被检测,软件测试人员选择输入来执行代码的路径并确定正确的输出。 在大多数情况下,这是在单元级别完成的,但也可以在集成和系统级别执行。 这是检测软件错误的一种非常有效的方法,但它可能无法检测到缺失的需求或规范中未实现的部分。

测试概述

软件测试是一个耗时且成本高昂的过程。 为了使软件测试有效,应定义测试策略并用于派生测试用例(套件)。 此外,应使用软件测试指标(例如代码覆盖率)来分析定义的测试套件的充分性。 代码覆盖模型定义了应在测试期间执行的实现部分。 根据覆盖率模型,覆盖率是一个度量标准(通常以百分比表示),定义为已执行代码部分与已定义要执行部分之间的比率。 为了获得测试覆盖率,代码应该被检测:它需要访问软件代码的内部结构。

如果我们将软件表示为一个有向图(图 3),我们可以证明测试两条软件路径各 50 次比只测试一条路径 100 次要好。 如果我们考虑实时嵌入式软件,例如在电梯和自动扶梯中运行的软件,我们可以观察到大多数单元和集成软件测试不是实时进行的。

实时软件测试通常在开发后期的系统测试级别进行,即在电梯测试塔中。 最好在较早的阶段执行和重复此类测试,以减少开发时间并提高软件质量。 因此,我们将专注于 HIL 软件测试。

HIL 软件测试

HIL 的基本思想是用在硬件上实时运行的实时被控对象模型(图 4)代替真实系统。 换句话说,我们在测试塔中的电梯被一个运行在硬件上的实时电梯模型所取代。 连接到 HIL 的被测嵌入式系统(在我们的特定情况下,它是嵌入式安全回路)可以按照与真实测试塔中相同的方式进行测试。 因此,使用 HIL 执行的测试应该非常接近在真实系统中执行的测试。[8&9]

显然,在 HIL 中执行的测试不能替代

测试塔中进行的测试,但它们可以允许在开发的早期阶段轻松执行和重复类似的测试。 HIL 测试位于集成和系统测试之间,属于功能测试/黑盒测试的类别。

由于代码覆盖模型主要是在白盒测试方法中定义的,在 HIL 的情况下,这样的覆盖模型是不可用的。 尽管如此,在 HIL 测试中定义测试覆盖模型也是非常有用的。 因此,让我们通过一个例子来介绍 HIL 软件测试指标,考虑图 5 所示的电梯安全系统。电梯由电机驱动,如果超过超速限制(图 5 中的虚线),则安全功能被触发:电机关闭,安全继电器打开安全线,制动器被释放。 不同位置值正常运行时的速度用实线标出。 超速限制是针对不同的位置值定义的,因此我们的嵌入式安全回路基本上类似于限速器和平滑的终端减速。

嵌入式安全回路的一种可能结构如图 6 所示,其中速度和位置信息由双通道编码器提供。 类似的硬件结构[4] 和安全计时器[2] 注明以供参考。

速度信息用 2 个字节表示,位置信息用 4 个字节表示,并使用 CANopen 安全通信协议发送到嵌入式安全系统。 两个接近开关,由限位开关 1 和限位开关 2 表示,提供有关两个极限位置的信息,连接到嵌入式安全系统。 嵌入式安全系统包含两个安全继电器,如果安全功能被触发或在安全回路中检测到错误,它们会打开安全线。

状态转换图以及安全回路的主要状态如图 7 所示。为简单起见,此处介绍的安全回路完全独立于电梯/自动扶梯控制系统。 这意味着它不是一个智能安全回路:即使是轻微的内部故障也会触发紧急停止,这在实践中可能并不需要。

图 7 中呈现的状态转换图允许我们将其表示为一个有向图(图 8)。 即使在 HIL 测试的情况下,这也允许我们引入软件测试指标(状态转换路径覆盖率)。 如果考虑到整个事件/错误集,所有路径都被执行(图 8,底部),我们可以说 HIL 测试实现了 100% 的测试覆盖率。 有向图非常简单,只有两条路径。 然而,在智能安全回路的情况下,它会变得更加复杂,为 HIL 测试引入的测试指标将是有意义的。 在功能测试中(HIL 属于这一类),虽然软件代码不可访问,但状态转换图是已知的。

HIL 实验设置

围绕 NI 的 Compact RIO™ 硬件构建了一个简单、经济高效的 HIL 测试环境(图 9)。 简化的电梯模型在硬件上实时实现。 用户通过在个人计算机上运行的图形用户界面与 HIL 交互。

HIL 测试环境的一些主要要求是:

  • 再现电梯正常运行状态
  • 创造超速条件
  • 将不同的错误(图 10)注入安全回路

自动化测试

在测试安全回路期间应考虑以下注入错误。 只有当安全回路的硬件允许访问这些设备时,嵌入式安全回路的内部故障,例如看门狗定时器故障、中央处理器频率漂移和安全定时器故障,才能通过 HIL 注入。 只有在安全回路的软件可以修改的情况下才能注入内存错误; 因此,这不被视为典型的 HIL 测试。

一些实验结果如图 11 和 12 所示。在后者中,安全回路检测到超速情况,并产生紧急停止(左侧的制动触发信号)。

结语

HIL 是一种有效的嵌入式系统测试环境,尤其适用于嵌入式安全回路。 它被广泛应用于不同的工业领域,汽车行业是这个意义上的领跑者之一。 在我们的案例中——取决于实时模型的复杂性和准确性——可以实现所谓的“虚拟井道中的虚拟电梯”。

所提出的嵌入式安全回路 - 通过软件参数化 - 可应用于各种具有不同标称速度和不同行程长度的电梯。 由于以下原因,HIL 测试环境是测试此类安全回路的非常有效的工具:

  • 可以有效地测试整个应用范围。
  • 可以更轻松、更有效地注入不同的故障。
  • 在测试塔中难以实现的测试场景,在 HIL 中可以轻松实现。
  • 可以轻松地重复测试。
  • 可以在早期检测到设计问题和软件错误,从而提高软件质量。
  • 软件验证时间变得更短,这意味着更低的开发成本和更低的创新成本。
案例
[1] R. Isermann:“机电一体化系统——具有嵌入式控制的创新产品。”控制工程实践 16,第 14-29 页,Elsevier(2008 年)。
[2] L. Al-Sharif、K. Seaborne 和 D. Austin:“基于电动的智能自动扶梯制动系统。” Elevcon 2010 年会刊,A. Lustig (Ed.) p。 1-15 (2010)。
[3] A. Chida、T. Matsuoka、K. Okamoto 和 T. Kugiya:“电梯电子安全系统的开发”。 Elevcon 2006 年会刊,A. Lustig (Ed.) p。 1-9 (2006)。
[4] R. Kondo、H. Kigawa、T. Ueda、M. Shibata、J. Hashimoto、A. Chida 和 H. Marumo:“电梯制动控制系统的开发”。 Elevcon 2010 年会刊,A. Lustig (Ed.) p。 194-203 (2010)。
[5] M. Erndl:“电梯安全组件电子系统的使用”。 Elevcon, A. Lustig (Ed.) p. 的会议记录。 68-78 (2008)。
[6] H. Koenig:“没有电机接触器的电梯驱动的安全操作。” Elevcon 2010 年会刊,A. Lustig (Ed.) p。 186-193 (2010)。
[7] J. Ganssle:嵌入式系统设计艺术——第 2 版。Elsevier Inc.(2008 年)。
[8] M. Schlager、R. Obermaisser 和 W. Elmenreich:“嵌入式和无处不在系统的软件技术中集成架构的硬件在环测试框架。” 计算机科学讲义,Springer,Vol。 4761 页。 159-170 (2007)。
[9] A. Forrai: 嵌入式控制系统设计——基于模型的方法。Springer Verlag (2012)。
分享