настройка

(Не рекомендуемый), Готовят компонент к симуляции

setup не рекомендуется. Для получения дополнительной информации см. Вопросы совместимости.

Синтаксис

function setup
[...]
end

function setup %#simple
[...]
end

Описание

function setup
[...]
end

Раздел настройки файла Simscape™ состоит из функции с именем setup. Функция setup выполняется однажды для каждого экземпляра компонента во время образцовой компиляции. Это не берет аргументов и не возвращает аргументов.

Примечание

Setup не является конструктором; это готовит компонент к симуляции.

Тело функции setup может содержать операторы присваивания, операторы if и error, и функции through и across. Функция setup выполняется однажды для каждого экземпляра компонента во время образцовой компиляции. Это не берет аргументов и не возвращает аргументов.

Используйте функцию setup в следующих целях:

  • Проверка параметров

  • Вычисление выведенных параметров

  • Устанавливание начальных условий

Следующие правила применяются:

  • Функция setup выполняется как обычный код MATLAB®.

  • Все параметры и переменные, объявленные в компоненте, доступны их именем, например:

    component MyComponent
       parameters
          p = {1, 'm' };
       end
       [...]
       function setup
          disp( p ); % during compilation, prints value of p 
                     % for each instance of MyComponent in the model
       [...]
    end   
  • Можно использовать имена переменных только на левой стороне присвоений в разделе setup. Названия параметра могут использоваться с обеих сторон.

  • Все параметры и переменные, которые внешне перезаписываемы, перезаписываемы в рамках настройки.

  • В случае конфликта присвоения в разделе setup заменяют сделанных в разделе объявления. Чтобы гарантировать соответствующую блочную операцию, если вы присваиваете значение участнику в разделе setup, объявляют этого участника с атрибутом, который препятствует тому, чтобы он появился в диалоговом окне блока, таком как (ExternalAccess=observe). В противном случае присвоение, сделанное в разделе setup, заменит значения, заданные в диалоговом окне пользователем блока. См. Списки атрибутов для получения дополнительной информации.

  • Локальные переменные MATLAB могут быть введены в функции setup. Они ограничены по объему только к функции setup.

Следующие ограничения применяются:

  • Синтаксис команд не поддержан в функции setup. Необходимо использовать синтаксис функций. Для получения дополнительной информации смотрите Сравнение синтаксиса команд и функций (MATLAB).

  • Персистентные и глобальные переменные не поддержаны. Для получения дополнительной информации смотрите Персистентные Переменные (MATLAB) и Глобальные переменные (MATLAB).

  • Системные команды MATLAB с помощью оператора ! не поддержаны.

  • try-end и построения try-catch-end не поддержаны.

  • Вложенные функции не поддержаны.

  • Передающие участники объявления к внешним функциям MATLAB, например, my_function(param1), не поддержаны. Можно, однако, передать членские значения внешним функциям, например, my_function(param1.value('unit')).

Простой Setup

В целом вы не можете определять параметры блоков как время выполнения, если базовый компонент использует его в функции настройки. Однако, если настройка ограничивается простыми операциями как проверка ошибок, можно объявить функцию setup как простую:

function setup %#simple
[...]
end

В этом случае многие параметры, используемые в функции setup, могут определяться как параметры периода выполнения.

Когда вы объявляете функцию setup как простую, следующие правила применяются:

  • Все выражения, используемые в простой функции setup, должны ограничить себя поддержанными в другом месте на языке Simscape. Для полного списка поддерживаемых функций смотрите equations.

  • Значение, параметр или переменная, может быть присвоено только однажды на любом данном пути через функцию setup.

  • Все чтения от параметра должны появиться после того, как он будет присвоен в функции setup.

  • Все присвоения должны закончиться в точке с запятой.

  • Все участники, которые присвоены, должны быть частными параметрами или переменными текущего компонента. Простая настройка не может присвоить членам дочерних компонентов или членам базового класса.

  • Можно объявить локальные переменные MATLAB в простой функции setup, но эти переменные не могут быть структурами.

  • Аргументы error и функций warning должны быть литеральными строками.

В целом, делая функцию setup простыми способами получения, что все параметры являются способным временем выполнения. Исключением являются те параметры, которые управляют условным присвоением:

 if p1 > 0
   p3 = f1(p2);
 else
   p3 = f2(p2);
 end  

В этом случае p1 должен быть временем компиляции. Однако только те параметры, которые влияют на условное присвоение, являются временем компиляции. Те, которые влияют на состояние ошибки, являются способным временем выполнения.

Примеры

Следующая функция setup подтверждает параметры с помощью оператора if и функции error.

component MyComponent
   parameters
      LowerThreshold = {1, 'm' };
      UpperThreshold = {1, 'm' };
   end
   [...]
   function setup
      if LowerThreshold > UpperThreshold 
         error( 'LowerThreshold is greater than UpperThreshold' );
      end
   end
   [...]
end   

Чтобы избегать использования setup, перепишите этот пример можно следующим образом:

component MyComponent
   parameters
      LowerThreshold = {1, 'm' };
      UpperThreshold = {1, 'm' };
   end
   [...]
   equations
      assert(LowerThreshold<UpperThreshold,'LowerThreshold is greater than UpperThreshold');
      [...]
   end
   [...]
end   

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2019a

Представленный в R2008b

Для просмотра документации необходимо авторизоваться на сайте