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