0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于用 Simulink 开发应用软件相关介绍和分享

MATLAB 来源:djl 作者:李智慧 2019-09-16 11:54 次阅读

致力于汽车行业基于模型设计流程的实现以及电控单元开发方面的技术咨询工作。他专注于嵌入式代码生成、系统集成、模型验证、处理器在环(PIL)实现、模型架构设计以及MBD工具定制等方面的开发及工具链的深入应用。在加入迈斯沃克之前,李智慧曾供职于法雷奥、德尔福、中汽中心公司,有10年的汽车行业产品开发经验。

图形化建模是架构设计普遍使用的方法。而 Simulink 已经成为许多系统工程师进行架构设计的利器。不管是在仿真验证阶段还是快速原型阶段,都可以利用 Simulink 非常方便地对复杂控制模型进行功能的组织、划分、调度等工作。

本文参考 ISO 26262 的要求,同时考虑 AUTOSAR 代码生成的兼容性,给出使用 Simulink 实现软件架构设计的一些建议。

应用层软件功能划分

ISO 26262-6 要求创建层次化结构的软件组件(Software Components — SWC)。软件组件应满足规模适中、高内聚、低耦合的要求。软件组件加上ASIL(Automotive Safety Integration Level,汽车安全完整性等级)的要求就决定了开发及验证的方法。软件架构中的最小实体(Entity)就是软件单元(Software Unit)。

在 AUTOSAR(Automotive Open System Architecture)中,应用层软件由应用软件组件组合(Compositions of Application Software Components)组成。一个应用软件组件(Application Software Component — ASWC)要符合特定的模板,而且通过虚拟功能总线(Virtual Functional Bus — VFB。)与其他应用组件进行通信(在控制器内部,VBF 的具体实现是运行时环境 Run-time Environment — RTE)。Runnable(或可译为运行实体)是应用软件组件提供的、可以独立调度的最小代码片段。

【注】在 AUTOSAR 文档中,软件组件(通常指的是原子软件组件 - Atomic Software Component)可以细分为应用软件组件(Application Software Component)和传感器-执行器软件组件(Sensor-Actuator Software Component)。本文考虑与 Simulink 建模的相关性,只讲应用软件组件。如果传感器-执行器软件组件也用 Simulink 建模实现,可以参照应用软件组件开发方法,在 Simulink 建模层面不强调其差异性。

不管在 ISO 26262 还是 AUTOSAR 中,对于软件单元在层次化结构中的具体定位都没有明确规定,实践中通常根据具体软件架构以及应用复杂度而定。

在 ISO 26262 架构下,如果某个软件组件功能独立而且实现简单,它本身就可以是一个软件单元;如果功能复杂,则可以进一步划分为几个软件单元。

在 AUTOSAR 中情况类似:一个应用软件组件可以只包含一个(也可能是几个)运行实体,而且功能简单,那么这个应用软件组件本身就可以使一个软件单元;如果包含多个运行实体而且功能较为复杂,每个运行实体可以是软件单元;如果某些运行实体的功能非常复杂,则可以进一步将一个运行实体划分为几个软件单元来实现。

在 Simulink 中,功能划分体现在:将模型虚拟分组来创建抽象层;根据调度需求将模块(block)分组;利用模型引用(Model Reference)来控制模型的规模。具体的软件分层类似于以上提到的 AUTOSAR 中的分层。软件单元通常要求为独立模型,以便于单独开发、验证以及管理。其他层次根据复杂度而定。

下图给出了一个 ISO 26262、Simulink、AUTOSAR 三者的映射关系示例:

关于用 Simulink 开发应用软件相关介绍和分享

该示例表示的是最为复杂的一种情况:一个应用软件组件包含多个复杂运行实体,而运行实体进一步划分,有多个软件单元模型实现。从上到下都是通过模型引用的方式逐级展开。以下各个章节都是基于这种情况示例。

软件单元(Software Unit)

MathWorks建议

使用 Simulink模型来表达软件单元

相比于子系统库而言,一个模型有自己的仿真及代码生成配置参数,可以单独仿真、测试以及增量式生成代码。由于模型的使用,多个软件单元可以并行开发,并且在配置管理系统中可以单独管理。

MathWorks建议

使用模型引用(Model Reference)集成软件单元

顶层模型(集成模型)只是一个整体框架,具体的各个软件单元通过模型引用连接。在这种架构下,利用 Simulink 本身的模型更新(快捷命令 Ctrl+D)功能,可以很容易地完成软件单元集成后的静态验证。可以检查软件单元之间的接口是否匹配,可以检查软件单元模型与顶层集成模型配置参数的兼容性(例如解析器的选择、硬件相关设置等)从而保证代码生成的一致性。

关于用 Simulink 开发应用软件相关介绍和分享

运行实体(Runnable)内部软件单元(SU)的集成

在顶层模型这一层,Simulink 模块可以显示软件单元的模型信息以及数据流和模块执行顺序。

MathWorks建议

使用模型引用的方式测试软件单元

通过顶层模型(Top Model。也可称之为测试框架 – Test Harness)引用软件单元模型的方式来进行单元测试(Unit Test)。单元测试的基本要求之一是测试人员不可以修改被测单元(不管是模型还是代码)。所以要建立测试框架,输入激励信号以及输出的观测都要在测试框架环境下完成。对于模型,可以采用模型引用(Model Reference)实现被测模型与测试环境的独立。

关于用 Simulink 开发应用软件相关介绍和分享

模型 SU1 进行 PIL 模式单元测试的框架模型

一个软件单元模型可以在多种模式下测试验证:

正常仿真模式(Normal Mode)

模型在环(Model-in-the-loop -- MIL)

软件在环(Software-in-the-loop -- SIL)

处理器在环(Processor-in-the-loop -- PIL)

上图所示的测试框架模型可以由 Simulink 软件自动生成(上图由 Simulink Test 生成,也可以根据实际需要,由 Simulink Verification and Validation 或者 Simulink Design Verifier 生成类似的测试框架)。工程师只需要根据功能需求,输入测试用例(测试数据或测试序列)即可。

同样的测试框架模型以及测试用例可以在各个测试阶段重复使用:

模型阶段 – 正常仿真模式或模型在环 – MIL

在 PC 机上验证生成的代码 – SIL

在目标处理器上验证生成的代码 – PIL

Simulink 自带的仿真数据观测器(Simulation Data Inspector)可以很方便的完成测试数据观测及分析:

不同测试用例数据(输入或输出)图形化显示或对比

不同测试阶段结果对比(比如 MIL 和 SIL 对比,MIL 和 PIL 对比等)

关于用 Simulink 开发应用软件相关介绍和分享

用仿真数据观测器分析数据

此外,Simulink Design Verifier还可以帮助工程师生成一些特定目的的测试数据来提高测试覆盖度。

AUTOSAR运行实体(Runnable)

MathWorks 建议

使用函数调用子系统(Function-call Subsystem)

描述运行实体

AUTOSAR 当中,一个运行实体(Runnable)是指一个原子软件组件(AUTOSAR Atomic Software Component)提供的最小代码段,同时也是一个可以被单独调度的任务。函数调用子系统提供了调度控制机制,可以很容易地实现模型各个部分周期性或非周期性的调度控制。

关于用 Simulink 开发应用软件相关介绍和分享

函数调用子系统描述运行实体

每个函数调用子系统由一个或几个互相连接的软件单元(如图:运行实体内部软件单元的集成)组成。运行实体间数据交互的完整性采用AUTOSAR 运行实体间变量(Interrunnable Variable,简称IRV)机制来保护。因为所有函数调用由一个统一的触发源产生,所以仿真的时候不会产生数据完整性问题。

软件组件(Software Component)

对于应用层软件来说,ISO 26262当中的软件组件(SWC)对应于 AUTOSAR 中的应用软件组件(ASWC)。

MathWorks建议

采用独立模型来描述AUTOSAR应用软件组件(ASWC)

在一个Simulink模型里将一个软件组件对应的所有函数调用子系统封装起来,在用Embedded Coder生成代码时,这些函数调用子系统会自动映射到相应的运行实体(Runnable)。

MathWorks建议

要对应用模型架构与AUTOSAR 的兼容性进行验证

在架构设计的早期,工程师可以只创建运行实体(Runnable)模型框架,其中的软件单元(Software Unit)为空模型(只有顶层输入及输出,内部没有逻辑及连接,如下图所示)。

关于用 Simulink 开发应用软件相关介绍和分享

空白的软件单元模型

Embedded Coder(要求包含 AUTOSAR 支持包)可以分析模型架构,确认各个应用软件组件(ASWC)是否可以根据 AUTOSAR(指定版本)的要求正确地访问数据接口以及是否可以正确地使用运行实体间变量(IRV)。

关于用 Simulink 开发应用软件相关介绍和分享

AUTOSAR 接口配置验证

软件单元(Software Unit)集成完成之后,在应用软件组件(ASWC)生成代码之前,可以利用 Embedded Coder 分析模型的 AUTOSAR 符合性,包括软件单元(Software Unit)建模正确性分析,比如数据的耦合性检查、全局数据存储检查、全局跳转模块检查等等。

Embedded Coder 在生成 C 代码的同时,还会生成对应的 arxml 文件,该文件符合指定的 AUTOSAR 版本,可以导入到外部 AUTOSAR 编辑工具(AAT)进一步完成系统级集成。

MathWorks建议

在 Simulink 环境下完成

AUTOSAR应用软件组件的测试验证

应用软件组件(ASWC)这一级的集成测试可以完全在 Simulink 的环境下完成。

为了验证生成的源代码,Embedded Coder 将生成的代码编译打包成 S 函数(S-Function),创建软件在环模块(SIL block)。由于选择了 autosar.tlc 作为系统目标文件(System Target File),S 函数运行所需要的 AUTOSAR RTE 接口会自动配置(不需要RTE代码生成)。

软件在环(SIL)和处理器在环(PIL)模块可以在原始模型测试环境下直接替换被测模型(采用模型引用配置)。

关于用 Simulink 开发应用软件相关介绍和分享

同一测试环境完成不同测试

软件组件(Software Component -- SWC)的层次化结构

MathWorks建议

用虚拟子系统描述应用抽象层

ISO 26262 建议采用层次化的结构来组织软件组件(参照 ISO 26262-6 第 7 章)。在AUTOSAR 中,应用软件组件(ASWC)集成在一起称为组合(Composition)。在 Simulink 中,采用虚拟子系统对功能模块进行分组,从而实现抽象层的概念。组合(Composition)加上被控对象模型(Plant Model),可以仿真运行整个应用系统(下图省略了调度部分)。

关于用 Simulink 开发应用软件相关介绍和分享

系统级模型

在组合层次采用模型引用来集成软件组件:

关于用 Simulink 开发应用软件相关介绍和分享

组合模型引用软件组件模型

应用软件调度

ISO 26262 要求指定每一个算法块的调度方法及执行顺序。

运行实体(Runnable)内部软件单元(SU)的执行顺序

MathWorks建议

如果没有对具体数据的依赖性,要将执行顺序显示出来

在函数调用子系统(Runnable)内部,Simulink可以显示每个模型(软件单元 - SU)的执行顺序(参考上图:运行实体内部软件单元的集成)。如果模型之间存在数据依赖,Simulink可以自动判断并设定执行顺序。如果没有依赖,Simulink根据输出端口编号给出推荐的执行顺序,用户可以通过优先级选项修改执行顺序。

运行实体的调度(Scheduling of Runnables)

MathWorks建议

使用Stateflow 或MATLAB模块创建集中的调度器

Simulink 中的函数调用子系统由函数调用事件(Function-call Event)触发。可以产生触发事件的模块有 Stateflow、MATLAB 模块及函数调用生成器(Function-call Generator)。为了清楚表达所有软件单元复杂的调度关系,建议使用 Stateflow 状态图。

关于用 Simulink 开发应用软件相关介绍和分享

Stateflow 实现集中化调度示例

在Stateflow中,时间逻辑(Temporal Logic)可以用来产生周期性触发事件,数据输入端的转移条件可以用来产生非周期触发事件。每个并行状态右上角的数字显示了该状态的执行次序。每个状态里的事件列表定义了触发的先后顺序。

应用层通常有许多触发事件。为了提高效率,可以用 MATLAB 脚本自动创建这样的调度器,并且自动连接到相应的函数调用子系统。

软件集成人员在 AUTOSAR RTE 中进行运行实体(Runnable)的运行任务分配时,可以参照用 Stateflow 描述的任务调度。反过来,也可以参照 RTE 中的任务分配调度,设计 Stateflow 调度器。

应用层软件接口

ISO 26262 要求完整定义软件单元(SU)及软件组件(SWC)之间的接口。

ISO 26262 建模标准检查(Model Advisor)可以验证软件单元建模的合规性。通过运行模型更新检查功能,Simulink 引擎自动检查接口连接及数据定义的正确性。Embedded Coder(包括 AUTOSAR 支持包)可以用来确认应用软件组件(ASWC)接口定义是否完整以及是否符合 AUTOSAR 的要求。

Simulink 软件提供的工具链(主要用到算法开发类、测试验证类、代码生成类等工具箱)以及开发方法可以很好地满足符合 ISO 26262 及 AUTOSAR 要求的应用软件开发。

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

    关注

    8

    文章

    6853

    浏览量

    88764
  • 调制解调器
    +关注

    关注

    3

    文章

    847

    浏览量

    38754
  • 函数
    +关注

    关注

    3

    文章

    4298

    浏览量

    62349
收藏 人收藏

    评论

    相关推荐

    Matlab/Simulink/Stateflow建模开发及仿真测试

    matlab 模拟仿真 熟悉Matlab/Simulink/Stateflow建模开发及仿真测试,熟悉V模型开发流程。 熟悉自动代码生成,能够编写或者配置自动代码生成脚本。
    发表于 10-24 17:23

    ECU电控软件开发及测试介绍

    本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的ECU性能压力测试方案。
    的头像 发表于 09-26 14:25 3193次阅读
    ECU电控<b class='flag-5'>软件开发</b>及测试<b class='flag-5'>介绍</b>

    9月12日云技术研讨会 | ECU电控软件开发及测试全流程解决方案

    本次研讨会,经纬恒润将结合业务团队多年来在软件开发和测试领域的工程实践经验,分享探讨基于AutoSar架构的应用软件开发、基于MBD开发软件质量评估和优化、复杂场景下ECU性能压力测
    的头像 发表于 09-26 14:18 1319次阅读
    9月12日云技术研讨会 | ECU电控<b class='flag-5'>软件开发</b>及测试全流程解决方案

    使用MATLAB、Simulink和Polyspace加速软件定义汽车开发

    开发软件定义汽车 (SDV) 时,开发团队必须具备新的能力,例如进行连续的软件发布,减少软件更改的交付周期以及尽可能减少部署失败。同时,平台团队需要为车载计算机和区域控制器创建新
    的头像 发表于 09-05 09:57 323次阅读
    使用MATLAB、<b class='flag-5'>Simulink</b>和Polyspace加速<b class='flag-5'>软件</b>定义汽车<b class='flag-5'>开发</b>

    单片机上位机软件什么开发

    开发单片机上位机软件时,选择合适的开发工具和编程语言至关重要。本文将详细介绍单片机上位机软件开发的各个方面,包括
    的头像 发表于 06-07 09:17 1149次阅读

    上位机软件开发什么语言

    维护的上位机软件至关重要。本文将详细介绍几种常用的上位机软件开发编程语言,并分析它们的优缺点。 C/C++ C和C++是两种广泛使用的编程语言,它们在上位机软件开发中具有很高的地位。C
    的头像 发表于 06-06 10:44 1396次阅读

    是德科技为手持射频分析仪的FieldFox产品系列进一步扩充应用软件

    新的应用软件使 FieldFox手持式分析仪 具备了内置信号发生器,频率高达 54 GHz
    的头像 发表于 05-11 17:34 743次阅读

    电路仿真软件simulink的工作原理

    Simulink是MATLAB的一个模块,它采用图形化的方式来创建动态系统模型并进行仿真分析。Simulink的工作原理主要基于模块化的建模和仿真方式。
    的头像 发表于 03-29 15:21 1479次阅读

    电路仿真软件simulink使用方法

    Simulink是MATLAB的一个重要组件,用于进行动态系统的建模和仿真。
    的头像 发表于 03-29 14:25 2191次阅读

    fpga开发一般什么软件

    此外,还有一些其他的辅助工具,如用于数字信号处理开发的System Generator,以及用于HDL语言仿真的ModelSim等。这些工具可以配合上述的主要FPGA开发软件使用,提高开发效率和设计质量。
    的头像 发表于 03-27 14:54 3615次阅读

    fpga开发一般什么软件

    FPGA(现场可编程门阵列)开发通常使用一系列专门的软件工具,这些工具涵盖了从设计、仿真到编译和调试的整个流程。
    的头像 发表于 03-15 14:43 3254次阅读

    英特尔发布全新边缘平台,为AI应用软件扩展提供强大支持

    在2024年世界移动通信大会的舞台上,英特尔带来了一个重大创新——其全新的边缘平台。该平台采用模块化、开放式的软件设计,为企业提供了一种便捷的方式来开发、部署、运行、保护和管理大规模的边缘和AI
    的头像 发表于 03-03 15:48 842次阅读

    英特尔发布全新边缘平台,为AI应用软件扩展提供强大动力

    在2024年世界移动通信大会上,英特尔发布了全新的边缘平台,这一模块化、开放式的软件平台,让企业能够像在云端一样便捷地开发、部署、运行、保护和管理大规模的边缘和AI应用软件
    的头像 发表于 02-29 18:14 631次阅读

    关于恩智浦S32通平台的介绍

    易于使用的工具和软件的驱动优先考虑。工具和软件是我们的客户的一个关键的决策标准。开发人员通过我们的工具和软件体验NXPSoCs。SW是我们的客户在
    的头像 发表于 02-19 16:31 305次阅读
    <b class='flag-5'>关于</b>恩智浦S32通<b class='flag-5'>用</b>平台的<b class='flag-5'>介绍</b>

    新闻快讯 | 瑞萨推出基于云的开发环境,以加速车AI软件开发与评估

    新闻快讯 全球半导体解决方案供应商瑞萨电子(TSE:6723)今日宣布推出一款基于云的全新开发环境,旨在简化车AI工程师的软件设计流程。新平台AI Workbench作为集成虚拟开发
    的头像 发表于 12-15 16:10 425次阅读
    新闻快讯 | 瑞萨推出基于云的<b class='flag-5'>开发</b>环境,以加速车<b class='flag-5'>用</b>AI<b class='flag-5'>软件</b>的<b class='flag-5'>开发</b>与评估