System Composer与AUTOSAR结合

embedded/2024/9/18 12:47:50/ 标签: composer, matlab

AUTOSAR 是软件架构在汽车行业的特殊应用,其“在标准上开放,在实施上竞争”的理念推动了流程的专业化分工,形成了成熟的开发工具链。Simulink 的 AUTOSAR Blockset 是 AUTOSAR 应用层软件开发的主流工具,与 System Composer 的结合支持 AUTOSAR 软件组合(Software Composition)的开发,进一步完善了 AUTOSAR 的正向开发流程。

在功能安全标准 ISO 26262 和过程能力改进及成熟度评估规范 A-SPICE 中均提出了类似的需求-架构-设计-实现的正向开发流程, Simulink 以其强大的图形化建模和高效的自动代码生成功能深刻地影响了复杂系统的软件设计和实现模式,

本文通过案例来展示这一过程,希望为汽车行业的软件开发用户提供参考,也相信从事其他行业复杂系统设计的用户也能受益。

应用案例

我们以简化的安全带警示系统作为案例,有驾驶经验的用户应该熟悉基本工作原理:在行驶状态下如果系统检测到驾驶员未系安全带应该发出声光提示。系统输入包括点火钥匙信号、安全带状态信号和原始车速信号,系统输出为安全带警示灯驱动信号。原始车速信号通常需要经过滤波后才能作为控制信号使用。

设计思路

上述系统的软件功能以软件组合的形式表征,包含了两个软件组件:车速滤波 SWC 和警示逻辑 SWC,车速滤波 SWC 将原始车速信号进行低通滤波后的车速信号传递给警示逻辑 SWC 使用。系统的输入输出信号和 SWC 的传递信号封装为两组总线类型:传感信号总线和控制信号总线。接口设计和组件划分如下:

在这里接口和组件输入输出分别代表了 AUTOSAR 中的 Interface (相当于数据类型)和 Port (相当于数据实体)的概念。以上设计思路进一步整理后形成规范化的设计文档,作为 Simulink 平台设计环节的起点,开展后续需求创建、架构设计、详细设计、设计验证和代码生成等工作。

需求创建

需求可以从以上的设计文档导入或直接在 Simulink 需求编辑器中创建,以对照进行架构设计和详细设计并建立起相应的链接关系,为以后的需求追溯和变更管理做准备。

架构设计

架构设计相对于详细设计应有较高级别的抽象,接口控制文档(ICD)或架构模型为其主要输出内容。在 Simulink 的启动页的 AUTOSAR Blockset 下打开软件架构模板即进入 AUTOSAR 软件组合架构的设计页面。

在菜单栏的 Design Tools 下打开 Bus Editor 定义总线类型,这一步对应 AUTOSAR 的接口定义(如有需要可在 Simulink 数据词典或工作空间中预先定义所需 AUTOSAR 数据类型)。
 

对照需求创建架构组件和输入输出端口,端口的数据类型从上一步定义的接口类型中选择,组件类型的选择为按 AUTOSAR 标准定义的应用组件、传感驱动组件、复杂驱动组件等预定义类型。

详细设计

架构创建完成并确认后,可以从架构组件关联已有的 Simulink 设计模型或直接创建新的设计模型。设计模型以自动继承架构模型端口的方式实现了接口控制,并自动创建 AUTOSAR 属性词典及其与 Simulink 的映射。

默认情况下端口的所有元素都会生成,设计时可以根据算法需要删减。车速滤波 SWC 和警示逻辑 SWC 的算法设计分别如下:

设计验证

 符合功能安全要求的设计验证环节比较复杂,在此不再详述。就本例软件组合的功能测试而言,组合架构模型可以使用 Simulink Test 的 Test Harness 生成功能自动生成包括测试输入、测试评价、调度机制等在内的测试环境进行系统功能测试;也可以将组合架构模型以模型引用的形式插入到其他已有的测试环境中。

代码生成

设计验证通过后,可以从软件组合直接生成 AUTOSAR 代码和 ARXML 接口描述文件。从 ARXML 文件架构中可以看到数据类型和接口类型等共用元素在组合级统一生成。

总结

以上主要介绍了 System Composer 和 AUTOSAR Blockset  对 AUTOSAR 正向开发过程的支持,此外架构模型对Client-Server模式、基础软件集成仿真等功能限于篇幅不再赘述,有兴趣的读者参考最新版本的帮助文档。需要说明的是,System Composer 同样适用于 AUTOSAR 之外的通用架构设计,应用流程与之类似。


http://www.ppmy.cn/embedded/93485.html

相关文章

【hadoop】常用命令

集群信息 查看hadoop版本 hadoop version查询hdfs系统中的namenode # 方式一 hdfs getconf -namenodes# 方式二 hdfs getconf -confKey dfs.namenode.http-address获取NameNode restful接口 hdfs getconf -confKey dfs.namenode.http-address hdfs getconf -confKey dfs.na…

【多线程基础】进程和线程的区别和联系(重要)

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Java多线程 📚本系列文章为个人…

淘客返利系统中的负载均衡与流量控制策略

淘客返利系统中的负载均衡与流量控制策略 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代互联网应用中,负载均衡与流量控制是保证系统高可用性和稳定性的关键策略。本文将详细介…

用Python打造精彩动画与视频,7.2 使用OpenCV增强视觉效果

第七章:高级视频和动画技术 7.2 使用OpenCV增强视觉效果 在本节中,我们将展示如何使用OpenCV来增强视觉效果。这些技术包括图像对比度调整、色彩校正、锐化和视频去噪等。通过这些技术,可以显著提升图像和视频的质量,使得视觉效…

C#:通用方法总结—第17集

大家好&#xff0c;今天继续介绍我们的通用方法系列。 下面是今天要介绍的通用方法&#xff1a; &#xff08;1&#xff09;这个通用方法为获取当前打开的所有文件名称 /// <summary> /// 获取当前打开的所有文件名称 /// </summary> /// <param name"s…

目标检测综述文章解读——Object Detection in 20 Years: A Survey

论文&#xff1a;Object Detection in 20 Years: A Survey 作者&#xff1a;Zhengxia Zou, Keyan Chen, Zhenwei Shi, Yuhong Guo, Jieping Ye 链接&#xff1a;https://arxiv.org/abs/1905.05055 这是一篇关于目标检测综述性文章&#xff0c;自2019年5月第一次提交后&#xff…

数据结构——栈(Stack)

目录 前言 一、栈的概念 1、栈的基本定义 2、栈的特性 二、栈的基本操作 1.相关操作概念 2.实现方式 &#xff08;1&#xff09;顺序栈 &#xff08;2&#xff09;链式栈 三、栈的应用 总结 前言 栈&#xff08;Stack&#xff09;是一种常见且重要的数据结构&#xff0c;它遵循…

vue3+axios请求导出excel文件

在Vue 3中使用axios请求导出Excel文件&#xff0c;可以发送一个GET或POST请求&#xff0c;并设置响应类型为blob或arraybuffer&#xff0c;然后使用new Blob()构造函数创建一个二进制文件&#xff0c;最后使用URL.createObjectURL()生成一个可以下载的链接。 先看代码 import…

深入探讨微服务架构中的同步通信机制

微服务架构是一种设计方法&#xff0c;将应用程序划分为一组小型服务&#xff0c;每个服务在独立的进程中运行&#xff0c;通常根据业务能力进行组织。这些服务通过多种通信方式交互&#xff0c;以实现整个应用的功能。今天我们着重介绍同步通信&#xff0c;关于异步通信和消息…

深入解析数据仓库ADS层-从理论到实践的全面指南

在大数据时代,数据仓库已经成为企业进行数据分析和决策的核心系统。而在数据仓库的分层架构中,ADS(Application Data Store)层作为最上层的数据应用层,直接面向业务应用和分析需求,其重要性不言而喻。然而,很多数据从业者对ADS层的理解还停留在表面,不清楚如何构建高效的ADS层来…

KubeSphere 部署 Kafka 集群实战指南

本文档将详细阐述如何利用 Helm 这一强大的工具&#xff0c;快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群。 实战服务器配置(架构 1:1 复刻小规模生产环境&#xff0c;配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库…

8.8 day bug

bug1 好家伙&#xff0c;最后一个t没看到&#xff0c;愣是学了一个小时原理和用法&#xff0c;都找不出问题在哪

【实现100个unity特效之12】Unity中的冲击波 ——如何使用ShaderGraph制作一个冲击波着色器

最终效果 文章目录 最终效果新增LitShaderGraph圆环扭曲效果优化冲击波效果屏幕全屏冲击波圆形冲击波最终连线图代码控制补充源码完结 新增LitShaderGraph 圆环扭曲效果 让我们从一个UV节点开始 创建一个Vector2变量RingSpawnPosition表示冲击波生成位置,在X和Y上将其默认值…

Python爬虫:下载4K壁纸

&#x1f381;&#x1f381;创作不易&#xff0c;关注作者不迷路&#x1f380;&#x1f380; 目录 &#x1f338;完整代码 &#x1f338;分析 &#x1f381;基本思路 &#x1f381;需要的库 &#x1f381;提取图片的链接和标题 &#x1f453;寻找Cookie和User-Agent &…

Django、Flask和FastAPI的优缺点与适用场景

Django特点与适用场景&#xff1a; 简介 Django是一个全功能的Web框架&#xff0c;提供了大量内置功能&#xff0c;如ORM&#xff08;对象关系映射&#xff09;、认证系统、管理后台等。 优缺点 优点 全功能性&#xff1a; 内置了许多功能&#xff0c;适合开发大型应用。 …

ASP.Net Core设置接口根路径的方法

使用asp.net core开发微服务项目&#xff0c;需要给每个服务设置不同的根路径&#xff0c;这样既能使用网关转发请求&#xff0c;又方便对单个服务进行测试&#xff0c;保证请求路径的统一。 设置方法需要使用中间件&#xff0c;在Program.cs添加如下代码 app.UsePathBase(&qu…

Linux进程地址空间

本章内容我们从C/C程序的内存分布开始&#xff0c;探索Linux下进程地址分布。探索过程中围绕“在同一个地址上的变量怎么会有2个不同的值&#xff1f;”逐步引入“虚拟内存”“页表”。引入页表后我们会接着介绍为什么要有“页表”。在了解“进程地址空间”和“页表后”我们回过…

为啥说SPFA已死?三种图论算法太难懂?深入浅出谈图论,看这篇文章就够了

在某些人的口中&#xff0c;SPFA 已死&#xff0c;甚至沦为“算法坟墓”里的新成员。但真的是这样吗&#xff1f;很多人都这么认为&#xff0c;但真的对吗&#xff1f;今天&#xff0c;我就要掀开这背后隐藏的惊天大阴谋&#xff0c;带你深入了解 SPFA、Dijkstra 和 Floyd-Wars…

DataX迁移数据到StarRocks大表报too many version问题记录

目录 1 背景说明 2 问题描述 3 解决思路 3.1 磁盘问题 3.2 DataX配置 3.3 分桶设置 3.4 增量迁移 4 其他 1 背景说明 项目上有两张大表&#xff0c;数据量在300w左右&#xff0c;每天凌晨通过datax将前一天最新的全量数据迁移到StarRocks对应的分区表中。分区表设置的动…

kafka-go使用:以及kafka一些基本概念说明

关于kafka 作为开发人员kafka中最常关注的几个概念&#xff0c;是topic,partition和group这几个概念。topic是主题的意思&#xff0c;简单的说topic是数据主题&#xff0c;这样解释好像显得很苍白&#xff0c;只是做了个翻译。一图胜前言&#xff0c;我们还是通过图解来说明。…