Дизайн интерфейса

Почему интерфейсные определения важны

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

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

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

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

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

Рекомендации для дизайна интерфейса

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

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

    • И физический (завод и среда) и системы управления

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Для подсистем можно управлять осциллографом данных для подсистемы с помощью Параметров Подсистемы, диалогового окна Permit Hierarchical Resolution.

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

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

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

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

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

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

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

  1. Откройте компонент завода.

    sldemo_fuelsys_dd_plant

  2. Выберите Display> Interface.

  3. Выберите View> Model Data Editor.

    По умолчанию, в Редакторе Данных модели, вкладка Inports/Outports выбрана. Каждая строка в таблице представляет блок Inport или Outport. По умолчанию представление Change выпадающий список установлено в Design.

    Совет

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

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

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

Для получения дополнительной информации об использовании интерфейсного отображения смотрите, что Связи Трассировки Используют Интерфейсное Отображение. Для получения дополнительной информации о Редакторе Данных модели, смотрите Configure Data Properties при помощи Редактора Данных модели.

Связанные примеры

Больше о

Была ли эта тема полезной?