Simscape™ программное обеспечение расширяет Simulink® Линия продукта с инструментами для моделирования и симуляции многодоменных физических систем, таких как с механическими, гидравлическими, пневматическими, тепловыми и электрическими компонентами. В отличие от других блоков Simulink, которые представляют математические операции или работают с сигналами, блоки Simscape представляют физические компоненты или отношения непосредственно. С блоками Simscape вы создаете модель системы, так же как и собираете физическую систему. Дополнительные сведения о программном обеспечении Simscape см. в разделе Simscape.
Можно расширить окружение моделирования Simscape, создав собственные компоненты. Когда вы задаете компонент, используйте раздел уравнения файла компонента, чтобы установить математические отношения между переменными, параметрами, входами, выходами, временем и производными по времени каждой из этих сущностей. Программное обеспечение Symbolic Math Toolbox™ и Simscape позволяет вам выполнить символьные расчеты и использовать результаты этих расчетов в разделе уравнения. The simscapeEquation
функция переводит результаты символьных расчетов в уравнения языка Simscape.
Предположим, вы хотите сгенерировать уравнение Simscape из решения следующего обыкновенного дифференциального уравнения. В качестве первого шага используйте dsolve
функция для решения уравнения:
syms a y(t) Dy = diff(y); s = dsolve(diff(y, 2) == -a^2*y, y(0) == 1, Dy(pi/a) == 0); s = simplify(s)
Решение является:
s = cos(a*t)
Затем используйте simscapeEquation
функция для переписывания решения на языке Simscape:
simscapeEquation(s)
simscapeEquation
генерирует следующий код:
ans = 's == cos(a*time);'
Переменная time заменяет все образцы переменной t кроме производных относительно t. Чтобы использовать сгенерированное уравнение, скопируйте уравнение и вставьте его в раздел уравнения файла компонента Simscape. Не копируйте автоматически сгенерированную переменную ans
и знак равенства, который следует за ним.
simscapeEquation
преобразует любую производную относительно переменной t в обозначение Simscape, X.der
, где X
- зависящая от времени переменная. Для примера преобразуйте следующее дифференциальное уравнение в уравнение Simscape. Кроме того, здесь вы явным образом задаете левую и правую стороны уравнения с помощью синтаксиса simscapeEquation(LHS, RHS)
:
syms a x(t) simscapeEquation(diff(x), -a^2*x)
ans = 'x.der == -a^2*x;'
simscapeEquation
также переводит кусочно-линейные выражения на язык Simscape. Для примера результатом следующего преобразования Фурье является кусочно-линейная функция:
syms v u x assume(x, 'real') f = exp(-x^2*abs(v))*sin(v)/v; s = fourier(f, v, u)
s = piecewise(x ~= 0, atan((u + 1)/x^2) - atan((u - 1)/x^2))
Из этого символического кусочно-линейного уравнения, simscapeEquation
генерирует действительный код для раздела уравнения файла компонента Simscape:
simscapeEquation(s)
ans = 'if (x ~= 0.0) s == -atan(1.0/x^2*(u-1.0))+atan(1.0/x^2*(u+1.0)); else s == NaN; end'
Очистите предположение, что x реально, воссоздав его используя syms
:
syms x
Раздел уравнения файла компонента Simscape поддерживает ограниченное количество функций. Для получения дополнительной информации и списка поддерживаемых функций смотрите Simscape equations
(Simscape). Если символьное выражение содержит функции, которые не поддерживаются Simscape, то simscapeEquation
не может представлять символическое выражение как уравнение Simscape и выдает предупреждение вместо этого. Всегда проверяйте результат преобразования. Выражения с бесконечностями склонны к недопустимому преобразованию.