• Simulink脚本自动创建Autosar Parameter 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 = '';
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    相比于之前的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 ='
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    配置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中的变量
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行上述脚本后。就可以在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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    通过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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    实现的效果

    自动创建的Port

    自动Mapping端口:

    总结

    目前只针对于Parameter Port进行了自动化创建及配置,其实对应S/R接口,也是类似的操作,理清思路,找到对应的API函数即可。

    若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~

    你的鼓励是对小弟的最大支持~~~

    建了一个WX公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

  • 相关阅读:
    CODING DevOps产品认证笔记
    springboot微服务学习(一)MyBatis-plus梳理
    OCR -- 非极大值抑制(NMS)算法详解
    Linux--基础IO
    gRPC(四)基础:gRPC流
    快速入门到精通到实战SpringBootWeb详解!
    矩阵类运算(运算符重载)
    【实用技巧】Unity中的Image组件
    Matlab求各种类型数组长度的方法
    华泰证券:京东营收增长或短期承压
  • 原文地址:https://blog.csdn.net/weixin_49000276/article/details/126085177