Разверните переменные MATLAB со сценариями MATLAB

Можно встроить переменные MATLAB® в базовое рабочее пространство с командами MATLAB и использовать язык MATLAB, чтобы изменить их значения во время выполнения. В нормальном или режиме Accelerator, Simulink® передает новые значения модели, которая симулируется. В режиме external mode Simulink передает новые значения приложению реального времени, которое запускается в процессе привилегированного режима.

В данном примере ваша цель состоит в том, чтобы минимизировать звенение в передаточной функции. Для улучшенной производительности вы встроили параметры блоков. Когда вы встраиваете параметры блоков, параметры появляются как ненастраиваемые константы в сгенерированном коде. Чтобы сделать отдельный параметр настраиваемым, используйте переменную MATLAB с классом памяти кроме auto сохранить параметр в памяти.

Можно постоянно сохранить объекты параметра и другие внешние данные в словаре данных.

Эта процедура использует модель sldrtex_inlined передаточной функции прямоугольной волны (matlab: open_system(docpath(fullfile(docroot, 'toolbox', 'sldrt', 'examples', 'sldrtex_inlined')))).

Во-первых, установите ядро Simulink Desktop Real-Time™ и cd к рабочей папке.

  1. Открытый sldrtex_inlined и блок Scope.

    model = 'sldrtex_inlined';
    open_system(fullfile(docroot, 'toolbox', 'sldrt', 'examples', model));
    scname = [model '/Scope'];
    open_system(scname)
  2. В базовом рабочем пространстве создайте объект параметра, сконфигурированный, чтобы сохранить параметр как глобальную переменную.

    Dmp = Simulink.Parameter([1 70 10000]);
    Dmp.StorageClass='ExportedGlobal';
  3. Замените параметры блоков Transfer Fcn Denominator с объектом параметра.

    xfername = [model '/Transfer Fcn'];
    set_param(xfername,'Denominator','Dmp');
  4. Начните выполнение с исходного Dmp значение переменных.

    set_param(model,'StopTime','Inf');
    set_param(model,'SimulationMode','external')
    set_param(model,'SimulationCommand','connect')
    set_param(model,'SimulationCommand','start')
  5. Разверните Dmp переменная из 30 к 180 30.

    for Val = 30 : 30 : 180
        Dmp.Value = [1 Val 10000];
        set_param(model,'SimulationCommand','update')
        
        pause(2.0)
    end

    Блок Scope показывает изменения в 30 единичных интервалах. Ключевые show изменения фигуры.

    Val == 30

    Val == 90

    Val == 180

  6. Остановка выполнения.

    set_param(model,'SimulationCommand','stop');

Похожие темы