我是靠谱客的博主 凶狠砖头,最近开发中收集的这篇文章主要介绍Simulink脚本自动创建Autosar Parameter Port及Mapping前言通过M文件向Model Workspace添加Paramter自动创建Autosar Parameter Port及Mapping到对应的Paramter总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 通过M文件向Model Workspace添加Paramter
    • Model Workspace中Parameter的格式
    • 自动生成Model Workspace中Parameter
    • 配置Model Workspace中的参数来自于对应的m文件
  • 自动创建Autosar Parameter Port及Mapping到对应的Paramter
    • M脚本创建Parameter Port及Mapping
    • 实现的效果
      • 自动创建的Port
      • 自动Mapping端口:
  • 总结

前言

在之前一篇文章中,介绍了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公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

最后

以上就是凶狠砖头为你收集整理的Simulink脚本自动创建Autosar Parameter Port及Mapping前言通过M文件向Model Workspace添加Paramter自动创建Autosar Parameter Port及Mapping到对应的Paramter总结的全部内容,希望文章能够帮你解决Simulink脚本自动创建Autosar Parameter Port及Mapping前言通过M文件向Model Workspace添加Paramter自动创建Autosar Parameter Port及Mapping到对应的Paramter总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部