开发支持符合AUTOSAR标准的软件组件的建模特定领域的语言

电子说

1.2w人已加入

描述

开发支持符合AUTOSAR标准的软件组件的建模特定领域的语言。支持建模软件组件的应用是基于TextX python模块和内部开发的建模框架。通过应用程序建模带来了更安全和更快的方式来应对各种模型的变化。在这篇论文中,我们展示了应用程序工作的基本算法、应用程序的部分功能和使用特定领域语言的例子,其结果显示了模型的一些变化。

I.简介

在现代汽车行业中,软件和电子控制单元正变得越来越多。如果我们观察一下现代新车,我们会注意到大量的电子控制单元(ECUs),它们基本上是车辆的思想,完成所有的逻辑和驱动工作。汽车行业的目标是提高司机、乘客和其他交通参与者的整体安全,这正是软件进入汽车行业的原因和方式。由于车辆中有大量的ECU,有非常复杂的系统,随着新的安全功能和技术的实施,这些系统变得更加复杂。

现代汽车甚至可以包含超过100个ECU,其中每个ECU都负责和执行特定的任务。每项任务都必须在准确规定的时间内执行。也就是说,任何应用于硬件层面的变化都会影响到软件,需要对软件进行额外的修改和校准,以使其按预期工作。面对这个问题,行业内领先的汽车公司已经建立了合作关系,他们将使硬件开发和软件开发相互独立。

II.AUTOSAR标准

AUTOSAR(汽车开放系统架构)是一个由汽车制造商、供应商、服务提供商和来自汽车E/E、软件行业的公司组成的全球开发合作伙伴关系。它成立于2003年。一个目标是使硬件开发独立于软件。 AUTOSAR架构由4层组成,如图1所示。这4个层是:应用层、运行时间环境(RTE)层、基本软件层(BSW),最下面是硬件(微控制器)层。

ecu

图1 AUTOSAR分层结构

A.应用层

应用层是架构中最顶端的部分,由特定数量的软件组件组成,每个组件执行规定的任务。

1) 软件组件

软件组件代表了有明确任务的应用程序。组件的类型可以根据其目的而变化,例如,它可以是应用程序、传感器、执行器、输入/输出组件和更多。两个或多个组件之间可以通过连接的端口进行通信(只有连接的端口可以交换数据)。 有两种类型的端口可用,发送者/接收者(S/R)通信或客户端/服务器(C/S)通信。

S/R通信主要用于定期传输数据,C/S通信仅用于按要求提供数据或操作。软件组件可以有1个或多个S/R或C/S类型的端口,这就是组件之间相互通信的方式。 除了端口,每个软件组件还有一个主要部分,那就是它的可运行性。Runnable代表软件组件的实现,它们可以被多种类型的触发器所触发。触发器可以是初始化触发器(启动时执行)、周期性触发器(在定义的时间段内执行)、客户端请求(请求操作)等等。

B.运行时间环境 (RTE)

RTE实现了虚拟功能总线,有助于ECU内的SWC和ECU外的SWC的连接。它使用端口和接口实现通信路径,用于连接软件组件和下层的基本软件(BSW)模块。

C.基础软件 (BSW)

基础软件(BSW)是标准化的软件模块,提供运行上层软件的功能部分所需的各种服务。

 III.建模中的应用

AUTOSAR模型描述的是将被集成到汽车ECU中的软件。有了模型,软件的配置就有了很多可能性,也就是说,通过模型我们可以定义将被使用和传输的数据类型、组件的端口数量、组件的执行时间等。为了改变模型(改变一些配置),必须要有专门的软件和使用许可才能做到这一点。使用特定领域语言(DSL)进行建模的应用程序可以大大简化和加快建模阶段。

使用应用程序进行建模,归根结底就是把模型中需要的变化写到一个文件中,然后执行该应用程序。 使用这种应用程序进行建模的优势很多。最重要的优势之一是,如果存在人为错误,应用程序将不允许对模型进行修改。除此以外,应用变化所需的时间应更短,所使用的语言应简化并对用户友好(易于阅读和理解),等等。

为了开发这种建模应用程序,使用了名为TextX的python模块来创建特定领域的语言,并在模型中使用内部开发的建模框架来操作AUTOSAR对象。

A.TextX 模块

TextX 模块是一个用于创建domaing specific语言(DSL)的工具。创建的DSL将被用于编写模型中想要的变化。在这个模块的帮助下,我们定义了DSL的语法,这意味着每一个动作(模型中的变化)都必须以特定的方式编写,以使变化成功应用于模型。

B.建模框架

建模框架是开发的工具,能够更容易地操纵模型内的对象。该工具遵循AUTOSAR标准,模型中的每个字段/属性都被视为应用程序中的一个对象。

IV.使用建模应用程序

上述TextX模块与建模框架相结合,提供了对各种模型进行修改的可能性。图片2显示了应用程序的工作情况。有三个输入文件,语法定义变化应该如何写才能成功应用,文件包含对模型的实际需要的变化和模型本身。 作为应用程序的输出,对已经修改过的模型,只有在符合标准和规则的情况下,才会对其进行需要的修改。


ecu

图2 应用程序的工作原理 在图片3中,显示了应用程序的工作原理(核心算法)。


ecu


图3 执行建模应用程序的工作流程

在建模应用程序的开始阶段,所有的输入都被加载(语法、包含变化和模型的文件)。 在语法检查中,它被分析为书面变化是否符合定义的语法。如果在这里出现一些错误,这意味着该变化不被支持或书写错误,在这种情况下,不应采取进一步行动。

语法检查成功后,在建模框架的协助下,模型被加载为输入。模型的所有属性和配置都被作为对象加载到应用程序中,一旦完成,加载的模型就可以用输入文件中描述的变化进行修改。 如果改变需要修改模型中已经存在的部分(例如,想改变现有端口的名称),首先将在建模框架的帮助下找到代表该确切部分的对象。之后,当它被找到时,基本上变化将作为修改对象的一个属性来执行。

在其他情况下,如果需要创建新的东西,将有必要定义创建这种对象所需的强制性信息(例如,如果创建新的组件,需要的信息是名称,它应该有哪些端口和可运行性)。在提供这些信息后,建模框架将创建对象并将其添加到模型中。 完成对象操作(创建新对象或修改现有对象)后,有必要根据AUTOSAR标准和约束条件进行检查。

这样做的目的是为了消除人为错误因素,并保证应用于模型的变化是有效的。如果有任何形式的违反,更改将不会被应用到模型上。

在应用结束时,只有当所有条件都得到满足时,模型才会完成修改。

V.建模应用实例

出于测试目的,一些AUTOSAR模型被作为输入,并将对其进行某些修改。我们将定义如下变化,在现有的两个组件(CtApTest1_SH00和CtCdMiddlewareQM_SH00)上,将增加两个新的端口,由两个数据元素组成。创建端口后,它们将被连接起来,以便在新创建的端口之间实现通信。 图4它展示了如何编写更改以完成上面描述的所需更改。 ecu

图4 按照定义的语法,将在模型中应用的变化实例

根据写入修改的输入文件,可以看到名称为PpTestInterface的端口被添加到两个不同的组件CtApTest1_SH00和CtCdMiddlewareQM_SH00。端口内的数据元素数量或将添加的端口数量没有严格规定,只要符合AUTOSAR标准,由用户决定。

在执行建模应用程序后,将看到书面修改应用在输入模型上。

在图片5和图片6中,显示了建模应用的结果。正如在图片5中所看到的,在arxml文件中,想要添加的端口很容易被添加到组件CtApTest1_SH00中,使用建模应用程序,它包含为该端口定义的所有数据元素。

在CtApTest1_SH00组件上,我们定义了端口为生产者(图像中的P-端口),意味着数据将从这里被进一步发送,而在另一个组件CtCdMiddleware_SH00上,我们创建了相反的接收器(R-端口),它将接收从生产者发送的任何数据,使这些端口兼容连接。

ecu

图5 组件上创建的端口

图片6显示了新创建的端口之间的连接器。基本上这种连接为它们提供了通信和交换数据的能力。

ecu

图6 新建端口之间的连接

VI.总结

建模本身越来越复杂,越来越耗时。此外,为了对模型进行任何改变,必须要有使用软件的许可证和知识。这个建模应用程序的主要目标是完成简单和快速的建模,在对模型进行修改时犯错误的风险很低。 建模应用的主要优势体现在简单、快速和可靠的模型更改上。在一个文件中编写简单的、人类可读的变化,应足以执行一些复杂的模型更新。

进一步改进建模应用程序的下一步可能是可视化地展示书面更改。一旦编写了更改,终端用户将更容易直观地看到和理解将要进行的更改。这可以通过使用对象图或组件图来实现。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分