simulink中怎么对一个没有模块的.mdl文件封装呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了simulink中怎么对一个没有模块的.mdl文件封装呢?相关的知识,希望对你有一定的参考价值。

如题,谢谢了,我在一个例子中看见了一个封装的子系统是一个莫有任何模块的子系统,这个怎么封装呀?谢谢了

就是直接把Subsystem模块拖到模型里,然后对其封装即可。
封装参数一般只设置显示部分,例如使用disp函数显示某信息。

这种空子系统一般的作用有两个方面:
1、利用它的回调函数,例如双击时执行某个动作;
2、利用它来保存某些数据。
参考技术A 在Simulink的Ports&Subsystem有一个模块 叫作 Subsystem 你添加进去,然后右击有个create mask进入里面进行设置就可以了 其中 Icon&Ports是 图标方面的设置Parameters 是参数设置Documentation是 模块的描述

matlab编程怎么和simulink交互?

我用simulink画了一个框图,很简单,就是一个正弦信号输入和一个scope显示输出波形,文件名为sinewave.mdl
我关掉simulink之后,怎么通过matlab编程代码,来控制sinewave.mdl里正弦信号的参数(频率等),并且让sinewave.mdl自动运行后显示输出波形?

也就是说,达到的效果就是:我在程序界面输入一个函数及其参数频率,然后程序会自动运行sinewave.mdl并且显示scope波形(其中正弦信号是我输入的频率)。
(1)就是不用自己打开sinewave.mdl,而是在编程界面输入一个命令,然后可以运行出sinewave.mdl中scope的波形。如果直接输入sinewave.mdl的话,确实可以弹出mdl的框图,但是没有scope的波形。我希望输入一个命令后,能运行sinewave.mdl并显示scope的波形。
(2)就是频率,其他的参数我可以类推。我是打算编一个函数,而这个函数的参数用来直接修改sinewave.mdl中sine wave的频率。

1、Simulink中新建“New Model”,按如下电路搭建模型。

2、其中,电源模块和测量模块的参数设置如下。

3、锁相环参数设置如下图所示。

4、运行后,示波器波形如下图所示,可看到精确的锁相。

注意事项:

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多。

参考技术A

基本思路

 

1、运行Simulink模型可以使用sim函数,仿真结果可以通过以下几种方式导出:

(1)设置Scope模块的Save data to workspace

(2)模型中加入Outport模块,并设置模型的Workspace I/O

(3)使用To Workspace模块项工作区导入数据。

 

2、参数的修改可以使用以下方法:

(1)使用工作区变量作为模块参数,例如,Sine Wave模块的Frequency不直接输入数据,而是使用变量名f,并在仿真之前给f赋值。

(2)使用set_param函数直接修改模块参数。

 

需要楼主明确一下要求

(1)所谓【让sinewave.mdl自动运行后显示输出波形】,是指打开模型,在Scope中显示波形,还是自己创建绘图窗口进行绘图?

(2)要修改的有哪些参数?除频率外,还要改什么?

(3)这句话:【在程序界面输入一个函数及其参数频率】,“函数”是指什么?是指准备编写的程序吗?

 

做了一个简单的例子,请参见附件。

直接运行m文件即可,或者指定频率,例如:

zd2138230940810538948(5)

追问

由于字数限制,我写在问题补充里了。

反正就是说:现在我只有一个sinewave.mdl,我编一个程序,比如control ( f ) 然后我在界面执行 control (50) 之后,自动运行sinewave.mdl并且弹出scope的波形,此时sine wave的平率为50。

我就是不知道这个control (f) 怎么写……(再加50分)

追答

把我给的附件中的zd2138230940810538948.m改成control.m就可以了。

哦对了,模型或者使用我提供的那个,或者把你的模型中Sine Wave模块的Frequency参数改成f

追问

我去……大神你太给力了!
最后最后,还想问一下,m文件里第一行和最后一行我知道,是创建函数和打开SCOPE,不过这三行分别是啥意思啊?

if ~nargin, f = 1; end

assignin('base','f',f);

sim('sinewave')

追答

if ~nargin, f = 1; end
用于为频率提供默认值(如果在调用函数时没有提供输入参数,比如直接在编辑器里面按F5运行)。


assignin('base','f',f);
把指定的频率值传递到基本(base)工作区。Simulink模型只能使用基本工作区中的变量。

 

sim('sinewave')

运行指定的Simulink模型。与通过GUI运行不同的是,使用sim函数运行在仿真结束前是不能干预的。

参考技术B 大家没有什么兴趣啊,我后来发现了一个院长关于GUI的帖子,觉得用GUI的界面设计,面向对象的编程技术应该可以实现人机互动,不知道GUI界面能否调用simulink程序
以上回答你满意么?

以上是关于simulink中怎么对一个没有模块的.mdl文件封装呢?的主要内容,如果未能解决你的问题,请参考以下文章

matlab编程怎么和simulink交互?

有关 Simulink MDL 和 SLX 格式的信息?

matlab的simulink文件mdl和slx对比

MATLAB从入门到精通:Simulink仿真必看——连续模块之PID控制器(PID Controller)

simulink添加文本框

simulink模块里的参数随时间变化