【问题标题】:Cannot change the dimensions of run-time parameter in Model block无法更改模型块中运行时参数的尺寸
【发布时间】:2014-11-01 13:35:26
【问题描述】:

我有一个带有 Model 模块的 Simulink 模型,我正在使用它来避免某些功能的重复。

当我尝试运行父模型时,我收到以下错误:

  • 无法更改运行时参数“增益”的维度 'TranslationChannel/First-Order Filter1/Model/Continuous/A' 来自 模型执行时 [1x1] 到 [0x0]
  • 中的设置无效 'TranslationChannel/二阶过滤器/模型/连续/A*x/A11' 参数“增益”
    • 评估参数“增益”时出错 'TranslationChannel/二阶过滤器/模型/连续/A*x/A11'
      • 引用不存在的字段“A11”。
  • 中的设置无效 'TranslationChannel/Tilt/Model/Continuous/A*x/A11' 用于参数 '获得'
    • 评估参数“增益”时出错 'TranslationChannel/Tilt/Model/Continuous/A*x/A11'
      • 参考 不存在的字段“A11”。

子模型如下:

错误指的块是First Order Fliter 1,参数是:

我该如何解决这个错误,或者,有没有更好的方法在模型中多次调用同一系列的块?

父模型如下:

编辑: 在与 Ander 讨论之后,我尝试将步进源直接连接到模型块以消除任何可能的空信号并得到相同的错误,这表明问题是由于调用第二个模型造成的。如果有人可以进一步提供帮助,那就太好了。

编辑 2:我已经确认数据正在传递到模型中。从子模型中删除过滤器使其工作正常。错误发生在过滤器的屏蔽部分。

【问题讨论】:

  • 好吧,您似乎在 3 个块中有错误。我的猜测:error1:信号是否随时停止存在?输入是否变为不存在?看起来您的信号在某些时候从标量 [1x1] 变为不是信号 [0x0]。错误2:打开“二阶过滤器”并检查参数A11,它未定义。为什么你有一个未定义的参数?与错误 3 相同。什么是 A11,为什么未定义?
  • 这个问题很难回答,因为我们不知道是什么导致了错误。真正的问题是是什么导致参数在运行时将大小从 1x1 更改为 0x0?块的输入是什么样的?如果您可以隔离导致问题的模块和输入信号以重现问题,那么您就可以更好地找出解决方案。
  • @AnderBiguri 这些参数是用户无法直接访问的屏蔽参数(一阶滤波器是屏蔽子系统)。实际上,Steve,您可以查看 First-Order Filter 模块的掩码以找出问题所在。其他块中的其他错误是我认为的第一个错误的结果。
  • 你确定 Matlab 给你一个带有未定义参数的 simulink 块吗?我不这么认为...
  • 错误发生在一阶滤波器内的增益块上,正如@am304 所说,它被屏蔽并为我生成。如果我将过滤器子系统放在主模型中代替模型块,一切正常。输入应该只是一个双精度。

标签: matlab simulink


【解决方案1】:

我已经解决了这个问题,我使用库而不是模型,并将过滤器块放入库内的子系统中,然后将其拖到我的主模型中。

这允许我一次调整参数并让它一次更改所有块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2021-07-21
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多