如何在模拟过程中将simulink数据导出到工作空间?

Po-*_*Lai 7 matlab simulink

我想在模拟过程中从simulink检索数据,并使用串行网络功能将这些数据发送到另一个程序.因为我需要使用另一个程序来做一些技巧并将命令发送回simulink,所以我必须在运行期间从simulink获取数据,以便另一个程序可以做出正确的命令.

我尝试使用To Workspace块导出数据.

在此输入图像描述

但是,我只能在模拟的最初阶段获得价值.

我还尝试使用范围并更改了一些属性:选中将数据保存到工作区并取消选中限制数据到最后.

在此输入图像描述

在此输入图像描述

首先,我开始模拟,我发现ScopeData没有出现在Workspace中.只有当我停止模拟时,ScopeData才会出现在工作区中.

在此输入图像描述

之后,我可以使用ScopeData.signals.values来获取值.

但我想要的是:当我开始模拟时,ScopeData会出现在工作区中,以便我可以将这些数据发送到其他程序.

有谁知道如何实现这一目标?

我发现这个页面可能有用,但我仍然不知道在模拟过程中如何连续导出数据.

pm8*_*m89 10

用于get_param从当前时间读取数据.也可以set_param使用增益或其他块将数据发送回Simulink .

一个例子get_param

首先加载开始模拟:

load_system('myModel')
set_param('myModel','SimulationCommand','Start');
Run Code Online (Sandbox Code Playgroud)

要读取simulink模型的任何行上的数据:

  1. 获取一个simulink块对象(让我们尝试一个名为Clock的Clock):

    block = 'myModel/Clock';
    rto = get_param(block, 'RuntimeObject');
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后在该块的第一个(或任何)输出端口(或输入)上获取数据.

    time = rto.OutputPort(1).Data;
    
    Run Code Online (Sandbox Code Playgroud)

您可以在计时器回调中进行读取.

这也许会有所帮助:Simulink的命令行功能

  • 虽然这可以为您提供一些数据,但计时器在MATLAB中工作并且与Simulink仿真时间无关,因此无法保证在您可能需要的仿真时间获取数据. (3认同)