【问题标题】:Simulink, How does this m-code block work while having input mismatch?Simulink,在输入不匹配的情况下,此 m 代码块如何工作?
【发布时间】:2016-03-11 06:27:22
【问题描述】:

在 MATLAB Simulink 中,我添加了一个 MPC(模型预测控制块)。

我查看了这个块的内部:

在其中有一个名为MPC 的包装子系统。我通过双击打开了这个:

这个子系统内部的主要块是optimizer。这个块是一个以这个头开始的m代码块:

function [xk1, u, cost, useq, status, xest, iAout] = fcn(...
            xk, old_u, ym, ref, md, umin, umax, ymin, ymax, switch_in, ext_mv, MVtarget, isQP, nx, nu, ny, degrees, Hinv, Kx, Ku1, Kut, Kr, Kv, Mlim, ...
            Mx, Mu1, Mv, z_degrees, utarget, p, uoff, voff, yoff, maxiter, nxQP, openloopflag, ...
            lims_inport, no_umin, no_umax, no_ymin, no_ymax, switch_inport, no_switch, enable_value, ...
            return_cost, H, return_sequence, Linv, Ac, ...
            ywt, uwt, duwt, rhoeps, iA, ...
            no_ywt, no_uwt, no_duwt, no_rhoeps,...
            Wy, Wdu, Jm, SuJm, Su1, Sx, Hv, Wu, I1, ...
            A, Bu, Bv, C, Dv, Mrows, nCC, Ecc, Fcc, Scc, Gcc, ...
            nv, no_md, no_ref, no_uref, no_mv, Rscale, MDscale, myindex, ...
            myoff, xoff, CustomEstimation, M, L)
%#codegen
coder.extrinsic('mpcblock_optimizer_double_mex');
coder.extrinsic('mpcblock_optimizer_single_mex');
coder.extrinsic('mpcblock_refmd_double_mex');
coder.extrinsic('mpcblock_refmd_single_mex');

我的问题是为什么代码中函数的输入数量远高于simulink中这个模块的输入端口数量。这些变量是在哪里生成的?例如参数H在这个函数被调用之前是如何创建的?

这里附上 Simulink 文件:

https://www.dropbox.com/s/vx67urpkt9qki9e/simulink.zip?dl=0

【问题讨论】:

  • 有趣的问题!试图弄清楚这一点,但由于您的 MATLAB 版本较新,因此无法打开您的模型。
  • @Mikhail_Sam 在你的 matlab 中请添加一个 MPC 块并尝试打开它。

标签: matlab simulink


【解决方案1】:

我怀疑某些“输入”实际上不是输入,而是传递给函数的参数。有关详细信息,请参阅文档中的 Add Parameter Arguments

【讨论】:

  • 非常感谢。有什么方法可以追踪参数H 的来源? i.stack.imgur.com/WIuLT.png
  • 看看块的掩码,我怀疑它是在这里定义的。 @Daniel 建议在模型资源管理器中查看工作区变量也是一个不错的建议。
【解决方案2】:

对于 Matlab Function 模块,m 代码有两种类型的输入参数。您已经知道的输入信号和parameters。去编辑数据,你会看到哪些被切换到参数,这些变量来自掩码或你的工作区。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
相关资源
最近更新 更多