Задайте интерфейсы компонентов модели

Определение интерфейса программного компонента, такого как C или MATLAB® функция кода или Simulink® подсистема, является ключевым первым шагом, прежде чем другие могут использовать ее, по этим причинам:

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

  • После определения интерфейсов между компонентами можно создавать компоненты параллельно. Если интерфейс остается стабильным, то легко интегрировать эти компоненты в большую систему.

  • Изменение интерфейса между компонентами стоит дорого. Это требует изменений как минимум двух компонентов (источника и любых приемников) и любых тестовых обвязок. Это также делает все предыдущие версии этих компонентов несовместимыми с текущей и будущей версиями.

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

Инструкции по проекту интерфейсов

Предложения по определению интерфейсов компонентов для нового проекта:

  • Основывать контуры компонентов на контурах соответствующих реальных систем. Это руководство особенно полезно, когда модель содержит:

    • Как физические (объект и окружение), так и системы управления

    • Алгоритмы, которые запускаются с различными скоростями

  • Рассмотрим будущую разработку модели. Если вы намерены добавить модели датчиков, поместите их с самого начала как пустую подсистему, которая пропускает сигналы прямо через или выполняет модуль задержку или преобразование имен.

  • Рассмотрите будущее повторное использование компонента.

  • Рассмотрите использование соглашения об именовании сигналов.

  • Используйте объекты данных для:

    • Определение интерфейсов компонентов

    • Точное управление атрибутами данных

  • Упростите проект интерфейса путем группировки сигналов в шины. Автобусы хорошо подходят для использования на высоких уровнях моделей, где компоненты часто имеют много сигналов захода и выхода, и не используют все доступные сигналы. Использование шин может упростить изменение интерфейса для компонента. Например, если вы должны добавить или удалить сигналы, используемые компонентом, может быть проще изменить шину, чем добавить или удалить входные или выходные порты к этому компоненту. Однако использование шины, которая пересекает контуры моделей-ссылок, требует использования объекта шины.

    Лучшие практики для использования автобусов Simulink и автобусных объектов:

    • Сделать шины виртуальными, кроме как в модель-ссылку компонентных контуров.

    • Используйте невиртуальные шины при определении интерфейсов между компонентами. Объект шины должен определять каждую невиртуальную шину. Объекты шины полностью определяют свойства сигналов на шине, давая однозначное определение интерфейса.

      Включите объекты шины в словарь данных или сохраните объекты шины как .mat или .m файл, порядок поместить их под контроль ревизии.

    • Передайте только необходимые сигналы к каждому компоненту, чтобы уменьшить дорогостоящую передачу ненужных данных. Сигнальные шины позволяют определять полный набор входа и выходных сигналов, но не обязательно использовать или создавать.

    • Убедитесь, что интерфейс точно задает, что компонент использует.

    • Используйте строгое соглашение об именовании для объектов автобуса. Если вы не используете словарь данных, объекты шины хранятся в базовом рабочем пространстве.

    • На более низких уровнях модели рассмотрите использование входных и выходных портов для каждого сигнала. На более низких уровнях модели, где компоненты обычно реализуют алгоритмы, а не служат контейнерами для других компонентов, это может увеличить читаемость, если вы используете отдельные входные и выходные порты для компонентов, вместо использования шин сигналов. Однако создание интерфейсов таким образом имеет больший риск проблем с соединением, потому что трудно проверить валидность соединений, кроме их типа данных, размера и т.д.

    • Чтобы упаковать сигналы или параметры в структуры, которые соответствуют struct введите определение, которое определяет внешний код С, импортируйте тип как объект шины и используйте объект как тип данных для шин и структур MATLAB. Чтобы создать объект, используйте Simulink.importExternalCTypes функция.

Разбиение данных на разделы

Явное управление возможностями данных для ваших компонентов. Некоторые методы:

  • Глобальные параметры - Общий подход в автомобильном мире состоит в том, чтобы полностью отделить проблему хранения параметров от хранилища моделей. Параметры для модели поступают из базы данных калибровочных данных, и конкретный используемый файл калибровки становится частью строения. Данные калибровки рассматриваются как глобальные данные и находятся в базовом рабочем пространстве MATLAB. Можно перенести данные базового рабочего пространства в словарь данных для дополнительного управления.

  • Nonglobal parameters - Объединение компонентов, которые хранят свои собственные данные параметра, имеет риск конфликтов имен параметров. Если вы не используете соглашение об именовании для параметров или, кроме того, список уникальных имен и определений параметров, то существует риск, что два компонента используют параметр с одним и тем же именем, но с различными значениями.

    Методы хранения данных локальных параметров включают:

    • Разделите данные на ссылочные словари для каждого компонента.

    • Для моделей-ссылок можно использовать рабочие пространства модели.

    • Используйте файлы параметров (.m или .mat) и коллбэки отдельных моделей Simulink (например, preload функция).

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

    • Маскируйте рабочие области, с использованием функций инициализации маски или без.

    • Для подсистем можно управлять возможностями данных для подсистемы с помощью диалогового окна Параметры подсистемы, Разрешение иерархического разрешения.

Сконфигурируйте интерфейс данных для компонента

Независимо от того, используете ли вы ссылочные модели или подсистемы, чтобы разбить большую систему на компоненты, компоненты могут обмениваться данными о сигнале через Inport и Outport блоки. Можно явным образом сконфигурировать атрибуты проекта (такие как тип данных и числовая сложность) интерфейса, чтобы предотвратить ошибки моделирования и облегчить интеграцию компонентов.

После создания блоков Inport и Outport можно использовать Model Data Editor и отображение интерфейса, чтобы сконфигурировать атрибуты проекта (такие как тип данных и числовая сложность) блоков. Используйте этот метод, чтобы просмотреть интерфейс компонента полностью сразу и проследить части интерфейса до точек использования во внутреннем алгоритме блоков. Можно также использовать этот метод, чтобы сконфигурировать интерфейс компонента перед разработкой внутреннего алгоритма, в этом случае компонент содержит несвязанные Inport и блоки Outport.

Пример модели sldemo_fuelsys_dd содержит два компонента, которые являются ссылочными моделями:

  • Компонент объекта, sldemo_fuelsys_dd_plant.

  • Компонент контроллера, sldemo_fuelsys_dd_controller.

Используйте Model Data Editor и отображение интерфейса, чтобы изучить и сконфигурировать интерфейс компонента объекта управления.

  1. Откройте компонент объекта.

    sldemo_fuelsys_dd_plant

  2. На вкладке Modeling, под Design, нажмите Model Interface.

  3. На вкладке Modeling нажмите Model Data Editor.

    По умолчанию в Model Data Editor выбирается вкладка Inports/Outports. Каждая строка таблицы представляет собой Inport или Outport блок. По умолчанию в выпадающем списке Change view задано значение Design.

    Совет

    Чтобы просмотреть только блоки Inport и Outport на корневом уровне модели (путем исключения блоков внутри подсистем), отключите кнопку Change Scope.

  4. Используйте столбцы в Model Data Editor, чтобы явным образом сконфигурировать атрибуты проекта интерфейса. Для примера задайте минимальное и максимальное значения для каждого Inport и Outport блока с помощью Min и Max столбцов.

Чтобы сконфигурировать настройки генерации кода для интерфейса компонента контроллера, в Model Data Editor установите в раскрывающемся списке Change view значение Code.

Дополнительные сведения об использовании отображения интерфейса см. в разделе Трассировка соединений с использованием отображения интерфейса. Дополнительные сведения о Model Data Editor см. в разделе Настройка свойств данных при помощи Model Data Editor.

Похожие темы