Matlab编程技巧:导入arxml文件

2024-09-03 11:32

本文主要是介绍Matlab编程技巧:导入arxml文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文研究如何通过Matlab脚本导入Autosar的arxml文件,并生成SWC模型。阅读本文需要一些Autosar的基本概念,包括SWC、Runnable和arxml等。

文章目录

  • 1 在线安装Autosar支持包
  • 2 离线安装Autosar支持包
  • 3 导入arxml文件例程
  • 4 导入报错
    • 4.1 导入报错示例

1 在线安装Autosar支持包

对于低版本的Matlab,是没有自带Autosar支持包的。需要先在硬件支持包中下载并安装Embedded Coder Support Package for AUTOSAR Standard,才能通过Matlab命令导入arxml文件。下载和安装过程如下。

1)点击附加功能–>获取硬件支持包,打开附加功能资源管理器
在这里插入图片描述
打开的附加功能资源管理器如下图所示。
在这里插入图片描述
2)搜索Autosar关键字,找到Embedded Coder Support Package for AUTOSAR Standard,并点击进入。
在这里插入图片描述
3)进去以后可以看到支持包兼容的Matlab版本,是 R2014b 到 R2018b 的版本。博主用的是2018a版本的Matlab,所以可以使用支持包。如果是2018b以后的版本,应该是不需要安装这个支持包了,而是作为一个付费模块。
在这里插入图片描述
4)点击右侧的安装按钮,进行在线安装。
在这里插入图片描述
网络比较好的博友只要一步步安装完即可。

2 离线安装Autosar支持包

大多数人应该和博主一样,点击安装以后一直没反应或者连不上。为方便离线安装,博主已经将离线安装包上传到CSDN共享,待这两天审核完毕就可以下载了。

离线安装相对容易很多,安装过程如下:
1)断开网络连接。
2)双击install_supportsoftware.exe,会打开一个新的Matlab以及一个安装界面。
在这里插入图片描述
3)在安装支持包的界面勾选Embedded Coder Support Package for AUTOSAR Standard,并点击下一个
在这里插入图片描述
4)点击我接受
在这里插入图片描述
5)然后等待安装结束。
在这里插入图片描述
6)安装结束后点击完成,然后会弹出AUTOSAR Examples的帮助窗口,里面有比较丰富的例程来帮助我们使用Autosar导入工具。
在这里插入图片描述

3 导入arxml文件例程

本章节按照支持包的教程导入一下arxml文件,掌握两个基本的函数。同时验证一下安装软件是否成功。

1)点开其中的一个例程Import AUTOSAR Component to Simulink
在这里插入图片描述
2)将其中的导入的三行语句拷贝到Matlab命令行中运行。
在这里插入图片描述

addpath(fullfile(autosarroot,'autosar_examples','ThrottlePositionControlSystem','arxml'))
ar = arxml.importer('ThrottlePositionControlComposition.arxml');
createComponentAsModel(ar,'/Company/Components/Controller','ModelPeriodicRunnablesAs','AtomicSubsystem');

这里简单说明一下。

  • addpath是将例程文件ThrottlePositionControlSystem.arxml所在的文件夹添加进Matlab的搜索路径中,以便后面用相对路径可以访问到。
  • ar = arxml.importer 用arxml.importer这个函数将arxml文件导入Matlab,形成一个对象ar。arxml.importer函数的参数可以是多个arxml文件,只要输入多个arxml文件的单元数组就行。
  • createComponentAsModel函数将ar对象中的Runnable转换成Simulink模型。后面的参数可以控制模型名、runnable对应的模型类型(AtomicSubsystem或者FunctionCallSubsystem)、数据字典、初始化子系统等。具体用法可以查阅createComponentAsModel文档。

3)运行这三行语句,就可以自动建立一个SWC的模型,对应着createComponentAsModel函数中的第二个参数Controller。其中包含了初始化runnable和一个事件runnable,这个都是在arxml中定义好的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4)模型中自动为我们配置好了Autosar的tlc文件,也就是说已经可以直接Ctrl + B生成代码。但是对于实际项目来说,肯定还需要做其他的配置。
在这里插入图片描述
Autosar支持包的其他用法可以通过帮助文件学习。

4 导入报错

在上面的例程中,可以很顺利地导入arxml文件生成模型。但是在实际项目中应该不会这么顺利,可能会报出很多的错误,主要原因就是工具之间的不兼容。

就博主所知,arxml文件是反映autosar中应用层架构的文件,里面包含了SWC和runnable等诸多元素。该文件一般是通过Autosar工具导出的,例如Dspace的System Desk或者Vector的DaVinci Developer。所以遇到了报错,可以针对具体错误,通过Autosar工具不断地完善arxml文件再尝试运行Matlab脚本,最终才能成功导入。

4.1 导入报错示例

这里为了演示一下导入报错的现像,手动修改一下ThrottlePositionControlComposition.arxml文件,过程如下。

1)在Notepad++中打开ThrottlePositionControlComposition.arxml文件,将前两个UUID改成一样的。这样就会导致一个UUID重复的错误。
在这里插入图片描述
2)重新运行三句脚本。

addpath(fullfile(autosarroot,'autosar_examples','ThrottlePositionControlSystem','arxml'))
ar = arxml.importer('ThrottlePositionControlComposition.arxml');
createComponentAsModel(ar,'/Company/Components/Controller','ModelPeriodicRunnablesAs','AtomicSubsystem');

从返回信息中可以看出,Matlab对于重复的UUID报了错误。
在这里插入图片描述
这里只是将报错信息显示在了命令行中,通过try…catch…语句还可以将报错信息输出为文档。

>>返回个人博客总目录

这篇关于Matlab编程技巧:导入arxml文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132852

相关文章

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]