Определите и обновите входные данные при помощи языка MATLAB

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

Необходимые файлы

Эта процедура имеет следующие зависимости файла:

  • slrt_ex_osc_inport - Демпфированный генератор, который принимает свои входные данные от входного порта In1 и отправляет свой мультиплексированный выход в выходной порт Out1. Чтобы открыть эту модель, в Командном Окне MATLAB, введите:

    open_system(fullfile(matlabroot, 'toolbox', 'slrealtime', ...
    'examples', 'slrt_ex_osc_inport'))
  • slrt_ex_inport_square.mat- Одна секунда выхода из блока Signal Generator, который сконфигурирован для вывода квадратной волны. Чтобы загрузить эти данные, в Командном Окне MATLAB введите:

    (load(fullfile(matlabroot, 'toolbox', 'slrealtime', ...
    'examples', 'slrt_ex_inport_square.mat'))
  • slrt_ex_inport_sawtooth.mat - Одну секунду выхода из блока Signal Generator, который сконфигурирован для вывода пилообразной волны. Чтобы загрузить эти данные, в Командном Окне MATLAB введите:

    (load(fullfile(matlabroot, 'toolbox', 'slrealtime', ...
    'examples', 'slrt_ex_inport_sawtooth.mat'))

Прежде чем запускать эту процедуру, перейдите в рабочую папку.

Сопоставьте входной порт, чтобы использовать квадратную волну

Эта процедура сопоставляет входной порт.

Откройте slrt_ex_osc_inport.

model = fullfile(matlabroot, 'toolbox', 'slrealtime', ...
'examples', 'slrt_ex_osc_inport'));
open_system(model);
save_system(model,'H:\workdir\slrt_ex_osc_inport.slx');

Загрузка slrt_ex_inport_square.mat, а затем назначьте square во временную переменную рабочей области.

load(docpath(fullfile(docroot, 'toolbox', 'slrealtime', ...
'examples', 'slrt_ex_inport_square.mat')));
waveform = square;

Откройте slrt_ex_osc_inport/In1

inport = [model '/In1'];
load_system(inport);

Отключите интерполяцию входных данных.

set_param(inport,'Interpolate','off');

Установите переменную внешнего входа.

set_param(model,'ExternalInput','waveform');

Загрузка внешних входных данных.

set_param(model,'LoadExternalInput','on');

Теперь можно создавать, загружать и выполнять приложение реального времени.

slbuild(model);
tg = slrealtime('TargetPC1');
load(tg,model);
start(tg);

Просмотрите сигналы в Данные моделирования Inspector.

Simulink.sdi.view;

Обновите Inport, чтобы использовать пилообразную волну

Можно обновить входные данные, чтобы использовать другой файл данных, не перестраивая приложение реального времени. The slrt_ex_osc_inport.mldatx файл должен находиться в рабочей папке.

Загрузка slrt_ex_inport_sawtooth.mat, а затем назначьте sawtooth к временной переменной, которую вы использовали с Root Inport Mapper.

load(docpath(fullfile(docroot, 'toolbox', 'slrealtime', ...
'examples', 'slrt_ex_inport_sawtooth.mat')));
waveform = sawtooth;

Создайте объект приложения.

app_object = SimulinkRealTime.Application('slrt_ex_osc_inport');

Обновление объекта приложения.

updateRootLevelInportData(app_object);

Загрузите обновленный объект на целевой компьютер и выполните его.

tg = slrealtime;
load(tg, 'slrt_ex_osc_inport');
start(tg);

Просмотрите сигналы в Данные моделирования Inspector.

Simulink.sdi.view;

Похожие темы