Генератор кода предоставляет параметры конфигурации модели для настройки сгенерированного кода. В зависимости от того, как вы используете и взаимодействуете с сгенерированным кодом, вы принимаете строение решения. Вы выбираете строение, которая наилучшим образом соответствует вашим потребностям в отладке, трассируемости, эффективности кода и технике безопасности.
Обычно автоматизировать процесс строения модели можно с помощью скрипта MATLAB ®, когда вы определились с нужным строением.
Пример описывает:
Концепции работы с параметрами конфигурации
Документация для понимания опций генерации кода
Инструменты и скрипты для автоматизации строения модели
Для параметров конфигурации существует много рабочих процессов, которые включают стойкость в одной модели или стойкость в нескольких моделях. В зависимости от потребностей, можно работать с конфигурациями модели как с копиями или ссылками. В этом примере показаны основные шаги для работы непосредственно с активной конфигурацией модели модели. Подробное описание функций и рабочих процессов конфигурации модели см. в разделе Конфигурации модели в документации Simulink ®.
Загрузите модель в память.
model='rtwdemo_configwizard';
load_system(model)
Получите активную конфигурацию модели модели.
cs = getActiveConfigSet(model);
Simulink ® Coder™ предоставляет подмножество опций генерации кода. Если вы используете Coder™ Simulink ®, выберите цель Generic Real-Time (GRT).
switchTarget(cs,'grt.tlc',[]);
Embedded Coder ® предоставляет полный набор опций генерации кода. Если вы используете Embedded Coder ®, выберите цель Embedded Real-Time (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
Полный список опций генерации кода задокументирован с компромиссами для отладки, трассируемости, эффективности кода и безопасности.
Используйте Генерация Кода Advisor, чтобы получить строение модели, оптимизированную для ваших целей. В диалоговом окне «Задать цели» можно задать и расставить приоритеты целей.
Документацию о Code Generation Advisor можно найти в документации 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 27-Jan-2021 10:07:37 3 % MATLAB version: 9.10.0.1584584 (R2021a) 4 5 cs = Simulink.ConfigSet; 6 7 % Original configuration set version: 21.0.0 8 if cs.versionCompare('21.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 % Character encoding: UTF-8 13 14 % Do not change the order of the following commands. There are dependencies between the parameters. 15 cs.set_param('Name', 'Configuration'); % Name 16 cs.set_param('Description', ''); % Description 17 18 % Original configuration set target is ert.tlc 19 cs.switchTarget('ert.tlc',''); 20 21 cs.set_param('HardwareBoard', 'None'); % Hardware board 22 23 cs.set_param('TargetLang', 'C'); % Language 24 25 cs.set_param('CodeInterfacePackaging', 'Nonreusable function'); % Code interface packaging 26 27 cs.set_param('GenerateAllocFcn', 'off'); % Use dynamic memory allocation for model initialization 28 29 cs.set_param('Solver', 'FixedStepDiscrete'); % Solver 30 31 % Solver 32 cs.set_param('StartTime', '0.0'); % Start time 33 cs.set_param('StopTime', '48'); % Stop time 34 cs.set_param('SampleTimeConstraint', 'STIndependent'); % Periodic sample time constraint 35 cs.set_param('SolverType', 'Fixed-step'); % Type 36 cs.set_param('ConcurrentTasks', 'off'); % Allow tasks to execute concurrently on target 37 38 % Data Import/Export 39 cs.set_param('Decimation', '1'); % Decimation 40 cs.set_param('LoadExternalInput', 'off'); % Load external input 41 cs.set_param('SaveFinalState', 'off'); % Save final state 42 cs.set_param('LoadInitialState', 'off'); % Load initial state 43 cs.set_param('LimitDataPoints', 'off'); % Limit data points 44 cs.set_param('SaveFormat', 'StructureWithTime'); % Format 45 cs.set_param('SaveOutput', 'off'); % Save output 46 cs.set_param('SaveState', 'off'); % Save states 47 cs.set_param('SignalLogging', 'on'); % Signal logging 48 cs.set_param('DSMLogging', 'on'); % Data stores 49 cs.set_param('InspectSignalLogs', 'off'); % Record logged workspace data in Simulation Data Inspector 50 cs.set_param('SaveTime', 'off'); % Save time
Каждая настройка параметра в сгенерированном файле включает комментарий к соответствующей строке параметра в диалоговом окне Параметров конфигурации.
% Return to previous working directory.
cd(currentDir)
Embedded Coder ® предоставляет набор блоков Configuration Wizard, чтобы получить начальное строение модели для определенной цели. Предопределенные блоки обеспечивают строение для:
ERT оптимизировано для фиксированной точки
ERT оптимизированный для с плавающей точкой
GRT оптимизирована для фиксированной и плавающей точек
Настройки отладки GRT для фиксированной и плавающей точек
Пользовательский (вы предоставляете скрипт)
Поместите блок в модель и дважды кликните его, чтобы сконфигурировать модель. Откройте rtwdemo_configwizard модели и щелкните Открыть библиотеку мастера строения, чтобы взаимодействовать с блоками.
open_system(model)
Чтобы использовать блоки мастера строения в модели rtwdemo_configwizard, выполните следующие шаги:
Откройте библиотеку мастера Строения, щелкнув ссылку, представленную в модели.
Откройте Параметры конфигурации модели, щелкнув ссылку, представленную в модели.
Перетащите блок мастера строения, например ERT (оптимизированный для фиксированной точки), из библиотеки мастера в модель.
Дважды кликните блок мастера.
Опции параметра конфигурации изменяются автоматически.
% cleanup
rtwdemoclean;
close_system(model,0)
Simulink предоставляет богатый набор функций MATLAB, чтобы автоматизировать конфигурирование модели для симуляции и генерации кода. Simulink Coder и Embedded Coder ® обеспечивают дополнительные функциональные возможности, специфичные для генерации кода. Генерация кода Advisor оптимизирует строение модели на основе набора приоритетных целей. Можно сохранить оптимальное строение в файл MATLAB с помощью функции конфигурации модели saveAs и повторно использовать его между моделями и проектами.