Возможно, потребуется использовать глобальные данные с функциональным блоком MATLAB, если:
Имеется несколько функций MATLAB ®, использующих глобальные переменные, и требуется вызвать эти функции из функциональных блоков MATLAB.
Существует модель, в которой используется большой объем глобальных данных, и в эту модель добавляется блок MATLAB Function, и необходимо избегать загромождения модели дополнительными входами и выходами.
Требуется ограничить видимость данных частями модели.
В Simulink ® глобальные данные хранятся с использованием памяти хранилища данных. Память хранилища данных реализуется с использованием блоков памяти хранилища данных илиSimulink.Signal объекты. Способ хранения глобальных данных зависит от количества и объема глобальных переменных. Дополнительные сведения см. в разделах Локальные и глобальные хранилища данных и Выбор способа хранения глобальных данных.
В функциях MATLAB в Simulink глобальные объявления не сопоставляются с глобальной рабочей областью MATLAB. Вместо этого необходимо зарегистрировать глобальные данные в функциональном блоке MATLAB для отображения данных в память хранилища данных. Это различие позволяет глобальным данным в функциях MATLAB взаимодействовать с решателем Simulink и обеспечивать диагностику в случае их неправильного использования.
Глобальная переменная иерархически разрешается в ближайшую память хранилища данных с тем же именем в модели. Одна и та же глобальная переменная, встречающаяся в двух различных функциональных блоках MATLAB, может быть преобразована в различную память хранилища данных в зависимости от иерархии модели. Эту возможность можно использовать для определения видимости данных в подсистеме.
Для использования глобальных данных в функциональном блоке MATLAB или в любом коде, вызываемом этим блоком, необходимо:
Объявите глобальную переменную в функциональном блоке MATLAB или в любом коде, вызываемом функциональным блоком MATLAB.
Регистрация блока памяти хранилища данных или Simulink.Signal объект, имя которого совпадает с именем глобальной переменной с блоком MATLAB Function.
Дополнительные сведения см. в разделах Хранение данных с использованием блоков памяти хранилища данных и Хранение данных с использованием объектов Simulink.Signal.
В следующей таблице приведены сводные данные об использовании блоков памяти хранилища данных или Simulink.Signal объекты.
| Если вы хотите: | Использовать: | Для получения дополнительной информации: |
|---|---|---|
| Используйте небольшое число глобальных переменных в одной модели, которая не использует ссылку на модель. | Блоки памяти хранилища данных. Примечание С помощью блоков памяти хранилища данных данные помещаются в модель.
| Хранение данных с использованием блоков памяти хранилища данных |
| Используйте большое количество глобальных переменных в одной модели, которая не использует ссылку на модель. |
| Хранение данных с использованием объектов Simulink.Signal |
| Обмен данными между несколькими моделями (включая ссылочные модели). |
Примечание Если используются блоки памяти хранилища данных, а также
| Хранение данных с использованием объектов Simulink.Signal |
Эта модель демонстрирует, как функциональный блок MATLAB использует глобальные данные, сохраненные в блоке памяти хранилища данных. A.
Откройте модель dsm_demo.mdl.

Дважды щелкните по функциональному блоку MATLAB, чтобы открыть редактор функциональных блоков MATLAB.
Код блока функции MATLAB объявляет глобальную переменную A. Блок изменяет значение A во время каждого выполнения.
function y = fcn %#codegen global A; A = A+1; y = A;
Убедитесь, что глобальная переменная зарегистрирована в блоке MATLAB Function. См. раздел Добавление данных в функциональный блок MATLAB.
В редакторе функциональных блоков MATLAB выберите Edit Data, чтобы открыть диалоговое окно Ports and Data Manager.
В окне «Ports and Data Manager» выберите данные A на левой панели. Эти данные используют то же имя, что и глобальная переменная.
Для области данных установлено значение Data Store Memory.
См. также «Порты и диспетчер данных».
Дважды щелкните блок памяти хранилища данных A. В диалоговом окне «Параметры блока» отображается имя хранилища данных.
A соответствует имени глобальной переменной. Блок имеет начальное значение 25.
При добавлении памяти хранилища данных в модель:
Установите имя хранилища данных в соответствии с именем глобальной переменной в коде функционального блока MATLAB.
Задайте для параметра Тип данных явный тип данных. Тип данных не может быть auto.
Задайте тип сигнала и укажите начальное значение.
Моделирование модели.
Функциональный блок MATLAB считывает начальное значение глобальных данных, сохраненных в A и обновляет значение A каждый раз при выполнении.
Simulink.Signal ОбъектыЭта модель демонстрирует, как функциональный блок MATLAB использует глобальные данные, сохраненные в Simulink.Signal объект A.
Откройте модель simulink_signal_local.

Модель использует Simulink.Signal в рабочем пространстве модели.
Примечание
Чтобы использовать глобальные данные с несколькими моделями, создайте Simulink.Signal в базовой рабочей области.
Убедитесь, что Simulink.Signal добавляется в Обозреватель моделей.
На вкладке Моделирование (Modeling) щелкните Обозреватель моделей (Model Explorer).
На левой панели Проводника моделей выберите рабочее пространство модели для simulink_signal_local модель.
На панели Содержимое (Contents) отображаются данные в рабочем пространстве модели.
Щелкните значок Simulink.Signal объект A.
На правой панели убедитесь, что в обозревателе моделей отображаются эти атрибуты для A.
| Признак | Стоимость |
|---|---|
| Тип данных | double |
| Сложность | real |
| Размеры | 1 |
| Начальное значение | 5 |
См. также Обозреватель моделей.
Дважды щелкните блок MATLAB Function, чтобы открыть его редактор.
Функциональный блок MATLAB изменяет значение глобальных данных. A каждый раз при выполнении.
function y = fcn %#codegen global A; A = A+1; y = A;
Убедитесь, что Simulink.Signal регистрируется в функциональном блоке MATLAB.
В редакторе функциональных блоков MATLAB выберите Edit Data, чтобы открыть диалоговое окно Ports and Data Manager.
В окне «Ports and Data Manager» выберите данные A на левой панели. Эти данные используют то же имя, что и глобальная переменная.
Задайте для области данных значение Data Store Memory.
См. также «Порты и диспетчер данных».
Моделирование модели.
Функциональный блок MATLAB считывает начальное значение глобальных данных, сохраненных в A и обновляет значение A каждый раз при выполнении.
Модель можно настроить для обеспечения диагностики во время выполнения и во время компиляции, чтобы избежать проблем с хранилищами данных. Диагностика доступна в диалоговом окне Параметры конфигурации (Configuration Parameters) и диалоговом окне Параметры (Parameters) для блока Память хранилища данных (Data Store Memory). Эти средства диагностики доступны только для блоков памяти хранилища данных, но не для Simulink.Signal объекты. Дополнительные сведения об использовании диагностики хранилища данных см. в разделе Диагностика хранилища данных.
Примечание
При передаче массивов памяти хранилища данных в функции такие оптимизации, как A=foo(A) может привести к тому, что программное обеспечение генерации кода пометит все содержимое массива как прочитанное или записанное, даже если доступ был получен только к некоторым элементам.
Отсутствует поддержка памяти хранилища данных для:
Структуры MATLAB
Данные переменного размера