Осуществляйте обмен данными между MATLAB System и другими блоками с помощью global
ключевое слово и блок Data Store Memory или Simulink.Signal
объект. Вы можете должны быть использовать глобальные данные с блоком MATLAB System если:
У вас есть существующая модель, которая использует большую сумму глобальных данных, вы добавляете блок MATLAB System в эту модель, и вы не хотите создавать помехи своей модели дополнительными вводами и выводами.
Вы хотите определить объем видимости данных к частям модели.
В Simulink® вы храните глобальные данные с помощью памяти хранилища данных. Вы реализуете память хранилища данных с помощью или блоков Data Store Memory или Simulink.Signal
объекты. То, как вы храните глобальные данные, зависит от номера и осциллографа ваших глобальных переменных.
Блок MATLAB System использует эти правила определения областей видимости:
Если вы используете то же имя и в блоке Data Store Memory и в Simulink.Signal
объект, области действия блока Data Store Memory данные к модели.
Глобальная переменная решает иерархически с самым близким блоком Data Store Memory с тем же именем в модели. Та же глобальная переменная, появляющаяся в двух различных блоках MATLAB System, может решить к различным Блокам памяти Хранилища данных в зависимости от иерархии модели. Можно использовать эту способность определить объем видимости данных к подсистеме.
Блоки MATLAB System поддерживают память хранилища данных для:
Структуры MATLAB® (шины)
Перечислимые типы данных
Использовать разделяемые данные в вашем блоке MATLAB System:
Объявите глобальную переменную в Системе object™, что вы сопоставляете с блоком MATLAB System.
Можно использовать global
ключевое слово в этих методах Системного объекта:
Добавьте блок Data Store Memory или Simulink.Signal
объект, который имеет то же имя как глобальная переменная в Системном объекте.
Осуществлять обмен данными между моделями, на которые ссылаются, с помощью Simulink.Signal
возразите, задайте Simulink.Signal
объект в базовом рабочем пространстве и использовании то же имя глобальной переменной как в блоке MATLAB System.
Можно использовать блоки Data Store Memory или Simulink.Signal
объекты сохранить разделяемые данные.
Тип данных | Метод устройства хранения данных глобальных данных | Ссылки по теме |
---|---|---|
Небольшое количество глобальных переменных в одной модели, которая не использует модель - ссылку. | Блоки Data Store Memory. ПримечаниеИспользуя Data Store Memory блоки определяет объем данных к модели. | Как использовать блоки памяти хранилища данных в MATLAB System Block |
Большое количество глобальных переменных в одной модели, которая не использует модель - ссылку. |
| |
Данные совместно используются многоуровневыми моделями (включая модели, на которые ссылаются). |
ПримечаниеЕсли вы используете блоки Data Store Memory, а также |
Объявите глобальное ключевое слово в методах Системного объекта та поддержка глобальные переменные. Например:
global A;
Добавьте блок MATLAB System в свою модель.
Дважды кликните блок MATLAB System и сопоставьте Системный объект.
Добавьте блок Data Store Memory в свою модель и установите:
Data store name, чтобы совпадать с именем глобальной переменной в вашем блочном коде MATLAB System.
Data type к явному типу данных.
Типом данных не может быть auto
.
Signal type.
Initial value.
Начальное значение блока Data Store Memory не может быть не задано.
Эта модель демонстрирует, как блок MATLAB System использует глобальные данные, хранимые в блоке Data Store Memory B
. Блок MATLAB System сопоставлен с globalSysObjMatrix1
Системный объект. Чтобы видеть завершенную модель, откройте ex_globalsys_objmatrix1
модель.
Перетащите эти блоки в новую модель:
MATLAB System
Data Store Memory
Display
Создайте Системный объект, чтобы сопоставить с блоком 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
Системный объект с блоком.
В модели дважды кликните блок Data Store Memory 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Эта простая модель демонстрирует, как блок MATLAB System использует Simulink.Signal
с сигналом B. Блок MATLAB System сопоставлен с globalSysObjScalar
Системный объект. Чтобы видеть завершенную модель, откройте ex_globalsys_simulink_signal_share
модель.
Перетащите эти блоки в новую модель:
MATLAB System
Display
Создайте Системный объект, чтобы сопоставить с блоком 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
Системный объект с блоком.
Из модели, на вкладке Modeling, нажимают 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 для блока Data Store Memory. Эта диагностика доступна для блоков Data Store Memory только, не для 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
Data Store Memory | MATLAB System | Simulink.Signal