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

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

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

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

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

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

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

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

  • Если вы используете то же имя и в блоке Data Store Memory и в Simulink.Signal объект, области действия блока Data Store Memory данные к модели.

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

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

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

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

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

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

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

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

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

  2. Добавьте блок Data Store Memory или Simulink.Signal объект, который имеет то же имя как глобальная переменная в Системном объекте.

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

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

Можно использовать блоки Data Store Memory или Simulink.Signal объекты сохранить разделяемые данные.

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

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

Блоки Data Store Memory.

Примечание

Используя Data Store Memory блоки определяет объем данных к модели.

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

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

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

  • Вы не должны добавлять многочисленные блоки Data Store Memory в свою модель.

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

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

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

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

Примечание

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

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

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

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

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

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

  4. Добавьте блок Data Store Memory в свою модель и установите:

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

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

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

    3. Signal type.

    4. Initial value.

      Начальное значение блока Data Store Memory не может быть не задано.

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

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

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

    • MATLAB System

    • Data Store Memory

    • Display

  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. В модели дважды кликните блок Data Store Memory 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

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

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

    • MATLAB System

    • Display

  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. Из модели, на вкладке Modeling, нажимают 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 для блока Data Store Memory. Эта диагностика доступна для блоков Data Store Memory только, не для Simulink.Signal объекты. Для получения дополнительной информации об использовании диагностики хранилища данных смотрите Диагностику Хранилища данных.

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

Блок 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

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

| |

Похожие темы