加载中…
个人资料
MATLAB技术论坛
MATLAB技术论坛
  • 博客等级:
  • 博客积分:0
  • 博客访问:589,953
  • 关注人气:489
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[原创]Simulink封装子系统(mask)回调函数触发条件和执行次序

(2013-05-26 11:01:54)
标签:

simulink

封装子系统

初始化

matlab

分类: MATLAB
[原创]Simulink封装子系统(mask)回调函数触发条件和执行次序


http://attach.matlabsky.com/data/attachment/forum/201305/25/202611urajuyeku2jyubi1.png.thumb.jpg 

玩过Simulink封装系统,对上面的界面应该不陌生。在封装子系统(Mask Editor)中有三个地方可以输入自定义命令的,分别是:

(1)Icon Drawing commands,用来绘制block的形状。
(2)Dialog Callback,当设置参数时,执行相关响应。
(3)Initialization command,仿真时的一些初始化命令。


其中(1)和(3)估计很多人都知道用来干什么的,但是(2)会用的同学可能不多。本文不打算详解介绍如何设置这三个选项,只是讨论什么时候触发相应的回调函数,以及这些回调函数的执行顺序。关于创建动态封装系统(就会全部使用到上面的三个函数),将在下一个专题中介绍,因为只有知道他们的触发条件和执行顺序才可以合理的安排代码呀!

一、绘图命令执行(Drawing Command Execution)

Simulink在下列情况下会执行图标绘制命令,重绘模块的图标:


其实上面说的不全,很多时候都会导致图标重绘,一般只要执行初始化命令之后,都会执行图标重绘。

二、初始化命令执行(Initialization Command Execution)



三、对话框回调函数(Dialog Callback Code Execution)

Simulink在下列情况执行封装模块的对话框回调函数:



四、三个回调函数的执行顺序(Order of Mask Callback)

从上面的函数触发条件可以看出,有些事件可能导致三个函数都被执行(比如开始仿真、更新框图、修改参数),但执行顺序如何呢?为了得到答案,我们定义了一个简单封装系统,然后同时设置了三个函数。

(1)双击打开封装模块时
正在执行"斜率(k)"的Dialog Callback...
正在执行"截距(b)"的Dialog Callback...

(2)修改参数k,然后摁Tab键
正在执行"斜率(k)"的Dialog Callback...

(3)修改参数b,然后直接点击Apply按钮
正在执行"截距(b)"的Dialog Callback...
正在执行Initialzation...
正在执行Ico Drawing Commands...

(4)旋转封装子系统(Ctr+R)
正在执行Initialzation...
正在执行Ico Drawing Commands...

(5)更新Simulink框图(Ctr+D)
正在执行"斜率(k)"的Dialog Callback...
正在执行"截距(b)"的Dialog Callback...
正在执行Initialzation...
正在执行Ico Drawing Commands...

(6)关闭Simulink,然后重新打开模型
正在执行Initialzation...
正在执行Ico Drawing Commands...

(7)删除图标绘制命令,重新打开模型
什么回调函数都没有执行

对于封装子系统,大概总结如下(不一定完全正确,但是基本差不多):
(1)对话框回调函数必须手工操作(Tab按钮、更新框图,点击Apply)才会执行,set_param函数是无法触发对话框回调函数的
(2)初始化命令很容易触发,只要你修改参数或稍微动动,就会执行。
(3)目前的测试没有发现绘图命令和初始化命令分开,一般只要执行初始化,绘图命令接着就会被执行。
(4)开始仿真,更新框图、修改参数这样的大操作一般都会触发三个命令,只是前三者是模型中所有封装模块都执行,而修改参数只是相应的模块执行。
(5)从上面的执行结果来看,三个回调函数的执行顺序是:对话框回调函数 > 初始化命令 > 图标重绘命令。
(6)有些命令既可以放在初始化中,也可以放在对话框回调函数中,还可以放在图标重绘命令的。比如判断设置的参数是否合法,假如非数字就报
错。那每个函数中到底应用填写什么代码,以及如何创建动态封装系统,这个我们可能在下一个主题中讲解。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有