【问题标题】:sampling time counter in simulinksimulink中的采样时间计数器
【发布时间】:2014-08-15 00:35:13
【问题描述】:

如何从 simulink 中的“时钟”块中获取 simulink 时间,然后增加一个计数器 (k) 在每个采样周期 Ts 的 matlab 嵌入式函数中?

假设simulink时钟时间为t,那么我们可以考虑

if mod(t, Ts)==0
   k=k+1;
end

但这不起作用,因为 simulink 时间是可变的。 任何的想法?谢谢。

【问题讨论】:

    标签: simulink sampling


    【解决方案1】:

    我假设您只对可变步长求解器执行此操作感兴趣。让我们假设您的采样时间是每两秒一次,您的求解器是ode23t,模拟运行十秒。然后,您希望变量的值为 5。

    现在,您设置模型的方式如下面的屏幕截图所示。 Constant 是您的采样时间,时钟是时间的来源。您需要一个 Rate Transition 模块来确保非周期性时钟输入的周期性输出。我已经为它设置了采样时间 1。

    最后,在您的代码中,您需要一个persistent 变量。您也可以使用 Simulink 的 Data Store Read 和 Write 模块,但这对我来说似乎更简单。

    【讨论】:

    • 感谢您提供的解决方案。问题一:为什么将 Rate Transition 模块的输出端口采样时间设置为 1?
    • 这可以是任何你想要的。 1 表示 1 秒。对于时间测量来说,这似乎是一个不错的偶数。但是,您可以将其设置为 0.5 秒,甚至更小。请注意,这将影响输入到 MATLAB Function 模块的时钟信号的更新频率。
    • 谢谢。我现在明白了,但这并没有解决我真正想做的事情。但是,您的答案是正确的。您有电子邮件向您解释问题吗?
    • 我真正的问题如下。我有一个连续系统,我想通过离散模型预测控制器来控制这个系统。嵌入式 matlab 函数内的模型预测控制器将在每个采样时间创建一个新的控制输入。否则,它将在其他时刻连续应用在前一个采样时间计算的 OLD 控制输入。结果,我想从时钟时间确定发生 SAMPLING INSTANT 以更新控制输入..
    • 因此,我的新问题归结为:从 simulik 中的时钟时间,我们如何理解采样时刻发生了?正如我在问题开头所写的那样,如果我使用“mod(t,Ts)==0”,这将不起作用。我需要这样的东西来检测连续时钟时间的采样时刻。
    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多