如何在 simulink 中使用可变采样时间来记录数据?

问题描述 投票:0回答:1

我在 simulink 中有一个模型,它控制实时应用程序。我有一个预定义的测试计划,它基本上是一个表,使用状态流程图逐行处理。在某些步骤中,记录非常小的时间步长以查看应用程序如何处理输入的详细信息非常重要。对于测试计划中的其他步骤,记录这么多步骤并不是很重要,因为我必须再次调节我的测试装置或类似的东西。 “可变采样率”可以是模型基本采样率的倍数。有没有办法为每行记录不同采样时间的数据?测试计划如下图所示。命令中的每一行都有匹配的采样时间。在我的状态流程图中,我使用每一行中的值将某些内容发送到我的测试设备。在反馈循环中,如果满足要求,它将进入测试计划中的下一行。达到目标值。

测试计划:

testplan

Stateflow图流程: Stateflow chart process

我在测试计划本身中定义了每行的采样时间,并通过处理整个测试计划的 staeflow 图表给出了该值。我尝试使用 matlab 功能块将变量写入基础工作区。然后我在工作区块中使用该变量作为采样时间。奇怪的是,它改变了第一条处理线的工作区块的采样时间,但在整个模拟中保持这种状态。我也尝试了同样的速率转换块。

matlab variables simulink sample-rate
1个回答
0
投票

您可以将日志记录放入触发子系统中,并从 Stateflow 图中触发日志记录事件。

为了说明这一点,我将建立一个模型,每秒在

0.1
0.01
采样率之间切换,这样我就不需要您拥有的速率表,但无论哪种方式,我们都有一些日志记录率
dt

main system

状态流图可以位于您现有的状态流内,或者只是将状态流中的

dt
输出到另一个图表中,如下所示:

chart

输出

event
dt
秒触发一次,我们可以使用此事件来触发日志子系统。在我的示例中,我刚刚在子系统中获得了一个范围,但您可以做任何事情:

triggered subsystem

您可以在示波器的输出中看到这一点,平滑/快速记录 1 秒,然后粗略记录 1 秒:

scope

© www.soinside.com 2019 - 2024. All rights reserved.