exponenta event banner

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

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

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

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

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

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

Руководство по проектированию интерфейсов

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

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

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

    • Алгоритмы, работающие с разными скоростями

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

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

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

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

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

    • Точный контроль над атрибутами данных

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

    Рекомендации по использованию шин Simulink и объектов шины:

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

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

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

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

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

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

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

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

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

Явное управление объемом данных для компонентов. Некоторые методы:

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Компонент завода, sldemo_fuelsys_dd_plant.

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

Используйте редактор данных модели и отображение интерфейса для проверки и конфигурирования интерфейса компонента завода.

  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. Используйте столбцы в редакторе данных модели для явной настройки атрибутов конструкции интерфейса. Например, укажите минимальное и максимальное значения для каждого блока Inport и Outport, используя столбцы Min и Max.

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

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

Связанные темы