Разверните переменные 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. Замените Передачу параметры блоков 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');

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте