zoukankan      html  css  js  c++  java
  • 7进阶、Simulink回调函数

    为什么使用回调函数?为了使用户在数据初始化、模块拖拽、仿真结果绘图操作等过程中更加便利,表现力更加丰富,使模型和模块的动作,甚至跟模块端口相连

    的信号的动作都能够由用户自定义,用户可以建立使用便利、具有个性化的模型执行过程。

    7.1 什么是回调函数

    Callback functions 是因某种操作而触发对其调用的函数,如按下按钮或双击操作等。

    对于模型来说,回调函数在Simulink有举足轻重作用。当执行一系列动作,如选中某个模块或仿真开始时,回调函数便被触发执行。使用回调功能可用来执行一个MATLAB脚本或调用MATLAB函数。Simulink中回调函数的触发可通过模块、端口或模块的参数设置来实现。

    Simulink回调函数应用场合:

    • 打开Simulink模型时自动加载变量到工作空间;
    • 双击模块时执行MATLAB脚本;
    • 仿真开始前进行模型参数初始化;
    • 仿真结束后将仿真出来的数据绘制图像;
    • 关闭模型时清除相关变量或关闭图像。

    7.2 回调跟踪

        作用:可以清楚显示Simulink如何调用回到函数以及以何种顺序调用他们。

        使能回调跟踪:在Preferences对话框中选择Callback tracing选项,或 在Command Window中执行set_param(0, 'Callback Tracing', 'on')

    7.3 模型回调函数

        创建模型回调函数:方法1,模型菜单中,File--Model Properties--Model Properties

     左侧是回调函数的名字,表征被调用时刻,从上到下按时间先后排序。点击任意一个函数,在右侧框内编写函数内容。

    在Command Window或M脚本文件中通过M代码设置模型回调函数。即通过set_param设置回调函数。

    set_param指定一个MATLAB表达式,这个表达式表示回调函数的内容。

    举例说明set_param设置回调函数的方法:

    7.4 模块回调函数

    右键模块--properties打开Callbacks列表和回调函数内容编辑框。在右侧填入回调函数的代码内容。

    或者使用set_param指定MATLAB表达式作为某个回调函数的内容。如设定某个模块被删除时,显示This block is being deleted

    在命令行中输入代码并回车执行: set_param(gcbh, 'DeleteFcn',  'msgbox("This block is being deleted!"); ' ); 

    7.5 端口回调函数

    7.6 参数回调函数的使用

    7.7 回调函数使用例程

    7.7.1 打开模型时自动加载变量

    例如,现有一个模型包含增益模块Gain且增益为K,Simulink就会在Base Workspace中搜寻变量K,使用以下方法,可以在每次打开模型时自动定义K,可以在单独M脚本中定义变量K,然后使用PreLoadFcn回调函数来执行此脚本。

    7.7.2 双击模块执行MATLAB脚本

    7.7.3 开始仿真前执行命令

    7.7.4 提示模块端口的连线情况

    7.7.5 统计模型中所有模块信息

  • 相关阅读:
    [CSP-S模拟测试]:reverse(模拟)
    BZOJ1559 [JSOI2009]密码 【AC自动机 + 状压dp】
    BZOJ2257 [Jsoi2009]瓶子和燃料 【裴蜀定理】
    BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】
    BZOJ1857 [Scoi2010]传送带 【三分法】
    BZOJ2118 墨墨的等式 【最短路】
    BZOJ5340 [Ctsc2018]假面 【概率dp】
    BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】
    BZOJ4869 [Shoi2017]相逢是问候 【扩展欧拉定理 + 线段树】
    BZOJ2001 [Hnoi2010]City 城市建设 【CDQ分治 + kruskal】
  • 原文地址:https://www.cnblogs.com/snoopingmind/p/14421934.html
Copyright © 2011-2022 走看看