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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键