由于求解器的配置错误 "fixed-step"

error due to the configuration of the solver "fixed-step"

我用 am304.But 回答我之前的问题时提到的配置尝试了我的整个 Simulink 模型,我出现了关于固定步长的错误。不幸的是,我无法理解它的意思:

计算出的固定步长 (2.195764022074938e-011) 比模型中所有离散采样时间小 1000000 倍 'test'。此固定步长已根据以下指定的离散采样时间计算得出:

[2.247191011235955e-005 0]
[4.49438202247191e-005 0]
[0.1 0]
[1 0]

以及以下传播的离散采样时间:

[2.195764022074938e-011 0]
[4.391528044149876e-011 0]
[4.885574949116737e-008 0]
[5.374132444028412e-007 0]
[9.380303902304136e-006 0]

在模型中。您可以通过切换到可变步长求解器或指定固定步长大小来修复此错误,这样离散采样时间(包括周期和偏移量)都是固定步长大小的整数倍。

我已将求解器更改为可变步长:它可以工作但是,我在第一个与另一个缓冲区相关的问题(最后一个(模型中间还有其他缓冲区))遇到了同样的问题:

S-Function 'sdsprebuff2' 在 'test/ALAMOUTI Receiver/Buffer1' 中报告的错误:此块的所有采样时间必须是离散的。 不允许连续或恒定的采样时间。

那么你能帮我解决这个问题吗? 提前致谢

我假设您的代码中某处有一些 fs,您正在对某些内容进行采样。 Simulink 告诉您的是:如果您使用固定步长,请使用 fs.

的整数倍

这是有道理的,如果你的fs是1Hz,你每0.6s做一个模拟步,那么time=1s(和其他)不会被采样,因为你的模拟步将是[0 0.6 1.2 1.8 ...].

所以,你既可以让Simulink自己选择仿真步长(可变步长),也可以定义一个固定步长,但必须与fs成正比。例如:如果 fs=1 ,那么固定步长可以是:1, 0.5, 0.333333,0.25, 0.2, ...