Для передачи данных между ссылочной моделью и моделью верхнего уровня используйте сигналы и параметры. Параметры также можно использовать для интеграции внешних данных в иерархию ссылок на модель. Чтобы включить одну модель в другую модель и создать иерархию ссылок на модель, используйте блок «Модель».
Класс хранения можно применить к элементу данных в модели, такому как сигнал или параметр, для:
Сделать элемент данных отображаемым в сгенерированном коде как глобальный символ, как правило, глобальная переменная.
Предотвращение исключения элемента данных из созданного кода при оптимизации, например, поведения параметров по умолчанию и повторного использования хранилища сигналов.
Примеры см. в разделе Конфигурация генерации кода C для элементов интерфейса модели.
Класс хранения можно сопоставить с категорией элементов данных модели или с отдельным элементом с помощью редактора сопоставлений кода или API сопоставлений кода (coder.mapping.api.CodeMapping). Чтобы задать параметры конфигурации кода для данного класса хранения, например заголовочные файлы, файлы определений и разделы памяти, используйте инспектор свойств или API. Дополнительные сведения см. в разделе Редактор сопоставлений кодов.
Модели, содержащие блоки модели, могут использовать классы хранения параметров для сопряжения с внешним кодом. Классы хранения, за исключением Auto, настраиваются. К поддерживаемым классам хранения относятся:
Предопределенные классы хранения в Simulink ® Coder™ и Embedded Coder ®
Новый класс хранения данных, созданный с помощью словаря встроенного кодера
Ограничения на классы хранения Embedded Coder см. в разделе Ограничения класса хранения.
Ограничения на параметры в ссылочных моделях:
Настраиваемые параметры не поддерживаются для неинлинговых S-функций.
Настраиваемые параметры, заданные в диалоговом окне Конфигурация параметров модели (Model Parameter Configuration), игнорируются.
Сведения о том, как объявляются, определяются и используются глобальные настраиваемые параметры в коде, создаваемом для целей. рассмотрим:
Глобальный настраиваемый параметр - это параметр в базовой рабочей области, имеющий класс хранения, отличный от Auto.
Один extern создается для моделей, использующих данный параметр.
Если параметр экспортируется, верхняя модель определяет (выделяет память для) параметр, использует ли верхняя модель параметр или нет.
Доступ к глобальным параметрам осуществляется непосредственно в виде глобальной памяти. Они не передаются в качестве аргументов функциям, создаваемым для ссылочных моделей.
В ссылочной модели, которая устанавливает класс хранения по умолчанию для категории данных параметров как Default в редакторе сопоставления кодов символы для Model default генерируются с использованием неструктурированных переменных (rtP_xxx) вместо того, чтобы быть записанным в структура. Затем можно независимо скомпилировать каждую ссылочную модель.model_P
Параметры, используемые в качестве аргументов блока модели, должны быть определены в рабочей области ссылочной модели. Дополнительные сведения см. в разделе Параметризация экземпляров повторно используемой ссылочной модели.
Модели, содержащие блоки модели, могут использовать сигналы класса хранения Auto.
Глобальный сигнал - это сигнал, который имеет класс хранения, отличный от Auto. К поддерживаемым классам хранения относятся:
Предопределенные классы хранения в Simulink Coder и Embedded Coder
Новый класс хранения данных, созданный с помощью словаря встроенного кодера
При наличии встроенного кодера можно создать глобальный сигнал с помощью класса хранения, определенного в словаре встроенного кодера, для которого установлен тип хранения Unstructured или путем создания хранилища в словаре Embedded Coder Dictionary, для которого установлен тип хранилища Unstructured.
Эти сигналы отличаются от отдельных сигналов, которые используют класс хранения Model default. При установке для класса хранения по умолчанию соответствующего типа данных значения Default в редакторе отображения кода эти сигналы обрабатываются как контрольные точки, имеющие Auto класс хранения.
При объявлении сигналов глобальными необходимо знать, как обрабатываются данные сигналов. Глобальные сигналы объявляются, определяются и используются следующим образом:
Один extern создается для моделей, использующих глобальный сигнал.
В результате, если сигнал пересекает границу блока модели, то и верхняя модель, и ссылочная модель генерируются extern объявления для сигнала.
Для экспортируемого сигнала верхняя модель определяет (выделяет память для) сигнал, независимо от того, использует ли сигнал сама верхняя модель.
Доступ к глобальным сигналам, используемым ссылочной моделью, осуществляется непосредственно в виде глобальной памяти. Они не передаются в качестве аргументов функциям, создаваемым для ссылочных моделей.
Классы хранения данных, создаваемые с помощью словаря Embedded Coder Dictionary, также соответствуют предыдущим правилам для модели верхнего уровня.
Примечание
В ссылочной модели нельзя использовать класс хранения, созданный с помощью словаря Embedded Coder Dictionary для корневых портов ввода и вывода.
Некоторые классы хранения имеют ограниченную поддержку для использования со ссылкой на модель. См. раздел Ограничения класса хранения данных.
В родительской модели имя и класс хранения для сигнала, входящего или выходящего из блока Model, могут не совпадать с именем сигнала, присоединенного к корневому входу или выходу в этой ссылочной модели. Поскольку ссылочные модели компилируются независимо без учета родительской модели, они не могут адаптироваться к возможным изменениям в том, как родительские модели маркируют и сохраняют сигналы.
Генератор кода принимает случаи, когда входные и выходные сигналы в ссылочной модели имеют Auto класс хранения. Когда такие сигналы являются индикаторными или глобальными, применяются определенные ограничения. В этой таблице описано, как программное обеспечение обрабатывает несоответствия в метках сигналов и классах хранения между родительской и ссылочной моделями.
Взаимосвязи сигналов и классов хранения по ссылочной границе модели
| Класс хранения в ссылочной модели | Класс хранения в родительской модели | Метод прохождения сигнала | Проверка несоответствия сигналов |
|---|---|---|---|
Auto | Non-Auto | Аргумент функции | Несоответствие метки сигнала |
| Non-Auto | Аргумент функции | Несоответствие метки сигнала |
Non-Auto | Auto | Глобальная переменная | Ничего |
Non-Auto | Non-Auto | Глобальная переменная | Один из классов хранения должен быть Auto (в противном случае возникает ошибка) |
К генерации кода применяются следующие правила разрешения сигнала:
Если класс хранения корневого входного или выходного сигнала в ссылочной модели равен Auto или Model default (при установке для класса хранения соответствующей категории данных значения Default в редакторе отображения кода) сигнал передается в качестве аргумента функции. Когда такой сигнал Non-Auto или разрешается в Simulink.Signal в родительской модели применяется диагностика несоответствия меток Сигнал (Signal).
Если корневой входной или выходной сигнал в ссылочной модели является глобальным, сигнал передается с использованием прямого доступа к памяти (глобальная переменная). Соответствующий сигнал в родительской модели должен быть Auto.
Нельзя использовать класс хранения, созданный с помощью словаря встроенного кодера в ссылочной модели.
Можно задать для параметра конфигурации модели Диагностика несоответствия меток сигналов значение error, warning, или none.