(Не рекомендуемый), Готовят компонент к симуляции
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
как простую:
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