Simscape™ программное обеспечение расширяет линейку продуктов Simulink ® с помощью инструментов для моделирования и моделирования многооменных физических систем, например, с механическими, гидравлическими, пневматическими, тепловыми и электрическими компонентами. В отличие от других блоков Simulink, которые представляют математические операции или работают с сигналами, блоки Simscape представляют физические компоненты или отношения непосредственно. С помощью блоков Simscape создается модель системы так же, как и при сборке физической системы. Дополнительные сведения о программном обеспечении Simscape см. в разделе Simscape.
Среду моделирования Simscape можно расширить, создав пользовательские компоненты. При определении компонента используйте раздел уравнения файла компонента, чтобы установить математические связи между переменными компонента, параметрами, входами, выходами, временем и производными времени каждого из этих объектов. Программа Symbolic Math Toolbox™ и Simscape позволяет выполнять символьные вычисления и использовать результаты этих вычислений в разделе уравнений. 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);'Время переменной заменяет все экземпляры переменной 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 и выдает предупреждение. Всегда проверяйте результат преобразования. Выражения с бесконечностями подвержены недопустимому преобразованию.