我想在模拟运行时不断地将simulink信号数据读入命令行。 get_param()
似乎是阻塞的,因此当放入无限循环时,它不会很有用。
我现在正在尝试使用UDP发送块,但我似乎无法接收数据。我的UDP块通过远程端口localhost
和本地端口25000
将数据发送到25001
。
在matlab中我使用以下代码,但它只是超时而没有数据
u=udp('127.0.0.1', 25001,'LocalPort',25000);
fopen(u)
fread(u)
fclose(u)
delete(u)
我可以选择将simulink信号数据连续读入Matlab CLI吗?
答案 0 :(得分:0)
使用" set_param()"进行控制模拟命令如下:
set_param('sys','SimulationCommand','WriteDataLogs')
对于一个工作示例,请键入" sldemo_varsize_basic"在matlab命令窗口中。然后上面的命令变为
set_param('sldemo_varsize_basic','SimulationCommand','WriteDataLogs')
如果您将模拟时间设置为足够大并开始模拟,那么" simout,simout1"," tout"和" xout"每次发出上述命令时,都会在工作区中创建/更新变量。
不幸的是,我无法找到有关此功能的高质量文档。
答案 1 :(得分:0)
您是否尝试在模拟过程中存储模型输出的值?这是不可能的,因为变量'simout,simout1“,”tout“,”xout“等只有在模拟完毕后才会创建。
为了在模拟过程中读取/存储出口的值,您必须将“运行时对象”附加到出口。 请参阅Simulink文档中的“模拟期间访问块数据”或查看此链接:http://in.mathworks.com/help/simulink/ug/accessing-block-data-during-simulation.html?s_tid=gn_loc_drop
希望有所帮助:)
这里已经使用RunTime Objects回答了这个问题,如上所述: https://stackoverflow.com/a/17006419/6580313