Модель-ссылка должна удовлетворять различным Simulink® Coder™ требования, как описано в этой теме. Иерархия модели для обработки программным обеспечением Simulink Coder также должна удовлетворять:
Требования Simulink, перечисленные в:
Ограничения Simulink, перечисленные в Требованиях к Сигналу и Ограничениях
Ограничения Simulink Coder, перечисленные в Ограничениях Генерации кода для Модели-ссылки
Модель-ссылка использует конфигурацию модели так же, как и верхняя часть. По умолчанию каждая модель в иерархии имеет свою собственную конфигурацию модели, который она использует так же, как если бы модель выполнялась независимо.
Поскольку каждая модель может иметь свою собственную конфигурацию модели, значения параметров конфигурации могут быть различными в разных моделях. Кроме того, некоторые значения параметров по существу несовместимы с ссылками на модель. Реакция генератора кода на несогласованный или непригодный параметр конфигурации зависит от параметра:
Если несогласованность параметров не имеет значения, генератор кода игнорирует или устраняет несогласованность, не публикуя предупреждение.
Когда нетривиальное и, возможно, приемлемое решение существует в несогласованном параметре, генератор кода разрешает конфликт бесшумно; разрешает его с предупреждением; или генерирует ошибку.
Если приемлемое разрешение невозможно, генератор кода вызывает ошибку. Затем необходимо изменить значения параметров, чтобы устранить проблему.
Когда иерархия модели-ссылки содержит много ссылок на модели, которые имеют несовместимые значения параметров, или измененное значение параметра должно распространяться на многие ссылки на модели, устранение вручную несовместимости параметров конфигурации может занять много времени. Можно управлять или устранять такие накладные расходы с помощью ссылок на строение, чтобы назначить внешне сохраненный конфигурацию модели нескольким моделям. Для получения дополнительной информации см. Раздел «Совместное использование строения с несколькими моделями».
Чтобы выбрать цель генерации кода для иерархии модели-ссылки, не изменяя отдельные модели, используйте строение ссылку в словаре данных Simulink. Для получения дополнительной информации смотрите Использование ссылки на строение для выбора целевого объекта генерации кода.
В следующих таблицах перечислены параметры конфигурации, которые могут вызвать проблемы, если они заданы определенными способами или если установлены по-другому в модели-ссылке, чем в родительской модели. Там, где это возможно, генератор кода устраняет нарушения этих требований, но большинство случаев требуют, чтобы вы вносили изменения в параметры в своих моделях.
Требования по настройке для ссылок на модели с системными целевыми файлами
Панель диалогового окна | Опция | Требование |
---|---|---|
Solver | Start time | Некоторые системные целевые файлы требуют, чтобы время запуска моделей было нулем. |
Hardware Implementation | Все опции | Значения должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. |
Code Generation | System target file | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. |
Language | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. | |
Generate code only | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. | |
Identifiers | Maximum identifier length | Не может быть дольше для модели-ссылки, чем для ее родительской модели. |
Interface | Code replacement library | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. |
Generate C API for опции | Флажки C API, которые вы выбираете, должны быть одинаковыми для моделей сверху и ссылок. | |
ASAP2 interface | Можно |
Требования по настройке для ссылок на модели с целевыми файлами системы ERT (требует Embedded Coder)
Панель диалогового окна | Опция | Требование |
---|---|---|
Identifiers | Глобальные переменные Глобальные типы Методы подсистемы Локальные временные переменные Постоянные макросы | $R необходимо включить лексему. |
Signal naming | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. | |
M-функция | Если задано, это должно быть то же самое для моделей верхнего уровня и моделей-ссылок. | |
Parameter naming | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. | |
#define naming | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. | |
Interface | Ignore custom storage classes | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. |
Support floating-point numbers | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. | |
Support non-finite numbers | Если | |
Support complex numbers | Если | |
Remove error status field in real-time model data structure | Если | |
Code Placement | Use owner from data object for data definition placement | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. |
Signal display level | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. | |
Parameter tune level | Должны быть одинаковыми для моделей верхнего уровня и моделей-ссылок. |
Для моделей, на которые ссылаются, если эти Configuration Parameters > Code Generation > параметры Identifiers имеют настройки, которые не содержат $R
Лексема (которое представляет имя ссылочной модели), генерация кода готовит $R
лексема к формату идентификатора:
Global variables (CustomSymbolStrGlobalVar
)
Global types (CustomSymbolStrType
)
Subsystem methods (CustomSymbolStrFcn
)
Constant macros (CustomSymbolStrMacro
)
Можно использовать Model Advisor, чтобы идентифицировать модели в иерархии моделей, для которых генерация кода изменяет настройки параметров конфигурации.
В редакторе Simulink Editor на вкладке Modeling выберите Model Advisor.
Выберите By Task.
Запустите проверку Check code generation identifier formats used for model reference.
Если скрипт, который работает с сгенерированным кодом, использует форматы идентификаторов, которые изменяются генерацией кода, обновите скрипт, чтобы использовать обновленный формат идентификатора (который включает добавленный $R
лексема).
Дополнительные сведения об идентификаторах см. в разделе Управление форматом идентификатора.
В модели, которая использует ссылки на модель, имена составляющих моделей не могут сталкиваться. Когда вы генерируете код из модели, которая использует ссылки на модель, параметр Maximum identifier length должен быть достаточно большим, чтобы включать имя корневой модели и текст управления именем. Ошибка генерации кода возникает, если Maximum identifier length недостаточно велик.
Когда возникает конфликт по совпадению имен между символом в возможности модели более высокого уровня и символом в возможности модели-ссылки, символ из модели-ссылки сохраняется. Генератор кода выполняет искривление имен символа из модели более высокого уровня.
Embedded Coder® Продукт позволяет управлять форматированием сгенерированных символов гораздо более подробно. При генерации кода с целью ERT из модели, которая использует ссылки на модель:
The $R
лексема (в дополнение к $M
лексема) должны быть включены в спецификации параметров управления формата идентификатора, кроме Shared utilities identifier format.
Максимальная длина идентификатора должна быть достаточно большой, чтобы включать полные расширения $R
и $M
лексемы.
Для получения дополнительной информации смотрите Параметры конфигурации модели: Идентификаторы генерации кода.
Если у вас есть Embedded Coder, пользовательский целевой объект должен соответствовать различным требованиям, чтобы поддерживать ссылки на модели. Для получения дополнительной информации смотрите Поддержка моделей Ссылки.
Минимизируйте вхождения алгебраических циклов, выбрав параметр Minimize algebraic loop occurrences на панели Model Referencing. Настройка этой опции влияет только на генерацию кода из модели. Для получения дополнительной информации о прямой передаче через, см. Алгебраические Циклы Концепций.
Используйте параметр Целочисленный режим округления на блоках вашей модели, чтобы симулировать поведение округления компилятора C, который вы намерены использовать, чтобы скомпилировать код, сгенерированный из модели. Этот параметр появляется на Signal Attributes панели диалоговых окон параметров блоков, которые могут выполнять арифметику целого числа знаком, таких как блоки Product и n-D Lookup Table.
Для большинства блоков значение Целочисленного режима округления полностью определяет поведение округления. Для блоков, которые поддерживают данные с фиксированной точкой и Простой режим округления, значение Signed integer division rounds to также влияет на округление. Для получения дополнительной информации смотрите Округление (Fixed-Point Designer).