Ведение журнала данных с помощью Данных моделирования Inspector (SDI)

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

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

Откройте модель slrt_ex_soc_dist. Эта модель калибрует усилия по контролю через социальное дистанцирование при вспышке инфекционного заболевания.

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

mdl = 'slrt_ex_soc_dist';
mdlOpen = 0;
systems = find_system('type', 'block_diagram');
if all(~strcmp(mdl, systems))
    mdlOpen = 1;
    open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_soc_dist.slx'));
end

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

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

  • Создайте и загрузите приложение.

set_param(mdl,'RTWVerbose','off');
slbuild(mdl);
### Generated code for 'slrt_ex_soc_dist' is up to date because no structural, parameter or code replacement library changes were found.
### Successful completion of build procedure for: slrt_ex_soc_dist
### Created MLDATX ..\slrt_ex_soc_dist.mldatx

Build Summary

0 of 1 models built (1 models already up to date)
Build duration: 0h 0m 7.325s
  • Закройте модель, которая открыта.

if (mdlOpen)
    bdclose(mdl);
end

Запустите модель, чтобы оценить эффекты отсутствия социального дистанцирования во время вспышки

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

tg = slrealtime;
tg.load(mdl);
tg.setparam('','soc_dist_level',1);
tg.setparam('','thresh_int_level',1);
tg.start;
while ~strcmp(tg.status,'stopped')
    pause(5);
end
tg.stop;

Запустите модель, чтобы оценить эффект социального дистанцирования во время вспышки.

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

tg = slrealtime;
tg.load(mdl);
tg.setparam('','soc_dist_level',0.2);
tg.setparam('','thresh_int_level',0.2);
tg.start;
while ~strcmp(tg.status,'stopped')
    pause(5);
end
tg.stop;

Отображение сигналов в Данные моделирования Inspector

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

Simulink.sdi.view

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

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

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

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

  • Получите сигнал.

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

  • Принимайте только значения инфекционных групп.

  • Постройте график сигналов.

Результат показывает, что социальное дистанцирование может уменьшить количество госпитализированных людей

runIds = Simulink.sdi.getAllRunIDs();

for i = 1:length(runIds)
    run = Simulink.sdi.getRun(runIds(i));
    signalID = run.getSignalIDsByName('hospitalized');
    if ~isempty(signalID)
        signalObj = Simulink.sdi.getSignal(signalID);
        signalArray(:,i) = signalObj.Values(:,1).Data;
        timeValues = 100*(signalObj.Values(:,1).Time);
        plot(timeValues,signalArray);
        drawnow;
    end
end

grid on;
xlabel('Time in days'); ylabel('hospitalized people');

См. также

|

Похожие темы