Функции Simscape™ моделируют класс чистых математических функций первого порядка с явным отношением ввода - вывода. Эти функции явным образом сопоставляют входные параметры численных значений в выходные параметры численных значений при помощи декларативных выражений. Когда компонент вызывает функцию Simscape, числовые входные значения передаются функции, которая затем выполняет эти декларативные выражения, чтобы вычислить выходные значения.
Каждая функция должна быть в отдельном файле Simscape. Имя файла должно совпадать с именем функции. Например, функциональный foo
должен быть в файле под названием foo.ssc
.
Файл функции Simscape должен запустить с ключевого слова function
, сопровождаемый функциональным заголовком, который включает имя функции, входные параметры и выходные параметры. Например:
function out = MyFunction(in1,in2)
Если функция имеет несколько возвращаемых значений, синтаксис:
function [out1,out2] = MyFunction(in1,in2)
Тело функции должно быть заключено в разделе definitions
, например:
function out = SumSquared(in1,in2) definitions out = in1^2 + 2*in1*in2 + in2^2; end end
Синтаксические правила:
Имя файла должно совпадать с именем функции. Например, функциональный foo
должен быть в файле под названием foo.ssc
.
Один или несколько выходных параметров позволены.
Если выходной параметр не используется на левой стороне раздела definitions
, вы получаете ошибку.
Нуль или более входные параметры позволены.
Когда функция вызвана, количество входных параметров должно совпадать с количеством входных параметров.
Входные параметры позиционны. Это означает, что первый входной параметр во время вызова функции передается первому входному параметру и так далее. Например, если вы пишете уравнение:
o == SumSquared(5,2);
затем in1
равняется 5, и in2
равняется 2.
Если функция имеет несколько возвращаемых значений, они также позиционны. Таким образом, первый выходной параметр присвоен первому возвращаемому значению и так далее.
Если функция имеет несколько возвращаемых значений, правила и ограничения эквивалентны для функций объявления. Для получения дополнительной информации смотрите Несколько Возвращаемых значений.
Раздел definitions
может содержать операторы if-elseif-else
и средние сроки. Те же синтаксические правила как в разделе объявления оператора let
применяются. Для получения дополнительной информации смотрите использующие Средние термины в уравнениях.
Раздел definitions
не может содержать выражения с динамической семантикой, такие как integ
, time
, der
, edge
, initialevent
или delay
.
Упаковка правил:
Файлы функции Simscape могут находиться непосредственно на пути MATLAB® или в директориях пакета. Для получения дополнительной информации смотрите Организацию Ваших файлов Simscape.
Можно использовать исходную защиту, как описано в Использовании Исходной Защиты для файлов Simscape.
Импорт пакета импортирует все функции Simscape в этом пакете. Для получения дополнительной информации смотрите Область Импорта и Классы Компонента.
Если функция MATLAB и функция Simscape имеют то же имя, функция MATLAB имеет более высокий приоритет.
Цель функций Simscape состоит в том, чтобы снова использовать выражения в уравнениях нескольких компонентов, а также в объявлениях элемента доменных или файлов компонента.
Например, экспоненциальные диодные уравнения часто используют выражение, которое является модификацией
, чтобы обеспечить защиту для больших значений exp(i)
i
. Для получения дополнительной информации смотрите страницы с описанием блока Diode и NPN Bipolar Transistor. Пример Функций Simscape показывает, как можно записать функцию Simscape, чтобы снова использовать это выражение, вместо того, чтобы повторить его в каждом блоке:
function out = userFunction(x,y,z) definitions out = if x > y (x-z)*exp(y); elseif x < -z (x+y)*exp(-z); else exp(x) end end end
Затем блок Diode может вызвать эту функцию с y
и значениями z
80
и 79
, соответственно:
equations o == SimscapeFunction.Use.Functions.userFunction(i,80,79); end
и блок NPN Bipolar Transistor может вызвать ту же функцию со значениями 40
и 39
:
equations o == SimscapeFunction.Use.Functions.userFunction(i,40,39); end
Язык Simscape имеет множество инструментов, которые упрощают повторное использование кода. Функции Simscape и функции объявления позволяют вам выражения повторного использования. Разделение на подклассы и составные компоненты позволило вам уравнения повторного использования.
К выражениям повторного использования через несколько компонентов:
Используйте функции Simscape, чтобы снова использовать выражения в уравнениях и объявлениях элемента.
Используйте функции объявления в объявлениях элемента, чтобы снова использовать выражения, которые являются вне возможности выражения Simscape. Для получения дополнительной информации смотрите Функции Объявления.
Функциональность | Авторская разработка языка | Расширение файла | Использование | Аргументы поддержек с модулями |
---|---|---|---|---|
Функция Simscape | Simscape | .ssc или .sscp | Объявление элемента и уравнения | Да |
Функция объявления | MATLAB | .m или.p | Объявление элемента только | Нет |
К уравнениям повторного использования через несколько компонентов:
Используйте разделение на подклассы, чтобы смоделировать отношение "isa" между основным компонентом и выведенным компонентом. Уравнения в основном компоненте снова используются в выведенном компоненте. Для получения дополнительной информации смотрите Разделение на подклассы и Наследование.
Используйте составные компоненты для модели, "имеет -" отношение между контейнерным компонентом и субкомпонентами. Уравнения в членских компонентах снова используются в составном компоненте. Для получения дополнительной информации займитесь Составными Компонентами.