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

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

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

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

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

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

Инструкции для дизайна интерфейса

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

После того, как вы создадите 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 при помощи столбцов Max и Min.

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

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

Похожие темы