Настройка параметра фазы блока Sine wave во время выполнения кода

В разделе определенных обстоятельств вы не можете сконфигурировать параметр Фазы блока Sine Wave, чтобы он появился в сгенерированном коде как настраиваемая глобальная переменная (для получения дополнительной информации смотрите страницу с описанием блока). В этом примере показано, как сгенерировать код, чтобы можно было настроить фазу во время выполнения.

Создайте модель ex_phase_tunable при помощи блока Digital Clock.

open_system('ex_phase_tunable')

Установите поведение параметра по умолчанию на Tunable так, что параметры блока Sine Wave появляются в сгенерированном коде как настраиваемые поля структуры глобального параметра.

set_param('ex_phase_tunable','DefaultParameterBehavior','Tunable')

Сгенерируйте код из модели.

slbuild('ex_phase_tunable')
### Starting build procedure for: ex_phase_tunable
### Successful completion of code generation for: ex_phase_tunable

Build Summary

Top model targets built:

Model             Action          Rebuild Reason                                    
====================================================================================
ex_phase_tunable  Code generated  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 16.427s

В отчете о генерации кода просмотрите файл ex_phase_tunable.c. Алгоритм кода в модели step функция вычисляет выход блока Sine Wave. Параметры блока, включая Фазу, появляются в коде как настраиваемые структурные поля.

file = fullfile('ex_phase_tunable_grt_rtw','ex_phase_tunable.c');
rtwdemodbtype(file,'/* Outport: ''<Root>/Out1'' incorporates:',...
    'ex_phase_tunable_P.SineWave_Bias;',1,1)
  /* Outport: '<Root>/Out1' incorporates:
   *  DigitalClock: '<Root>/Digital Clock'
   *  Sin: '<Root>/Sine Wave'
   */
  ex_phase_tunable_Y.Out1 = sin(ex_phase_tunable_P.SineWave_Freq *
    (((ex_phase_tunable_M->Timing.clockTick1+
       ex_phase_tunable_M->Timing.clockTickH1* 4294967296.0)) * 1.0) +
    ex_phase_tunable_P.SineWave_Phase) * ex_phase_tunable_P.SineWave_Amp +
    ex_phase_tunable_P.SineWave_Bias;

Во время выполнения кода можно присвоить новые значения полю структуры, которое соответствует параметру Phase.

Похожие темы