Сдвиньте переменный MATLAB с помощью скриптов MATLAB

Можно встраивать MATLAB® переменные в базовом рабочем пространстве с командами MATLAB и с помощью языка MATLAB изменяют свои значения во время выполнения. В режиме normal или 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 единиц. Рисунки показывают ключевые изменения.

    Val == 30

    Val == 90

    Val == 180

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

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

Похожие темы