Осуществляйте обмен данными между Системой MATLAB и другими блоками с помощью ключевого слова global
и объекта Блок памяти или Simulink.Signal
Хранилища данных. Вы можете должны быть использовать глобальные данные с блоком MATLAB System если:
У вас есть существующая модель, которая использует большую сумму глобальных данных, вы добавляете блок MATLAB System в эту модель, и вы не хотите создавать помехи своей модели дополнительными вводами и выводами.
Вы хотите определить объем видимости данных к частям модели.
В Simulink® вы храните глобальные данные с помощью памяти хранилища данных. Вы реализуете память хранилища данных с помощью или Блоков памяти Хранилища данных или объектов Simulink.Signal
. То, как вы храните глобальные данные, зависит от номера и осциллографа ваших глобальных переменных.
Блок MATLAB System использует эти правила определения областей видимости:
Если вы используете то же имя и для объекта Блок памяти и для Simulink.Signal
Хранилища данных, Блок памяти Хранилища данных определяет объем данных к модели.
Глобальная переменная решает иерархически к самому близкому Блоку памяти Хранилища данных с тем же именем в модели. Та же глобальная переменная, появляющаяся в двух различных Системных блоках MATLAB, может решить к различным Блокам памяти Хранилища данных в зависимости от иерархии модели. Можно использовать эту способность определить объем видимости данных к подсистеме.
Системные блоки MATLAB поддерживают память хранилища данных для:
Структуры MATLAB® (шины)
Перечислимые типы данных
Использовать разделяемые данные в вашем блоке MATLAB System:
Объявите глобальную переменную в Системе object™, что вы сопоставляете с блоком MATLAB System.
Можно использовать ключевое слово global
в этих методах Системного объекта:
Добавьте объект Блок памяти или Simulink.Signal
Хранилища данных, который имеет то же имя как глобальная переменная в Системном объекте.
Чтобы осуществлять обмен данными между моделями, на которые ссылаются, с помощью объекта Simulink.Signal
, задайте объект Simulink.Signal
в базовом рабочем пространстве и используйте то же имя глобальной переменной в качестве в блоке MATLAB System.
Можно использовать Блоки памяти Хранилища данных, или Simulink.Signal
возражает, чтобы сохранить разделяемые данные.
Тип данных | Метод устройства хранения данных глобальных данных | Ссылки по теме |
---|---|---|
Небольшое количество глобальных переменных в одной модели, которая не использует модель - ссылку. | Блоки памяти Хранилища данных. ПримечаниеИспользуя Хранилище данных Блоки памяти определяет объем данных к модели. | Как использовать блоки памяти хранилища данных для MATLAB System Block |
Большое количество глобальных переменных в одной модели, которая не использует модель - ссылку. | Объекты
| |
Данные совместно используются многоуровневыми моделями (включая модели, на которые ссылаются). | Объекты ПримечаниеЕсли вы используете Блоки памяти Хранилища данных, а также |
Объявите глобальное ключевое слово в методах Системного объекта та поддержка глобальные переменные. Например:
global A;
Добавьте блок MATLAB System в свою модель.
Дважды кликните блок MATLAB System и сопоставьте Системный объект.
Добавьте Блок памяти Хранилища данных в свою модель и установите:
Data store name, чтобы совпадать с именем глобальной переменной в вашем Системном блочном коде MATLAB.
Data type к явному типу данных.
Типом данных не может быть auto
.
Signal type.
Initial value.
Начальное значение Блока памяти Хранилища данных не может быть не задано.
Эта модель демонстрирует, как блок MATLAB System использует глобальные данные, хранимые в Блоке памяти Хранилища данных B
. Блок MATLAB System сопоставлен с Системным объектом globalSysObjMatrix1
. Чтобы видеть завершенную модель, откройте модель ex_globalsys_objmatrix1
.
Перетащите эти блоки в новую модель:
Matlab.system
Память хранилища данных
Отображение
Создайте Системный объект, чтобы сопоставить с блоком MATLAB System. Чтобы запуститься, от блока MATLAB System, создают файл шаблона объектов Базовой системы.
В редакторе MATLAB создайте Системный объект с кодом как следующее. Сохраните Системный объект как globalSysObjMatrix1.m
. Системный объект изменяет 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
.
Во вкладке Signal Attributes введите начальное значение, например:
[74 75 5 1;22 23 24 32;33 44 55 22]
Моделируйте модель.
Блок MATLAB System читает начальное значение глобальных данных, хранимых в B
, и обновляет значение B
каждый раз, когда это выполняется. Эта модель выполняется для пяти временных шагов.
Сохраните и закройте свою модель.
Simulink.Signal
Создайте объект Simulink.Signal
в рабочем пространстве модели.
Создайте объект Simulink.Signal
в базовом рабочем пространстве, чтобы использовать глобальные данные с многоуровневыми моделями.
В Model Explorer перейдите к model_name
> Model Workspace в панели the Model Hierarchy.
Выберите Add> Simulink Signal.
Гарантируйте, что эти настройки применяются к объекту Simulink.Signal
:
Установите Data type на явный тип данных.
Типом данных не может быть auto
.
Установите Dimensions быть полностью заданным.
Размерностями сигнала не может быть -1
или наследованный.
Установите Complexity.
Задайте Initial value.
Начальное значение сигнала не может быть не задано.
Установите Name на имя глобальной переменной.
Simulink.Signal
с MATLAB System BlockЭта простая модель демонстрирует, как блок MATLAB System использует Simulink.Signal
с сигналом B. Блок MATLAB System сопоставлен с Системным объектом globalSysObjScalar
. Чтобы видеть завершенную модель, откройте модель ex_globalsys_simulink_signal_share
.
Перетащите эти блоки в новую модель:
Matlab.system
Отображение
Создайте Системный объект, чтобы сопоставить с блоком MATLAB System. Чтобы запуститься, от блока MATLAB System, создают файл шаблона объектов Базовой системы.
В редакторе MATLAB создайте Системный объект. Сохраните Системный объект как globalSysObjScalar.m
. Системный объект изменяет 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
с блоком.
Из образцового меню выберите View> Model Explorer.
На левой панели Model Explorer выберите рабочее пространство модели для этой модели.
Панель Contents отображает данные в рабочем пространстве модели.
В Model Explorer, в панели Model Hierarchy, перешли к model_name
> Model Workspace. В панели Contents, набор Name к B
.
Перейдите назад к model_name
> Model Workspace.
Выберите Add> Simulink Signal.
Установите эти настройки для объекта Simulink.Signal
:
Атрибут | Значение |
---|---|
Data type | double |
Complexity | real |
Dimensions | 1 |
Initial value | 25 |
Моделируйте модель.
Блок MATLAB System читает начальное значение глобальных данных, хранимых в B
, и обновляет значение B
каждый раз, когда это выполняется. Модель запускается для пяти временных шагов.
Сохраните и закройте свою модель.
Можно сконфигурировать модель, чтобы обеспечить диагностику и времени компиляции во время выполнения, чтобы избежать проблем с хранилищами данных. Диагностика доступна в диалоговом окне Configuration Parameters и диалоговом окне Parameters для Блока памяти Хранилища данных. Эта диагностика доступна для Блоков памяти Хранилища данных только, не для объектов Simulink.Signal
. Для получения дополнительной информации об использовании диагностики хранилища данных смотрите Диагностику Хранилища данных.
Блок MATLAB System не поддерживает память хранилища данных для данных переменного размера
Если Системным объектом является Псевдокод, необходимо реализовать метод getGlobalNamesImpl
, чтобы обеспечить, глобальная переменная называет вас использованием в Системном объекте. Например:
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.system | Simulink.Signal