В этом примере показано, как использовать журнал 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.
Simulink.sdi.view
Можно также извлечь данные сигнала из 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');
SLRT Overload Options | slrtTETMonitor