Память хранилища Доступа к данным из графика

Модель Simulink® реализует глобальные переменные как data stores, или как Блоки памяти Хранилища данных или как экземпляры объектов Simulink.Signal. Можно использовать хранилища данных, чтобы осуществлять обмен данными между несколькими блоками Simulink без явных связей ввода или вывода, чтобы передать данные от одного блока до другого. Графики Stateflow® совместно используют глобальные данные с моделями Simulink путем чтения из и записи в память хранилища данных символически.

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

Память хранилища локальных и глобальных данных

Диаграммы Stateflow могут взаимодействовать через интерфейс с хранилищами локальных и глобальных данных.

  • Локальные хранилища данных видимы ко всем блокам в одной модели. Чтобы взаимодействовать с локальным хранилищем данных, график должен находиться в модели, где вы задаете локальное хранилище данных. Можно задать локальное хранилище данных путем добавления Блока памяти Хранилища данных в модель или путем создания объекта Сигнала Simulink.

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

Для получения дополнительной информации смотрите Хранилища Локальных и Глобальных данных (Simulink).

Свяжите данные Stateflow с хранилищами данных

  1. Чтобы задать память хранилища данных Simulink, добавьте Блок памяти Хранилища данных в свою модель или создайте объект Сигнала Simulink. Для получения дополнительной информации смотрите Хранилища данных с Блоками памяти Хранилища данных (Simulink) и Хранилища данных с Объектами Сигнала (Simulink).

  2. Добавьте, что объект данных к диаграмме Stateflow, как описано в Добавляют Данные Stateflow.

  3. Установите свойство Name как имя памяти хранилища данных Simulink, с которой вы хотите связать объект данных Stateflow.

  4. Установите свойство Scope на Data Store Memory.

Объект данных Stateflow наследовал все дополнительные свойства от памяти хранилища данных, до которой вы связываете объект.

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

Сохраните и получите глобальные данные

После привязки объекта данных Stateflow к хранилищу данных Simulink можно сохранить и получить глобальные данные в действиях перехода и состоянии. Объект данных действует как глобальная переменная, на которую вы ссылаетесь ее символьным именем. Когда вы храните числовые значения в этой переменной, вы пишете в память хранилища данных Simulink. Когда вы получаете числовые значения из этой переменной, вы читаете из памяти хранилища данных.

Например, в этом графике, акты государственной власти, считанные из и запись к Блоку памяти Хранилища данных под названием myglobal.

Лучшые практики для Использования хранилищ данных

Свойства хранилища данных в графиках

Когда вы связываете объект данных Stateflow с хранилищем данных, объект Stateflow наследовал все свои свойства от хранилища данных. Чтобы гарантировать, что свойства распространяют правильно, когда вы создаете хранилища данных Simulink:

  • Задайте тип данных кроме auto.

  • Минимизируйте использование свойств автоматического режима.

Осуществляйте обмен данными память хранилища через многоуровневые модели

Получить доступ к хранилищу глобальных данных от многоуровневых моделей:

  • Проверьте, что ваши модели не содержат Блоков памяти Хранилища данных. Можно включать блоки Записи Чтения и Хранилища данных Хранилища данных.

  • В базовом рабочем пространстве MATLAB® создайте объект Simulink.Signal с этими атрибутами:

    • Установите Data type на явный тип данных. Типом данных не может быть Auto.

    • Полностью задайте Dimensions. Размерности сигнала не могут быть –1 или Inherited.

    • Полностью задайте Complexity. Сложностью не может быть Auto.

    • Установите Storage class на ExportedGlobal.

  • В каждом графике, который совместно использует данные, свяжите объект данных Stateflow с хранилищем данных Simulink.

Запишите в память хранилища данных перед чтением

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

  • Отдельные действия чтения в отдельные блоки от действий записи.

  • Присвойте приоритеты блокам так, чтобы ваша модель вызвала блоки записи перед блоками чтения. Для получения дополнительной информации смотрите Управление и Отображение Отсортированный Порядок (Simulink).

Чтобы избежать ситуаций, когда несколько чтений и записей произойдут непреднамеренно в том же временном шаге, включите диагностику Блока памяти Хранилища данных к:

  • Detect Read Before Write

  • Detect Write After Read

  • Detect Write After Write

Если вы используете блок памяти хранилища данных в качестве персистентной глобальной области хранения для накопления значений через временные шаги, избегаете ненужных предупреждений путем отключения диагностики Блока памяти Хранилища данных. Для получения дополнительной информации смотрите Диагностику Хранилища данных (Simulink).

Смотрите также

| | |

Похожие темы