以比连续速率更快的速率运行Simulink xPC块

时间:2008-09-04 05:40:10

标签: matlab simulink xpc-target

我有一个Simulink xPC目标应用程序,它具有几种不同采样率的离散状态的块,以及一些使用连续状态的部分。我保持连续状态的目的是为了更好的数值积分。

造成问题的原因是:一个街区以非常快的速度(500赫兹)读取设备。应用程序的其余部分可以并且应该以较慢的速率运行(例如,25或50 Hz),因为以最高速率运行它会是过度的,并且因为处理器根本无法将完整的应用程序周期挤入.002秒更快的速度。所以我需要两种费率。但是,连续状态按照Simulink中的定义以整个应用程序的更快离散速率运行!这意味着我现在处于连续状态的任何地方,当25赫兹时,它们被迫以500赫兹的速度运行!

有没有办法强制xPC目标中的连续状态达到应用程序中最快的速率?或者,是否有办法允许某些块以比其他应用程序更快的速度运行?

3 个答案:

答案 0 :(得分:2)

你正在考虑以错误的方式连续求解 - 连续不仅意味着它尽可能快地运行 - 它使用一种根本不同的算法来求解方程而不是离散。因此,它们必须至少与离散求解器一样快。

来自Using Simulink

  

连续求解器使用数字   集成来计算模型   当前的连续状态   从以前的州步骤   步骤和国家衍生物。   连续求解器依赖于模型   用于计算值的块   每次模型的离散状态   步骤

     

数学家已经发展得很广泛   各种数值积分   解决普通问题的技巧   微分方程(ODEs)即   代表连续状态   动态系统。 Simulink提供了一个   广泛的固定步骤和   每个变步长连续求解器   实施特定的ODE解决方案   方法(见Solvers)。

     

离散求解器主要存在于   解决纯粹的离散模型。他们   计算下一个模拟时间步   对于一个模型,没有别的。他们是这样   不计算连续状态和它们   依靠模型的块来更新   模型的离散状态。

所以结果是没有它不足以使连续运行比最快的离散解算器慢 - 否则它们根据定义不连续。您应该重新考虑为什么将它们指定为连续的。

你想通过减慢连续求解器来实现什么?这是模拟时间/性能问题吗?

- 亚当

答案 1 :(得分:0)

我对此的看法是无法做到的。解决这个问题的一种方法是用离散状态替换连续状态(可能是中间速率,比如说100赫兹),然后用手指指出精度损失是可以承受的。

也许有可能隔离一个块并以某种方式以更快的速度单独运行它,但我不知道。

答案 2 :(得分:0)

在计算机等数字处理器中无法进行真正的连续计算。

MATLAB / Simulink的“连续”意味着“我将(动态)尝试猜测离散步长是否足够小,以便在您的应用中离散化误差非常小”。

如果您已经知道,通过了解您的应用,20ms(50Hz)足够小,那么使用离散--50Hz。