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

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

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

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

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

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

mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if all(~strcmp('xpcosc', systems))
    mdlOpen = 1;
    open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcFileLogging'));
end

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

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

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

set_param('xpcFileLogging','RTWVerbose','off');
rtwbuild('xpcFileLogging');
### Starting Simulink Real-Time build procedure for model: xpcFileLogging
### Generated code for 'xpcFileLogging' is up to date because no structural, parameter or code replacement library changes were found.
### Successful completion of build procedure for model: xpcFileLogging
### Created MLDATX ..\xpcFileLogging.mldatx
### Looking for target: TargetPC1
### Download model onto target: TargetPC1
  • Закройте модель, если мы открыли ее.

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

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

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

tg = SimulinkRealTime.target;
start(tg);
pause(5);

Получите экран целевого компьютера, который отображает синусоиды в двух целевых осциллографах.

tg.viewTargetScreen();

Ожидайте, пока выполнение не завершено.

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');

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

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