当前位置:网站首页>Simulink脚本自动创建Autosar Parameter Port及Mapping
Simulink脚本自动创建Autosar Parameter Port及Mapping
2022-08-02 17:16:00 【赞哥哥s】
文章目录
前言
在之前一篇文章中,介绍了Autosar Parameter Port的使用方法,传送门:Autosar SWC在Simulink中Parameter的使用
但是这种方法手动创建的话,会浪费大量时间。本文通过Simulink提供的Autosar API函数,实现Paramter Port端口的自动创建,并与Model Workspace中的Paramter进行自动Mapping。
通过M文件向Model Workspace添加Paramter
Model Workspace中Parameter的格式
在Model Workspace中新建一个parameter,导出m文件的格式如下:
Param = Simulink.Parameter;
Param.Value = 2;
Param.HasCoderInfo = false;
Param.Description = '';
Param.DataType = 'single';
Param.Min = [];
Param.Max = [];
Param.DocUnits = '';
相比于之前的sldd中的parameter,此处少了StorageClass,且不支持自定义的mypackage。
自动生成Model Workspace中Parameter
通过上一篇文章Excel自动生成Paramter的脚本,稍加修改(取消StorageClass的写入),就可以生成Model Workspace需要的Paramter的m文件。
通过m脚本生成的Paramter的m文件如下:
MyPortParam1 =Simulink.Parameter;
MyPortParam1.Value =[1800 1500 1200 900 600 300 100 0];
MyPortParam1.Description ='test parameter2';
MyPortParam1.DataType ='uint16';
MyPortParam1.Min =0;
MyPortParam1.Max =5000;
MyPortParam1.DocUnits ='mA';
MyPortParam3 =Simulink.Parameter;
MyPortParam3.Value =22;
MyPortParam3.Description ='test parameter3';
MyPortParam3.DataType ='uint8';
MyPortParam3.Min =0;
MyPortParam3.Max =255;
MyPortParam3.DocUnits ='
配置Model Workspace中的参数来自于对应的m文件
对应的脚本如下:
mdlWks = get_param(bdroot,'ModelWorkspace');%获取当前活动的模型
whos(mdlWks);%列出当前modelworkspace中的变量
mdlWks.DataSource = 'MATLAB File';%选择导入数据的文件类型
mdlWks.FileName = 'Model_parameter.m';%选择名称
reload(mdlWks)%重新加载工作区
whos(mdlWks);%列出当前modelworkspace中的变量
运行上述脚本后。就可以在Model Workspace中看到生成的Paramter参数

此处,对于Argument属性,没法用脚本进行勾选,找了很久都没有找到函数,目前只能手动全选后进行勾选,也不是很复杂。(或者有大佬知道如何自动勾选,欢迎评论区留言)
自动创建Autosar Parameter Port及Mapping到对应的Paramter
在设计Excel模板时,就考虑了Parameter Port,如下图

目前只关注上面几个属性,有了这些属性,就可以创建Paramter Port了。
M脚本创建Parameter Port及Mapping
在创建Port前,需要先删除之前模型中存在的Parameter Port,不然重名的会有冲突(也可以比较后再选择是否删除,本脚本没有这么操作)
hModel= bdroot;
arProps = autosar.api.getAUTOSARProperties(hModel)
slMap = autosar.api.getSimulinkMapping(hModel);
%删除port
arPortType = 'ParameterReceiverPort';
aswcPath = find(arProps,[],'AtomicComponent','PathType','FullyQualified');
pPorts=find(arProps,aswcPath{1},arPortType,'PathType','FullyQualified')
for ii=1:length(pPorts)
delete(arProps,pPorts{ii})
end
%删除Interface
ifPaths = find(arProps,[],'ParameterInterface','PathType','FullyQualified')
for ii=1:length(ifPaths)
delete(arProps,ifPaths{ii})
end
通过Excel读取对应的属性,并创建端口及Mapping
用到的主要函数如下:
addPackageableElement(arProps,'ParameterInterface','/Interface',ParameterPort,...
'IsService',false);%创建Interface
add(arProps,ParameterPort,'DataElements',DataElement);%创建dataElement
add(arProps,aswcPath{1},'ParameterReceiverPorts',ParameterPort,'Interface',ParameterPort);%创建port
%mapping parameter
mapParameter(slMap,ParameterName,'PortParameter','Port',ParameterPort,'DataElement',DataElement,...
'SwCalibrationAccess',SwCalibrationAccess)
实现的效果
自动创建的Port

自动Mapping端口:

总结
目前只针对于Parameter Port进行了自动化创建及配置,其实对应S/R接口,也是类似的操作,理清思路,找到对应的API函数即可。
若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~
你的鼓励是对小弟的最大支持~~~
建了一个WX公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~
边栏推荐
猜你喜欢

默认参数的代码实现及日期的注入与显示

The days of patching are more difficult than the days of writing code

什么是SVN(Subversion)?

2022高压电工特种作业证考试题库及答案

Navicat premium download and install 15 detailed tutorial

全面认识二极管,一篇文章就够了

Flink SQL builds real-time data warehouse DWD layer

智能合约安全——delegatecall (1)

Redis的使用--集群模式

What is the difference between erp system and wms system
随机推荐
蔚来杯2022牛客暑期多校训练营5 ABCDFGHK
2022安全员-C证考试题库模拟考试平台操作
Redis的介绍和使用
FP6606CLP5 SOP-8 USB Type-C和PD充电控制器
Oracle分析归档日志内容时,发现很多null?
Redis的使用--集群模式
ECCV 2022 | 清华&腾讯AI Lab提出REALY:重新思考3D人脸重建的评估方法
golang源码分析(13)gorpc源码分析
【21天学习挑战赛学习打卡】顺序查找
Kubernetes:(六)Pod重启策略和状态解释
vulnhub W34kn3ss: 1
德国客户对文档管理系统、工作流自动化软件 DocuWare 的评价
Since September, China has granted zero-tariff treatment to 98% of tax items from 16 countries including Togo
Nacos配置中心工作原理(超简单)
2022高压电工特种作业证考试题库及答案
白话电子签章原理及风险
golang源码分析(4):select
红队实战靶场ATT&CK(一)
一些与开发者体验有关的话题
小程序毕设作品之微信体育馆预约小程序毕业设计成品(7)中期检查报告