Регистрация данных с Инспектором данных моделирования (SDI)

В этом примере показано, как использовать Simulink® Real-Time™ с журналом SDI данных сигнала. Сигналы регистрируются во время выполнения модели. В конце запуска интерфейс SDI отображает сигнал. Этот пример показывает, как получить сигналы от интерфейса SDI при помощи командной строки.

Открытый, сборка и загрузка модель

Откройте модель slrtex_file_logging. Эта модель генерирует 20 синусоид, каждый имеющий различную амплитуду.

Примечание: Осциллографы типа 'цель' ограничиваются 10 сигналами.

Откройте модель.

mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if all(~strcmp('slrtex_file_logging', systems))
    mdlOpen = 1;
    open_system(fullfile(matlabroot,'toolbox','slrt','slrtexamples','slrtex_file_logging'));
end

Создайте модель и загрузите на целевой компьютер

  • Сконфигурируйте для немногословной сборки.

  • Сборка и приложение загрузки.

set_param('slrtex_file_logging','RTWVerbose','off');
rtwbuild('slrtex_file_logging');
### Starting Simulink Real-Time build procedure for model: slrtex_file_logging
Warning: This model contains blocks that do not handle sample time
changes at runtime. To avoid incorrect results, only change
the sample time in the original model, then rebuild the model. 
### Successful completion of build procedure for model: slrtex_file_logging
### Created MLDATX ..\slrtex_file_logging.mldatx
  • Закройте модель, если мы открыли ее.

if (mdlOpen)
    bdclose('slrtex_file_logging');
end

Запустите модель

Используя переменную объекта Simulink Real-Time, tg, запустите модель.

tg = slrt('TargetPC1');
load(tg,'slrtex_file_logging');
start(tg);
pause(5);
while strcmp(tg.Status, 'running')
    pause(0.05);
end

Отобразите сигналы в Инспекторе Данных моделирования

Чтобы просмотреть нанесенные на график данные сигнала, откройте Инспектора Данных моделирования.

Simulink.sdi.view

Получите и постройте данные сигнала от Инспектора Данных моделирования

Можно также получить данные сигнала из SDI и отобразить данные на графике при помощи этих команд.

  • Получите все запуски

  • Получите информацию запуска

runIds = Simulink.sdi.getAllRunIDs();
run = Simulink.sdi.getRun(runIds(end));
signals=run.SignalCount;
array=1;
  • Получите сигнал.

  • Получите объекты сигнала.

  • Примите только значения Синуса.

for signalIndex=1:signals
    signalID = run.getSignalIDByIndex(signalIndex);
    signalObj = Simulink.sdi.getSignal(signalID);
    if(~isempty(strfind(signalObj.Name,'Sine')))
        signalArray(:,array)=signalObj.Values(:,1).Data;
        timeValues=signalObj.Values(:,1).Time;
        array=array+1;
    end
end
  • Постройте сигналы.

plot(timeValues,signalArray);
grid on;
xlabel('Time (sec)'); ylabel('Amplitude');

Больше информации

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