Обмен данными между системой MATLAB и другими блоками с помощью global ключевое слово и блок памяти хранилища данных или Simulink.Signal объект. Возможно, потребуется использовать глобальные данные с системным блоком MATLAB, если:
Существует модель, в которой используется большой объем глобальных данных, к этой модели добавляется системный блок MATLAB, и необходимо избегать загромождения модели дополнительными входами и выходами.
Требуется ограничить видимость данных частями модели.
В Simulink ® глобальные данные хранятся с использованием памяти хранилища данных. Память хранилища данных реализуется с использованием блоков памяти хранилища данных илиSimulink.Signal объекты. Способ хранения глобальных данных зависит от количества и объема глобальных переменных.
Системный блок MATLAB использует следующие правила определения области:
Если для обоих блоков памяти хранилища данных и Simulink.Signal объект, блок памяти хранилища данных определяет область данных для модели.
Глобальная переменная иерархически разрешается в ближайший блок памяти хранилища данных с тем же именем в модели. Одна и та же глобальная переменная, появляющаяся в двух различных системных блоках MATLAB, может быть преобразована в различные блоки памяти хранилища данных в зависимости от иерархии модели. Эту возможность можно использовать для определения видимости данных в подсистеме.
Системные блоки MATLAB поддерживают память хранения данных для:
Структуры MATLAB ® (шины)
Перечислимые типы данных
Для использования общих данных в системном блоке MATLAB:
Объявите глобальную переменную в системном object™, связанном с системным блоком MATLAB.
Вы можете использовать global ключевое слово в следующих методах объекта System:
Добавление блока памяти хранилища данных или Simulink.Signal , имя которого совпадает с именем глобальной переменной в объекте System.
Совместное использование данных ссылочными моделями с помощью Simulink.Signal объект, определите Simulink.Signal объект в базовой рабочей области и использовать то же имя глобальной переменной, что и в системном блоке MATLAB.
Можно использовать блоки памяти хранилища данных или Simulink.Signal объекты для хранения общих данных.
| Тип данных | Метод глобального хранения данных | Связанные ссылки |
|---|---|---|
Небольшое число глобальных переменных в одной модели, которая не использует ссылку на модель. | Блоки памяти хранилища данных. Примечание С помощью блоков памяти хранилища данных данные помещаются в модель. | Использование блоков памяти хранилища данных для системного блока MATLAB |
Большое количество глобальных переменных в одной модели, которая не использует ссылку на модель. |
| |
Данные, совместно используемые несколькими моделями (включая ссылочные модели). |
Примечание Если используются блоки памяти хранилища данных, а также |
Объявление глобального ключевого слова в методах объектов System, поддерживающих глобальные параметры. Например:
global A;
Добавьте в модель системный блок MATLAB.
Дважды щелкните блок «Система MATLAB» и свяжите объект «Система».
Добавьте в модель блок памяти хранилища данных и задайте следующие параметры:
Имя хранилища данных, соответствующее имени глобальной переменной в коде блока системы MATLAB.
Тип данных - явный тип данных.
Тип данных не может быть auto.
Тип сигнала.
Начальное значение.
Начальное значение блока памяти хранилища данных не может быть указано.

Эта модель демонстрирует, как системный блок MATLAB использует глобальные данные, сохраненные в блоке памяти хранилища данных. B. Системный блок MATLAB связан с globalSysObjMatrix1 Системный объект. Чтобы увидеть завершенную модель, откройте ex_globalsys_objmatrix1 модель.
Перетащите эти блоки в новую модель:
Система MATLAB
Память хранилища данных
Показ
Создайте объект System, который будет связан с блоком MATLAB System. Для запуска из блока MATLAB System создайте файл шаблона объекта Basic System.
В редакторе MATLAB создайте системный объект с кодом, подобным следующему. Сохранить объект System как globalSysObjMatrix1.m. Объект System изменяется B каждый раз при выполнении.
classdef globalSysObjMatrix1 < matlab.System
% Global/DSM support scalar example
methods(Access = protected)
function setupImpl(obj)
% Perform one-time calculations, such as computing constants
end
function y = stepImpl(obj)
global B;
B(:,1)= B(:,1)+100;
y = B;
end
end
endДважды щелкните блок MATLAB System и свяжите globalSysObjMatrix1 Системный объект с блоком.
В модели дважды щелкните блок «Память хранилища данных» B.
На вкладке Атрибуты сигнала введите начальное значение, например:
[74 75 5 1;22 23 24 32;33 44 55 22]
Моделирование модели.
Системный блок MATLAB считывает начальное значение глобальных данных, сохраненных в B и обновляет значение B каждый раз при выполнении. Эта модель выполняется в течение пяти временных шагов.

Сохраните и закройте модель.
Simulink.Signal ОбъектыСоздать Simulink.Signal в рабочем пространстве модели.
Совет
Создать Simulink.Signal в базовой рабочей области для использования глобальных данных с несколькими моделями.
В обозревателе моделей перейдите к разделу model_name > Рабочее пространство модели на панели Иерархия модели.
Выберите «Добавить» > «Simulink Signal».
Убедитесь, что эти параметры применяются к Simulink.Signal объект:
Задайте для параметра Тип данных явный тип данных.
Тип данных не может быть auto.
Задайте размеры для полного задания.
Размеры сигнала не могут быть -1 или наследуется.
Задайте сложность.
Укажите начальное значение.
Начальное значение сигнала не может быть неопределено.
Задайте для параметра Имя (Name) имя глобальной переменной.
Simulink.Signal Объект с системным блоком MATLAB
Эта простая модель демонстрирует, как системный блок MATLAB использует Simulink.Signal с сигналом B. Системный блок MATLAB связан с globalSysObjScalar Системный объект. Чтобы увидеть завершенную модель, откройте ex_globalsys_simulink_signal_share модель.
Перетащите эти блоки в новую модель:
Система MATLAB
Показ
Создайте объект System, который будет связан с блоком MATLAB System. Для запуска из блока MATLAB System создайте файл шаблона объекта Basic System.
В редакторе MATLAB создайте системный объект. Сохранить объект System как globalSysObjScalar.m. Объект System изменяется B каждый раз при выполнении.
classdef globalSysObjScalar < matlab.System
% Global/DSM support scalar example
methods(Access = protected)
function setupImpl(obj)
% Perform one-time calculations, such as computing constants
end
function y = stepImpl(obj)
global B;
B= B+100;
y = B;
end
end
endДважды щелкните блок MATLAB System и свяжите globalSysObjScalar Системный объект с блоком.
В модели на вкладке Моделирование (Modeling) щелкните Обозреватель моделей (Model Explorer).
На левой панели Проводника моделей выберите рабочее пространство модели для этой модели.
На панели Содержимое (Contents) отображаются данные в рабочем пространстве модели.
В обозревателе моделей на панели Иерархия моделей (Model Hierarchy) перейдите к разделу model_name > Рабочее пространство модели. На панели «Содержимое» задайте для параметра «Имя» значение B.
Вернуться к model_name > Рабочее пространство модели.
Выберите «Добавить» > «Simulink Signal».
Установите эти параметры настройки для Simulink.Signal объект:
| Признак | Стоимость |
|---|---|
| Тип данных | double |
| Сложность | real |
| Размеры | 1 |
| Начальное значение | 25 |
Моделирование модели.
Системный блок MATLAB считывает начальное значение глобальных данных, сохраненных в B и обновляет значение B каждый раз при выполнении. Модель выполняется в течение пяти временных шагов.

Сохраните и закройте модель.
Модель можно настроить для обеспечения диагностики во время выполнения и во время компиляции, чтобы избежать проблем с хранилищами данных. Диагностика доступна в диалоговом окне Параметры конфигурации (Configuration Parameters) и диалоговом окне Параметры (Parameters) для блока Память хранилища данных (Data Store Memory). Эти средства диагностики доступны только для блоков памяти хранилища данных, но не для Simulink.Signal объекты. Дополнительные сведения об использовании диагностики хранилища данных см. в разделе Диагностика хранилища данных.
Системный блок MATLAB не поддерживает память хранения данных для данных переменного размера
Если объект System является P-кодом, необходимо реализовать getGlobalNamesImpl для предоставления имен глобальных переменных, используемых в объекте System. Например:
classdef GlobalSysObjMatrix < matlab.System
% Matrix DSM support: Increment first row by 1 at each time step
methods (Access = protected)
function y = stepImpl(obj)
global B;
B(1,:) = B(1,:)+1;
y = B;
end
function globalNames = getGlobalNamesImpl(~)
globalNames = {'B'};
end
end
endПамять хранилища данных | Система MATLAB | Simulink.Signal