Осуществляйте обмен данными с другими блоками

Осуществляйте обмен данными между Системой MATLAB и другими блоками с помощью ключевого слова global и объекта Блок памяти или Simulink.Signal Хранилища данных. Вы можете должны быть использовать глобальные данные с блоком MATLAB System если:

  • У вас есть существующая модель, которая использует большую сумму глобальных данных, вы добавляете блок MATLAB System в эту модель, и вы не хотите создавать помехи своей модели дополнительными вводами и выводами.

  • Вы хотите определить объем видимости данных к частям модели.

Совместное использование данных с MATLAB System Block

В Simulink® вы храните глобальные данные с помощью памяти хранилища данных. Вы реализуете память хранилища данных с помощью или Блоков памяти Хранилища данных или объектов Simulink.Signal. То, как вы храните глобальные данные, зависит от номера и осциллографа ваших глобальных переменных.

Правила определения областей видимости для разделяемых данных в системных блоках MATLAB

Блок MATLAB System использует эти правила определения областей видимости:

  • Если вы используете то же имя и для объекта Блок памяти и для Simulink.Signal Хранилища данных, Блок памяти Хранилища данных определяет объем данных к модели.

  • Глобальная переменная решает иерархически к самому близкому Блоку памяти Хранилища данных с тем же именем в модели. Та же глобальная переменная, появляющаяся в двух различных Системных блоках MATLAB, может решить к различным Блокам памяти Хранилища данных в зависимости от иерархии модели. Можно использовать эту способность определить объем видимости данных к подсистеме.

Используя разделяемые данные в системных блоках MATLAB

Системные блоки MATLAB поддерживают память хранилища данных для:

  • Структуры MATLAB® (шины)

  • Перечислимые типы данных

Как использовать совместное использование данных с MATLAB System Block

Использовать разделяемые данные в вашем блоке MATLAB System:

  1. Объявите глобальную переменную в Системе object™, что вы сопоставляете с блоком MATLAB System.

    Можно использовать ключевое слово global в этих методах Системного объекта:

  2. Добавьте объект Блок памяти или Simulink.Signal Хранилища данных, который имеет то же имя как глобальная переменная в Системном объекте.

Чтобы осуществлять обмен данными между моделями, на которые ссылаются, с помощью объекта Simulink.Signal, задайте объект Simulink.Signal в базовом рабочем пространстве и используйте то же имя глобальной переменной в качестве в блоке MATLAB System.

Выберите How to Store Shared Data

Можно использовать Блоки памяти Хранилища данных, или Simulink.Signal возражает, чтобы сохранить разделяемые данные.

Тип данныхМетод устройства хранения данных глобальных данныхСсылки по теме

Небольшое количество глобальных переменных в одной модели, которая не использует модель - ссылку.

Блоки памяти Хранилища данных.

Примечание

Используя Хранилище данных Блоки памяти определяет объем данных к модели.

Как использовать блоки памяти хранилища данных для MATLAB System Block

Большое количество глобальных переменных в одной модели, которая не использует модель - ссылку.

Объекты Simulink.Signal заданы в рабочем пространстве модели. объекты Simulink.Signal предлагают эти преимущества:

  • Вы не должны добавлять многочисленные Блоки памяти Хранилища данных в свою модель.

  • Можно загрузить объекты Simulink.Signal в из MAT-файла.

Как настроить Simulink. Объекты сигнала

Данные совместно используются многоуровневыми моделями (включая модели, на которые ссылаются).

Объекты Simulink.Signal заданы в базовом рабочем пространстве

Примечание

Если вы используете Блоки памяти Хранилища данных, а также Simulink.Signal, обратите внимание, что использование Блоков памяти Хранилища данных определяет объем данных к модели.

Как настроить Simulink. Объекты сигнала

Как использовать блоки памяти хранилища данных для MATLAB System Block

  1. Объявите глобальное ключевое слово в методах Системного объекта та поддержка глобальные переменные. Например:

    global A;
  2. Добавьте блок MATLAB System в свою модель.

  3. Дважды кликните блок MATLAB System и сопоставьте Системный объект.

  4. Добавьте Блок памяти Хранилища данных в свою модель и установите:

    1. Data store name, чтобы совпадать с именем глобальной переменной в вашем Системном блочном коде MATLAB.

    2. Data type к явному типу данных.

      Типом данных не может быть auto.

    3. Signal type.

    4. Initial value.

      Начальное значение Блока памяти Хранилища данных не может быть не задано.

Используйте память хранилища данных с MATLAB System Block

Эта модель демонстрирует, как блок MATLAB System использует глобальные данные, хранимые в Блоке памяти Хранилища данных B. Блок MATLAB System сопоставлен с Системным объектом globalSysObjMatrix1. Чтобы видеть завершенную модель, откройте модель ex_globalsys_objmatrix1.

  1. Перетащите эти блоки в новую модель:

    • Matlab.system

    • Память хранилища данных

    • Отображение

  2. Создайте Системный объект, чтобы сопоставить с блоком MATLAB System. Чтобы запуститься, от блока MATLAB System, создают файл шаблона объектов Базовой системы.

  3. В редакторе 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
  4. Дважды кликните блок MATLAB System и сопоставьте Системный объект globalSysObjMatrix1 с блоком.

  5. В модели дважды кликните Блок памяти Хранилища данных B.

  6. Во вкладке Signal Attributes введите начальное значение, например:

    [74 75 5 1;22 23 24 32;33 44 55 22]
  7. Моделируйте модель.

    Блок MATLAB System читает начальное значение глобальных данных, хранимых в B, и обновляет значение B каждый раз, когда это выполняется. Эта модель выполняется для пяти временных шагов.

  8. Сохраните и закройте свою модель.

Как настроить объекты Simulink.Signal

Создайте объект Simulink.Signal в рабочем пространстве модели.

Совет

Создайте объект Simulink.Signal в базовом рабочем пространстве, чтобы использовать глобальные данные с многоуровневыми моделями.

  1. В Model Explorer перейдите к model_name> Model Workspace в панели the Model Hierarchy.

    Выберите Add> Simulink Signal.

  2. Гарантируйте, что эти настройки применяются к объекту Simulink.Signal:

    1. Установите Data type на явный тип данных.

      Типом данных не может быть auto.

    2. Установите Dimensions быть полностью заданным.

      Размерностями сигнала не может быть -1 или наследованный.

    3. Установите Complexity.

    4. Задайте Initial value.

      Начальное значение сигнала не может быть не задано.

    5. Установите Name на имя глобальной переменной.

Используйте объект Simulink.Signal с MATLAB System Block

Эта простая модель демонстрирует, как блок MATLAB System использует Simulink.Signal с сигналом B. Блок MATLAB System сопоставлен с Системным объектом globalSysObjScalar. Чтобы видеть завершенную модель, откройте модель ex_globalsys_simulink_signal_share.

  1. Перетащите эти блоки в новую модель:

    • Matlab.system

    • Отображение

  2. Создайте Системный объект, чтобы сопоставить с блоком MATLAB System. Чтобы запуститься, от блока MATLAB System, создают файл шаблона объектов Базовой системы.

  3. В редакторе 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
  4. Дважды кликните блок MATLAB System и сопоставьте Системный объект globalSysObjScalar с блоком.

  5. Из образцового меню выберите View> Model Explorer.

  6. На левой панели Model Explorer выберите рабочее пространство модели для этой модели.

    Панель Contents отображает данные в рабочем пространстве модели.

  7. В Model Explorer, в панели Model Hierarchy, перешли к model_name> Model Workspace. В панели Contents, набор Name к B.

  8. Перейдите назад к model_name> Model Workspace.

    • Выберите Add> Simulink Signal.

    • Установите эти настройки для объекта Simulink.Signal:

      АтрибутЗначение
      Data typedouble
      Complexityreal
      Dimensions1
      Initial value25
  9. Моделируйте модель.

    Блок MATLAB System читает начальное значение глобальных данных, хранимых в B, и обновляет значение B каждый раз, когда это выполняется. Модель запускается для пяти временных шагов.

  10. Сохраните и закройте свою модель.

Используя диагностику хранилища данных, чтобы обнаружить проблемы доступа к памяти

Можно сконфигурировать модель, чтобы обеспечить диагностику и времени компиляции во время выполнения, чтобы избежать проблем с хранилищами данных. Диагностика доступна в диалоговом окне Configuration Parameters и диалоговом окне Parameters для Блока памяти Хранилища данных. Эта диагностика доступна для Блоков памяти Хранилища данных только, не для объектов Simulink.Signal. Для получения дополнительной информации об использовании диагностики хранилища данных смотрите Диагностику Хранилища данных.

Ограничения Использования разделяемых данных в системных блоках MATLAB

Блок MATLAB System не поддерживает память хранилища данных для данных переменного размера

Используйте разделяемые данные с системными объектами P-Coded

Если Системным объектом является Псевдокод, необходимо реализовать метод 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

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

| |

Похожие темы