MBD_入门篇_25_UserDefinedFunctions

 前言

作者介绍

阿隆,深耕汽车控制器应用层开发多年,经历多家企业项目(包含多家中外头部企业),拥有多款控制器量产经验。主要技能包括应用层模型开发和c/c++代码编写,mil/sil测试,工具链开发,静态检查,BSW配置和手写,上位机开发等。

加V联系我:ALongAutom

使用介绍

MBD课程是阿隆从业多年后,在2022年的时候从0开始一点点录制的视频,一点点码字码出来的课程,现在分享给大家用来学习,如果对正在观看的你有帮助,可以帮忙推荐给身边的朋友,一起学习,也可以免费加入阿隆的技术交流群进行交流学习。

课程使用平台Matlab 2021b,建议初学者尽量使用同版本,避免出现版本差异带来的问题。等熟练掌握课程以后,再升级平台,出现版本差异的问题也知道该如何解决。

全网同名阿隆汽车,可以在其他平台搜索阿隆汽车找到阿隆,感谢观看。

入门篇视频是在Bilibili进行免费观看,链接如下:

https://www.bilibili.com/video/BV1xC411376N

https://www.bilibili.com/video/BV1Mt421P7HS

实战篇01视频可以在Bilibili进行免费观看,链接如下:

https://www.bilibili.com/video/BV1Pm421x7UJ

提高篇视频观看链接

along-auto.com

25. UserDefinedFunctions

25.1 概述

用户自定义功能,提供了比如MatlabFuction,C Caller,S Function等模块可以去编写代码,调用外部函数等。

25.2 MatlatFunction

在Simulink里面使用m语言做功能开发,比较灵活。一些老牌企业可能不允许使用,小公司为了更快开发逻辑会使用。

双击到模块里,对输入和输出可以直接在function上修改,类似m函数。也可以点击到Model Explorer进行添加和设置的操作。

点进来设置。

对模块进行仿真,看到排序是从1到大排的。

也可以用来生成代码。

25.3 MatlabSystem

工作中几乎没见过使用的,与MatlabFunction的区别是,它使用的类,就是面向对象的编程。

直接添加进来会显示没有指定。

如果已经有定义好的类,可以直接加载进来使用。或者可以点击New进行新建。

点击New,自动创建一个模板。

模板代码

classdef untitled3 < matlab.System
    % untitled3 Add summary here
    %
    % This template includes the minimum set of functions required
    % to define a System object with discrete state.

    % Public, tunable properties
    properties

    end

    properties(DiscreteState)

    end

    % Pre-computed constants
    properties(Access = private)

    end

    methods(Access = protected)
        function setupImpl(obj)
            % Perform one-time calculations, such as computing constants
        end

        function y = stepImpl(obj,u)
            % Implement algorithm. Calculate y as a function of input u and
            % discrete states.
            y = u;
        end

        function resetImpl(obj)
            % Initialize / reset discrete-state properties
        end
    end
end

修改类的名字并进行保存。

对类进行实现

classdef AddSum < matlab.System
    % untitled3 Add summary here
    %
    % This template includes the minimum set of functions required
    % to define a System object with discrete state.

    % Public, tunable properties
    properties

    end

    properties(DiscreteState)

    end

    % Pre-computed constants
    properties(Access = private)
    data;
    end

    methods(Access = protected)
        function setupImpl(obj)
            obj.data = 0;
            % Perform one-time calculations, such as computing constants
        end

        function y = stepImpl(obj,u)
            obj.data = obj.data + u;
            % Implement algorithm. Calculate y as a function of input u and
            % discrete states.
            y = obj.data;
        end

        function resetImpl(obj)
            obj.data = 0;
            % Initialize / reset discrete-state properties
        end
    end
end

实例化两个对象。

每调一次step(1),就会累加1.

每调一次step(2),就会累加2。obj1和obj2的结果是独立的。

定义完成以后,可以在Matlab System模块里进行加载。

第一次仿真,结果等于2.

第二次,结果等于4,符合预期。

<think>好的,用户的问题是关于如何在Simulink中添加或使用名为'MBD_EF_LIB'的库或模块。首先,我需要回忆一下Simulink的基本操作,尤其是添加库或模块的步骤。根据用户提供的引用内容,特别是引用[1]提到在库浏览器中找到模块并拖拽添加,或者右键快捷菜单添加。这可能适用于标准库,但用户提到的'MBD_EF_LIB'可能是自定义库,所以需要不同的方法。 接下来,我需要考虑用户可能的场景。用户可能是一个刚开始使用Simulink的工程师,或者在进行模型基于设计(MBD)时需要特定的库。MBD_EF_LIB可能包含一些特定模块,用于嵌入式系统或代码生成,比如引用[2]和[3]提到的代码生成和数学运算模块。用户可能已经安装了这个库,但不知道如何添加,或者需要从外部获取。 可能的步骤包括检查库是否已经安装,如果没有,需要先下载或安装。然后,在Simulink库浏览器中添加路径,或者使用命令行加载。同时,可能需要配置编译器,如引用[2]提到的,但这个问题更偏向添加库,可能不需要编译器配置。另外,引用[3]提到自定义模块的组合,所以如果MBD_EF_LIB是自定义的,可能需要手动添加路径。 需要验证用户是否已经将库文件放在正确的路径下,或者是否需要通过Add-Ons安装。如果用户没有安装,可能需要指导他们获取库文件,并添加到MATLAB路径。此外,可能涉及在库浏览器中刷新或重新扫描目录,以便显示新添加的库。 还要考虑可能的错误情况,比如路径不正确,库文件损坏,或者版本不兼容。需要提醒用户检查这些方面,并提供相应的解决方案,如更新MATLAB版本或联系库的提供者。 最后,生成相关问题需要考虑用户可能的后续需求,比如如何验证库是否正确加载,如何解决常见错误,或者如何创建自定义模块库。这样可以帮助用户更全面地理解和解决问题。</think>在Simulink中添加或配置MBD_EF_LIB库的操作步骤如下: 1. **手动加载自定义库** - 在MATLAB命令窗口输入`open_system('MBD_EF_LIB')`直接打开库 - 若库文件不在当前路径,需先添加文件路径: ```matlab addpath('完整路径/MBD_EF_LIB'); savepath; % 永久保存路径 ``` 2. **通过库浏览器访问** - 点击Simulink工具栏的"Library Browser"图标 - 在库浏览器左侧导航栏中展开"Custom Libraries"分类 - 找到MBD_EF_LIB后右键选择"Lock library to prevent edits"[^1] 3. **模块使用方法** - 拖拽所需模块到模型画布 - 双击模块进行参数配置,注意标有"*"的参数影响代码生成[^2] - 对于运算模块需检查数据类型一致性[^3] 4. **代码生成配置(可选)** ```matlab % 在模型初始化回调函数中设置 set_param(gcs, 'CodeGenLibrary', 'MBD_EF_LIB'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值