Сконфигурируйте модель из командной строки

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

Распространено автоматизировать образцовый процесс настройки при помощи скрипта MATLAB®, если вы выбрали желаемую настройку.

Пример описывает:

  • Концепции работы с параметрами конфигурации

  • Документация, чтобы понять опции генерации кода

  • Инструменты и скрипты, чтобы автоматизировать настройку модели

Рабочие процессы параметра конфигурации

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

Основы конфигурации модели

Загрузите модель в память.

model='rtwdemo_configwizard';
load_system(model)

Получите активную конфигурацию модели модели.

cs = getActiveConfigSet(model);

Simulink® Coder™ представляет подмножество опций генерации кода. Если вы используете Simulink® Coder™, выберите цель Типичного в реальном времени (GRT).

switchTarget(cs,'grt.tlc',[]);

Embedded Coder® представляет полный набор опций генерации кода. Если вы используете Embedded Coder®, выберите цель Встроенного в реальном времени (ERT).

switchTarget(cs,'ert.tlc',[]);

Чтобы автоматизировать настройку моделей, созданных для GRT - и основанные на ERT цели, конфигурация модели, атрибут IsERTTarget полезен.

isERT = strcmp(get_param(cs,'IsERTTarget'),'on');

Можно взаимодействовать с опциями генерации кода с помощью модели или конфигурации модели. Этот пример получает и устанавливает опции косвенно с помощью модели.

deftParamBehvr = get_param(model,'DefaultParameterBehavior');  % Get
set_param(model,'DefaultParameterBehavior',deftParamBehvr)     % Set

Этот пример получает и устанавливает опции непосредственно через конфигурацию модели.

if isERT
    lifespan = get_param(cs,'LifeSpan');  % Get LifeSpan
    set_param(cs,'LifeSpan',lifespan)     % Set LifeSpan
end

Сводные данные параметра конфигурации

Полный список опций генерации кода документируется с компромиссами для отладки, трассируемости, эффективности кода и мер безопасности.

Используйте Советника Генерации кода, чтобы получить настройку модели, оптимизированную для ваших целей. В диалоговом окне Set Objectives можно установить и приоритизировать цели.

Можно найти документацию о Советнике Генерации кода в документации Simulink Coder и дополнительной документации характерной для Embedded Coder®.

Скрипты настройки параметра

Simulink® Coder™ предоставляет скрипт настройки в качестве примера, который можно использовать в качестве отправной точки для приложения. Список самого соответствующего GRT и опции генерации кода ERT содержатся в rtwconfiguremodel.m.

Также можно сгенерировать функцию MATLAB, которая содержит полный список образцовых параметров конфигурации при помощи конфигурации модели функция saveAs.

% Go to a temporary writable directory.
currentDir = pwd;
rtwdemodir();

% Save the model's configuration parameters to file 'MyConfig.m'.
saveAs(cs,'MyConfig')

% Display the first 50 lines of MyConfig.m.
dbtype MyConfig 1:50
1     function cs = MyConfig()
2     % MATLAB function for configuration set generated on 11-Jan-2019 04:47:53
3     % MATLAB version: 9.6.0.1035872 (R2019a) Prerelease Update 6
4     
5     cs = Simulink.ConfigSet;
6     
7     % Original configuration set version: 19.0.0
8     if cs.versionCompare('19.0.0') < 0
9         error('Simulink:MFileVersionViolation', 'The version of the target configuration set is older than the original configuration set.');
10    end
11    
12    % Original environment character encoding: UTF-8
13    if ~strcmpi(get_param(0, 'CharacterEncoding'), 'UTF-8')
14        warning('Simulink:EncodingUnMatched', 'The target character encoding (%s) is different from the original (%s).',  get_param(0, 'CharacterEncoding'), 'UTF-8');
15    end
16    
17    % Do not change the order of the following commands. There are dependencies between the parameters.
18    cs.set_param('Name', 'Configuration'); % Name
19    cs.set_param('Description', ''); % Description
20    
21    % Original configuration set target is ert.tlc
22    cs.switchTarget('ert.tlc','');
23    
24    cs.set_param('HardwareBoard', 'None');   % Hardware board
25    
26    cs.set_param('Solver', 'FixedStepDiscrete');   % Solver
27    
28    % Solver
29    cs.set_param('StartTime', '0.0');   % Start time
30    cs.set_param('StopTime', '48');   % Stop time
31    cs.set_param('SampleTimeConstraint', 'STIndependent');   % Periodic sample time constraint
32    cs.set_param('SolverType', 'Fixed-step');   % Type
33    
34    % Data Import/Export
35    cs.set_param('Decimation', '1');   % Decimation
36    cs.set_param('LoadExternalInput', 'off');   % Load external input
37    cs.set_param('SaveFinalState', 'off');   % Save final state
38    cs.set_param('LoadInitialState', 'off');   % Load initial state
39    cs.set_param('LimitDataPoints', 'off');   % Limit data points
40    cs.set_param('SaveFormat', 'StructureWithTime');   % Format
41    cs.set_param('SaveOutput', 'off');   % Save output
42    cs.set_param('SaveState', 'off');   % Save states
43    cs.set_param('SignalLogging', 'on');   % Signal logging
44    cs.set_param('DSMLogging', 'on');   % Data stores
45    cs.set_param('InspectSignalLogs', 'off');   % Record logged workspace data in Simulation Data Inspector
46    cs.set_param('SaveTime', 'off');   % Save time
47    cs.set_param('ReturnWorkspaceOutputs', 'off');   % Single simulation output
48    cs.set_param('SignalLoggingName', 'sigsOut');   % Signal logging name
49    cs.set_param('DSMLoggingName', 'dsmout');   % Data stores logging name
50    cs.set_param('LoggingToFile', 'off');   % Log Dataset data to file

Каждая установка параметра в сгенерированном файле включает комментарий для соответствующей строки параметров в диалоговом окне Configuration Parameters.

% Return to previous working directory.
cd(currentDir)

Блоки мастера настройки

Embedded Coder® обеспечивает набор блоков Мастера Настройки, чтобы получить начальную настройку модели для определенной цели. Предопределенные блоки обеспечивают настройку для:

  • ERT оптимизирован для фиксированной точки

  • ERT оптимизирован для плавающей точки

  • GRT оптимизирован для фиксированной точки и плавающей точки

  • Параметры настройки отладки GRT для фиксированной точки и плавающей точки

  • Пользовательский (вы предоставляете скрипт),

Поместите блок в модель и дважды кликните его, чтобы сконфигурировать модель. Открытая модель rtwdemo_configwizard и нажимает Open Configuration Wizard Library, чтобы взаимодействовать с блоками.

open_system(model)

Чтобы использовать блоки мастера настройки в rtwdemo_configwizard модели выполняют эти шаги:

  • Откройте Библиотеку Мастера Настройки путем щелчка по ссылке, обеспеченной в модели.

  • Откройте Параметры конфигурации Модели путем щелчка по ссылке, обеспеченной в модели.

  • Перетащите мышью Блок Мастера Настройки, например, ERT (оптимизированный для фиксированной точки), от библиотеки мастера в модель.

  • Дважды кликните блок мастера.

Опции Параметра конфигурации изменяются автоматически.

% cleanup
rtwdemoclean;
close_system(model,0)

Сводные данные

Simulink обеспечивает богатый набор функций MATLAB, чтобы автоматизировать конфигурирование модели для симуляции и генерации кода. Simulink Coder и Embedded Coder® обеспечивают дополнительную функциональность, специфичную для генерации кода. Советник Генерации кода оптимизирует настройку модели на основе набора приоритизированных целей. Можно сохранить оптимальную настройку в файл MATLAB при помощи конфигурации модели saveAs функция и снова использовать его через модели и проекты.

Похожие темы