根据AUTOSAR标准开发用于建模软件组件的特定领域语言
bigegpt 2025-03-06 12:19 9 浏览
来源:智能汽车开发者平台 作者:Sasa
摘要
开发支持符合AUTOSAR标准的软件组件的建模特定领域的语言。支持建模软件组件的应用是基于TextX python模块和内部开发的建模框架。通过应用程序建模带来了更安全和更快的方式来应对各种模型的变化。在这篇论文中,我们展示了应用程序工作的基本算法、应用程序的部分功能和使用特定领域语言的例子,其结果显示了模型的一些变化。
I.简介
在现代汽车行业中,软件和电子控制单元正变得越来越多。如果我们观察一下现代新车,我们会注意到大量的电子控制单元(ECUs),它们基本上是车辆的思想,完成所有的逻辑和驱动工作。汽车行业的目标是提高司机、乘客和其他交通参与者的整体安全,这正是软件进入汽车行业的原因和方式。由于车辆中有大量的ECU,有非常复杂的系统,随着新的安全功能和技术的实施,这些系统变得更加复杂。
现代汽车甚至可以包含超过100个ECU,其中每个ECU都负责和执行特定的任务。每项任务都必须在准确规定的时间内执行。也就是说,任何应用于硬件层面的变化都会影响到软件,需要对软件进行额外的修改和校准,以使其按预期工作。面对这个问题,行业内领先的汽车公司已经建立了合作关系,他们将使硬件开发和软件开发相互独立。
II.AUTOSAR标准
AUTOSAR(汽车开放系统架构)是一个由汽车制造商、供应商、服务提供商和来自汽车E/E、软件行业的公司组成的全球开发合作伙伴关系。它成立于2003年。一个目标是使硬件开发独立于软件。
AUTOSAR架构由4层组成,如图1所示。这4个层是:应用层、运行时间环境(RTE)层、基本软件层(BSW),最下面是硬件(微控制器)层。
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显示了应用程序的工作情况。有三个输入文件,语法定义变化应该如何写才能成功应用,文件包含对模型的实际需要的变化和模型本身。
作为应用程序的输出,对已经修改过的模型,只有在符合标准和规则的情况下,才会对其进行需要的修改。
在图片3中,显示了应用程序的工作原理(核心算法)。
在建模应用程序的开始阶段,所有的输入都被加载(语法、包含变化和模型的文件)。
在语法检查中,它被分析为书面变化是否符合定义的语法。如果在这里出现一些错误,这意味着该变化不被支持或书写错误,在这种情况下,不应采取进一步行动。
语法检查成功后,在建模框架的协助下,模型被加载为输入。模型的所有属性和配置都被作为对象加载到应用程序中,一旦完成,加载的模型就可以用输入文件中描述的变化进行修改。
如果改变需要修改模型中已经存在的部分(例如,想改变现有端口的名称),首先将在建模框架的帮助下找到代表该确切部分的对象。之后,当它被找到时,基本上变化将作为修改对象的一个属性来执行。在其他情况下,如果需要创建新的东西,将有必要定义创建这种对象所需的强制性信息(例如,如果创建新的组件,需要的信息是名称,它应该有哪些端口和可运行性)。在提供这些信息后,建模框架将创建对象并将其添加到模型中。
完成对象操作(创建新对象或修改现有对象)后,有必要根据AUTOSAR标准和约束条件进行检查。这样做的目的是为了消除人为错误因素,并保证应用于模型的变化是有效的。如果有任何形式的违反,更改将不会被应用到模型上。
在应用结束时,只有当所有条件都得到满足时,模型才会完成修改。
V.建模应用实例
出于测试目的,一些AUTOSAR模型被作为输入,并将对其进行某些修改。我们将定义如下变化,在现有的两个组件(CtApTest1_SH00和CtCdMiddlewareQM_SH00)上,将增加两个新的端口,由两个数据元素组成。创建端口后,它们将被连接起来,以便在新创建的端口之间实现通信。
图4它展示了如何编写更改以完成上面描述的所需更改。
根据写入修改的输入文件,可以看到名称为PpTestInterface的端口被添加到两个不同的组件CtApTest1_SH00和CtCdMiddlewareQM_SH00。端口内的数据元素数量或将添加的端口数量没有严格规定,只要符合AUTOSAR标准,由用户决定。
在执行建模应用程序后,将看到书面修改应用在输入模型上。
在图片5和图片6中,显示了建模应用的结果。正如在图片5中所看到的,在arxml文件中,想要添加的端口很容易被添加到组件CtApTest1_SH00中,使用建模应用程序,它包含为该端口定义的所有数据元素。
在CtApTest1_SH00组件上,我们定义了端口为生产者(图像中的P-端口),意味着数据将从这里被进一步发送,而在另一个组件CtCdMiddleware_SH00上,我们创建了相反的接收器(R-端口),它将接收从生产者发送的任何数据,使这些端口兼容连接。
图片6显示了新创建的端口之间的连接器。基本上这种连接为它们提供了通信和交换数据的能力。
VI.总结
建模本身越来越复杂,越来越耗时。此外,为了对模型进行任何改变,必须要有使用软件的许可证和知识。这个建模应用程序的主要目标是完成简单和快速的建模,在对模型进行修改时犯错误的风险很低。
建模应用的主要优势体现在简单、快速和可靠的模型更改上。在一个文件中编写简单的、人类可读的变化,应足以执行一些复杂的模型更新。
进一步改进建模应用程序的下一步可能是可视化地展示书面更改。一旦编写了更改,终端用户将更容易直观地看到和理解将要进行的更改。这可以通过使用对象图或组件图来实现。
参考文献:
[1]M. Staron, “Automotive Software Architecture. An introduction”,Chapter, pp 1-19
[2]Vector Academy: AUTOSAR fundamentals
[3]Robert Warschofsky, AUTOSAR Software Architecture, Hasso- Plattner-Institute for Softwaresystemtechnik, https://hpi.de/fileadmin/user_upload/fachgebiete/giese/Ausarbeitungen_ AUTOSAR0809/Software_Architecture_Warschofsky.pdf
[4]BSW modul, https://automotive.wiki/index.php/Basic_Software_Module
相关推荐
- 方差分析简介(方差分析通俗理解)
-
介绍方差分析(ANOVA,AnalysisofVariance)是一种广泛使用的统计方法,用于比较两个或多个组之间的均值。单因素方差分析是方差分析的一种变体,旨在检测三个或更多分类组的均值是否存在...
- 正如404页面所预示,猴子正成为断网元凶--吧嗒吧嗒真好吃
-
吧嗒吧嗒,绘图:MakiNaro你可以通过加热、冰冻、水淹、模塑、甚至压溃压力来使网络光缆硬化。但用猴子显然是不行的。光缆那新挤压成型的塑料外皮太尼玛诱人了,无法阻挡一场试吃盛宴的举行。印度政府正...
- Python数据可视化:箱线图多种库画法
-
概念箱线图通过数据的四分位数来展示数据的分布情况。例如:数据的中心位置,数据间的离散程度,是否有异常值等。把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)...
- 多组独立(完全随机设计)样本秩和检验的SPSS操作教程及结果解读
-
作者/风仕在上一期,我们已经讲完了两组独立样本秩和检验的SPSS操作教程及结果解读,这期开始讲多组独立样本秩和检验,我们主要从多组独立样本秩和检验介绍、两组独立样本秩和检验使用条件及案例的SPSS操作...
- 方差分析 in R语言 and Excel(方差分析r语言例题)
-
今天来写一篇实际中比较实用的分析方法,方差分析。通过方差分析,我们可以确定组别之间的差异是否超出了由于随机因素引起的差异范围。方差分析分为单因素方差分析和多因素方差分析,这一篇先介绍一下单因素方差分析...
- 可视化:前端数据可视化插件大盘点 图表/图谱/地图/关系图
-
前端数据可视化插件大盘点图表/图谱/地图/关系图全有在大数据时代,很多时候我们需要在网页中显示数据统计报表,从而能很直观地了解数据的走向,开发人员很多时候需要使用图表来表现一些数据。随着Web技术的...
- matplotlib 必知的 15 个图(matplotlib各种图)
-
施工专题,我已完成20篇,施工系列几乎覆盖Python完整技术栈,目标只总结实践中最实用的东西,直击问题本质,快速帮助读者们入门和进阶:1我的施工计划2数字专题3字符串专题4列表专题5流程控制专题6编...
- R ggplot2常用图表绘制指南(ggplot2绘制折线图)
-
ggplot2是R语言中强大的数据可视化包,基于“图形语法”(GrammarofGraphics),通过分层方式构建图表。以下是常用图表命令的详细指南,涵盖基本语法、常见图表类型及示例,适合...
- Python数据可视化:从Pandas基础到Seaborn高级应用
-
数据可视化是数据分析中不可或缺的一环,它能帮助我们直观理解数据模式和趋势。本文将全面介绍Python中最常用的三种可视化方法。Pandas内置绘图功能Pandas基于Matplotlib提供了简洁的绘...
- Python 数据可视化常用命令备忘录
-
本文提供了一个全面的Python数据可视化备忘单,适用于探索性数据分析(EDA)。该备忘单涵盖了单变量分析、双变量分析、多变量分析、时间序列分析、文本数据分析、可视化定制以及保存与显示等内容。所...
- 统计图的种类(统计图的种类及特点图片)
-
统计图是利用几何图形或具体事物的形象和地图等形式来表现社会经济现象数量特征和数量关系的图形。以下是几种常见的统计图类型及其适用场景:1.条形图(BarChart)条形图是用矩形条的高度或长度来表示...
- 实测,大模型谁更懂数据可视化?(数据可视化和可视化分析的主要模型)
-
大家好,我是Ai学习的老章看论文时,经常看到漂亮的图表,很多不知道是用什么工具绘制的,或者很想复刻类似图表。实测,大模型LaTeX公式识别,出乎预料前文,我用Kimi、Qwen-3-235B...
- 通过AI提示词让Deepseek快速生成各种类型的图表制作
-
在数据分析和可视化领域,图表是传达信息的重要工具。然而,传统图表制作往往需要专业的软件和一定的技术知识。本文将介绍如何通过AI提示词,利用Deepseek快速生成各种类型的图表,包括柱状图、折线图、饼...
- 数据可视化:解析箱线图(box plot)
-
箱线图/盒须图(boxplot)是数据分布的图形表示,由五个摘要组成:最小值、第一四分位数(25th百分位数)、中位数、第三四分位数(75th百分位数)和最大值。箱子代表四分位距(IQR)。IQR是...
- [seaborn] seaborn学习笔记1-箱形图Boxplot
-
1箱形图Boxplot(代码下载)Boxplot可能是最常见的图形类型之一。它能够很好表示数据中的分布规律。箱型图方框的末尾显示了上下四分位数。极线显示最高和最低值,不包括异常值。seaborn中...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)