首页 文章

Simulink,这个m代码块在输入不匹配时如何工作?

提问于
浏览
3

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

我看着这个街区:

mpc1

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

mpc2

该子系统内的主要块是 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

2 回答

  • 2

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

  • 2

    对于Matlab功能块,m代码有两种类型的输入参数 . 您已经知道的输入信号和parameters . 转到编辑数据,您将看到切换到参数,这些变量来自掩码或工作区 .

相关问题