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

Осуществляйте обмен данными между Системой 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. Имя хранилища данных, чтобы совпадать с именем глобальной переменной в вашем Системном блочном коде MATLAB.

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

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

    3. Тип сигнала.

    4. Начальное значение.

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

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

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

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

    • Matlab.system

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

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

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

  3. В редакторе MATLAB создайте Системный объект с кодом как следующее. Сохраните Системный объект как globalSysObjMatrix1.m 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_name> Рабочее пространство модели в панели Иерархии модели.

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

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

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

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

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

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

    3. Установите сложность.

    4. Задайте Начальное значение.

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

    5. Определите Имя к имени глобальной переменной.

Используйте объект 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 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. На левой панели Образцового Проводника выберите рабочее пространство модели для этой модели.

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

  7. В Образцовом Проводнике, в панели Иерархии модели, перешли к model_name> Рабочее пространство модели. В панели Содержимого, определенном Имени к B.

  8. Перейдите назад к model_name> Рабочее пространство модели.

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

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

      АтрибутЗначение
      Тип данных'double'
      Сложностьдействительный
      Размерности1
      Начальное значение25
  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

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

| |

Похожие темы

Была ли эта тема полезной?