www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xreglolimot/evalbuild.m

    function Blk = evalbuild(m,sys)
%EVALBUILD adds an evaluation simulink block to a simulink model
%
% Blk = evalbuild(m,sys)

%  Copyright 2000-2014 The MathWorks, Inc. and Ford Global Technologies, Inc.

kernel = get(m, 'kernel');

evalBlk = 'mbcSLModels/TwoStage/lolimotEval';
destBlk = [sys, '/lolimot', kernel, 'Eval'];
Blk = add_block(evalBlk, destBlk);

% break library link
set_param(Blk, 'linkstatus', 'none');

% set block script
script = getScript(m);
setBlockScript([destBlk, '/kernelEvalFun'], script);


% Find the betaModel_x2fx block
x2fxBlock = find_system(Blk, 'lookundermasks', 'all', 'name', 'betaModel_x2fx');
x2fxBlockName = [get_param(x2fxBlock, 'parent'), '/', get_param(x2fxBlock, 'name')];
set_param(x2fxBlock, 'linkstatus', 'none');

% Add the correct kernel
switch class(m.betamodels{1}),
case 'xreglinear',
    x2fxEvalPathToAdd = 'mbcSLModels/TwoStageJacob/xreglinear_x2fx';
    x2fxEvalBlockToAdd = 'xreglinear_x2fx';
    x2fxEvalBlock = add_block(x2fxEvalPathToAdd, ...
        [x2fxBlockName, '/', x2fxEvalBlockToAdd]);
    set_param(x2fxEvalBlock, 'linkstatus', 'none');
case 'xregcubic'
    x2fxEvalPathToAdd = 'mbcSLModels/TwoStageJacob/xregcubicJacob/xregcubicJacobFun';
    x2fxEvalBlockToAdd = 'xregcubicJacobFun';
    x2fxEvalBlock = add_block(x2fxEvalPathToAdd, ...
        [x2fxBlockName, '/', x2fxEvalBlockToAdd]);
    set_param(x2fxEvalBlock, 'linkstatus', 'none');
    
    xregcubicModel = m.betamodels{1};
    jacobScript = getJacobScript(xregcubicModel);
    setBlockScript([x2fxBlockName, '/', x2fxEvalBlockToAdd], jacobScript);
otherwise
    error(message('mbc:xreglolimot:InvalidState1'));
end

x2fxEvalBlockName = get_param(x2fxEvalBlock, 'name');

% Wire up its input and output
add_line(x2fxBlock, 'x/1', [x2fxEvalBlockName, '/1']);  
add_line(x2fxBlock, [x2fxEvalBlockName, '/1'], 'fx/1');

set_param(x2fxEvalBlock, 'Position', [160, 50, 310, 175]);