2016-07-27 182 views
0

我想在仿真运行时不断读取simulink信号数据到命令行。 get_param()似乎被阻塞,因此在放入无限的while循环时不起作用。在仿真过程中将simulink信号数据读入matlab

我现在试图使用UDP发送块,但我似乎无法接收数据。我的UDP块通过远程端口25000和本地端口25001将数据发送到localhost

在MATLAB我用下面的代码,但它只是超时,没有数据

u=udp('127.0.0.1', 25001,'LocalPort',25000); 
fopen(u) 
fread(u) 
fclose(u) 
delete(u) 

什么是我的选择,连续地读出SIMULINK信号数据到Matlab CLI?

+0

你是想为“一个还是两个”信号做这个,还是想要做很多信号?您是否想要/需要MATLAB Workspace中的实际数据,还是只想在命令窗口中显示数据值(即作为文本消息的一部分)而不是存储它? –

回答

0

控制仿真使用 “set_param()” 命令等如下:

set_param('sys','SimulationCommand','WriteDataLogs')

对于在MATLAB命令窗口的工作示例,键入 “sldemo_varsize_basic”。然后,上面的命令变得

set_param('sldemo_varsize_basic','SimulationCommand','WriteDataLogs') 

如果设置仿真时间足够大,并开始模拟,在“simout,simout1”,“吹捧”,并在创建/更新在你每次工作区“XOUT”变量发出上面的命令。

不幸的是,我无法找到这个功能的高质量文档。

+0

嘿,数据日志不可用_during_模拟。只有一次模拟停止后,它们才可用。 – Akanksha

0

您是否试图在模拟期间存储模型输出的值?这是不可能的,因为变量'simout,simout1“,”tout“,”xout“等仅在仿真结果为OVER时创建。

为了在仿真过程中读取/存储输出值,必须附加一个“Runtime对象”到outports Simulink的文档中请参阅“访问模块数据在仿真”或看到此链接:http://in.mathworks.com/help/simulink/ug/accessing-block-data-during-simulation.html?s_tid=gn_loc_drop

希望它能帮助:)

这个问题已经被使用在这里找到答案RunTime对象,如上所述: https://stackoverflow.com/a/17006419/6580313