我有一个Simulink xPC目标应用程序,它具有几种不同采样率的离散状态的块,以及一些使用连续状态的部分。我保持连续状态的目的是为了更好的数值积分。
造成问题的原因是:一个街区以非常快的速度(500赫兹)读取设备。应用程序的其余部分可以并且应该以较慢的速率运行(例如,25或50 Hz),因为以最高速率运行它会是过度的,并且因为处理器根本无法将完整的应用程序周期挤入.002秒更快的速度。所以我需要两种费率。但是,连续状态按照Simulink中的定义以整个应用程序的更快离散速率运行!这意味着我现在处于连续状态的任何地方,当25赫兹时,它们被迫以500赫兹的速度运行!
有没有办法强制xPC目标中的连续状态达到应用程序中最快的速率?或者,是否有办法允许某些块以比其他应用程序更快的速度运行?
答案 0 :(得分:2)
你正在考虑以错误的方式连续求解 - 连续不仅意味着它尽可能快地运行 - 它使用一种根本不同的算法来求解方程而不是离散。因此,它们必须至少与离散求解器一样快。
连续求解器使用数字 集成来计算模型 当前的连续状态 从以前的州步骤 步骤和国家衍生物。 连续求解器依赖于模型 用于计算值的块 每次模型的离散状态 步骤
数学家已经发展得很广泛 各种数值积分 解决普通问题的技巧 微分方程(ODEs)即 代表连续状态 动态系统。 Simulink提供了一个 广泛的固定步骤和 每个变步长连续求解器 实施特定的ODE解决方案 方法(见Solvers)。
离散求解器主要存在于 解决纯粹的离散模型。他们 计算下一个模拟时间步 对于一个模型,没有别的。他们是这样 不计算连续状态和它们 依靠模型的块来更新 模型的离散状态。
所以结果是没有它不足以使连续运行比最快的离散解算器慢 - 否则它们根据定义不连续。您应该重新考虑为什么将它们指定为连续的。
你想通过减慢连续求解器来实现什么?这是模拟时间/性能问题吗?
- 亚当
答案 1 :(得分:0)
我对此的看法是无法做到的。解决这个问题的一种方法是用离散状态替换连续状态(可能是中间速率,比如说100赫兹),然后用手指指出精度损失是可以承受的。
也许有可能隔离一个块并以某种方式以更快的速度单独运行它,但我不知道。
答案 2 :(得分:0)
在计算机等数字处理器中无法进行真正的连续计算。
MATLAB / Simulink的“连续”意味着“我将(动态)尝试猜测离散步长是否足够小,以便在您的应用中离散化误差非常小”。
如果您已经知道,通过了解您的应用,20ms(50Hz)足够小,那么使用离散--50Hz。