Использование глобальных переменных в системных объектах

Глобальные переменные являются переменными, к которым можно получить доступ в других функциях MATLAB® или блоках Simulink®.

Глобальные переменные системного объекта в MATLAB

Для Системных объектов, которые используются только в MATLAB, вы задаете глобальные переменные в Системе object™ файлы определения класса таким же образом, что вы задаете глобальные переменные в другом коде MATLAB (см. Глобальные переменные (MATLAB)).

Глобальные переменные системного объекта в Simulink

Для Системных объектов, которые используются в блоке MATLAB System в Simulink, вы также задаете глобальные переменные, как вы делаете в MATLAB. Однако, чтобы использовать глобальные переменные в Simulink, если вы объявили глобальные переменные в методах, вызванных stepImpl, updateImpl или outputImpl, необходимо объявить глобальные переменные в stepImpl, updateImpl или методе outputImpl, соответственно.

Вы настраиваете и используете глобальные переменные для блока MATLAB System таким же образом, как вы делаете для блока MATLAB function (см. Хранилища данных и Осуществляйте обмен данными Глобально). Как блок MATLAB function, необходимо также использовать имя переменной, соответствующее с Блоком памяти Хранилища данных, чтобы использовать глобальные переменные в Simulink.

Например, этот файл определения класса задает Системный объект, который постепенно увеличивает первую строку матрицы 1 на каждом временном шаге. Если файл является P-coded, необходимо включать getGlobalNamesImpl.

classdef GlobalSysObjMatrix < matlab.System 
   methods (Access = protected)  
      function y = stepImpl(obj)
         global B;
         B(1,:) = B(1,:)+1;
         y = B;
      end

      % Include getGlobalNamesImpl only if the class file is P-coded.
      function globalNames = getGlobalNamesImpl(~)
         globalNames = {'B'};
      end    
   end
end
Эта модель включает объект GlobalSysObjMatrix в блок MATLAB System и связанный Блок памяти Хранилища данных.

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