Настройте системное диалоговое окно блока

Добавьте заголовок в MATLAB System Block

Добавьте, что панель заголовка к Системе object™–based блок реализовала использование блока MATLAB System.

Задайте заголовок заголовка и текст

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

Если вы не задаете getHeaderImpl, блок не отображает заголовка или текста для панели.

Вы всегда устанавливаете доступ к методу getHeaderImpl к protected, потому что это - внутренний метод, который конечные пользователи непосредственно не вызывают или запускают.

methods (Static, Access = protected)
   function header = getHeaderImpl
      header = matlab.system.display.Header('MyCounter',...
        'Title','My Enhanced Counter');
   end
end

Полный файл определения класса с заданным заголовком

 classdef MyCounter < matlab.System
  
   % MyCounter Count values
     
    properties
       Threshold = 1
    end
    properties (DiscreteState)
       Count
    end
 
    methods (Static, Access = protected)
      function header = getHeaderImpl
         header = matlab.system.display.Header('MyCounter',...
           'Title','My Enhanced Counter',...
           'Text', 'This counter is an enhanced version.');
      end
    end

    methods (Access = protected)
       function setupImpl(obj,u)
          obj.Count = 0;
       end
       function y = stepImpl(obj,u)
          if (u > obj.Threshold)
             obj.Count = obj.Count + 1;
          end
          y = obj.Count;
       end
       function resetImpl(obj)
          obj.Count = 0;
       end
    end
end

Добавьте вкладку типов данных в MATLAB System Block

Добавьте вкладку Data Types в диалоговое окно блока MATLAB System. Эта вкладка включает настройки типа данных с фиксированной точкой.

Отобразите вкладку типов данных

Используйте matlab.system.showFiSettingsImpl, чтобы отобразить вкладку Data Types в диалоговом окне блока MATLAB System.

methods (Static, Access = protected)
   function showTab = showFiSettingsImpl
      showTab = true;
   end
end

Полный файл определения класса с вкладкой типов данных

Используйте showFiSettingsImpl, чтобы отобразить вкладку Data Types для Системного объекта, который добавляет смещение во вход фиксированной точки.

classdef FiTabAddOffset < matlab.System
% FiTabAddOffset Add an offset to input

   properties
      Offset = 1;
   end
   
   methods
      function obj = FiTabAddOffset(varargin)
         setProperties(obj,nargin,varargin{:});
      end
   end
    
   methods (Access = protected)
      function y = stepImpl(~,u)
         y = u + obj.Offset;
      end
   end
    
   methods(Static, Access=protected)
      function header = getHeaderImpl
         header = matlab.system.display.Header('Title',...
              'Add Offset','Text','Add an offset to the input');
      end
         
      function isVisible = showFiSettingsImpl
         isVisible = true; 
      end
   end
end

Диалоговое окно с вкладкой типов данных

Добавьте группы свойства в системный объект и MATLAB System Block

Разделы свойства Define и группы раздела для отображения Системного объекта. Разделы и группы раздела отображаются как панели и вкладки, соответственно, в диалоговом окне блока MATLAB System.

Раздел Define свойств

Используйте matlab.system.display.Section и getPropertyGroupsImpl, чтобы задать два раздела группы свойства путем определения их заголовков и списков свойств.

Если вы не задаете свойство в getPropertyGroupsImpl, блок не отображает то свойство.

 methods (Static, Access = protected)
    function groups = getPropertyGroupsImpl
       valueGroup = matlab.system.display.Section(...
            'Title','Value parameters',...
            'PropertyList',{'StartValue','EndValue'});
 
       thresholdGroup = matlab.system.display.Section(...
            'Title','Threshold parameters',...
            'PropertyList',{'Threshold','UseThreshold'});
       groups = [valueGroup,thresholdGroup];
    end
 end

Задайте группу разделов

Используйте matlab.system.display.SectionGroup, matlab.system.display.Section и getPropertyGroupsImpl, чтобы задать две вкладки, каждый содержащий определенные свойства.

methods (Static, Access = protected)
   function groups = getPropertyGroupsImpl
      upperGroup = matlab.system.display.Section(...
           'Title', 'Upper threshold', ...
           'PropertyList',{'UpperThreshold'});
      lowerGroup = matlab.system.display.Section(...
           'Title','Lower threshold', ...
           'PropertyList',{'UseLowerThreshold','LowerThreshold'});
           
      thresholdGroup = matlab.system.display.SectionGroup(...
           'Title', 'Parameters', ...
           'Sections',  [upperGroup,lowerGroup]);
           
      valuesGroup = matlab.system.display.SectionGroup(...
           'Title', 'Initial conditions', ...
           'PropertyList',  {'StartValue'});
          
      groups = [thresholdGroup, valuesGroup];
   end
end

Полный файл определения класса с группой свойства и отдельной вкладкой

classdef EnhancedCounter < matlab.System 
   % EnhancedCounter  Count values considering thresholds
    
   properties
      UpperThreshold = 1;
      LowerThreshold = 0;
   end
   
   properties (Nontunable)
      StartValue = 0; 
   end
    
   properties(Logical,Nontunable)
      % Count values less than lower threshold
      UseLowerThreshold = true; 
   end
        
   properties (DiscreteState)
      Count;
   end
        
   methods (Static, Access = protected)
      function groups = getPropertyGroupsImpl
         upperGroup = matlab.system.display.Section(...
              'Title', 'Upper threshold', ...
              'PropertyList',{'UpperThreshold'});
         lowerGroup = matlab.system.display.Section(...
              'Title','Lower threshold', ...
              'PropertyList',{'UseLowerThreshold','LowerThreshold'});
           
         thresholdGroup = matlab.system.display.SectionGroup(...
              'Title', 'Parameters', ...
              'Sections',  [upperGroup,lowerGroup]);
           
         valuesGroup = matlab.system.display.SectionGroup(...
              'Title', 'Initial conditions', ...
              'PropertyList',  {'StartValue'});
           
         groups = [thresholdGroup, valuesGroup];
      end
   end
    
   methods (Access = protected)
      function setupImpl(obj)
         obj.Count = obj.StartValue;
      end
        
      function y = stepImpl(obj,u)
         if obj.UseLowerThreshold
            if (u > obj.UpperThreshold) || ...
                  (u <  obj.LowerThreshold)
               obj.Count = obj.Count + 1;
            end
         else
            if (u > obj.UpperThreshold)
               obj.Count = obj.Count + 1;
            end
         end
         y = obj.Count;
      end
      function resetImpl(obj)
         obj.Count = obj.StartValue;
      end
        
               
      function flag = isInactivePropertyImpl(obj, prop)
         flag = false;
         switch prop
            case 'LowerThreshold'
               flag = ~obj.UseLowerThreshold;
         end
      end
   end
end

Индивидуально настраиваемое диалоговое окно

Управляйте типом симуляции в MATLAB System Block

Задайте тип симуляции и появляется ли параметр Simulate using на диалоговом окне блока Simulink® MATLAB System. Опциями симуляции является 'Code generation' и 'Interpreted mode'.

Если вы не включаете метод getSimulateUsingImpl в свой файл определения класса, Системный объект позволяет и режимы симуляции и значения по умолчанию к 'Code generation'. Если вы не включаете метод showSimulateUsingImpl, параметр Simulate using появляется на диалоговом окне блока.

Необходимо установить getSimulateUsingImpl и методы showSimulateUsingImpl к static и доступу для этих методов к protected.

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

methods(Static,Access = protected)
   function simMode = getSimulateUsingImpl
       simMode = 'Interpreted execution';
    end
end

Просмотрите метод в полном файле определения класса.

classdef PlotRamp < matlab.System
  % Display a button to launch a plot figure.
        
  properties (Nontunable)
    RampLimit = 10;
  end
    
  methods(Static, Access=protected)
    function group = getPropertyGroupsImpl
      group = matlab.system.display.Section(mfilename('class'));
      group.Actions = matlab.system.display.Action(@(~,obj)...
            visualize(obj),'Label','Visualize');
    end

    function simMode = getSimulateUsingImpl
      simMode = 'Interpreted execution';
    end
  end
    
  methods
    function obj = ActionDemo(varargin)
      setProperties(obj,nargin,varargin{:});
    end
        
    function visualize(obj)
      figure;
      d = 1:obj.RampLimit;
      plot(d);
    end
   methods(Static,Access = protected)
   end
  end
end

Диалоговое окно с параметром типа симуляции

Добавьте кнопку в MATLAB System Block

Добавьте кнопку в диалоговое окно блока MATLAB System. Эта кнопка открывает фигуру, которая строит функцию пандуса.

Задайте действие для диалоговой кнопки

Используйте matlab.system.display.Action, чтобы задать функцию MATLAB® или код, сопоставленный с кнопкой в диалоговом окне блока MATLAB System. Пример также показывает, как установить параметры кнопки и использовать вход объекта actionData, чтобы сохранить указатель фигуры. Эта часть примера кода использует ту же фигуру, когда кнопка нажата многократно, вместо того, чтобы открыть новую фигуру для каждого нажатия кнопки.

methods(Static,Access = protected)
  function group = getPropertyGroupsImpl
    group = matlab.system.display.Section(mfilename('class'));
    group.Actions = matlab.system.display.Action(@(actionData,obj)...
       visualize(obj,actionData),'Label','Visualize');
  end
end
    
methods
  function obj = ActionDemo(varargin)
    setProperties(obj,nargin,varargin{:});
  end
        
  function visualize(obj,actionData)
    f = actionData.UserData;
    if isempty(f) || ~ishandle(f)
      f = figure;
      actionData.UserData = f;
    else
      figure(f); % Make figure current
    end
        
    d = 1:obj.RampLimit;
    plot(d);
  end
end

Полный файл определения класса для диалоговой кнопки

Задайте группу свойства и вторую вкладку в файле определения класса.

classdef PlotRamp < matlab.System
  % Display a button to launch a plot figure.
        
  properties (Nontunable)
    RampLimit = 10;
  end
    
  methods(Static,Access = protected)
    function group = getPropertyGroupsImpl
      group = matlab.system.display.Section(mfilename('class'));
      group.Actions = matlab.system.display.Action(@(actionData,obj)...
        visualize(obj,actionData),'Label','Visualize');
    end
  end
    
  methods
    function obj = ActionDemo(varargin)
      setProperties(obj,nargin,varargin{:});
    end
        
    function visualize(obj,actionData)
      f = actionData.UserData;
      if isempty(f) || ~ishandle(f)
        f = figure;
        actionData.UserData = f;
      else
        figure(f); % Make figure current
      end
        
      d = 1:obj.RampLimit;
      plot(d);
    end
  end
end

Диалоговое окно с визуализирует кнопку

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

| | | | | |

Похожие темы